Releases: OSGeo/PROJ
PROJ 9.6.0
Updates
-
projinfo
: display whether an operation is time-dependent (#4255) -
Add CMake options
EMBED_RESOURCE_FILES
andUSE_ONLY_EMBEDDED_RESOURCE_FILES
forproj.db
andproj.ini
embedding (#4265, #4274) -
Database: ingest deprecated ESRI names to be able to better import old WKT ESRI (#4282)
-
proj_factors()
: enhance speed when called repeatedly on same compound or projected CRS (#4289) -
Add Airocean projection (formerly Dymaxion) (#4303)
-
createOperations()
: Optimization by avoiding database lookups for CRS (typically PROJ strings) using unknown datums (#4320) -
PROJJSON export: for a Projected CRS, add an explicit type=GeographicCRS/GeodeticCRS members to the base_crs member (#4331)
-
proj_trans_bounds()
: make it work when target CRS is a CompoundCRS (#4333) -
createOperations()
: do Helmert transformation in 2D when one of source or target CRS is compound (#4337) -
Map EPSG method 'Vertical Offset by Grid Interpolation (asc)' to +proj=vgridshift (#4344)
-
Add support for 'Coordinate Frame rotation full matrix (geocen)' and Coordinate Frame rotation full matrix (geog2D)' methods (#4348)
-
Add a CMake
EMBED_RESOURCE_DIRECTORY
option to embed .tif/.json files in to libproj (#4349, #4373) -
Take into account new EPSG methods 'Cartesian Grid Offsets by TIN Interpolation (JSON)' and 'Vertical Offset by TIN Interpolation (JSON)' (#4353)
-
Added an option
native_ca
toproj.ini
and an environment variablePROJ_NATIVE_CA
to be able to configure curl to use the operating system CA store. (#4356) -
Database: add an optional step_direction column to the concatenated_operation_step table (#4357)
-
Database: replicate EGM2008 grid transformation record to WGS 84 realizations (#4363)
-
Improve ETRFxxx to ETRFyyy, and WGS 84 (xxx) to WGS 84 (yyy) (#4364)
-
Add bash completion script for projinfo (#4371)
-
Dispatch content of
4D_api.cpp
into multiple .cpp files (#4393) -
Add
proj_trans_bounds_3D()
(#4394) -
Database: add a engineering_datum and engineering_crs tables; import few related EPSG records (#4396)
-
NKG transformations: Add support for EUREF-FIN in Finish transformations (#4399)
-
Add Spilhaus projection (#4401)
-
Export ESRI:54099
WGS_1984_Spilhaus_Ocean_Map_in_Square
as PROJ string (#4402) -
Database: update to EPSG v12.004 (#4413)
-
proj_download_file()
: invalidate in-memory caches related to downloaded file (for the current context) (#4414)
Bug Fixes
-
createObjectsFromName()
: be more tolerant about N/S vs North/South, absence of zone or height (#4318) -
createFromPROJString
: avoid repeated openings of proj.db and proj.ini and lookup of 'epsg' (#4334) -
Debugging/internals: append sub-grid index to grid name when opening a multi-grid TIFF file (#4381)
-
createOperations()
: use more appropriate operation when using a 'PROJ {grid_name}' geoid model, based on matching the vertical datum (#4379) -
proj_clone()
: properly propagateerrorIfBestTransformationNotAvailable
and other flags from source object (#4382) -
Inverse +proj=cass: fix non-convergence on inputs where easting=false_easting or northing=false_northing (#4386)
-
Fix typo in parameter for ITRF97 in ITRF2014 file (#4408)
-
Retry on "SSL connection timeout" (#4419)
PROJ 9.5.1
Updates
-
Database: update to EPSG v11.022 (#4254, #4275, #4297, #4312)
-
Speed-up dramatically proj.db build time (#4280)
-
Database: ingest deprecated ESRI names to be able to better import old WKT ESRI (#4282)
Bug fixes
-
findsOpsInRegistryWithIntermediate()
: Restrict to using known source/target CRS that have the same originating authority (#4252) -
isTimeDependent()
: Do not mark "static" Coordinate Frame helmert transformations as time-dependent, only time-dependent ones (#4259) -
Fix clang-19 "warning: empty paragraph passed to '@throw' command [-Wdocumentation]" (#4263)
-
WKT importer: fix
nullptr
dereference on invalidVERTCS[]
(#4266) -
Fixed
sql_filelist.cmake
relative path issue (#4296) -
Fail consistently on network error and grid transformations (#4302)
-
Fix
-Wshadow
warnings betweenparammappings.cpp
andsingleoperation.cpp
with unity builds (#4304) -
Removed leftover setting of
CMAKE_REQUIRED_FLAGS
(#4322) -
WKT1 ESRI export: fix wrong mapping of Lambert Cylindrical Equal Area to Behrmann (#4328)
PROJ 9.5.0
PROJ 9.5.0 Release Notes
Updates
-
Database: add constraint for unicity of CRS and operation names (#4071)
-
Make a few more functions that accept a
PJ*
to actually acccept aconst PJ*
(#4074) -
Database: Increase consistency in trigger checks (#4080)
-
Speed-up
+proj=cart +inv
(#4087) -
Added EPSG:9656 "Cartesian Grid Offsets" operation method, and imported related records (#4094)
-
Add a
WKTParser::grammarErrorList()
method so thatproj_create_from_wkt()
can behave as documented (#4108) -
CRS::stripVerticalComponent()
: Redirect it todemoteTo2D(std::string(), nullptr)
(#4127) -
Add
proj_context_set_user_writable_directory()
to public API (#4144) -
CMake: for Windows builds, defaults PROJ DLL to be just
proj_${PROJ_MAJOR_VERSION}.dll
(#4167) -
Add
toWGS84AutocorrectWrongValues()
method and use it in PROJ.4 and WKT1 CRS import (#4172) -
WKT import: add support for Oracle WKT "Albers_Conical_Equal_Area" spelling (#4181)
-
Limit number of C++ exceptions thrown & caught internally (#4183)
-
Database: update to EPSG 11.016 (#4241)
-
CMake: add option
EMBED_PROJ_DATA_PATH
(#4207) -
Add SEA Inverse projection (#4211)
-
projinfo: Add 2 args equivalent to usage of
-s
and-t
(#4218) -
CMake: add TESTING_USE_NETWORK configure option (#4220)
-
Add
PROJ_ERR_COORD_TRANSFM_MISSING_TIME
andproj_coordoperation_requires_per_coordinate_input_time()
(#4221) -
Add data/ITRF2020 with ITRF2020 to ITRFother, and ITRF2020 plate motion models (#4235)
Bug Fixes
-
Fix
imoll
andimoll_o
zone calculations to correct inverse transformations near the "seams" (#4159) -
Fix wrong EPSG conversion code for UTM south (#4166)
-
BoundCRS::exportToPROJ(): handle case of NADCON conus grid (#4168)
-
+proj=gridshift
: make projected grids work withPROJ_NETWORK=ON
(#4174) -
createOperations()
: make it work when transforming from/to a CompoundCRS with a DerivedVerticalCRS with ellipsoidal height (#4176) -
Support default context as
nullptr
inCoordinateTransformer
(#4177) -
cct: emit error message and return error code when not being able to open input file (#4200)
-
Fix race condition surrounding DB reopening during fork (#4231)
-
GeographicBoundingBox::create()
: accept degenerate bounding box reduced to a point or a line (#4237) -
createOperation()
: tune so that ITRF2000->ETRS89 does not return only NKG grid based operations but also time-dependent Helmert (#4244)
PROJ 9.4.1
Updates
Bug fixes
-
DatabaseContext::lookForGridInfo(): do not trigger network activity in
PROJ_GRID_AVAILABILITY_KNOWN_AVAILABLE mode when all grids are known (#4090) -
Retry "Connection reset by peer" (#4107)
-
Use unique names for NKG transformations (#4111)
-
proj_create()/proj_create_from_database(): recall CRS AUTH:CODE in error message (#4114)
-
DerivedProjectedCRS: deal with lack of explicit CS in BASEPROJCRS in WKT (#4139)
-
proj_symbol_rename.h: update with current symbols (#4145)
-
Improve detection of compatible/incompatible celestial bodies (#4150)
PROJ 9.4.0
Updates
- Add support for transformations involving coordinate epoch changes (PointMotionOperation), specifically for Canadian NAD83(CSRS)(#3884)
SSL_OPTIONS
: set SSL options on Curl library (#3936)- Add support for unity builds (#3962)
- Added ability to install
*.tif
if present in data (#3970) createOperationsCompoundToGeog()
: tune selection logic when --grid-check known_available is specified (#3990)- Increase CMake minimum version from 3.9 to 3.16 (#3997)
- CMake: use FetchContent to get googletest-1.12.1 (#4006)
- CMake: Replace custom FindSqlite3 with FindSQLite3 built-in (#4007)
- tpeqd: use numerically stable formula for computing the central angle from (phi_1, lam_1) to (phi_2, lam_2) (#4009)
- Move content of proj_experimental.h to proj.h (#4019)
- Add
+proj=mod_krovak
projection method for Modified Krovak that applies to S-JTSK/05 in the Czech Republic (#4021) - PROJString formatter optimizer: simplify pipelines doing [Modified]Krovak (South West) <--> [Modified]Krovak (East North) by just doing an axis swap (#4034)
+proj=gridshift
: enhance to support grids referenced in projected CRS, and with easting_offset/northing_offset corrections (#4038)- Tune concatenated operation instanciation, reference CR2005 geoid for Czechia and add (disabled by default) records for Czechia S-JTSK/05 based transformations (#4044)
- Database: update to EPSG v11.004 (#4062)
Bug fixes
PROJ 9.3.1
Updates
Bug fixes
- ITRF2008: fix wrong sign for
dry
parameter of EURA and EURA_T (#3870) - Fix build error with MSVC 2019 in
/std:c++20
onNN_NO_CHECK()
(#3872) - ESRI WKT import: normalize GCS_unknown to unknown and D_unknown to unknown (#3874)
CoordinateOperationFactory
: deal with CompoundToCompound with a horizontal similarity transformation and a ballpark vertical (#3881)Ellipsoid::_isEquivalentTo()
: fix so that an ellipsoid of semi-major axis A (and non-zero inv flattening) isn't equivalent to a sphere of radius A (#3882)isEquivalentTo()
: make a datum name 'unknown' equivalent to another one (#3883)cs2cs
: fix handling of input coordinates in grad (#3886)- Make
setargv.obj
available on Universal Windows Platform (#3891) - Allow opening proj.db with a URI (#3892)
createOperations()
: fix GeogCRS 3D with TOWGS84 to geocentric CRS (#3915)- Fix test suite so that it can pass with
ENABLE_TIFF=OFF
(#3916) GeographicBoundingBox::intersects()
: avoid infinite recursion and stack overflow on invalid bounding boxes (#3919)- Fix importing
'+proj=topocentric ... +type=crs'
by using a geocentric CRS as the base CRS (#3924) - Allow LOCAL_CS with 3 axes (#3928)
- WKT1 parser: in non-strict mode, accept missing UNIT[] in GEOGCS, GEOCCS, PROJCS and VERT_CS elements (#3933)
createOperations()
: fix issue with a obscure case involving CompoundCRS of unknown horizontal datum + boundCRS of vertical (#3934)createOperations()
: fix bad PROJ pipeline when converting between with non-metre height to CompoundCRS (#3943)createOperations()
: Fix possible null dereference on invalid WKT input (#3946)proj_factor
: fix when input is a compound CRS of a projected CRS (#3950)pj_get_suggested_operation()
: tune it to give correct result for RGAF09 to RRAF 1991 / UTM zone 20N + Guadeloupe 1988 height transformation (#3954)- Move static
NameSpace::GLOBAL
definition in static.cpp to avoid 'static initialization fiasco' (#3956) - horner: allow arbitrary input type of coordinate (#3961)
PROJ 9.3.0
9.3.0 Release Notes
Updates
- Add C++ API to transform coordinate (#3705)
- CMake: add PROJ_DB_CACHE_DIR (#3711)
- Implement EPSG:1026 Mercator (Spherical) method (#3741)
- CMake: remove useless cross-compiling related checks (#3747)
- Add mapping of Equidistant Conic to new EPSG:1119 method (#3812)
- Implement proposal001 from Planetary DWG from OGC (#3816)
- Add option in proj CLI to use a CRS (#3825)
- proj_factors(): make it work with projected CRS with non-metre unit and/or northing/easting axis order (#3826)
- PROJ_DEBUG: make ON an alias of 2, and OFF of 1 (#3835)
- Database: update to EPSG 10.094 (#3847)
Bug fixes
- GeographicBoundingBox::intersection(): avoid infinite recursion and stack overflow on invalid bounding boxes (#3748)
- Various fixes related to concatenated operations (#3820)
- Projected CRS identification: fix crash when the base CRS is a non-geographic geodetic CRS (#3830)
- Avoid C++ exceptions to be thrown (and caught) when parsing strings like
+proj=longlat +datum=WGS84 +type=crs
(#3834) - BUG: Handle prefix whitespace when guessing WKT dialiect (#3841)
- proj_alter_id(): make it replace an existing ID instead of appending a new one (#3846)
- bonne: fix inverse map projection computations when lat_1 < 0 (#3849)
- WKT1 ESRI import/export: fix GCS name for EPSG:8353 S-JTSK_[JTSK03]_Krovak_East_North (#3851)
PROJ 9.2.1
9.2.1 Release Notes
Database updates
- Add alias for old ESRI datum/CRS names of EPSG:8353 S_JTSK_JTSK03_Krovak_East_North (#3678)
- Pseudo Mercator now supported with IAU CRS's (#3645)
- Updated to EPSG 10.088 (#3731)
Bug fixes
- Fixed build errors with Cygwin (#3642)
- PROJ string CRS parser: make sure that PROJ arguments of the rotated string are kept in the WKT representation (#3656)
- Fix slowness on
proj_trans()
when doing WGS 84 <--> NAD83 conversions (#3661) vgridshift/gridshift
: accepthydroid_height
as valid band description (#3675)- WKT/PROJJSON: import/export accuracy of ConcatenatedOperation (#3676)
- Coordinate operation factory: count identified concatenated operations as a single step (#3677)
- EngineeringCRS: make proj_create_engineering_crs() set a datum name and relax isEquivalentTo() comparisons (#3685)
- PROJJSON: fix import/export of integer parameter value, and deal with interpolation CRS parameters in conversions (#3695)
- CMake: avoid imbalanced cmake_policy push/pop if TIFF or CURL dependency cannot be found (#3697)
proj_create_crs_to_crs()
: restore transformation selection behaviour of PROJ 9.1 when grids are missing (#3707)- ESRI WKT: improve roundtrip of name and definition for UPS WGS84 CRS (#3720)
- CRS instanciation from PROJ.4 string: set 'Unknown based on XXXX ellipsoid' datum name when instanciating from known +a, +rf (#3727)
cs2cs
/proj_create_crs_to_crs()
: fix regression with geocentric CRS (#3729)proj_trans()
: setPROJ_ERR_COORD_TRANSFM_NO_OPERATION
error when failing inONLY_BEST=YES
mode (#3730)tinshift
: raise maximum size of JSON file to 100 MB (#3736)
PROJ 9.2.0
9.2.0 Release Notes
Updates
-
Database
-
Projections
-
Transformations
-
Added support for NADCON5 grids and transformation method (#3510)
-
Added option
ONLY_BEST=YES
(#3535)When enabled only use the best possible transformation between two CRS's can be
instantiated. If the best possible transfomations can't be instantiated it will
fail instead of opting for the next best transformation.With
ONLY_BEST=YES
a transformation will fail if a needed grid is unavailable.The option can be toggled in proj.ini and with
--only-best
incs2cs
. -
Implement 'Similarity transformation' (EPSG:9621) and import related
tranformations from EPSG (#3578) -
Optimise transformations between GDA94, GDA2020 and WGS84 (#3621)
-
-
Performance improvements
-
Well-Known Text improvements
-
Support WKT:2019 COORDINATEMETADATA[] construct (#2711)
-
implement
alterCSLinearUnit
for CompoundCRS (#3325) -
Implement
alterCSLinearUnit
for BoundCRS (#3327) -
Added
PJ_TYPE_DERIVED_PROJECTED_CRS
(#3488) -
Added support for ISO19111 CoordinateMetadata class (#3562)
-
Update WKT import to support WKT2 corrigendum (#3573)
-
WKT import: Make axis direction and range meaning enumeration case
insensitive as mandated by spec (#3577) -
Implement AffineCS and handle it in WKT (#3579)
-
WKT1 parser: Support inf as inverse flattening value (#3626)
-
-
PROJJSON
-
C/C++ API
- C API: add
proj_get_domain_count
(),proj_get_area_of_use_ex
() andproj_get_scope_ex
() (#3588)
DEPRECATIONS
The following functions have been deprecated and will be removed in a future version.
-
C API function
proj_rtodms
. Useproj_rtodms2
instead (#3431) -
C experimental API function
proj_create_conversion_tunisia_mapping_grid
().
Useproj_create_conversion_tunisia_mining_grid
() instead (#3559) -
C++ API function
createTunisiaMapingGrid
(). UsecreateTunisiaMiningGrid
() instead (#3559) -
Added explicit
NaN
handling toproj_trans
andgie
(#3603)
- C API: add
-
CMake
-
Security improvements
-
Various other improvements
-
Implemented platform independent mutex for better results on lesser used platforms (#3425)
-
Improved name and remarks in descriptions of some vertical transformations (#3334)
-
Implemented stricter matching by name to avoid false positives (#3487)
-
Improved numerical accuracy of the meridian length calculations and its inverse (#3516)
-
Added
PROJ_IGNORE_CELESTIAL_BODY=YES
environment variable that allows better matching of
non-earth shaped ellipsoids to other celestial bodies (#3569)
Bug fixes
-
rtodms():
fix potential buffer overflow not dealt with (#3441) -
NetworkFile::open()
: fix memory leak in unlikely error code path (#3443) -
When importing LOCAL_CS["foo"], generates a non-empty name for the datum (#3491)
-
Avoid unit mix-up in
CRS::alterCSLinearUnit
forDerivedProjectedCRS
(#3499) -
WKT to PROJ conversions: Map 'Lambert Azimuthal Equal Area (Spherical)' to
+proj=laea +R_A
(#3526) -
ProjectedCRS::identify()
: Relax trust in id/authority in definition to identify (#3532) -
Fix instantion of http://www.opengis.net/def/crs/IAU/2015/xxx URNs (#3569)
-
Fix
proj_normalize_for_visualization()
on a transformation withFORCE_OVER=YES
(#3570) -
createBoundCRSToWGS84IfPossible()
: Do not report+towgs84
for a CRS with multiple extents,
such as EPSG:6316 (#3587) -
pj_get_suggested_operation()
: handle longitudes outside of [-180,180] for coordinate
operation selection (#3595) -
WKT1 parser: only emit warning when encountering invalid UNKNOWN WKT1 axis direction (#3618)
-
projinfo
: fix long option name--source-crs
(#3601)
PROJ 9.1.1
9.1.1 Release Notes
Updates
- Database: register at_bev_AT_GIS_GRID_2021_09_28 grid (#3442)
Bug fixes
-
Implement alterGeodeticCRS and stripVerticalComponent for DerivedProjected (#3482)
-
Various improvements to handling of DerivedProjectedCRS (#3482, #3477, #3342, #3319, #3317)
-
Add missing includes (#3459)
-
cs2cs: better validate value of -W option (#3453)
-
DatabaseContext::lookForGridInfo(): fix caching of filenames and set correct URLs (#3448)
-
Database: register in grid_alternatives grids from PROJ-data that have no corresponding transformation record (#3446)
-
cass projection: fix forward computation of easting (#3433)
-
Implement Geographic/Vertical Offset conversions (#3413)
-
vandg projection: handle +over to extend the validity domain outside of
|lon|>180deg
(#3427) -
eqdc projection: avoid floating point division by zero in non-nominal case (#3415)
-
createOperations(): fix issues when transforming between Geog3D and DerivedGeog3D CRS with Geographic3D offsets method (#3411)
-
VerticalCRS::_isEquivalentTo(): do not consider VerticalCRS and DerivedVerticalCRS as equivalent (#3408)
-
cct and cs2cs: Avoid problems when encountering UTF-8 BOM characters at beginning of input files (#3395)
-
createFromUserInput(): Improved lookup when approximate name is provided (#3371)
-
projinfo / cs2cs : auto promotion to 3D of CRS specified by name (#3367)
-
findsOpsInRegistryWithIntermediate(): make it work when source/target geodetic CRS has no known id (#3365)
-
createOperations(): emulate PROJ < 6 behavior when doing geocentric <--> geographic transformation between datum with unknown transformation (#3361)
-
Fix issue when transforming from/into a WKT2 Bound VerticalCRS with a 'Geographic3D to GravityRelatedHeight' method (#3355)
-
proj_normalize_for_visualization(): take into account FORCE_OVER property from source operation (#3350)
-
Link geodtest against libm when available (#3341)