Releases: OSGeo/PROJ
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)
PROJ 9.1.0
9.1.0 Release Notes
Updates
-
Database
-
Database: update to EPSG v10.074 (#3273)
-
Update ESRI objects to version 3.0.0 (#3257)
-
Generate null transformation between geodetic/vertical datum ensemble and its members (#3266)
-
Add
fk delete cascade
to database tables for improved customizability of the database (#3237) -
Add Svalbard geoid grid
no_kv_arcgp-2006-sk
to grid alternatives (#3292) -
Added French
grid fr_ign_RAF20
to grid alternatives (#3228)
-
-
WKT & PROJJSON
-
WKT2 parser: allow unit-less PARAMETER for coordinate operations (#3271)
-
WKT and PROJJSON adjustments (#3234)
-
Bump PROJJSON to v0.5 (#3216)
-
Change order of horizontal and vertical operations when dealing with WKT1 / PROJ4 compound CRS (#3127)
-
Coordinate Operations
-
Implement Vertical Offset and slope transformation method (#3200)
-
Add Interrupted Mollweide (land and ocean view) projections (#3139)
-
Add invertible Horner polynomials (#3133)
-
Optimizations
-
NTv2 and GTX grid readers: add a cache of lines to speed-up (#3241)
-
IComparable::isEquivalentTo()
optimizations (#3233) -
Various Updates
-
createOperations()
/proj_trans()
: better take into account area of interest name / do not only keep first returned coordinate operation (#3282) -
createOperations()
: take into account axis unit and inversion of target DerivedProjectedCRS (#3281) -
Allow a Compound CRS with derived projected (#3283)
-
Make "Vertical Offset and Slope" method usable as a deriving conversion of a DerivedVerticalCRS (#3270)
-
PROJ pipeline generator: recognize opposite Helmert transformations using a different convention (#3265)
-
createOperations()
: prefer simpler pipelines / affects WGS 84 to GDA94/GDA2020 (#3248) -
Make it possible to determine which grid files were actually used during a transformation (#3180)
-
Transformation: no longer do vertical trasnformation when doing compound CRS to 2D CRS / add --3d to cs2cs (#3119)
-
Deprecate PROJ4 CMake name (#3094)
-
Use
GNUInstallDirs
for CMake install locations (#3100) -
Introduce
PROJ_DATA
environment variable to deprecatePROJ_LIB
(#3253)
Bug fixes
-
projinfo
: fix crash on--list-crs
when proj.db cannot be opened (#3290) -
getCRSInfoList()
: fix retrieval of projected_crs given by text_definition
only (#3289) -
WKT parser: fix issue when parsing some WKT1 with Hotine_Oblique_Mercator_Azimuth_Center and ignoring rectified_grid_angle (#3280)
-
WKT1 import: better deal when the angular unit of the GEOGCS[] of the
PROJCS[] doesn't match the one from the database (#3274) -
createOperations()
: avoid potential infinite recursions (#3264) -
WKT ESRI: fix related to projected CRS export and add support for geographic
3D CRS with LINUNIT node (#3256) -
proj_grid_info()
: make it work again with remote grids (#3239) -
createOperations()
: fix projected CRS with non-metre horiz&vertical unit and towgs84 to gencentric CRS (#3231) -
createOperations()
: fix infinite recursion in a complex case (#3226)
PROJ 9.0.1
Database updates
Bug fixes
-
Use CMAKE_INSTALL_MANDIR to override default (#3081)
-
Increase MAX_ITER so Mollweide forward projection works near the poles (#3082)
-
Fix wrong results with SQLite 3.38.0 (#3091)
-
Fix issue when transforming from/to BoundCRS of 3D CRS with non-Greenwich prime meridian, created from WKT (#3098)
-
Fix issues with WKT of concatenated operations (#3105)
-
CMake: fix installation of proj.pc on Windows (#3109)
-
createOperations(): fix issue in transformation northing, easting projected CRS -> +proj=longlat +lon_wrap (#3110)
-
unitconvert: round to nearest date when converting to yyyymmdd (#3111)
-
Fix comparison of GeodeticRefrenceFrame vs DynamicGeodeticReferenceFrame (#3120)
-
createOperations(): fix transformation involving CompoundCRS, ToWGS84 and PROJ4_GRIDS (#3124)
-
Fix datum names when importing from PROJ4 crs strings (affects some transformations using geoidgrids) (#3129)
-
Deal with PARAMETER["EPSG code for Interpolation CRS",crs_code] (#3149)
-
createOperations(): fix CompoundCRS[BoundCRS[ProjectedCRS],BoundCRS[VerticalCRS]] to Geog3DCrs (#3151)
-
ITRF2014: fix ITRF2014:ITRF88,ITRF94 and ITRF96 definitions (#3159)
-
createBoundCRSToWGS84IfPossible(): improve selection logic to generate +towgs84= taking into account extent (#3160)
-
createOperations(): fix some complex cases involving TOWGS84 and CompoundCRS (#3163)
-
Fix cmake CURL dependency, update appveyor - vcpkg interaction (#3185)
-
WKT import: deal with Projected CRS that is a mix of WKT1:GDAL / WKT1:ESRI (#3189)
-
createOperations(): fix/improve result of 'BD72 + Ostend height ' to 'WGS84+EGM96 height' (#3199)
-
Identifier::isEquivalentName(): fix when ending by ' + ' which could indirectly cause an infinite stack call in master (#3202)
-
WKT import: correctly deal with absence of Latitude_Of_Origin parameter in WKT1 ESRI with Stereographic projection (#3212)
-
PROJJSON parser: do not error out if a datum ensemble member is unknown in the database (#3223)