Releases: OSGeo/PROJ
PROJ 9.8.0 (warning related to ETRS89)
Warning ...
... regarding coordinate transformations involving ETRS89 and other European national CRSs when using PROJ 9.8.0
Issues are at least know for Austria, Belgium, Netherlands, Romania, Catalonia and Serbia (not guaranteed to be an exhaustive list)
The project has been made aware that, compared to previous PROJ releases, sub-optimal datum transformations may be selected when transforming coordinates between ETRS89-based CRSs and other European national CRSs. This issue is related to the recent introduction in the EPSG dataset of per-country realizations of ETRS89, which affects the selection of existing transformation records. More details are available at #4736
A PROJ 9.8.1 release addressing this issue is planned in a near future. In the meantime, users affected by these problems are encouraged to report any broken use cases that have not yet been identified, and to revert to using PROJ 9.7.1 until a corrective release becomes available.
Updates
-
Database: update to EPSG v12.049 (#4671)
-
Database: update ESRI records to ArcGIS Pro 3.6 (#4622)
-
Support for Canadian vertical references MTM CGVD2013 epoch 1997, 2002, 2010 and
UTM CGVD28 epoch 1997, 2002, 2010 (#4623) -
createOperationsCompoundToGeog(): improvement to make "PNG94 / PNGMG94 zone 54 + Kumul
34 height" to "WGS 84 (G2139)" perform vertical transformation (#4624) -
Remove hardcoding of 'ETRS89-NOR [EUREF89]' cases and generalize it to other ETRS89-XXX
cases (#4625) -
Database: create ESRI aliases for geodetic_datum and geodetic_crs even if they are the
same as EPSG ones (#4626) -
Use Emscripten fetch in networkfilemanager (#4627)
-
ProjectedCRS::identify(): do not return CRS whose ellipsoid is totally different from the input one (#4635) -
projinfoadded as a library function. This installs a new header:projapps_lib.h. (#4646) -
respect
CRS_EXTENT_USE=NONEfor ConcatenatedOperations (#4652) -
Add support for Equidistant Cylindrical ellipsoidal method (EPSG:1028) (#4656)
-
Update
proj_symbol_rename.h(#4657) -
WKT1 importer: deal with 'VERT_CS["Geoid 2012A",' (#4659)
-
Generate correct library name in
proj.pc(#4660) -
Derived projected CRS related improvements (#4667)
-
ETRS89-xxx to ETRS89-yyy related improvements (#4668)
-
createCoordinateOperation(): tune computed accuracy of a concatenated op within ETRS89 (#4670) -
createOperationsCompoundToGeog(): discard 2D-only transformations from interpolation
3D CRS to target 3D CRS (#4677)
Bug Fixes
-
CRS identification: fix issue when identifying WKT from older EPSG releases with newer
ones where the ETRS89-XXX national datums have been added (#4600) -
fix
normalizeForVisualizationto skip extent checks for axis-swap operations (#4632) -
Improvements to TRACE_FETCH debug messages (#4645)
-
tmerc spherical: fix numeric instability at lat=lat_0 (#4674)
PROJ 9.7.1
Updates
Bug Fixes
-
createOperations(): fix compound to compound when vertical CRS definition is equivalent but not strictly identical (#4579) -
createOperations(): fix compound to compound when horizontal CRS of … (#4582) -
projinfo: make it honour-k crs(#4592) -
proj_clone(): fix insufficient propagation ofFORCE_OVER=YES(#4595) -
BoundCRS::identify: fix creation of an invalid BoundCRS (that can cause later crashes) for CRS based on 'NTF (Paris)' (#4601) -
WKT/PROJJSON datum ensemble import: allow no members (#4615)
PROJ 9.7.0
Updates
-
Implement 'exact' authalic latitude->geographic latitude and use it in
+proj=aea/cea/laea/eqearth/healpix/rhealpix(#4441) -
Implement uniform conversions between auxiliary latitudes (#4446)
-
WKT2 parser: recognize
DEFININGTRANSFORMATION(but ignore it) (#4484) -
Database: add values from
alias_nametable that were removed in older EPSG releases, to improve
recognizing old WKT strings (#4490) -
proj_trans_bounds(): sample points within the source grid to avoid missing extent such as world-wide
coverage from EPSG:4326 to ESRI:54099 (Spilhaus) (#4513) -
Enable
-Wimplicit-fallthrough,-Wdeprecated-copy-dtor,-Wweak-vtables,
-Wdocumentation-unknown-commandwhen possible (#4516) -
Geostationary projection: speed up inverse spherical and ellipsoidal computation (#4523)
-
WKT importer: better error message when
BBOXis invalid (e.g south_lat > north_lat) (#4525) -
Added
proj_geod_directfor PJ trasformation object (#4532) -
Support exporting Mercator (Spherical) on a sphere as
Mercator_1SPin WKT1 (#4555) -
Database: update to EPSG v12.022 (#4562)
Bug Fixes
-
proj_trans_bounds(): avoid erroring out, in some cases, when PJ* object is directly constructed
from a PROJ pipeline (#4512) -
Fix issue related to
D_Unknown_based_on_WGS_84_ellipsoiddatum name (#4515) -
proj_trans_bounds(): fix 9.6.2 regression when going from long/lat crossing antimeridian to
projected (#4526) -
opt_parse: avoid potential heap-buffer-overflow when parsing non-ASCII characters (affect
cctandgie) (#4530) -
gie: fix memory leak on non existing input file (#4531) -
Database: referene
nl_nsgi_nllat2018.tifandnl_nsgi_bongeo2004.tifgrids (#4534) -
Fixes related to WKT import/export of
DerivedGeodetic/GeographicCRS(#4536) -
Fix
tolower()/toupper()implementation to not lead to undefined behavior (#4539) -
IAU2015 CRS: fix wrong code for coordinate system of North Polar and South Polar CRSs (#4545)
-
createOperations(): fix a case involving 2 CompoundCRS, one with TOWGS84, and the 2
verticalCRS differing by units (#4552) -
On SQLite query error, show first the error msg than the sql query (#4553)
-
Allow geodesic inverse for meridional points on prolate ellipsoid (#4560)
PROJ 9.6.2
Updates
- Update EPSG to 12.013
Bug Fixes
-
Database: change ESRI deprecated records back to their deprecated state (#4519)
-
ProjectedCRS::identify(): more robust identification of old ESRI names using _IntlFeet (#4518)
-
Fix issue related to D_Unknown_based_on_WGS_84_ellipsoid datum name (#4514)
-
proj_trans_bounds(): sample points within the source grid to avoid missing extent such as world-wide coverage from EPSG:4326 to ESRI:54099 (Spilhaus) (#4513)
-
proj_trans_bounds(): avoid erroring out, in some cases, when PJ* object is directly constructed from a PROJ pipeline (#4512)
PROJ 9.6.1
Updates
Bug Fixes
-
Deal with South Orientated TMerc presented as regular TMerc but with Scale_Factor=-1 (#4427)
-
Add missing 'limits' and 'algorithm' includes (#4444)
-
CMake: avoid detection of C23
#embedon too old compilers (#4463) -
createOperations(): for NAD83(CSRS)[x] to NAD83(CSRS)[y], do not go through NAD83 (#4467) -
Add missing include for
uint32_ton Windows with gcc 15.1 (#4478) -
getGeoidModels: use vertical_crs.datum_code to get vcrss that uses different units (#4480) -
FileManager::open_resource_file(): honour known URLs from grid_alternatives that don't point to cdn.proj.org (#4481) -
Database: update ESRI to ArcGIS Pro 3.5 (#4493)
-
createOperationsCompoundToGeog(): avoid bringing non-sensical transformations (#4494) -
Bug correction in Wagner VI projection parameters (#4453)
-
C++: Fix bare
isnan()tostd::isnan()(#4472) -
Database: fix duplicated entries with auxiliary database (#4482)
-
Use
std::absinstead ofabsfor NetBSD (#4486) -
Fix Windows build when both
EMBED_RESOURCE_FILESandUSE_ONLY_EMBEDDED_RESOURCE_FILESare set (#4508)
PROJ 9.6.0
Updates
-
projinfo: display whether an operation is time-dependent (#4255) -
Add CMake options
EMBED_RESOURCE_FILESandUSE_ONLY_EMBEDDED_RESOURCE_FILESforproj.dbandproj.iniembedding (#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_DIRECTORYoption 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_catoproj.iniand an environment variablePROJ_NATIVE_CAto 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.cppinto 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_Squareas 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 propagateerrorIfBestTransformationNotAvailableand 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
nullptrdereference on invalidVERTCS[](#4266) -
Fixed
sql_filelist.cmakerelative path issue (#4296) -
Fail consistently on network error and grid transformations (#4302)
-
Fix
-Wshadowwarnings betweenparammappings.cppandsingleoperation.cppwith 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
-sand-t(#4218) -
CMake: add TESTING_USE_NETWORK configure option (#4220)
-
Add
PROJ_ERR_COORD_TRANSFM_MISSING_TIMEandproj_coordoperation_requires_per_coordinate_input_time()(#4221) -
Add data/ITRF2020 with ITRF2020 to ITRFother, and ITRF2020 plate motion models (#4235)
Bug Fixes
-
Fix
imollandimoll_ozone 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
nullptrinCoordinateTransformer(#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
*.tifif 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_krovakprojection 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)