PROJ is a generic coordinate transformation software that transforms geospatial coordinates from one coordinate reference system (CRS) to another. This includes cartographic projections as well as geodetic transformations. PROJ is released under the X/MIT open source license
PROJ includes command line applications for easy conversion of coordinates from text files or directly from user input. In addition to the command line utilities PROJ also exposes an application programming interface, or API in short. The API lets developers use the functionality of PROJ in their own software without having to implement similar functionality themselves.
PROJ started purely as a cartography application letting users convert geodetic coordinates into projected coordinates using a number of different cartographic projections. Over the years, as the need has become apparent, support for datum shifts has slowly worked its way into PROJ as well. Today PROJ supports more than a hundred different map projections and can transform coordinates between datums using all but the most obscure geodetic techniques.
Homepage
Download
Recent Releases
9.6.013 May 2025 10:45
major feature:
Updates:
`projinfo`: display whether an operation is time-dependent.
Add CMake options `EMBED_RESOURCE_FILES` and `USE_ONLY_EMBEDDED_RESOURCE_FILES` for `proj.db` and `proj.ini` embedding.
Database: ingest deprecated ESRI names to be able to better import old WKT ESRI.
`proj_factors()`: enhance speed when called repeatedly on same compound or projected CRS.
Add Airocean projection (formerly Dymaxion).
`createOperations()`: Optimization by avoiding database lookups for CRS (typically PROJ strings) using unknown datums.
PROJJSON export: for a Projected CRS, add an explicit type=GeographicCRS/GeodeticCRS members to the base_crs member.
`proj_trans_bounds()`: make it work when target CRS is a CompoundCRS.
`createOperations()`: do Helmert transformation in 2D when one of source or target CRS is compound.
Map EPSG method 'Vertical Offset by Grid Interpolation (asc)' to +proj=vgridshift.
Add support for 'Coordinate Frame rotation full matrix (geocen)' and Coordinate Frame rotation full matrix (geog2D)' methods.
Add a CMake `EMBED_RESOURCE_DIRECTORY` option to embed.tif/.json files in to libproj.
Take into account new EPSG methods 'Cartesian Grid Offsets by TIN Interpolation (JSON)' and 'Vertical Offset by TIN Interpolation (JSON)'.
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..
Database: add an optional step_direction column to the concatenated_operation_step table.
Database: replicate EGM2008 grid transformation record to WGS 84 realizations.
Improve ETRFxxx to ETRFyyy, and WGS 84 (xxx) to WGS 84 (yyy).
Build: Update to C++17 version.
Add bash completion script for projinfo.
Dispatch content of `4D_api.cpp` into multiple.cpp files.
Add `proj_trans_bounds_3D()`.
Database: add a engineering_datum and engineering_crs tables; import few related EPSG records.
NKG transformations: Add support for EUREF-FIN in Finish transforma
9.5.127 Nov 2024 00:16
major bugfix:
## Updates
* Database: update to EPSG v11.021 (#4254, #4275, #4297)
* 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)
9.4.002 Mar 2024 00:42
major feature:
Updates
-------
o Add support for transformations involving coordinate epoch changes
(PointMotionOperation), specifically for Canadian NAD83(CSRS)(#3884)
o SSL_OPTIONS: set SSL options on Curl library (#3936)
o Add support for unity builds (#3962)
o Added ability to install *.tif if present in data (#3970)
o createOperationsCompoundToGeog(): tune selection logic
when --grid-check known_available is specified (#3990)
o Increase CMake minimum version from 3.9 to 3.16 (#3997)
o CMake: use FetchContent to get googletest-1.12.1 (#4006)
o CMake: Replace custom FindSqlite3 with FindSQLite3 built-in (#4007)
o tpeqd: use numerically stable formula for computing the central angle
from (phi_1, lam_1) to (phi_2, lam_2) (#4009)
o Move content of proj_experimental.h to proj.h (#4019)
o Add +proj=mod_krovak projection method for Modified Krovak that
applies to S-JTSK/05 in the Czech Republic (#4021)
o PROJString formatter optimizer: simplify pipelines doing
Modified Krovak (South West) Modified Krovak (East North)
by just doing an axis swap (#4034)
o +proj=gridshift: enhance to support grids referenced in projected CRS,
and with easting_offset/northing_offset corrections (#4038)
o Tune concatenated operation instanciation, reference CR2005 geoid for
Czechia and add (disabled by default) records for Czechia S-JTSK/05 based
transformations (#4044)
o Database: update to EPSG v11.004 (#4062)
Bug fixes
---------
o Fix missing symbols at link time for Windows target in Visual Studio (#3984)
o Improve error message in axisswap (#3975)
o Avoid convergence errors in +proj=gridshift when using biquadratic
interpolation (#3985)
|