Skip to content

Releases: OSGeo/PROJ

PROJ 9.5.0

15 Sep 12:22
Compare
Choose a tag to compare

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 a const 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 that proj_create_from_wkt() can behave as documented (#4108)

  • CRS::stripVerticalComponent(): Redirect it to demoteTo2D(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 and proj_coordoperation_requires_per_coordinate_input_time() (#4221)

  • Add new Conversion "Local Orthographic" (#4228, #4229)

  • Add data/ITRF2020 with ITRF2020 to ITRFother, and ITRF2020 plate motion models (#4235)

Bug Fixes

  • Fix imoll and imoll_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 with PROJ_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 in CoordinateTransformer (#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

01 Jun 14:02
Compare
Choose a tag to compare

Updates

  • Database: update to EPSG v11.006 (#4086)

  • Database: update ESRI dataset to ArcGIS Pro 3.3 (#4143)

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

01 Mar 17:04
Compare
Choose a tag to compare

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

  • Fix missing symbols at link time for Windows target in Visual Studio (#3984)
  • Improve error message in axisswap (#3885
  • Avoid convergence errors in +proj=gridshift when using biquadratic interpolation (#3985)

PROJ 9.3.1

01 Dec 19:34
Compare
Choose a tag to compare

Updates

  • Update to EPSG 10.098 (#3968)
  • Update ESRI objects to v3.2.0 (#3944)

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 on NN_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

01 Sep 12:16
08f394e
Compare
Choose a tag to compare

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

01 Jun 07:13
Compare
Choose a tag to compare

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: accept hydroid_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(): set PROJ_ERR_COORD_TRANSFM_NO_OPERATION error when failing in ONLY_BEST=YES mode (#3730)
  • tinshift: raise maximum size of JSON file to 100 MB (#3736)

PROJ 9.2.0

01 Mar 10:06
Compare
Choose a tag to compare

9.2.0 Release Notes

Updates

  • Database

    • EPSG updated to EPSG 10.082 (#3609)

    • ESRI objects updated to v3.1.0 (#3575)

    • Added Slovenian geoid model SLO-VRP2016/Koper (#3610)

  • Projections

    • Added generic Space Oblique Mercator (#3338)

    • Inverse eck4: Add checks for projection domain (#3625)

  • 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 in cs2cs.

    • Implement 'Similarity transformation' (EPSG:9621) and import related
      tranformations from EPSG (#3578)

    • Optimise transformations between GDA94, GDA2020 and WGS84 (#3621)

  • Performance improvements

    • Pass PJ_COORD by reference for fwd4d and inv4d callbacks (#3503)

    • Improved of inverse meridian length calculations (#3516)

    • Avoid very poor performance on a geographic CRS whose datum name is the alias of an official one (#3624)

  • 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

    • Version number changed to 0.6

    • Added an additional optional source_crs property in abridged_transformation (#3454)

    • Added support for ISO19111 CoordinateMetadata class (#3562)

    • Implement AffineCS and handle it in PROJJSON (#3579)

  • C/C++ API

    • C API: add proj_get_domain_count(), proj_get_area_of_use_ex() and proj_get_scope_ex() (#3588)

    DEPRECATIONS

    The following functions have been deprecated and will be removed in a future version.

    • C API function proj_rtodms. Use proj_rtodms2 instead (#3431)

    • C experimental API function proj_create_conversion_tunisia_mapping_grid().
      Use proj_create_conversion_tunisia_mining_grid() instead (#3559)

    • C++ API function createTunisiaMapingGrid(). Use createTunisiaMiningGrid() instead (#3559)

    • Added explicit NaN handling to proj_trans and gie (#3603)

  • CMake

    • Added uninstall target (#3362)

    • Adopted use of TIFF:TIFF and CURL::libcurl targets (#3374)

  • Security improvements

    • Replaced uses of sprintf with the safer snprintf (#3421, #3431)
  • 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 for DerivedProjectedCRS (#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 with FORCE_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

01 Dec 10:01
Compare
Choose a tag to compare

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

01 Sep 14:55
Compare
Choose a tag to compare

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 deprecate PROJ_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

15 Jun 14:40
Compare
Choose a tag to compare

Database updates

  • Update to EPSG 10.064 (#3208)

  • Add OGC:CRS84h (WGS 84 longitude-latitude-height) (#3155)

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)