Skip to content

Releases: OSGeo/PROJ

PROJ 9.6.0

15 Mar 08:40
Compare
Choose a tag to compare

Updates

  • projinfo: display whether an operation is time-dependent (#4255)

  • Add CMake options EMBED_RESOURCE_FILES and USE_ONLY_EMBEDDED_RESOURCE_FILES for proj.db and proj.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 to proj.ini and an environment variable PROJ_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)

  • Build: Update to C++17 version (#4366, #4369)

  • 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 propagate errorIfBestTransformationNotAvailable 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

01 Dec 11:58
Compare
Choose a tag to compare

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 invalid VERTCS[] (#4266)

  • Fixed sql_filelist.cmake relative path issue (#4296)

  • Fail consistently on network error and grid transformations (#4302)

  • Fix -Wshadow warnings between parammappings.cpp and singleoperation.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)

  • Numerous documentation fixes (#4248, #4267, #4291, #4293)

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)