Compare commits

...
181 Commits
Author SHA1 Message Date
Clifford Yapp 30b6e69ac1 Merge tag '9.7.1' into RELEASE 2026-02-04 16:13:45 -05:00
Kristian Evers e37c81729a docs: update version numbers and release date 2025-12-01 15:28:34 +01:00
Kristian Evers 9719626fc5 docs: update news and download for 9.7.1 release 2025-12-01 15:27:19 +01:00
Kristian Evers ff5f3b166a Update version numbers for 9.7.1 release 2025-11-25 10:56:03 +01:00
Kristian Evers da62929788 database: Bump PROJ-data version number 2025-11-25 10:47:42 +01:00
Kristian Evers 6f4f4e131f Update NEWS for 9.7.1 release 2025-11-25 10:45:31 +01:00
Kristian Evers d3463f1435 Merge remote-tracking branch 'origin/9.7' into 9.7 2025-11-25 10:44:49 +01:00
Kristian Evers 9669eff676 Merge pull request #4620 from OSGeo/backport-4592-to-9.7
[Backport 9.7] projinfo: make it honour '-k crs'
2025-11-25 10:43:37 +01:00
Kristian Evers 20c61b37aa Update man-pages from Sphinx-docs 2025-11-25 10:27:32 +01:00
Even Rouault db4a625dca projinfo: make it honour '-k crs' 2025-11-25 08:39:29 +00:00
Even Rouault 43e1cfe336 Merge pull request #4615 from OSGeo/backport-4606-to-9.7
[Backport 9.7] WKT/PROJJSON datum ensemble import: allow no members
2025-11-20 15:18:21 +01:00
Even Rouault f6c51f6e9f WKT/PROJJSON datum ensemble import: allow no members
With the future extension of the ETRS89 datum ensemble to all recently
created ETRS89-XX national datums, the number of members in the ensemble
will be huge and will make ugly WKT/PROJJSON, hence it is highly likely
that listing the members will be made optional. Be tolerant of that on
the parsing size, but still emit them on export for now.
2025-11-19 16:22:39 +00:00
Even Rouault 5d07e2e689 Merge pull request #4601 from OSGeo/backport-4599-to-9.7
[Backport 9.7] BoundCRS::identify: fix creation of an invalid BoundCRS (that can cause later crashes) for CRS based on 'NTF (Paris)'
2025-11-04 12:01:36 +01:00
Even Rouault 1e730948fe BoundCRS::identify: fix creation of an invalid BoundCRS (that can cause later crashes) for CRS based on 'NTF (Paris)'
Fixes qgis/qgis#63787
2025-11-03 23:27:27 +00:00
Even Rouault bcd4ac4441 Avoid false positive coverity scan warning 2025-11-01 22:32:59 +01:00
Even Rouault 46cb2512a5 Merge pull request #4595 from OSGeo/backport-4594-to-9.7
[Backport 9.7] proj_clone(): fix insufficient propagation of FORCE_OVER=YES
2025-11-01 22:29:56 +01:00
Even Rouault fe2605eb2f proj_clone(): fix insufficient propagation of FORCE_OVER=YES
Fixes #4591
2025-11-01 15:33:12 +00:00
Even Rouault 95fa250ce9 Merge pull request #4586 from OSGeo/backport-4583-to-9.7
[Backport 9.7] Database: update to EPSG v12.029
2025-10-16 23:15:34 +02:00
Even Rouault 7f48d80289 Database: add fr_ign_ggm23v2.tif to grid_alternatives.sql 2025-10-03 20:00:11 +00:00
Even Rouault 7c69c3aa44 Database: update to EPSG v12.029 2025-10-03 20:00:11 +00:00
Even Rouault cb258bc70d Database: update to EPSG v12.027 2025-10-03 20:00:11 +00:00
Even Rouault 73802200d2 Merge pull request #4582 from OSGeo/backport-4581-to-9.7
[Backport 9.7] createOperations(): fix compound to compound when horizontal CRS of …
2025-09-29 09:52:14 +02:00
Even Rouault fecbbae427 createOperations(): fix compound to compound when horizontal CRS of one is a bound whose hub CRS is the geog CRS of the target, and a vertical transf is involved
Fixes #4580
2025-09-29 07:03:10 +00:00
Even Rouault b11b76c4d1 Merge pull request #4579 from OSGeo/backport-4577-to-9.7
[Backport 9.7] createOperations(): fix compound to compound when vertical CRS definition is equivalent but not strictly identical
2025-09-26 15:17:23 +02:00
Even Rouault 9c381624cd createOperations(): fix compound to compound when vertical CRS definition is equivalent but not strictly identical
Fixes #4576
2025-09-24 15:34:40 +00:00
Even Rouault 6e3bb0dfc9 Merge pull request #4578 from OSGeo/backport-4574-to-9.7
[Backport 9.7] Database: enable transformations_czechia.sql
2025-09-24 17:12:24 +02:00
Even Rouault 8b0ea2e182 Database: enable transformations_czechia.sql
now that cz_cuzk_table_-y-x_3_v1710.tif is available
(https://github.com/OSGeo/PROJ-data/pull/147)
2025-09-23 17:49:34 +00:00
Even Rouault 5224d8350d Merge pull request #4572 from OSGeo/backport-4571-to-9.7
[Backport 9.7] Database: update to EPSG v12.026
2025-09-18 15:56:31 +02:00
Even Rouault 6eac68f682 Database: update to EPSG v12.026
Remove extra erroneous usage for EPSG:11021 'ETRS89-NOR [EUREF89] / UTM zone 31N'
2025-09-18 13:01:41 +00:00
Even Rouault 54ea7524f3 Merge pull request #4570 from OSGeo/backport-4568-to-9.7
[Backport 9.7] Database: update to EPSG v12.025
2025-09-17 10:47:06 +02:00
Even Rouault f7284d37a8 Various tweaks to take into account switch from ETRS89 to ETRS89-NOR [EUREF89] 2025-09-15 11:42:51 +00:00
Even Rouault 3320ed884b Fix setting requiresPerCoordinateInputTime flag for PROJ-synthetized operations 2025-09-15 11:42:51 +00:00
Even Rouault bdc0bc6480 Database: update to EPSG v12.025 2025-09-15 11:42:50 +00:00
Even Rouault 334395bea0 news.rst: fixes 2025-09-15 13:37:03 +02:00
Kristian Evers 7b92e89450 Update website version numbers and dates 2025-09-15 09:13:15 +02:00
Clifford Yapp 2b3b06d8d1 Merge v9.5.0 to RELEASE 2024-09-24 10:27:25 -04:00
Clifford Yapp 47410920e0 Match 9.4.1 tag contents 2024-06-25 09:45:10 -04:00
Clifford Yapp 27be1f0c29 Update PROJ to v9.4.1 2024-06-25 09:42:55 -04:00
Kristian Evers 875a485fa5 Bump PROJ-data version in metadata.sql 2024-05-27 21:08:24 +02:00
Kristian Evers 4c2da03c22 Update NEWS for 9.4.1 release 2024-05-27 21:05:33 +02:00
Kristian Evers c62e0fec07 Update man-pages from Sphinx-docs 2024-05-27 20:51:46 +02:00
Kristian Evers 89a5f5918d Update version numbers and date for 9.4.1 release 2024-05-27 20:44:06 +02:00
Even Rouault ad3e44134f Merge pull request #4150 from OSGeo/backport-4149-to-9.4
[Backport 9.4] Improve detection of compatible/incompatible celestial bodies
2024-05-24 17:57:28 +02:00
Even Rouault 38f218da43 createOperations(): improve detection of compatible/incompatible celestial bodies (fixes #4148) 2024-05-24 13:54:28 +00:00
Even Rouault 35a343fb30 WKT/PROJJSON importer: improve heuristics to guess the celestial body name by using the ellipsoid name (fixes #4148) 2024-05-24 13:54:28 +00:00
Even Rouault 5fb1688f1d Merge pull request #4145 from rouault/update_proj_symbol_rename
[9.4] proj_symbol_rename.h: update with current symbols
2024-05-10 16:56:59 +02:00
Even Rouault 1facc74a54 Merge pull request #4143 from OSGeo/backport-4138-to-9.4
[Backport 9.4] Database: update ESRI dataset to ArcGIS Pro 3.3
2024-05-10 16:56:45 +02:00
Even Rouault 9baec73c01 proj_symbol_rename.h: update with current symbols 2024-05-09 21:48:24 +02:00
Even Rouault 994217540f Database: update ESRI dataset to ArcGIS Pro 3.3
Update to
https://github.com/Esri/projection-engine-db-doc/commit/3bbc1daccab58f82b6981ad81716ab3bf7670f82
/ tag v3.3.0

Fixes #4137
2024-05-09 19:14:51 +00:00
Even Rouault 5e9c999b5d Merge pull request #4139 from OSGeo/backport-4124-to-9.4
[Backport 9.4] DerivedProjectedCRS: deal with lack of explicit CS in BASEPROJCRS in WKT
2024-05-09 21:08:51 +02:00
Even Rouault f00f01dd11 Merge pull request #4141 from OSGeo/backport-4140-to-9.4
[Backport 9.4] Add grid alternatives related to DKLAT, DKMSL and GLLMSL
2024-05-09 21:08:33 +02:00
Kristian Evers 403c18c507 Grid grid-alternative types for DVR90 grids
Were set to `hgridshift` but should in fact på `geoid_like`.
2024-05-08 21:17:14 +00:00
Kristian Evers 11b3248919 Add grid alternatives related to DKLAT, DKMSL and GLLMSL 2024-05-08 21:17:14 +00:00
Even Rouault 23d50be12e Remove docker.yml [ci skip] 2024-05-08 02:07:24 +02:00
Even Rouault ee6a519fc5 DerivedProjetedCRS WKT export: emit a BASEPROJCRS.CS node in situations where there's ambiguity
Cf https://github.com/OSGeo/gdal/issues/9732#issuecomment-2072508672
2024-05-07 22:53:24 +00:00
Even Rouault 76735470c9 WKT2 grammar: allow a DERIVEDPROJCRS.BASEPROJCRS.CS node
Current WKT grammar (as of WKT2 18-010r11) does not allow a
BASEPROJCRS.CS node, but there are situations where this is
ambiguous and we want to allow one.
Cf https://github.com/OSGeo/gdal/issues/9732#issuecomment-2072508672
2024-05-07 22:53:24 +00:00
Even Rouault bf6a413739 DerivedProjectedCRS WKT import: workaround lack of explicit CS in BASEPROJCRS
Current WKT2 grammar doesn't allow an explicit CS (Coordinate System) in the BASEPROJCRS of
a DERIVEDPROJCRS. This leads to ambiguities when instanciating the
BASEPROJCRS. Cf https://github.com/OSGeo/gdal/issues/9732#issuecomment-2072508672
for a longer analysis

When importing such a DerivedProjectedCRS, we apply the following
strategy to try to reconstrut the CS of the baseProjCRS:
- if the baseProjCRS has an ID[], do a datebase lookup for this object,
  and if found, use its CS
- otherwise, do a database lookup from the name of the baseProjCRS, and
  if found, use its CS
- otherwise, browse through the PARAMETERs of the CONVERSION of the
  BASEPROJCRS, and if there is at least one such PARAMETER that has a
  linear unit, and if all PARAMETERs with a linear unit have the same
  one, then use it to reconstruct a Easting/Northing CartesianCS.
- otherwise, fallback to current behaviour, that is return a
  Easting/Northing CartesianCS with metre unit.

Fixes https://github.com/OSGeo/gdal/issues/9732
2024-05-07 22:53:24 +00:00
Even Rouault a42e1bab90 Merge pull request #4136 from OSGeo/backport-4134-to-9.4
[Backport 9.4] projinfo.rst: re-add '-s'
2024-05-08 00:36:40 +02:00
Even Rouault 4dddaaa482 Merge pull request #4135 from OSGeo/backport-4133-to-9.4
[Backport 9.4] bindings.rst: Add link to Perl bindings
2024-05-08 00:36:33 +02:00
Even Rouault dbe5f772c0 projinfo.rst: re-add '-s' accidentally removed in 4ac2cfb25e 2024-05-06 11:30:28 +00:00
Arne Johannessen be567d8bbe Add link to Perl bindings 2024-05-06 11:15:04 +00:00
Arne Johannessen daeddc86ea Sort language bindings alphabetically 2024-05-06 11:15:04 +00:00
Even Rouault 082e8484a1 Merge pull request #4126 from OSGeo/backport-4125-to-9.4
[Backport 9.4] PROJJSON specification and license: recall copyright and license
2024-04-25 17:36:01 +02:00
Even Rouault cc427d4fdd PROJJSON specification and license: recall copyright and license 2024-04-25 15:23:40 +00:00
Javier Jimenez Shaw 860eb9ecee CI: avoid failure if .ccache doesn't exist 2024-04-18 17:24:21 +02:00
Even Rouault 4e6daa43fd Merge pull request #4121 from OSGeo/backport-4120-to-9.4
[Backport 9.4] ConcatenatedOperation::fixStepsDirection(): handle case where conversion is chained with transformation that must be reversed
2024-04-18 17:23:01 +02:00
Even Rouault f570b9f702 ConcatenatedOperation::fixStepsDirection(): handle case where conversion is chained with transformation that must be reversed
Fixes https://github.com/OSGeo/PROJ/issues/4116
2024-04-17 16:47:32 +00:00
Even Rouault b0e38e6e03 Merge pull request #4114 from OSGeo/backport-4113-to-9.4
[Backport 9.4] proj_create()/proj_create_from_database(): recall CRS AUTH:CODE in error message
2024-04-16 20:22:44 +02:00
Even Rouault 279f7573cf Merge pull request #4117 from jidanni/patch-41
Update cct.rst warning of DMS dangers
2024-04-16 20:22:23 +02:00
積丹尼 Dan Jacobson 06602365d6 Update cct.rst warning of DMS dangers
Proof:
```
echo 12.5 55       | cct -z0 -t0 +proj=utm +zone=32 +ellps=GRS80
echo 12d30\'0\" 55 | cct -z0 -t0 +proj=utm +zone=32 +ellps=GRS80
echo 12 55         | cct -z0 -t0 +proj=utm +zone=32 +ellps=GRS80
  723842.2602   6100394.7568        0.0000        0.0000
  691875.6321   6098907.8250        0.0000        0.0000
  691875.6321   6098907.8250        0.0000        0.0000
```
2024-04-14 10:38:23 +08:00
Even Rouault 1f670e8ee5 proj_create()/proj_create_from_database(): recall CRS AUTH:CODE in error message
Fixes #4112
2024-04-06 17:23:59 +00:00
Even Rouault 589e01ea78 Merge pull request #4111 from kbevers/backport-nkg-unique-names
Backport NKG unique names
2024-04-04 17:34:33 +02:00
Even Rouault 92de8aa956 nkg.sql: fix remaining duplicated transformation names 2024-04-04 08:51:26 +02:00
Kristian Evers 2beb416e24 Make NKG Transformation names unique
A consequence of new database constrains introduced in #4071.
2024-04-04 08:50:29 +02:00
Even Rouault 72e6dbab11 Merge pull request #4107 from OSGeo/backport-4106-to-9.4
[Backport 9.4] Retry "Connection reset by peer"
2024-03-27 13:38:08 +01:00
Peter A. Jonsson 65fd97da33 Retry "Connection reset by peer"
Building the GDAL image can fail with:

Downloading https://cdn.proj.org/fr_ign_RAF18b.tif... (132 / 423)
Downloading https://cdn.proj.org/fr_ign_RAF20.tif... (133 / 423)
Downloading https://cdn.proj.org/fr_ign_RAGTBT2016.tif... (134 / 423)
Cannot open https://cdn.proj.org/fr_ign_RAGTBT2016.tif: OpenSSL SSL_read: Connection reset by peer, errno 104

so add the connection reset by peer
to the list of things that get a retry
time.
2024-03-27 11:44:52 +00:00
Even Rouault f9a967c9f8 Merge pull request #4105 from OSGeo/backport-4104-to-9.4
[Backport 9.4] Update roundtrip example in help text for cct
2024-03-24 14:13:52 +01:00
Kristian Evers 1ddece0683 Update roundtrip expample in help text for cct
Closes #4101
2024-03-24 11:46:43 +00:00
Even Rouault 389f5619fe Merge pull request #4089 from rouault/doc_stere_sterea
Doc: add note warning that stere/sterea are different things and …
2024-03-19 18:34:24 +01:00
Even Rouault 17cd2d0ddd Merge pull request #4090 from OSGeo/backport-4079-to-9.4
[Backport 9.4] DatabaseContext::lookForGridInfo(): do not trigger network activity …
2024-03-18 01:52:16 +01:00
Even Rouault 863fa4aa75 Doc: add note warning that stere/sterea are different things and clarify their relationship with EPSG's Oblique Stereographic 2024-03-18 00:57:39 +01:00
Even Rouault ff8032df3f Merge pull request #4086 from rouault/backport_epsg_11_006
[Backport 9.4] Database: update to EPSG v11.006
2024-03-16 17:33:19 +01:00
Even Rouault 82ae265466 DatabaseContext::lookForGridInfo(): do not trigger network activity in PROJ_GRID_AVAILABILITY_KNOWN_AVAILABLE mode when all grids are known (fixes #4075) 2024-03-16 12:20:45 +00:00
Even Rouault 0caf671083 projjson.rst: update reference to v0.7 schema (refs #4088) 2024-03-15 00:14:01 +01:00
Javier Jimenez Shaw b31692e678 Database: update to EPSG v11.006 2024-03-14 18:09:06 +01:00
Even Rouault 294228ebbd Merge pull request #4083 from OSGeo/backport-4081-to-9.4
[Backport 9.4] Update geod.rst to reduce head scratching
2024-03-12 01:07:35 +01:00
積丹尼 Dan Jacobson 76f4c9776e Update geod.rst to reduce head scratching 2024-03-11 09:56:26 +00:00
Clifford Yapp 6106b16701 Update RELEASE to v9.4.0 2024-03-06 11:37:37 -05:00
Kristian Evers 23dc37959f Fix indentation error in docs/source/conf.py 2024-03-01 19:40:08 +01:00
Kristian Evers afeffdb734 Update sphinx config for RTD 2024-03-01 18:13:51 +01:00
Kristian Evers 7cd00d0b2c Update html docs for 9.4.0 2024-03-01 17:56:59 +01:00
Kristian Evers df8df3bc1b Update documentation for 9.3.1 release 2024-03-01 17:56:50 +01:00
Kristian Evers 0f2922e1bb Update documentation for 9.3.1 release 2023-12-01 20:22:25 +01:00
Kristian Evers d24521611e Update NEWS for 9.3.1 2023-11-26 16:55:53 +01:00
Kristian Evers bd00bf31b5 Update man-pages from Sphinx-docs 2023-11-26 16:22:00 +01:00
Kristian Evers b3dcb78bef Update man-pages from Sphinx-docs 2023-11-26 16:12:34 +01:00
Kristian Evers 64a7e2ec1a Update version numbers for 9.3.1 release 2023-11-26 16:10:51 +01:00
Even Rouault 24922a0146 Merge pull request #3968 from OSGeo/backport-3966-to-9.3
[Backport 9.3] DatabaDatabase: update to EPSG 10.098
2023-11-24 15:59:28 +01:00
Even Rouault 21eaf1e305 Merge pull request #3967 from OSGeo/backport-3965-to-9.3
[Backport 9.3] Database: ESRI: fix wrong definition of Geographic 3D CRS that were imported as 2D
2023-11-24 15:10:50 +01:00
Even Rouault 553c96329f DatabaDatabase: update to EPSG 10.098 2023-11-24 12:57:27 +00:00
Even Rouault 495a84cb21 Database: ESRI: fix wrong definition of Geographic 3D CRS that were imported as 2D 2023-11-24 12:57:02 +00:00
Even Rouault 92762140d7 Merge pull request #3961 from OSGeo/backport-3960-to-9.3
[Backport 9.3] horner: allow arbitrary input type of coordinate
2023-11-23 04:58:20 +01:00
Even Rouault af74bc1954 horner: allow arbitrary input type of coordinate
Avoids workaround of https://lists.osgeo.org/pipermail/proj/2023-November/011167.html
to be able to deal with geographic coordinates
2023-11-22 13:18:32 +00:00
Even Rouault 9ac24b04a6 Merge pull request #3958 from OSGeo/backport-3957-to-9.3
[Backport 9.3] Make sure test of 1f9b636b0a is actually run
2023-11-19 23:24:30 +01:00
Even Rouault 548823527b Make sure test of 1f9b636b0a is actually run 2023-11-19 20:36:47 +00:00
Even Rouault 36bb10c0d4 Merge pull request #3956 from OSGeo/backport-3955-to-9.3
[Backport 9.3] Move static NameSpace::GLOBAL definition in static.cpp to avoid 'static initialization fiasco' (fixes various Coverity warnings)
2023-11-19 21:06:28 +01:00
Even Rouault 72de8f757c Fix importing '+proj=topocentric ... +type=crs' by using a geocentric CRS as the base CRS
Fixes https://lists.osgeo.org/pipermail/proj/2023-October/011153.html
2023-11-19 20:18:03 +01:00
Even Rouault 5106abdd64 Move static NameSpace::GLOBAL definition in static.cpp to avoid 'static initialization fiasco' (fixes various Coverity warnings) 2023-11-19 19:10:33 +00:00
Even Rouault c0a118f46d Merge pull request #3954 from rouault/backport_pr_3952
[Backport 9.3] pj_get_suggested_operation(): tune it to give correct result for RGAF09 to RRAF 1991 / UTM zone 20N + Guadeloupe 1988 height transformation
2023-11-17 13:05:10 +01:00
Even Rouault 93a42eb2d9 pj_get_suggested_operation(): tune it to give correct result for RGAF09 to RRAF 1991 / UTM zone 20N + Guadeloupe 1988 height transformation 2023-11-17 11:13:21 +01:00
Even Rouault d33156974b Merge pull request #3950 from OSGeo/backport-3949-to-9.3
[Backport 9.3] proj_factor: fix when input is a compound CRS of a projected CRS, and…
2023-11-14 19:37:13 +01:00
Even Rouault dc01f9c4ff proj: projection factors: fix when input is a compound CRS of a projected CRS, and a projected CRS whose datum has a non-Greenwich prime meridian 2023-11-13 21:44:17 +00:00
Even Rouault e04c6a6c64 proj_factor: fix when input is a compound CRS of a projected CRS, and a projected CRS whose datum has a non-Greenwich prime meridian 2023-11-13 21:44:17 +00:00
Even Rouault ab34bf583e Merge pull request #3944 from OSGeo/backport-3941-to-9.3
[Backport 9.3] Database: resync ESRI objects with https://github.com/Esri/projectionengine-db-doc at tag v3.2.0
2023-11-11 15:11:18 +01:00
Even Rouault a29c310785 Merge pull request #3943 from OSGeo/backport-3940-to-9.3
[Backport 9.3] createOperations(): fix bad PROJ pipeline when converting between Geog3D with non-metre height to CompoundCRS
2023-11-04 23:11:05 +01:00
Even Rouault aaad5eb851 [Backport 9.3] createOperations(): Fix possible null dereference on invalid WKT input (#3946) 2023-11-04 23:10:54 +01:00
Even Rouault bf9f3470b7 Database: resync ESRI objects with https://github.com/Esri/projection-engine-db-doc at tag v3.2.0 (fixes #3939) 2023-11-03 10:20:42 +00:00
Even Rouault 3b0008a353 createOperations(): fix bad PROJ pipeline when converting between Geog3D with non-metre height to CompoundCRS (fixes #3938) 2023-11-03 09:55:33 +00:00
Even Rouault 0ab04d4c7d Vertical unit conversion: improve output for ft <--> us-ft 2023-11-03 09:55:33 +00:00
Even Rouault f939fb7f29 PROJString exporter: more unitconvert related simplifications 2023-11-03 09:55:33 +00:00
Even Rouault 19b1a160ef Merge pull request #3934 from OSGeo/backport-3929-to-9.3
[Backport 9.3] createOperations(): fix issue with a obscure case involving CompoundCRS of unknown horizontal datum + boundCRS of vertical
2023-10-30 17:21:34 +01:00
Even Rouault 16c00d783f Merge pull request #3933 from OSGeo/backport-3926-to-9.3
[Backport 9.3] WKT1 parser: in non-strict mode, accept missing UNIT[] in GEOGCS, GEOCCS, PROJCS and VERT_CS elements (fixes #3925)
2023-10-30 17:21:23 +01:00
Even Rouault 44b6fc36d7 createOperations(): fix issue with a obscure case involving CompoundCRS of unknown horizontal datum + boundCRS of vertical (fixes #3927) 2023-10-27 19:50:25 +00:00
Even Rouault 618d905ee6 WKT1 parser: in non-strict mode, accept missing UNIT[] in GEOGCS, GEOCCS, PROJCS and VERT_CS elements (fixes #3925) 2023-10-27 19:49:55 +00:00
Even Rouault 224577966b Merge pull request #3931 from OSGeo/backport-3930-to-9.3
[Backport 9.3] Add Pix4D in users.rst - Proprietary licensed software
2023-10-20 16:54:13 +02:00
Javier Jimenez Shaw 35b7aa6073 Add Pix4D in users.rst - Proprietary licensed software 2023-10-20 14:42:08 +00:00
Javier Jimenez Shaw 09419f0895 allow LOCAL_CS with 3 axes 2023-10-19 21:41:30 +02:00
Javier Jimenez Shaw 91b1f4d952 Add GCG2016 German geoid model file in sql (#3920)
* Add GCG2016 German geoid model file in sql

* update PROJ_DATA.VERSION to 1.16
2023-10-14 21:16:38 +02:00
Even Rouault eda031a714 Merge pull request #3919 from OSGeo/backport-3918-to-9.3
[Backport 9.3] GeographicBoundingBox::intersects(): avoid infinite recursion and stack overflow on invalid bounding boxes
2023-10-13 18:40:41 +02:00
Even Rouault a871ac530b GeographicBoundingBox::intersects(): avoid infinite recursion and stack overflow on invalid bounding boxes
Very similar to bugfix of 8409e8e03e
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=60084
2023-10-12 19:33:48 +00:00
Even Rouault aa110d8785 Merge pull request #3917 from OSGeo/backport-3912-to-9.3
[Backport 9.3] Database: update to EPSG 10.096
2023-10-03 15:01:29 +02:00
Even Rouault 584e97a70b Merge pull request #3916 from OSGeo/backport-3911-to-9.3
[Backport 9.3] Test suite: fix to make it pass with ENABLE_TIFF=OFF (fixes #3900)
2023-10-02 10:28:15 +02:00
Even Rouault 2b06a219b9 Merge pull request #3915 from OSGeo/backport-3910-to-9.3
[Backport 9.3] createOperations(): fix GeogCRS 3D with TOWGS84 to geocentric CRS (fixes #3909)
2023-10-02 10:28:02 +02:00
Even Rouault f64db67b02 [Backport 9.3] Doc: give all EPSG potential names for lon_0/lat_0/x_0/y_0 (fixes #3904) (#3914) 2023-10-02 10:27:46 +02:00
Even Rouault c714f1e6e3 Database: update to EPSG 10.096 2023-10-02 08:27:41 +00:00
Even Rouault 435e752fad CI: add testing for -DENABLE_TIFF=OFF 2023-09-30 13:37:47 +00:00
Even Rouault f0b6dcd4f9 Test suite: fix to make it pass with ENABLE_TIFF=OFF (fixes #3900) 2023-09-30 13:37:47 +00:00
Even Rouault 1b2b98a393 createOperations(): fix GeogCRS 3D with TOWGS84 to geocentric CRS (fixes #3909) 2023-09-30 13:37:19 +00:00
積丹尼 Dan Jacobson 7ffc601575 Update faq.rst to mention geod (#3895)
See https://github.com/OSGeo/PROJ/issues/2644
2023-09-30 15:31:51 +02:00
Even Rouault 202de09be0 Merge pull request #3899 from OSGeo/backport-3897-to-9.3
[Backport 9.3] Add Javier as PSC member [skip ci]
2023-09-28 16:40:31 +02:00
Even Rouault 5de9fe397e Merge pull request #3901 from jidanni/patch-22
Update projections.rst
2023-09-24 13:43:49 +02:00
積丹尼 Dan Jacobson 92de07cc7f Update projections.rst
S/he means meters.
2023-09-24 05:26:07 -05:00
Javier Jimenez Shaw 3f97f63a94 Add Javier as PSC member [skip ci] 2023-09-20 10:14:19 +00:00
Kristian Evers 744021af84 Merge pull request #3896 from jidanni/patch-11
Improve grammar in cct.rst
2023-09-20 12:12:24 +02:00
積丹尼 Dan Jacobson 0c97ca4fb6 Update cct.rst
Grammar.
2023-09-20 04:15:50 -05:00
Even Rouault 1b2d6e5118 Merge pull request #3893 from OSGeo/rouault-patch-3
helmert.rst: remove outdated :since: and deprecation
2023-09-17 17:39:17 +02:00
Even Rouault c4d97b407c helmert.rst: remove outdated :since: and deprecation
versions 5.0 and 5.2 are ancient. No need to add to the cognitive load of the reader
2023-09-14 20:50:19 +02:00
Even Rouault f6bcc680f7 Merge pull request #3892 from OSGeo/backport-3888-to-9.3
[Backport 9.3] proj.db opening: allow opening with a URI (typically for memvfs) (fixes #3887)
2023-09-14 10:37:24 +02:00
Even Rouault cac2dd1309 Merge pull request #3891 from OSGeo/backport-3889-to-9.3
[Backport 9.3] setargv.obj is not available on uwp
2023-09-14 10:37:12 +02:00
Even Rouault c7588b02cd proj.db opening: allow opening with a URI (typically for memvfs) (fixes #3887) 2023-09-13 21:29:34 +00:00
Leander Schulten ef0d659014 setargv.obj is not available on uwp 2023-09-13 18:05:51 +00:00
Even Rouault 53e67739ff Merge pull request #3886 from OSGeo/backport-3878-to-9.3
[Backport 9.3] cs2cs: fix handling of input coordinates in grad (fixes #3800)
2023-09-13 19:24:21 +02:00
Even Rouault 992edc5846 Merge pull request #3885 from OSGeo/backport-3877-to-9.3
[Backport 9.3] Doc: projections.rst: document Order of applications of parameters (fixes #3875)
2023-09-13 19:24:10 +02:00
Even Rouault 303df3071f GeographicCRS::_isEquivalentTo(): follow-up fix for #3879 to avoid behaviour breakage in GDAL 2023-09-07 11:13:19 +02:00
Even Rouault 4c1621747c Fix GIGS 5102.2 (fixes #3800) 2023-09-06 22:36:00 +00:00
Even Rouault 274e16027b cs2cs: fix handling of input coordinates in grad (fixes #3800) 2023-09-06 22:36:00 +00:00
Even Rouault 85ec28f5ab Doc: projections.rst: document Order of applications of parameters (fixes #3875) 2023-09-06 22:35:32 +00:00
Even Rouault 4d31e759f6 Doc: add source_file extension (borrowed from GDAL, credits to @dbaston) 2023-09-06 22:35:32 +00:00
Even Rouault 93868c1a08 Merge pull request #3883 from OSGeo/backport-3879-to-9.3
[Backport 9.3] isEquivalentTo(): make a datum name 'unknown' equivalent to another one
2023-09-07 00:33:14 +02:00
Even Rouault fd5caa1879 Merge pull request #3882 from OSGeo/backport-3880-to-9.3
[Backport 9.3] Ellipsoid::_isEquivalentTo(): fix so that an ellipsoid of semi-major …
2023-09-07 00:33:06 +02:00
Even Rouault 9f99f305db Merge pull request #3881 from OSGeo/backport-3876-to-9.3
[Backport 9.3] CoordinateOperationFactory: deal with CompoundToCompound with a horizontal similarity transformation and a ballpark vertical (fixes #3854)
2023-09-07 00:32:59 +02:00
Even Rouault 882376e2c4 isEquivalentTo(): make a datum name 'unknown' equivalent to another one
Fixes https://lists.osgeo.org/pipermail/proj/2023-September/011126.html
2023-09-05 09:21:28 +00:00
Even Rouault 069e46384f 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...
or to another ellipsoid of same semi-major axis but defined from a semi-minor axis and not inverse flattening

Discovered when debugging corner cases of https://github.com/OSGeo/PROJ/pull/3879 ...
2023-09-05 08:11:39 +00:00
Even Rouault b9051b8b74 proj_crs_to_crs(): tune ordering of operations based on areas, and also for operations with unknown accuracy (fixes #3854) 2023-09-05 08:11:16 +00:00
Even Rouault e3c1e923d0 CoordinateOperationFactory: deal with CompoundToCompound with a horizontal similarity transformation and a ballpark vertical (fixes #3854) 2023-09-05 08:11:16 +00:00
Even Rouault bc8cbd8276 Improve debugging code 2023-09-05 08:11:16 +00:00
積丹尼 Dan Jacobson 707dd9ff80 Always use the cleanest examples.
Move repetitive default into text explanation.

P.S., maybe one day even consider changing the
default +ellps=GRS80 to +ellps=WGS84... but no big deal...
2023-09-03 21:14:20 +02:00
Howard Butlerand積丹尼 Dan Jacobson 7b3b638b6f Doc updates from jidanni (#3858)
* Update nzmg.rst

Here I am taking a guess at which grid this is referring to and thus trying to make it clearer.

* Update transformation.rst

Note: I have only mentioned that the +'s went away.

Apparently the author is using +init files here, and showing only their contents.

However even if the user placed the example snippets seen in the boxes into files in the current directory,
there is no complete working example!

I am saying that earlier in this book, the user was able to run the examples shown.

But now if the user wishes to continue running them, he has to put the +'s back,

or use some special syntax that you haven't shown yet in a complete working example!

* Always use the cleanest examples.

Move repetitive default into text explanation.

P.S., maybe one day even consider changing the
default +ellps=GRS80 to +ellps=WGS84... but no big deal...

* Update docs/source/apps/proj.rst

* Update x_0.rst

These are meters and one cannot just use e.g., +units to change it.

* Remove redundant optional default parameters!

We get the exact same answer without the clutter that doesn't make things any more clearer.

* 50 U.S. isn't grammatical

P.S., perhaps add a reference to where this projection came from.

* Remove parameter that is default anyway

Make example less cluttered.

* Update cart.rst

Simplify via defaults.

* Can remove default parameter.

Shorten string by removing redundancies.

* Update som.rst showing relation of the two lines

Mentioning how the two lines are related.

* Update rhealpix.rst

Got rid of
- default -f setting

Eliminated ellipse emphasis and just used the default.

* Update geoc.rst

Defaults shown clear as day at the bottom of the page already.

* Update topocentric.rst

Wipe off items that aren't the focus of the issue and don't affect outcome here.

* Update unitconvert.rst

Use and explain defaults.
One day this page should mention what the default time etc. units are too.

* Update set.rst

Simplify by removing default parameters.

* Update push.rst

Eliminate default reuse, getting same calculation.

* Update xyzgridshift.rst

Don't repeat defaults.

* Update vertoffset.rst

GRS80 already implied and documented.

* Update hgridshift.rst

Reduce chance of too wide example going off the screen!

* Update geogoffset.rst

Add '+' to match rest of book.

* Update differences.rst

Add actual EOF notation.

* Update helmert.rst

Reduce horizontal scrolling, at least on desktop.

Also one day maybe add '+' before each... or maybe not.

* Update defmodel.rst

Example causes scrolling horizontally, even on desktop.

* Update bertin1953.rst

Remove src.

* Update cass.rst

- Less horizontal scrolling, which was seen even on desktop.
- Zapped default meter parameter.

* Update s2.rst

Clean off testing residue.

Perhaps one day also hyperlink
"Quadrilateralized Spherical Cube"
page.

* Update tmerc.rst

Trimming defaults reduces horizontal scrolling.

* Update y_0.rst

These are meters and one cannot just use e.g., +units to change it.

* Update unitconvert.rst

Mention defaults.
I only listed the ones I know.
The rest I didn't list.

---------

Co-authored-by: 積丹尼 Dan Jacobson <jidanni@jidanni.org>
2023-09-03 21:14:20 +02:00
Even Rouault e5169f9af1 Merge pull request #3874 from OSGeo/backport-3873-to-9.3
[Backport 9.3] ESRI WKT import: normalize GCS_unknown to unknown and D_unknown to unknown (fixes #3871)
2023-09-03 16:03:33 +02:00
Mike Taves c76f17f63c Update CITATION.cff 2023-09-03 20:55:04 +12:00
Even Rouault f3d54fa0be ESRI WKT import: normalize GCS_unknown to unknown and D_unknown to unknown (fixes #3871) 2023-09-02 08:14:05 +00:00
Even Rouault 9b553e227a Merge pull request #3872 from OSGeo/backport-3869-to-9.3
[Backport 9.3] Fix build error with MSVC 2019 in /std:c++20 on NN_NO_CHECK()
2023-09-02 10:06:31 +02:00
Even Rouault e372d23d9b windows.yml: test C++20 compilation 2023-09-01 17:32:46 +00:00
Even Rouault a7bdb77d57 NN_NO_CHECK() macro: fix it to work with MSVC 2019 in /std:c++20 mode
(fixes #3868)

For some weird reason, the previous definition of the macro didn't work
when used from lambdas.
2023-09-01 17:32:46 +00:00
Even Rouault e4a2a492f3 Merge pull request #3870 from OSGeo/backport-3867-to-9.3
[Backport 9.3] ITRF2008: fix wrong sign for 'dry' parameter of EURA and EURA_T
2023-09-01 19:09:23 +02:00
Kristian Evers 5cecc48556 docs: update git branch and date 2023-09-01 14:22:11 +02:00
Even Rouault ea3c7e84eb ITRF2008: fix wrong sign for 'dry' parameter of EURA and EURA_T 2023-09-01 12:01:47 +00:00
Kristian Evers c530dad029 Update website for 9.3.0 release 2023-09-01 12:01:09 +02:00
Even Rouault 08f394ea30 Merge pull request #3866 from OSGeo/backport-3864-to-9.3
[Backport 9.3] JSON export: avoid non-significant decimal digits in version field (fixes #3863)
2023-08-29 17:10:25 +02:00
Even Rouault 847423fe42 JSON import: reduce number of significant decimal digits when parsing id.version field (fixes #3863, reworks previous commit) 2023-08-28 15:23:24 +00:00
Even Rouault 19cda6a061 JSON export: avoid non-significant decimal digits in version field (fixes #3863) 2023-08-28 15:23:24 +00:00
48 changed files with 3152 additions and 2024 deletions
-94
View File
@@ -1,94 +0,0 @@
name: Docker
on:
push:
paths-ignore:
- 'docs/**'
pull_request:
paths-ignore:
- 'docs/**'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true
permissions:
contents: read
# adapted from https://raw.githubusercontent.com/stefanprodan/podinfo/master/.github/workflows/release.yml
#
jobs:
containers:
name: ${{ matrix.container }} Container
runs-on: ubuntu-latest
strategy:
matrix:
container: ["proj","proj-docs"]
dockerfile: ["./Dockerfile", "./docs/docbuild/Dockerfile"]
exclude:
- container: "proj"
dockerfile: "./docs/docbuild/Dockerfile"
- container: "proj-docs"
dockerfile: "./Dockerfile"
env:
# Only push proj-docs package for master
PUSH_PACKAGES: ${{ github.repository_owner == 'OSGeo' && github.event_name != 'pull_request' && (matrix.container == 'proj' || (matrix.container == 'proj-docs' && github.ref_name == 'master')) }}
CONTAINER: ${{ matrix.container }}
steps:
- uses: actions/checkout@v5
- name: Lint
id: lint
run: |
echo "are we pushing packages" ${{ env.PUSH_PACKAGES }}
echo "event_name" ${{ github.event_name }}
echo "ref" ${{ github.ref }}
- name: Setup Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
with:
version: latest
- if: ${{ env.PUSH_PACKAGES == 'true' }}
name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GHCR_TOKEN }}
- if: ${{ env.PUSH_PACKAGES == 'true' }}
name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Prepare
id: prep
run: |
VERSION=sha-${GITHUB_SHA::8}
if [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION=${GITHUB_REF/refs\/tags\//}
fi
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT
- name: Build image
uses: docker/build-push-action@v6
with:
push: ${{ env.PUSH_PACKAGES == 'true' }}
builder: ${{ steps.buildx.outputs.name }}
context: .
file: ${{ matrix.dockerfile }}
platforms: linux/amd64
tags: |
docker.io/osgeo/${{ matrix.container }}:${{ steps.prep.outputs.VERSION }}
docker.io/osgeo/${{ matrix.container }}:latest
ghcr.io/osgeo/${{ matrix.container }}:${{ steps.prep.outputs.VERSION }}
ghcr.io/osgeo/${{ matrix.container }}:latest
labels: |
org.opencontainers.image.title=${{ github.event.repository.name }}
org.opencontainers.image.description=${{ github.event.repository.description }}
org.opencontainers.image.source=${{ github.event.repository.html_url }}
org.opencontainers.image.url=${{ github.event.repository.html_url }}
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.version=${{ steps.prep.outputs.VERSION }}
org.opencontainers.image.created=${{ steps.prep.outputs.BUILD_DATE }}
+1 -1
View File
@@ -153,7 +153,7 @@ message(STATUS "Configuring PROJ:")
#PROJ version information
################################################################################
include(ProjVersion)
proj_version(MAJOR 9 MINOR 7 PATCH 0)
proj_version(MAJOR 9 MINOR 7 PATCH 1)
set(PROJ_SOVERSION 25)
set(PROJ_BUILD_VERSION "${PROJ_SOVERSION}.${PROJ_VERSION}")
+23
View File
@@ -1,5 +1,28 @@
# PROJ Release Notes
## 9.7.1
### Updates
* Enable transformations_czechia.sql (#4578)
* Update to EPSG v12.029 (#4586)
### 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 of `FORCE_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)
## 9.7.0
### Updates
+1 -1
View File
@@ -31,7 +31,7 @@ set(ALL_SQL_IN "${CMAKE_CURRENT_BINARY_DIR}/all.sql.in")
set(PROJ_DB "${CMAKE_CURRENT_BINARY_DIR}/proj.db")
include(sql_filelist.cmake)
set(PROJ_DB_SQL_EXPECTED_MD5 "9f7dcabfc3c8a70ef301bba9af749406")
set(PROJ_DB_SQL_EXPECTED_MD5 "f6a88a01020b8abf364ff2d27271ae60")
add_custom_command(
OUTPUT ${PROJ_DB}
+208 -12
View File
@@ -779,6 +779,8 @@ INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1422','NATRF2022','EPSG
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1407','EUREF89','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1403','NKG_ETRF14','EPSG');
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1424','SVD2024','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1225','CR-SIRGAS','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1428','CR14','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','21100','Genuk / NEIEZ','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2140','NAD83(CSRS98) / SCoPQ zone 3','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2141','NAD83(CSRS98) / SCoPQ zone 4','EPSG');
@@ -6745,12 +6747,12 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5938','WGS 84 / EPSG Gre
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5939','WGS 84 / EPSG Norway PS','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5940','WGS 84 / EPSG Russia PS','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5930','WGS 84 / EPSG Arctic B5','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5973','ETRS89 / UTM zone 33 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5975','ETRS89 / UTM zone 35 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5974','ETRS89 / UTM zone 34 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5976','ETRS89 / UTM zone 36 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5972','ETRS89 / UTM zone 32 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5971','ETRS89 / UTM zone 31 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5973','ETRS89 / UTM zone 33N + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5975','ETRS89 / UTM zone 35N + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5974','ETRS89 / UTM zone 34N + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5976','ETRS89 / UTM zone 36N + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5972','ETRS89 / UTM zone 32N + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5971','ETRS89 / UTM zone 31N + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6050','GR96 / EPSG Arctic 1-25','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6051','GR96 / EPSG Arctic 2-18','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6052','GR96 / EPSG Arctic 2-20','EPSG');
@@ -6829,12 +6831,12 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6104','NAD83(CSRS) / EPS
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6141','CING11','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4723','Grand Cayman 1959','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4726','Little Cayman 1961','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6171','ETRS89 / UTM zone 31 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6172','ETRS89 / UTM zone 32 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6173','ETRS89 / UTM zone 33 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6174','ETRS89 / UTM zone 34 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6175','ETRS89 / UTM zone 35 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6176','ETRS89 / UTM zone 36 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6171','ETRS89 / UTM zone 31N + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6172','ETRS89 / UTM zone 32N + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6173','ETRS89 / UTM zone 33N + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6174','ETRS89 / UTM zone 34N + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6175','ETRS89 / UTM zone 35N + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6176','ETRS89 / UTM zone 36N + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','5710','BE_OOST / UNCOR','EPSG');
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','5710','Oostende height','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6057','GR96 / EPSG Arctic 4-22','EPSG');
@@ -8155,6 +8157,200 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','10924','CSRN2025 (NAD83
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10873','EUREF89','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10874','EUREF89','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10875','EUREF89','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5105','ETRS89 / NTM zone 5','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5106','ETRS89 / NTM zone 6','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5107','ETRS89 / NTM zone 7','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5108','ETRS89 / NTM zone 8','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5109','ETRS89 / NTM zone 9','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5110','ETRS89 / NTM zone 10','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5111','ETRS89 / NTM zone 11','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5112','ETRS89 / NTM zone 12','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5113','ETRS89 / NTM zone 13','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5114','ETRS89 / NTM zone 14','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5115','ETRS89 / NTM zone 15','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5116','ETRS89 / NTM zone 16','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5117','ETRS89 / NTM zone 17','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5118','ETRS89 / NTM zone 18','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5119','ETRS89 / NTM zone 19','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5120','ETRS89 / NTM zone 20','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5121','ETRS89 / NTM zone 21','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5122','ETRS89 / NTM zone 22','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5123','ETRS89 / NTM zone 23','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5124','ETRS89 / NTM zone 24','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5125','ETRS89 / NTM zone 25','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5126','ETRS89 / NTM zone 26','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5127','ETRS89 / NTM zone 27','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5128','ETRS89 / NTM zone 28','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5129','ETRS89 / NTM zone 29','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5130','ETRS89 / NTM zone 30','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6144','ETRS89 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5942','ETRS89 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','20001','ETRS89 + SVD2006 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','9883','ETRS89 + CD Norway depth','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5105','EUREF89 / NTM zone 5','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5106','EUREF89 / NTM zone 6','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5107','EUREF89 / NTM zone 7','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5108','EUREF89 / NTM zone 8','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5109','EUREF89 / NTM zone 9','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5110','EUREF89 / NTM zone 10','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5111','EUREF89 / NTM zone 11','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5112','EUREF89 / NTM zone 12','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5113','EUREF89 / NTM zone 13','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5114','EUREF89 / NTM zone 14','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5115','EUREF89 / NTM zone 15','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5116','EUREF89 / NTM zone 16','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5117','EUREF89 / NTM zone 17','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5118','EUREF89 / NTM zone 18','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5119','EUREF89 / NTM zone 19','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5120','EUREF89 / NTM zone 20','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5121','EUREF89 / NTM zone 21','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5122','EUREF89 / NTM zone 22','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5123','EUREF89 / NTM zone 23','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5124','EUREF89 / NTM zone 24','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5125','EUREF89 / NTM zone 25','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5126','EUREF89 / NTM zone 26','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5127','EUREF89 / NTM zone 27','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5128','EUREF89 / NTM zone 28','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5129','EUREF89 / NTM zone 29','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5130','EUREF89 / NTM zone 30','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11012','EUREF89 / UTM zone 30 (N-E)','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11013','EUREF89 / UTM zone 31 (N-E)','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11014','EUREF89 / UTM zone 32 (N-E)','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11015','EUREF89 / UTM zone 33 (N-E)','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11016','EUREF89 / UTM zone 34 (N-E)','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11017','EUREF89 / UTM zone 35 (N-E)','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11018','EUREF89 / UTM zone 36 (N-E)','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11019','EUREF89 / UTM zone 37 (N-E)','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11020','EUREF89 / UTM zone 30','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11021','EUREF89 / UTM zone 31','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11022','EUREF89 / UTM zone 32','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11023','EUREF89 / UTM zone 33','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11024','EUREF89 / UTM zone 34','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11025','EUREF89 / UTM zone 35','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11026','EUREF89 / UTM zone 36','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','20001','EUREF89 + SVD2006 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','11000','EUREF89 + SVD2024 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6145','ETRS89 / NTM zone 5 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6145','EUREF89 / NTM zone 5 + NN54','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5945','ETRS89 / NTM zone 5 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5945','EUREF89 / NTM zone 5 + NN2000','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6146','ETRS89 / NTM zone 6 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5946','ETRS89 / NTM zone 6 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6147','ETRS89 / NTM zone 7 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6146','EUREF89 / NTM zone 6 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5946','EUREF89 / NTM zone 6 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5947','ETRS89 / NTM zone 7 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5947','EUREF89 / NTM zone 7 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6148','ETRS89 / NTM zone 8 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5948','ETRS89 / NTM zone 8 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5948','EUREF89 / NTM zone 8 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6149','ETRS89 / NTM zone 9 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6149','EUREF89 / NTM zone 9 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5949','ETRS89 / NTM zone 9 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5949','EUREF89 / NTM zone 9 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6150','ETRS89 / NTM zone 10 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6150','EUREF89 / NTM zone 10 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5950','ETRS89 / NTM zone 10 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5950','EUREF89 / NTM zone 10 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6151','ETRS89 / NTM zone 11 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6151','EUREF89 / NTM zone 11 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5951','ETRS89 / NTM zone 11 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5951','EUREF89 / NTM zone 11 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6152','ETRS89 / NTM zone 12 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6152','EUREF89 / NTM zone 12 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5952','ETRS89 / NTM zone 12 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5952','EUREF89 / NTM zone 12 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6153','ETRS89 / NTM zone 13 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6153','EUREF89 / NTM zone 13 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5953','ETRS89 / NTM zone 13 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5953','EUREF89 / NTM zone 13 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6154','ETRS89 / NTM zone 14 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6154','EUREF89 / NTM zone 14 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5954','ETRS89 / NTM zone 14 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5954','EUREF89 / NTM zone 14 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6155','ETRS89 / NTM zone 15 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6155','EUREF89 / NTM zone 15 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5955','ETRS89 / NTM zone 15 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5955','EUREF89 / NTM zone 15 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6156','ETRS89 / NTM zone 16 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6156','EUREF89 / NTM zone 16 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5956','ETRS89 / NTM zone 16 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5956','EUREF89 / NTM zone 16 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6157','ETRS89 / NTM zone 17 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6157','EUREF89 / NTM zone 17 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5957','ETRS89 / NTM zone 17 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5957','EUREF89 / NTM zone 17 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6158','ETRS89 / NTM zone 18 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6158','EUREF89 / NTM zone 18 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5958','ETRS89 / NTM zone 18 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6159','ETRS89 / NTM zone 19 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6159','EUREF89 / NTM zone 19 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5959','ETRS89 / NTM zone 19 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5959','EUREF89 / NTM zone 19 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6160','ETRS89 / NTM zone 20 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6160','EUREF89 / NTM zone 20 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5960','ETRS89 / NTM zone 20 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5960','EUREF89 / NTM zone 20 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6161','ETRS89 / NTM zone 21 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6161','EUREF89 / NTM zone 21 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5961','ETRS89 / NTM zone 21 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5961','EUREF89 / NTM zone 21 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6162','ETRS89 / NTM zone 22 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5962','ETRS89 / NTM zone 22 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6163','ETRS89 / NTM zone 23 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6163','EUREF89 / NTM zone 23 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5963','ETRS89 / NTM zone 23 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5963','EUREF89 / NTM zone 23 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6164','ETRS89 / NTM zone 24 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6164','EUREF89 / NTM zone 24 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5964','ETRS89 / NTM zone 24 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5964','EUREF89 / NTM zone 24 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6165','ETRS89 / NTM zone 25 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6165','EUREF89 / NTM zone 25 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5965','ETRS89 / NTM zone 25 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5965','EUREF89 / NTM zone 25 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6166','ETRS89 / NTM zone 26 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6166','EUREF89 / NTM zone 26 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5966','ETRS89 / NTM zone 26 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5966','EUREF89 / NTM zone 26 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6167','ETRS89 / NTM zone 27 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6167','EUREF89 / NTM zone 27 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5967','ETRS89 / NTM zone 27 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5967','EUREF89 / NTM zone 27 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6168','ETRS89 / NTM zone 28 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6168','EUREF89 / NTM zone 28 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5968','ETRS89 / NTM zone 28 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5968','EUREF89 / NTM zone 28 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6169','ETRS89 / NTM zone 29 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6169','EUREF89 / NTM zone 29 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5969','ETRS89 / NTM zone 29 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5969','EUREF89 / NTM zone 29 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6170','ETRS89 / NTM zone 30 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6170','EUREF89 / NTM zone 30 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5970','ETRS89 / NTM zone 30 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5970','EUREF89 / NTM zone 30 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5958','EUREF89 / NTM zone 18 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6162','EUREF89 / NTM zone 22 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5962','EUREF89 / NTM zone 22 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','8905','CR-SIRGAS','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','8906','CR-SIRGAS','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','8907','CR-SIRGAS','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','8908','CR-SIRGAS / CRTM05','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','8912','CR-SIRGAS / CRTM05 + DACR52 height','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','8909','CR-SIRGAS / UTM zone 16N','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','8910','CR-SIRGAS / UTM zone 17N','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','11041','CR19','EPSG');
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','11042','CR19','EPSG');
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','11027','EUREF89 / UTM zone 37','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5971','EUREF89 / UTM zone 31 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5972','EUREF89 / UTM zone 32 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5973','EUREF89 / UTM zone 33 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5974','EUREF89 / UTM zone 34 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5975','EUREF89 / UTM zone 35 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','5976','EUREF89 / UTM zone 36 + NN2000 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6171','EUREF89 / UTM zone 31 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6172','EUREF89 / UTM zone 32 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6173','EUREF89 / UTM zone 33 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6174','EUREF89 / UTM zone 34 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6175','EUREF89 / UTM zone 35 + NN54 height','EPSG');
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6176','EUREF89 / UTM zone 36 + NN54 height','EPSG');
+70 -68
View File
@@ -74,137 +74,137 @@ INSERT INTO "compound_crs" VALUES('EPSG','5856','SWEREF99 21 45 + RH2000 height'
INSERT INTO "usage" VALUES('EPSG','4291','compound_crs','EPSG','5856','EPSG','2843','EPSG','1142');
INSERT INTO "compound_crs" VALUES('EPSG','5857','SWEREF99 23 15 + RH2000 height',NULL,'EPSG','3018','EPSG','5613',0);
INSERT INTO "usage" VALUES('EPSG','4292','compound_crs','EPSG','5857','EPSG','2844','EPSG','1142');
INSERT INTO "compound_crs" VALUES('EPSG','5942','ETRS89 + NN2000 height',NULL,'EPSG','4258','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5942','ETRS89-NOR [EUREF89] + NN2000 height',NULL,'EPSG','10875','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4346','compound_crs','EPSG','5942','EPSG','1352','EPSG','1027');
INSERT INTO "compound_crs" VALUES('EPSG','5945','ETRS89 / NTM zone 5 + NN2000 height',NULL,'EPSG','5105','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5945','ETRS89-NOR [EUREF89] / NTM zone 5 + NN2000 height',NULL,'EPSG','5105','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4347','compound_crs','EPSG','5945','EPSG','3636','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5946','ETRS89 / NTM zone 6 + NN2000 height',NULL,'EPSG','5106','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5946','ETRS89-NOR [EUREF89] / NTM zone 6 + NN2000 height',NULL,'EPSG','5106','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4348','compound_crs','EPSG','5946','EPSG','3639','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5947','ETRS89 / NTM zone 7 + NN2000 height',NULL,'EPSG','5107','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5947','ETRS89-NOR [EUREF89] / NTM zone 7 + NN2000 height',NULL,'EPSG','5107','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4349','compound_crs','EPSG','5947','EPSG','3647','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5948','ETRS89 / NTM zone 8 + NN2000 height',NULL,'EPSG','5108','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5948','ETRS89-NOR [EUREF89] / NTM zone 8 + NN2000 height',NULL,'EPSG','5108','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4350','compound_crs','EPSG','5948','EPSG','3648','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5949','ETRS89 / NTM zone 9 + NN2000 height',NULL,'EPSG','5109','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5949','ETRS89-NOR [EUREF89] / NTM zone 9 + NN2000 height',NULL,'EPSG','5109','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4351','compound_crs','EPSG','5949','EPSG','3649','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5950','ETRS89 / NTM zone 10 + NN2000 height',NULL,'EPSG','5110','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5950','ETRS89-NOR [EUREF89] / NTM zone 10 + NN2000 height',NULL,'EPSG','5110','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4352','compound_crs','EPSG','5950','EPSG','3650','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5951','ETRS89 / NTM zone 11 + NN2000 height',NULL,'EPSG','5111','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5951','ETRS89-NOR [EUREF89] / NTM zone 11 + NN2000 height',NULL,'EPSG','5111','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4353','compound_crs','EPSG','5951','EPSG','3651','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5952','ETRS89 / NTM zone 12 + NN2000 height',NULL,'EPSG','5112','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5952','ETRS89-NOR [EUREF89] / NTM zone 12 + NN2000 height',NULL,'EPSG','5112','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4354','compound_crs','EPSG','5952','EPSG','3653','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5953','ETRS89 / NTM zone 13 + NN2000 height',NULL,'EPSG','5113','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5953','ETRS89-NOR [EUREF89 / NTM zone 13 + NN2000 height',NULL,'EPSG','5113','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4355','compound_crs','EPSG','5953','EPSG','3654','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5954','ETRS89 / NTM zone 14 + NN2000 height',NULL,'EPSG','5114','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5954','ETRS89-NOR [EUREF89] / NTM zone 14 + NN2000 height',NULL,'EPSG','5114','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4356','compound_crs','EPSG','5954','EPSG','3655','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5955','ETRS89 / NTM zone 15 + NN2000 height',NULL,'EPSG','5115','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5955','ETRS89-NOR [EUREF89] / NTM zone 15 + NN2000 height',NULL,'EPSG','5115','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4357','compound_crs','EPSG','5955','EPSG','3656','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5956','ETRS89 / NTM zone 16 + NN2000 height',NULL,'EPSG','5116','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5956','ETRS89-NOR [EUREF89] / NTM zone 16 + NN2000 height',NULL,'EPSG','5116','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4358','compound_crs','EPSG','5956','EPSG','3657','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5957','ETRS89 / NTM zone 17 + NN2000 height',NULL,'EPSG','5117','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5957','ETRS89-NOR [EUREF89] / NTM zone 17 + NN2000 height',NULL,'EPSG','5117','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4359','compound_crs','EPSG','5957','EPSG','3658','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5958','ETRS89 / NTM zone 18 + NN2000 height',NULL,'EPSG','5118','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5958','ETRS89-NOR [EUREF89] / NTM zone 18 + NN2000 height',NULL,'EPSG','5118','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4360','compound_crs','EPSG','5958','EPSG','3660','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5959','ETRS89 / NTM zone 19 + NN2000 height',NULL,'EPSG','5119','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5959','ETRS89-NOR [EUREF89] / NTM zone 19 + NN2000 height',NULL,'EPSG','5119','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4361','compound_crs','EPSG','5959','EPSG','3661','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5960','ETRS89 / NTM zone 20 + NN2000 height',NULL,'EPSG','5120','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5960','ETRS89-NOR [EUREF89] / NTM zone 20 + NN2000 height',NULL,'EPSG','5120','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4362','compound_crs','EPSG','5960','EPSG','3662','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5961','ETRS89 / NTM zone 21 + NN2000 height',NULL,'EPSG','5121','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5961','ETRS89-NOR [EUREF89] / NTM zone 21 + NN2000 height',NULL,'EPSG','5121','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4363','compound_crs','EPSG','5961','EPSG','3663','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5962','ETRS89 / NTM zone 22 + NN2000 height',NULL,'EPSG','5122','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5962','ETRS89-NOR [EUREF89] / NTM zone 22 + NN2000 height',NULL,'EPSG','5122','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4364','compound_crs','EPSG','5962','EPSG','3665','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5963','ETRS89 / NTM zone 23 + NN2000 height',NULL,'EPSG','5123','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5963','ETRS89-NOR [EUREF89] / NTM zone 23 + NN2000 height',NULL,'EPSG','5123','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4365','compound_crs','EPSG','5963','EPSG','3667','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5964','ETRS89 / NTM zone 24 + NN2000 height',NULL,'EPSG','5124','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5964','ETRS89-NOR [EUREF89] / NTM zone 24 + NN2000 height',NULL,'EPSG','5124','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4366','compound_crs','EPSG','5964','EPSG','3668','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5965','ETRS89 / NTM zone 25 + NN2000 height',NULL,'EPSG','5125','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5965','ETRS89-NOR [EUREF89] / NTM zone 25 + NN2000 height',NULL,'EPSG','5125','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4367','compound_crs','EPSG','5965','EPSG','3669','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5966','ETRS89 / NTM zone 26 + NN2000 height',NULL,'EPSG','5126','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5966','ETRS89-NOR [EUREF89] / NTM zone 26 + NN2000 height',NULL,'EPSG','5126','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4368','compound_crs','EPSG','5966','EPSG','3671','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5967','ETRS89 / NTM zone 27 + NN2000 height',NULL,'EPSG','5127','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5967','ETRS89-NOR [EUREF89] / NTM zone 27 + NN2000 height',NULL,'EPSG','5127','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4369','compound_crs','EPSG','5967','EPSG','3672','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5968','ETRS89 / NTM zone 28 + NN2000 height',NULL,'EPSG','5128','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5968','ETRS89-NOR [EUREF89] / NTM zone 28 + NN2000 height',NULL,'EPSG','5128','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4370','compound_crs','EPSG','5968','EPSG','3673','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5969','ETRS89 / NTM zone 29 + NN2000 height',NULL,'EPSG','5129','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5969','ETRS89-NOR [EUREF89] / NTM zone 29 + NN2000 height',NULL,'EPSG','5129','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4371','compound_crs','EPSG','5969','EPSG','3674','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5970','ETRS89 / NTM zone 30 + NN2000 height',NULL,'EPSG','5130','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5970','ETRS89-NOR [EUREF89] / NTM zone 30 + NN2000 height',NULL,'EPSG','5130','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4372','compound_crs','EPSG','5970','EPSG','3676','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','5971','ETRS89 / UTM zone 31N + NN2000 height',NULL,'EPSG','25831','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5971','ETRS89-NOR [EUREF89] / UTM zone 31N + NN2000 height',NULL,'EPSG','11021','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4373','compound_crs','EPSG','5971','EPSG','3636','EPSG','1153');
INSERT INTO "compound_crs" VALUES('EPSG','5972','ETRS89 / UTM zone 32N + NN2000 height',NULL,'EPSG','25832','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5972','ETRS89-NOR [EUREF89] / UTM zone 32N + NN2000 height',NULL,'EPSG','11022','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4374','compound_crs','EPSG','5972','EPSG','4066','EPSG','1153');
INSERT INTO "compound_crs" VALUES('EPSG','5973','ETRS89 / UTM zone 33N + NN2000 height',NULL,'EPSG','25833','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5973','ETRS89-NOR [EUREF89] / UTM zone 33N + NN2000 height',NULL,'EPSG','11023','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4375','compound_crs','EPSG','5973','EPSG','4067','EPSG','1153');
INSERT INTO "compound_crs" VALUES('EPSG','5974','ETRS89 / UTM zone 34N + NN2000 height',NULL,'EPSG','25834','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5974','ETRS89-NOR [EUREF89] / UTM zone 34N + NN2000 height',NULL,'EPSG','11024','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4376','compound_crs','EPSG','5974','EPSG','4068','EPSG','1153');
INSERT INTO "compound_crs" VALUES('EPSG','5975','ETRS89 / UTM zone 35N + NN2000 height',NULL,'EPSG','25835','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5975','ETRS89-NOR [EUREF89] / UTM zone 35N + NN2000 height',NULL,'EPSG','11025','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4377','compound_crs','EPSG','5975','EPSG','4069','EPSG','1153');
INSERT INTO "compound_crs" VALUES('EPSG','5976','ETRS89 / UTM zone 36N + NN2000 height',NULL,'EPSG','25836','EPSG','5941',0);
INSERT INTO "compound_crs" VALUES('EPSG','5976','ETRS89-NOR [EUREF89] / UTM zone 36N + NN2000 height',NULL,'EPSG','11026','EPSG','5941',0);
INSERT INTO "usage" VALUES('EPSG','4378','compound_crs','EPSG','5976','EPSG','3676','EPSG','1153');
INSERT INTO "compound_crs" VALUES('EPSG','6144','ETRS89 + NN54 height',NULL,'EPSG','4258','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6144','ETRS89-NOR [EUREF89] + NN54 height',NULL,'EPSG','10875','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4464','compound_crs','EPSG','6144','EPSG','1352','EPSG','1027');
INSERT INTO "compound_crs" VALUES('EPSG','6145','ETRS89 / NTM zone 5 + NN54 height',NULL,'EPSG','5105','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6145','ETRS89-NOR [EUREF89] / NTM zone 5 + NN54 height',NULL,'EPSG','5105','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4465','compound_crs','EPSG','6145','EPSG','3636','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6146','ETRS89 / NTM zone 6 + NN54 height',NULL,'EPSG','5106','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6146','ETRS89-NOR [EUREF89] / NTM zone 6 + NN54 height',NULL,'EPSG','5106','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4466','compound_crs','EPSG','6146','EPSG','3639','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6147','ETRS89 / NTM zone 7 + NN54 height',NULL,'EPSG','5107','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6147','ETRS89-NOR [EUREF89] / NTM zone 7 + NN54 height',NULL,'EPSG','5107','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4467','compound_crs','EPSG','6147','EPSG','3647','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6148','ETRS89 / NTM zone 8 + NN54 height',NULL,'EPSG','5108','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6148','ETRS89-NOR [EUREF89] / NTM zone 8 + NN54 height',NULL,'EPSG','5108','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4468','compound_crs','EPSG','6148','EPSG','3648','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6149','ETRS89 / NTM zone 9 + NN54 height',NULL,'EPSG','5109','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6149','ETRS89-NOR [EUREF89] / NTM zone 9 + NN54 height',NULL,'EPSG','5109','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4469','compound_crs','EPSG','6149','EPSG','3649','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6150','ETRS89 / NTM zone 10 + NN54 height',NULL,'EPSG','5110','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6150','ETRS89-NOR [EUREF89] / NTM zone 10 + NN54 height',NULL,'EPSG','5110','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4470','compound_crs','EPSG','6150','EPSG','3650','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6151','ETRS89 / NTM zone 11 + NN54 height',NULL,'EPSG','5111','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6151','ETRS89-NOR [EUREF89] / NTM zone 11 + NN54 height',NULL,'EPSG','5111','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4471','compound_crs','EPSG','6151','EPSG','3651','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6152','ETRS89 / NTM zone 12 + NN54 height',NULL,'EPSG','5112','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6152','ETRS89-NOR [EUREF89] / NTM zone 12 + NN54 height',NULL,'EPSG','5112','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4472','compound_crs','EPSG','6152','EPSG','3653','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6153','ETRS89 / NTM zone 13 + NN54 height',NULL,'EPSG','5113','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6153','ETRS89-NOR [EUREF89] / NTM zone 13 + NN54 height',NULL,'EPSG','5113','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4473','compound_crs','EPSG','6153','EPSG','3654','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6154','ETRS89 / NTM zone 14 + NN54 height',NULL,'EPSG','5114','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6154','ETRS89-NOR [EUREF89] / NTM zone 14 + NN54 height',NULL,'EPSG','5114','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4474','compound_crs','EPSG','6154','EPSG','3655','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6155','ETRS89 / NTM zone 15 + NN54 height',NULL,'EPSG','5115','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6155','ETRS89-NOR [EUREF89] / NTM zone 15 + NN54 height',NULL,'EPSG','5115','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4475','compound_crs','EPSG','6155','EPSG','3656','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6156','ETRS89 / NTM zone 16 + NN54 height',NULL,'EPSG','5116','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6156','ETRS89-NOR [EUREF89] / NTM zone 16 + NN54 height',NULL,'EPSG','5116','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4476','compound_crs','EPSG','6156','EPSG','3657','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6157','ETRS89 / NTM zone 17 + NN54 height',NULL,'EPSG','5117','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6157','ETRS89-NOR [EUREF89] / NTM zone 17 + NN54 height',NULL,'EPSG','5117','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4477','compound_crs','EPSG','6157','EPSG','3658','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6158','ETRS89 / NTM zone 18 + NN54 height',NULL,'EPSG','5118','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6158','ETRS89-NOR [EUREF89] / NTM zone 18 + NN54 height',NULL,'EPSG','5118','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4478','compound_crs','EPSG','6158','EPSG','3660','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6159','ETRS89 / NTM zone 19 + NN54 height',NULL,'EPSG','5119','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6159','ETRS89-NOR [EUREF89] / NTM zone 19 + NN54 height',NULL,'EPSG','5119','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4479','compound_crs','EPSG','6159','EPSG','3661','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6160','ETRS89 / NTM zone 20 + NN54 height',NULL,'EPSG','5120','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6160','ETRS89-NOR [EUREF89] / NTM zone 20 + NN54 height',NULL,'EPSG','5120','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4480','compound_crs','EPSG','6160','EPSG','3662','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6161','ETRS89 / NTM zone 21 + NN54 height',NULL,'EPSG','5121','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6161','ETRS89-NOR [EUREF89] / NTM zone 21 + NN54 height',NULL,'EPSG','5121','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4481','compound_crs','EPSG','6161','EPSG','3663','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6162','ETRS89 / NTM zone 22 + NN54 height',NULL,'EPSG','5122','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6162','ETRS89-NOR [EUREF89] / NTM zone 22 + NN54 height',NULL,'EPSG','5122','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4482','compound_crs','EPSG','6162','EPSG','3665','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6163','ETRS89 / NTM zone 23 + NN54 height',NULL,'EPSG','5123','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6163','ETRS89-NOR [EUREF89] / NTM zone 23 + NN54 height',NULL,'EPSG','5123','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4483','compound_crs','EPSG','6163','EPSG','3667','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6164','ETRS89 / NTM zone 24 + NN54 height',NULL,'EPSG','5124','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6164','ETRS89-NOR [EUREF89] / NTM zone 24 + NN54 height',NULL,'EPSG','5124','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4484','compound_crs','EPSG','6164','EPSG','3668','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6165','ETRS89 / NTM zone 25 + NN54 height',NULL,'EPSG','5125','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6165','ETRS89-NOR [EUREF89] / NTM zone 25 + NN54 height',NULL,'EPSG','5125','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4485','compound_crs','EPSG','6165','EPSG','3669','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6166','ETRS89 / NTM zone 26 + NN54 height',NULL,'EPSG','5126','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6166','ETRS89-NOR [EUREF89] / NTM zone 26 + NN54 height',NULL,'EPSG','5126','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4486','compound_crs','EPSG','6166','EPSG','3671','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6167','ETRS89 / NTM zone 27 + NN54 height',NULL,'EPSG','5127','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6167','ETRS89-NOR [EUREF89] / NTM zone 27 + NN54 height',NULL,'EPSG','5127','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4487','compound_crs','EPSG','6167','EPSG','3672','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6168','ETRS89 / NTM zone 28 + NN54 height',NULL,'EPSG','5128','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6168','ETRS89-NOR [EUREF89] / NTM zone 28 + NN54 height',NULL,'EPSG','5128','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4488','compound_crs','EPSG','6168','EPSG','3673','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6169','ETRS89 / NTM zone 29 + NN54 height',NULL,'EPSG','5129','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6169','ETRS89-NOR [EUREF89] / NTM zone 29 + NN54 height',NULL,'EPSG','5129','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4489','compound_crs','EPSG','6169','EPSG','3674','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6170','ETRS89 / NTM zone 30 + NN54 height',NULL,'EPSG','5130','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6170','ETRS89-NOR [EUREF89] / NTM zone 30 + NN54 height',NULL,'EPSG','5130','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4490','compound_crs','EPSG','6170','EPSG','3676','EPSG','1029');
INSERT INTO "compound_crs" VALUES('EPSG','6171','ETRS89 / UTM zone 31N + NN54 height',NULL,'EPSG','25831','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6171','ETRS89-NOR [EUREF89] / UTM zone 31N + NN54 height',NULL,'EPSG','11021','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4491','compound_crs','EPSG','6171','EPSG','3636','EPSG','1153');
INSERT INTO "compound_crs" VALUES('EPSG','6172','ETRS89 / UTM zone 32N + NN54 height',NULL,'EPSG','25832','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6172','ETRS89-NOR [EUREF89] / UTM zone 32N + NN54 height',NULL,'EPSG','11022','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4492','compound_crs','EPSG','6172','EPSG','4066','EPSG','1153');
INSERT INTO "compound_crs" VALUES('EPSG','6173','ETRS89 / UTM zone 33N + NN54 height',NULL,'EPSG','25833','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6173','ETRS89-NOR [EUREF89] / UTM zone 33N + NN54 height',NULL,'EPSG','11023','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4493','compound_crs','EPSG','6173','EPSG','4067','EPSG','1153');
INSERT INTO "compound_crs" VALUES('EPSG','6174','ETRS89 / UTM zone 34N + NN54 height',NULL,'EPSG','25834','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6174','ETRS89-NOR [EUREF89] / UTM zone 34N + NN54 height',NULL,'EPSG','11024','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4494','compound_crs','EPSG','6174','EPSG','4068','EPSG','1153');
INSERT INTO "compound_crs" VALUES('EPSG','6175','ETRS89 / UTM zone 35N + NN54 height',NULL,'EPSG','25835','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6175','ETRS89-NOR [EUREF89] / UTM zone 35N + NN54 height',NULL,'EPSG','11025','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4495','compound_crs','EPSG','6175','EPSG','4069','EPSG','1153');
INSERT INTO "compound_crs" VALUES('EPSG','6176','ETRS89 / UTM zone 36N + NN54 height',NULL,'EPSG','25836','EPSG','5776',0);
INSERT INTO "compound_crs" VALUES('EPSG','6176','ETRS89-NOR [EUREF89] / UTM zone 36N + NN54 height',NULL,'EPSG','11026','EPSG','5776',0);
INSERT INTO "usage" VALUES('EPSG','4496','compound_crs','EPSG','6176','EPSG','3676','EPSG','1153');
INSERT INTO "compound_crs" VALUES('EPSG','6190','BD72 / Belgian Lambert 72 + Ostend height',NULL,'EPSG','31370','EPSG','5710',0);
INSERT INTO "usage" VALUES('EPSG','4507','compound_crs','EPSG','6190','EPSG','1347','EPSG','1142');
@@ -552,7 +552,7 @@ INSERT INTO "compound_crs" VALUES('EPSG','8814','NAD83 / Missouri Central + NAVD
INSERT INTO "usage" VALUES('EPSG','5993','compound_crs','EPSG','8814','EPSG','2218','EPSG','1142');
INSERT INTO "compound_crs" VALUES('EPSG','8815','NAD83 / Missouri West + NAVD88 height',NULL,'EPSG','26998','EPSG','5703',0);
INSERT INTO "usage" VALUES('EPSG','5994','compound_crs','EPSG','8815','EPSG','2220','EPSG','1142');
INSERT INTO "compound_crs" VALUES('EPSG','8912','CR-SIRGAS / CRTM05 + DACR52 height',NULL,'EPSG','8908','EPSG','8911',0);
INSERT INTO "compound_crs" VALUES('EPSG','8912','CR-SIRGAS epoch 2014.59 / CRTM05 + DACR52 height',NULL,'EPSG','8908','EPSG','8911',0);
INSERT INTO "usage" VALUES('EPSG','6028','compound_crs','EPSG','8912','EPSG','3232','EPSG','1142');
INSERT INTO "compound_crs" VALUES('EPSG','9286','ETRS89 + NAP height',NULL,'EPSG','4258','EPSG','5709',0);
INSERT INTO "usage" VALUES('EPSG','14121','compound_crs','EPSG','9286','EPSG','1172','EPSG','1026');
@@ -722,7 +722,7 @@ INSERT INTO "compound_crs" VALUES('EPSG','9870','MRH21 Grid + ODN height',NULL,'
INSERT INTO "usage" VALUES('EPSG','16942','compound_crs','EPSG','9870','EPSG','4652','EPSG','1141');
INSERT INTO "compound_crs" VALUES('EPSG','9881','MOLDOR11 Grid + ODN height',NULL,'EPSG','9880','EPSG','5701',0);
INSERT INTO "usage" VALUES('EPSG','16985','compound_crs','EPSG','9881','EPSG','4655','EPSG','1141');
INSERT INTO "compound_crs" VALUES('EPSG','9883','ETRS89 + CD Norway depth',NULL,'EPSG','4258','EPSG','9672',0);
INSERT INTO "compound_crs" VALUES('EPSG','9883','ETRS89-NOR [EUREF89] + CD Norway depth',NULL,'EPSG','10875','EPSG','9672',0);
INSERT INTO "usage" VALUES('EPSG','16974','compound_crs','EPSG','9883','EPSG','4656','EPSG','1198');
INSERT INTO "compound_crs" VALUES('EPSG','9897','LUREF / Luxembourg TM + NG95 height',NULL,'EPSG','2169','EPSG','5774',0);
INSERT INTO "usage" VALUES('EPSG','17304','compound_crs','EPSG','9897','EPSG','1146','EPSG','1029');
@@ -930,6 +930,8 @@ INSERT INTO "compound_crs" VALUES('EPSG','10920','CSRN2025 (NAD83 2011) + COH88
INSERT INTO "usage" VALUES('EPSG','23574','compound_crs','EPSG','10920','EPSG','1375','EPSG','1270');
INSERT INTO "compound_crs" VALUES('EPSG','11000','ETRS89-NOR [EUREF89] + SVD2024 height',NULL,'EPSG','10875','EPSG','10999',0);
INSERT INTO "usage" VALUES('EPSG','24134','compound_crs','EPSG','11000','EPSG','4831','EPSG','1270');
INSERT INTO "compound_crs" VALUES('EPSG','11158','RGM23 + IGN 2023 Mayotte height',NULL,'EPSG','10671','EPSG','11157',0);
INSERT INTO "usage" VALUES('EPSG','24603','compound_crs','EPSG','11158','EPSG','3340','EPSG','1270');
INSERT INTO "compound_crs" VALUES('EPSG','20001','ETRS89-NOR [EUREF89] + SVD2006 height',NULL,'EPSG','10875','EPSG','20000',0);
INSERT INTO "usage" VALUES('EPSG','17956','compound_crs','EPSG','20001','EPSG','4058','EPSG','1026');
INSERT INTO "compound_crs" VALUES('EPSG','20003','MWC18 Grid + ODN height',NULL,'EPSG','20002','EPSG','5701',0);
+8
View File
@@ -3797,4 +3797,12 @@ INSERT INTO "extent" VALUES('EPSG','4818','Kazakhstan - 72°E to 78°E','Kazakhs
INSERT INTO "extent" VALUES('EPSG','4819','Kazakhstan - 78°E to 84°E','Kazakhstan - 78°E to 84°E.',42.19,53.18,78.0,84.0,0);
INSERT INTO "extent" VALUES('EPSG','4820','Kazakhstan - east of 84°E','Kazakhstan - east of 84°E.',46.82,50.7,84.0,87.35,0);
INSERT INTO "extent" VALUES('EPSG','4821','USA - Gulf central planning area deep water','United States (USA) - central Gulf of Mexico outer continental shelf (GoM OCS) planning area, deep water portion.',25.58,29.35,-93.38,-86.53,0);
INSERT INTO "extent" VALUES('EPSG','4823','Norway - west of 0°E','Norway including Svalbard - west of 0°E.',63.47,80.49,-3.35,0.0,0);
INSERT INTO "extent" VALUES('EPSG','4824','Norway - 0°E to 6°E','Norway including Svalbard between 0°E and 6°E, onshore and offshore.',56.08,82.45,0.0,6.0,0);
INSERT INTO "extent" VALUES('EPSG','4825','Norway - 6°E to 12°E','Norway including Svalbard south of 84°N between 6°E and 12°E, onshore and offshore.',56.88,84.0,5.99,12.0,0);
INSERT INTO "extent" VALUES('EPSG','4826','Norway - 12°E to 18°E','Norway including Svalbard south of 84°N between 12°E and 18°E, onshore and offshore.',59.88,84.0,12.0,18.0,0);
INSERT INTO "extent" VALUES('EPSG','4827','Norway - 18°E to 24°E','Norway including Svalbard south of 84°N between 18°E and 24°E, onshore and offshore.',68.04,84.0,18.0,24.0,0);
INSERT INTO "extent" VALUES('EPSG','4828','Norway - 24°E to 30°E','Norway including Svalbard south of 84°N between 24°E and 30°E, onshore and offshore.',68.58,84.0,23.99,30.0,0);
INSERT INTO "extent" VALUES('EPSG','4829','Norway - 30°E to 36°E','Norway including Svalbard south of 84°N between 30°E and 36°E, onshore and offshore.',69.46,84.0,30.0,36.0,0);
INSERT INTO "extent" VALUES('EPSG','4830','Norway - east of 36°E','Norway including Svalbard - east of 36°E.',72.99,79.07,36.0,38.0,0);
INSERT INTO "extent" VALUES('EPSG','4831','Svalbard','Svalbard including Bear Island.',74.3208,81.8504,6.49005,33.50985,0);
+9 -3
View File
@@ -1812,11 +1812,11 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','8901','RGWF96 (lon-lat)',NULL,'geograp
INSERT INTO "usage" VALUES('EPSG','6017','geodetic_crs','EPSG','8901','EPSG','1255','EPSG','1189');
INSERT INTO "geodetic_crs" VALUES('EPSG','8902','RGWF96 (lon-lat)',NULL,'geographic 2D','EPSG','6424','EPSG','1223',NULL,0);
INSERT INTO "usage" VALUES('EPSG','6018','geodetic_crs','EPSG','8902','EPSG','1255','EPSG','1189');
INSERT INTO "geodetic_crs" VALUES('EPSG','8905','CR-SIRGAS',NULL,'geocentric','EPSG','6500','EPSG','1225',NULL,0);
INSERT INTO "geodetic_crs" VALUES('EPSG','8905','CR-SIRGAS epoch 2014.59',NULL,'geocentric','EPSG','6500','EPSG','1225',NULL,0);
INSERT INTO "usage" VALUES('EPSG','6021','geodetic_crs','EPSG','8905','EPSG','1074','EPSG','1027');
INSERT INTO "geodetic_crs" VALUES('EPSG','8906','CR-SIRGAS',NULL,'geographic 3D','EPSG','6423','EPSG','1225',NULL,0);
INSERT INTO "geodetic_crs" VALUES('EPSG','8906','CR-SIRGAS epoch 2014.59',NULL,'geographic 3D','EPSG','6423','EPSG','1225',NULL,0);
INSERT INTO "usage" VALUES('EPSG','6022','geodetic_crs','EPSG','8906','EPSG','1074','EPSG','1027');
INSERT INTO "geodetic_crs" VALUES('EPSG','8907','CR-SIRGAS',NULL,'geographic 2D','EPSG','6422','EPSG','1225',NULL,0);
INSERT INTO "geodetic_crs" VALUES('EPSG','8907','CR-SIRGAS epoch 2014.59',NULL,'geographic 2D','EPSG','6422','EPSG','1225',NULL,0);
INSERT INTO "usage" VALUES('EPSG','6023','geodetic_crs','EPSG','8907','EPSG','1074','EPSG','1183');
INSERT INTO "geodetic_crs" VALUES('EPSG','8915','SIRGAS-CON DGF00P01',NULL,'geocentric','EPSG','6500','EPSG','1227',NULL,0);
INSERT INTO "usage" VALUES('EPSG','6029','geodetic_crs','EPSG','8915','EPSG','4530','EPSG','1027');
@@ -2442,6 +2442,12 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','10967','NATRF2022',NULL,'geographic 3D
INSERT INTO "usage" VALUES('EPSG','23624','geodetic_crs','EPSG','10967','EPSG','4803','EPSG','1027');
INSERT INTO "geodetic_crs" VALUES('EPSG','10968','NATRF2022',NULL,'geographic 2D','EPSG','6422','EPSG','1422',NULL,0);
INSERT INTO "usage" VALUES('EPSG','23625','geodetic_crs','EPSG','10968','EPSG','4803','EPSG','1183');
INSERT INTO "geodetic_crs" VALUES('EPSG','11041','CR-SIRGAS epoch 2019.24',NULL,'geocentric','EPSG','6500','EPSG','1428',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24176','geodetic_crs','EPSG','11041','EPSG','1074','EPSG','1027');
INSERT INTO "geodetic_crs" VALUES('EPSG','11042','CR-SIRGAS epoch 2019.24',NULL,'geographic 3D','EPSG','6423','EPSG','1428',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24178','geodetic_crs','EPSG','11042','EPSG','1074','EPSG','1027');
INSERT INTO "geodetic_crs" VALUES('EPSG','11043','CR-SIRGAS epoch 2019.24',NULL,'geographic 2D','EPSG','6422','EPSG','1428',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24179','geodetic_crs','EPSG','11043','EPSG','1074','EPSG','1183');
INSERT INTO "geodetic_crs" VALUES('EPSG','20033','MWC18-IRF',NULL,'geographic 2D','EPSG','6422','EPSG','1324',NULL,0);
INSERT INTO "usage" VALUES('EPSG','18335','geodetic_crs','EPSG','20033','EPSG','4666','EPSG','1141');
INSERT INTO "geodetic_crs" VALUES('EPSG','20039','SIRGAS-Chile 2021',NULL,'geocentric','EPSG','6500','EPSG','1327',NULL,0);
+3 -1
View File
@@ -240,7 +240,7 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','1221','North American Datum of 1983
INSERT INTO "usage" VALUES('EPSG','13273','geodetic_datum','EPSG','1221','EPSG','4167','EPSG','1027');
INSERT INTO "geodetic_datum" VALUES('EPSG','1223','Reseau Geodesique de Wallis et Futuna 1996',NULL,'EPSG','7019','EPSG','8901','1996-01-01',NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES('EPSG','13275','geodetic_datum','EPSG','1223','EPSG','1255','EPSG','1027');
INSERT INTO "geodetic_datum" VALUES('EPSG','1225','CR-SIRGAS',NULL,'EPSG','7019','EPSG','8901','2018-04-17',NULL,NULL,NULL,NULL,0);
INSERT INTO "geodetic_datum" VALUES('EPSG','1225','CR-SIRGAS epoch 2014.59',NULL,'EPSG','7019','EPSG','8901','2018-04-17',NULL,NULL,NULL,2014.59,0);
INSERT INTO "usage" VALUES('EPSG','13277','geodetic_datum','EPSG','1225','EPSG','1074','EPSG','1027');
INSERT INTO "geodetic_datum" VALUES('EPSG','1227','SIRGAS Continuously Operating Network DGF00P01',NULL,'EPSG','7019','EPSG','8901','2000-05-01',2000.4,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES('EPSG','13279','geodetic_datum','EPSG','1227','EPSG','4530','EPSG','1027');
@@ -484,6 +484,8 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','1420','Greenland Reference 1996 (199
INSERT INTO "usage" VALUES('EPSG','23616','geodetic_datum','EPSG','1420','EPSG','1107','EPSG','1027');
INSERT INTO "geodetic_datum" VALUES('EPSG','1422','North American Terrestrial Reference Frame of 2022',NULL,'EPSG','7019','EPSG','8901','2025-06-16',NULL,NULL,NULL,2020.0,0);
INSERT INTO "usage" VALUES('EPSG','23622','geodetic_datum','EPSG','1422','EPSG','4803','EPSG','1027');
INSERT INTO "geodetic_datum" VALUES('EPSG','1428','CR-SIRGAS epoch 2019.24',NULL,'EPSG','7019','EPSG','8901','2020-09-04',NULL,NULL,NULL,2019.24,0);
INSERT INTO "usage" VALUES('EPSG','24187','geodetic_datum','EPSG','1428','EPSG','1074','EPSG','1027');
INSERT INTO "geodetic_datum" VALUES('EPSG','6001','Not specified (based on Airy 1830 ellipsoid)',NULL,'EPSG','7001','EPSG','8901',NULL,NULL,NULL,NULL,NULL,1);
INSERT INTO "usage" VALUES('EPSG','13422','geodetic_datum','EPSG','6001','EPSG','1263','EPSG','1213');
INSERT INTO "geodetic_datum" VALUES('EPSG','6002','Not specified (based on Airy Modified 1849 ellipsoid)',NULL,'EPSG','7002','EPSG','8901',NULL,NULL,NULL,NULL,NULL,1);
+2
View File
@@ -104,6 +104,7 @@ VALUES
-- cz_cuzk - ČÚZK
('CR2005_GTX.gtx','cz_cuzk_CR-2005.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/cz_cuzk_CR-2005.tif',1,1,NULL),
('cz_cuzk_table_-y-x_3_v1710.tif','cz_cuzk_table_-y-x_3_v1710.tif',NULL,'GTiff','gridshift',0,NULL,'https://cdn.proj.org/cz_cuzk_table_-y-x_3_v1710.tif',1,1,NULL),
-- de_adv - Arbeitsgemeinschaft der Vermessungsverwaltungender der Länder der Bundesrepublik Deutschland (AdV)
('BETA2007.gsb','de_adv_BETA2007.tif','BETA2007.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/de_adv_BETA2007.tif',1,1,NULL),
@@ -223,6 +224,7 @@ VALUES
('ggg00.txt','fr_ign_ggg00v2.tif','ggg00v2.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggg00v2.tif',1,1,NULL),
('ggguy00.txt','fr_ign_ggguy15.tif','ggguy15.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggguy15.tif',1,1,NULL),
('ggm00.txt','fr_ign_ggm00v2.tif','ggm00v2.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggm00v2.tif',1,1,NULL),
('GGM23V2.tac','fr_ign_ggm23v2.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggm23v2.tif',1,1,NULL),
('GGSPM06v1.mnt','fr_ign_ggspm06v1.tif','ggspm06v1.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggspm06v1.tif',1,1,NULL),
('NOT-YET-IN-GRID-TRANSFORMATION-fr_ign_CGVD2013RGSPM06.tif','fr_ign_CGVD2013RGSPM06.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_CGVD2013RGSPM06.tif',1,1,NULL),
('NOT-YET-IN-GRID-TRANSFORMATION-fr_ign_ggpf02-Maiao.tif','fr_ign_ggpf02-Maiao.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggpf02-Maiao.tif',1,1,NULL),
+19 -13
View File
@@ -891,9 +891,9 @@ INSERT INTO "grid_transformation" VALUES('EPSG','9467','GDA94 to GDA94 + AHD hei
INSERT INTO "usage" VALUES('EPSG','14147','grid_transformation','EPSG','9467','EPSG','2575','EPSG','1133');
INSERT INTO "grid_transformation" VALUES('EPSG','9483','Canada velocity grid v7','File initially published with name cvg70.cvb, later renamed to NAD83v70VG.gvb with no change of content. Replaces Canada velocity grid v6 (code 8676). Replaced by Canada velocity grid v8 (code 10707). Although the interpolation CRS is given as NAD83(CSRS)v7 (also known as NAD83(CSRS) 2010), any version of NAD83(CSRS) may be used for grid interpolation without significant error.','EPSG','1141','Point motion (geog3D domain) using NEU velocity grid (NTv2_Vel)','EPSG','8254','EPSG','8254',0.01,'EPSG','1050','Point motion velocity grid file','NAD83v70VG.gvb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','8255','NRC-Can cvg7.0',0);
INSERT INTO "usage" VALUES('EPSG','14214','grid_transformation','EPSG','9483','EPSG','4754','EPSG','1131');
INSERT INTO "grid_transformation" VALUES('EPSG','9484','ETRS89 to NN54 height (1)','For reversible alternative to this transformation see ETRS89 to ETRS89 + NN54 height (1) (code 9594).','EPSG','1047','Geographic3D to GravityRelatedHeight (Gravsoft)','EPSG','4937','EPSG','5776',0.02,'EPSG','8666','Geoid (height correction) model file','href2008a.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor 2008',0);
INSERT INTO "grid_transformation" VALUES('EPSG','9484','ETRS89-NOR [EUREF89] to NN54 height (1)','For reversible alternative to this transformation see ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + NN54 height (1) (code 9594).','EPSG','1047','Geographic3D to GravityRelatedHeight (Gravsoft)','EPSG','10874','EPSG','5776',0.02,'EPSG','8666','Geoid (height correction) model file','href2008a.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor 2008',0);
INSERT INTO "usage" VALUES('EPSG','14374','grid_transformation','EPSG','9484','EPSG','1352','EPSG','1133');
INSERT INTO "grid_transformation" VALUES('EPSG','9485','ETRS89 to NN2000 height (1)','For reversible alternative to this transformation see ETRS89 to ETRS89 + NN2000 height (1) (code 9593).','EPSG','1047','Geographic3D to GravityRelatedHeight (Gravsoft)','EPSG','4937','EPSG','5941',0.02,'EPSG','8666','Geoid (height correction) model file','HREF2018B_NN2000_EUREF89.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor 2018',0);
INSERT INTO "grid_transformation" VALUES('EPSG','9485','ETRS89-NOR [EUREF89] to NN2000 height (1)','For reversible alternative to this transformation see ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + NN2000 height (1) (code 9593).','EPSG','1047','Geographic3D to GravityRelatedHeight (Gravsoft)','EPSG','10874','EPSG','5941',0.02,'EPSG','8666','Geoid (height correction) model file','HREF2018B_NN2000_EUREF89.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor 2018',0);
INSERT INTO "usage" VALUES('EPSG','14376','grid_transformation','EPSG','9485','EPSG','1352','EPSG','1133');
INSERT INTO "grid_transformation" VALUES('EPSG','9496','MGI 1901 to SRB-ETRS89 (9)','','EPSG','9615','NTv2','EPSG','3906','EPSG','8685',0.03,'EPSG','8656','Latitude and longitude difference file','MGI1901_TO_SRBETRS89_NTv2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'RGZ-Srb 0.1m 2020',0);
INSERT INTO "usage" VALUES('EPSG','14226','grid_transformation','EPSG','9496','EPSG','4543','EPSG','1185');
@@ -977,9 +977,9 @@ INSERT INTO "grid_transformation" VALUES('EPSG','9591','ETRS89 to ETRS89 + Malin
INSERT INTO "usage" VALUES('EPSG','15081','grid_transformation','EPSG','9591','EPSG','1305','EPSG','1270');
INSERT INTO "grid_transformation" VALUES('EPSG','9592','ETRS89 to ETRS89 + Belfast height (2)','Reversible alternative to ETRS89 to Belfast height (2) (code 7958).','EPSG','1096','Geog3D to Geog2D+GravityRelatedHeight (OSGM15-Ire)','EPSG','4937','EPSG','9450',0.014,'EPSG','8666','Geoid (height correction) model file','OSGM15_Belfast.gri',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','4258','OS-UK NI 2015',0);
INSERT INTO "usage" VALUES('EPSG','14504','grid_transformation','EPSG','9592','EPSG','2530','EPSG','1270');
INSERT INTO "grid_transformation" VALUES('EPSG','9593','ETRS89 to ETRS89 + NN2000 height (1)','Reversible alternative to ETRS89 to NN2000 height (1) (code 9485).','EPSG','1093','Geog3D to Geog2D+GravityRelatedHeight (Gravsoft)','EPSG','4937','EPSG','5942',0.02,'EPSG','8666','Geoid (height correction) model file','HREF2018B_NN2000_EUREF89.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','4258','SK-Nor 2018',0);
INSERT INTO "grid_transformation" VALUES('EPSG','9593','ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + NN2000 height (1)','Reversible alternative to ETRS89-NOR [EUREF89] to NN2000 height (1) (code 9485). The interpolation CRS is EUREF89 but using any realization of ETRS89 including ensemble-based EPSG:4258 is adequate for grid interpolation.','EPSG','1093','Geog3D to Geog2D+GravityRelatedHeight (Gravsoft)','EPSG','10874','EPSG','5942',0.02,'EPSG','8666','Geoid (height correction) model file','HREF2018B_NN2000_EUREF89.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','10875','SK-Nor 2018',0);
INSERT INTO "usage" VALUES('EPSG','14465','grid_transformation','EPSG','9593','EPSG','1352','EPSG','1270');
INSERT INTO "grid_transformation" VALUES('EPSG','9594','ETRS89 to ETRS89 + NN54 height (1)','Reversible alternative to ETRS89 to NN54 height (1) (code 9484).','EPSG','1093','Geog3D to Geog2D+GravityRelatedHeight (Gravsoft)','EPSG','4937','EPSG','6144',0.02,'EPSG','8666','Geoid (height correction) model file','href2008a.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','4258','SK-Nor 2008',0);
INSERT INTO "grid_transformation" VALUES('EPSG','9594','ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + NN54 height (1)','Reversible alternative to ETRS89-NOR [EUREF89] to NN54 height (1) (code 9484). The interpolation CRS is EUREF89 but using any realization of ETRS89 including ensemble-based EPSG:4258 is adequate for grid interpolation.','EPSG','1093','Geog3D to Geog2D+GravityRelatedHeight (Gravsoft)','EPSG','10874','EPSG','6144',0.02,'EPSG','8666','Geoid (height correction) model file','href2008a.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','10875','SK-Nor 2008',0);
INSERT INTO "usage" VALUES('EPSG','14464','grid_transformation','EPSG','9594','EPSG','1352','EPSG','1270');
INSERT INTO "grid_transformation" VALUES('EPSG','9595','NAD83(2011) to NAD83(2011) + NAVD88 height (3)','Reversible alternative to NAD83(2011) to NAVD88 height (3) (code 9229). Uses Geoid18 hybrid model. Replaces 12B model. See information source for further information.','EPSG','1135','Geog3D to Geog2D+GravityRelatedHeight (NGS bin)','EPSG','6319','EPSG','6349',0.015,'EPSG','8666','Geoid (height correction) model file','g2018u0.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','6318','NGS-US Conus 18',0);
INSERT INTO "usage" VALUES('EPSG','14853','grid_transformation','EPSG','9595','EPSG','1323','EPSG','1270');
@@ -1183,9 +1183,9 @@ INSERT INTO "grid_transformation" VALUES('EPSG','9877','RGF93 v2b to RGF93 v2b +
INSERT INTO "usage" VALUES('EPSG','16932','grid_transformation','EPSG','9877','EPSG','1326','EPSG','1270');
INSERT INTO "grid_transformation" VALUES('EPSG','9878','ETRS89 to MOLDOR11-IRF (1)','In conjunction with the MOLDOR11-TM map projection (code 9879) applied to MOLDOR11-IRF (code 9871), emulates the MOLDOR11 Snake projection. Applied to ETRS89 (as realized through the OSNet v2009 CORS) defines MOLDOR11-IRF hence is errorless.','EPSG','9615','NTv2','EPSG','4258','EPSG','9871',0.0,'EPSG','8656','Latitude and longitude difference file','TN15-ETRS89-to-MOLDOR11-IRF.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NR-Gbr MOLDOR OSNet2009',0);
INSERT INTO "usage" VALUES('EPSG','16955','grid_transformation','EPSG','9878','EPSG','4655','EPSG','1141');
INSERT INTO "grid_transformation" VALUES('EPSG','9884','ETRS89 to CD Norway depth (1)','For reversible alternative to this transformation see ETRS89 to ETRS89 + CD Norway depth (1) (code 9885). Replaced by ETRS89 to CD Norway depth (2) (model "CD Norway 2021b", code 10130).','EPSG','1109','Geographic3D to Depth (Gravsoft)','EPSG','4937','EPSG','9672',999.0,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2021a.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor 2021',0);
INSERT INTO "grid_transformation" VALUES('EPSG','9884','ETRS89-NOR [EUREF89] to CD Norway depth (1)','For reversible alternative to this transformation see ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + CD Norway depth (1) (code 9885). Replaced by ETRS89-NOR [EUREF89] to CD Norway depth (2) (model "CD Norway 2021b", code 10130).','EPSG','1109','Geographic3D to Depth (Gravsoft)','EPSG','10874','EPSG','9672',999.0,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2021a.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor 2021',0);
INSERT INTO "usage" VALUES('EPSG','16982','grid_transformation','EPSG','9884','EPSG','4656','EPSG','1277');
INSERT INTO "grid_transformation" VALUES('EPSG','9885','ETRS89 to ETRS89 + CD Norway depth (1)','Reversible alternative to ETRS89 to CD Norway depth (1) (code 9884). Replaced by ETRS89 to ETRS89 + CD Norway depth (2) (model "CD Norway 2021b", code 10133).','EPSG','1110','Geog3D to Geog2D+Depth (Gravsoft)','EPSG','4937','EPSG','9883',999.0,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2021a.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','4258','SK-Nor 2021',0);
INSERT INTO "grid_transformation" VALUES('EPSG','9885','ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + CD Norway depth (1)','Reversible alternative to ETRS89-NOR [EUREF89] to CD Norway depth (1) (code 9884). Replaced by ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + CD Norway depth (2) (model "CD Norway 2021b", code 10133). The interpolation CRS is EUREF89 but using any realization of ETRS89 including ensemble-based EPSG:4258 is adequate for grid interpolation.','EPSG','1110','Geog3D to Geog2D+Depth (Gravsoft)','EPSG','10874','EPSG','9883',999.0,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2021a.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','10875','SK-Nor 2021',0);
INSERT INTO "usage" VALUES('EPSG','16984','grid_transformation','EPSG','9885','EPSG','4656','EPSG','1272');
INSERT INTO "grid_transformation" VALUES('EPSG','9886','NAD27 to NAD83(CSRS)v2 (2)','Can be taken as an approximate transformation NAD27 to WGS 84 - see code 1703.','EPSG','9615','NTv2','EPSG','4267','EPSG','8237',1.5,'EPSG','8656','Latitude and longitude difference file','SK27-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK PMC-Can SK',0);
INSERT INTO "usage" VALUES('EPSG','16978','grid_transformation','EPSG','9886','EPSG','2375','EPSG','1151');
@@ -1483,9 +1483,9 @@ INSERT INTO "grid_transformation" VALUES('EPSG','10128','NAD83(CSRS)v4 to NAD83(
INSERT INTO "usage" VALUES('EPSG','18287','grid_transformation','EPSG','10128','EPSG','1061','EPSG','1270');
INSERT INTO "grid_transformation" VALUES('EPSG','10129','NAD83(CSRS)v3 to NAD83(CSRS)v3 + CGVD2013a(1997) height (1)','Reversible alternative to NAD83(CSRS)v3 to CGVD2013a(1997) height (1) (code 10111).','EPSG','1090','Geog3D to Geog2D+GravityRelatedHeight (NRCan byn)','EPSG','8239','EPSG','20038',0.05,'EPSG','8666','Geoid (height correction) model file','CGG2013an83.byn',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','8240','NR-Can CGG2013a 1997',0);
INSERT INTO "usage" VALUES('EPSG','18285','grid_transformation','EPSG','10129','EPSG','1061','EPSG','1270');
INSERT INTO "grid_transformation" VALUES('EPSG','10130','ETRS89 to CD Norway depth (2)','Replaces model "CD Norway 2021" (also referred to as model "CD Norway 2021a") (code 9884). Replaced by model "CD Norway 2023a" (code 10504). For reversible alternative to this transformation see ETRS89 to ETRS89 + CD Norway depth (2) (code 10133).','EPSG','1109','Geographic3D to Depth (Gravsoft)','EPSG','4937','EPSG','9672',0.5,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2021b.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor 2021b',0);
INSERT INTO "grid_transformation" VALUES('EPSG','10130','ETRS89-NOR [EUREF89] to CD Norway depth (2)','Replaces model "CD Norway 2021" (also referred to as model "CD Norway 2021a") (code 9884). Replaced by model "CD Norway 2023a" (code 10504). For reversible alternative to this transformation see ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + CD Norway depth (2) (code 10133).','EPSG','1109','Geographic3D to Depth (Gravsoft)','EPSG','10874','EPSG','9672',0.5,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2021b.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor 2021b',0);
INSERT INTO "usage" VALUES('EPSG','18348','grid_transformation','EPSG','10130','EPSG','4656','EPSG','1277');
INSERT INTO "grid_transformation" VALUES('EPSG','10133','ETRS89 to ETRS89 + CD Norway depth (2)','Reversible alternative to ETRS89 to CD Norway depth (2) (code 10130). Replaces ETRS89 to ETRS89 + CD Norway depth (1) (code 9885). Replaced by ETRS89 to ETRS89 + CD Norway depth (3) (code 10505).','EPSG','1110','Geog3D to Geog2D+Depth (Gravsoft)','EPSG','4937','EPSG','9883',0.5,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2021b.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','4258','SK-Nor 2021b',0);
INSERT INTO "grid_transformation" VALUES('EPSG','10133','ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + CD Norway depth (2)','Reversible alternative to ETRS89-NOR [EUREF89] to CD Norway depth (2) (code 10130). Replaces ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + CD Norway depth (1) (code 9885). Replaced by ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + CD Norway depth (3) (code 10505). The interpolation CRS is EUREF89 but using any realization of ETRS89 including ensemble-based EPSG:4258 is adequate for grid interpolation.','EPSG','1110','Geog3D to Geog2D+Depth (Gravsoft)','EPSG','10874','EPSG','9883',0.5,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2021b.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','10875','SK-Nor 2021b',0);
INSERT INTO "usage" VALUES('EPSG','18347','grid_transformation','EPSG','10133','EPSG','4656','EPSG','1272');
INSERT INTO "grid_transformation" VALUES('EPSG','10144','SRGI2013 to INAGeoid2020 v2 height (1)','Defines INAGeoid2020 v2 reference surface and as such is considered to be errorless. Internal accuracy is between 0.05 and 0.3m on the large islands of Indonesia. Replaces INAGeoid2020 v1 (CT code 9305).','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','9469','EPSG','20036',0.0,'EPSG','8666','Geoid (height correction) model file','INAGEOID2020v2.gtx',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'BIG-Idn INAGeoid20 v2',0);
INSERT INTO "usage" VALUES('EPSG','18445','grid_transformation','EPSG','10144','EPSG','1122','EPSG','1133');
@@ -1611,17 +1611,17 @@ INSERT INTO "grid_transformation" VALUES('EPSG','10493','ETRS89 to DVR90(2023) h
INSERT INTO "usage" VALUES('EPSG','20438','grid_transformation','EPSG','10493','EPSG','3237','EPSG','1133');
INSERT INTO "grid_transformation" VALUES('EPSG','10494','ETRS89 to ETRS89 + DVR90(2023) height (1)','Reversible alternative to ETRS89 to DVR90(2023) height (1) (code 10493).','EPSG','1124','Geog3D to Geog2D+GravityRelatedHeight (gtg)','EPSG','4937','EPSG','10488',0.01,'EPSG','8666','Geoid (height correction) model file','dvr90_2023.tif',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','4258','SDFI-Dnk 2023',0);
INSERT INTO "usage" VALUES('EPSG','20439','grid_transformation','EPSG','10494','EPSG','3237','EPSG','1270');
INSERT INTO "grid_transformation" VALUES('EPSG','10504','ETRS89 to CD Norway depth (3)','Replaces model "CD Norway 2021b" (code 10130). Replaced by model "CD Norway 2023b" (code 10509). For reversible alternative to this transformation see CT code 10505.','EPSG','1109','Geographic3D to Depth (Gravsoft)','EPSG','4937','EPSG','9672',0.5,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2023a.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor 2023a',0);
INSERT INTO "grid_transformation" VALUES('EPSG','10504','ETRS89-NOR [EUREF89] to CD Norway depth (3)','Replaces model "CD Norway 2021b" (code 10130). Replaced by model "CD Norway 2023b" (code 10509). For reversible alternative to this transformation see CT code 10505.','EPSG','1109','Geographic3D to Depth (Gravsoft)','EPSG','10874','EPSG','9672',0.5,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2023a.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor 2023a',0);
INSERT INTO "usage" VALUES('EPSG','20539','grid_transformation','EPSG','10504','EPSG','4656','EPSG','1277');
INSERT INTO "grid_transformation" VALUES('EPSG','10505','ETRS89 to ETRS89 + CD Norway depth (3)','Reversible alternative to ETRS89 to CD Norway depth (3) (CT code 10504). Replaces ETRS89 to ETRS89 + CD Norway depth (2) (model 2021b, CT code 10133). Replaced by ETRS89 to ETRS89 + CD Norway depth (4) (model 2023b, CT code 10510).','EPSG','1110','Geog3D to Geog2D+Depth (Gravsoft)','EPSG','4937','EPSG','9883',0.5,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2023a.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','4258','SK-Nor 2023a',0);
INSERT INTO "grid_transformation" VALUES('EPSG','10505','ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + CD Norway depth (3)','Reversible alternative to ETRS89-NOR [EUREF89] to CD Norway depth (3) (CT code 10504). Replaces ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + CD Norway depth (2) (model 2021b, CT code 10133). Replaced by ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + CD Norway depth (4) (model 2023b, CT code 10510). The interpolation CRS is EUREF89 but using any realization of ETRS89 including ensemble-based EPSG:4258 is adequate for grid interpolation.','EPSG','1110','Geog3D to Geog2D+Depth (Gravsoft)','EPSG','10874','EPSG','9883',0.5,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2023a.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','10875','SK-Nor 2023a',0);
INSERT INTO "usage" VALUES('EPSG','20540','grid_transformation','EPSG','10505','EPSG','4656','EPSG','1272');
INSERT INTO "grid_transformation" VALUES('EPSG','10506','RGF93 v2b to NGF-IGN78 height (3)','Replaces RAC09 model [RGF93 v2 to NGF-IGN78 height (2) (code 8372)]. Accuracy at each grid node is given in the geoid model file. Bilinear interpolation used. For reversible alternative see RGF93 v2b to RGF93 v2b + NGF-IGN78 height (3) (code 10508).','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','9781','EPSG','5721',0.02,'EPSG','8666','Geoid (height correction) model file','RAC23.mnt',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN Fra Cor 23',0);
INSERT INTO "usage" VALUES('EPSG','20497','grid_transformation','EPSG','10506','EPSG','1327','EPSG','1133');
INSERT INTO "grid_transformation" VALUES('EPSG','10508','RGF93 v2b to RGF93 v2b + NGF-IGN78 height (3)','Reversible alternative to RGF93 v2b to NGF-IGN78 height (3) (code 10506).','EPSG','1095','Geog3D to Geog2D+GravityRelatedHeight (IGN2009)','EPSG','9781','EPSG','10507',0.02,'EPSG','8666','Geoid (height correction) model file','RAC23.mnt',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','9782','IGN Fra Cor 23',0);
INSERT INTO "usage" VALUES('EPSG','20535','grid_transformation','EPSG','10508','EPSG','1327','EPSG','1270');
INSERT INTO "grid_transformation" VALUES('EPSG','10509','ETRS89 to CD Norway depth (4)','Replaces ETRS89 to CD Norway depth (3) (code 10504). Accompanying file ...v2023b_standarddeviation.bin contains first estimate of SD of model. For reversible alternative to this transformation see ETRS89 to ETRS89 + CD Norway depth (2) (code 10510).','EPSG','1109','Geographic3D to Depth (Gravsoft)','EPSG','4937','EPSG','9672',0.5,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2023b.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor 2023b',0);
INSERT INTO "grid_transformation" VALUES('EPSG','10509','ETRS89-NOR [EUREF89] to CD Norway depth (4)','Replaces ETRS89-NOR [EUREF89] to CD Norway depth (3) (code 10504). Accompanying file ...v2023b_standarddeviation.bin contains first estimate of SD of model. For reversible alternative to this transformation see ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + CD Norway depth (2) (code 10510).','EPSG','1109','Geographic3D to Depth (Gravsoft)','EPSG','10874','EPSG','9672',0.5,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2023b.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor 2023b',0);
INSERT INTO "usage" VALUES('EPSG','20537','grid_transformation','EPSG','10509','EPSG','4656','EPSG','1277');
INSERT INTO "grid_transformation" VALUES('EPSG','10510','ETRS89 to ETRS89 + CD Norway depth (4)','Reversible alternative to ETRS89 to CD Norway depth (4) (code 10509). Accompanying file ...v2023b_standarddeviation.bin contains first estimate of SD of model. Replaces ETRS89 to ETRS89 + CD Norway depth (3) (code 10133).','EPSG','1110','Geog3D to Geog2D+Depth (Gravsoft)','EPSG','4937','EPSG','9883',0.5,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2023b.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','4258','SK-Nor 2023b',0);
INSERT INTO "grid_transformation" VALUES('EPSG','10510','ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + CD Norway depth (4)','Reversible alternative to ETRS89-NOR [EUREF89] to CD Norway depth (4) (code 10509). Accompanying file ...v2023b_standarddeviation.bin contains first estimate of SD of model. Replaces ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + CD Norway depth (3) (code 10133). The interpolation CRS is EUREF89 but using any realization of ETRS89 including ensemble-based EPSG:4258 is adequate for grid interpolation.','EPSG','1110','Geog3D to Geog2D+Depth (Gravsoft)','EPSG','10874','EPSG','9883',0.5,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2023b.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','10875','SK-Nor 2023b',0);
INSERT INTO "usage" VALUES('EPSG','20541','grid_transformation','EPSG','10510','EPSG','4656','EPSG','1272');
INSERT INTO "grid_transformation" VALUES('EPSG','10518','CGVD28 height to CGVD2013a(1997) height (2)','Equal to HT2_1997 hybrid geoid model minus CGG2013a geoid model (CT 9983 minus CT 10111). Specified interpolation CRS is NAD83(CSRS)v3, but NAD83(CSRS)v2 or any later realization may be used without error. See also CT 10617 from CGVD28(v2.0) height.','EPSG','1126','Vertical change by geoid grid difference (NRCan)','EPSG','5713','EPSG','20035',0.05,'EPSG','1063','Geoid model difference file','HT2_1997_CGG2013a.byn',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','8240','NR-Can HT2 1997',0);
INSERT INTO "usage" VALUES('EPSG','20892','grid_transformation','EPSG','10518','EPSG','1289','EPSG','1059');
@@ -1826,7 +1826,7 @@ INSERT INTO "grid_transformation" VALUES('EPSG','10841','RGAF09 to IGN 1988 SM h
INSERT INTO "usage" VALUES('EPSG','23621','grid_transformation','EPSG','10841','EPSG','2890','EPSG','1133');
INSERT INTO "grid_transformation" VALUES('EPSG','10850','ETRS89 to EWR3-IRF (1)','In conjunction with the EWR3-TM map projection (code 9765) applied to EWR3-IRF (code 10849), emulates the EWR3 Snake projection. Applied to ETRS89 (as realized through the OSNet v2009 CORS) defines EWR3-IRF hence is errorless. In 2024 the EWR2 Grid (ETRS89 / EWR2 SnakeGrid) was extended eastwards as the EWR3 Grid (ETRS89 / EWR3 SnakeGrid). To the west of Bedford the EWR2 Grid is an exact subset of the EWR3 Grid; over this extent the EWR3 Grid replaces the EWR2 Grid. The EWR2 emulation file TN15-ETRS89-to-EWR2-IRF.gsb (CT code 9764) is a subset of this EWR3 emulation file TN15-ETRS89-to-EWR3-IRF.gsb; west of Bedford the content of the two files is identical.','EPSG','9615','NTv2','EPSG','4258','EPSG','10849',0.0,'EPSG','8656','Latitude and longitude difference file','TN15-ETRS89-to-EWR3-IRF.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NR-Gbr EWR3 OSNet2009',0);
INSERT INTO "usage" VALUES('EPSG','22765','grid_transformation','EPSG','10850','EPSG','4799','EPSG','1141');
INSERT INTO "grid_transformation" VALUES('EPSG','10854','ETRS89 to NGO 1948 (2)','','EPSG','1145','Geographic2D Offsets by TIN Interpolation (JSON)','EPSG','4258','EPSG','4273',0.1,'EPSG','1064','TIN offset file','no_kv_ETRS89NO_NGO48_TIN.json',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor',0);
INSERT INTO "grid_transformation" VALUES('EPSG','10854','ETRS89-NOR [EUREF89] to NGO 1948 (2)','','EPSG','1145','Geographic2D Offsets by TIN Interpolation (JSON)','EPSG','10875','EPSG','4273',0.1,'EPSG','1064','TIN offset file','no_kv_ETRS89NO_NGO48_TIN.json',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SK-Nor',0);
INSERT INTO "usage" VALUES('EPSG','22776','grid_transformation','EPSG','10854','EPSG','1352','EPSG','1031');
INSERT INTO "grid_transformation" VALUES('EPSG','10855','ETRS89/DREF91/2016 to GNTRANS2016 height (1)','Defines GNTRANS2016 height. The same geoid model is used to derive approximate DHHN2016 heights.','EPSG','1082','Geographic3D to GravityRelatedHeight (txt)','EPSG','10283','EPSG','9927',0.02,'EPSG','8666','Geoid (height correction) model file','GCG2016.txt',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DB-Deu 2016',0);
INSERT INTO "usage" VALUES('EPSG','22778','grid_transformation','EPSG','10855','EPSG','3339','EPSG','1133');
@@ -1860,6 +1860,12 @@ INSERT INTO "grid_transformation" VALUES('EPSG','11003','ETRS89-NOR [EUREF89] to
INSERT INTO "usage" VALUES('EPSG','24138','grid_transformation','EPSG','11003','EPSG','4831','EPSG','1133');
INSERT INTO "grid_transformation" VALUES('EPSG','11004','ETRS89-NOR [EUREF89] to ETRS89-NOR [EUREF89] + SVD2024 height (1)','Reversible alternative to ETRS89-NOR [EUREF89] to SVD2024 height (1) (code 11003). The interpolation CRS is EUREF89 but using any realization of ETRS89 including ensemble-based EPSG:4258 is adequate for grid interpolation.','EPSG','1093','Geog3D to Geog2D+GravityRelatedHeight (Gravsoft)','EPSG','10874','EPSG','11000',1.0,'EPSG','8666','Geoid (height correction) model file','Href_Svalbard_EUREF89_EGG2015_2024.bin',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','10875','NMA-Sjm SV 2024',0);
INSERT INTO "usage" VALUES('EPSG','24140','grid_transformation','EPSG','11004','EPSG','4831','EPSG','1270');
INSERT INTO "grid_transformation" VALUES('EPSG','11156','NN54 height to NN2000 height (1)','','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','5776','EPSG','5941',0.03,'EPSG','8732','Vertical offset file','NNTrans2018B.gtx',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','10875','SK-Nor 2018',0);
INSERT INTO "usage" VALUES('EPSG','24564','grid_transformation','EPSG','11156','EPSG','1352','EPSG','1059');
INSERT INTO "grid_transformation" VALUES('EPSG','11159','RGM23 to IGN 2023 Mayotte height (1)','For reversible alternative to this transformation see RGM23 to RGM23 + IGN 2023 Mayotte height (1) (code 11160).','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','10670','EPSG','11157',0.1,'EPSG','8666','Geoid (height correction) model file','GGM23V2.tac',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Myt 2023',0);
INSERT INTO "usage" VALUES('EPSG','24616','grid_transformation','EPSG','11159','EPSG','3340','EPSG','1133');
INSERT INTO "grid_transformation" VALUES('EPSG','11160','RGM23 to RGM23 + IGN 2023 Mayotte height (1)','Reversible alternative to RGM23 to IGN 2023 Mayotte height (1) (code 11159).','EPSG','1095','Geog3D to Geog2D+GravityRelatedHeight (IGN2009)','EPSG','10670','EPSG','11158',0.1,'EPSG','8666','Geoid (height correction) model file','GGM23V2.tac',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG','10671','IGN-Myt 2023',0);
INSERT INTO "usage" VALUES('EPSG','24621','grid_transformation','EPSG','11160','EPSG','3340','EPSG','1270');
INSERT INTO "grid_transformation" VALUES('EPSG','15486','CH1903 to CH1903+ (1)','For improved accuracy (0.01m) use CHENyx06 interpolation programme FINELTRA. File CHENyx06 replaced by CHENyx06a; there is a small area at the border of the data where some more real data has been introduced. swisstopo consider the change insignificant.','EPSG','9615','NTv2','EPSG','4149','EPSG','4150',0.2,'EPSG','8656','Latitude and longitude difference file','CHENyx06a.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'BfL-Che',0);
INSERT INTO "usage" VALUES('EPSG','11497','grid_transformation','EPSG','15486','EPSG','1286','EPSG','1085');
INSERT INTO "grid_transformation" VALUES('EPSG','15488','RRAF 1991 to IGN 1988 MG height (1)','May be used for transformations from WGS 84 to IGN 1988 MG. Accuracy at each 0.025 deg x 0.025 degree grid node is given within the geoid model file.','EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5617',0.2,'EPSG','8666','Geoid (height correction) model file','ggg00_mg.txt',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN Glp MG',1);
+17 -3
View File
@@ -823,7 +823,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','1651','NTF to ETRS89 (1)','T
INSERT INTO "usage" VALUES('EPSG','8572','helmert_transformation','EPSG','1651','EPSG','3694','EPSG','1042');
INSERT INTO "helmert_transformation" VALUES('EPSG','1652','BD72 to ETRS89 (1)','May be taken as approximate transformation BD72 to WGS 84 - see code 1609.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4313','EPSG','4258',1.0,-99.1,53.3,-112.5,'EPSG','9001',0.419,-0.83,1.885,'EPSG','9104',-1.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Bel',0);
INSERT INTO "usage" VALUES('EPSG','8573','helmert_transformation','EPSG','1652','EPSG','1347','EPSG','1041');
INSERT INTO "helmert_transformation" VALUES('EPSG','1653','NGO 1948 to ETRS89 (1)','May be taken as approximate transformation NGO 1948 to WGS 84 - see code 1654.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4273','EPSG','4258',3.0,278.3,93.0,474.5,'EPSG','9001',7.889,0.05,-6.61,'EPSG','9104',6.21,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SKV-Nor',0);
INSERT INTO "helmert_transformation" VALUES('EPSG','1653','NGO 1948 to ETRS89-NOR [EUREF89] (1)','May be taken as approximate transformation NGO 1948 to WGS 84 - see code 1654.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4273','EPSG','10875',3.0,278.3,93.0,474.5,'EPSG','9001',7.889,0.05,-6.61,'EPSG','9104',6.21,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SKV-Nor',0);
INSERT INTO "usage" VALUES('EPSG','8574','helmert_transformation','EPSG','1653','EPSG','1352','EPSG','1043');
INSERT INTO "helmert_transformation" VALUES('EPSG','1654','NGO 1948 to WGS 84 (1)','Parameter values from NGO 1948 to ETRS89 (1) (code 1653). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4273','EPSG','4326',3.0,278.3,93.0,474.5,'EPSG','9001',7.889,0.05,-6.61,'EPSG','9104',6.21,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Nor',0);
INSERT INTO "usage" VALUES('EPSG','8575','helmert_transformation','EPSG','1654','EPSG','1352','EPSG','1252');
@@ -2469,9 +2469,9 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','9703','ETRF2000-PL to ETRS89
INSERT INTO "usage" VALUES('EPSG','15011','helmert_transformation','EPSG','9703','EPSG','1192','EPSG','1161');
INSERT INTO "helmert_transformation" VALUES('EPSG','9743','PN68 to WGS 84 (1)','Determined at 1 satellite station. Accuracy +/- 25m in each axis. Unclear from information source whether the source CRS is PN68 or PN84 - see also CT code 15815. Given the accuracy, can be considered to apply to either.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','9403','EPSG','4326',44.0,-307.0,-92.0,127.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DMA-Esp Canary',0);
INSERT INTO "usage" VALUES('EPSG','15321','helmert_transformation','EPSG','9743','EPSG','3873','EPSG','1160');
INSERT INTO "helmert_transformation" VALUES('EPSG','9751','CR05 to CR-SIRGAS (1)','Derived at 16 stations. Transformation is valid at epoch 2014.59 but accuracy will deteriorate due to tectonic deformation. May be taken as an approximate transformation to ITRF08 / IGb08 / WGS 84 - see code 9752.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','5365','EPSG','8907',0.5,-0.16959,0.35312,0.51846,'EPSG','9001',-0.03385,0.16325,-0.03446,'EPSG','9104',0.03693,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Cri 2014',0);
INSERT INTO "helmert_transformation" VALUES('EPSG','9751','CR05 to CR-SIRGAS epoch 2014.59 (1)','Derived at 16 stations. Transformation is valid at epoch 2014.59 but accuracy will deteriorate due to tectonic deformation. Note that the rotation convention (coordinate frame) differs from that used in the transformation from CR-SIRGAS epoch 2019.24 to CR-SIRGAS epoch 2014.59 (code 11044). May be taken as an approximate transformation to ITRF08 / IGb08 / WGS 84 - see code 9752.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','5365','EPSG','8907',0.5,-0.16959,0.35312,0.51846,'EPSG','9001',-0.03385,0.16325,-0.03446,'EPSG','9104',0.03693,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Cri 2014',0);
INSERT INTO "usage" VALUES('EPSG','15596','helmert_transformation','EPSG','9751','EPSG','1074','EPSG','1035');
INSERT INTO "helmert_transformation" VALUES('EPSG','9752','CR05 to WGS 84 (2)','Parameter values are from CR05 to CR-SIRGAS (1) (code 9751) assuming that CR-SIRGAS (ITRF08 (IGb08)@2014.59) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','5365','EPSG','4326',1.0,-0.16959,0.35312,0.51846,'EPSG','9001',-0.03385,0.16325,-0.03446,'EPSG','9104',0.03693,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Cri 2014',0);
INSERT INTO "helmert_transformation" VALUES('EPSG','9752','CR05 to WGS 84 (2)','Parameter values are from CR05 to CR-SIRGAS epoch 2014.59 (1) (code 9751) assuming that CR-SIRGAS (ITRF08 (IGb08)@2014.59) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','5365','EPSG','4326',1.0,-0.16959,0.35312,0.51846,'EPSG','9001',-0.03385,0.16325,-0.03446,'EPSG','9104',0.03693,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Cri 2014',0);
INSERT INTO "usage" VALUES('EPSG','15832','helmert_transformation','EPSG','9752','EPSG','1074','EPSG','1252');
INSERT INTO "helmert_transformation" VALUES('EPSG','9756','WGS 84 (G1762) to WGS 84 (G2139) (1)','Scale difference in ppb where 1/billion = 1E-9 or nm/m.','EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7664','EPSG','9753',0.01,0.0058,-0.0064,0.007,'EPSG','9001',0.08,0.04,0.12,'EPSG','1031',-4.4,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NGA-Wld 2021.0',0);
INSERT INTO "usage" VALUES('EPSG','16692','helmert_transformation','EPSG','9756','EPSG','1262','EPSG','1027');
@@ -2751,10 +2751,18 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','10848','ITRF2014 to LibRef21
INSERT INTO "usage" VALUES('EPSG','22773','helmert_transformation','EPSG','10848','EPSG','1142','EPSG','1027');
INSERT INTO "helmert_transformation" VALUES('EPSG','10853','ITRF2020 to PNG94 (1)','Transformation derived by inversion of seven site velocities within the transformation coverage area. Transformation accuracy at 2σ is 0.15 m between 1994.0 and 2035.0 for locations within Papuan Foreland. Transformation precision degrades in plate margin deforming zone (PFTB) near plate boundary with NGH and Woodlark plates. Transformation not valid outside stated extent.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','9988','EPSG','5544',0.15,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',1.3242,1.2788,1.1675,'EPSG','1032',0.0,'EPSG','1030',1994.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'OSG-Png',0);
INSERT INTO "usage" VALUES('EPSG','22777','helmert_transformation','EPSG','10853','EPSG','4800','EPSG','1027');
INSERT INTO "helmert_transformation" VALUES('EPSG','10888','ETRF2014 to ETRF2000 (1)','Derived from concatenation of ETRF2014 to ITRF2014 (CT code 8880, with direction reversed) reduced to epoch 2000.00 and ITRF2014 to ETRF2000 (CT code 8405) reduced to epoch 2000.00. Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','8401','EPSG','7930',0.01,53.7,51.2,-55.1,'EPSG','1025',-0.044,-0.451,-0.242,'EPSG','1031',1.02,'EPSG','1028',0.1,0.1,-1.9,'EPSG','1027',-0.004,-0.041,-0.022,'EPSG','1032',0.11,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IOGP-Eur 2000',0);
INSERT INTO "usage" VALUES('EPSG','24547','helmert_transformation','EPSG','10888','EPSG','1298','EPSG','1296');
INSERT INTO "helmert_transformation" VALUES('EPSG','10889','ETRF97 to ETRF2000 (1)','Derived from concatenation of ETRF97 to ITRF97 (CT code 7939, with direction reversed) reduced to epoch 2000.00 and ITRF97 to ETRF2000 (CT code 7949) reduced to epoch 2000.00. Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7928','EPSG','7930',0.01,6.3,5.7,23.7,'EPSG','1025',-1.309,-0.11,-16.622,'EPSG','1031',-1.58,'EPSG','1028',0.0,0.6,1.4,'EPSG','1027',-0.119,-0.01,-0.162,'EPSG','1032',-0.01,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IOGP-Eur 2000',0);
INSERT INTO "usage" VALUES('EPSG','24548','helmert_transformation','EPSG','10889','EPSG','1298','EPSG','1296');
INSERT INTO "helmert_transformation" VALUES('EPSG','10905','ETRS89/DREF91/2016 to Asse 2025 + Asse 2025 height (1)','3-dimensional transformation defining the horizontal and vertical CRSs for the Asse mining area.','EPSG','1149','Coordinate Frame rotation (geog3D to compound)','EPSG','10283','EPSG','10904',0.04,-646.6552,-165.0859,-437.6858,'EPSG','9001',4.77773,-0.39139,-1.07485,'EPSG','9104',2.0025,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'BGE-Deu Asse',0);
INSERT INTO "usage" VALUES('EPSG','23490','helmert_transformation','EPSG','10905','EPSG','4805','EPSG','1144');
INSERT INTO "helmert_transformation" VALUES('EPSG','10907','ETRF96 to ETRF2000 (1)','Derived from concatenation of ETRF96 to ITRF96 (CT code 7938, with direction reversed) reduced to epoch 2000.00 and ITRF96 to ETRF2000 (CT code 7948) reduced to epoch 2000.00. Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7926','EPSG','7930',0.01,6.3,5.7,23.7,'EPSG','1025',-1.309,-0.11,-1.622,'EPSG','1031',-1.58,'EPSG','1028',0.0,0.6,1.4,'EPSG','1027',-0.119,-0.01,-0.162,'EPSG','1032',-0.01,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'EUREF-Eur 2000',0);
INSERT INTO "usage" VALUES('EPSG','24502','helmert_transformation','EPSG','10907','EPSG','1298','EPSG','1296');
INSERT INTO "helmert_transformation" VALUES('EPSG','10930','CSRN2025.0 (NAD83 2011) to WGS 84 (1)','For many purposes CSRN2025.0 (NAD83 2011) can be considered to be coincident with WGS 84. This approximation ignores the ~2.2m offset of CSRN2025.0 (NAD83 2011) from the geocentre, the low accuracy of the WGS 84 ensemble and the application of tectonic plate motion to WGS 84 data.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','10910','EPSG','4326',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Usa CA',0);
INSERT INTO "usage" VALUES('EPSG','23227','helmert_transformation','EPSG','10930','EPSG','1375','EPSG','1252');
INSERT INTO "helmert_transformation" VALUES('EPSG','10935','ETRF93 to ETRF2000 (1)','Derived from concatenation of ETRF93 to ITRF93 (CT code 7936, with direction reversed) reduced to epoch 2000.00 and ITRF93 to ETRF2000 (CT code 7946) reduced to epoch 2000.00. Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7922','EPSG','7930',0.01,57.1,-6.1,1.1,'EPSG','1025',-0.919,-1.71,-1.042,'EPSG','1031',-2.07,'EPSG','1028',2.9,0.2,0.6,'EPSG','1027',-0.129,-0.1,-0.192,'EPSG','1032',-0.01,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'EUREF-Eur 2000',0);
INSERT INTO "usage" VALUES('EPSG','24549','helmert_transformation','EPSG','10935','EPSG','1298','EPSG','1296');
INSERT INTO "helmert_transformation" VALUES('EPSG','10953','CSRN2025 (ITRF2020) to CSRN2025 (NAD83 2011) (1)','Parameter values derived from time-dependent transformation ITRF2020 to NAD83(2011) (CT code 10334) reduced to the CSRN2025 (ITRF2020) and CSRN2025 (NAD83 2011) common anchor epoch 2025.00. Defines CSRN2025 (NAD83 2011).','EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','10950','EPSG','10908',0.0,1015.75,-1920.11,-559.77,'EPSG','1025',27.78143,-11.78187,10.16211,'EPSG','1031',-1.13124,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SOPAC-Usa CA',0);
INSERT INTO "usage" VALUES('EPSG','23567','helmert_transformation','EPSG','10953','EPSG','1375','EPSG','1027');
INSERT INTO "helmert_transformation" VALUES('EPSG','10960','ITRF2020 to GR96(2021) (1)','Derived from the IGS20 coordinates at epoch 2021.6164 of 7 stations including the four passive stations used to define GR96(1996). Validated at 26 other stations.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','9988','EPSG','10957',0.1,-0.30031,-1.17512,-0.30654,'EPSG','9001',0.041614,-0.026303,-0.011214,'EPSG','9104',-0.01626,'EPSG','9202',0.0,0.0,0.0,'EPSG','1042',4.5e-05,-0.000666,-9.8e-05,'EPSG','1043',0.0,'EPSG','1041',2021.6164,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'KDS-Grl',0);
@@ -2769,6 +2777,12 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','10965','QazTRF-23 to WGS 84
INSERT INTO "usage" VALUES('EPSG','23452','helmert_transformation','EPSG','10965','EPSG','1131','EPSG','1252');
INSERT INTO "helmert_transformation" VALUES('EPSG','10969','NATRF2022 to WGS 84 (1)','For many purposes NATRF2022 can be considered to be coincident with WGS 84. This approximation ignores the low accuracy of the WGS 84 ensemble and the application of tectonic plate motion to WGS 84 data.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','10968','EPSG','4326',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-N Am',0);
INSERT INTO "usage" VALUES('EPSG','23509','helmert_transformation','EPSG','10969','EPSG','4803','EPSG','1252');
INSERT INTO "helmert_transformation" VALUES('EPSG','10988','ETRF89 to ETRF2000 (1)','Derived from concatenation of ETRF89 to ITRF89 (CT code 7932, with direction reversed) reduced to epoch 2000.00 and ITRF89 to ETRF2000 (CT code 7942) reduced to epoch 2000.00. Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7914','EPSG','7930',0.01,24.3,10.7,42.7,'EPSG','1025',-0.319,-0.88,-0.962,'EPSG','1031',-5.97,'EPSG','1028',0.0,0.6,1.4,'EPSG','1027',-0.029,-0.08,-0.102,'EPSG','1032',-0.01,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IOGP-Eur 2000',0);
INSERT INTO "usage" VALUES('EPSG','24505','helmert_transformation','EPSG','10988','EPSG','1298','EPSG','1296');
INSERT INTO "helmert_transformation" VALUES('EPSG','11028','ETRS89-NOR [EUREF89] to WGS 84 (1)','','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','10875','EPSG','4326',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Nor',0);
INSERT INTO "usage" VALUES('EPSG','24398','helmert_transformation','EPSG','11028','EPSG','1182','EPSG','1252');
INSERT INTO "helmert_transformation" VALUES('EPSG','11044','CR-SIRGAS epoch 2019.24 to CR-SIRGAS epoch 2014.59 (1)','Derived at 45 stations. Note that rotation convention (position vector) differs from that used in the transformation from CR05 to CR-SIRGAS epoch 2014.59 (code 9751).','EPSG','1061','Molodensky-Badekas (PV geocentric domain)','EPSG','11041','EPSG','8905',0.04,-0.0533,0.0136,-0.0707,'EPSG','9001',0.0122,-0.0284,-0.0037,'EPSG','9104',0.0209,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,629134.9009,-6249130.4704,1101655.6817,'EPSG','9001','IGN-Cri 2020',0);
INSERT INTO "usage" VALUES('EPSG','24186','helmert_transformation','EPSG','11044','EPSG','1074','EPSG','1035');
INSERT INTO "helmert_transformation" VALUES('EPSG','15483','Tokyo to JGD2000 (1)','Derived at Tokyo datum origin. Accuracy on main islands 9m. Also used on remote islands with significantly less accuracy: Io-To 793m, Kitadaito and Minamidaito Jima 642m, Tarama and Minna Shima 560m, Ishigaki and Taketomi Jima 251m, Yonaguni Jima 248m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4301','EPSG','4612',9.0,-146.414,507.337,680.507,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'GSI-Jpn',0);
INSERT INTO "usage" VALUES('EPSG','11494','helmert_transformation','EPSG','15483','EPSG','3957','EPSG','1142');
INSERT INTO "helmert_transformation" VALUES('EPSG','15484','Tokyo to WGS 84 (108)','Parameter values from Tokyo to JGD2000 (1) (code 15483). Assumes JGD2000 and WGS 84 can be considered the same to within the accuracy of the transformation.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4301','EPSG','4326',9.0,-146.414,507.337,680.507,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Jpn',0);
+3 -3
View File
@@ -9,8 +9,8 @@
INSERT INTO "metadata" VALUES('DATABASE.LAYOUT.VERSION.MAJOR', 1);
INSERT INTO "metadata" VALUES('DATABASE.LAYOUT.VERSION.MINOR', 6);
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v12.022');
INSERT INTO "metadata" VALUES('EPSG.DATE', '2025-08-30');
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v12.029');
INSERT INTO "metadata" VALUES('EPSG.DATE', '2025-10-03');
-- The value of ${PROJ_VERSION} is substituted at build time by the actual
-- value.
@@ -18,4 +18,4 @@ INSERT INTO "metadata" VALUES('PROJ.VERSION', '${PROJ_VERSION}');
-- Version of the PROJ-data package with which this database is the most
-- compatible.
INSERT INTO "metadata" VALUES('PROJ_DATA.VERSION', '1.23');
INSERT INTO "metadata" VALUES('PROJ_DATA.VERSION', '1.24');
+61 -29
View File
@@ -4273,57 +4273,57 @@ INSERT INTO "projected_crs" VALUES('EPSG','5071','NAD83(HARN) / Conus Albers',NU
INSERT INTO "usage" VALUES('EPSG','3813','projected_crs','EPSG','5071','EPSG','1323','EPSG','1109');
INSERT INTO "projected_crs" VALUES('EPSG','5072','NAD83(NSRS2007) / Conus Albers',NULL,'EPSG','4499','EPSG','4759','EPSG','5068',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3814','projected_crs','EPSG','5072','EPSG','1323','EPSG','1109');
INSERT INTO "projected_crs" VALUES('EPSG','5105','ETRS89 / NTM zone 5',NULL,'EPSG','4500','EPSG','4258','EPSG','5135',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5105','ETRS89-NOR [EUREF89] / NTM zone 5',NULL,'EPSG','4500','EPSG','10875','EPSG','5135',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3815','projected_crs','EPSG','5105','EPSG','3636','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5106','ETRS89 / NTM zone 6',NULL,'EPSG','4500','EPSG','4258','EPSG','5136',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5106','ETRS89-NOR [EUREF89] / NTM zone 6',NULL,'EPSG','4500','EPSG','10875','EPSG','5136',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3816','projected_crs','EPSG','5106','EPSG','3639','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5107','ETRS89 / NTM zone 7',NULL,'EPSG','4500','EPSG','4258','EPSG','5137',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5107','ETRS89-NOR [EUREF89] / NTM zone 7',NULL,'EPSG','4500','EPSG','10875','EPSG','5137',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3817','projected_crs','EPSG','5107','EPSG','3647','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5108','ETRS89 / NTM zone 8',NULL,'EPSG','4500','EPSG','4258','EPSG','5138',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5108','ETRS89-NOR [EUREF89] / NTM zone 8',NULL,'EPSG','4500','EPSG','10875','EPSG','5138',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3818','projected_crs','EPSG','5108','EPSG','3648','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5109','ETRS89 / NTM zone 9',NULL,'EPSG','4500','EPSG','4258','EPSG','5139',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5109','ETRS89-NOR [EUREF89] / NTM zone 9',NULL,'EPSG','4500','EPSG','10875','EPSG','5139',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3819','projected_crs','EPSG','5109','EPSG','3649','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5110','ETRS89 / NTM zone 10',NULL,'EPSG','4500','EPSG','4258','EPSG','5140',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5110','ETRS89-NOR [EUREF89] / NTM zone 10',NULL,'EPSG','4500','EPSG','10875','EPSG','5140',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3820','projected_crs','EPSG','5110','EPSG','3650','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5111','ETRS89 / NTM zone 11',NULL,'EPSG','4500','EPSG','4258','EPSG','5141',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5111','ETRS89-NOR [EUREF89] / NTM zone 11',NULL,'EPSG','4500','EPSG','10875','EPSG','5141',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3821','projected_crs','EPSG','5111','EPSG','3651','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5112','ETRS89 / NTM zone 12',NULL,'EPSG','4500','EPSG','4258','EPSG','5142',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5112','ETRS89-NOR [EUREF89] / NTM zone 12',NULL,'EPSG','4500','EPSG','10875','EPSG','5142',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3822','projected_crs','EPSG','5112','EPSG','3653','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5113','ETRS89 / NTM zone 13',NULL,'EPSG','4500','EPSG','4258','EPSG','5143',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5113','ETRS89-NOR [EUREF89] / NTM zone 13',NULL,'EPSG','4500','EPSG','10875','EPSG','5143',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3823','projected_crs','EPSG','5113','EPSG','3654','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5114','ETRS89 / NTM zone 14',NULL,'EPSG','4500','EPSG','4258','EPSG','5144',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5114','ETRS89-NOR [EUREF89] / NTM zone 14',NULL,'EPSG','4500','EPSG','10875','EPSG','5144',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3824','projected_crs','EPSG','5114','EPSG','3655','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5115','ETRS89 / NTM zone 15',NULL,'EPSG','4500','EPSG','4258','EPSG','5145',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5115','ETRS89-NOR [EUREF89] / NTM zone 15',NULL,'EPSG','4500','EPSG','10875','EPSG','5145',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3825','projected_crs','EPSG','5115','EPSG','3656','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5116','ETRS89 / NTM zone 16',NULL,'EPSG','4500','EPSG','4258','EPSG','5146',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5116','ETRS89-NOR [EUREF89] / NTM zone 16',NULL,'EPSG','4500','EPSG','10875','EPSG','5146',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3826','projected_crs','EPSG','5116','EPSG','3657','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5117','ETRS89 / NTM zone 17',NULL,'EPSG','4500','EPSG','4258','EPSG','5147',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5117','ETRS89-NOR [EUREF89] / NTM zone 17',NULL,'EPSG','4500','EPSG','10875','EPSG','5147',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3827','projected_crs','EPSG','5117','EPSG','3658','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5118','ETRS89 / NTM zone 18',NULL,'EPSG','4500','EPSG','4258','EPSG','5148',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5118','ETRS89-NOR [EUREF89] / NTM zone 18',NULL,'EPSG','4500','EPSG','10875','EPSG','5148',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3828','projected_crs','EPSG','5118','EPSG','3660','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5119','ETRS89 / NTM zone 19',NULL,'EPSG','4500','EPSG','4258','EPSG','5149',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5119','ETRS89-NOR [EUREF89] / NTM zone 19',NULL,'EPSG','4500','EPSG','10875','EPSG','5149',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3829','projected_crs','EPSG','5119','EPSG','3661','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5120','ETRS89 / NTM zone 20',NULL,'EPSG','4500','EPSG','4258','EPSG','5150',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5120','ETRS89-NOR [EUREF89] / NTM zone 20',NULL,'EPSG','4500','EPSG','10875','EPSG','5150',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3830','projected_crs','EPSG','5120','EPSG','3662','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5121','ETRS89 / NTM zone 21',NULL,'EPSG','4500','EPSG','4258','EPSG','5151',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5121','ETRS89-NOR [EUREF89] / NTM zone 21',NULL,'EPSG','4500','EPSG','10875','EPSG','5151',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3831','projected_crs','EPSG','5121','EPSG','3663','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5122','ETRS89 / NTM zone 22',NULL,'EPSG','4500','EPSG','4258','EPSG','5152',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5122','ETRS89-NOR [EUREF89] / NTM zone 22',NULL,'EPSG','4500','EPSG','10875','EPSG','5152',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3832','projected_crs','EPSG','5122','EPSG','3665','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5123','ETRS89 / NTM zone 23',NULL,'EPSG','4500','EPSG','4258','EPSG','5153',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5123','ETRS89-NOR [EUREF89] / NTM zone 23',NULL,'EPSG','4500','EPSG','10875','EPSG','5153',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3833','projected_crs','EPSG','5123','EPSG','3667','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5124','ETRS89 / NTM zone 24',NULL,'EPSG','4500','EPSG','4258','EPSG','5154',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5124','ETRS89-NOR [EUREF89] / NTM zone 24',NULL,'EPSG','4500','EPSG','10875','EPSG','5154',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3834','projected_crs','EPSG','5124','EPSG','3668','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5125','ETRS89 / NTM zone 25',NULL,'EPSG','4500','EPSG','4258','EPSG','5155',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5125','ETRS89-NOR [EUREF89] / NTM zone 25',NULL,'EPSG','4500','EPSG','10875','EPSG','5155',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3835','projected_crs','EPSG','5125','EPSG','3669','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5126','ETRS89 / NTM zone 26',NULL,'EPSG','4500','EPSG','4258','EPSG','5156',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5126','ETRS89-NOR [EUREF89] / NTM zone 26',NULL,'EPSG','4500','EPSG','10875','EPSG','5156',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3836','projected_crs','EPSG','5126','EPSG','3671','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5127','ETRS89 / NTM zone 27',NULL,'EPSG','4500','EPSG','4258','EPSG','5157',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5127','ETRS89-NOR [EUREF89] / NTM zone 27',NULL,'EPSG','4500','EPSG','10875','EPSG','5157',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3837','projected_crs','EPSG','5127','EPSG','3672','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5128','ETRS89 / NTM zone 28',NULL,'EPSG','4500','EPSG','4258','EPSG','5158',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5128','ETRS89-NOR [EUREF89] / NTM zone 28',NULL,'EPSG','4500','EPSG','10875','EPSG','5158',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3838','projected_crs','EPSG','5128','EPSG','3673','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5129','ETRS89 / NTM zone 29',NULL,'EPSG','4500','EPSG','4258','EPSG','5159',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5129','ETRS89-NOR [EUREF89] / NTM zone 29',NULL,'EPSG','4500','EPSG','10875','EPSG','5159',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3839','projected_crs','EPSG','5129','EPSG','3674','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5130','ETRS89 / NTM zone 30',NULL,'EPSG','4500','EPSG','4258','EPSG','5160',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','5130','ETRS89-NOR [EUREF89] / NTM zone 30',NULL,'EPSG','4500','EPSG','10875','EPSG','5160',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3840','projected_crs','EPSG','5130','EPSG','3676','EPSG','1029');
INSERT INTO "projected_crs" VALUES('EPSG','5167','Korean 1985 / East Sea Belt',NULL,'EPSG','4530','EPSG','4162','EPSG','5049',NULL,0);
INSERT INTO "usage" VALUES('EPSG','3842','projected_crs','EPSG','5167','EPSG','3720','EPSG','1092');
@@ -7140,11 +7140,11 @@ INSERT INTO "projected_crs" VALUES('EPSG','8859','WGS 84 / Equal Earth Asia-Paci
INSERT INTO "usage" VALUES('EPSG','6009','projected_crs','EPSG','8859','EPSG','4523','EPSG','1224');
INSERT INTO "projected_crs" VALUES('EPSG','8903','RGWF96 / UTM zone 1S',NULL,'EPSG','4400','EPSG','8900','EPSG','16101',NULL,0);
INSERT INTO "usage" VALUES('EPSG','6019','projected_crs','EPSG','8903','EPSG','1255','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','8908','CR-SIRGAS / CRTM05',NULL,'EPSG','4400','EPSG','8907','EPSG','5366',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','8908','CR-SIRGAS epoch 2014.59 / CRTM05',NULL,'EPSG','4400','EPSG','8907','EPSG','5366',NULL,0);
INSERT INTO "usage" VALUES('EPSG','6024','projected_crs','EPSG','8908','EPSG','3232','EPSG','1092');
INSERT INTO "projected_crs" VALUES('EPSG','8909','CR-SIRGAS / UTM zone 16N',NULL,'EPSG','4400','EPSG','8907','EPSG','16016',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','8909','CR-SIRGAS epoch 2014.59 / UTM zone 16N',NULL,'EPSG','4400','EPSG','8907','EPSG','16016',NULL,0);
INSERT INTO "usage" VALUES('EPSG','6025','projected_crs','EPSG','8909','EPSG','4532','EPSG','1136');
INSERT INTO "projected_crs" VALUES('EPSG','8910','CR-SIRGAS / UTM zone 17N',NULL,'EPSG','4400','EPSG','8907','EPSG','16017',NULL,0);
INSERT INTO "projected_crs" VALUES('EPSG','8910','CR-SIRGAS epoch 2014.59 / UTM zone 17N',NULL,'EPSG','4400','EPSG','8907','EPSG','16017',NULL,0);
INSERT INTO "usage" VALUES('EPSG','6026','projected_crs','EPSG','8910','EPSG','4531','EPSG','1136');
INSERT INTO "projected_crs" VALUES('EPSG','8950','SIRGAS-Chile 2010 / UTM zone 18S',NULL,'EPSG','4400','EPSG','8949','EPSG','16118',NULL,0);
INSERT INTO "usage" VALUES('EPSG','6064','projected_crs','EPSG','8950','EPSG','3829','EPSG','1142');
@@ -7702,6 +7702,38 @@ INSERT INTO "projected_crs" VALUES('EPSG','10986','NATRF2022 / Gulf East Central
INSERT INTO "usage" VALUES('EPSG','23682','projected_crs','EPSG','10986','EPSG','4812','EPSG','1294');
INSERT INTO "projected_crs" VALUES('EPSG','10987','NATRF2022 / Gulf East (ft)',NULL,'EPSG','4495','EPSG','10968','EPSG','10978',NULL,0);
INSERT INTO "usage" VALUES('EPSG','23683','projected_crs','EPSG','10987','EPSG','2174','EPSG','1294');
INSERT INTO "projected_crs" VALUES('EPSG','11012','ETRS89-NOR [EUREF89] / UTM zone 30N (N-E)',NULL,'EPSG','4500','EPSG','10875','EPSG','16030',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24106','projected_crs','EPSG','11012','EPSG','4823','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11013','ETRS89-NOR [EUREF89] / UTM zone 31N (N-E)',NULL,'EPSG','4500','EPSG','10875','EPSG','16031',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24107','projected_crs','EPSG','11013','EPSG','4824','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11014','ETRS89-NOR [EUREF89] / UTM zone 32N (N-E)',NULL,'EPSG','4500','EPSG','10875','EPSG','16032',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24108','projected_crs','EPSG','11014','EPSG','4825','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11015','ETRS89-NOR [EUREF89] / UTM zone 33N (N-E)',NULL,'EPSG','4500','EPSG','10875','EPSG','16033',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24109','projected_crs','EPSG','11015','EPSG','4826','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11016','ETRS89-NOR [EUREF89] / UTM zone 34N (N-E)',NULL,'EPSG','4500','EPSG','10875','EPSG','16034',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24110','projected_crs','EPSG','11016','EPSG','4827','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11017','ETRS89-NOR [EUREF89] / UTM zone 35N (N-E)',NULL,'EPSG','4500','EPSG','10875','EPSG','16035',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24111','projected_crs','EPSG','11017','EPSG','4828','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11018','ETRS89-NOR [EUREF89] / UTM zone 36N (N-E)',NULL,'EPSG','4500','EPSG','10875','EPSG','16036',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24112','projected_crs','EPSG','11018','EPSG','4829','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11019','ETRS89-NOR [EUREF89] / UTM zone 37N (N-E)',NULL,'EPSG','4500','EPSG','10875','EPSG','16037',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24113','projected_crs','EPSG','11019','EPSG','4830','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11020','ETRS89-NOR [EUREF89] / UTM zone 30N',NULL,'EPSG','4400','EPSG','10875','EPSG','16030',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24114','projected_crs','EPSG','11020','EPSG','4823','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11021','ETRS89-NOR [EUREF89] / UTM zone 31N',NULL,'EPSG','4400','EPSG','10875','EPSG','16031',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24115','projected_crs','EPSG','11021','EPSG','4824','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11022','ETRS89-NOR [EUREF89] / UTM zone 32N',NULL,'EPSG','4400','EPSG','10875','EPSG','16032',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24117','projected_crs','EPSG','11022','EPSG','4825','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11023','ETRS89-NOR [EUREF89] / UTM zone 33N',NULL,'EPSG','4400','EPSG','10875','EPSG','16033',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24118','projected_crs','EPSG','11023','EPSG','4826','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11024','ETRS89-NOR [EUREF89] / UTM zone 34N',NULL,'EPSG','4400','EPSG','10875','EPSG','16034',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24119','projected_crs','EPSG','11024','EPSG','4827','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11025','ETRS89-NOR [EUREF89] / UTM zone 35N',NULL,'EPSG','4400','EPSG','10875','EPSG','16035',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24120','projected_crs','EPSG','11025','EPSG','4828','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11026','ETRS89-NOR [EUREF89] / UTM zone 36N',NULL,'EPSG','4400','EPSG','10875','EPSG','16036',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24121','projected_crs','EPSG','11026','EPSG','4829','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11027','ETRS89-NOR [EUREF89] / UTM zone 37N',NULL,'EPSG','4400','EPSG','10875','EPSG','16037',NULL,0);
INSERT INTO "usage" VALUES('EPSG','24396','projected_crs','EPSG','11027','EPSG','4830','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11114','MAGNA-SIRGAS 2018 / Colombia Far West zone',NULL,'EPSG','4500','EPSG','20046','EPSG','18065',NULL,0);
INSERT INTO "usage" VALUES('EPSG','18947','projected_crs','EPSG','11114','EPSG','3091','EPSG','1142');
INSERT INTO "projected_crs" VALUES('EPSG','11115','MAGNA-SIRGAS 2018 / Colombia West zone',NULL,'EPSG','4500','EPSG','20046','EPSG','18066',NULL,0);
+1
View File
@@ -272,3 +272,4 @@ INSERT INTO "scope" VALUES('EPSG','1292','Crop inventory mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1293','Engineering survey and topographic mapping related to the Woodsmith mine project.',0);
INSERT INTO "scope" VALUES('EPSG','1294','Emulation of SPCS27.',0);
INSERT INTO "scope" VALUES('EPSG','1295','Geodesy. Active GNSS network / Continuously Operating Reference Station (CORS) network.',0);
INSERT INTO "scope" VALUES('EPSG','1296','Merging of spatial data referenced to different national realizations of ETRS89 at the sub-decimetre level of accuracy.',0);
+6 -6
View File
@@ -270,8 +270,6 @@ INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9955','grid_tran
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9956','grid_transformation','EPSG','9958','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9957','grid_transformation','EPSG','9959','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5891','grid_transformation','EPSG','9910','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9884','grid_transformation','EPSG','10130','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9885','grid_transformation','EPSG','10133','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','9020','helmert_transformation','EPSG','10139','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','9021','helmert_transformation','EPSG','10140','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','9022','helmert_transformation','EPSG','10141','EPSG',1);
@@ -296,10 +294,6 @@ INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10491','grid_tra
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10489','grid_transformation','EPSG','10491','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10492','grid_transformation','EPSG','10494','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10490','grid_transformation','EPSG','10492','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10130','grid_transformation','EPSG','10504','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10133','grid_transformation','EPSG','10505','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10504','grid_transformation','EPSG','10509','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10505','grid_transformation','EPSG','10510','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9925','grid_transformation','EPSG','10294','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9926','grid_transformation','EPSG','10295','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10558','grid_transformation','EPSG','10562','EPSG',0);
@@ -356,3 +350,9 @@ INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9634','grid_tran
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15900','helmert_transformation','EPSG','10961','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15957','helmert_transformation','EPSG','10962','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15899','helmert_transformation','EPSG','10963','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9884','grid_transformation','EPSG','10130','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10504','grid_transformation','EPSG','10509','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9885','grid_transformation','EPSG','10133','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10133','grid_transformation','EPSG','10505','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10505','grid_transformation','EPSG','10510','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10130','grid_transformation','EPSG','10504','EPSG',1);
@@ -1,18 +1,14 @@
-- This file is hand generated.
-- WARNING: for now this file is not integrated in the default build, due to
-- licensing of grids cz_cuzk_table_yx_3_v1710_east_north.tif and cz_cuzk_CR-2005.tif
-- being not clarified.
-- Czechia transformations
-- 2d transformations between S-JTSK / Krovak and S-JTSK/05 / Modified Krovak using a grid with easting,northing offsets
INSERT INTO other_transformation VALUES(
'PROJ','S_JTSK_E_N_TO_S_JTSK05_E_N','S-JTSK / Krovak East North (EPSG:5514) to S-JTSK/05 / Modified Krovak East North (EPSG:5516)',
'Transformation based on grid table_yx_3_v1710.dat',
'Transformation based on grid table_-y-x_3_v1710.tif',
'PROJ','PROJString',
'+proj=gridshift +grids=cz_cuzk_table_yx_3_v1710_east_north.tif',
'+proj=gridshift +grids=cz_cuzk_table_-y-x_3_v1710.tif',
'EPSG','5514','EPSG','5516',0.035,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES('PROJ','S_JTSK_E_N_TO_S_JTSK05_E_N_USAGE','other_transformation','PROJ','S_JTSK_E_N_TO_S_JTSK05_E_N','EPSG','1079','EPSG','1189');
@@ -20,10 +16,10 @@ INSERT INTO "usage" VALUES('PROJ','S_JTSK_E_N_TO_S_JTSK05_E_N_USAGE','other_tran
INSERT INTO other_transformation VALUES(
'PROJ','S_JTSK_E_N_TO_S_JTSK05','S-JTSK / Krovak East North (EPSG:5514) to S-JTSK/05 / Modified Krovak (EPSG:5515)',
'Transformation based on grid table_yx_3_v1710.dat',
'Transformation based on grid table_-y-x_3_v1710.tif',
'PROJ','PROJString',
'+proj=pipeline ' ||
'+step +proj=gridshift +grids=cz_cuzk_table_yx_3_v1710_east_north.tif ' ||
'+step +proj=gridshift +grids=cz_cuzk_table_-y-x_3_v1710.tif ' ||
'+step +proj=axisswap +order=-2,-1',
'EPSG','5514','EPSG','5515',0.035,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
@@ -32,11 +28,11 @@ INSERT INTO "usage" VALUES('PROJ','S_JTSK_E_N_TO_S_JTSK05_USAGE','other_transfor
INSERT INTO other_transformation VALUES(
'PROJ','S_JTSK_TO_S_JTSK05_E_N','S-JTSK / Krovak (EPSG:5513) to S-JTSK/05 / Modified Krovak East North (EPSG:5516)',
'Transformation based on grid table_yx_3_v1710.dat',
'Transformation based on grid table_-y-x_3_v1710.tif',
'PROJ','PROJString',
'+proj=pipeline ' ||
'+step +proj=axisswap +order=-2,-1 ' ||
'+step +proj=gridshift +grids=cz_cuzk_table_yx_3_v1710_east_north.tif',
'+step +proj=gridshift +grids=cz_cuzk_table_-y-x_3_v1710.tif',
'EPSG','5513','EPSG','5516',0.035,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES('PROJ','S_JTSK_TO_S_JTSK05_E_N_USAGE','other_transformation','PROJ','S_JTSK_TO_S_JTSK05_E_N','EPSG','1079','EPSG','1189');
@@ -44,11 +40,11 @@ INSERT INTO "usage" VALUES('PROJ','S_JTSK_TO_S_JTSK05_E_N_USAGE','other_transfor
INSERT INTO other_transformation VALUES(
'PROJ','S_JTSK_TO_S_JTSK05','S-JTSK / Krovak (EPSG:5513) to S-JTSK/05 / Modified Krovak (EPSG:5515)',
'Transformation based on grid table_yx_3_v1710.dat',
'Transformation based on grid table_-y-x_3_v1710.tif',
'PROJ','PROJString',
'+proj=pipeline ' ||
'+step +proj=axisswap +order=-2,-1 ' ||
'+step +proj=gridshift +grids=cz_cuzk_table_yx_3_v1710_east_north.tif ' ||
'+step +proj=gridshift +grids=cz_cuzk_table_-y-x_3_v1710.tif ' ||
'+step +proj=axisswap +order=-2,-1',
'EPSG','5513','EPSG','5515',0.035,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
@@ -60,21 +56,21 @@ UPDATE other_transformation SET accuracy = 0.1 WHERE name = 'S-JTSK to S-JTSK/05
INSERT INTO "concatenated_operation" VALUES(
'PROJ','S_JTSK_GEOG_TO_S_JTSK05_GEOG','S-JTSK (EPSG:4156) to S-JTSK/05 (EPSG:5228)',
'Transformation based on grid table_yx_3_v1710.dat','EPSG','4156','EPSG','5228',NULL,NULL,0);
INSERT INTO "concatenated_operation_step" VALUES('PROJ','S_JTSK_GEOG_TO_S_JTSK05_GEOG',1,'EPSG','5510','reverse');
'Transformation based on grid table_-y-x_3_v1710.tif','EPSG','4156','EPSG','5228',NULL,NULL,0);
INSERT INTO "concatenated_operation_step" VALUES('PROJ','S_JTSK_GEOG_TO_S_JTSK05_GEOG',1,'EPSG','5510','forward');
INSERT INTO "concatenated_operation_step" VALUES('PROJ','S_JTSK_GEOG_TO_S_JTSK05_GEOG',2,'PROJ','S_JTSK_E_N_TO_S_JTSK05_E_N','forward');
INSERT INTO "concatenated_operation_step" VALUES('PROJ','S_JTSK_GEOG_TO_S_JTSK05_GEOG',3,'EPSG','5512','forward');
INSERT INTO "concatenated_operation_step" VALUES('PROJ','S_JTSK_GEOG_TO_S_JTSK05_GEOG',3,'EPSG','5512','reverse');
INSERT INTO "usage" VALUES('PROJ','S_JTSK_GEOG_TO_S_JTSK05_GEOG_USAGE','concatenated_operation','PROJ','S_JTSK_GEOG_TO_S_JTSK05_GEOG','EPSG','1079','EPSG','1189');
-- CUZK recommends to do ETRS89 to S-JTSK / Krovak by doing:
-- 1) ETRS89 to S-JTSK/05 using a Helmert transformation (EPSG:5226)
-- 2) S-JTSK/05 to S-JTSK/05 / Modified Krovak, using modified Krovak projection (EPSG:5512)
-- 3) S-JTSK/05 / Modified Krovak to S-JTSK / Krovak using (reverse) grid table_yx_3_v1710.dat
-- 3) S-JTSK/05 / Modified Krovak to S-JTSK / Krovak using (reverse) grid table_-y-x_3_v1710.tif
-- Cf https://www.cuzk.cz/Zememerictvi/Geodeticke-zaklady-na-uzemi-CR/GNSS/Nova-realizace-systemu-ETRS89-v-CR/Metodika-prevodu-ETRF2000-vs-S-JTSK-var2(101208).aspx (Metodika převodu mezi ETRF2000 a S-JTSK varianta 2)
INSERT INTO "concatenated_operation" VALUES(
'PROJ','ETRS89_TO_S_JTSK_E_N','ETRS89 to S-JTSK / Krovak East North (EPSG:5514)',
'Transformation based on grid table_yx_3_v1710.dat','EPSG','4258','EPSG','5514',NULL,NULL,0);
'Transformation based on grid table_-y-x_3_v1710.tif','EPSG','4258','EPSG','5514',NULL,NULL,0);
INSERT INTO "concatenated_operation_step" VALUES('PROJ','ETRS89_TO_S_JTSK_E_N',1,'EPSG','5226','reverse');
INSERT INTO "concatenated_operation_step" VALUES('PROJ','ETRS89_TO_S_JTSK_E_N',2,'EPSG','5512','forward');
INSERT INTO "concatenated_operation_step" VALUES('PROJ','ETRS89_TO_S_JTSK_E_N',3,'PROJ','S_JTSK_E_N_TO_S_JTSK05_E_N','reverse');
@@ -142,10 +138,10 @@ INSERT INTO "usage" VALUES('PROJ','S_JTSK_E_N_BALTIC_HEIGHT_USAGE','compound_crs
INSERT INTO other_transformation VALUES(
'PROJ','ETRS89_3D_TO_S_JTSK_E_N_BALTIC_HEIGHT','ETRS89 to S-JTSK / Krovak East North + Baltic 1957 height',
'Transformation based on grids CR-2005.gtx and table_yx_3_v1710.dat ',
'Transformation based on grids CR-2005.gtx and table_-y-x_3_v1710.tif ',
'PROJ','PROJString',
(SELECT v FROM temp_var WHERE k = 'ETRS89_3D_TO_S_JTSK05_E_N_BALTIC_HEIGHT') ||
'+step +inv +proj=gridshift +grids=cz_cuzk_table_yx_3_v1710_east_north.tif ',
'+step +inv +proj=gridshift +grids=cz_cuzk_table_-y-x_3_v1710.tif ',
'EPSG','4937','PROJ','S_JTSK_E_N_BALTIC_HEIGHT',
0.05, -- guessed...
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
@@ -157,10 +153,10 @@ INSERT INTO "usage" VALUES('PROJ','S_JTSK_BALTIC_HEIGHT_USAGE','compound_crs','P
INSERT INTO other_transformation VALUES(
'PROJ','ETRS89_3D_TO_S_JTSK_BALTIC_HEIGHT','ETRS89 to S-JTSK / Krovak + Baltic 1957 height',
'Transformation based on grids CR-2005.gtx and table_yx_3_v1710.dat ',
'Transformation based on grids CR-2005.gtx and table_-y-x_3_v1710.tif ',
'PROJ','PROJString',
(SELECT v FROM temp_var WHERE k = 'ETRS89_3D_TO_S_JTSK05_E_N_BALTIC_HEIGHT') ||
'+step +inv +proj=gridshift +grids=cz_cuzk_table_yx_3_v1710_east_north.tif ' ||
'+step +inv +proj=gridshift +grids=cz_cuzk_table_-y-x_3_v1710.tif ' ||
'+step +proj=axisswap +order=-2,-1', -- East North --> Southing Westing
'EPSG','4937','PROJ','S_JTSK_BALTIC_HEIGHT',
0.05, -- guessed...
+3 -1
View File
@@ -237,7 +237,7 @@ INSERT INTO "usage" VALUES('EPSG','4234','vertical_crs','EPSG','5791','EPSG','13
INSERT INTO "vertical_crs" VALUES('EPSG','5792','Danger 1950 height',NULL,'EPSG','6499','EPSG','5190',0);
INSERT INTO "usage" VALUES('EPSG','4235','vertical_crs','EPSG','5792','EPSG','3299','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5793','Mayotte 1950 height',NULL,'EPSG','6499','EPSG','5191',0);
INSERT INTO "usage" VALUES('EPSG','4236','vertical_crs','EPSG','5793','EPSG','3340','EPSG','1179');
INSERT INTO "usage" VALUES('EPSG','4236','vertical_crs','EPSG','5793','EPSG','3340','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5794','Martinique 1955 height',NULL,'EPSG','6499','EPSG','5192',0);
INSERT INTO "usage" VALUES('EPSG','4237','vertical_crs','EPSG','5794','EPSG','3276','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5795','Guadeloupe 1951 height',NULL,'EPSG','6499','EPSG','5193',0);
@@ -532,6 +532,8 @@ INSERT INTO "vertical_crs" VALUES('EPSG','10918','COH88 2025 (NAVD88) height',NU
INSERT INTO "usage" VALUES('EPSG','23576','vertical_crs','EPSG','10918','EPSG','1375','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','10999','SVD2024 height',NULL,'EPSG','6499','EPSG','1424',0);
INSERT INTO "usage" VALUES('EPSG','24133','vertical_crs','EPSG','10999','EPSG','4831','EPSG','1180');
INSERT INTO "vertical_crs" VALUES('EPSG','11157','IGN 2023 Mayotte height',NULL,'EPSG','6499','EPSG','1443',0);
INSERT INTO "usage" VALUES('EPSG','24641','vertical_crs','EPSG','11157','EPSG','3340','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','20000','SVD2006 height',NULL,'EPSG','6499','EPSG','1323',0);
INSERT INTO "usage" VALUES('EPSG','17962','vertical_crs','EPSG','20000','EPSG','4058','EPSG','1180');
INSERT INTO "vertical_crs" VALUES('EPSG','20034','CGVD2013a(2002) height',NULL,'EPSG','6499','EPSG','1325',0);
+2
View File
@@ -290,6 +290,8 @@ INSERT INTO "vertical_datum" VALUES('EPSG','1416','Derived California Orthometri
INSERT INTO "usage" VALUES('EPSG','23577','vertical_datum','EPSG','1416','EPSG','1375','EPSG','1180');
INSERT INTO "vertical_datum" VALUES('EPSG','1424','Svalbard vertical datum 2024',NULL,'2025-01-01',NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES('EPSG','24132','vertical_datum','EPSG','1424','EPSG','4831','EPSG','1180');
INSERT INTO "vertical_datum" VALUES('EPSG','1443','IGN 2023 Mayotte',NULL,'2025-03-14',NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES('EPSG','24610','vertical_datum','EPSG','1443','EPSG','3340','EPSG','1178');
INSERT INTO "vertical_datum" VALUES('EPSG','5100','Mean Sea Level',NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES('EPSG','13307','vertical_datum','EPSG','5100','EPSG','1262','EPSG','1199');
INSERT INTO "vertical_datum" VALUES('EPSG','5101','Ordnance Datum Newlyn',NULL,'1956-01-01',NULL,NULL,NULL,NULL,0);
+1 -2
View File
@@ -56,8 +56,7 @@ list(APPEND SQL_FILES
"${SQL_DIR}/nkg.sql"
"${SQL_DIR}/iau.sql"
"${SQL_DIR}/nrcan.sql"
# Below file not yet integrated to unclear licensing of referenced grid file
# "${SQL_DIR}/transformations_czechia_extra.sql"
"${SQL_DIR}/transformations_czechia.sql"
"${SQL_DIR}/grid_alternatives.sql"
"${SQL_DIR}/grid_alternatives_generated_noaa.sql"
"${SQL_DIR}/nadcon5_concatenated_operations.sql"
+5 -5
View File
@@ -23,15 +23,15 @@ title = "PROJ coordinate transformation software library"
author = "PROJ contributors"
# The major project version, used as the replacement for |version|
version = "9.6"
version = "9.7"
# The full project version, used as the replacement for |release|
release = "9.7.0-dev"
release = "9.7.1"
# PROJ-data version
data_version = "1.22"
data_version = "1.24"
today_date = date.today() # or use a specific date
today_date = date(2025, 1, 12) # or use a specific date
today_fmt = "%d %b %Y"
copyright = "1983-{}, PROJ contributors".format(today_date.year)
@@ -135,7 +135,7 @@ html_context = {
"theme_vcs_pageview_mode": "edit",
"github_user": "OSGeo",
"github_repo": "PROJ",
"github_version": "master",
"github_version": "9.7",
"conf_py_path": "/docs/source/",
}
+7 -3
View File
@@ -26,8 +26,8 @@ Download
Current Release
--------------------------------------------------------------------------------
* **2025-09-15** `proj-9.7.0.tar.gz`_ (`md5`_)
* **2025-09-15** `proj-data-1.23.tar.gz`_
* **2025-12-01** `proj-9.7.1.tar.gz`_ (`md5`_)
* **2025-12-01** `proj-data-1.24.tar.gz`_
.. note::
@@ -40,6 +40,7 @@ Current Release
Past Releases
--------------------------------------------------------------------------------
* **2025-09-15** `proj-9.7.0.tar.gz`_
* **2025-06-06** `proj-9.6.2.tar.gz`_
* **2025-06-02** `proj-9.6.1.tar.gz`_
* **2025-03-15** `proj-9.6.0.tar.gz`_
@@ -83,6 +84,7 @@ Past Releases
* **2015-09-13** `proj-4.9.2.tar.gz`_
* **2015-03-04** `proj-4.9.1.tar.gz`_
* **2025-09-15** `proj-data-1.23.tar.gz`_
* **2025-06-02** `proj-data-1.22.tar.gz`_
* **2025-03-15** `proj-data-1.21.tar.gz`_
* **2024-12-01** `proj-data-1.20.tar.gz`_
@@ -127,7 +129,8 @@ Past Releases
* **2018-03-01** `proj-datumgrid-oceania-1.1.zip`_
* **2018-03-01** `proj-datumgrid-oceania-1.0.zip`_
.. _`md5`: https://download.osgeo.org/proj/proj-9.7.0.tar.gz.md5
.. _`md5`: https://download.osgeo.org/proj/proj-9.7.1.tar.gz.md5
.. _`proj-9.7.1.tar.gz`: https://download.osgeo.org/proj/proj-9.7.1.tar.gz
.. _`proj-9.7.0.tar.gz`: https://download.osgeo.org/proj/proj-9.7.0.tar.gz
.. _`proj-9.6.2.tar.gz`: https://download.osgeo.org/proj/proj-9.6.2.tar.gz
.. _`proj-9.6.1.tar.gz`: https://download.osgeo.org/proj/proj-9.6.1.tar.gz
@@ -173,6 +176,7 @@ Past Releases
.. _`proj-4.9.2.tar.gz`: https://download.osgeo.org/proj/proj-4.9.2.tar.gz
.. _`proj-4.9.3.tar.gz`: https://download.osgeo.org/proj/proj-4.9.3.tar.gz
.. _`proj-data-1.24.tar.gz`: https://download.osgeo.org/proj/proj-data-1.24.tar.gz
.. _`proj-data-1.23.tar.gz`: https://download.osgeo.org/proj/proj-data-1.23.tar.gz
.. _`proj-data-1.22.tar.gz`: https://download.osgeo.org/proj/proj-data-1.22.tar.gz
.. _`proj-data-1.21.tar.gz`: https://download.osgeo.org/proj/proj-data-1.21.tar.gz
+32 -4
View File
@@ -3,6 +3,34 @@
News
###############################################################################
9.7.1
++++++++++++++++++++
*December 1st 2025*
Updates
-------
* Enable `transformations_czechia.sql` (`#4578 <https://github.com/OSGeo/PROJ/issues/4578>`_)
* Update to EPSG v12.029 (`#4586 <https://github.com/OSGeo/PROJ/issues/4586>`_)
Bug Fixes
---------
* :cpp:func:`createOperations()`: fix compound to compound when vertical CRS definition is equivalent but not strictly identical (`#4579 <https://github.com/OSGeo/PROJ/issues/4579>`_)
* :cpp:func:`createOperations()`: fix compound to compound when horizontal CRS of … (`#4582 <https://github.com/OSGeo/PROJ/issues/4582>`_)
* :program:`projinfo`: make it honour `-k crs` (`#4592 <https://github.com/OSGeo/PROJ/issues/4592>`_)
* :c:func:`proj_clone()`: fix insufficient propagation of `FORCE_OVER=YES` (`#4595 <https://github.com/OSGeo/PROJ/issues/4595>`_)
* :cpp:func:`BoundCRS::identify`: fix creation of an invalid BoundCRS (that can cause later crashes) for CRS based on 'NTF (Paris)' (`#4601 <https://github.com/OSGeo/PROJ/issues/4601>`_)
* WKT/PROJJSON datum ensemble import: allow no members (`#4615 <https://github.com/OSGeo/PROJ/issues/4615>`_)
9.7.0
++++++++++++++++++++
*September 15th 2025*
@@ -24,7 +52,7 @@ Updates
* WKT importer: better error message when ``BBOX`` is invalid (e.g south_lat > north_lat) (`#4525 <https://github.com/OSGeo/PROJ/issues/4525>`_)
* Added :c:func:`proj_geod_direct` for PJ trasformation object (`#4532 <https://github.com/OSGeo/PROJ/issues/4532>`_)
* Added :c:func:`proj_geod_direct` for PJ transformation object (`#4532 <https://github.com/OSGeo/PROJ/issues/4532>`_)
* Support exporting Mercator (Spherical) on a sphere as ``Mercator_1SP`` in WKT1 (`#4555 <https://github.com/OSGeo/PROJ/issues/4555>`_)
@@ -38,11 +66,11 @@ Bug Fixes
* :c:func:`proj_trans_bounds()`: fix 9.6.2 regression when going from long/lat crossing antimeridian to projected (`#4526 <https://github.com/OSGeo/PROJ/issues/4526>`_)
* opt_parse: avoid potential heap-buffer-overflow when parsing non-ASCII characters (affect :program:`cct`` and :program:`gie`) (`#4530 <https://github.com/OSGeo/PROJ/issues/4530>`_)
* opt_parse: avoid potential heap-buffer-overflow when parsing non-ASCII characters (affect :program:`cct` and :program:`gie`) (`#4530 <https://github.com/OSGeo/PROJ/issues/4530>`_)
* :program:`gie`: fix memory leak on non existing input file (`#4531 <https://github.com/OSGeo/PROJ/issues/4531>`_)
* Database: referene ``nl_nsgi_nllat2018.tif`` and ``nl_nsgi_bongeo2004.tif`` grids (`#4534 <https://github.com/OSGeo/PROJ/issues/4534>`_)
* Database: reference ``nl_nsgi_nllat2018.tif`` and ``nl_nsgi_bongeo2004.tif`` grids (`#4534 <https://github.com/OSGeo/PROJ/issues/4534>`_)
* Fixes related to WKT import/export of ``DerivedGeodetic/GeographicCRS`` (`#4536 <https://github.com/OSGeo/PROJ/issues/4536>`_)
@@ -53,7 +81,7 @@ Bug Fixes
* :cpp:func:`createOperations()`: fix a case involving 2 CompoundCRS, one with TOWGS84, and the 2
verticalCRS differing by units (`#4552 <https://github.com/OSGeo/PROJ/issues/4552>`_)
* On SQLite query error, show first the error msg than the sql query (`#4553 <https://github.com/OSGeo/PROJ/issues/4553>`_)
* On SQLite query error, show first the error message than the sql query (`#4553 <https://github.com/OSGeo/PROJ/issues/4553>`_)
* Allow geodesic inverse for meridional points on prolate ellipsoid (`#4560 <https://github.com/OSGeo/PROJ/issues/4560>`_)
+54 -34
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "CCT" "1" "08 Sep 2025" "9.6" "PROJ"
.TH "CCT" "1" "01 Dec 2025" "9.7" "PROJ"
.SH NAME
cct \- Coordinate Conversion and Transformation
.SH SYNOPSIS
@@ -54,18 +54,18 @@ a proj\-string,
.IP \(bu 2
a WKT string,
.IP \(bu 2
an object code (like \(dqEPSG:1671\(dq \(dqurn:ogc:def:coordinateOperation:EPSG::1671\(dq),
an object code (like "EPSG:1671" "urn:ogc:def:coordinateOperation:EPSG::1671"),
.IP \(bu 2
an object name. e.g. \(dqITRF2014 to ETRF2014 (1)\(dq. In that case as
an object name. e.g. "ITRF2014 to ETRF2014 (1)". In that case as
uniqueness is not guaranteed, heuristics are applied to determine the appropriate best match.
.IP \(bu 2
a OGC URN combining references for concatenated operations
(e.g. \(dq\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP\(dq)
(e.g. "\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP")
.IP \(bu 2
a PROJJSON string. The jsonschema is at \X'tty: link https://proj.org/schemas/v0.4/projjson.schema.json'\fI\%https://proj.org/schemas/v0.4/projjson.schema.json\fP\X'tty: link'
a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.4/projjson.schema.json\fP
.UNINDENT
.sp
Added in version 8.0.0.
New in version 8.0.0.
.sp
\fBNOTE:\fP
@@ -90,7 +90,7 @@ file referenced by the {object_reference} must contain a valid
{object_definition}.
.INDENT 0.0
.INDENT 3.5
Added in version 8.0.0.
New in version 8.0.0.
.UNINDENT
.UNINDENT
@@ -113,7 +113,7 @@ Specify input columns for (up to) 4 input parameters. Defaults to 1,2,3,4.
.INDENT 0.0
.TP
.B \-d <n>
Added in version 5.2.0.
New in version 5.2.0.
.sp
Specify the number of decimals to round to in the output.
@@ -141,7 +141,7 @@ Specify a fixed observation \fIheight\fP to be used for all input data.
.INDENT 0.0
.TP
.B \-s <n>, \-\-skip\-lines=<n>
Added in version 5.1.0.
New in version 5.1.0.
.sp
Skip the first \fIn\fP lines of input. This applies to any kind of input, whether
@@ -165,7 +165,7 @@ Usage varies with operation.
\fI\%cct\fP is an acronym meaning \fICoordinate Conversion and Transformation\fP\&.
.sp
The acronym refers to definitions given in the OGC 08\-015r2/ISO\-19111
standard \(dqGeographical Information \-\- Spatial Referencing by Coordinates\(dq,
standard "Geographical Information \-\- Spatial Referencing by Coordinates",
which defines two different classes of \fIcoordinate operations\fP:
.sp
\fICoordinate Conversions\fP, which are coordinate operations where input
@@ -176,7 +176,7 @@ cartesian coordinates) and
input and output datums differ (e.g. change of reference frame).
.SH USE OF REMOTE GRIDS
.sp
Added in version 7.0.0.
New in version 7.0.0.
.sp
If the \fI\%PROJ_NETWORK\fP environment variable is set to \fBON\fP,
@@ -193,9 +193,11 @@ the following script
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
echo 12 55 0 0 | cct +proj=utm +zone=32 +ellps=GRS80
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -204,9 +206,11 @@ Hence, the command
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
echo 12 55 | cct \-z0 \-t0 +proj=utm +zone=32 +ellps=GRS80
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -214,9 +218,11 @@ Should give results comparable to the classic \fI\%proj\fP command
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
echo 12 55 | proj +proj=utm +zone=32 +ellps=GRS80
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
@@ -226,9 +232,11 @@ Convert geographical input to UTM zone 32 on the GRS80 ellipsoid:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
cct +proj=utm +ellps=GRS80 +zone=32
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
@@ -238,9 +246,11 @@ Roundtrip accuracy check for the case above:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
cct +proj=pipeline +ellps=GRS80 +zone=32 +step +proj=utm +step +proj=utm +inv
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
@@ -250,9 +260,11 @@ As (2) but specify input columns for longitude, latitude, height and time:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
cct \-c 5,2,1,4 +proj=utm +ellps=GRS80 +zone=32
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
@@ -263,9 +275,11 @@ input:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
cct \-t 0 \-z 0 +proj=utm +ellps=GRS80 +zone=32
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
@@ -276,10 +290,12 @@ stream:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
$ echo 12 56 100 2018.0 auxiliary data | cct +proj=merc
1335833.8895 7522963.2411 100.0000 2018.0000 auxiliary data
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
@@ -289,10 +305,12 @@ Coordinate operation referenced through its code
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
$ echo 3541657.3778 948984.2343 5201383.5231 2020.5 | cct EPSG:8366
3541657.9112 948983.7503 5201383.2482 2020.5000
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
@@ -302,10 +320,12 @@ Coordinate operation referenced through its name
.INDENT 0.0
.INDENT 3.5
.sp
.EX
$ echo 3541657.3778 948984.2343 5201383.5231 2020.5 | cct \(dqITRF2014 to ETRF2014 (1)\(dq
.nf
.ft C
$ echo 3541657.3778 948984.2343 5201383.5231 2020.5 | cct "ITRF2014 to ETRF2014 (1)"
3541657.9112 948983.7503 5201383.2482 2020.5000
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.SH BACKGROUND
@@ -337,11 +357,11 @@ Hence, in honour of \fIcct\fP (the geodesist) this is \fI\%cct\fP (the program).
\fBproj(1)\fP, \fBcs2cs(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP, \fBprojinfo(1)\fP, \fBprojsync(1)\fP
.SH BUGS
.sp
A list of known bugs can be found at \X'tty: link https://github.com/OSGeo/PROJ/issues'\fI\%https://github.com/OSGeo/PROJ/issues\fP\X'tty: link'
A list of known bugs can be found at \fI\%https://github.com/OSGeo/PROJ/issues\fP
where new bug reports can be submitted to.
.SH HOME PAGE
.sp
\X'tty: link https://proj.org/'\fI\%https://proj.org/\fP\X'tty: link'
\fI\%https://proj.org/\fP
.SH AUTHOR
Thomas Knudsen
.SH COPYRIGHT
+71 -51
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "CS2CS" "1" "08 Sep 2025" "9.6" "PROJ"
.TH "CS2CS" "1" "01 Dec 2025" "9.7" "PROJ"
.SH NAME
cs2cs \- Cartographic coordinate system filter
.SH SYNOPSIS
@@ -54,32 +54,32 @@ a proj\-string,
.IP \(bu 2
a WKT string,
.IP \(bu 2
an object code (like \(dqEPSG:4326\(dq, \(dqurn:ogc:def:crs:EPSG::4326\(dq,
\(dqurn:ogc:def:coordinateOperation:EPSG::1671\(dq),
an object code (like "EPSG:4326", "urn:ogc:def:crs:EPSG::4326",
"urn:ogc:def:coordinateOperation:EPSG::1671"),
.IP \(bu 2
an Object name. e.g \(dqWGS 84\(dq, \(dqWGS 84 / UTM zone 31N\(dq. In that case as
an Object name. e.g "WGS 84", "WGS 84 / UTM zone 31N". In that case as
uniqueness is not guaranteed, heuristics are applied to determine the appropriate best match.
.IP \(bu 2
a CRS name and a coordinate epoch, separated with \(aq@\(aq. For example \(dq\X'tty: link mailto:ITRF2014@2025.0'\fI\%ITRF2014@2025.0\fP\X'tty: link'\(dq. (\fIadded in 9.2\fP)
a CRS name and a coordinate epoch, separated with \(aq@\(aq. For example "\fI\%ITRF2014@2025.0\fP". (\fIadded in 9.2\fP)
.IP \(bu 2
a OGC URN combining references for compound coordinate reference systems
(e.g \(dq\fI\%urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717\fP\(dq or custom abbreviated
syntax \(dqEPSG:2393+5717\(dq),
(e.g "\fI\%urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717\fP" or custom abbreviated
syntax "EPSG:2393+5717"),
.IP \(bu 2
a OGC URN combining references for references for projected or derived CRSs
e.g. for Projected 3D CRS \(dqUTM zone 31N / WGS 84 (3D)\(dq:
\(dq\fI\%urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031\fP\(dq
e.g. for Projected 3D CRS "UTM zone 31N / WGS 84 (3D)":
"\fI\%urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031\fP"
(\fIadded in 6.2\fP)
.IP \(bu 2
a OGC URN combining references for concatenated operations
(e.g. \(dq\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP\(dq)
(e.g. "\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP")
.IP \(bu 2
a PROJJSON string. The jsonschema is at \X'tty: link https://proj.org/schemas/v0.4/projjson.schema.json'\fI\%https://proj.org/schemas/v0.4/projjson.schema.json\fP\X'tty: link' (\fIadded in 6.2\fP)
a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.4/projjson.schema.json\fP (\fIadded in 6.2\fP)
.IP \(bu 2
a compound CRS made from two object names separated with \(dq + \(dq. e.g. \(dqWGS 84 + EGM96 height\(dq (\fIadded in 7.1\fP)
a compound CRS made from two object names separated with " + ". e.g. "WGS 84 + EGM96 height" (\fIadded in 7.1\fP)
.UNINDENT
.sp
Added in version 6.0.0.
New in version 6.0.0.
.sp
\fBNOTE:\fP
@@ -115,7 +115,7 @@ ASCII input only. (# is the default value).
.INDENT 0.0
.TP
.B \-d <n>
Added in version 5.2.0.
New in version 5.2.0.
.sp
Specify the number of decimals to round to in the output.
@@ -189,7 +189,7 @@ third.
Where \fIformat\fP is a printf format string to control the form of the output values.
For inverse projections, the output will be in degrees when this option is
employed. If a format is specified for inverse projection the output data
will be in decimal degrees. The default format is \fB\(dq%.2f\(dq\fP for forward
will be in decimal degrees. The default format is \fB"%.2f"\fP for forward
projection and DMS for inverse.
.UNINDENT
.INDENT 0.0
@@ -214,19 +214,19 @@ the program to be printed prior to input data.
.INDENT 0.0
.TP
.B \-\-area <name_or_code>
Added in version 8.0.0.
New in version 8.0.0.
.sp
Specify an area of interest to restrict the results when researching
coordinate operations between 2 CRS. The area of interest can be specified either
as a name (e.g \(dqDenmark \- onshore\(dq) or a AUTHORITY:CODE (EPSG:3237)
as a name (e.g "Denmark \- onshore") or a AUTHORITY:CODE (EPSG:3237)
.sp
This option is mutually exclusive with \fI\%\-\-bbox\fP\&.
.UNINDENT
.INDENT 0.0
.TP
.B \-\-bbox <west_long,south_lat,east_long,north_lat>
Added in version 8.0.0.
New in version 8.0.0.
.sp
Specify an area of interest to restrict the results when researching
@@ -240,7 +240,7 @@ unspecified geographic CRS.
.INDENT 0.0
.TP
.B \-\-only\-best[=yes|=no]
Added in version 9.2.0.
New in version 9.2.0.
.sp
Force \fIcs2cs\fP to only use the best transformation known by PROJ.
@@ -259,7 +259,7 @@ when specified overrides such default value).
.INDENT 0.0
.TP
.B \-\-no\-ballpark
Added in version 8.0.0.
New in version 8.0.0.
.sp
Disallow any coordinate operation that is, or contains, a
@@ -268,7 +268,7 @@ Disallow any coordinate operation that is, or contains, a
.INDENT 0.0
.TP
.B \-\-accuracy <accuracy>
Added in version 8.0.0.
New in version 8.0.0.
.sp
Sets the minimum desired accuracy for candidate coordinate operations.
@@ -276,7 +276,7 @@ Sets the minimum desired accuracy for candidate coordinate operations.
.INDENT 0.0
.TP
.B \-\-authority <name>
Added in version 8.0.0.
New in version 8.0.0.
.sp
This option can be used to restrict the authority of coordinate operations
@@ -293,10 +293,10 @@ This option is mutually exclusive with \fI\%\-\-bbox\fP\&.
.INDENT 0.0
.TP
.B \-\-3d
Added in version 9.1.
New in version 9.1.
.sp
\(dqPromote\(dq 2D CRS(s) to their 3D version, where the vertical axis is the
"Promote" 2D CRS(s) to their 3D version, where the vertical axis is the
ellipsoidal height in metres, using the ellipsoid of the base geodetic CRS.
Depending on PROJ versions and the exact nature of the CRS involved,
especially before PROJ 9.1, a mix of 2D and 3D CRS could lead to 2D or 3D
@@ -306,7 +306,7 @@ transformation to possibly happen.
.INDENT 0.0
.TP
.B \-\-s_epoch
Added in version 9.4.
New in version 9.4.
.sp
Epoch of coordinates in the source CRS, as decimal year.
@@ -315,7 +315,7 @@ Only applies to a dynamic CRS.
.INDENT 0.0
.TP
.B \-\-t_epoch
Added in version 9.4.
New in version 9.4.
.sp
Epoch of coordinates in the target CRS, as decimal year.
@@ -360,7 +360,7 @@ places), while projected (cartesian) coordinates will be in linear
(meter, feet) units.
.SS Use of remote grids
.sp
Added in version 7.0.0.
New in version 7.0.0.
.sp
If the \fI\%PROJ_NETWORK\fP environment variable is set to \fBON\fP,
@@ -375,13 +375,15 @@ The following script
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
cs2cs +proj=latlong +datum=NAD83 +to +proj=utm +zone=10 +datum=NAD27 \-r <<EOF
45°15\(aq33.1\(dq 111.5W
45°15\(aq33.1" 111.5W
45d15.551666667N \-111d30
+45.25919444444 111d30\(aq000w
EOF
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -392,9 +394,11 @@ The x\-y output data will appear as three lines of:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
1402285.93 5076292.58 0.00
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -407,9 +411,11 @@ Assuming the above mentioned grid is \fInot\fP available,
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
echo \-111.5 45.25919444444 | cs2cs \-\-only\-best +proj=latlong +datum=NAD83 +to +proj=utm +zone=10 +datum=NAD27
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -417,10 +423,12 @@ would return:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
Attempt to use coordinate operation axis order change (2D) + Inverse of NAD27 to NAD83 (7) + axis order change (2D) + UTM zone 10N failed. Grid us_noaa_nadcon5_nad27_nad83_1986_conus.tif is not available. Consult https://proj.org/resource_files.html for guidance.
* * inf
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -428,9 +436,11 @@ Otherwise, if you don\(aqt have the grid available and you don\(aqt specify \fI\
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
echo \-111.5 45.25919444444 | cs2cs \-\-only\-best +proj=latlong +datum=NAD83 +to +proj=utm +zone=10 +datum=NAD27
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -438,9 +448,11 @@ would return:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
1402224.57 5076275.42 0.00
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -452,11 +464,13 @@ Transforming from WGS 84 latitude/longitude (in that order) to UTM Zone 31N/WGS
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
cs2cs EPSG:4326 EPSG:32631 <<EOF
45N 2E
EOF
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -464,9 +478,11 @@ outputs
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
421184.70 4983436.77 0.00
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.SS Using EPSG CRS names
@@ -476,9 +492,11 @@ UTM Zone 31N/WGS 84 with WGS84 ellipsoidal height
.INDENT 0.0
.INDENT 3.5
.sp
.EX
echo 45 2 0 | cs2cs \(dqWGS 84 + EGM96 height\(dq \(dqWGS 84 / UTM zone 31N\(dq \-\-3d
.EE
.nf
.ft C
echo 45 2 0 | cs2cs "WGS 84 + EGM96 height" "WGS 84 / UTM zone 31N" \-\-3d
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -486,9 +504,11 @@ outputs
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
421184.70 4983436.77 50.69
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -504,11 +524,11 @@ locally or use networking capabilities mentioned above.
\fBproj(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP, \fBprojinfo(1)\fP, \fBprojsync(1)\fP
.SH BUGS
.sp
A list of known bugs can be found at \X'tty: link https://github.com/OSGeo/PROJ/issues'\fI\%https://github.com/OSGeo/PROJ/issues\fP\X'tty: link'
A list of known bugs can be found at \fI\%https://github.com/OSGeo/PROJ/issues\fP
where new bug reports can be submitted to.
.SH HOME PAGE
.sp
\X'tty: link https://proj.org/'\fI\%https://proj.org/\fP\X'tty: link'
\fI\%https://proj.org/\fP
.SH AUTHOR
Frank Warmerdam
.SH COPYRIGHT
+28 -20
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "GEOD" "1" "08 Sep 2025" "9.6" "PROJ"
.TH "GEOD" "1" "01 Dec 2025" "9.7" "PROJ"
.SH NAME
geod \- Geodesic computations
.SH SYNOPSIS
@@ -92,7 +92,7 @@ geographic coordinate and azimuth values. The default mode is DMS.
.TP
.B \-F <format>
Where \fIformat\fP is a printf format string to control the output form of the distance
value. The default mode is \fB\(dq%.3f\(dq\fP\&.
value. The default mode is \fB"%.3f"\fP\&.
.UNINDENT
.INDENT 0.0
.TP
@@ -141,7 +141,7 @@ azimuthal data must be in decimal degrees or DMS format and
input distance data must be in units consistent with the ellipsoid
major axis or sphere radius units. The latitude must lie
in the range [\-90d,90d]. Output geographic coordinates and azimuths will be
in DMS (if the \fI\%\-f\fP switch is not employed) to 0.001\(dq with trailing,
in DMS (if the \fI\%\-f\fP switch is not employed) to 0.001" with trailing,
zero\-valued minute\-second fields deleted. Output distance
data will be in the same units as the ellipsoid or sphere
radius.
@@ -173,11 +173,13 @@ statute miles from Boston, MA, to Portland, OR:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
geod +ellps=clrk66 \-I +units=us\-mi <<EOF
42d15\(aqN 71d07\(aqW 45d31\(aqN 123d41\(aqW
EOF
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -185,9 +187,11 @@ which gives the results:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
\-66d31\(aq50.141\(dq 75d39\(aq13.083\(dq 2587.504
.EE
.nf
.ft C
\-66d31\(aq50.141" 75d39\(aq13.083" 2587.504
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -199,11 +203,13 @@ and determine Portland\(aqs location by azimuth and distance:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
geod +ellps=clrk66 +units=us\-mi <<EOF
42d15\(aqN 71d07\(aqW \-66d31\(aq50.141\(dq 2587.504
42d15\(aqN 71d07\(aqW \-66d31\(aq50.141" 2587.504
EOF
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -211,9 +217,11 @@ which gives:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
45d31\(aq0.003\(dqN 123d40\(aq59.985\(dqW 75d39\(aq13.094\(dq
.EE
.nf
.ft C
45d31\(aq0.003"N 123d40\(aq59.985"W 75d39\(aq13.094"
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -230,23 +238,23 @@ precision of the Portland location.
.SH FURTHER READING
.INDENT 0.0
.IP 1. 3
\X'tty: link https://geographiclib.sourceforge.io'\fI\%GeographicLib\fP\X'tty: link'\&.
\fI\%GeographicLib\fP\&.
.IP 2. 3
C. F. F. Karney, \X'tty: link https://doi.org/10.1007/s00190-012-0578-z'\fI\%Algorithms for Geodesics\fP\X'tty: link', J. Geodesy \fB87\fP(1), 43–55 (2013);
\X'tty: link https://geographiclib.sourceforge.io/geod-addenda.html'\fI\%addenda\fP\X'tty: link'\&.
C. F. F. Karney, \fI\%Algorithms for Geodesics\fP, J. Geodesy \fB87\fP(1), 43–55 (2013);
\fI\%addenda\fP\&.
.IP 3. 3
\X'tty: link https://geographiclib.sourceforge.io/geodesic-papers/biblio.html'\fI\%A geodesic bibliography\fP\X'tty: link'\&.
\fI\%A geodesic bibliography\fP\&.
.UNINDENT
.SH SEE ALSO
.sp
\fBproj(1)\fP, \fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgie(1)\fP, \fBprojinfo(1)\fP, \fBprojsync(1)\fP
.SH BUGS
.sp
A list of known bugs can be found at \X'tty: link https://github.com/OSGeo/PROJ/issues'\fI\%https://github.com/OSGeo/PROJ/issues\fP\X'tty: link'
A list of known bugs can be found at \fI\%https://github.com/OSGeo/PROJ/issues\fP
where new bug reports can be submitted to.
.SH HOME PAGE
.sp
\X'tty: link https://proj.org/'\fI\%https://proj.org/\fP\X'tty: link'
\fI\%https://proj.org/\fP
.SH AUTHOR
Charles Karney
.SH COPYRIGHT
+69 -39
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "GIE" "1" "08 Sep 2025" "9.6" "PROJ"
.TH "GIE" "1" "01 Dec 2025" "9.7" "PROJ"
.SH NAME
gie \- The Geospatial Integrity Investigation Environment
.SH SYNOPSIS
@@ -89,7 +89,8 @@ like:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
<gie>
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
@@ -101,7 +102,8 @@ accept 12 55
expect 691_875.632_14 6_098_907.825_05
</gie>
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -133,9 +135,11 @@ Run all tests in a file with all debug information turned on
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
gie \-vvvv corner\-cases.gie
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
@@ -145,9 +149,11 @@ Run all tests in several files
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
gie foo bar
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.SH GIE COMMAND LANGUAGE
@@ -158,7 +164,8 @@ Define a PROJ operation to test. Example:
.INDENT 7.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
operation proj=utm zone=32 ellps=GRS80
# test 4D function
accept 12 55 0 0
@@ -167,7 +174,8 @@ expect 691875.63214 6098907.82501 0 0
# test 2D function
accept 12 56
expect 687071.4391 6210141.3267
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.UNINDENT
@@ -208,11 +216,13 @@ pipeline is constructed.
.INDENT 7.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
operation proj=pipeline step
proj=urm5 n=0.5 inv
expect failure pjd_err_malformed_pipeline
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -229,7 +239,8 @@ accurate within a few meters. \fI\%tolerance\fP should
.INDENT 7.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
operation proj=merc
# test coordinate as returned by \(ga\(ga\(gaecho 12 55 | proj +proj=merc\(ga\(ga
tolerance 1 cm
@@ -242,7 +253,8 @@ expect 1335833.89 7326837.72
tolerance 100 m
accept 12 55
expect 1335883.89 7326837.72
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -264,11 +276,13 @@ Example with the default 100 iterations and the default tolerance:
.INDENT 7.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
operation proj=merc
accept 12 55
roundtrip
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -276,11 +290,13 @@ Example with count and default tolerance:
.INDENT 7.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
operation proj=merc
accept 12 55
roundtrip 10000
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -288,11 +304,13 @@ Example with count and tolerance:
.INDENT 7.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
operation proj=merc
accept 12 55
roundtrip 10000 5 mm
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.UNINDENT
@@ -306,7 +324,8 @@ pipeline returns the same results in both directions.
.INDENT 7.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
operation proj=pipeline zone=32 step
proj=utm ellps=GRS80 step
proj=utm ellps=GRS80 inv
@@ -319,11 +338,12 @@ expect 12 55 0 0
direction inverse
expect 12 55 0 0
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
The default direction is \(dqforward\(dq.
The default direction is "forward".
.UNINDENT
.INDENT 0.0
.TP
@@ -334,13 +354,15 @@ available. Below is an example of that situation.
.INDENT 7.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
operation proj=hgridshift +grids=nzgd2kgrid0005.gsb ellps=GRS80
tolerance 1 mm
ignore pjd_err_failed_to_load_grid
accept 172.999892181021551 \-45.001620431954613
expect 173 \-45
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -362,14 +384,16 @@ Add user defined text to the output stream. See the example below.
.INDENT 7.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
<gie>
echo ** Mercator projection tests **
operation +proj=merc
accept 0 0
expect 0 0
</gie>
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -377,14 +401,16 @@ which returns
.INDENT 7.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
Reading file \(aqtest.gie\(aq
** Mercator projection test **
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
total: 1 tests succeeded, 0 tests skipped, 0 tests failed.
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.UNINDENT
@@ -397,7 +423,8 @@ relevant for debugging when writing new test cases.
.INDENT 7.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
<gie>
operation proj=merc
accept 0 0
@@ -406,13 +433,14 @@ skip
accept 0 1
expect 0 110579.9
</gie>
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.UNINDENT
.SH STRICT MODE
.sp
Added in version 7.1.
New in version 7.1.
.sp
A stricter variant of normal gie syntax can be used by wrapping gie commands
@@ -425,11 +453,12 @@ end with the space character followed by backslash to mark the continuation.
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
<gie\-strict>
# This is a comment. The following line with multiple repeated characters too
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
# A command on several lines must use \(dq \e\(dq continuation
# A command on several lines must use " \e" continuation
operation proj=hgridshift +grids=nzgd2kgrid0005.gsb \e
ellps=GRS80
tolerance 1 mm
@@ -437,15 +466,16 @@ ignore pjd_err_failed_to_load_grid
accept 172.999892181021551 \-45.001620431954613
expect 173 \-45
</gie\-strict>
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.UNINDENT
.UNINDENT
.SH BACKGROUND
.sp
More importantly than being an acronym for \(dqGeospatial Integrity Investigation
Environment\(dq, gie were also the initials, user id, and USGS email address of
More importantly than being an acronym for "Geospatial Integrity Investigation
Environment", gie were also the initials, user id, and USGS email address of
Gerald Ian Evenden (1935\-\-2016), the geospatial visionary, who, already in the
1980s, started what was to become the PROJ of today.
.sp
@@ -467,7 +497,7 @@ call like \fBhypot(x,y)\fP\&.
.sp
While today, we may have more formally well defined metadata systems (most
prominent the OGC WKT2 representation), nothing comes close being as easily
readable (\(dqhuman compatible\(dq) as Gerald\(aqs key\-value system. This system in
readable ("human compatible") as Gerald\(aqs key\-value system. This system in
particular, and the PROJ system in general, was Gerald\(aqs great gift to anyone
using and/or communicating about geodata.
.sp
@@ -481,11 +511,11 @@ So in honour, and hopefully also in the spirit, of Gerald Ian Evenden
\fBproj(1)\fP, \fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBprojinfo(1)\fP, \fBprojsync(1)\fP
.SH BUGS
.sp
A list of known bugs can be found at \X'tty: link https://github.com/OSGeo/PROJ/issues'\fI\%https://github.com/OSGeo/PROJ/issues\fP\X'tty: link'
A list of known bugs can be found at \fI\%https://github.com/OSGeo/PROJ/issues\fP
where new bug reports can be submitted to.
.SH HOME PAGE
.sp
\X'tty: link https://proj.org/'\fI\%https://proj.org/\fP\X'tty: link'
\fI\%https://proj.org/\fP
.SH AUTHOR
Thomas Knudsen
.SH COPYRIGHT
+28 -20
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "PROJ" "1" "08 Sep 2025" "9.6" "PROJ"
.TH "PROJ" "1" "01 Dec 2025" "9.7" "PROJ"
.SH NAME
proj \- Cartographic projection filter
.SH SYNOPSIS
@@ -61,7 +61,7 @@ and allows bypassing formatting operations.
.B \-d <n>
.UNINDENT
.sp
Added in version 5.2.0: Specify the number of decimals to round to in the output.
New in version 5.2.0: Specify the number of decimals to round to in the output.
.INDENT 0.0
.TP
@@ -163,7 +163,7 @@ reciprocal value of \fImult\fP is employed.
.B \-f <format>
Where \fIformat\fP is a printf format string to control the form of the output values.
For inverse projections, the output will be in degrees when this option is
employed. The default format is \fB\(dq%.2f\(dq\fP for forward projection and DMS for
employed. The default format is \fB"%.2f"\fP for forward projection and DMS for
inverse.
.UNINDENT
.INDENT 0.0
@@ -201,8 +201,8 @@ projection has been established from either the run\-line or the contents of
default directory for a file reference without an absolute path. This is
also used for supporting files like datum shift files.
.sp
Added in version 9.3.0: \fI{crs}\fP is one of the possibilities accepted by :c:\fBproj_create()\fP, provided it
expresses a projected CRS, like a WKT string, an object code (like \(dqEPSG:32632\(dq)
New in version 9.3.0: \fI{crs}\fP is one of the possibilities accepted by :c:\fBproj_create()\fP, provided it
expresses a projected CRS, like a WKT string, an object code (like "EPSG:32632")
a PROJJSON string, etc.
The projection computed will be those of the map projection implied by
the transformation from the base geographic CRS of the projected CRS to the projected CRS.
@@ -218,7 +218,7 @@ portions of the input line are appended to the output line.
Input geographic data (longitude and latitude) must be in DMS or decimal degrees format and input
cartesian data must be in units consistent with the ellipsoid major axis or
sphere radius units. Output geographic coordinates will be in DMS (if the
\fB\-w\fP switch is not employed) and precise to 0.001\(dq with trailing, zero\-valued
\fB\-w\fP switch is not employed) and precise to 0.001" with trailing, zero\-valued
minute\-second fields deleted.
.SH EXAMPLE
.sp
@@ -226,13 +226,15 @@ The following script
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
proj +proj=utm +zone=12 \-r <<EOF
45d15\(aq33.1\(dq 111.5W
45d15\(aq33.1" 111.5W
45d15.551666667N \-111d30
+45.25919444444 111d30\(aq000w
EOF
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -244,9 +246,11 @@ data will appear as three lines of:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
460770.43 5011865.86
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -254,21 +258,24 @@ This other example
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
proj EPSG:6421 \-V <<EOF
\-120 35.8
EOF
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
Will perform the projection of the coordinates in \(dqNAD83(2011) / California zone 4\(dq
(\fIEPSG:6421\fP) into its geographic system, \(dqNAD83(2011)\(dq, showing the expanded annotated listing.
Will perform the projection of the coordinates in "NAD83(2011) / California zone 4"
(\fIEPSG:6421\fP) into its geographic system, "NAD83(2011)", showing the expanded annotated listing.
The output will appear as:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
#Lambert Conformal Conic
# Conic, Sph&Ell
# lat_1= and lat_2= or lat_0, k_0=
@@ -287,9 +294,10 @@ Parallel scale (k) : 1.00004382 ( 0.004382 % error )
Areal scale (s): 1.00008765 ( 0.008765 % error )
Angular distortion (w): 0.000
Meridian/Parallel angle: 90.00000
Convergence : \-0d35\(aq47.714\(dq [ \-0.59658715 ]
Convergence : \-0d35\(aq47.714" [ \-0.59658715 ]
Max\-min (Tissot axis a\-b) scale error: 1.00004 1.00004
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.SH OTHER PROGRAMS
@@ -305,11 +313,11 @@ support for datum translation.
\fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP, \fBprojinfo(1)\fP, \fBprojsync(1)\fP
.SH BUGS
.sp
A list of known bugs can be found at \X'tty: link https://github.com/OSGeo/PROJ/issues'\fI\%https://github.com/OSGeo/PROJ/issues\fP\X'tty: link'
A list of known bugs can be found at \fI\%https://github.com/OSGeo/PROJ/issues\fP
where new bug reports can be submitted to.
.SH HOME PAGE
.sp
\X'tty: link https://proj.org/'\fI\%https://proj.org/\fP\X'tty: link'
\fI\%https://proj.org/\fP
.SH AUTHOR
Gerald I. Evenden
.SH COPYRIGHT
+187 -163
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "PROJINFO" "1" "08 Sep 2025" "9.6" "PROJ"
.TH "PROJINFO" "1" "01 Dec 2025" "9.7" "PROJ"
.SH NAME
projinfo \- Geodetic object and coordinate operation queries
.SH SYNOPSIS
@@ -70,39 +70,39 @@ a proj\-string,
.IP \(bu 2
a WKT string,
.IP \(bu 2
an object code (like \(dqEPSG:4326\(dq, \(dqurn:ogc:def:crs:EPSG::4326\(dq,
\(dqurn:ogc:def:coordinateOperation:EPSG::1671\(dq),
an object code (like "EPSG:4326", "urn:ogc:def:crs:EPSG::4326",
"urn:ogc:def:coordinateOperation:EPSG::1671"),
.IP \(bu 2
an Object name. e.g \(dqWGS 84\(dq, \(dqWGS 84 / UTM zone 31N\(dq. In that case as
an Object name. e.g "WGS 84", "WGS 84 / UTM zone 31N". In that case as
uniqueness is not guaranteed, heuristics are applied to determine the appropriate best match.
.IP \(bu 2
a CRS name and a coordinate epoch, separated with \(aq@\(aq. For example \(dq\X'tty: link mailto:ITRF2014@2025.0'\fI\%ITRF2014@2025.0\fP\X'tty: link'\(dq. (\fIadded in 9.2\fP)
a CRS name and a coordinate epoch, separated with \(aq@\(aq. For example "\fI\%ITRF2014@2025.0\fP". (\fIadded in 9.2\fP)
.IP \(bu 2
a OGC URN combining references for compound coordinate reference systems
(e.g \(dq\fI\%urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717\fP\(dq or custom abbreviated
syntax \(dqEPSG:2393+5717\(dq),
(e.g "\fI\%urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717\fP" or custom abbreviated
syntax "EPSG:2393+5717"),
.IP \(bu 2
a OGC URN combining references for references for projected or derived CRSs
e.g. for Projected 3D CRS \(dqUTM zone 31N / WGS 84 (3D)\(dq:
\(dq\fI\%urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031\fP\(dq
e.g. for Projected 3D CRS "UTM zone 31N / WGS 84 (3D)":
"\fI\%urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031\fP"
(\fIadded in 6.2\fP)
.IP \(bu 2
Extension of OGC URN for CoordinateMetadata.
e.g. \(dq\fI\%urn:ogc:def:CoordinateMetadata:NRCAN::NAD83_CSRS_1997_MTM11_HT2_1997\fP\(dq
e.g. "\fI\%urn:ogc:def:CoordinateMetadata:NRCAN::NAD83_CSRS_1997_MTM11_HT2_1997\fP"
.IP \(bu 2
a OGC URN combining references for concatenated operations
(e.g. \(dq\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP\(dq)
(e.g. "\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP")
.IP \(bu 2
a PROJJSON string. The jsonschema is at \X'tty: link https://proj.org/schemas/v0.4/projjson.schema.json'\fI\%https://proj.org/schemas/v0.4/projjson.schema.json\fP\X'tty: link' (\fIadded in 6.2\fP)
a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.4/projjson.schema.json\fP (\fIadded in 6.2\fP)
.IP \(bu 2
a compound CRS made from two object names separated with \(dq + \(dq. e.g. \(dqWGS 84 + EGM96 height\(dq (\fIadded in 7.1\fP)
a compound CRS made from two object names separated with " + ". e.g. "WGS 84 + EGM96 height" (\fIadded in 7.1\fP)
.UNINDENT
.sp
{object_reference} is a filename preceded by the \(aq@\(aq character. The
file referenced by the {object_reference} must contain a valid
{object_definition}.
.sp
The usage of \(dq{srs_def} {srs_def}\(dq is equivalent to \(dq\-s {srs_def} \-t {srs_def}\(dq (\fIadded in 9.5\fP).
The usage of "{srs_def} {srs_def}" is equivalent to "\-s {srs_def} \-t {srs_def}" (\fIadded in 9.5\fP).
.UNINDENT
.UNINDENT
.SH DESCRIPTION
@@ -114,7 +114,7 @@ or PROJJSON string).
.sp
It can also be used to query coordinate operations available between two CRS.
.sp
The program is named with some reference to the GDAL \X'tty: link https://gdal.org/programs/gdalsrsinfo.html'\fI\%gdalsrsinfo\fP\X'tty: link' utility that offers
The program is named with some reference to the GDAL \fI\%gdalsrsinfo\fP utility that offers
partly similar services.
.sp
The following control parameters can appear in any order:
@@ -182,7 +182,7 @@ potentially compatible of being piped in other utilities.
.B \-\-area name_or_code
Specify an area of interest to restrict the results when researching
coordinate operations between 2 CRS. The area of interest can be specified either
as a name (e.g \(dqDenmark \- onshore\(dq) or a AUTHORITY:CODE (EPSG:3237)
as a name (e.g "Denmark \- onshore") or a AUTHORITY:CODE (EPSG:3237)
This option is exclusive of \fI\%\-\-bbox\fP\&.
.sp
\fBNOTE:\fP
@@ -318,7 +318,7 @@ only used for coordinate operation computation
.INDENT 0.0
.TP
.B \-\-hide\-ballpark
Added in version 7.1.
New in version 7.1.
.sp
Hides any coordinate operation that is, or contains, a
@@ -334,7 +334,7 @@ only used for coordinate operation computation
.INDENT 0.0
.TP
.B \-\-accuracy {accuracy}
Added in version 8.0.
New in version 8.0.
.sp
Sets the minimum desired accuracy for returned coordinate operations.
@@ -349,7 +349,7 @@ only used for coordinate operation computation
.INDENT 0.0
.TP
.B \-\-allow\-ellipsoidal\-height\-as\-vertical\-crs
Added in version 8.0.
New in version 8.0.
.sp
Allows exporting a geographic or projected 3D CRS as a compound CRS whose
@@ -410,7 +410,7 @@ with a likelihood of 70% to EPSG:32631
.INDENT 0.0
.TP
.B \-\-dump\-db\-structure
Added in version 8.1.
New in version 8.1.
.sp
Outputs the sequence of SQL statements to create a new empty valid auxiliary
@@ -421,7 +421,7 @@ definition of the object as SQL statements will be appended.
.INDENT 0.0
.TP
.B \-\-list\-crs [list\-crs\-filter]
Added in version 8.1.
New in version 8.1.
.sp
Outputs a list (authority name:code and CRS name) of the filtered CRSs from the database.
@@ -431,15 +431,15 @@ geographic,geographic_2d,geographic_3d,vertical,projected,compound.
Affected by options \fI\%\-\-authority\fP, \fI\%\-\-area\fP, \fI\%\-\-bbox\fP and \fI\%\-\-spatial\-test\fP
.sp
A visual alternative is the webpage
\X'tty: link https://crs-explorer.proj.org/?all=true'\fI\%CRS Explorer\fP\X'tty: link' .
\fI\%CRS Explorer\fP .
.UNINDENT
.INDENT 0.0
.TP
.B \-\-3d
Added in version 6.3.
New in version 6.3.
.sp
\(dqPromote\(dq 2D CRS(s) to their 3D version, where the vertical axis is the
"Promote" 2D CRS(s) to their 3D version, where the vertical axis is the
ellipsoidal height in metres, using the ellipsoid of the base geodetic CRS.
Depending on PROJ versions and the exact nature of the CRS involved,
especially before PROJ 9.1, a mix of 2D and 3D CRS could lead to 2D or 3D
@@ -449,7 +449,7 @@ transformation to possibly happen.
.INDENT 0.0
.TP
.B \-\-output\-id=AUTH:NAME
Added in version 8.1.
New in version 8.1.
.sp
Identifier to assign to the object (for SQL output).
@@ -458,7 +458,7 @@ It is strongly recommended that new objects should not be added in common
registries, such as \fBEPSG\fP, \fBESRI\fP, \fBIAU\fP, etc.
Users should use a custom authority name instead. If a new object should be
added to the official EPSG registry, users are invited to follow the
procedure explained at \X'tty: link https://epsg.org/dataset-change-requests.html'\fI\%https://epsg.org/dataset\-change\-requests.html\fP\X'tty: link'\&.
procedure explained at \fI\%https://epsg.org/dataset\-change\-requests.html\fP\&.
.sp
Combined with \fI\%\-\-dump\-db\-structure\fP, users can create
auxiliary databases, instead of directly modifying the main \fBproj.db\fP database.
@@ -483,7 +483,7 @@ indented lines by default.
.INDENT 0.0
.TP
.B \-\-searchpaths
Added in version 7.0.
New in version 7.0.
.sp
Output the directories into which PROJ resources will be looked for
@@ -493,7 +493,7 @@ that will override them.
.INDENT 0.0
.TP
.B \-\-remote\-data
Added in version 7.0.
New in version 7.0.
.sp
Display information regarding if \fI\%Network capabilities\fP is enabled, and the
@@ -502,7 +502,7 @@ related URL.
.INDENT 0.0
.TP
.B \-\-s_epoch
Added in version 9.4.
New in version 9.4.
.sp
Epoch of coordinates in the source CRS, as decimal year.
@@ -511,7 +511,7 @@ Only applies to a dynamic CRS.
.INDENT 0.0
.TP
.B \-\-t_epoch
Added in version 9.4.
New in version 9.4.
.sp
Epoch of coordinates in the target CRS, as decimal year.
@@ -525,9 +525,11 @@ Query the CRS object corresponding to EPSG:4326
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
projinfo EPSG:4326
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -535,30 +537,32 @@ Output:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
PROJ.4 string:
+proj=longlat +datum=WGS84 +no_defs +type=crs
WKT2:2019 string:
GEOGCRS[\(dqWGS 84\(dq,
DATUM[\(dqWorld Geodetic System 1984\(dq,
ELLIPSOID[\(dqWGS 84\(dq,6378137,298.257223563,
LENGTHUNIT[\(dqmetre\(dq,1]]],
PRIMEM[\(dqGreenwich\(dq,0,
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
GEOGCRS["WGS 84",
DATUM["World Geodetic System 1984",
ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
CS[ellipsoidal,2],
AXIS[\(dqgeodetic latitude (Lat)\(dq,north,
AXIS["geodetic latitude (Lat)",north,
ORDER[1],
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
AXIS[\(dqgeodetic longitude (Lon)\(dq,east,
ANGLEUNIT["degree",0.0174532925199433]],
AXIS["geodetic longitude (Lon)",east,
ORDER[2],
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
ANGLEUNIT["degree",0.0174532925199433]],
USAGE[
SCOPE[\(dqunknown\(dq],
AREA[\(dqWorld\(dq],
SCOPE["unknown"],
AREA["World"],
BBOX[\-90,\-180,90,180]],
ID[\(dqEPSG\(dq,4326]]
.EE
ID["EPSG",4326]]
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
@@ -569,9 +573,11 @@ and NAD83 (designed with its EPSG code 4269) within an area of interest
.INDENT 0.0
.INDENT 3.5
.sp
.EX
projinfo \-s NAD27 \-t EPSG:4269 \-\-area \(dqUSA \- Missouri\(dq
.EE
.nf
.ft C
projinfo \-s NAD27 \-t EPSG:4269 \-\-area "USA \- Missouri"
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -579,7 +585,8 @@ Output:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
DERIVED_FROM(EPSG):1241, NAD27 to NAD83 (1), 0.15 m, USA \- CONUS including EEZ
PROJ string:
@@ -588,44 +595,45 @@ PROJ string:
+step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1
WKT2:2019 string:
COORDINATEOPERATION[\(dqNAD27 to NAD83 (1)\(dq,
COORDINATEOPERATION["NAD27 to NAD83 (1)",
SOURCECRS[
GEOGCRS[\(dqNAD27\(dq,
DATUM[\(dqNorth American Datum 1927\(dq,
ELLIPSOID[\(dqClarke 1866\(dq,6378206.4,294.978698213898,
LENGTHUNIT[\(dqmetre\(dq,1]]],
PRIMEM[\(dqGreenwich\(dq,0,
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
GEOGCRS["NAD27",
DATUM["North American Datum 1927",
ELLIPSOID["Clarke 1866",6378206.4,294.978698213898,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
CS[ellipsoidal,2],
AXIS[\(dqgeodetic latitude (Lat)\(dq,north,
AXIS["geodetic latitude (Lat)",north,
ORDER[1],
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
AXIS[\(dqgeodetic longitude (Lon)\(dq,east,
ANGLEUNIT["degree",0.0174532925199433]],
AXIS["geodetic longitude (Lon)",east,
ORDER[2],
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]]]],
ANGLEUNIT["degree",0.0174532925199433]]]],
TARGETCRS[
GEOGCRS[\(dqNAD83\(dq,
DATUM[\(dqNorth American Datum 1983\(dq,
ELLIPSOID[\(dqGRS 1980\(dq,6378137,298.257222101,
LENGTHUNIT[\(dqmetre\(dq,1]]],
PRIMEM[\(dqGreenwich\(dq,0,
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
GEOGCRS["NAD83",
DATUM["North American Datum 1983",
ELLIPSOID["GRS 1980",6378137,298.257222101,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
CS[ellipsoidal,2],
AXIS[\(dqgeodetic latitude (Lat)\(dq,north,
AXIS["geodetic latitude (Lat)",north,
ORDER[1],
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
AXIS[\(dqgeodetic longitude (Lon)\(dq,east,
ANGLEUNIT["degree",0.0174532925199433]],
AXIS["geodetic longitude (Lon)",east,
ORDER[2],
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]]]],
METHOD[\(dqCTABLE2\(dq],
PARAMETERFILE[\(dqLatitude and longitude difference file\(dq,\(dqconus\(dq],
ANGLEUNIT["degree",0.0174532925199433]]]],
METHOD["CTABLE2"],
PARAMETERFILE["Latitude and longitude difference file","conus"],
OPERATIONACCURACY[0.15],
USAGE[
SCOPE[\(dqunknown\(dq],
AREA[\(dqUSA \- CONUS including EEZ\(dq],
SCOPE["unknown"],
AREA["USA \- CONUS including EEZ"],
BBOX[23.81,\-129.17,49.38,\-65.69]],
ID[\(dqDERIVED_FROM(EPSG)\(dq,1241]]
.EE
ID["DERIVED_FROM(EPSG)",1241]]
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
@@ -635,9 +643,11 @@ Export an object as a PROJJSON string
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
projinfo GDA94 \-o PROJJSON \-q
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -645,49 +655,51 @@ Output:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
{
\(dqtype\(dq: \(dqGeographicCRS\(dq,
\(dqname\(dq: \(dqGDA94\(dq,
\(dqdatum\(dq: {
\(dqtype\(dq: \(dqGeodeticReferenceFrame\(dq,
\(dqname\(dq: \(dqGeocentric Datum of Australia 1994\(dq,
\(dqellipsoid\(dq: {
\(dqname\(dq: \(dqGRS 1980\(dq,
\(dqsemi_major_axis\(dq: 6378137,
\(dqinverse_flattening\(dq: 298.257222101
"type": "GeographicCRS",
"name": "GDA94",
"datum": {
"type": "GeodeticReferenceFrame",
"name": "Geocentric Datum of Australia 1994",
"ellipsoid": {
"name": "GRS 1980",
"semi_major_axis": 6378137,
"inverse_flattening": 298.257222101
}
},
\(dqcoordinate_system\(dq: {
\(dqsubtype\(dq: \(dqellipsoidal\(dq,
\(dqaxis\(dq: [
"coordinate_system": {
"subtype": "ellipsoidal",
"axis": [
{
\(dqname\(dq: \(dqGeodetic latitude\(dq,
\(dqabbreviation\(dq: \(dqLat\(dq,
\(dqdirection\(dq: \(dqnorth\(dq,
\(dqunit\(dq: \(dqdegree\(dq
"name": "Geodetic latitude",
"abbreviation": "Lat",
"direction": "north",
"unit": "degree"
},
{
\(dqname\(dq: \(dqGeodetic longitude\(dq,
\(dqabbreviation\(dq: \(dqLon\(dq,
\(dqdirection\(dq: \(dqeast\(dq,
\(dqunit\(dq: \(dqdegree\(dq
"name": "Geodetic longitude",
"abbreviation": "Lon",
"direction": "east",
"unit": "degree"
}
]
},
\(dqarea\(dq: \(dqAustralia \- GDA\(dq,
\(dqbbox\(dq: {
\(dqsouth_latitude\(dq: \-60.56,
\(dqwest_longitude\(dq: 93.41,
\(dqnorth_latitude\(dq: \-8.47,
\(dqeast_longitude\(dq: 173.35
"area": "Australia \- GDA",
"bbox": {
"south_latitude": \-60.56,
"west_longitude": 93.41,
"north_latitude": \-8.47,
"east_longitude": 173.35
},
\(dqid\(dq: {
\(dqauthority\(dq: \(dqEPSG\(dq,
\(dqcode\(dq: 4283
"id": {
"authority": "EPSG",
"code": 4283
}
}
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
@@ -697,20 +709,22 @@ Exporting the SQL statements to insert a new CRS in an auxiliary database.
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
# Get the SQL statements for a custom CRS
projinfo \(dq+proj=merc +lat_ts=5 +datum=WGS84 +type=crs +title=my_crs\(dq \-\-output\-id HOBU:MY_CRS \-o SQL \-q > my_crs.sql
projinfo "+proj=merc +lat_ts=5 +datum=WGS84 +type=crs +title=my_crs" \-\-output\-id HOBU:MY_CRS \-o SQL \-q > my_crs.sql
cat my_crs.sql
# Initialize an auxiliary database with the schema of the reference database
echo \(dq.schema\(dq | sqlite3 /path/to/proj.db | sqlite3 aux.db
echo ".schema" | sqlite3 /path/to/proj.db | sqlite3 aux.db
# Append the content of the definition of HOBU:MY_CRS
sqlite3 aux.db < my_crs.db
# Check that everything works OK
projinfo \-\-aux\-db\-path aux.db HOBU:MY_CRS
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -718,13 +732,15 @@ or more simply:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
# Create an auxiliary database with the definition of a custom CRS.
projinfo \(dq+proj=merc +lat_ts=5 +datum=WGS84 +type=crs +title=my_crs\(dq \-\-output\-id HOBU:MY_CRS \-\-dump\-db\-structure | sqlite3 aux.db
projinfo "+proj=merc +lat_ts=5 +datum=WGS84 +type=crs +title=my_crs" \-\-output\-id HOBU:MY_CRS \-\-dump\-db\-structure | sqlite3 aux.db
# Check that everything works OK
projinfo \-\-aux\-db\-path aux.db HOBU:MY_CRS
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -732,63 +748,67 @@ Output:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
INSERT INTO geodetic_crs VALUES(\(aqHOBU\(aq,\(aqGEODETIC_CRS_MY_CRS\(aq,\(aqunknown\(aq,\(aq\(aq,\(aqgeographic 2D\(aq,\(aqEPSG\(aq,\(aq6424\(aq,\(aqEPSG\(aq,\(aq6326\(aq,NULL,0);
INSERT INTO usage VALUES(\(aqHOBU\(aq,\(aqUSAGE_GEODETIC_CRS_MY_CRS\(aq,\(aqgeodetic_crs\(aq,\(aqHOBU\(aq,\(aqGEODETIC_CRS_MY_CRS\(aq,\(aqPROJ\(aq,\(aqEXTENT_UNKNOWN\(aq,\(aqPROJ\(aq,\(aqSCOPE_UNKNOWN\(aq);
INSERT INTO conversion VALUES(\(aqHOBU\(aq,\(aqCONVERSION_MY_CRS\(aq,\(aqunknown\(aq,\(aq\(aq,\(aqEPSG\(aq,\(aq9805\(aq,\(aqMercator (variant B)\(aq,\(aqEPSG\(aq,\(aq8823\(aq,\(aqLatitude of 1st standard parallel\(aq,5,\(aqEPSG\(aq,\(aq9122\(aq,\(aqEPSG\(aq,\(aq8802\(aq,\(aqLongitude of natural origin\(aq,0,\(aqEPSG\(aq,\(aq9122\(aq,\(aqEPSG\(aq,\(aq8806\(aq,\(aqFalse easting\(aq,0,\(aqEPSG\(aq,\(aq9001\(aq,\(aqEPSG\(aq,\(aq8807\(aq,\(aqFalse northing\(aq,0,\(aqEPSG\(aq,\(aq9001\(aq,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO usage VALUES(\(aqHOBU\(aq,\(aqUSAGE_CONVERSION_MY_CRS\(aq,\(aqconversion\(aq,\(aqHOBU\(aq,\(aqCONVERSION_MY_CRS\(aq,\(aqPROJ\(aq,\(aqEXTENT_UNKNOWN\(aq,\(aqPROJ\(aq,\(aqSCOPE_UNKNOWN\(aq);
INSERT INTO projected_crs VALUES(\(aqHOBU\(aq,\(aqMY_CRS\(aq,\(aqmy_crs\(aq,\(aq\(aq,\(aqEPSG\(aq,\(aq4400\(aq,\(aqHOBU\(aq,\(aqGEODETIC_CRS_MY_CRS\(aq,\(aqHOBU\(aq,\(aqCONVERSION_MY_CRS\(aq,NULL,0);
INSERT INTO usage VALUES(\(aqHOBU\(aq,\(aqUSAGE_PROJECTED_CRS_MY_CRS\(aq,\(aqprojected_crs\(aq,\(aqHOBU\(aq,\(aqMY_CRS\(aq,\(aqPROJ\(aq,\(aqEXTENT_UNKNOWN\(aq,\(aqPROJ\(aq,\(aqSCOPE_UNKNOWN\(aq);
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
PROJ.4 string:
+proj=merc +lat_ts=5 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs +type=crs
WKT2:2019 string:
PROJCRS[\(dqmy_crs\(dq,
BASEGEOGCRS[\(dqunknown\(dq,
ENSEMBLE[\(dqWorld Geodetic System 1984 ensemble\(dq,
MEMBER[\(dqWorld Geodetic System 1984 (Transit)\(dq],
MEMBER[\(dqWorld Geodetic System 1984 (G730)\(dq],
MEMBER[\(dqWorld Geodetic System 1984 (G873)\(dq],
MEMBER[\(dqWorld Geodetic System 1984 (G1150)\(dq],
MEMBER[\(dqWorld Geodetic System 1984 (G1674)\(dq],
MEMBER[\(dqWorld Geodetic System 1984 (G1762)\(dq],
ELLIPSOID[\(dqWGS 84\(dq,6378137,298.257223563,
LENGTHUNIT[\(dqmetre\(dq,1]],
PROJCRS["my_crs",
BASEGEOGCRS["unknown",
ENSEMBLE["World Geodetic System 1984 ensemble",
MEMBER["World Geodetic System 1984 (Transit)"],
MEMBER["World Geodetic System 1984 (G730)"],
MEMBER["World Geodetic System 1984 (G873)"],
MEMBER["World Geodetic System 1984 (G1150)"],
MEMBER["World Geodetic System 1984 (G1674)"],
MEMBER["World Geodetic System 1984 (G1762)"],
ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]],
ENSEMBLEACCURACY[2.0]],
PRIMEM[\(dqGreenwich\(dq,0,
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
ID[\(dqHOBU\(dq,\(dqGEODETIC_CRS_MY_CRS\(dq]],
CONVERSION[\(dqunknown\(dq,
METHOD[\(dqMercator (variant B)\(dq,
ID[\(dqEPSG\(dq,9805]],
PARAMETER[\(dqLatitude of 1st standard parallel\(dq,5,
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433],
ID[\(dqEPSG\(dq,8823]],
PARAMETER[\(dqLongitude of natural origin\(dq,0,
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433],
ID[\(dqEPSG\(dq,8802]],
PARAMETER[\(dqFalse easting\(dq,0,
LENGTHUNIT[\(dqmetre\(dq,1],
ID[\(dqEPSG\(dq,8806]],
PARAMETER[\(dqFalse northing\(dq,0,
LENGTHUNIT[\(dqmetre\(dq,1],
ID[\(dqEPSG\(dq,8807]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
ID["HOBU","GEODETIC_CRS_MY_CRS"]],
CONVERSION["unknown",
METHOD["Mercator (variant B)",
ID["EPSG",9805]],
PARAMETER["Latitude of 1st standard parallel",5,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8823]],
PARAMETER["Longitude of natural origin",0,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8802]],
PARAMETER["False easting",0,
LENGTHUNIT["metre",1],
ID["EPSG",8806]],
PARAMETER["False northing",0,
LENGTHUNIT["metre",1],
ID["EPSG",8807]]],
CS[Cartesian,2],
AXIS[\(dq(E)\(dq,east,
AXIS["(E)",east,
ORDER[1],
LENGTHUNIT[\(dqmetre\(dq,1]],
AXIS[\(dq(N)\(dq,north,
LENGTHUNIT["metre",1]],
AXIS["(N)",north,
ORDER[2],
LENGTHUNIT[\(dqmetre\(dq,1]],
ID[\(dqHOBU\(dq,\(dqMY_CRS\(dq]]
.EE
LENGTHUNIT["metre",1]],
ID["HOBU","MY_CRS"]]
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
@@ -798,9 +818,11 @@ Get the WKT representation of EPSG:25832 in the WKT1:GDAL output format and on a
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
projinfo \-o WKT1:GDAL \-\-single\-line EPSG:25832
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
@@ -808,10 +830,12 @@ Output:
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
WKT1:GDAL string:
PROJCS[\(dqETRS89 / UTM zone 32N\(dq,GEOGCS[\(dqETRS89\(dq,DATUM[\(dqEuropean_Terrestrial_Reference_System_1989\(dq,SPHEROID[\(dqGRS 1980\(dq,6378137,298.257222101,AUTHORITY[\(dqEPSG\(dq,\(dq7019\(dq]],AUTHORITY[\(dqEPSG\(dq,\(dq6258\(dq]],PRIMEM[\(dqGreenwich\(dq,0,AUTHORITY[\(dqEPSG\(dq,\(dq8901\(dq]],UNIT[\(dqdegree\(dq,0.0174532925199433,AUTHORITY[\(dqEPSG\(dq,\(dq9122\(dq]],AUTHORITY[\(dqEPSG\(dq,\(dq4258\(dq]],PROJECTION[\(dqTransverse_Mercator\(dq],PARAMETER[\(dqlatitude_of_origin\(dq,0],PARAMETER[\(dqcentral_meridian\(dq,9],PARAMETER[\(dqscale_factor\(dq,0.9996],PARAMETER[\(dqfalse_easting\(dq,500000],PARAMETER[\(dqfalse_northing\(dq,0],UNIT[\(dqmetre\(dq,1,AUTHORITY[\(dqEPSG\(dq,\(dq9001\(dq]],AXIS[\(dqEasting\(dq,EAST],AXIS[\(dqNorthing\(dq,NORTH],AUTHORITY[\(dqEPSG\(dq,\(dq25832\(dq]]
.EE
PROJCS["ETRS89 / UTM zone 32N",GEOGCS["ETRS89",DATUM["European_Terrestrial_Reference_System_1989",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6258"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4258"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","25832"]]
.ft P
.fi
.UNINDENT
.UNINDENT
.SH SEE ALSO
@@ -819,11 +843,11 @@ PROJCS[\(dqETRS89 / UTM zone 32N\(dq,GEOGCS[\(dqETRS89\(dq,DATUM[\(dqEuropean_Te
\fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP, \fBproj(1)\fP, \fBprojsync(1)\fP
.SH BUGS
.sp
A list of known bugs can be found at \X'tty: link https://github.com/OSGeo/PROJ/issues'\fI\%https://github.com/OSGeo/PROJ/issues\fP\X'tty: link'
A list of known bugs can be found at \fI\%https://github.com/OSGeo/PROJ/issues\fP
where new bug reports can be submitted to.
.SH HOME PAGE
.sp
\X'tty: link https://proj.org/'\fI\%https://proj.org/\fP\X'tty: link'
\fI\%https://proj.org/\fP
.SH AUTHOR
Even Rouault
.SH COPYRIGHT
+14 -10
View File
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "PROJSYNC" "1" "08 Sep 2025" "9.6" "PROJ"
.TH "PROJSYNC" "1" "01 Dec 2025" "9.7" "PROJ"
.SH NAME
projsync \- Downloading tool of resource files
.SH SYNOPSIS
@@ -145,7 +145,7 @@ Quiet mode
.INDENT 0.0
.TP
.B \-\-verbose
Added in version 8.1.
New in version 8.1.
.sp
Verbose mode (more than default)
@@ -163,7 +163,7 @@ List file names, with the source_id and area_of_use properties.
.INDENT 0.0
.TP
.B \-\-no\-version\-filtering
Added in version 8.1.
New in version 8.1.
.sp
By default, projsync only downloads files that are compatible of
@@ -186,9 +186,11 @@ Download all resource files
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
projsync \-\-all
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.INDENT 0.0
@@ -198,9 +200,11 @@ Download resource files covering specified point and attributed to an agency
.INDENT 0.0
.INDENT 3.5
.sp
.EX
.nf
.ft C
projsync \-\-source\-id fr_ign \-\-bbox 2,49,2,49
.EE
.ft P
.fi
.UNINDENT
.UNINDENT
.SH SEE ALSO
@@ -208,13 +212,13 @@ projsync \-\-source\-id fr_ign \-\-bbox 2,49,2,49
\fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP, \fBproj(1)\fP, \fBprojinfo(1)\fP
.SH BUGS
.sp
A list of known bugs can be found at \X'tty: link https://github.com/OSGeo/PROJ/issues'\fI\%https://github.com/OSGeo/PROJ/issues\fP\X'tty: link'
A list of known bugs can be found at \fI\%https://github.com/OSGeo/PROJ/issues\fP
where new bug reports can be submitted to.
Bugs specific to resource files should be submitted to
\X'tty: link https://github.com/OSGeo/PROJ-data/issues'\fI\%https://github.com/OSGeo/PROJ\-data/issues\fP\X'tty: link'
\fI\%https://github.com/OSGeo/PROJ\-data/issues\fP
.SH HOME PAGE
.sp
\X'tty: link https://proj.org/'\fI\%https://proj.org/\fP\X'tty: link'
\fI\%https://proj.org/\fP
.SH AUTHOR
Even Rouault
.SH COPYRIGHT
+3 -1
View File
@@ -178,7 +178,9 @@ double proj_strtod(const char *str, char **endptr) {
if ((0 == *p) || nullptr == strchr("0123456789eE.", *p) || isspace(*p)) {
if (endptr)
*endptr = const_cast<char *>(p);
return sign == -1 ? -0 : 0;
if (sign == -1)
return -number;
return number;
}
/* Now expect a (potentially zero-length) string of digits */
+64 -7
View File
@@ -346,7 +346,7 @@ static BaseObjectNNPtr buildObject(
}
}
}
} else if (dbContext && !kind.empty() && kind != "crs" &&
} else if (dbContext && !kind.empty() && kind != "crs_preferred" &&
l_user_string.find(':') == std::string::npos) {
std::vector<AuthorityFactory::ObjectType> allowedTypes;
if (kind == "operation")
@@ -360,6 +360,8 @@ static BaseObjectNNPtr buildObject(
else if (kind == "ensemble")
allowedTypes.push_back(
AuthorityFactory::ObjectType::DATUM_ENSEMBLE);
else if (kind == "crs")
allowedTypes.push_back(AuthorityFactory::ObjectType::CRS);
constexpr size_t limitResultCount = 10;
auto factory = AuthorityFactory::create(NN_NO_CHECK(dbContext),
std::string());
@@ -406,6 +408,61 @@ static BaseObjectNNPtr buildObject(
} else {
obj =
createFromUserInput(l_user_string, dbContext).as_nullable();
if (kind == "crs_preferred" &&
dynamic_cast<CRS *>(obj.get()) == nullptr) {
auto factory = AuthorityFactory::create(
NN_NO_CHECK(dbContext), std::string());
auto res = factory->createObjectsFromName(
l_user_string, {AuthorityFactory::ObjectType::CRS},
/* approximateMatch = */ false,
/* limitResultCount = */ 2);
if (res.size() == 1) {
obj = res.front().as_nullable();
} else if (res.empty()) {
res = factory->createObjectsFromName(
l_user_string, {AuthorityFactory::ObjectType::CRS},
/* approximateMatch = */ true,
/* limitResultCount = */ 2);
if (res.size() == 1) {
obj = res.front().as_nullable();
} else {
bool severalCandidates = false;
BaseObjectPtr objCandidate;
for (const auto &l_obj : res) {
if (Identifier::isEquivalentName(
l_obj->nameStr().c_str(),
l_user_string.c_str())) {
if (objCandidate) {
severalCandidates = true;
break;
} else {
objCandidate = l_obj.as_nullable();
}
}
}
if (severalCandidates) {
std::string msg(
"several objects matching this name: ");
bool first = true;
for (const auto &l_obj : res) {
if (msg.size() > 200) {
msg += ", ...";
break;
}
if (!first) {
msg += ", ";
}
first = false;
msg += l_obj->nameStr();
}
std::cerr << context << ": " << msg
<< std::endl;
std::exit(1);
} else if (objCandidate)
obj = objCandidate;
}
}
}
}
}
} catch (const std::exception &e) {
@@ -880,9 +937,9 @@ static void outputOperations(
bool showSuperseded, bool promoteTo3D, bool normalizeAxisOrder,
double minimumAccuracy, const OutputOptions &outputOpt, bool summary) {
auto sourceObj = buildObject(
dbContext, sourceCRSStr, sourceEpoch, "crs", "source CRS", false,
CoordinateOperationContext::IntermediateCRSUse::NEVER, promoteTo3D,
normalizeAxisOrder, outputOpt.quiet);
dbContext, sourceCRSStr, sourceEpoch, "crs_preferred", "source CRS",
false, CoordinateOperationContext::IntermediateCRSUse::NEVER,
promoteTo3D, normalizeAxisOrder, outputOpt.quiet);
auto sourceCRS = nn_dynamic_pointer_cast<CRS>(sourceObj);
CoordinateMetadataPtr sourceCoordinateMetadata;
if (!sourceCRS) {
@@ -901,9 +958,9 @@ static void outputOperations(
}
auto targetObj = buildObject(
dbContext, targetCRSStr, targetEpoch, "crs", "target CRS", false,
CoordinateOperationContext::IntermediateCRSUse::NEVER, promoteTo3D,
normalizeAxisOrder, outputOpt.quiet);
dbContext, targetCRSStr, targetEpoch, "crs_preferred", "target CRS",
false, CoordinateOperationContext::IntermediateCRSUse::NEVER,
promoteTo3D, normalizeAxisOrder, outputOpt.quiet);
auto targetCRS = nn_dynamic_pointer_cast<CRS>(targetObj);
CoordinateMetadataPtr targetCoordinateMetadata;
if (!targetCRS) {
+4
View File
@@ -557,12 +557,14 @@ PJ *proj_clone(PJ_CONTEXT *ctx, const PJ *obj) {
newPj->descr = "Set of coordinate operations";
newPj->ctx = ctx;
newPj->copyStateFrom(*obj);
ctx->forceOver = obj->over != 0;
const int old_debug_level = ctx->debug_level;
ctx->debug_level = PJ_LOG_NONE;
for (const auto &altOp : obj->alternativeCoordinateOperations) {
newPj->alternativeCoordinateOperations.emplace_back(
PJCoordOperation(ctx, altOp));
}
ctx->forceOver = false;
ctx->debug_level = old_debug_level;
}
return newPj;
@@ -570,7 +572,9 @@ PJ *proj_clone(PJ_CONTEXT *ctx, const PJ *obj) {
return nullptr;
}
try {
ctx->forceOver = obj->over != 0;
PJ *newPj = pj_obj_create(ctx, NN_NO_CHECK(obj->iso_obj));
ctx->forceOver = false;
if (newPj) {
newPj->copyStateFrom(*obj);
}
+94 -11
View File
@@ -2250,9 +2250,15 @@ void GeodeticCRS::_exportToWKT(io::WKTFormatter *formatter) const {
}
}
if (l_esri_name.empty()) {
l_esri_name = io::WKTFormatter::morphNameToESRI(l_name);
if (!starts_with(l_esri_name, "GCS_")) {
l_esri_name = "GCS_" + l_esri_name;
// For now, there's no ESRI alias for this CRS. Fallback to
// ETRS89
if (l_name == "ETRS89-NOR [EUREF89]") {
l_esri_name = "GCS_ETRS_1989";
} else {
l_esri_name = io::WKTFormatter::morphNameToESRI(l_name);
if (!starts_with(l_esri_name, "GCS_")) {
l_esri_name = "GCS_" + l_esri_name;
}
}
}
}
@@ -3169,10 +3175,10 @@ bool GeographicCRS::_isEquivalentTo(
}
const auto standardCriterion = getStandardCriterion(criterion);
const auto otherGeogCRS = dynamic_cast<const GeographicCRS *>(other);
if (GeodeticCRS::_isEquivalentToNoTypeCheck(other, standardCriterion,
dbContext)) {
// Make sure GeoPackage "Undefined geographic SRS" != EPSG:4326
const auto otherGeogCRS = dynamic_cast<const GeographicCRS *>(other);
if ((nameStr() == "Undefined geographic SRS" ||
otherGeogCRS->nameStr() == "Undefined geographic SRS") &&
otherGeogCRS->nameStr() != nameStr()) {
@@ -3180,6 +3186,39 @@ bool GeographicCRS::_isEquivalentTo(
}
return true;
}
// In EPSG v12.025, Norway projected systems based on ETRS89 (EPSG:4258)
// have swiched to use ETRS89-NOR [EUREF89] (EPSG:10875). There's no way
// from the current content of the database to infer both CRS are equivalent
if (criterion != util::IComparable::Criterion::STRICT) {
if (((nameStr() == "ETRS89" &&
otherGeogCRS->nameStr() == "ETRS89-NOR [EUREF89]") ||
(nameStr() == "ETRS89-NOR [EUREF89]" &&
otherGeogCRS->nameStr() == "ETRS89")) &&
ellipsoid()->_isEquivalentTo(otherGeogCRS->ellipsoid().get(),
criterion) &&
datumNonNull(dbContext)->primeMeridian()->_isEquivalentTo(
otherGeogCRS->datumNonNull(dbContext)->primeMeridian().get(),
criterion)) {
auto thisCS = coordinateSystem();
auto otherCS = otherGeogCRS->coordinateSystem();
if (thisCS->_isEquivalentTo(otherCS.get(), criterion)) {
return true;
} else if (criterion == util::IComparable::Criterion::
EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS) {
const auto &otherAxisList = otherCS->axisList();
return thisCS->axisList().size() == 2 &&
otherAxisList.size() == 2 &&
thisCS->_isEquivalentTo(
cs::EllipsoidalCS::create(util::PropertyMap(),
otherAxisList[1],
otherAxisList[0])
.get(),
criterion);
}
}
}
if (criterion !=
util::IComparable::Criterion::EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS) {
return false;
@@ -6238,13 +6277,57 @@ BoundCRS::_identify(const io::AuthorityFactoryPtr &authorityFactory) const {
refTransf.get(),
util::IComparable::Criterion::EQUIVALENT,
dbContext)) {
resMatchOfTransfToWGS84.emplace_back(
create(candidateBaseCRS, d->hubCRS_,
NN_NO_CHECK(util::nn_dynamic_pointer_cast<
operation::Transformation>(op))),
pair.second);
foundOp = true;
break;
auto transf = util::nn_dynamic_pointer_cast<
operation::Transformation>(op);
if (transf) {
resMatchOfTransfToWGS84.emplace_back(
create(candidateBaseCRS, d->hubCRS_,
NN_NO_CHECK(transf)),
pair.second);
foundOp = true;
break;
} else {
auto concatenated = dynamic_cast<
const operation::ConcatenatedOperation *>(
op.get());
if (concatenated) {
// Case for EPSG:4807 / "NTF (Paris)" that is
// made of a longitude rotation followed by a
// Helmert The prime meridian shift will be
// accounted elsewhere
const auto &subops = concatenated->operations();
if (subops.size() == 2) {
auto firstOpIsTransformation = dynamic_cast<
const operation::Transformation *>(
subops[0].get());
auto firstOpIsConversion = dynamic_cast<
const operation::Conversion *>(
subops[0].get());
if ((firstOpIsTransformation &&
firstOpIsTransformation
->isLongitudeRotation()) ||
(dynamic_cast<DerivedCRS *>(
candidateBaseCRS.get()) &&
firstOpIsConversion)) {
transf = util::nn_dynamic_pointer_cast<
operation::Transformation>(
subops[1]);
if (transf &&
!starts_with(transf->nameStr(),
"Ballpark geo")) {
resMatchOfTransfToWGS84
.emplace_back(
create(candidateBaseCRS,
d->hubCRS_,
NN_NO_CHECK(transf)),
pair.second);
foundOp = true;
break;
}
}
}
}
}
}
}
if (!foundOp) {
+9 -3
View File
@@ -1398,9 +1398,15 @@ void GeodeticReferenceFrame::_exportToWKT(
.size() == 1;
}
if (!aliasFound) {
l_name = io::WKTFormatter::morphNameToESRI(l_name);
if (!starts_with(l_name, "D_")) {
l_name = "D_" + l_name;
// For now, there's no ESRI alias for this CRS. Fallback to
// ETRS89
if (l_name == "ETRS89-NOR [EUREF89]") {
l_name = "D_ETRS_1989";
} else {
l_name = io::WKTFormatter::morphNameToESRI(l_name);
if (!starts_with(l_name, "D_")) {
l_name = "D_" + l_name;
}
}
}
}
+133 -56
View File
@@ -2546,6 +2546,8 @@ WKTParser::Private::buildDatumEnsemble(const WKTNodeNNPtr &node,
ThrowMissing(WKTConstants::ELLIPSOID);
}
auto properties = buildProperties(node);
std::vector<DatumNNPtr> datums;
for (const auto &subNode : nodeP->children()) {
if (ci_equal(subNode->GP()->value(), WKTConstants::MEMBER)) {
@@ -2565,6 +2567,31 @@ WKTParser::Private::buildDatumEnsemble(const WKTNodeNNPtr &node,
}
}
if (datums.empty() && !nodeP->children().empty()) {
auto name = stripQuotes(nodeP->children()[0]);
if (dbContext_) {
auto authFactory = AuthorityFactory::create(NN_NO_CHECK(dbContext_),
std::string());
auto res = authFactory->createObjectsFromName(
name, {AuthorityFactory::ObjectType::DATUM_ENSEMBLE}, true, 1);
if (res.size() == 1) {
auto datumEnsemble =
dynamic_cast<const DatumEnsemble *>(res.front().get());
if (datumEnsemble) {
datums = datumEnsemble->datums();
}
} else {
throw ParsingException(
"No entry for datum ensemble '" + name +
"' in database, and no explicit member specified");
}
} else {
throw ParsingException("Datum ensemble '" + name +
"' has no explicit member specified and no "
"connection to database");
}
}
auto &accuracyNode = nodeP->lookForChild(WKTConstants::ENSEMBLEACCURACY);
auto &accuracyNodeChildren = accuracyNode->GP()->children();
if (accuracyNodeChildren.empty()) {
@@ -2574,7 +2601,7 @@ WKTParser::Private::buildDatumEnsemble(const WKTNodeNNPtr &node,
PositionalAccuracy::create(accuracyNodeChildren[0]->GP()->value());
try {
return DatumEnsemble::create(buildProperties(node), datums, accuracy);
return DatumEnsemble::create(properties, datums, accuracy);
} catch (const util::Exception &e) {
throw buildRethrow(__FUNCTION__, e);
}
@@ -4549,7 +4576,7 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) {
ThrowMissing(WKTConstants::CS_);
}
const std::string projCRSName = stripQuotes(nodeP->children()[0]);
std::string projCRSName = stripQuotes(nodeP->children()[0]);
auto cs = [this, &projCRSName, &nodeP, &csNode, &node, &nodeValue,
&conversionNode]() -> CoordinateSystemNNPtr {
@@ -4654,6 +4681,7 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) {
}
}
projCRSName = officialName;
props.set(IdentifiedObject::NAME_KEY, officialName);
}
}
@@ -4764,6 +4792,27 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) {
ThrowNotExpectedCSType(CartesianCS::WKT2_TYPE);
}
// In EPSG v12.025, Norway projected systems based on ETRS89 (EPSG:4258)
// have swiched to use ETRS89-NOR [EUREF89] (EPSG:10875). There's no way
// from the current content of the database to infer both CRS are equivalent
if (starts_with(projCRSName, "ETRS89 / NTM zone")) {
projCRSName = "ETRS89-NOR [EUREF89] / NTM zone" +
projCRSName.substr(strlen("ETRS89 / NTM zone"));
props.set(IdentifiedObject::NAME_KEY, projCRSName);
}
if (dbContext_ &&
starts_with(projCRSName, "ETRS89-NOR [EUREF89] / NTM zone") &&
baseGeodCRS->nameStr() == "ETRS89" &&
util::isOfExactType<GeographicCRS>(*(baseGeodCRS.get())) &&
baseGeodCRS->coordinateSystem()->axisList().size() == 2) {
auto factoryCRS_EPSG =
AuthorityFactory::create(NN_NO_CHECK(dbContext_), Identifier::EPSG);
try {
baseGeodCRS = factoryCRS_EPSG->createGeodeticCRS("10875");
} catch (const std::exception &) {
}
}
if (cartesianCS->axisList().size() == 3 &&
baseGeodCRS->coordinateSystem()->axisList().size() == 2) {
baseGeodCRS = NN_NO_CHECK(util::nn_dynamic_pointer_cast<GeodeticCRS>(
@@ -7082,70 +7131,98 @@ CoordinateSystemNNPtr JSONParser::buildCS(const json &j) {
// ---------------------------------------------------------------------------
DatumEnsembleNNPtr JSONParser::buildDatumEnsemble(const json &j) {
auto membersJ = getArray(j, "members");
std::vector<DatumNNPtr> datums;
const bool hasEllipsoid(j.contains("ellipsoid"));
for (const auto &memberJ : membersJ) {
if (!memberJ.is_object()) {
throw ParsingException(
"Unexpected type for value of a \"members\" member");
}
auto datumName(getName(memberJ));
bool datumAdded = false;
if (dbContext_ && memberJ.contains("id")) {
auto id = getObject(memberJ, "id");
auto authority = getString(id, "authority");
auto authFactory =
AuthorityFactory::create(NN_NO_CHECK(dbContext_), authority);
auto code = id["code"];
std::string codeStr;
if (code.is_string()) {
codeStr = code.get<std::string>();
} else if (code.is_number_integer()) {
codeStr = internal::toString(code.get<int>());
} else {
throw ParsingException("Unexpected type for value of \"code\"");
if (j.contains("members")) {
auto membersJ = getArray(j, "members");
const bool hasEllipsoid(j.contains("ellipsoid"));
for (const auto &memberJ : membersJ) {
if (!memberJ.is_object()) {
throw ParsingException(
"Unexpected type for value of a \"members\" member");
}
try {
datums.push_back(authFactory->createDatum(codeStr));
datumAdded = true;
} catch (const std::exception &) {
// Silently ignore, as this isn't necessary an error.
// If an older PROJ version parses a DatumEnsemble object of
// a more recent PROJ version where the datum ensemble got
// a new member, it might be unknown from the older PROJ.
auto datumName(getName(memberJ));
bool datumAdded = false;
if (dbContext_ && memberJ.contains("id")) {
auto id = getObject(memberJ, "id");
auto authority = getString(id, "authority");
auto authFactory = AuthorityFactory::create(
NN_NO_CHECK(dbContext_), authority);
auto code = id["code"];
std::string codeStr;
if (code.is_string()) {
codeStr = code.get<std::string>();
} else if (code.is_number_integer()) {
codeStr = internal::toString(code.get<int>());
} else {
throw ParsingException(
"Unexpected type for value of \"code\"");
}
try {
datums.push_back(authFactory->createDatum(codeStr));
datumAdded = true;
} catch (const std::exception &) {
// Silently ignore, as this isn't necessary an error.
// If an older PROJ version parses a DatumEnsemble object of
// a more recent PROJ version where the datum ensemble got
// a new member, it might be unknown from the older PROJ.
}
}
}
if (dbContext_ && !datumAdded) {
if (dbContext_ && !datumAdded) {
auto authFactory = AuthorityFactory::create(
NN_NO_CHECK(dbContext_), std::string());
auto list = authFactory->createObjectsFromName(
datumName, {AuthorityFactory::ObjectType::DATUM},
false /* approximate=false*/);
if (!list.empty()) {
auto datum =
util::nn_dynamic_pointer_cast<Datum>(list.front());
if (!datum)
throw ParsingException(
"DatumEnsemble member is not a datum");
datums.push_back(NN_NO_CHECK(datum));
datumAdded = true;
}
}
if (!datumAdded) {
// Fallback if no db match
if (hasEllipsoid) {
datums.emplace_back(GeodeticReferenceFrame::create(
buildProperties(memberJ),
buildEllipsoid(getObject(j, "ellipsoid")),
optional<std::string>(), PrimeMeridian::GREENWICH));
} else {
datums.emplace_back(VerticalReferenceFrame::create(
buildProperties(memberJ)));
}
}
}
} else {
auto name = getString(j, "name");
if (dbContext_) {
auto authFactory = AuthorityFactory::create(NN_NO_CHECK(dbContext_),
std::string());
auto list = authFactory->createObjectsFromName(
datumName, {AuthorityFactory::ObjectType::DATUM},
false /* approximate=false*/);
if (!list.empty()) {
auto datum = util::nn_dynamic_pointer_cast<Datum>(list.front());
if (!datum)
throw ParsingException(
"DatumEnsemble member is not a datum");
datums.push_back(NN_NO_CHECK(datum));
datumAdded = true;
}
}
if (!datumAdded) {
// Fallback if no db match
if (hasEllipsoid) {
datums.emplace_back(GeodeticReferenceFrame::create(
buildProperties(memberJ),
buildEllipsoid(getObject(j, "ellipsoid")),
optional<std::string>(), PrimeMeridian::GREENWICH));
auto res = authFactory->createObjectsFromName(
name, {AuthorityFactory::ObjectType::DATUM_ENSEMBLE}, true, 1);
if (res.size() == 1) {
auto datumEnsemble =
dynamic_cast<const DatumEnsemble *>(res.front().get());
if (datumEnsemble) {
datums = datumEnsemble->datums();
}
} else {
datums.emplace_back(
VerticalReferenceFrame::create(buildProperties(memberJ)));
throw ParsingException(
"No entry for datum ensemble '" + name +
"' in database, and no explicit member specified");
}
} else {
throw ParsingException("Datum ensemble '" + name +
"' has no explicit member specified and no "
"connection to database");
}
}
return DatumEnsemble::create(
buildProperties(j), datums,
PositionalAccuracy::create(getString(j, "accuracy")));
@@ -3714,7 +3714,8 @@ CoordinateOperationFactory::Private::createOperations(
}
if (dynamic_cast<const crs::EngineeringCRS *>(sourceCRS.get()) &&
sourceCRS->_isEquivalentTo(targetCRS.get())) {
sourceCRS->_isEquivalentTo(targetCRS.get(),
util::IComparable::Criterion::EQUIVALENT)) {
std::string name("Identity transformation from ");
name += sourceCRS->nameStr();
name += " to ";
@@ -3845,7 +3846,9 @@ bool CoordinateOperationFactory::Private::createOperationsFromDatabase(
if (pmoDst.size() == pmoSrc.size()) {
bool ok = true;
for (size_t i = 0; i < pmoSrc.size(); ++i) {
if (pmoSrc[i]->_isEquivalentTo(pmoDst[i].get())) {
if (pmoSrc[i]->_isEquivalentTo(
pmoDst[i].get(),
util::IComparable::Criterion::EQUIVALENT)) {
auto pmo = pmoSrc[i]->cloneWithEpochs(*sourceEpoch,
*targetEpoch);
std::vector<operation::CoordinateOperationNNPtr> ops;
@@ -4075,12 +4078,27 @@ bool CoordinateOperationFactory::Private::createOperationsFromDatabase(
}
}
if ((res.empty() || tooSmallAreas) &&
!context.inCreateOperationsWithDatumPivotAntiRecursion &&
bool allRequiresPerCoordinateInputTime = false;
for (const auto &op : res) {
allRequiresPerCoordinateInputTime =
op->requiresPerCoordinateInputTime();
if (!allRequiresPerCoordinateInputTime) {
break;
}
}
if (!context.inCreateOperationsWithDatumPivotAntiRecursion &&
!resFindDirectNonEmptyBeforeFiltering && geodSrc && geodDst &&
!sameGeodeticDatum && context.context->getIntermediateCRS().empty() &&
context.context->getAllowUseIntermediateCRS() !=
CoordinateOperationContext::IntermediateCRSUse::NEVER) {
CoordinateOperationContext::IntermediateCRSUse::NEVER &&
(res.empty() || tooSmallAreas ||
// If all coordinate operations are time-dependent and none of the
// source or target CRS are dynamic, try through an intermediate CRS
// (we go here between ETRS89 and ETRS89-NO that would otherwise only
// use NKG time-dependent transformations)
(allRequiresPerCoordinateInputTime && !geodSrc->isDynamic() &&
!geodDst->isDynamic()))) {
// Currently triggered by "IG05/12 Intermediate CRS" to ITRF2014
std::set<std::string> oSetNames;
@@ -4089,6 +4107,7 @@ bool CoordinateOperationFactory::Private::createOperationsFromDatabase(
oSetNames.insert(op->nameStr());
}
}
auto resWithIntermediate = findsOpsInRegistryWithIntermediate(
sourceCRS, targetCRS, context, true);
if (tooSmallAreas && !res.empty()) {
@@ -6337,7 +6356,13 @@ void CoordinateOperationFactory::Private::createOperationsCompoundToGeog(
const bool srcAndTargetGeogAreSame =
componentsSrc[0]->isEquivalentTo(
targetCRS->demoteTo2D(std::string(), dbContext).get(),
util::IComparable::Criterion::EQUIVALENT);
util::IComparable::Criterion::EQUIVALENT) &&
// Kind of a hack for EPSG:4937 to EPSG:9883 to work
// properly
!((componentsSrc[0]->nameStr() == "ETRS89" &&
targetCRS->nameStr() == "ETRS89-NOR [EUREF89]") ||
(componentsSrc[0]->nameStr() == "ETRS89-NOR [EUREF89]" &&
targetCRS->nameStr() == "ETRS89"));
// Lambda to add to the set the name of geodetic datum of the
// CRS
@@ -6607,7 +6632,9 @@ void CoordinateOperationFactory::Private::createOperationsCompoundToCompound(
const auto vertSrc = componentsSrc[1]->extractVerticalCRS();
const auto vertDst = componentsDst[1]->extractVerticalCRS();
if (vertSrc && vertDst &&
!componentsSrc[1]->_isEquivalentTo(componentsDst[1].get())) {
!componentsSrc[1]->_isEquivalentTo(
componentsDst[1].get(),
util::IComparable::Criterion::EQUIVALENT)) {
if ((!vertSrc->geoidModel().empty() ||
!vertDst->geoidModel().empty()) &&
// To be able to use "CGVD28 height to
@@ -6928,8 +6955,7 @@ void CoordinateOperationFactory::Private::createOperationsCompoundToCompound(
auto interpolationCRS =
NN_NO_CHECK(std::static_pointer_cast<crs::SingleCRS>(srcGeog));
auto interpTransformCRS = verticalTransform->interpolationCRS();
if (interpTransformCRS) {
if (auto interpTransformCRS = verticalTransform->interpolationCRS()) {
auto interpTransformSingleCRS =
std::static_pointer_cast<crs::SingleCRS>(interpTransformCRS);
if (interpTransformSingleCRS) {
@@ -6944,10 +6970,17 @@ void CoordinateOperationFactory::Private::createOperationsCompoundToCompound(
dynamic_cast<crs::GeographicCRS *>(
compSrc0BoundCrs->hubCRS().get()) &&
compSrc0BoundCrs->hubCRS()->_isEquivalentTo(
compDst0BoundCrs->hubCRS().get())) {
compDst0BoundCrs->hubCRS().get(),
util::IComparable::Criterion::EQUIVALENT)) {
interpolationCRS =
NN_NO_CHECK(util::nn_dynamic_pointer_cast<crs::SingleCRS>(
compSrc0BoundCrs->hubCRS()));
} else if (compSrc0BoundCrs && !compDst0BoundCrs &&
compSrc0BoundCrs->hubCRS()->_isEquivalentTo(
dstGeog.get(),
util::IComparable::Criterion::EQUIVALENT)) {
interpolationCRS = NN_NO_CHECK(
std::static_pointer_cast<crs::SingleCRS>(dstGeog));
}
}
@@ -7133,7 +7166,8 @@ void CoordinateOperationFactory::Private::createOperationsBoundToCompound(
const auto compDst0BoundCrsHubAsGeogCRSDatum =
compDst0BoundCrsHubAsGeogCRS->datumNonNull(dbContext);
if (boundSrcHubAsGeogCRSDatum->_isEquivalentTo(
compDst0BoundCrsHubAsGeogCRSDatum.get())) {
compDst0BoundCrsHubAsGeogCRSDatum.get(),
util::IComparable::Criterion::EQUIVALENT)) {
auto cs = cs::EllipsoidalCS::
createLatitudeLongitudeEllipsoidalHeight(
common::UnitOfMeasure::DEGREE,
@@ -7159,7 +7193,8 @@ void CoordinateOperationFactory::Private::createOperationsBoundToCompound(
for (const auto &opDst : geog3DToTargetOps) {
if (opSrc->targetCRS() && opDst->sourceCRS() &&
!opSrc->targetCRS()->_isEquivalentTo(
opDst->sourceCRS().get())) {
opDst->sourceCRS().get(),
util::IComparable::Criterion::EQUIVALENT)) {
// Shouldn't happen normally, but typically
// one of them can be 2D and the other 3D
// due to above createOperations() not
@@ -125,8 +125,6 @@ PROJBasedOperationNNPtr PROJBasedOperation::create(
if (inverse) {
formatter->startInversion();
}
const bool bRequiresPerCoordinateInputTime =
formatter->requiresPerCoordinateInputTime();
projExportable->_exportToPROJString(formatter.get());
if (inverse) {
formatter->stopInversion();
@@ -148,7 +146,8 @@ PROJBasedOperationNNPtr PROJBasedOperation::create(
op->projStringExportable_ = projExportable.as_nullable();
op->inverse_ = inverse;
op->setHasBallparkTransformation(hasBallparkTransformation);
op->setRequiresPerCoordinateInputTime(bRequiresPerCoordinateInputTime);
op->setRequiresPerCoordinateInputTime(
formatter->requiresPerCoordinateInputTime());
return op;
}
+1 -1
View File
@@ -348,7 +348,7 @@ add_custom_target(check_wkt2_grammar_md5 ALL
COMMAND ${CMAKE_COMMAND}
"-DIN_FILE=wkt2_grammar.y"
"-DTARGET=generate_wkt2_parser"
"-DEXPECTED_MD5SUM=50022470f30e5f95374ee325e3346539"
"-DEXPECTED_MD5SUM=0a58cbfb6abd2b23bbb9345e12773348"
-P "${CMAKE_CURRENT_SOURCE_DIR}/check_md5sum.cmake"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/wkt2_grammar.y"
+1 -1
View File
@@ -175,7 +175,7 @@ extern "C" {
/* The version numbers should be updated with every release! **/
#define PROJ_VERSION_MAJOR 9
#define PROJ_VERSION_MINOR 7
#define PROJ_VERSION_PATCH 0
#define PROJ_VERSION_PATCH 1
/* Note: the following 3 defines have been introduced in PROJ 8.0.1 */
/* Macro to compute a PROJ version number from its components */
+1 -1
View File
@@ -8,6 +8,6 @@
char const pj_release[] = "Rel. " STR(PROJ_VERSION_MAJOR) "." STR(
PROJ_VERSION_MINOR) "." STR(PROJ_VERSION_PATCH) ", "
"September 1st, 2025";
"December 1st, 2025";
const char *pj_get_release() { return pj_release; }
+1162 -1260
View File
File diff suppressed because it is too large Load Diff
-1
View File
@@ -854,7 +854,6 @@ datum_ensemble: geodetic_datum_ensemble_without_pm | vertical_datum_ensemble
geodetic_datum_ensemble_without_pm: datum_ensemble_keyword
left_delimiter
datum_ensemble_name
wkt_separator datum_ensemble_member
datum_ensemble_member_list_ellipsoid_accuracy_identifier_list
right_delimiter
+26 -8
View File
@@ -1868,15 +1868,10 @@ tests:
+step +proj=axisswap +order=2,1
- comment: >
Test that ETRF2000 to ETRF2014 only goes through ITRF2000, ITRF2008 or ITRF2014, and not ITRF9x or ITRF>2020
args: -s ETRF2000 -t ETRF2014 --3d --summary --authority EPSG
args: -s ETRF2005 -t ETRF2014 --3d --summary --authority EPSG
out: |
Candidate operations found: 6
unknown id, Conversion from ETRF2000 (geog3D) to ETRF2000 (geocentric) + Inverse of ITRF2014 to ETRF2000 (1) + ITRF2014 to ETRF2014 (2) + Conversion from ETRF2014 (geocentric) to ETRF2014 (geog3D), 0 m, Europe - onshore and offshore - ETRF extent - approximately 16°W to 33°E and 33°N to 84°N., time-dependent operation
unknown id, Conversion from ETRF2000 (geog3D) to ETRF2000 (geocentric) + Inverse of ITRF2014 to ETRF2000 (1) + ITRF2014 to ETRF2014 (1) + Conversion from ETRF2014 (geocentric) to ETRF2014 (geog3D), 0 m, Europe - onshore and offshore - ETRF extent - approximately 16°W to 33°E and 33°N to 84°N., time-dependent operation
unknown id, Conversion from ETRF2000 (geog3D) to ETRF2000 (geocentric) + Inverse of ITRF2008 to ETRF2000 (1) + ITRF2008 to ETRF2014 (1) + Conversion from ETRF2014 (geocentric) to ETRF2014 (geog3D), 0 m, Europe - onshore and offshore - ETRF extent - approximately 16°W to 33°E and 33°N to 84°N., time-dependent operation
unknown id, Conversion from ETRF2000 (geog3D) to ETRF2000 (geocentric) + Inverse of ITRF2005 to ETRF2000 (1) + ITRF2005 to ETRF2014 (1) + Conversion from ETRF2014 (geocentric) to ETRF2014 (geog3D), 0 m, Europe - onshore and offshore - ETRF extent - approximately 16°W to 33°E and 33°N to 84°N., time-dependent operation
unknown id, Conversion from ETRF2000 (geog3D) to ETRF2000 (geocentric) + Inverse of ITRF2000 to ETRF2000 (2) + ITRF2000 to ETRF2014 (1) + Conversion from ETRF2014 (geocentric) to ETRF2014 (geog3D), 0 m, Europe - onshore and offshore - ETRF extent - approximately 16°W to 33°E and 33°N to 84°N., time-dependent operation
unknown id, Conversion from ETRF2000 (geog3D) to ETRF2000 (geocentric) + Inverse of ITRF2000 to ETRF2000 (1) + ITRF2000 to ETRF2014 (1) + Conversion from ETRF2014 (geocentric) to ETRF2014 (geog3D), 0 m, Europe - onshore and offshore - ETRF extent - approximately 16°W to 33°E and 33°N to 84°N., time-dependent operation
Candidate operations found: 1
unknown id, Conversion from ETRF2005 (geog3D) to ETRF2005 (geocentric) + Inverse of ITRF2005 to ETRF2005 (1) + ITRF2005 to ETRF2014 (1) + Conversion from ETRF2014 (geocentric) to ETRF2014 (geog3D), 0 m, Europe - onshore and offshore - ETRF extent - approximately 16°W to 33°E and 33°N to 84°N., time-dependent operation
- comment: >
Test that ETRF2000-PL to ETRF2014 is not negatively affected by https://github.com/OSGeo/PROJ/pull/4364 changes (the current actual result is not golden in any way, using ETRF2000 to ETRF2014 could probably make sense)
args: -s ETRF2000-PL -t ETRF2014 --summary
@@ -1943,3 +1938,26 @@ tests:
out: |
Candidate operations found: 1
unknown id, Inverse of Saba to WGS 84 (1) + Saba to Saba height (1) + Saba Transverse Mercator 2020, 1.2 m, Bonaire, Sint Eustatius and Saba (BES Islands or Caribbean Netherlands) - Saba - onshore.
- comment: Test that 'projinfo EGM2008' by default resolves to the datum
args: EGM2008
out: |
WKT2:2019 string:
VDATUM["EGM2008 geoid",
ID["EPSG",1027]]
- comment: Test that 'projinfo -k crs EGM2008' resolves to the CRS
args: -k crs EGM2008
out: |
PROJ.4 string:
+geoidgrids=us_nga_egm08_25.tif +geoid_crs=WGS84 +vunits=m +no_defs +type=crs
WKT2:2019 string:
VERTCRS["EGM2008 height",
VDATUM["EGM2008 geoid"],
CS[vertical,1],
AXIS["gravity-related height (H)",up,
LENGTHUNIT["metre",1]],
USAGE[
SCOPE["Geodesy."],
AREA["World."],
BBOX[-90,-180,90,180]],
ID["EPSG",3855]]
+6
View File
@@ -1309,6 +1309,10 @@ TEST(gie, proj_create_crs_to_crs_from_pj_force_over) {
auto output = proj_trans(P, PJ_FWD, input);
auto output_over = proj_trans(P, PJ_FWD, input_over);
auto P_clone = proj_clone(ctx, P);
auto output_clone_over = proj_trans(P_clone, PJ_FWD, input_over);
proj_destroy(P_clone);
auto input_inv = proj_trans(P, PJ_INV, output);
auto input_over_inv = proj_trans(P, PJ_INV, output_over);
@@ -1320,6 +1324,8 @@ TEST(gie, proj_create_crs_to_crs_from_pj_force_over) {
EXPECT_NEAR(output.xyz.x, 15584728.711058298, 1e-8);
EXPECT_NEAR(output_over.xyz.x, -24490287.974520184, 1e-8);
EXPECT_EQ(output_clone_over.xyz.x, output_over.xyz.x);
// The distance from 140 to 180 and -220 to -180 should be pretty much
// the same.
auto dx_o = fabs(output.xyz.x - 20037508.342789244);
+142
View File
@@ -5531,6 +5531,38 @@ TEST(crs, boundCRS_identify_db) {
EXPECT_EQ(boundCRS->baseCRS()->getEPSGCode(), 4326);
EXPECT_EQ(boundCRS->transformation()->method()->getEPSGCode(), 9606);
}
{
// BoundCRS where the transformation to WGS84 is actually a concatenated
// operation if taking from "NTF (Paris)".
auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT(
"PROJCS[\"NTF (Paris) / Lambert zone II\","
"GEOGCS[\"NTF (Paris)\","
"DATUM[\"Nouvelle_Triangulation_Francaise_Paris\","
"SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936269,"
"AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,320,0,0,0,0],"
"AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\",2.33722917,"
"AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0.01570796326794897,"
"AUTHORITY[\"EPSG\",\"9105\"]],AUTHORITY[\"EPSG\",\"4807\"]],"
"PROJECTION[\"Lambert_Conformal_Conic_1SP\"],"
"PARAMETER[\"latitude_of_origin\",52],"
"PARAMETER[\"central_meridian\",0],"
"PARAMETER[\"scale_factor\",0.99987742],"
"PARAMETER[\"false_easting\",600000],"
"PARAMETER[\"false_northing\",2200000],"
"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"
"AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"27572\"]"
"]");
auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj);
ASSERT_TRUE(crs != nullptr);
auto res = crs->identify(factoryEPSG);
ASSERT_EQ(res.size(), 1U);
auto boundCRS = dynamic_cast<const BoundCRS *>(res.front().first.get());
ASSERT_TRUE(boundCRS != nullptr);
EXPECT_EQ(boundCRS->baseCRS()->getEPSGCode(), 27572);
EXPECT_EQ(boundCRS->transformation()->nameStr(), "NTF to WGS 84 (1)");
EXPECT_EQ(res.front().second, 100);
}
}
// ---------------------------------------------------------------------------
@@ -7747,3 +7779,113 @@ TEST(crs, is_dynamic) {
EXPECT_FALSE(createCompoundCRS()->isDynamic());
}
// ---------------------------------------------------------------------------
TEST(crs, norway_ntm) {
auto dbContext = DatabaseContext::create();
auto factory = AuthorityFactory::create(dbContext, "EPSG");
// "ETRS89-NOR [EUREF89] / NTM zone 5"
auto crs = factory->createCoordinateReferenceSystem("5105");
auto esri_wkt =
"PROJCS[\"ETRS_1989_NTM_Zone_5\",GEOGCS[\"GCS_ETRS_1989\","
"DATUM[\"D_ETRS_1989\",SPHEROID[\"GRS_1980\",6378137.0,298.257222101]],"
"PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],"
"PROJECTION[\"Transverse_Mercator\"],"
"PARAMETER[\"False_Easting\",100000.0],"
"PARAMETER[\"False_Northing\",1000000.0],"
"PARAMETER[\"Central_Meridian\",5.5],"
"PARAMETER[\"Scale_Factor\",1.0],"
"PARAMETER[\"Latitude_Of_Origin\",58.0],"
"UNIT[\"Meter\",1.0]]";
// May change in a future version of the ESRI db
EXPECT_EQ(
crs->exportToWKT(
WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, dbContext)
.get()),
esri_wkt);
{
auto obj = createFromUserInput(esri_wkt, dbContext, true);
auto crs_from_esri = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
ASSERT_TRUE(crs_from_esri != nullptr);
auto res = crs_from_esri->identify(factory);
ASSERT_EQ(res.size(), 1U);
EXPECT_EQ(res.front().first.get(), crs.get());
EXPECT_EQ(res.front().second, 100);
}
auto wkt2_before_epsg_12_025 =
"PROJCRS[\"ETRS89 / NTM zone 5\",\n"
" BASEGEOGCRS[\"ETRS89\",\n"
" ENSEMBLE[\"European Terrestrial Reference System 1989 "
"ensemble\",\n"
" MEMBER[\"European Terrestrial Reference Frame 1989\"],\n"
" MEMBER[\"European Terrestrial Reference Frame 1990\"],\n"
" MEMBER[\"European Terrestrial Reference Frame 1991\"],\n"
" MEMBER[\"European Terrestrial Reference Frame 1992\"],\n"
" MEMBER[\"European Terrestrial Reference Frame 1993\"],\n"
" MEMBER[\"European Terrestrial Reference Frame 1994\"],\n"
" MEMBER[\"European Terrestrial Reference Frame 1996\"],\n"
" MEMBER[\"European Terrestrial Reference Frame 1997\"],\n"
" MEMBER[\"European Terrestrial Reference Frame 2000\"],\n"
" MEMBER[\"European Terrestrial Reference Frame 2005\"],\n"
" MEMBER[\"European Terrestrial Reference Frame 2014\"],\n"
" MEMBER[\"European Terrestrial Reference Frame 2020\"],\n"
" ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n"
" LENGTHUNIT[\"metre\",1]],\n"
" ENSEMBLEACCURACY[0.1]],\n"
" PRIMEM[\"Greenwich\",0,\n"
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
" ID[\"EPSG\",4258]],\n"
" CONVERSION[\"Norway TM zone 5\",\n"
" METHOD[\"Transverse Mercator\",\n"
" ID[\"EPSG\",9807]],\n"
" PARAMETER[\"Latitude of natural origin\",58,\n"
" ANGLEUNIT[\"degree\",0.0174532925199433],\n"
" ID[\"EPSG\",8801]],\n"
" PARAMETER[\"Longitude of natural origin\",5.5,\n"
" ANGLEUNIT[\"degree\",0.0174532925199433],\n"
" ID[\"EPSG\",8802]],\n"
" PARAMETER[\"Scale factor at natural origin\",1,\n"
" SCALEUNIT[\"unity\",1],\n"
" ID[\"EPSG\",8805]],\n"
" PARAMETER[\"False easting\",100000,\n"
" LENGTHUNIT[\"metre\",1],\n"
" ID[\"EPSG\",8806]],\n"
" PARAMETER[\"False northing\",1000000,\n"
" LENGTHUNIT[\"metre\",1],\n"
" ID[\"EPSG\",8807]]],\n"
" CS[Cartesian,2],\n"
" AXIS[\"northing (N)\",north,\n"
" ORDER[1],\n"
" LENGTHUNIT[\"metre\",1]],\n"
" AXIS[\"easting (E)\",east,\n"
" ORDER[2],\n"
" LENGTHUNIT[\"metre\",1]],\n"
" USAGE[\n"
" SCOPE[\"Engineering survey.\"],\n"
" AREA[\"Norway - onshore - west of 6°E.\"],\n"
" BBOX[58.32,4.39,62.64,6.01]],\n"
" ID[\"EPSG\",5105]]";
{
auto obj =
createFromUserInput(wkt2_before_epsg_12_025, dbContext, true);
auto crs_from_wkt2 = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
ASSERT_TRUE(crs_from_wkt2 != nullptr);
EXPECT_TRUE(crs->isEquivalentTo(crs_from_wkt2.get(),
IComparable::Criterion::EQUIVALENT));
EXPECT_TRUE(crs_from_wkt2->isEquivalentTo(
crs.get(), IComparable::Criterion::EQUIVALENT));
auto res = crs_from_wkt2->identify(factory);
ASSERT_EQ(res.size(), 1U);
EXPECT_EQ(res.front().first.get(), crs.get());
EXPECT_EQ(res.front().second, 100);
}
}
+180
View File
@@ -428,6 +428,62 @@ TEST(wkt_parse, invalid_geogcrs_with_ensemble) {
// ---------------------------------------------------------------------------
TEST(wkt_parse, ensemble_without_members) {
auto wkt =
"GEOGCRS[\"WGS 84\","
" ENSEMBLE[\"World Geodetic System 1984 ensemble\","
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,"
" LENGTHUNIT[\"metre\",1]],"
" ENSEMBLEACCURACY[2]],"
"CS[ellipsoidal,2],"
" AXIS[\"(lat)\",north,ANGLEUNIT[\"degree\",0.0174532925199433]],"
" AXIS[\"(lon)\",east,ANGLEUNIT[\"degree\",0.0174532925199433]]"
"]";
auto obj = WKTParser()
.attachDatabaseContext(DatabaseContext::create())
.createFromWKT(wkt);
auto crs = dynamic_cast<const GeodeticCRS *>(obj.get());
ASSERT_TRUE(crs != nullptr);
EXPECT_GE(crs->datumEnsemble()->datums().size(), 2U);
}
// ---------------------------------------------------------------------------
TEST(wkt_parse, ensemble_without_members_no_db) {
auto wkt =
"GEOGCRS[\"WGS 84\","
" ENSEMBLE[\"World Geodetic System 1984 ensemble\","
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,"
" LENGTHUNIT[\"metre\",1]],"
" ENSEMBLEACCURACY[2]],"
"CS[ellipsoidal,2],"
" AXIS[\"(lat)\",north,ANGLEUNIT[\"degree\",0.0174532925199433]],"
" AXIS[\"(lon)\",east,ANGLEUNIT[\"degree\",0.0174532925199433]]"
"]";
EXPECT_THROW(WKTParser().createFromWKT(wkt), ParsingException);
}
// ---------------------------------------------------------------------------
TEST(wkt_parse, ensemble_without_members_unknown_name) {
auto wkt =
"GEOGCRS[\"WGS 84\","
" ENSEMBLE[\"i do not exist\","
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,"
" LENGTHUNIT[\"metre\",1]],"
" ENSEMBLEACCURACY[2]],"
"CS[ellipsoidal,2],"
" AXIS[\"(lat)\",north,ANGLEUNIT[\"degree\",0.0174532925199433]],"
" AXIS[\"(lon)\",east,ANGLEUNIT[\"degree\",0.0174532925199433]]"
"]";
EXPECT_THROW(WKTParser()
.attachDatabaseContext(DatabaseContext::create())
.createFromWKT(wkt),
ParsingException);
}
// ---------------------------------------------------------------------------
static void checkEPSG_4326(GeographicCRSPtr crs, bool latLong = true,
bool checkEPSGCodes = true) {
if (checkEPSGCodes) {
@@ -16970,6 +17026,130 @@ TEST(json_import, datum_ensemble_without_ellipsoid) {
// ---------------------------------------------------------------------------
TEST(json_import, ensemble_without_members) {
auto json = "{\n"
" \"type\": \"GeographicCRS\",\n"
" \"name\": \"WGS 84\",\n"
" \"datum_ensemble\": {\n"
" \"name\": \"World Geodetic System 1984 ensemble\",\n"
" \"ellipsoid\": {\n"
" \"name\": \"WGS 84\",\n"
" \"semi_major_axis\": 6378137,\n"
" \"inverse_flattening\": 298.257223563\n"
" },\n"
" \"accuracy\": \"2.0\",\n"
" \"id\": {\n"
" \"authority\": \"EPSG\",\n"
" \"code\": 6326\n"
" }\n"
" },\n"
" \"coordinate_system\": {\n"
" \"subtype\": \"ellipsoidal\",\n"
" \"axis\": [\n"
" {\n"
" \"name\": \"Geodetic latitude\",\n"
" \"abbreviation\": \"Lat\",\n"
" \"direction\": \"north\",\n"
" \"unit\": \"degree\"\n"
" },\n"
" {\n"
" \"name\": \"Geodetic longitude\",\n"
" \"abbreviation\": \"Lon\",\n"
" \"direction\": \"east\",\n"
" \"unit\": \"degree\"\n"
" }\n"
" ]\n"
" }\n"
"}";
auto obj = createFromUserInput(json, DatabaseContext::create());
auto crs = dynamic_cast<const GeodeticCRS *>(obj.get());
ASSERT_TRUE(crs != nullptr);
EXPECT_GE(crs->datumEnsemble()->datums().size(), 2U);
}
// ---------------------------------------------------------------------------
TEST(json_import, ensemble_without_members_no_db) {
auto json = "{\n"
" \"type\": \"GeographicCRS\",\n"
" \"name\": \"WGS 84\",\n"
" \"datum_ensemble\": {\n"
" \"name\": \"World Geodetic System 1984 ensemble\",\n"
" \"ellipsoid\": {\n"
" \"name\": \"WGS 84\",\n"
" \"semi_major_axis\": 6378137,\n"
" \"inverse_flattening\": 298.257223563\n"
" },\n"
" \"accuracy\": \"2.0\",\n"
" \"id\": {\n"
" \"authority\": \"EPSG\",\n"
" \"code\": 6326\n"
" }\n"
" },\n"
" \"coordinate_system\": {\n"
" \"subtype\": \"ellipsoidal\",\n"
" \"axis\": [\n"
" {\n"
" \"name\": \"Geodetic latitude\",\n"
" \"abbreviation\": \"Lat\",\n"
" \"direction\": \"north\",\n"
" \"unit\": \"degree\"\n"
" },\n"
" {\n"
" \"name\": \"Geodetic longitude\",\n"
" \"abbreviation\": \"Lon\",\n"
" \"direction\": \"east\",\n"
" \"unit\": \"degree\"\n"
" }\n"
" ]\n"
" }\n"
"}";
EXPECT_THROW(createFromUserInput(json, nullptr), ParsingException);
}
// ---------------------------------------------------------------------------
TEST(json_import, ensemble_without_members_unknown_name) {
auto json = "{\n"
" \"type\": \"GeographicCRS\",\n"
" \"name\": \"WGS 84\",\n"
" \"datum_ensemble\": {\n"
" \"name\": \"i do not exist\",\n"
" \"ellipsoid\": {\n"
" \"name\": \"WGS 84\",\n"
" \"semi_major_axis\": 6378137,\n"
" \"inverse_flattening\": 298.257223563\n"
" },\n"
" \"accuracy\": \"2.0\",\n"
" \"id\": {\n"
" \"authority\": \"EPSG\",\n"
" \"code\": 6326\n"
" }\n"
" },\n"
" \"coordinate_system\": {\n"
" \"subtype\": \"ellipsoidal\",\n"
" \"axis\": [\n"
" {\n"
" \"name\": \"Geodetic latitude\",\n"
" \"abbreviation\": \"Lat\",\n"
" \"direction\": \"north\",\n"
" \"unit\": \"degree\"\n"
" },\n"
" {\n"
" \"name\": \"Geodetic longitude\",\n"
" \"abbreviation\": \"Lon\",\n"
" \"direction\": \"east\",\n"
" \"unit\": \"degree\"\n"
" }\n"
" ]\n"
" }\n"
"}";
EXPECT_THROW(createFromUserInput(json, DatabaseContext::create()),
ParsingException);
}
// ---------------------------------------------------------------------------
TEST(json_import, vertical_crs) {
auto json = "{\n"
" \"$schema\": \"foo\",\n"
+327 -52
View File
@@ -1050,58 +1050,72 @@ TEST(operation, geog3DCRS_to_vertCRS_depth_context) {
// ---------------------------------------------------------------------------
TEST(operation, geog3DCRS_to_geog2DCRS_plus_vertCRS_depth_context) {
auto authFactory =
AuthorityFactory::create(DatabaseContext::create(), "EPSG");
{
auto ctxt =
CoordinateOperationContext::create(authFactory, nullptr, 0.0);
ctxt->setSpatialCriterion(
CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION);
auto list = CoordinateOperationFactory::create()->createOperations(
authFactory->createCoordinateReferenceSystem("4937"), // ETRS89
authFactory->createCoordinateReferenceSystem("9883"),
// ETRS89 + CD Norway deph
ctxt);
ASSERT_GE(list.size(), 1U);
EXPECT_EQ(list[0]->exportToPROJString(
PROJStringFormatter::create(
PROJStringFormatter::Convention::PROJ_5,
authFactory->databaseContext())
.get()),
"+proj=pipeline "
"+step +proj=axisswap +order=2,1 "
"+step +proj=unitconvert +xy_in=deg +xy_out=rad "
"+step +inv +proj=vgridshift "
"+grids=no_kv_CD_above_Ell_ETRS89_v2023b.tif +multiplier=1 "
"+step +proj=axisswap +order=1,2,-3 "
"+step +proj=unitconvert +xy_in=rad +xy_out=deg "
"+step +proj=axisswap +order=2,1");
}
{
auto ctxt =
CoordinateOperationContext::create(authFactory, nullptr, 0.0);
ctxt->setSpatialCriterion(
CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION);
auto list = CoordinateOperationFactory::create()->createOperations(
authFactory->createCoordinateReferenceSystem("9883"),
// ETRS89 + CD Norway deph
authFactory->createCoordinateReferenceSystem("4937"), // ETRS89
ctxt);
ASSERT_GE(list.size(), 1U);
EXPECT_EQ(list[0]->exportToPROJString(
PROJStringFormatter::create(
PROJStringFormatter::Convention::PROJ_5,
authFactory->databaseContext())
.get()),
"+proj=pipeline "
"+step +proj=axisswap +order=2,1 "
"+step +proj=unitconvert +xy_in=deg +xy_out=rad "
"+step +proj=axisswap +order=1,2,-3 "
"+step +proj=vgridshift "
"+grids=no_kv_CD_above_Ell_ETRS89_v2023b.tif +multiplier=1 "
"+step +proj=unitconvert +xy_in=rad +xy_out=deg "
"+step +proj=axisswap +order=2,1");
}
const auto test = [](bool allAuthorities, const char *srcCode) {
auto authFactoryEPSG =
AuthorityFactory::create(DatabaseContext::create(), "EPSG");
auto authFactoryOp =
allAuthorities ? AuthorityFactory::create(DatabaseContext::create(),
std::string())
: authFactoryEPSG;
{
auto ctxt =
CoordinateOperationContext::create(authFactoryOp, nullptr, 0.0);
ctxt->setSpatialCriterion(
CoordinateOperationContext::SpatialCriterion::
PARTIAL_INTERSECTION);
auto list = CoordinateOperationFactory::create()->createOperations(
authFactoryEPSG->createCoordinateReferenceSystem(srcCode),
// ETRS89-NOR [EUREF89] + CD Norway deph
authFactoryEPSG->createCoordinateReferenceSystem("9883"), ctxt);
ASSERT_GE(list.size(), 1U);
EXPECT_EQ(
list[0]->exportToPROJString(
PROJStringFormatter::create(
PROJStringFormatter::Convention::PROJ_5,
authFactoryEPSG->databaseContext())
.get()),
"+proj=pipeline "
"+step +proj=axisswap +order=2,1 "
"+step +proj=unitconvert +xy_in=deg +xy_out=rad "
"+step +inv +proj=vgridshift "
"+grids=no_kv_CD_above_Ell_ETRS89_v2023b.tif +multiplier=1 "
"+step +proj=axisswap +order=1,2,-3 "
"+step +proj=unitconvert +xy_in=rad +xy_out=deg "
"+step +proj=axisswap +order=2,1");
}
{
auto ctxt =
CoordinateOperationContext::create(authFactoryOp, nullptr, 0.0);
ctxt->setSpatialCriterion(
CoordinateOperationContext::SpatialCriterion::
PARTIAL_INTERSECTION);
auto list = CoordinateOperationFactory::create()->createOperations(
// ETRS89-NOR [EUREF89] + CD Norway deph
authFactoryEPSG->createCoordinateReferenceSystem("9883"),
authFactoryEPSG->createCoordinateReferenceSystem(srcCode),
ctxt);
ASSERT_GE(list.size(), 1U);
EXPECT_EQ(
list[0]->exportToPROJString(
PROJStringFormatter::create(
PROJStringFormatter::Convention::PROJ_5,
authFactoryEPSG->databaseContext())
.get()),
"+proj=pipeline "
"+step +proj=axisswap +order=2,1 "
"+step +proj=unitconvert +xy_in=deg +xy_out=rad "
"+step +proj=axisswap +order=1,2,-3 "
"+step +proj=vgridshift "
"+grids=no_kv_CD_above_Ell_ETRS89_v2023b.tif +multiplier=1 "
"+step +proj=unitconvert +xy_in=rad +xy_out=deg "
"+step +proj=axisswap +order=2,1");
}
};
test(false, "4937"); // ETRS89 3D
test(true, "4937"); // ETRS89 3D
test(false, "10874"); // ETRS89-NOR [EUREF89] 3D
}
// ---------------------------------------------------------------------------
@@ -6023,6 +6037,267 @@ TEST(operation, compoundCRS_to_compoundCRS_GDA94_AHD_to_GDA2020_AVWS) {
// ---------------------------------------------------------------------------
TEST(operation,
compoundCRS_with_horizontal_boundCRS_to_compoundCRS_and_same_vertical) {
auto dbContext = DatabaseContext::create();
auto objSrc = WKTParser().attachDatabaseContext(dbContext).createFromWKT(
"COMPOUNDCRS[\"AGD66 / AMG zone 55 + AHD height\",\n"
" BOUNDCRS[\n"
" SOURCECRS[\n"
" PROJCRS[\"AGD66 / AMG zone 55 + AHD height\",\n"
" BASEGEOGCRS[\"AGD66\",\n"
" DATUM[\"User datum (no grid)\",\n"
" ELLIPSOID[\"Australian National "
"Spheroid\",6378160,298.25,\n"
" LENGTHUNIT[\"metre\",1]]],\n"
" PRIMEM[\"Greenwich\",0,\n"
" ANGLEUNIT[\"degree\",0.0174532925199433]]],\n"
" CONVERSION[\"Australian Map Grid zone 55\",\n"
" METHOD[\"Transverse Mercator\"],\n"
" PARAMETER[\"Latitude of natural origin\",0,\n"
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
" PARAMETER[\"Longitude of natural origin\",147,\n"
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
" PARAMETER[\"Scale factor at natural "
"origin\",0.9996,\n"
" SCALEUNIT[\"unity\",1]],\n"
" PARAMETER[\"False easting\",500000,\n"
" LENGTHUNIT[\"metre\",1]],\n"
" PARAMETER[\"False northing\",10000000,\n"
" LENGTHUNIT[\"metre\",1]]],\n"
" CS[Cartesian,2],\n"
" AXIS[\"(E)\",east,\n"
" ORDER[1],\n"
" LENGTHUNIT[\"metre\",1]],\n"
" AXIS[\"(N)\",north,\n"
" ORDER[2],\n"
" LENGTHUNIT[\"metre\",1]],\n"
" USAGE[\n"
" SCOPE[\"Engineering survey, topographic "
"mapping.\"],\n"
" AREA[\"Australia - onshore and offshore between "
"144°E and 150°E. Papua New Guinea (PNG) - onshore between 144°E and "
"150°E.\"],\n"
" BBOX[-47.2,144,-1.3,150.01]]]],\n"
" TARGETCRS[\n"
" GEOGCRS[\"GDA2020\",\n"
" DATUM[\"Geocentric Datum of Australia 2020\",\n"
" ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n"
" LENGTHUNIT[\"metre\",1]]],\n"
" PRIMEM[\"Greenwich\",0,\n"
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
" CS[ellipsoidal,2],\n"
" AXIS[\"geodetic latitude (Lat)\",north,\n"
" ORDER[1],\n"
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
" AXIS[\"geodetic longitude (Lon)\",east,\n"
" ORDER[2],\n"
" ANGLEUNIT[\"degree\",0.0174532925199433]]]],\n"
" ABRIDGEDTRANSFORMATION[\"User-defined Bursa-Wolf "
"Transform\",\n"
" METHOD[\"Position Vector transformation (geog2D "
"domain)\"],\n"
" PARAMETER[\"X-axis translation\",-153.501992013804,\n"
" ID[\"EPSG\",8605]],\n"
" PARAMETER[\"Y-axis translation\",91.8979603422544,\n"
" ID[\"EPSG\",8606]],\n"
" PARAMETER[\"Z-axis translation\",-76.7203604254192,\n"
" ID[\"EPSG\",8607]],\n"
" PARAMETER[\"X-axis rotation\",-11.9539464931016,\n"
" ID[\"EPSG\",8608]],\n"
" PARAMETER[\"Y-axis rotation\",13.9315768664084,\n"
" ID[\"EPSG\",8609]],\n"
" PARAMETER[\"Z-axis rotation\",-3.45993996519333,\n"
" ID[\"EPSG\",8610]],\n"
" PARAMETER[\"Scale difference\",0.999965937122937,\n"
" ID[\"EPSG\",8611]]]],\n"
" VERTCRS[\"AHD height\",\n"
" VDATUM[\"Australian Height Datum\"],\n"
" CS[vertical,1],\n"
" AXIS[\"gravity-related height (H)\",up,\n"
" LENGTHUNIT[\"metre\",1]],\n"
" USAGE[\n"
" SCOPE[\"Cadastre, engineering surveying applications over "
"distances up to 10km.\"],\n"
" AREA[\"Australia - Australian Capital Territory, New "
"South Wales, Northern Territory, Queensland, South Australia, "
"Tasmania, Western Australia and Victoria - onshore. Christmas Island "
"- onshore. Cocos and Keeling Islands - onshore.\"],\n"
" BBOX[-43.7,96.76,-9.86,153.69]],\n"
" ID[\"EPSG\",5711]]]");
auto src = nn_dynamic_pointer_cast<CRS>(objSrc);
ASSERT_TRUE(src != nullptr);
// GDA2020 / MGA zone 55 + AHD height
auto authFactoryEPSG = AuthorityFactory::create(dbContext, "EPSG");
auto dstObj = createFromUserInput("EPSG:7855+5711", dbContext, false);
auto dst = nn_dynamic_pointer_cast<CRS>(dstObj);
ASSERT_TRUE(dst != nullptr);
auto ctxt = CoordinateOperationContext::create(
AuthorityFactory::create(dbContext, std::string()), nullptr, 0.0);
ctxt->setSpatialCriterion(
CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION);
auto list = CoordinateOperationFactory::create()->createOperations(
NN_NO_CHECK(src), NN_NO_CHECK(dst), ctxt);
ASSERT_GE(list.size(), 1U);
EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()),
"+proj=pipeline "
"+step +inv +proj=utm +zone=55 +south +ellps=aust_SA "
"+step +proj=push +v_3 "
"+step +proj=cart +ellps=aust_SA "
"+step +proj=helmert +x=-153.501992013804 +y=91.8979603422544 "
"+z=-76.7203604254192 +rx=-11.9539464931016 +ry=13.9315768664084 "
"+rz=-3.45993996519333 +s=-34.0628770629792 "
"+convention=position_vector "
"+step +inv +proj=cart +ellps=GRS80 "
"+step +proj=pop +v_3 "
"+step +proj=utm +zone=55 +south +ellps=GRS80");
}
// ---------------------------------------------------------------------------
TEST(
operation,
compoundCRS_with_horizontal_boundCRS_to_compoundCRS_with_derived_vertical) {
auto dbContext = DatabaseContext::create();
auto objSrc = WKTParser().attachDatabaseContext(dbContext).createFromWKT(
"COMPOUNDCRS[\"AGD84 / AMG zone 55 + AHD height + local offset\",\n"
" BOUNDCRS[\n"
" SOURCECRS[\n"
" PROJCRS[\"AGD84 / AMG zone 55\",\n"
" BASEGEOGCRS[\"AGD84\",\n"
" DATUM[\"User datum (no grid)\",\n"
" ELLIPSOID[\"Australian National Spheroid\","
"6378160,298.25,\n"
" LENGTHUNIT[\"metre\",1]]],\n"
" PRIMEM[\"Greenwich\",0,\n"
" ANGLEUNIT[\"degree\",0.0174532925199433]]],\n"
" CONVERSION[\"Australian Map Grid zone 55\",\n"
" METHOD[\"Transverse Mercator\"],\n"
" PARAMETER[\"Latitude of natural origin\",0,\n"
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
" PARAMETER[\"Longitude of natural origin\",147,\n"
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
" PARAMETER[\"Scale factor at natural origin\","
"0.9996,\n"
" SCALEUNIT[\"unity\",1]],\n"
" PARAMETER[\"False easting\",500000,\n"
" LENGTHUNIT[\"metre\",1]],\n"
" PARAMETER[\"False northing\",10000000,\n"
" LENGTHUNIT[\"metre\",1]]],\n"
" CS[Cartesian,2],\n"
" AXIS[\"(E)\",east,\n"
" ORDER[1],\n"
" LENGTHUNIT[\"metre\",1]],\n"
" AXIS[\"(N)\",north,\n"
" ORDER[2],\n"
" LENGTHUNIT[\"metre\",1]]]],\n"
" TARGETCRS[\n"
" GEOGCRS[\"GDA2020\",\n"
" DATUM[\"Geocentric Datum of Australia 2020\",\n"
" ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n"
" LENGTHUNIT[\"metre\",1]]],\n"
" PRIMEM[\"Greenwich\",0,\n"
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
" CS[ellipsoidal,2],\n"
" AXIS[\"geodetic latitude (Lat)\",north,\n"
" ORDER[1],\n"
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
" AXIS[\"geodetic longitude (Lon)\",east,\n"
" ORDER[2],\n"
" ANGLEUNIT[\"degree\",0.0174532925199433]]]],\n"
" ABRIDGEDTRANSFORMATION[\"User-defined Bursa-Wolf "
"Transform\",\n"
" METHOD[\"Position Vector transformation (geog2D "
"domain)\"],\n"
" PARAMETER[\"X-axis translation\",-153.306840928477,\n"
" ID[\"EPSG\",8605]],\n"
" PARAMETER[\"Y-axis translation\",92.4132660160741,\n"
" ID[\"EPSG\",8606]],\n"
" PARAMETER[\"Z-axis translation\",-76.481435572882,\n"
" ID[\"EPSG\",8607]],\n"
" PARAMETER[\"X-axis rotation\",-11.9644937558611,\n"
" ID[\"EPSG\",8608]],\n"
" PARAMETER[\"Y-axis rotation\",13.9284887447329,\n"
" ID[\"EPSG\",8609]],\n"
" PARAMETER[\"Z-axis rotation\",-3.44390727325759,\n"
" ID[\"EPSG\",8610]],\n"
" PARAMETER[\"Scale difference\",0.999965772441661,\n"
" ID[\"EPSG\",8611]]]],\n"
" VERTCRS[\"AHD height + local offset\",\n"
" BASEVERTCRS[\"AHD height\",\n"
" VDATUM[\"Australian Height Datum\"]],\n"
" DERIVINGCONVERSION[\"vertical offset\",\n"
" METHOD[\"PROJ affine\"],\n"
" PARAMETER[\"zoff\",1.055,\n"
" LENGTHUNIT[\"metre\",1]]],\n"
" CS[vertical,1],\n"
" AXIS[\"gravity-related height (H)\",up,\n"
" LENGTHUNIT[\"metre\",1]]]]");
auto src = nn_dynamic_pointer_cast<CRS>(objSrc);
ASSERT_TRUE(src != nullptr);
// GDA2020 / MGA zone 55 + AHD height
auto authFactoryEPSG = AuthorityFactory::create(dbContext, "EPSG");
auto dstObj = createFromUserInput("EPSG:7855+5711", dbContext, false);
auto dst = nn_dynamic_pointer_cast<CRS>(dstObj);
ASSERT_TRUE(dst != nullptr);
auto ctxt = CoordinateOperationContext::create(
AuthorityFactory::create(dbContext, std::string()), nullptr, 0.0);
ctxt->setSpatialCriterion(
CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION);
{
auto list = CoordinateOperationFactory::create()->createOperations(
NN_NO_CHECK(src), NN_NO_CHECK(dst), ctxt);
ASSERT_GE(list.size(), 1U);
EXPECT_EQ(
list[0]->exportToPROJString(PROJStringFormatter::create().get()),
"+proj=pipeline "
"+step +inv +proj=utm +zone=55 +south +ellps=aust_SA "
"+step +proj=push +v_3 "
"+step +proj=cart +ellps=aust_SA "
"+step +proj=helmert +x=-153.306840928477 "
"+y=92.4132660160741 "
"+z=-76.481435572882 +rx=-11.9644937558611 "
"+ry=13.9284887447329 "
"+rz=-3.44390727325759 +s=-34.2275583390395 "
"+convention=position_vector "
"+step +inv +proj=cart +ellps=GRS80 "
"+step +proj=pop +v_3 "
"+step +inv +proj=affine +zoff=1.055 "
"+step +proj=utm +zone=55 +south +ellps=GRS80");
}
{
auto list = CoordinateOperationFactory::create()->createOperations(
NN_NO_CHECK(dst), NN_NO_CHECK(src), ctxt);
ASSERT_GE(list.size(), 1U);
EXPECT_EQ(
list[0]->exportToPROJString(PROJStringFormatter::create().get()),
"+proj=pipeline "
"+step +inv +proj=utm +zone=55 +south +ellps=GRS80 "
"+step +proj=affine +zoff=1.055 "
"+step +proj=push +v_3 "
"+step +proj=cart +ellps=GRS80 "
"+step +inv +proj=helmert +x=-153.306840928477 "
"+y=92.4132660160741 +z=-76.481435572882 "
"+rx=-11.9644937558611 +ry=13.9284887447329 "
"+rz=-3.44390727325759 +s=-34.2275583390395 "
"+convention=position_vector "
"+step +inv +proj=cart +ellps=aust_SA "
"+step +proj=pop +v_3 "
"+step +proj=utm +zone=55 +south +ellps=aust_SA");
}
}
// ---------------------------------------------------------------------------
TEST(
operation,
compoundCRS_to_compoundCRS_concatenated_operation_with_two_vert_transformation) {