Releases: OSGeo/PROJ
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_heightas 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_OPERATIONerror when failing inONLY_BEST=YESmode (#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=YESa transformation will fail if a needed grid is unavailable.The option can be toggled in proj.ini and with
--only-bestincs2cs. -
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
alterCSLinearUnitfor CompoundCRS (#3325) -
Implement
alterCSLinearUnitfor 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_rtodms2instead (#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
NaNhandling toproj_transandgie(#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=YESenvironment 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::alterCSLinearUnitforDerivedProjectedCRS(#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+towgs84for 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 cascadeto database tables for improved customizability of the database (#3237) -
Add Svalbard geoid grid
no_kv_arcgp-2006-skto grid alternatives (#3292) -
Added French
grid fr_ign_RAF20to 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
GNUInstallDirsfor CMake install locations (#3100) -
Introduce
PROJ_DATAenvironment variable to deprecatePROJ_LIB(#3253)
Bug fixes
-
projinfo: fix crash on--list-crswhen 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)
PROJ 9.0.0
9.0.0 Release Notes
Breaking Changes
- Support for the autotools build system has been removed (#3027) See RFC7 for details: https://proj.org/community/rfc/rfc-7.html
Updates
- Database updates:
- Add new option to
proj_create_crs_to_crs_from_pjmethod to force+overon
transformation operations (#2914) - Specify
CMAKE_INSTALL_RPATHfor macOS; use-rpath LDFLAGSfor tests (#3009) - Implement Geographic3D to Depth/Geog2D+Depth as used by ETRS89 to CD Norway depth (#3010)
- Allow
PROJ_LIBpaths wrapped with double quotes (#3031) - Use external gtest by default when possible (#3035)
- CMake: make
BUILD_SHARED_LIBS=ONthe default even on Windows (#3042) proj.ini: add aca_bundle_pathvariable (#3049)
Bug fixes
- Fix extremely long parsing time on hostile PROJ strings (#2968)
- CMake: fix warning with external googletest (#2980)
proj_get_crs_info_list_from_database(): report PJ_TYPE_GEODETIC_CRS for IAU_2015 -ocentric geodetic CRS (#3013)- peirce_q: rename
+typeparameter wrongly introduced in 8.2.1 to+shape(#3014) - Set more precise error code for parsing errors in
proj_create()(#3037) createOperations(): fix transformations from/to a BoundCRS of a DerivedGeographicCRS coming from WKT (#3046)- Better deal with importing strings like
+init=epsg:XXXX +over(#3055) - Fix importing CRS definition with
+proj=peirce_qand+shapedifferent from square or diamond (#3057)
PROJ 8.2.1
8.2.1 Release Notes
Updates
- Database updated with EPSG v. 10.041 (#2974)
Bug fixes
-
BoundCRS WKT import: fix setting of name (#2917)
-
PROJStringFormatter::toString(): avoid invalid iterator increment (#2932)
-
Ensure CApi test are cross-platform (#2934)
-
createOperations(): do not stop at the first operation in the PROJ namespace or vertical transformations (#2937)
-
createOperationsCompoundToCompound(): fix null pointer dereference when connection to proj.db doesn't exist. (#2938)
-
Fix windows.h conflict with Criterion::STRICT (#2950)
-
Cache result of proj_get_type() to help for performance of proj_factors() (#2967)
-
createOperations(): improvement for "NAD83(CSRS) + CGVD28 height" to "NAD83(CSRS) + CGVD2013(CGG2013) height" (#2977)
-
WKT1 import: correctly deal with missing rectified_grid_angle parameter (#2986)
-
Fix and additional options for Peirce Quincuncial projections (#2978)
-
Fix build with Intel C++ compiler (#2995)
PROJ 8.2.0
8.2.0 Release Notes
Announcements
From PROJ 9.0.0 and onwards CMake will be the only build system bundled
with the PROJ package. As a consequence support for Autotools builds will
stop when the 8.2 branch of PROJ reaches end of life. We encourage
everyone to adjust their build workflows as soon as possible and report
any discrepancies discovered between Autotools and CMake builds.
Details about the build system unification can be found in PROJ RFC 7.
Updates
-
Added the S2 projection (#2749)
-
Added support for Degree Sign on input (#2791)
-
ESRI WKT: add support for import/export of (non interrupted) Goode Homolosine (#2827)
-
Make filemanager aware of UWP Win32 API (#2831)
-
Add proj_create_conversion_pole_rotation_netcdf_cf_convention() to address netCDF datasets using a pole rotation method (#2835)
-
Emit better debug message when a grid isn't found (#2838)
-
Add support for GeodeticCRS using a Spherical planetocentric coordinate system (#2847)
-
PROJJSON: support additional properties allowed in id object (version, authority_citation, uri) for parity with WKT2:2019 (#2850)
-
Database layout modified to include "anchor" field to geodetic_datum and vertical_datum tables, consequently database layout version is increased to 1.2 (#2859)
-
proj_factors(): accept P to be a projected CRS (#2868)
-
Add IAU_2015 CRS definitions (#2876)
-
CRS::extractGeodeticCRS(): implement for DerivedProjectedCRS (#2877)
-
Added proj_trans_bounds() (#2882)
-
CMake: add a BUILD_APPS to be able to disable build of all applications (#2895)
-
CMake: generate invproj/invgeod binaries (symlinks on Unix, copy otherwise) (#2897)
-
CMake build: add generate_wkt1_parser and generate_wkt2_parser manual target, and logic to detect when they must be run (#2900)
-
Add fallback strategy for tinshift transform to use closest triangle for points not in any (#2907)
-
Database: update to EPSG v10.038 (#2910)
-
CMake: revise handling of symbol export and static builds (#2912)
Bug fixes
-
Fix O(n^2) performance patterns where n is the number of steps of a pipeline (#2820)
-
Detect ESRI WKT better in certain circumstances (#2823)
-
Fix performance issue on pipeline instanciation of huge (broken) pipelines (#2824)
-
Make sure to re-order projection parameters according to their canonical order if needed (#2842)
-
Fix database access across fork() when SQLite3 doesn't use pread64 (#2845)
-
Fix error in implementation of Inverse ellipsoidal orthographic projection that cause convergence to sometimes fail (#2853)
-
Fix handling of edge-case coordinates in invers ortho ellipsoidal oblique (#2855)
-
proj_normalize_for_visualization(): set input and output units when there are several alternative transformations (#2867)
-
CRS::identify(): fix ignoring CS order when identifying a geodetic CRS by a PROJ string with just the ellipsoid (#2881)
-
Fix CRS Equality with PROJ parameter order (#2887)
-
WKT concatenated operation parsing: fix when a axis order reversal conversion is the first or last operation (#2891)
-
WKT1 parser: recognize Lambert_Conformal_Conic as projection name for LCC 1SP or 2SP (#2893)
-
CMake: Always build gie if testing is requested (#2899)
-
Geographic 3D CRS: allow to export to WKT1:ESRI if only the GEOGCS is known (and thus extrapolating a VERTCS) (#2902)
-
lib_proj.cmake: add a PROJ::proj alias and add BUILD_INTERFACE include directories, so that proj can be used as a subdirectory of a larger project (#2913)
PROJ 8.1.1
8.1.1 Release notes
Updates
- EPSG Database updated to version 10.028 (#2773)
Bug Fixes
-
Include algorithm header file to avoid build errors on Alpine Linux (#2769)
-
CMake: fix installation of executables on iOS (#2766)
-
Associate extents to transformations of CRS's that include GEOIDMODEL (#2769)
-
Logging: avoid some overhead when logging is not enabled (#2775)
-
ortho: remove useless and invalid log trace (#2777)
-
CMake: remove external nlohmann_json from
INTERFACE_LINK_LIBRARIEStarget (#2781) -
createOperations(): fixSourceTargetCRSExtentUse::NONEmode (#2783) -
GeoTIFF grid reading: perf improvements (#2788)
-
Conversion::createUTM(): avoid integer overflow (#2796) -
Inverse laea ellipsoidal: return
PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAINwhen appropriates (#2801) -
Make sure that proj_crs_promote_to_3D returns a derived CRS (#2806)
-
createOperations(): fix missing deg<-->rad conversion when transforming with a CRS that has a fallback-to-PROJ4-string behaviour and is a BoundCRS of a GeographicCRS (#2808) -
WKT2 import/export: preserve PROJ.4 CRS extension string in REMARKS[] (#2812)
-
BoundCRS: accept importing/exporting in WKT2 and PROJJSON the scope/area/extent/id attributes (#2815)
-
ConcatenatedOperation::fixStepsDirection(): fix bad chaining of steps when inverse map projection is involved in non-final step (#2819)
PROJ 8.1.0
8.1.0 Release Notes
Updates
-
Database
-
Update to EPSG v10.027 (#2751)
-
Decrease DB size by using WITHOUT ROWID tables (#2730) (#2647)
-
Add a ANALYZE step during proj.db creation allowing for faster lookups (#2729)
-
Added a PROJ.VERSION metadata entry (#2646)
-
Added NGO48 (EPSG:4273) to ETRS89 (EPSG:4258) triangulation-based transformation (#2554)
-
Additions to the norwegian NKG2020 transformation (#2548)
-
ESRI projection database updated to version 12.8 (#2717)
-
-
API additions
-
Various improvements
-
proj_trans/cs2cs: If two operations have the same accuracy, use the one that is contained within a larger one (#2750)
-
Share SQLite database handle among all contexts (#2738)
-
Add proj/internal/mutex.hpp as compat layer for mingw32 for std::mutex (#2736)
-
projsync: make it filter out files not intended for the current version (#2725)
-
Improvements related to DerivedVerticalCRS using Change Unit and Height/Depth reversal methods (#2696)
-
Update internal nlohmann/json to 3.9.1, and add a CMake option to be able to use external nlohmann/json (#2686)
-
createFromUserInput(): change name of CRS built from URN combined references to match the convention of EPSG projected CRS (#2677)
-
Parse compound id with two authorities, like ESRI:103668+EPSG:5703 (#2669)
-
Added projinfo option --list-crs (supports --area) (#2663)
-
Added support for hyperbolic Cassini-Soldner (#2637)
-
Added capability to get SQL statements to add custom CRS in the database (#2577)
-
Bug fixes
-
Fix 'Please include winsock2.h before windows.h' warning with msys (#2692)
-
Minor changes to address lint in geodesic.c (#2752)
-
BoundCRS::identify(): avoid incompatible transformation for WKT1 / TOWGS84 export (#2747)
-
proj_create(): do not open proj.db if string is a PROJ string, even if proj_context_set_autoclose_database() has been set (#2735)
-
Fix export of transformation to PROJ string in a particular situation where CompoundCRS are involved (#2721)