Compare commits

...
1437 Commits
Author SHA1 Message Date
Kristian Evers deb1a5720f Update NEWS for 8.2.1 release 2021-12-26 16:16:27 +01:00
Kristian Evers 406eda9b8d Bump year in CITATION file 2021-12-26 15:59:22 +01:00
Kristian Evers 6d36efa97c Update man-pages from Sphinx-docs 2021-12-26 15:58:09 +01:00
Kristian Evers 631e80d426 Update ABI numbers for 8.2.1 release 2021-12-26 15:40:30 +01:00
Kristian Evers ac3ac2f27e Update version number for 8.2.1 release 2021-12-26 15:39:27 +01:00
Even Rouault 0c61db5a98 Merge pull request #2995 from OSGeo/backport-2994-to-8.2
[Backport 8.2] Fix build with Intel C++ compiler
2021-12-26 10:08:08 +01:00
Kristian Evers 247e6ed4ce Merge pull request #2994 from rouault/icx_fix
Fix build with Intel C++ compiler
2021-12-25 14:39:17 +00:00
Kristian Evers 99d365185d Merge pull request #2993 from OSGeo/backport-2992-to-8.2
[Backport 8.2] bertin1953.rst: fix formatting
2021-12-24 10:23:29 +01:00
Even Rouault 96388832c7 Merge pull request #2992 from anbj/fix-formatting
bertin1953.rst: fix formatting
2021-12-23 19:47:48 +00:00
Even Rouault c8346e9f0a Merge pull request #2991 from OSGeo/backport-2978-to-8.2
[Backport 8.2] Fix and additional options for Peirce Quincuncial projections
2021-12-21 19:39:10 +01:00
Toby C. Wilkinson d5d60b7154 Fix and additional options for Peirce Quincuncial projections (#2978)
This fixes the current forward implementation of Peirce Quincuncial proj to correctly flip/reflect out the southern hemisphere to four triangles, and rotate entire result to a square or diamond. (It there resolves the issues identified with pull request https://github.com/OSGeo/PROJ/pull/2230 , where southern hemisphere was wrongly projected over northern, and reverses the restriction to northern hemisphere introduced there). It also adds additional lateral projection of the hemispheres.

- This PR adds an optional parameter `+type` which allows selection of projection. The `+type=square` and `+type=diamond` types match in principle ESRI's twin implementations of square and diamond PQ projs. The **default** if not specified is `+type=diamond`.

- The previous behaviour restricted to the northern hemisphere can be reproduced using the `+type=nhemisphere`, though this is an edge case only.

- An additional `+type=horizontal` and `+type=vertical` rectangular lateral versions have been added that place each hemisphere side-by-side. This is primarily to allow creation of projections such as Greiger Triptychial, which also require the additional optional params `scrollx` or `scrolly` in order to shift parts of the projection from one side of the map to the other. 

- Additional documentation has been added to proj description, including quoting the usual meridian used in common usage of projection, and images showing the different types.
2021-12-20 20:23:20 +00:00
Martijn Visser 247a79e6c7 Update website for 8.2 release (#2989)
* Update website for 8.2 release

* update "Edit on GitHub" button branch
2021-12-20 20:26:31 +01:00
Even Rouault b013d24bff Merge pull request #2986 from OSGeo/backport-2985-to-8.2
[Backport 8.2] WKT1 import: correctly deal with missing rectified_grid_angle parameter
2021-12-17 11:34:27 +01:00
Even Rouault 4608ef43d6 Merge pull request #2985 from rouault/wkt1_hotine_without_rectified_grid_angle
WKT1 import: correctly deal with missing rectified_grid_angle parameter
2021-12-17 00:18:17 +00:00
github-actions[bot]andEven Rouault 0845df6025 Merge pull request #2982 from DFEvans/patch-1 (#2984)
Remove git stash holdover in news.rst

Co-authored-by: Even Rouault <even.rouault@spatialys.com>
2021-12-14 15:07:01 +13:00
Even Rouault 587d80536d Merge pull request #2977 from OSGeo/backport-2976-to-8.2
[Backport 8.2] createOperations(): improvement for "NAD83(CSRS) + CGVD28 height" to "NAD83(CSRS) + CGVD2013(CGG2013) height"
2021-12-09 18:17:45 +01:00
Even Rouault c9fe5a1a06 Merge pull request #2976 from rouault/compound_to_compound_ballpark
createOperations(): improvement for "NAD83(CSRS) + CGVD28 height" to "NAD83(CSRS) + CGVD2013(CGG2013) height"
2021-12-09 16:38:19 +00:00
Even Rouault 90997086e1 Merge pull request #2974 from OSGeo/backport-2973-to-8.2
[Backport 8.2] Database: update to EPSG v10.041
2021-12-09 16:44:56 +01:00
Even Rouault 389b2a1378 Merge pull request #2973 from rouault/epsg_10_041
Database: update to EPSG v10.041
2021-12-07 18:33:01 +00:00
github-actions[bot]andEven Rouault 8bda42cc12 Merge pull request #2970 from mwtoews/static-extra-libs (#2971)
Refactor proj.pc to use EXTRA_LIBS; add -lpthread to Libs.private

Co-authored-by: Even Rouault <even.rouault@spatialys.com>
2021-12-05 13:55:33 +13:00
Even Rouault ebe3aadd69 Merge pull request #2969 from OSGeo/backport-2964-to-8.2
[Backport 8.2] Fix github path for crs2crs2grid.py in HTDP
2021-12-04 10:56:38 +01:00
Even Rouault 7178175eca Merge pull request #2964 from Fa7C0n/master
Fix github path for crs2crs2grid.py in HTDP
2021-12-02 22:50:52 +00:00
Even Rouault d9d55ed203 Merge pull request #2967 from OSGeo/backport-2966-to-8.2
[Backport 8.2] Cache result of proj_get_type() to help for performance of proj_factors() (fixes #2965)
2021-12-02 23:08:35 +01:00
Even Rouault 8a156921b9 Merge pull request #2966 from rouault/fix_2965
Cache result of proj_get_type() to help for performance of proj_factors() (fixes #2965)
2021-12-02 16:18:44 +00:00
Even Rouault 30f059a018 Merge pull request #2950 from OSGeo/backport-2949-to-8.2
[Backport 8.2] Fix windows.h conflict with Criterion::STRICT
2021-11-20 11:26:46 +01:00
Even Rouault 2f2c150a52 Merge pull request #2951 from OSGeo/backport-2922-to-8.2
[Backport 8.2] Docs: Add new Ellipsoids page to explain ellipsoidal parameters.
2021-11-20 11:26:32 +01:00
f932502233 Docs: Add new Ellipsoids page to explain ellipsoidal parameters (#2922)
Co-authored-by: Rohit <rohitpingale103@gmail.com>
Co-authored-by: Brendan Jurd <brendan.jurd@geoplex.com.au>
Co-authored-by: Mike Taves <mwtoews@gmail.com>
2021-11-20 07:58:48 +00:00
Even Rouault acfa9ce91f Merge pull request #2949 from jschueller/patch-1
Fix windows.h conflict with Criterion::STRICT
2021-11-20 00:08:28 +00:00
Kristian Evers 0510077777 Merge pull request #2946 from OSGeo/backport-2945-to-8.2
[Backport 8.2] DOCS: Remove LATEX_SOURCE_CODE setting from Doxyfile.
2021-11-19 12:08:49 +01:00
Kristian Evers 6f544ca29e Merge pull request #2947 from OSGeo/backport-2944-to-8.2
[Backport 8.2] DOCS: Add doxygen entry for proj_context_set_search_paths.
2021-11-19 12:08:36 +01:00
Kristian Evers 86118e8478 Merge pull request #2944 from direvus/2540-docs-missing-funcs
DOCS: Add doxygen entry for proj_context_set_search_paths.
2021-11-19 09:24:13 +00:00
Kristian Evers 85db269ba9 Merge pull request #2945 from direvus/doxy-latex-setting
DOCS: Remove LATEX_SOURCE_CODE setting from Doxyfile.
2021-11-19 09:23:46 +00:00
Kristian Evers 3aabf2f5b9 Set doc deploy branch to 8.2 (was forgotten at release time) 2021-11-17 08:53:36 +01:00
Even Rouault 93a0de1018 createOperationsGeogToGeog(): avoid potential harmless floating-point division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=41045 2021-11-15 18:59:03 +01:00
Even Rouault aeba9bdfe3 Merge pull request #2940 from OSGeo/backport-2938-to-8.2
[Backport 8.2] createOperationsCompoundToCompound(): fix null pointer dereference when connection to proj.db doesn't exist.
2021-11-15 12:43:33 +01:00
Even Rouault 97a5fad1f0 Merge pull request #2939 from OSGeo/backport-2937-to-8.2
[Backport 8.2] createOperations(): do not stop at the first operation in the PROJ namespace for vertical transformations
2021-11-15 12:43:20 +01:00
Even Rouault 4cb9fdb631 Merge pull request #2938 from rouault/fix_ossfuzz_40955
createOperationsCompoundToCompound(): fix null pointer dereference when connection to proj.db doesn't exist.
2021-11-14 14:55:29 +00:00
Even Rouault 4db10d9e13 Merge pull request #2937 from rouault/fix_2936
createOperations(): do not stop at the first operation in the PROJ namespace for vertical transformations
2021-11-14 14:49:06 +00:00
Even Rouault cf8c1a825b Merge pull request #2935 from OSGeo/backport-2934-to-8.2
[Backport 8.2] test: Make CApi test cross-platform
2021-11-10 17:56:27 +01:00
Even Rouault a461817ade Merge pull request #2934 from toonn/cross-platform-test
test: Make CApi test cross-platform
2021-11-10 14:51:23 +00:00
Even Rouault ce6be7d20c Merge pull request #2933 from OSGeo/backport-2932-to-8.2
[Backport 8.2] PROJStringFormatter::toString(): avoid invalid iterator increment (fixes #2931)
2021-11-09 13:39:01 +01:00
Mike Taves 4a96ce5f6f RFC 7: Drop Autotools, maintain CMake (#2880) 2021-11-09 13:35:10 +01:00
Even Rouault 5ba4e6d453 Merge pull request #2932 from rouault/fix_2931
PROJStringFormatter::toString(): avoid invalid iterator increment (fixes #2931)
2021-11-09 11:43:37 +00:00
Even Rouault fa8a542f40 Merge pull request #2928 from OSGeo/backport-2926-to-8.2
[Backport 8.2] DOC: Add warning in proj_as_proj_string about potential information loss with CRS
2021-11-07 20:07:26 +01:00
Even Rouault 96910fc0bb Merge pull request #2927 from OSGeo/backport-2925-to-8.2
[Backport 8.2] DOC: add available keys to proj_context_get_database_metadata
2021-11-07 20:07:17 +01:00
Even Rouault 730b7b9e9f Merge pull request #2926 from snowman2/warn
DOC: Add warning in proj_as_proj_string about potential information loss with CRS
2021-11-06 17:53:26 +00:00
Even Rouault 0f2efd7cfc Merge pull request #2925 from snowman2/docs
DOC: add available keys to proj_context_get_database_metadata
2021-11-06 17:52:53 +00:00
Even Rouault b980912325 Merge pull request #2923 from OSGeo/backport-2921-to-8.2
[Backport 8.2] Database: update to EPSG v10.039
2021-11-06 18:18:58 +01:00
Even Rouault d76d1adffd Merge pull request #2921 from rouault/epsg_10_039
Database: update to EPSG v10.039
2021-11-05 10:39:36 +00:00
Even Rouault b71bee7b60 Merge pull request #2918 from OSGeo/backport-2917-to-8.2
[Backport 8.2] BoundCRS WKT import: fix setting of name
2021-11-03 18:49:16 +01:00
Even Rouault 4739adcc55 Merge pull request #2917 from rouault/fix_boundcrs_name
BoundCRS WKT import: fix setting of name
2021-11-03 10:26:06 +00:00
Even Rouault 94ebc12cce Doc: news.rst: formatting fixes 2021-11-03 10:58:04 +01:00
Kristian Evers 9a4820add3 docs: Fix errors in 8.2.0 news section 2021-11-01 19:49:36 +01:00
Kristian Evers f988536d85 Update website for 8.1.1 release 2021-11-01 18:02:39 +01:00
Kristian Evers 54c56ff68b Update NEWS for 8.2.0 release 2021-10-26 21:59:10 +02:00
Kristian Evers bbc9e49e1c Fix version number of latest release in NEWS 2021-10-26 21:09:32 +02:00
Kristian Evers c27496eb44 Update NEWS for 8.1.1 release 2021-10-26 21:09:25 +02:00
Kristian Evers f0469bf0b8 Bump PROJ-data version number in docs 2021-10-26 21:07:53 +02:00
Kristian Evers 996ec49df9 Update man-pages from Sphinx-docs 2021-10-26 21:06:11 +02:00
Kristian Evers 9d813991c6 Update ABI numbers for 8.2.0 release 2021-10-26 21:00:19 +02:00
Even Rouault 0fe32d249f Merge pull request #2913 from rouault/fix_2905
lib_proj.cmake: add a PROJ::proj alias and add BUILD_INTERFACE include directories...
2021-10-25 19:17:53 +02:00
Even Rouault 37d141a5d6 lib_proj.cmake: add a PROJ::proj alias and add BUILD_INTERFACE include directories, so that proj can be used as a subdirectory of a larger project (fixes #2905) 2021-10-25 18:20:06 +02:00
Kristian Evers 24ad521d3e Merge pull request #2912 from rouault/cmake_static_build
CMake: revise how we deal with symbol export and static builds
2021-10-25 16:46:11 +02:00
Even Rouault 6e9b324ab7 CMake: revise how we deal with symbol export and static builds
- Remove the explicit PROJ_MSVC_DLL_IMPORT symbol used for importing
  symbols from a MSVC .dll: by default on MSVC, we use
  now __declspec(dllimport), unless PROJ_MSVC_DLL_EXPORT is defined
  by PROJ at build time. This makes it easier for users: they
  don't have to define anything special. This simplifies in particular
  the build of our binaries
- For static builds, export -DPROJ_DLL= as public, so that users
  that import PROJ through CMake mechanism don't have to do it
  manually.
2021-10-23 16:27:30 +02:00
Even Rouault 9817fe7db3 Merge pull request #2911 from rouault/cmake_version
CMake: align the VERSION of the library with libtool practices
2021-10-23 15:56:43 +02:00
Even Rouault 9aed9e0297 Merge pull request #2907 from josch/tinshiftfallback
add fallback strategy for tinshift transform to use closest triangle for points not in any
2021-10-22 19:30:00 +02:00
Even Rouault 5a47650a5b CMake: align the VERSION of the library with libtool practices
Currently (at least as of 8.1.1) we don't have the same .so.x.y.z
numbers for the libtool and cmake builds (the y and z are swapped for
the cmake build). While only the SONAME (the .x part) mostly matters,
it is probably better to stick with the libtool convention to determine
the y and z.
This patch should make it easier by setting explicitly each of the
current, revision, age and computing automatically
x = current - age
y = age
z = revision
2021-10-22 18:17:38 +02:00
Johannes Schauer Marin Rodrigues f5aed82fc6 Add fallback_strategy to tinshift transform
- this bumps format_version of tinshift JSON to 1.1 for the new field
   fallback_strategy
 - the default behaviour without that field is retained
 - if fallback_strategy is set to "nearest_side", then points that do not fall
   into any of the triangles will be transformed according to the nearest
   triangle
 - if fallback_centroid is set to "nearest_side", then points that do not fall
   into any of the triangles will be transformed according to the triangle
   with the nearest centroid
2021-10-21 22:18:29 +02:00
Even Rouault 01d503cb23 Merge pull request #2908 from snowman2/const
TYPE: Update const declarations in proj_trans_bounds
2021-10-21 21:53:59 +02:00
Even Rouault f714b5300a Merge pull request #2910 from rouault/epsg_10_038
Database: update to EPSG v10.038
2021-10-21 21:53:14 +02:00
Even Rouault 0ef6f0d64a Database: update to EPSG v10.038 2021-10-21 18:27:18 +02:00
Even Rouault 5dd04d16de Merge pull request #2906 from jjimenezshaw/za_cdngi_sageoid2010
Add grid alternative for SAGEOID2010, South African geoid model
2021-10-21 11:09:04 +02:00
snowman2 4c8415dafe TYPE: Update const declarations in proj_trans_bounds 2021-10-19 07:55:55 -05:00
Even Rouault 8671b8e7ff exportToPROJStringGeneric(): avoid harmless floating-point division by zero if conversion factor is 0. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=40050 2021-10-17 21:04:29 +02:00
Even Rouault 33683634ee createOperations(): avoid harmless floating-point division by zero if conversion factor of target unit is 0. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39969 2021-10-16 16:54:31 +02:00
Even Rouault ed1ab5539a Fix previous commit 2021-10-16 15:48:02 +02:00
Even Rouault 576a075d30 CMake: fix invproj/invgeod generation on Windows when building with an explicit configuration 2021-10-16 15:28:13 +02:00
Even Rouault 22fcf6689e cmake/ProjTest.cmake: fix error in creation of tmp_user_writable_dir 2021-10-16 15:25:38 +02:00
Even Rouault 04928472db Merge pull request #2889 from jjimenezshaw/mx_inegi_ggm10
Add transformations for GGM10, Mexican geoid model
2021-10-15 23:35:04 +02:00
Even Rouault 3aad65681a Merge pull request #2902 from rouault/issue_2757
Geographic 3D CRS: allow to export to WKT1:ESRI if only the GEOGCS is known (and thus extrapolating a VERTCS) (fixes #2757)
2021-10-15 23:33:52 +02:00
Javier Jimenez Shaw 83a380b599 add za_cdngi_sageoid2010.tif vertical grid file for SAGEOID2010.dat 2021-10-13 16:44:40 +02:00
Even Rouault 785a650706 Geographic 3D CRS: allow to export to WKT1:ESRI if only the GEOGCS is known (and thus extrapolating a VERTCS) (fixes #2757) 2021-10-12 11:12:53 +02:00
Even Rouault 4387332ea6 Fix export to WKT1:ESRI of CRS, datum, ellipsoids name that don't have a EPSG equivalent and have parentheses in their name 2021-10-12 10:58:55 +02:00
Even Rouault 6a87701011 Merge pull request #2897 from rouault/fix_2852
CMake build: generate invproj/invgeod binaries (symlinks on Unix, copy otherwise) (fixes #2852)
2021-10-12 10:03:27 +02:00
Even Rouault a16ead1845 Merge pull request #2900 from rouault/cmake_wkt_parser
CMake build: add generate_wkt1_parser and generate_wkt2_parser manual target, and logic to detect when they must be run
2021-10-12 10:02:43 +02:00
Even Rouault 50728ca48b Merge pull request #2896 from rouault/ossfuzz_cmake
ossfuzz: port PROJ build to cmake
2021-10-11 11:49:21 +02:00
Even Rouault c8d53993d2 Merge pull request #2895 from rouault/cmake_BUILD_PROGRAMS
CMake: add a BUILD_APPS to be able to disable build of all applications
2021-10-11 11:48:57 +02:00
Even Rouault b68ee95723 CMake build: add generate_wkt1_parser and generate_wkt2_parser manual target, and logic to detect when they must be run 2021-10-11 11:47:34 +02:00
Mike TavesandEven Rouault d94e045816 CMake: Always build gie if testing is requested (#2899)
Co-authored-by: Even Rouault <even.rouault@spatialys.com>
2021-10-11 10:23:20 +13:00
Even Rouault 7f0b6bd9c6 proj_crs_get_datum_forced(): catch potential exception (fixes CID 358433, 358434, 358435) 2021-10-10 20:43:31 +02:00
Even Rouault bf6743caf3 ossfuzz builds: switch to cmake to build PROJ 2021-10-10 12:10:39 +02:00
Even Rouault 27e2fd3a10 CMake: add a BUILD_APPS to be able to disable build of all programs
This makes it easier to turn off all programs, rather than individually.
Useful for example to avoid https://github.com/OSGeo/gdal/blob/master/gdal/fuzzers/build.sh#L138
2021-10-10 12:08:43 +02:00
Even Rouault a159c44f35 Add testing of invproj 2021-10-09 20:32:31 +02:00
Even Rouault 42c453973f test/cli/testproj: fix wrong variable name 2021-10-09 19:58:02 +02:00
Even Rouault ca15e42b69 geod / proj: accept lt-inv[geod/proj] name for older libtool versions 2021-10-09 19:58:02 +02:00
Even Rouault 94414d32bb autoconf build: build invproj and invgeod in build directory
Due to libtool wrapper scripts, it is easier to build fully fledged
binaries.
The installed binaries will be symlinks, as before.
2021-10-09 19:26:36 +02:00
Even Rouault 7179491492 CMake build: generate invproj/invgeod binaries (symlinks on Unix, copy otherwise) (fixes #2852) 2021-10-09 19:26:36 +02:00
Even Rouault fdaf93449f Merge pull request #2893 from rouault/fix_2892
WKT1 parser: recognize Lambert_Conformal_Conic as projection name for LCC 1SP or 2SP (fixes #2892)
2021-10-09 12:53:17 +02:00
Even Rouault 371a926b39 WKT1 parser: recognize Lambert_Conformal_Conic as projection name for LCC 1SP or 2SP (fixes #2892) 2021-10-08 20:58:13 +02:00
Even Rouault 02225ff0bb Merge pull request #2891 from rouault/fix_2890
WKT concatenated operation parsing: fix when a axis order reversal conversion is the first or last operation (fixes #2890)
2021-10-08 17:25:06 +02:00
Even Rouault 2118edd31b WKT concatenated operation parsing: fix when a axis order reversal conversion is the first or last operation (fixes #2890) 2021-10-08 14:50:55 +02:00
Javier Jimenez Shaw 86bdfcf0d4 update metadata.sql to PROJ_DATA version 1.8 2021-10-08 14:21:29 +02:00
Javier Jimenez Shaw c78c85f950 Set area of use compatible with grid file 2021-10-08 14:20:49 +02:00
Even Rouault c8b28d3fd2 Merge pull request #2888 from rouault/epsg_10_037
Database: update to EPSG v10.037
2021-10-07 19:00:32 +02:00
Javier Jimenez Shaw 3dc2e6e492 extend unit test to find GGM10 for vcrs EPSG:5703 2021-10-07 18:59:44 +02:00
Javier Jimenez Shaw 55b71df675 add GGM10 (Mexico to NAVD88) to geoid_model sql table 2021-10-07 18:53:50 +02:00
Javier Jimenez Shaw 1929cb69e8 add mx_inegi_ggm10.tif vertical grid file, with custom transformation 2021-10-07 18:36:46 +02:00
Even Rouault 9df2d3085b Database: update to EPSG v10.037 2021-10-07 13:28:17 +02:00
Even Rouault 7be04dedc2 scripts/build_db.py: fix due to recent changes 2021-10-07 13:27:55 +02:00
Even Rouault b0a9822679 cmake build: install proj_symbol_rename.h 2021-10-07 11:18:34 +02:00
Even Rouault 39ecfbec93 Merge pull request #2887 from rouault/fix_2886
Fix CRS Equality with PROJ parameter order
2021-10-07 09:14:20 +02:00
Even Rouault f28d36cee9 CRS::_isEquivalentTo(): be tolerant to different order of PROJ step options (fixes #2886) 2021-10-06 19:26:09 +02:00
Even Rouault 3a67ea87fa ProjectedCRS::_isEquivalentTo(): ignore base CRS axis order even in EQUIVALENT mode if one of them is lacking an explicit CS order (refs #2886) 2021-10-06 19:21:03 +02:00
Even Rouault f057ac086e Merge pull request #2884 from rouault/fix_op_alternatives_bbox_non_greenwich
proj_create_crs_to_crs() + proj_trans(): fix when non-Greenwich prime meridian is involved
2021-10-06 11:22:46 +02:00
Even Rouault a92526a4ba proj_create_crs_to_crs() + proj_trans(): fix when non-Greenwich prime meridian is involved
This fixes a regression introduced in 7af1d5741da08d9546b907e0da2c21c54c61b27 / PROJ 7.2.0
where reprojection of area of use was broken when the source/target CRS
did not use Greenwich as prime meridian.
Fixes https://lists.osgeo.org/pipermail/gdal-dev/2021-October/054764.html

Now with the fix:
- using grid:
$ echo 286415 431434 | PROJ_NETWORK=ON src/cs2cs -d 4 EPSG:20790  EPSG:3763
86412.4262	131434.1706 0.0000

- not using it:
$ echo 286415 431434 | src/cs2cs -d 4 EPSG:20790  EPSG:3763
86412.5265	131433.8561 0.0000
2021-10-06 01:03:19 +02:00
Even Rouault 6d41d4ae26 test_c_api.cpp: reformat 2021-10-06 00:19:20 +02:00
Alan D. Snow 06d299db13 Add proj_trans_bounds to compute the image of a input bounding box through a transformation (#2882)
Fixes #2779
2021-10-05 19:27:28 +02:00
Even Rouault c50ba1b1a7 Merge pull request #2876 from rouault/iau
Add IAU_2015 CRS definitions
2021-10-05 19:21:05 +02:00
Even Rouault 6b58adb4b7 Merge pull request #2868 from rouault/proj_factors_with_projected_crs
proj_factors(): accept P to be a projected CRS (fixes #2854)
2021-10-05 19:20:32 +02:00
Even Rouault 44771f4832 Merge pull request #2883 from snowman2/build_docs
DOC: Add instructions for building docs with docker image
2021-10-04 12:06:29 +02:00
snowman2 40939fb1c5 DOC: Add instructions for building docs with docker image 2021-10-03 22:01:57 -05:00
Even Rouault ef5c77acb2 Merge pull request #2881 from rouault/fix_misidentification_of_projstring_with_ellipsoid
CRS::identify(): fix ignoring CS order when identifying a geodetic CRS by a PROJ string with just the ellipsoid
2021-09-30 12:08:34 +02:00
Even Rouault 47b9629c56 proj_factors(): accept P to be a projected CRS (fixes #2854)
Updated doc:

    Starting with PROJ 8.2, the P object can be a projected CRS, for example
    instantiated from a EPSG CRS code. The factors 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.

    The input geodetic coordinate lp should be such that lp.lam is the longitude
    in radian, and lp.phi the latitude in radian (thus independently of the
    definition of the base CRS, if P is a projected CRS).
2021-09-30 12:07:50 +02:00
Even Rouault 7396d4d96c CRS::identify(): fix ignoring CS order when identifying a geodetic CRS by a PROJ string with just the ellipsoid 2021-09-29 23:32:10 +02:00
Kristian Evers 64c38c2bc1 Merge pull request #2878 from kbevers/fix-latlon-doc
doc: clarify use of +datum option with +proj=latlon
2021-09-29 18:46:31 +02:00
Kristian Evers 769dcd7f63 doc: clarify use of +datum option with +proj=latlon 2021-09-29 17:52:04 +02:00
Even Rouault 24a9ad540c Merge pull request #2877 from rouault/relates_to_gdal_3927
CRS::extractGeodeticCRS(): implement for DerivedProjectedCRS (related to refs OSGeo/gdal#3927)
2021-09-29 11:41:17 +02:00
Even Rouault f269fd8fa8 CRS::extractGeodeticCRS(): implement for DerivedProjectedCRS (related to refs OSGeo/gdal#3927) 2021-09-28 23:23:38 +02:00
Even Rouault 5d6bdadfca projinfo --list-crs / proj_get_crs_info_list_from_database(): make it work with IAU generic authority name 2021-09-28 16:37:39 +02:00
Even Rouault f13c584c05 test: add tests of operations between geographic/geodetic and projected IAU CRS 2021-09-28 14:47:11 +02:00
Even Rouault 40ab72f2e9 PROJStringFormatter: add optimizations useful for IAU CRS transformation pipelines 2021-09-28 14:47:10 +02:00
Even Rouault e6e6e4ca34 Add a mapping for versioned authorities, so that one can use IAU:xxxx or IAU_2015:xxxx transparently 2021-09-28 14:47:09 +02:00
Even Rouault f982d9d310 Database: add IAU_2015 CRS 2021-09-28 14:47:08 +02:00
Even Rouault bc30adc7d8 Database: add check for Orthographic conversion 2021-09-28 14:47:08 +02:00
Even Rouault f386e22e36 AuthorityFactory::createGeodeticCRS(): use description column for remarks 2021-09-28 14:47:07 +02:00
Even Rouault 17a218964e Database reading: implement reading a GeodeticCRS with a Spherical CS 2021-09-28 14:47:07 +02:00
Even Rouault 23c44387d1 Database: add some hand made entries early 2021-09-28 14:47:06 +02:00
Even Rouault 6cea38f649 Merge pull request #2872 from rouault/epsg_10_036
Database: update to EPSG v10.036
2021-09-27 18:33:57 +02:00
Even Rouault f1efc8a7e4 Database: update to EPSG v10.036 2021-09-27 17:14:23 +02:00
Kristian Evers ac1963352d Merge pull request #2865 from direvus/doc/2864-error-handling
DOC: Add content for Development/Error handling page.
2021-09-27 09:18:59 +02:00
Brendan Jurd e27c4424ea DOC: Refresh Development/Quickstart and remove Development/Threads (#2863)
* DOC: Refresh Development/Quickstart and remove Development/Threads

The document Development/Threads was severely out of date, and was
focussed on contrasting the current API with an old API that was
deprecated several years ago, and removed from the current PROJ earlier
this year.

Update Development/Quickstart to give more information about the use of
threading context, as a replacement for the content that was previously
in Threads.

Also give the example code examples/pj_obs_api_mini_demo.c a cleanup
pass to make it at least internally consistent with its own code style.

The header comments of the example code are still, much like the Threads
document, fixated on comparing proj.h against proj_api.h, which is an
interesting historical curio to be sure, but probably doesn't need to
persist here.  It might be worth cleaning this up further as a separate
exercise.

Fixes #2451
2021-09-27 09:17:58 +02:00
Even Rouault 3a827d2e04 Merge pull request #2869 from mathstuf/cmake-dl-lib-check-fix
cmake: check the right variable for `libdl`
2021-09-25 11:00:45 +02:00
Ben Boeckel 414b3c19f4 cmake: check the right variable for libdl 2021-09-24 18:52:44 -04:00
Even Rouault a9ac32ed3a Merge pull request #2867 from rouault/fix_2866
proj_normalize_for_visualization(): set input and output units when there are several alternative transformations (fixes #2866)
2021-09-24 17:54:35 +02:00
Even Rouault 1d6c202f90 proj_normalize_for_visualization(): set input and output units when there are several alternative transformations (fixes #2866) 2021-09-24 17:16:28 +02:00
Brendan Jurd de062c1417 DOC: Add content for Development/Error handling page.
This page was previously empty.  This commits populates it with some
very basic information and a code example of how to use
proj_context_errno and proj_context_errno_string.

Something: because something is better than nothing.

It might be good to include some more fine detail about how PROJ manages
the error state internally, but I don't yet have the expertise in PROJ
internals to write that content myself.

Also the code sample probably has a segfault bug or leaks memory,
because C.
2021-09-24 16:08:15 +10:00
Even Rouault 35fe5da17d Update proj_symbol_rename.h 2021-09-20 22:31:30 +02:00
Even Rouault 4ff0aea187 Conversion::inverse(): avoid harmless division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39033 2021-09-20 18:50:29 +02:00
Even Rouault 5f3f02163e networkfilemanager.cpp: fix compiler warnings on 32-bit systems where time_t is 32-bit 2021-09-19 16:48:13 +02:00
Even Rouault 55dd9ab747 Merge pull request #2861 from rouault/optimize_pipelines_planetary_crs
Optimize pipelines of planetary CRS (geocentric latitude, west-positive longitude)
2021-09-18 15:09:55 +02:00
Even Rouault 527e1eb983 Optimize pipelines of planetary CRS (geocentric latitude, west-positive longitude) 2021-09-18 13:13:47 +02:00
Even Rouault 438ead90d3 Merge pull request #2859 from rouault/database_anchor
Database: add a 'anchor' field to geodetic_datum and vertical_datum tables
2021-09-18 11:20:13 +02:00
Even Rouault 483717e593 test: getInsertStatementsFor(): test datums with anchor 2021-09-17 20:42:22 +02:00
Even Rouault 2db54cc09a Database: add a 'anchor' field to geodetic_datum and vertical_datum tables
Update database layout version number to 1.2 consequently

This new capability will be used by IAU planetary CRS (refs #2601)
2021-09-17 19:20:54 +02:00
Kristian Evers f22f3028cc Merge pull request #2858 from jorisvandenbossche/patch-1
DOC: fix the inclusion of the custom css file
2021-09-17 10:18:20 +02:00
Joris Van den Bossche 8a8207ad46 DOC: fix the inclusion of the custom css file 2021-09-17 08:44:49 +02:00
Even Rouault a3e412995d Merge pull request #2851 from rouault/epsg_10_035
Database: update to EPSG v10.035
2021-09-16 12:01:39 +02:00
Waheed Barghouthi e54739954d update projsync command
I added the --all arg to the command, it seems its now a requirement, not sure if this is meant to be like this
2021-09-16 10:56:20 +02:00
Even Rouault 1cedab9d8d Merge pull request #2855 from rouault/ortho_e_followup
Inverse ortho ellipsoidal oblique: address a few remarks...
2021-09-16 10:20:14 +02:00
Even Rouault c9b5060051 Inverse ortho ellipsoidal oblique: address a few remarks from https://github.com/OSGeo/PROJ/issues/2844#issuecomment-920138371 2021-09-15 18:08:05 +02:00
Even Rouault e6e4d5aa20 Merge pull request #2853 from rouault/fix_inverse_ortho_e
Fix error in implementation of Inverse ellipsoidal orthographic projection that cause convergence to sometimes fail (fixes #2844)
2021-09-15 11:20:28 +02:00
Even Rouault d209e4ab62 Inverse ellipsoidal orthographic projection (oblique case): fix convergence at pole 2021-09-15 06:58:26 +02:00
Even Rouault 3bd64e8532 Fix error in implementation of Inverse ellipsoidal orthographic projection (oblique case) that cause convergence to sometimes fail (fixes #2844) 2021-09-15 06:41:39 +02:00
Even Rouault 85f496b267 Database: update to EPSG v10.035
This seriously impacts French CRS users with the introduction of new
datums, geodetic CRS and projected CRS based on "RGF 93 v2" and "RGF 93 v2b",
and the previous single "RGF 93" being renamed as "RGF 93 v1".

To be noted too, the addition of a null transformation between NAD83(2011)
and WGS 84, which impacts a number of tests in the test suite.
2021-09-15 00:32:58 +02:00
Even Rouault d3c615f9ce test/cli/testvarious: make one test more robust regarding EPSG updates 2021-09-15 00:29:05 +02:00
Even Rouault 7f0946ab38 isEquivalentTo(): improve comparison of datum names based on official name and aliases (preparation for EPSG v10.035 update) 2021-09-15 00:28:25 +02:00
Even Rouault 47fb85bdf0 Merge pull request #2850 from rouault/projjson_0_4
PROJJSON: support additional properties allowed in id object (version, authority_citation, uri) for parity with WKT2:2019
2021-09-14 22:03:48 +02:00
Even Rouault bca0a82921 PROJJSON: support additional properties allowed in id object (version, authority_citation, uri) for parity with WKT2:2019 2021-09-14 18:13:47 +02:00
Even Rouault 92ca1a9455 Merge pull request #2847 from rouault/spherical_ocentric
Add support for GeodeticCRS using a Spherical ocentric coordinate system
2021-09-14 16:13:05 +02:00
Kristian Evers 884cff477e Merge pull request #2848 from direvus/docs/about-license
Update docs About page to pull in license text from COPYING.
2021-09-11 13:01:31 +02:00
Brendan Jurd c8bac28284 Use literalinclude for COPYING in About page.
This avoids a sphinx error due to the leading space in front of the
horizontal divider in COPYING and also helps to indicate where the
included license text begins and ends.
2021-09-10 11:28:56 +10:00
Brendan Jurd 98c8fd29ce Update docs About page to pull in license text from COPYING.
Fixes #2709.
2021-09-10 10:57:06 +10:00
Even Rouault 078952e7f0 createOperations(): use an explicit conversion operation for geodetic <--> geocentric latitude 2021-09-08 17:05:45 +02:00
Even Rouault bc568fcc99 createConversion(): avoid nullptr dereference on a method without parameters 2021-09-08 17:05:45 +02:00
Even Rouault 85733181ee createOperations(): deal with spherical planetocentric geodetic CRS
This also fixes conversion between geocentric latlong and geodetic latlong
with cs2cs. This was dealt with in PR 1093, but in the wrong direction
(the geocentric latitude must be <= in absolute value to the geodetic one)
The issue here was linked to the semantics of the +geoc specifier, which
affects the semantics of the input coordinates in the forward direction
(+geoc means that the input coordinate is is a geocentric latitude),
which defeats the logic of doing A to B by using the inverse path of A
and the forward path of B.
2021-09-08 17:05:45 +02:00
Even Rouault 7ea1338d8c Merge pull request #2845 from rouault/fix_2843
Fix database access across fork() when SQLite3 doesn't use pread[64]() (fixes #2843)
2021-09-08 13:17:43 +02:00
Even Rouault 5527b10ed1 Support importing/exporting WKT & PROJJSON of 2D axis spherical planetocentric geodetic CRS 2021-09-07 19:57:36 +02:00
Even Rouault 312e511cde pj_obj_create(): avoid passing invalid ellipsoid parameters to geod_init(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38192 2021-09-07 17:50:29 +02:00
Even Rouault ce08025122 Fix database access across fork() when SQLite3 doesn't use pread[64]() (fixes #2843) 2021-09-07 15:36:11 +02:00
Even Rouault e75eebac66 Merge pull request #2842 from rouault/getInsertStatementsFor_reorder_params
getInsertStatementsFor(): re-order projection parameters according to their canonical order if needed
2021-09-06 17:35:07 +02:00
Even Rouault 01559894ca getInsertStatementsFor(): re-order projection parameters according to their canonical order if needed 2021-09-05 16:06:55 +02:00
Even Rouault 71b372e6f0 Merge pull request #2841 from rouault/cppcheck_fixes
Cppcheck fixes
2021-09-05 15:41:40 +02:00
Even Rouault b91af0075a healpix.cpp: make it more obvious to cppcheck that capmap.cn is always initialized 2021-09-04 18:06:07 +02:00
Even Rouault a767ae5d14 Workaround 'Overlapping read/write of union is undefined behavior' cppcheck warning (but really fixing them would be more involved) 2021-09-04 18:01:11 +02:00
Even Rouault 49c0ef87ba Conversion::createAxisOrderReversal(): workaround cppcheck false positive 2021-09-04 17:45:12 +02:00
Even Rouault f792fde43e createFromUserInput(): make it more obvious for cppcheck and humans too 2021-09-04 17:27:41 +02:00
Even Rouault 129737b262 GeodeticCRS::identify(): make it more obvious for cppcheck 2021-09-04 17:27:41 +02:00
Even Rouault a675c26616 pipeline.cpp: remove impossible condition 2021-09-04 17:21:40 +02:00
Even Rouault 09367628bf formatting fix 2021-09-04 01:04:36 +02:00
Even Rouault 37d2bac78d Merge pull request #2839 from rouault/fix_ossfuzz_31964
pj_obj_create(): avoid passing invalid ellipsoid parameters ot pj_calc_ellipsoid_params()
2021-09-04 01:03:49 +02:00
Even Rouault d4b2acb314 Merge pull request #2840 from hobu/grid-debug-lint
Add some filename lint #2838 to output error messages
2021-09-04 01:03:39 +02:00
Howard Butler 4f5d9f0625 Add some filename lint #2838 to output error messages 2021-09-03 16:30:45 -05:00
Even Rouault 126991dea0 pj_obj_create(): avoid passing invalid ellipsoid parameters ot pj_calc_ellipsoid_params(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=31964 2021-09-03 22:49:12 +02:00
Even Rouault 24baa80540 formatting fix 2021-09-03 22:23:24 +02:00
Even Rouault 27fb08a9c9 Merge pull request #2835 from rouault/netcdf_cf_pole_rotation
Add proj_create_conversion_pole_rotation_netcdf_cf_convention() to address netCDF datasets using a pole rotation method
2021-09-03 11:55:24 +02:00
Even Rouault 3f018de8ec Merge pull request #2837 from OSGeo/backport-2836-to-master
[Backport master] ortho.rst: fix typo
2021-09-02 14:35:39 +02:00
Even Rouault 61f3796a2b Merge pull request #2836 from OSGeo/rouault-patch-1
ortho.rst: fix typo
2021-09-02 12:30:14 +00:00
Even Rouault f19b2948ef Add proj_create_conversion_pole_rotation_netcdf_cf_convention() to address netCDF datasets using a pole rotation method 2021-09-02 09:19:22 +02:00
Kristian Evers 1b18086441 Merge pull request #2833 from rouault/doc_topocentric_ortho_epsg_ref
Doc: mentions EPSG methods that corresponds to topocentric and ortho (fixes #2832)
2021-09-01 21:21:07 +02:00
Even Rouault 1ddad0b601 Doc: mentions EPSG methods that corresponds to topocentric and ortho (fixes #2832) 2021-09-01 11:18:31 +02:00
Even Rouault 1ed57b9e47 Merge pull request #2831 from gorlak-forks/uwp-filemanager
Make filemanager aware of UWP Win32 API
2021-09-01 10:31:44 +02:00
Even Rouault fc4663a2cb Merge pull request #2829 from rouault/epsg_10_033
Database: update to EPSG v10.033
2021-09-01 10:30:47 +02:00
Even Rouault 468ceb8c82 PROJStringFormatter::toString(): add missing iterator increment (but luckily this omission didn't result in endless loop, just an extra iteration) 2021-08-31 21:16:04 +02:00
Even Rouault 8e3b860c65 Workaround false positive in recent cppcheck 2021-08-31 21:15:15 +02:00
Even Rouault 54211c9845 io.cpp: remove always true test 2021-08-31 21:08:47 +02:00
Even Rouault 4419fe32ed io.cpp: silence Coverity false positive (CID 356032) 2021-08-29 20:54:02 +02:00
Even Rouault b6d3f29ce5 Database: update to EPSG v10.033 2021-08-28 18:11:49 +02:00
Mike Taves a2713d85ea proj.pc.in: add -lm -ldl in Libs.private (#2825) 2021-08-28 22:06:41 +12:00
Even Rouault 3bb6c1bf02 Merge pull request #2826 from rouault/doc_projjson_0.3
Doc: projjson.rst: update to PROJJSON v0.3
2021-08-27 20:05:55 +02:00
Even Rouault e4788a9c0f Merge pull request #2827 from rouault/esri_goode_homolosine
ESRI WKT: add support for import/export of (non interrupted) Goode Homolosine
2021-08-27 20:05:43 +02:00
Even Rouault 3f9c0a0b73 ESRI WKT: add support for import/export of (non interrupted) Goode Homolosine
Issue found during https://github.com/OSGeo/gdal/pull/4355 when it was found
that a WKT with Goode_Homolosine projection parsed as ESRI WKT was mapped
wrongly to Interrupted Goode Homolosine
2021-08-27 18:35:06 +02:00
Even Rouault 9f763419b5 Doc: projjson.rst: update to PROJJSON v0.3 2021-08-27 15:15:49 +02:00
Even Rouault cd1d1fbe7b Merge pull request #2824 from rouault/fix_ossfuzz_37489
Pipeline instanciation: fix performance issues on huge (broken) strings...
2021-08-27 12:52:37 +02:00
Even Rouault 2a3384e9b2 Merge pull request #2823 from rouault/fix_8353
WKT importer: better detect ESRI WKT
2021-08-27 12:52:25 +02:00
Even Rouault 1cdd0044be Pipeline instanciation: fix performance issues on huge (broken) strings which managed somehow to cause nested pipelines not caught due to some non-roundtripability in parsing/serializing. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=37489 2021-08-26 22:16:36 +02:00
Even Rouault 1e5bd1ac69 WKT importer: better detect ESRI WKT on projected CRS (fixes #2822) 2021-08-26 17:01:27 +02:00
Even Rouault a667e86dd4 WKT importer: detect ESRI WKT even when datum name doesn't start with D_ (fixes #2822) 2021-08-26 16:27:38 +02:00
Even Rouault db5a6e683b Merge pull request #2820 from rouault/fix_ossfuzz_37438
Fix O(n^2) performance patterns where n is the number of steps of a pipeline
2021-08-23 16:19:59 +02:00
Even Rouault 79b2186dfc PROJStringFormatter::toString(): fix potential O(n^2) performance. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=37438 2021-08-21 16:29:47 +02:00
Even Rouault be95408654 pipeline instanciation: fix potential O(n^2) performance. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=37438 2021-08-21 16:29:24 +02:00
Even Rouault 6ee8c26b60 Merge pull request #2818 from rouault/fix_2817
ConcatenatedOperation::fixStepsDirection(): fix bad chaining of steps…
2021-08-20 18:31:00 +02:00
Even Rouault fa31633658 ConcatenatedOperation::fixStepsDirection(): fix bad chaining of steps when inverse map projection is involved in non-final step (fixes #2817) 2021-08-20 17:25:15 +02:00
Even Rouault 4766b7c3a1 Merge pull request #2814 from rouault/fix_2813
BoundCRS: accept importing/exporting in WKT2 and PROJJSON the scope/area/extent/id attributes (fixes #2813)
2021-08-19 10:11:47 +02:00
Even Rouault 31692d0c06 BoundCRS: accept importing/exporting in WKT2 and PROJJSON the scope/area/extent/id attributes (fixes #2813)
For PROJJSON only, also accept the ``name`` attribute.
2021-08-19 02:15:04 +02:00
Even Rouault 92d8cc6610 Merge pull request #2809 from rouault/preserve_proj4_crs_string_wkt2_remarks
WKT2 import/export: preserve PROJ.4 CRS extension string in REMARKS[]…
2021-08-16 21:08:25 +02:00
Even Rouault b89bdc21a4 Merge pull request #2811 from OSGeo/busstoptaktik-patch-1
Spell the last name of R.E. Deakin correctly
2021-08-16 21:07:34 +02:00
Thomas Knudsen aacbdaa12e Spell the last name of R.E. Deakin correctly
It's spelled correctly in the references, so better also get it right in the source
2021-08-16 20:39:13 +02:00
Even Rouault 3d9b6f488d Merge pull request #2810 from rouault/test_polar_stereo
test: more testing of Polar Stereographic variants
2021-08-16 19:12:21 +02:00
Even Rouault ed16a27e1f test: more testing of Polar Stereographic variants 2021-08-16 18:03:39 +02:00
Even Rouault 620c13c6c4 WKT2 import/export: preserve PROJ.4 CRS extension string in REMARKS[] (when the WKT2 representation isn't lossless) 2021-08-16 15:58:13 +02:00
Even Rouault 9190f2b7b0 Merge pull request #2807 from rouault/fix_2804
createOperations(): fix missing deg<-->rad conversion when transforming with a CRS that has a fallback-to-PROJ4-string behaviour and is a BoundCRS of a GeographicCRS (fixes #2804)
2021-08-16 13:49:03 +02:00
Even Rouault 30d220143a createOperations(): fix missing deg<-->rad conversion when transforming with a CRS that has a fallback-to-PROJ4-string behaviour and is a BoundCRS of a GeographicCRS (fixes #2804) 2021-08-16 11:59:22 +02:00
Even Rouault 9b0c8afcf1 Merge pull request #2805 from rouault/fix_2803
Implement promoteTo3D() / demoteTo2D() for DerivedGeographicCRS (fixes #2803)
2021-08-16 11:58:38 +02:00
Even Rouault bac2521fe7 Implement promoteTo3D() / demoteTo2D() for DerivedGeographicCRS (fixes #2803) 2021-08-16 11:14:30 +02:00
Even Rouault 88322b46e7 factory.cpp: fix latest clang -Wstring-concatenation (false positive) warning 2021-08-15 18:06:45 +02:00
Even Rouault 4468e2b473 formatting fix 2021-08-15 18:06:23 +02:00
Brendan Jurd 17f83c6f12 Add support for Degree Sign on input (#2791)
This commit adds support in dsmtor() for a Degree Sign (U+00B0), encoded
as UTF-8 (`\xc2\xb0`) or as a single byte (`\xb0`) (in ISO 8859 parts 1-4, 7-10,
13, 15, 16, and several Windows code pages), as an alternative symbol to
`D`/`d` to designate the degree unit.

Fixes #2712.
2021-08-15 13:30:57 +02:00
Even Rouault a46df0f3a2 Merge pull request #2800 from rouault/fix_gdal_4224
Inverse laea ellipsoidal: return PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN when appropriates (fixes OSGeo/gdal#4224)
2021-08-13 17:52:18 +02:00
Even Rouault ec1fe1012d Inverse laea ellipsoidal: return PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN when appropriates (fixes OSGeo/gdal#4224) 2021-08-13 13:59:45 +02:00
Brendan Jurd 7063808658 Fix order of instructions for installing from source. (#2797)
The note about running autogen.sh was previously placed below the
instructions to run configure.
2021-08-12 10:53:02 +12:00
Even Rouault 0344dbf850 Merge pull request #2795 from rouault/fix_ossfuzz_36751
Conversion::createUTM(): avoid integer overflow
2021-08-10 10:48:15 +02:00
Even Rouault 1e6ef36db9 Conversion::createUTM(): avoid integer overflow. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36751 2021-08-10 10:04:50 +02:00
Even Rouault e41092a939 build_db.py: improve error reporting [ci skip] 2021-08-10 10:04:35 +02:00
Ben Boeckel ff22ae3a87 cmake: remove unused configure checks (#2789)
These results are just not used anywhere, so there's no need to check
them (as the compiler will do it anyways).
2021-08-05 09:22:19 +12:00
Even Rouault 2656c2980f Merge pull request #2787 from rouault/vgrid_perf_improvements
GeoTIFF grid reading: perf improvements (fixes #2785)
2021-07-23 09:16:54 +02:00
Even Rouault a871ada2a9 GeoTIFF grid reading: perf improvements (fixes #2785)
With this commit, and the 2 previous ones, given mytest.cpp
```

int main()
{
    PJ* pj = proj_create(nullptr, "+proj=vgridshift +grids=us_nga_egm96_15.tif");
    for( int i = 0; i < 5*1000*1000; i++)
    {
        PJ_COORD coord;
        coord.lpz.lam = 0;
        coord.lpz.phi = 0;
        coord.lpz.z = 0;
        proj_trans(pj, PJ_FWD, coord);
    }
    return 0;
}
```

we get a x2 speedup

Before:
```
$ PROJ_LIB=data:$HOME/proj/PROJ-data/us_nga LD_LIBRARY_PATH=src/.libs  hyperfine --warmup 1 'taskset -c 11 ./mytest'
Benchmark #1: taskset -c 11 ./mytest
  Time (mean ± σ):      1.950 s ±  0.014 s    [User: 1.945 s, System: 0.005 s]
  Range (min … max):    1.937 s …  1.971 s
```

After:
```
$ PROJ_LIB=data:$HOME/proj/PROJ-data/us_nga LD_LIBRARY_PATH=src/.libs  hyperfine --warmup 1 'taskset -c 11 ./mytest'
Benchmark #1: taskset -c 11 ./mytest
  Time (mean ± σ):     984.4 ms ±   3.1 ms    [User: 977.0 ms, System: 7.2 ms]
  Range (min … max):   979.3 ms … 990.5 ms
```
2021-07-22 23:42:05 +02:00
Even Rouault 04f333c3c0 pj_fwd()/pj_inv(): performance improvements through passing by ref and less function calls 2021-07-22 23:05:18 +02:00
Even Rouault 7e0bd99d23 Add pj_log_active() to determine if logging is active 2021-07-22 23:04:37 +02:00
Even Rouault 15639d8f45 Merge pull request #2784 from mwtoews/docs-fix
Doc: fix links to :c:func:`proj_...` by specifying "h" as "c" domain
2021-07-22 19:05:20 +02:00
Mike Taves c7bb85d107 Doc: fix links to :c:func:proj_... by specifying "h" as "c" domain 2021-07-21 15:23:04 +12:00
Even Rouault ef6094573e Merge pull request #2782 from rouault/fix_crs_extent_use_none
createOperations(): fix SourceTargetCRSExtentUse::NONE mode
2021-07-20 11:16:10 +02:00
Even Rouault be83b7dd83 createOperations(): fix SourceTargetCRSExtentUse::NONE mode
Fix issue reported in https://lists.osgeo.org/pipermail/proj/2021-July/010318.html
2021-07-20 04:28:13 +02:00
Even Rouault 88147888b8 Formatting fix [ci skip] 2021-07-20 04:24:38 +02:00
Even Rouault 23636dede2 Merge pull request #2780 from mwtoews/nlohmann_json_interface_lib
CMake: remove external nlohmann_json from INTERFACE_LINK_LIBRARIES target
2021-07-14 15:01:32 +02:00
Mike Taves dec2eac098 CMake: remove external nlohmann_json from INTERFACE_LINK_LIBRARIES target 2021-07-14 23:46:32 +12:00
marcus-elia d902272785 Add S2 projection (#2749) 2021-07-13 17:49:28 +02:00
Even Rouault 7b23d2b8c1 Merge pull request #2776 from rouault/fix_coverity_350886
ortho: remove useless and invalid log trace (CID 350886, 350887)
2021-07-12 12:19:43 +02:00
Even Rouault 0d66189bf3 ortho: remove useless and invalid log trace (CID 350886, 350887) 2021-07-11 20:43:22 +02:00
Even Rouault 8ee496716f Merge pull request #2774 from rouault/fix_2770
Logging: avoid some overhead when logging is not enabled (fixes #2770)
2021-07-10 11:56:49 +02:00
Even Rouault 8b261395b7 Logging: avoid some overhead when logging is not enabled (fixes #2770) 2021-07-08 21:56:46 +02:00
Even Rouault 1fcf669349 Merge pull request #2772 from rouault/epsg_10_028
Database: update to EPSG v10.028
2021-07-08 15:22:16 +02:00
Even Rouault a2c438509f Database: update to EPSG v10.028 2021-07-08 13:54:51 +02:00
Even Rouault fe9be0e766 Merge pull request #2769 from rouault/fix_2768
createOperations(): make sure to associate an extent to the transform…
2021-07-08 13:22:01 +02:00
Even Rouault 209d742c2f createOperations(): make sure to associate an extent to the transform of a CRS with a GEOIDMODEL using a PROJ grid, so that it is later used instead of a ballpark operation (fixes #2768) 2021-07-07 21:43:23 +02:00
Even Rouault 9a46b4ac49 Merge pull request #2765 from direvus/update-contributing-doc
Update "PROJ.4" to "PROJ" in the Contributing document.
2021-07-05 14:21:42 +02:00
Even Rouault 9917c999ee Merge pull request #2764 from SpaceIm/fix/install-exec-ios
CMake: fix installation of executables on iOS
2021-07-05 14:20:51 +02:00
Brendan Jurd 06f2dfe68b Update "PROJ.4" to "PROJ" in the Contributing document. 2021-07-05 16:43:47 +10:00
SpaceIm 30feeadab7 fix installation of executables on iOS 2021-07-04 20:50:01 +02:00
Even Rouault 0c9a7bb22c Merge pull request #2760 from rouault/fix_2759
test_factory.cpp: fix build, in particular on Alpine Edge (fixes #2759)
2021-07-02 00:51:28 +02:00
Even Rouault fc983b6e33 test_factory.cpp: fix build, in particular on Alpine Edge (fixes #2759) 2021-07-01 21:24:26 +02:00
Kristian Evers d41c10c9e1 Bump version numbers in anticipation of 8.2.0 2021-06-30 22:38:43 +02:00
Kristian Evers 5e1a78c5d6 Update website for 8.1.0 release 2021-06-30 22:19:59 +02:00
Kristian Evers b8fe7719b9 Update news for 8.1.0 release 2021-06-25 09:57:35 +02:00
Kristian Evers a07d1599a1 Update man-pages from Sphinx-docs 2021-06-25 08:47:41 +02:00
Kristian Evers 8fb12787fc Update ABI numbers for 8.1.0 release 2021-06-25 08:44:22 +02:00
Charles Karney 9d1bc0b3d4 Merge pull request #2752 from cffk/geodesic-1.52-sync
Minor changes to address lint in geodesic.c
2021-06-23 08:01:45 -04:00
Charles Karney 9a570991f5 Minor changes to address lint in geodesic.c (courtesy of Marc Emery <memery@myotest.com>) 2021-06-22 18:48:49 -04:00
Even Rouault c959db170f Merge pull request #2751 from rouault/epsg_10_027
Database: update to EPSG v10.027
2021-06-19 23:14:53 +02:00
Even Rouault 9a2f2ed950 Database: update to EPSG v10.027 2021-06-19 21:15:39 +02:00
Even Rouault a79b5558da Merge pull request #2750 from rouault/better_operation_selection
proj_trans/cs2cs: If two operations have the same accuracy, use the one that is contained within a larger one
2021-06-18 14:24:38 +02:00
Even Rouault 916eaa4349 operations_computation.rst: add note about proj_create_crs_to_crs not necessarily using the operation that appears as first 2021-06-18 13:59:43 +02:00
Even Rouault 5f6fac3afd proj_trans/cs2cs: If two operations have the same accuracy, use the one that is contained within a larger one
Relates to https://github.com/OSGeo/gdal/issues/3998

Before that change, cs2cs on a NAD83(HARN) to WGS84 transformation would
use the "NAD83(HARN) to WGS 84 (1)" transformation (a null Helmert
shift) that is valid for whole US, including non-CONUS areas, even when
used on points located on CONUS that has a "NAD83(HARN) to WGS 84 (3)"
transformation (non-null Helmert shift) with same accuracy (1m).

But if doing  EPSG:2874 "NAD83(HARN) / California zone 5 (ftUS)" to
WGS84, we would use this later "NAD83(HARN) to WGS 84 (3)"
transformation because the area of use of EPSG:2874 restricts to CONUS.
This isn't consistant.

With that change, we now have more consistent behavior, even if it can
be argued which of the 2 transformations is the best...

$ echo 34 -120 | src/cs2cs -d 8 EPSG:4326 "NAD83(HARN)" | src/cs2cs "NAD83(HARN)"  EPSG:2874
5955507.74	1828410.98 0.00

$ echo 34 -120 | src/cs2cs  EPSG:4326   EPSG:2874
5955507.74	1828410.98 0.00
2021-06-17 17:53:11 +02:00
Even Rouault 987c8e9a45 Fix build with -DPROJ_INTERNAL_CPP_NAMESPACE 2021-06-14 12:07:31 +02:00
Even Rouault 385ca0ecb4 Merge pull request #2747 from rouault/fix_gdal_3958
BoundCRS::identify(): avoid incompatible transformation for WKT1 / TOWGS84 export (fixes OSGeo/gdal#3958)
2021-06-10 20:53:51 +02:00
Even Rouault db10e86c2c BoundCRS::identify(): avoid incompatible transformation for WKT1 / TOWGS84 export (fixes OSGeo/gdal#3958) 2021-06-10 19:36:16 +02:00
Even Rouault 51ec5e346a Merge pull request #2745 from rouault/epsg_10_026
Database: update to EPSG v10.026
2021-06-10 13:13:33 +02:00
Even Rouault 230012325a Database: update to EPSG v10.026 2021-06-10 12:25:35 +02:00
Even Rouault 5436e8aa46 Merge pull request #2738 from rouault/share_sqlite_handle
Share SQLite database handle among all contexts
2021-06-09 19:58:12 +02:00
Geoff Evans 5d8abfd0ba Make filemanager aware of UWP Win32 API 2021-06-08 12:00:29 -07:00
Even Rouault fae861c75a Merge pull request #2740 from RoelvandenBerg/master
Update link in docs to Dutch coord transform website.
2021-06-05 11:47:27 +02:00
Roel van den Berg 72af007280 Update link to dutch coord transform website. 2021-06-04 16:59:57 +02:00
Even Rouault 61e25ec859 factory.cpp: lint: make memoryHandle_ a unique_ptr 2021-06-03 12:23:24 +02:00
Even Rouault dd416fd8d3 Run database layout checks only at first DB opening 2021-06-03 12:23:24 +02:00
Even Rouault 85512dd3a7 proj_cleanup(): make sure it frees the database context of the default PJ_CONTEXT 2021-06-03 11:29:56 +02:00
Even Rouault 1c80b05e00 Check that database connection sharing properly works 2021-06-03 11:29:16 +02:00
Even Rouault 9ce2d6fc0e Make proj_context_set_autoclose_database() a no-op as it would defeat the purpose of the new database connection sharing 2021-06-03 11:29:16 +02:00
Even Rouault e0a1b88e82 Database: use shared sqlite handle 2021-06-03 11:29:16 +02:00
Even Rouault 590840d6ff factory.cpp: preparation steps for global sqlite3* handle, but no functional change 2021-06-03 11:29:16 +02:00
Even Rouault dcc2a94eb1 test_c_api.cpp: avoid use of undefined .t component 2021-06-03 11:28:55 +02:00
Even Rouault 29f849485b Merge pull request #2736 from rouault/cleanup_mutex
Cleanup: add proj/internal/mutex.hpp as compat layer for mingw32 for std::mutex
2021-06-02 19:06:15 +02:00
Even Rouault a77df0d81b Merge pull request #2735 from rouault/fix_2734
proj_create(): do not open proj.db if string is a PROJ string, …
2021-06-02 18:09:46 +02:00
Even Rouault e297475f0d Cleanup: add proj/internal/mutex.hpp as compat layer for mingw32 for std::mutex 2021-06-02 18:08:48 +02:00
Even Rouault 77de7651fd proj_create(): do not open proj.db if string is a PROJ string, even if proj_context_set_autoclose_database() has been set (fixes #2734) 2021-06-02 17:33:50 +02:00
Even Rouault fdfeae1908 Merge pull request #2732 from rouault/epsg_10_024
Database: update to EPSG v10.024
2021-05-28 12:57:26 +02:00
Even Rouault edc6df3dc1 ConcatenatedOperation::fixStepsDirection(): remove recently introdued hack specific to EPSG:9731 now that is is deprecated 2021-05-27 11:57:05 +02:00
Even Rouault 548a6ab050 Database: update to EPSG v10.024 2021-05-27 11:49:06 +02:00
Even Rouault d83db69821 build_db.py: add hack to minimize diff now that we use WITHOUT ROWID 2021-05-27 11:48:54 +02:00
Even Rouault 7b407e36e6 Merge pull request #2730 from rouault/without_rowid
Database: decrease DB size by using WITHOUT ROWID tables
2021-05-25 14:47:27 +02:00
Even Rouault ee04c2725f Database: decrease DB size by using WITHOUT ROWID tables
None of our tables are indexed by a INTEGER PRIMARY KEY, but most of
them are by a (auth_name, code) primary key. Consequently they can
benefit from being created as WITHOUT ROWID tables
(https://sqlite.org/withoutrowid.html), which avoids an index to be
created on the rowid we don't use. WITHOUT ROWID is a feature added in
SQLite 3.8.2, so as our baseline is 3.11, we can use it.

This decreases the DB size from 7,749,632 to 7,229,440 bytes, without
any measurable consequence on performance.
2021-05-24 14:40:37 +02:00
Even Rouault c44a3008b0 DatabaseContext::getTransformationsForGridName(): make it work properly when different EPSG grid names map to the same PROJ grid name 2021-05-24 13:59:32 +02:00
Even Rouault e814dce2de Merge pull request #2729 from rouault/analyze_db
Database: add a ANALYZE step during proj.db creation
2021-05-24 13:29:33 +02:00
Even Rouault 08d4b05771 projinfo: fix error message regarding --output-id 2021-05-23 12:58:06 +02:00
Even Rouault 1720b0586c Database: add a ANALYZE step during proj.db creation
This will create the sqlite_stat* table (generally sqlite_stat1). This
speeds up a bit the test suite. Runtime of ``make test_cpp_api-check``
goes from the range [14.0 s, 14.6 s] to [13.0s, 13.5s] on my machine.
2021-05-23 00:48:25 +02:00
Even Rouault bfa170c032 code formatting fix 2021-05-23 00:41:46 +02:00
Kristian Evers 6a9dbe7fd9 Merge pull request #2726 from heidivanparys/projinfo_doc
Add projinfo example; update note Windows installation
2021-05-18 15:15:15 +02:00
Heidi Vanparys f671ae712b Update install.rst: update Windows note
Add info that OSGeo4W Shell may be present already when QGIS is present.
2021-05-18 12:19:53 +02:00
Heidi Vanparys 4b37ed7322 Update projinfo doc: add example --single-line 2021-05-18 12:03:01 +02:00
Even Rouault abf680353d Merge pull request #2725 from rouault/projsync_version_filtering
projsync: make it filter out files not intended for the current version
2021-05-18 11:15:32 +02:00
Even Rouault 5fbcc3a731 HOWTO-RELEASE: mention updating PROJ_DATA.VERSION 2021-05-17 19:36:25 +02:00
Even Rouault aee1709d6c projsync: make it filter out files not intended for the current version
* Add a PROJ_DATA.VERSION in proj.db to indicate the target PROJ-data
  package version
* Make projsync use that information and the version_added and
  version_removed properties added in https://github.com/OSGeo/PROJ-data/pull/67
  to filter out files that are not relevant
* Add --no-version-filtering and --verbose switches
2021-05-17 16:00:12 +02:00
Even Rouault 5fe51fad2c Merge pull request #2723 from rouault/grid_alternatives_AGQG_20201120
grid_alternatives.sql: reference AGQG_20201120.gsb
2021-05-17 12:26:59 +02:00
Even Rouault 7d2f766940 Database: map ESRI spain/peninsula and spain/baleares grids 2021-05-16 21:21:56 +02:00
Even Rouault 6cca5d6df5 grid_alternatives.sql: reference AGQG_20201120.gsb (cf OSGeo/PROJ-data#63) 2021-05-16 21:10:20 +02:00
Even Rouault cc1aca389c Merge pull request #2722 from rouault/epsg_10_022
Database: update to EPSG v10.022
2021-05-16 19:51:48 +02:00
Even Rouault 5da981bcb9 scripts/grid_checks.py: improve --not-in-grid-alternatives output 2021-05-16 15:40:26 +02:00
Even Rouault 752696eb8a Database: update to EPSG v10.022 2021-05-16 12:41:07 +02:00
Even Rouault 68a11b7724 Merge pull request #2721 from rouault/fix_2720
Fix export of transformation to PROJ string in a particular situation…
2021-05-12 16:55:52 +02:00
Even Rouault dedd291692 Fix export of transformation to PROJ string in a particular situation where CompoundCRS are involved (fixes #2720) 2021-05-12 15:36:11 +02:00
Even Rouault a962fdc54a Formatting fixes 2021-05-12 15:11:00 +02:00
Even Rouault a78f0834d9 Merge pull request #2717 from nyalldawson/esri128
Update ESRI projection db to 12.8
2021-05-11 04:22:25 +02:00
Nyall Dawson 716a2ed2d7 Minor formatting/pep fixes 2021-05-11 08:47:32 +10:00
Nyall Dawson 4df65e61e1 Update metadata 2021-05-11 08:41:20 +10:00
Nyall Dawson 6718349c7e Update build_db_from_esri.py
- Use argparse to handle arguments
- Make version and date mandatory arguments, so that they must
always be stated
- Use pathlib for paths
2021-05-11 08:40:18 +10:00
Nyall Dawson 32486209c5 Update ESRI projection db to 12.8 2021-05-10 10:33:58 +10:00
積丹尼 Dan Jacobson 3a79f0dbca Mention what the default +units are 2021-05-09 19:26:47 +02:00
Mike Taves 592a6017bc CMake: "make dist" workalike via CPack (#2690) 2021-05-09 00:09:56 +12:00
Even Rouault 641ee7029c Merge pull request #2708 from mwtoews/stereographic
Fix typo: "Mod. Stererographics" -> "Modified Stereographic"
2021-05-07 21:47:26 +02:00
Even Rouault 060151460c Doc: fix URL 2021-05-07 21:46:25 +02:00
Even Rouault c645d6b5ef Doc: update GDAL version 2021-05-07 21:31:16 +02:00
Mike Taves 71a496c4bb Fix typo: "Mod. Stererographics" -> "Modified Stereographic" 2021-05-04 09:06:11 +12:00
Mike Taves ea3f53746c DOC: configure and add spelling wordlist; fix typos, apply Sphinx syntax (#2705) 2021-05-04 09:05:06 +12:00
Even Rouault 371bc3c5e7 Merge pull request #2702 from rouault/run_nkg_gie
CMake build: run nkg.gie tests (dependent on CURL_ENABLED and RUN_NETWORK_DEPENDENT_TESTS settings)
2021-05-01 14:29:29 +02:00
Even Rouault 2b2e307af8 test/gie/Makefile.am: add nkg.gie 2021-04-30 15:38:20 +02:00
Even Rouault 1709be294d CMake build: run nkg.gie tests (dependent on CURL_ENABLED and RUN_NETWORK_DEPENDENT_TESTS settings) 2021-04-30 15:26:38 +02:00
Even Rouault 9182c15a21 nkg.gie: fix operation line. The repetition of operation worked previously by accident and wasn't necessary 2021-04-30 14:34:25 +02:00
Even Rouault 9e4205573d Fix ossfuzz builds [ci skip] 2021-04-30 14:11:26 +02:00
Even Rouault 9d1a7a68c5 Merge pull request #2686 from rouault/nlohmann_json_update
Update internal nlohmann/json to 3.9.1, and add a CMake option to be able to use external nlohmann/json
2021-04-30 14:06:29 +02:00
Even RouaultandMike Taves 29ac85d552 CMake build: add a NLOHMANN_JSON_ORIGIN=auto/external/internal setting allowing to choose which nlohmann/json to use
Co-authored-by: Mike Taves <mwtoews@gmail.com>
2021-04-30 13:27:25 +02:00
Even Rouault 36ac12c742 Update nlohmann/json to latest 3.9.1 release 2021-04-30 13:27:15 +02:00
Mike Taves 546743c838 TST/DOC: upgrade CSA to use ubuntu-18.04; sync docs (#2698) 2021-04-30 22:28:13 +12:00
Even Rouault 0f9e6bf1a2 docs/Makefile: copy triangulation.schema.json (fixes #2699) 2021-04-28 15:44:38 +02:00
Kristian Evers ee177a7b9f Update NEWS for 8.0.1 release 2021-04-28 11:16:07 +02:00
Even Rouault 4a355bcd46 CI: msys2 build: build with -Werror (#2697) 2021-04-25 21:13:56 +12:00
Even Rouault ea196217fd Merge pull request #2696 from rouault/derived_vertical_crs_unit_height_depth
Improvements related to DerivedVerticalCRS using Change Unit and Height/Depth reversal methods
2021-04-24 19:07:55 +02:00
Even Rouault 7898eaba11 Improvements related to DerivedVerticalCRS using Change Unit and Height/Depth reversal methods
- For instantiation from urn combined references, create a better name,
  using conventions of EPSG vertical CRS
- For exportToWKT(), allow export in WKT < WKT2 for such
  DerivedVerticalCRS
2021-04-24 15:51:19 +02:00
Even Rouault 01a5c03c05 test: test urn:ogc:def:ensemble: syntax 2021-04-24 15:50:13 +02:00
Even Rouault 3ffa2c50ad getInsertStatementsFor(): replace while with if (master only, CID 320133) 2021-04-24 11:39:47 +02:00
Javier Jimenez Shaw 93dc8422c4 Add proj_get_geoid_models_from_database() (#2681)
to list all geoid model names that apply to a vertical CRS
2021-04-24 10:37:19 +02:00
Even Rouault a002a3e9da Merge pull request #2692 from rouault/test_network_msys_warning
test_network.cpp: try to fix 'Please include winsock2.h before windows.h' warning with msys
2021-04-23 20:34:47 +02:00
Even Rouault d94d493979 Merge pull request #2691 from rouault/remove_useless_files
Remove useless files
2021-04-23 20:31:49 +02:00
Even Rouault 0ca0b7c537 Merge pull request #2689 from rouault/update_generated_parsers
wkt1_parser/wkt2_parser: regenerate them with bison 3.5.1 to hopefully make Coverity Scan happier
2021-04-23 20:31:35 +02:00
Even Rouault 57102f42c6 Merge pull request #2687 from rouault/pj_vlog_buffer_overflow
pj_vlog(): fix buffer overflow in case of super lengthy error message
2021-04-23 18:06:37 +02:00
Even Rouault 088c269810 test_network.cpp: try to fix 'Please include winsock2.h before windows.h' warning with msys
```
In file included from D:/a/_temp/msys/msys64/mingw64/include/curl/system.h:422,
                 from D:/a/_temp/msys/msys64/mingw64/include/curl/curl.h:38,
                 from D:/a/PROJ/PROJ/test/unit/test_network.cpp:48:
D:/a/_temp/msys/msys64/mingw64/x86_64-w64-mingw32/include/winsock2.h:15:2: warning: #warning Please include winsock2.h before windows.h [-Wcpp]
   15 | #warning Please include winsock2.h before windows.h
      |  ^~~~~~~
```

Seems to be what is described in https://curl.se/mail/lib-2016-12/0047.html
2021-04-23 16:07:55 +02:00
Even Rouault 0db141863f wkt1_parser/wkt2_parser: regenerate them with bison 3.5.1 to hopefully make Coverity Scan happier 2021-04-23 16:03:00 +02:00
Even Rouault 889ccf481b Move data/proj_outIGNF.dist-real to test/cli 2021-04-23 15:57:03 +02:00
Even Rouault 61736e153c Remove useless src/runmultistresstest.sh 2021-04-23 15:56:22 +02:00
Even Rouault 37fadb2963 Remove uselss data/epsg-deprecated and update data/README 2021-04-23 15:55:47 +02:00
Even Rouault 3a8a9f4329 Remove useless file data/sql/method_triggers.sql 2021-04-23 15:54:34 +02:00
Even Rouault 2733271888 test_o.cpp: add more sensical example for DerivedVerticalCRS built from urn: syntax 2021-04-23 15:43:04 +02:00
Even Rouault c221134bc3 pj_vlog(): fix buffer overflow in case of super lengthy error message
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=33594
2021-04-23 14:57:22 +02:00
Even Rouault 64f5b18c0a projinfo: increase file size limit of files opened with @filename to 1MB to be able to read file generated by ossfuzz 2021-04-23 14:44:16 +02:00
Even Rouault 399cba5726 getInsertStatementsFor(): replace while with if (master only, CID 320133) 2021-04-23 12:39:35 +02:00
Even Rouault a275d45912 projinfo: catch potential exception (master only, CID 193527) 2021-04-23 12:37:36 +02:00
Even Rouault 52e0536a88 Merge pull request #2685 from rouault/ci_coverity_scan
CI: add Coverity Scan weekly job
2021-04-23 11:35:38 +02:00
Even Rouault 9e8fd3a7f0 coverity-scan.yml: do not build tests 2021-04-23 11:33:21 +02:00
Even Rouault d590798d32 CI: add Coverity Scan weekly job 2021-04-23 11:03:58 +02:00
Even Rouault 99939f327e Merge pull request #2683 from rouault/epsg_10_019
Database: update to EPSG v10.019
2021-04-23 10:10:15 +02:00
Even Rouault f6abb7d75c Database: update to EPSG v10.019
Non-trivial updates:
- some vertical CRS are now encoded as DerivedVerticalCRS. e.g EPSG:8228
  "NAVD88 height (ft)", with base EPSG:5703 "NAVD88 height". As we don't
  have support in our PROJ db model for DerivedVerticalCRS, modify the
  import script to 'resolve' the derivation up to the original datum.
- Method EPSG:1069 'Change of Vertical Unit' is no longer used. It is
  replaced by a generic-purpose EPSG:1104 method that doesn't take any
  conversion factor. And generic conversions EPSG:7812 and EPSG:7813 are
  now used in concatenated operations, which require code changes as
  well.
2021-04-23 01:07:04 +02:00
Even Rouault c6dba3fffb ConcatenatedOperation::fixStepsDirection(): fix potential nullptr dereference 2021-04-22 22:51:19 +02:00
Even Rouault 81899cee11 Merge pull request #2680 from jjimenezshaw/run-clang-format
run reformat_cpp.sh to fix some leftovers
2021-04-20 20:53:39 +02:00
Javier Jimenez Shaw 11b422cbc7 run reformat_cpp.sh to fix some leftovers 2021-04-20 20:41:28 +02:00
Even Rouault 8d0c7cef4b Merge pull request #2678 from rouault/revert_ebe3425bf
Revert "proj_create_crs_to_crs_from_pj(): do not use PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION if area is specified"
2021-04-20 11:20:16 +02:00
Even Rouault f9d034afb7 Revert "proj_create_crs_to_crs_from_pj(): do not use PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION if area is specified"
This reverts commit ebe3425bf6.

It was found to break gdalwarp usage in
https://github.com/OSGeo/gdal/issues/3695 when passing a bbox that is
quite large.
2021-04-20 00:32:49 +02:00
Even Rouault bd1d3d9a79 Merge pull request #2677 from rouault/change_name_of_urn_combined_references
createFromUserInput(): change name of CRS built from URN combined references to match the convention of EPSG projected CRS
2021-04-18 17:08:05 +02:00
Even Rouault c70a7447c1 Merge pull request #2676 from rouault/fix_geog_to_geog_deprecated
createOperations(): fix Geog to Geog when one is deprecated (fix master regression)
2021-04-18 16:29:57 +02:00
Even Rouault 16c50fbe33 createFromUserInput(): change name of CRS built from URN combined references to match the convention of EPSG projected CRS 2021-04-18 16:12:50 +02:00
Even Rouault dd79ca70ed createOperations(): fix Geog to Geog when one is deprecated (fix master regression) 2021-04-18 14:28:34 +02:00
Alan D. Snow e4e2991b17 Added proj_get_celestial_body_list_from_database (#2674)
Closes #2667
2021-04-18 12:34:29 +02:00
Even Rouault 3d1c573dc9 Merge pull request #2672 from rouault/utm_invalid_zone
utm: error out when value of +zone= is not an integer (fixes #2671)
2021-04-15 23:47:40 +02:00
Even Rouault 773583b448 utm: error out when value of +zone= is not an integer (fixes #2671) 2021-04-15 21:07:49 +02:00
Javier Jimenez Shaw a850aac5e0 createFromUserInput(): parse compound id with two authorities, like ESRI:103668+EPSG:5703 (#2669) 2021-04-13 14:48:35 +02:00
Even Rouault 58b991b8b9 Merge pull request #2668 from rouault/reformat_cpp_docker
reformat_cpp.sh: run inside Docker image if clang-format is not at version 10
2021-04-13 12:22:18 +02:00
Even Rouault 2a64d4c8b0 reformat_cpp.sh: run inside Docker image if clang-format is not at version 10 2021-04-13 00:31:54 +02:00
Even Rouault ff771264d7 Merge pull request #2662 from rouault/celestial_body
Add proj_get_celestial_body_name() and …
2021-04-12 13:29:22 +02:00
Even Rouault d582ac8bae Add proj_get_celestial_body_name() and make proj_get_crs_info_list_from_database() filter on and return celestial body name 2021-04-12 12:48:42 +02:00
Even Rouault 3bc25ac8a9 Merge pull request #2659 from rouault/fix_2603
CRS::normalizeForVisualization(): propagate domains/extent of original CRS (fixes #2603)
2021-04-12 11:51:10 +02:00
Even Rouault 3361e52868 Merge pull request #2664 from rouault/improve_projinfo_listcrs_area
projinfo --list-crs --area: make it work when multiple areas matches the specified name
2021-04-11 23:29:51 +02:00
Even Rouault 2ac8170863 projinfo --list-crs --area: make it work when multiple areas matches the specified name 2021-04-11 22:50:12 +02:00
Even Rouault f683aa04d6 Reformatting fix 2021-04-11 22:24:15 +02:00
Javier Jimenez Shaw 78792a7e42 projinfo: add option --list-crs (#2663) 2021-04-11 21:44:52 +02:00
Even Rouault 6fffba7efa Merge pull request #2660 from rouault/getCRSInfoList_deterministic_result_order
getCRSInfoList(): make result order deterministic (by increasing auth_name, code)
2021-04-11 01:03:55 +02:00
Even Rouault 88426c18e4 projinfo: add a --normalize-axis-order undocument switch 2021-04-11 00:22:03 +02:00
Even Rouault d870b33803 CRS::normalizeForVisualization(): propagate domains/extent of original CRS (fixes #2603) 2021-04-11 00:22:03 +02:00
Even Rouault ea51372c79 createFromUserInput(): support URN:OGC:DEF:CRS:OGC:1.3:CRS84 2021-04-11 00:04:10 +02:00
Even Rouault f92383ae58 getCRSInfoList(): make result order deterministic (by increasing auth_name, code) 2021-04-10 22:56:36 +02:00
Even Rouault 5f3fda7527 Merge pull request #2657 from rouault/cmake_test_cli
CMake: for test/cli, generate the output files in /test/cli like autoconf builds
2021-04-10 21:59:22 +02:00
Even Rouault d52de4dc0b Doc: remove mention of k_0 and lat_ts in aeqd projection. They are not used. Fixes #2638 and fixes #2639 2021-04-10 20:58:02 +02:00
Even Rouault 51e57204e0 CMake: for test/cli, generate the output files in /test/cli like autoconf builds 2021-04-10 20:30:54 +02:00
Even Rouault 16183da6c1 fix typo in comment 2021-04-10 20:16:06 +02:00
Even Rouault 34ea139137 Merge pull request #2656 from rouault/createFromUserInput_improvements
createFromUserInput(): various enhancements
2021-04-10 20:15:34 +02:00
Even Rouault a77ce5cf34 Recognize OGC:84 as an alias of OGC:CRS84 2021-04-10 19:17:40 +02:00
Even Rouault b6c12e6968 createFromUserInput(): add support for WMS AUTO: syntax 2021-04-10 19:17:40 +02:00
Even Rouault efef14e274 Add UnitOfMeasure::FOOT and US_FOOT 2021-04-10 19:17:39 +02:00
Even Rouault 0db805dfab createFromUserInput(): add support for (legacy) urn:x-ogc:def:crs:EPSG:XXXX syntax 2021-04-10 19:17:39 +02:00
Even Rouault 76d8cb9daf createFromUserInput(): add support for (legacy) urn:opengis:crs:EPSG:0:XXXX syntax 2021-04-10 19:17:39 +02:00
Even Rouault 35a9ffc2d1 Add hard-coded definitions for OGC:AnsiDate/JulianDate/UnixTime 2021-04-10 19:17:39 +02:00
Even Rouault 21f0af0f8b createFromUserInput(): add support for OGC URLs
e.g:
http://www.opengis.net/def/crs/EPSG/0/4326
http://www.opengis.net/def/crs-compound?1=http://www.opengis.net/def/crs/EPSG/0/4326&2=http://www.opengis.net/def/crs/EPSG/0/3855
2021-04-10 19:17:39 +02:00
Even Rouault 84a679954b projinfo: remove spurious -- in help message (master only) 2021-04-10 11:46:56 +02:00
Even Rouault fc6ff7a481 Merge pull request #2647 from rouault/integer_or_text
Database: decrease db size
2021-04-08 19:29:54 +02:00
Even Rouault 78e3768a71 Merge pull request #2653 from mwtoews/ci-msys2
CI: build and test on MSYS2 with Windows
2021-04-08 00:03:22 +02:00
Even Rouault 1918883532 Merge pull request #2654 from rouault/show_that_pr_2616_is_wrong
test: add datum shift related tests for transformations crossing antimeridian
2021-04-07 23:28:20 +02:00
Mike Taves f21b552108 Drop set/export of PROJ_LIB for Windows CI runs 2021-04-08 09:23:59 +12:00
Even Rouault 3a267909e4 proj_trans(): add a more expressive log message 2021-04-07 22:54:28 +02:00
Even Rouault 86c6761674 test: add datum shift related tests for transformations crossing antimeridian
If using the proposed patch in PR #2616 refreshed as,

```
diff --git a/src/4D_api.cpp b/src/4D_api.cpp
index c7725d3a..3bd58a97 100644
--- a/src/4D_api.cpp
+++ b/src/4D_api.cpp
@@ -998,7 +998,7 @@ static void reproject_bbox(PJ* pjGeogToCrs,
         constexpr int XY_SIZE = N_STEPS_P1 * 4;
         std::vector<double> x(XY_SIZE);
         std::vector<double> y(XY_SIZE);
-        const double step_lon = (east_lon - west_lon) / N_STEPS;
+        const double step_lon = (((east_lon >= west_lon) ? east_lon : east_lon + 360) - west_lon) / N_STEPS;
         const double step_lat = (north_lat - south_lat) / N_STEPS;
         for( int j = 0; j <= N_STEPS; j++ )
         {
@@ -1244,7 +1244,7 @@ std::vector<PJCoordOperation> pj_create_prepared_operations(PJ_CONTEXT *ctx,
             {
                 const bool isOffshore =
                     areaName && strstr(areaName, "- offshore");
-                if( west_lon <= east_lon )
+                if( true || west_lon <= east_lon )
                 {
                     op = add_coord_op_to_list(i, op,
                         west_lon, south_lat, east_lon, north_lat,
```

we'd get an incorrect result on one point, using the 'Pulkovo 1942 to WGS 84 (16)' less accurate transformation
due to mis-computation of bounding boxes.
```
--- ../test/cli/tv_out.dist	2021-04-07 22:29:02.706095239 +0200
+++ test/cli/tv_out	2021-04-07 22:29:35.809579495 +0200
@@ -499,7 +499,7 @@
 ##############################################################
 Check that we can use a transformation spanning the antimeridian (should use Pulkovo 1942 to WGS 84 (20))
 50 179.999999999	49d59'59.36"N	179d59'52.133"W 0.000
-50 -179.999999999	49d59'59.36"N	179d59'52.133"W 0.000
+50 -179.999999999	49d59'59.422"N	179d59'52.184"W 0.000
 ##############################################################
 Check that we can use a transformation spanning the antimeridian (should use Pulkovo 1942 to WGS 84 (20))
 5540944.47  499999.999	49d59'59.36"N	179d59'52.133"W 0.000
```
2021-04-07 22:34:03 +02:00
Even Rouault b5d3f2a250 Database: more thorough consistency checks on extent of coordinate operations 2021-04-07 12:49:54 +02:00
Mike Taves 0abacbc927 CI: build and test on MSYS2 with Windows 2021-04-07 13:08:22 +12:00
Even Rouault ec25bdc7b5 Merge pull request #2652 from rouault/extra_consistency_checks
Database: extra consistency checks
2021-04-07 00:01:02 +02:00
Even Rouault 950ce787b2 Database: nullify auth_name, code of usage table
We never select by those columns, so don't set them. Reduce from 8.4 to
7.9 MB.

Upgrade the minor version of the database layout. (that database can
still be read by PROJ 8.0)
2021-04-06 23:30:19 +02:00
Even Rouault ea624e0d29 Database: more consistency checks on helmert_transformation and grid_transformation 2021-04-06 23:28:14 +02:00
Even Rouault 59f344df91 Database: do not create Helmert transformations in IGNF between CRS of different nature, and also adjust the method code/name to the nature of the CRS 2021-04-06 23:28:12 +02:00
Even Rouault 9a6c7c7814 Database: minor refresh of ignf.sql and import script with new locations of resources 2021-04-06 23:26:37 +02:00
Even Rouault cfe5615b5b Merge pull request #2646 from rouault/db_proj_version
Database: add a PROJ.VERSION metadata entry
2021-04-06 22:16:31 +02:00
Even Rouault 754e1eef9b Merge pull request #2650 from rouault/fix_createBetweenGeodeticCRSWithDatumBasedIntermediates
createOperations(): make createBetweenGeodeticCRSWithDatumBasedIntermediates() reachable...
2021-04-05 22:47:48 +02:00
Even Rouault 34e93f1139 createOperations(): make createBetweenGeodeticCRSWithDatumBasedIntermediates() reachable...
... and optimize its execution time by rewriting it completely.

This code path was no longer triggered in tests since EPSG got a direct
transformation for GDA94 to WGS 84 (G1762).
2021-04-05 21:30:52 +02:00
Kristian Evers 3ae02ac091 Merge pull request #2648 from jidanni/patch-1
Add missing comma
2021-04-05 07:05:29 +02:00
積丹尼 Dan Jacobson 1abe7a7a82 Add missing comma
For https://github.com/OSGeo/PROJ/issues/2645 .
2021-04-05 09:47:33 +08:00
Even Rouault f85b072313 Database: decrease db size by using a INTEGER_OR_TEXT data type on codes
Most codes (especially *all* in EPSG) are integers. As integers are
stored as variable-length in the db, it is preferable to store them as
such when possible.

So use a special INTEGER_OR_TEXT data type. This is a
"non-standard" type declaration, but this is perfectly legal as SQLite is
loosely typed.

As this declaration contains the string INT, it is assigned INTEGER affinity.
Which means that values provided either as text (that contains integer value)
or integer will be stored as integers, whereas text values will be stored as
text. See paragraph 3 and 3.1 of https://www.sqlite.org/datatype3.html.
The "INTEGER_OR_TEXT" name is a hint for the user, and software like
GDAL (>= 3.3) to expose the column as string...

The effect of using this rather than TEXT is making the DB size go from
9 MB to 8.4.

There is no need to change the DATABASE.LAYOUT version numbering as this
is completely forward and backward compatible.
2021-04-04 21:51:10 +02:00
Even Rouault 5c9e2e9d43 Database: add missing column type specifir for method_name in grid_transformation and other_transformation. No practical impact 2021-04-04 21:07:36 +02:00
Even Rouault 399a833219 Database: add a PROJ.VERSION metadata entry 2021-04-04 20:09:00 +02:00
Even Rouault b6210a0e25 Merge pull request #2637 from rouault/hyperbolic_cass
Add support for hyperbolic Cassini-Soldner
2021-04-03 21:59:05 +02:00
Even Rouault 2594b3a224 Add mapping between EPSG method 'Hyperbolic Cassini-Soldner' and +proj=cass +hyperbolic 2021-04-03 20:18:10 +02:00
Even Rouault 970c849cc7 cass: add +hyperbolic switch for variant used by EPSG:3139 'Vanua Levu 1915 / Vanua Levu Grid' 2021-04-03 20:18:08 +02:00
Even Rouault bf79113d1d Generic inverse: fix when initial guess if super close to result 2021-04-03 20:17:15 +02:00
Even Rouault d436d4fbbf cass: rewrite ellipsoidal formulas in a clearer way using EPSG guidance note names 2021-04-03 17:54:39 +02:00
Even Rouault 722cf8840c reproject_bbox(): reduce number of magic values 2021-04-03 17:52:58 +02:00
Even Rouault d6d46c2102 Merge pull request #2635 from rouault/epsg_10_018
Database: update to EPSG v10.018
2021-04-02 18:12:01 +02:00
Even Rouault c8e0c2c14b Database: update to EPSG v10.018
Just fixes 4 wrong transformations of v10.017
2021-04-02 17:35:41 +02:00
積丹尼 Dan Jacobson b964253ccd Doc: geod.rst: reduce doubled information (#2631)
Don't repeat neighboring information.
2021-04-02 12:17:51 +02:00
Even Rouault 8d9e27c875 Merge pull request #2627 from rouault/improve_grid_transformation_check
Database: refine checks for 'Geog3D to Geog2D+XXX' transformations, …
2021-04-01 23:21:35 +02:00
Even Rouault 17b42f68f3 Database: stronger checks on extent of grid_transformation regarding the extent of the source and target CRS 2021-04-01 22:45:23 +02:00
Even Rouault dbf4789414 Database: add extra check for 'Vertical Offset by Grid Interpolation' transformations 2021-04-01 22:26:12 +02:00
Even Rouault a028ecd97b Database: refine checks for 'Geog3D to Geog2D+XXX' transformations, and create less synthetic 'Geographic3D to GravityRelatedHeight' synthetic transformations 2021-04-01 22:20:21 +02:00
Even Rouault 5c56836dd1 Merge pull request #2625 from rouault/epsg_10_017
Database: update to EPSG 10.017
2021-04-01 21:11:32 +02:00
Even Rouault e6a0966a47 Database: update to EPSG 10.017 2021-04-01 15:59:35 +02:00
Even Rouault 381d4f6ff3 Merge pull request #2622 from rouault/fix_sped2etv2_supersession
createOperation(): make sure no to discard deprecated operations...
2021-03-29 12:31:54 +02:00
Even Rouault b7f9a9b834 createOperation(): make sure no to discard deprecated operations...
if the replacement uses a grid unknown to us.

Fixes issue reported at https://lists.osgeo.org/pipermail/gdal-dev/2021-March/053771.html

The issue comes from the fact that EPSG has created 2 transformations
using grids BALR2009.gsb ad PENR2009.gsb that supersede the one which
uses the single grid SPED2ETV2 we have in PROJ-data.
2021-03-28 23:42:34 +02:00
Even Rouault 292943edbe Merge pull request #2620 from rouault/fix_build_solaris
Fix build on Solaris 11.4
2021-03-28 22:29:55 +02:00
Howard Butler 79c90906be GitHub Action to build both the 'proj' and 'proj-docs' container (#2618)
* adapt PDAL's docker build script for PROJ

* try building doc builder container too

* don't push containers on pull_request
2021-03-28 15:03:58 -05:00
Even Rouault 50fd9af378 Fix build on Solaris 11.4 2021-03-28 21:59:50 +02:00
Even Rouault 72f53cf06e Merge pull request #2613 from rouault/doc_fix_app_typo
Doc: fix typo in man page of utilities, and reduce copy&paste
2021-03-28 13:07:56 +02:00
Even Rouault 2153dd96bd Doc: fix typo in man page of utilities, and reduce copy&paste 2021-03-27 21:48:38 +01:00
Even Rouault b10e98fe43 Dockerfile osgeo/proj-docs: update to doxygen 1.9.1 (fixes OSGeo/gdal#3619) 2021-03-27 20:45:56 +01:00
Even Rouault 703bc5b4a9 Merge pull request #2611 from rouault/fix_2610
Add mapping of ESRI Equal_Area projection method to EPSG (fixes #2610)
2021-03-27 19:50:42 +01:00
Even Rouault f20b4870a6 Add mapping of ESRI Equal_Area projection method to EPSG (fixes #2610) 2021-03-27 16:45:12 +01:00
Even Rouault 14ce3d9fa8 Build: simplify proj.db generation (#2605)
- change foreign key check, so that it is enabled outside of the
  transaction where we insert things, and can make the sqlite3
  process fail in case of violations, without the postcheck done
  in the autoconf build
- autoconf and cmake builds: simplification related to the above
  (which also means that cmake builds now have the fkey check, which
  was omitted until now)
2021-03-26 12:49:35 +01:00
Javier Jimenez Shaw 969ae0712c Database: add grid alternatives and transformation custom for ch_swisstopo_chgeo2004_ETRS89_LHN95 and ch_swisstopo_chgeo2004_ETRS89_LN02 (#2584) 2021-03-25 14:47:23 +01:00
Even Rouault e3d7e18f98 Merge pull request #2598 from himsve/nkg_sweden
Incorrect EPGS extent code for EPSG:7789>EPSG:4976 NKG transformation
2021-03-23 15:31:54 +01:00
Sveinung Himle b0cc7eae01 Incorrect EPGS extent code for EPSG:7789>EPSG:4976 transformation 2021-03-23 14:40:10 +01:00
Javier Jimenez Shaw 0d4c31f787 data/CH: fix wrong capitalization of CHENyx06_ETRS.gsb (#2596)
The file data/CH containing the +proj string to use CHENyx06_ETRS.gsb was wrongly capitalized. It was not consistent with EPSG and therefore other entries in proj.db.
2021-03-23 12:24:15 +01:00
Even Rouault cf89f95ad8 Merge pull request #2594 from rouault/fix_of_fix_2588
createOperations(): fix regression for the fix of #2588
2021-03-21 00:23:09 +01:00
Even Rouault 6206a37ac9 createOperations(): fix regression for the fix of #2588
Issue spotted by GDAL autotest suite.
2021-03-20 23:34:38 +01:00
Even Rouault e04029cbc0 Merge pull request #2592 from rouault/fix_2588
createOperations(): fix Compound to Geog3D CRS computations in the ca…
2021-03-20 12:02:48 +01:00
Even Rouault dd8edd87e8 createOperations(): fix Compound to Geog3D CRS computations in the case... (fixes #2588)
when the source and target CRS share the same geog CRS, but the interpolation
CRS of the vertical transformation isn't the same, and a Helmert
transformation exists between them...

For example, for "CH1903+ + EGM96" to CH1903+ 3D where the interpolation
CRS is WGS84.
2021-03-20 01:14:01 +01:00
Kristian Evers 3697e946c9 Merge pull request #2590 from kbevers/update-foss4g
docs: update community site with links to FOSS4G 2021
2021-03-19 18:39:56 +01:00
Kristian Evers 3e5c5187d5 docs: update community site with links to FOSS4G 2021 2021-03-19 18:09:43 +01:00
Kristian Evers 15119f29cd backport action: specify pull_request_target instead of pull_request 2021-03-19 17:40:19 +01:00
Kristian Evers 8f4074e428 Add missing(?) id to backport action 2021-03-19 17:36:47 +01:00
Even Rouault ac9c36e1b4 Merge pull request #2589 from rouault/fix_2587
CRS::promoteTo3D(): propagate the extent from the 2D CRS (fixes #2587)
2021-03-19 16:46:33 +01:00
Even Rouault 573d5ea0fd CRS::promoteTo3D(): propagate the extent from the 2D CRS (fixes #2587)
This will help getting more consistent results between the 2D and 3D
cases, as identified in
https://github.com/OSGeo/PROJ/issues/2587#issue-836061171
2021-03-19 16:00:29 +01:00
Kristian Evers bbdf037bc6 Merge pull request #2586 from kbevers/update-backport-bot
Update backport action to what is currently used by QGIS
2021-03-19 15:04:40 +01:00
Kristian Evers 5edc28e933 Update backport action to what is currently used by QGIS 2021-03-19 13:38:40 +01:00
Even Rouault 338a3c4a26 Merge pull request #2585 from rouault/insert_sql_improvements
SQL output: make it possible to export non-EPSG projection methods or…
2021-03-19 13:07:04 +01:00
Even Rouault ed9b63dcce Tests: add new error cases of SQL output 2021-03-19 12:01:17 +01:00
Even Rouault 219758a4c9 SQL output: make it possible to export non-EPSG projection methods or methods and params lacking an explicit EPSG id 2021-03-19 11:30:54 +01:00
Even Rouault 76906029f3 Database: relax trigger check when inserting a conversion to accept any conversion method in the PROJ namespace
Helps for example to use CRS definitions using the non-EPSG codified
Sinusoidal method.
2021-03-19 11:26:42 +01:00
Even Rouault 663a77095d Merge pull request #2575 from mwtoews/container-locale
Set the container locale for spelling
2021-03-19 10:15:56 +01:00
Even Rouault d20145a979 Merge pull request #2583 from rouault/improve_perf_createFromCRSCodesWithIntermediates
createFromCRSCodesWithIntermediates(): improve perf when no match
2021-03-18 16:04:19 +01:00
Even Rouault 862cb97c22 createFromCRSCodesWithIntermediates(): improve perf when no match
createFromCRSCodesWithIntermediates() runs a rather costly self-join.
Only run it if the source and target CRS are the source/target of a
coordinate operation. This helps for the performance of
proj_create_crs_to_crs() when run on projected CRS for example that are
extremely unlikely to be the source/target of an operation (except
currently the Finish ones). For the EPSG:26915 to EPSG:3857 case of
https://github.com/OSGeo/gdal/issues/3470, this helps decreasing the
time of proj_create_crs_to_crs() from 18 ms to 10 ms.
2021-03-18 15:18:48 +01:00
Even Rouault 1e4ad55fbe Code formatting fix 2021-03-18 15:01:31 +01:00
Even Rouault d4e5e1a833 Merge pull request #2577 from rouault/insert_sql
Add capability to get SQL statements to add custom CRS in the database
2021-03-18 14:49:13 +01:00
Even Rouault 979e3a3ba0 Merge pull request #2581 from rouault/proj_version_number
proj.h: add PROJ_COMPUTE_VERSION, PROJ_VERSION_NUMBER, PROJ_AT_LEAST_VERSION macros
2021-03-17 16:30:22 +01:00
Even Rouault ee19a2d4d3 Merge pull request #2582 from rouault/fix_proj_clone
Fix proj_clone() to work on 'meta' coordinate operation PJ* objects that can be returned by proj_create_crs_to_crs()
2021-03-17 16:30:13 +01:00
Even Rouault b37d7a72ee Doc: add a page to document macros 2021-03-17 15:52:22 +01:00
Even Rouault cbbf3d6040 Fix proj_clone() to work on 'meta' coordinate operation PJ* objects that can be returned by proj_create_crs_to_crs() 2021-03-17 14:56:50 +01:00
Even Rouault 130d70228f proj.h: add PROJ_COMPUTE_VERSION, PROJ_VERSION_NUMBER, PROJ_AT_LEAST_VERSION macros
Makes it easier for users to test if they build against a PROJ version
later than a given x.y.z version.
2021-03-17 14:00:25 +01:00
Even Rouault eae06c94db Doc improvements regarding recomandation not to alter official registries and use auxiliary databases 2021-03-15 16:50:02 +01:00
Even Rouault 72f4f49bf3 Add support for PROJ_AUX_DB environment variable to set the path to one or several auxiliary DBs 2021-03-15 16:16:32 +01:00
Even Rouault eda2311513 projinfo: add a --dump-db-structure switch 2021-03-15 16:16:32 +01:00
Even Rouault 80ef9cee87 Add proj_context_get_database_structure() to dump structure of empty valid auxiliary DB 2021-03-15 16:16:32 +01:00
Even Rouault 7293d657a6 SQL export: add support for DatumEnsemble 2021-03-15 16:16:32 +01:00
Even Rouault d618dcc33b SQL export: add publication_date and frame_reference_epoch to datums 2021-03-15 16:16:32 +01:00
Even Rouault 8a67a3fb96 SQL output: add capability to restrict the authorities into which to look for intermediate objects 2021-03-15 16:16:31 +01:00
Even Rouault e33f6b5ecc CRS::identify(): take into account allowed authority to identify hard-coded WGS84-based CRSs 2021-03-15 16:16:31 +01:00
Even Rouault a234207957 projinfo: add a '-o SQL --output-id AUTH:CODE' SQL output 2021-03-15 16:16:31 +01:00
Even Rouault 5ddddfac62 Add C/C++ API to get SQL statements to insert a CRS into database 2021-03-15 16:16:31 +01:00
Even Rouault 1b07ef00c5 mingw_w64/start.sh: switch to http due to osgeo SSL certificate expiration 2021-03-15 16:16:13 +01:00
Even Rouault 5f1e54eb04 Merge pull request #2578 from cffk/geod-1.52-fix
geodesic.c: fix conditions under which hypot workaround is applied.
2021-03-14 13:20:11 +01:00
Charles Karney 7dbfc2590d geodesic.c: fix conditions under which hypot workaround is applied.
Now it applies with 32-bit compiles for all versioins of Visual Studio;
versions tested on: 2015, 2017, 2019.
2021-03-14 07:28:35 -04:00
Charles Karney 468b43c289 Merge pull request #2576 from cffk/geod-1.52
Update geodesic routines from GeographicLib 1.52
2021-03-13 16:18:14 -05:00
Charles Karney 70a6188c3c Work around inaccurate hypot for Visual Studio 2105 (32-bit) 2021-03-13 13:50:36 -05:00
Mike Taves 955bb4e9b6 Set the container locale for spelling [skip ci] 2021-03-14 07:06:07 +13:00
Charles Karney eb881d2957 Update geodesic routines from GeographicLib 1.52
Be more aggressive in preventing negative s12 and m12 for short lines.
Initialize reference argument to remquo.
2021-03-13 09:28:00 -05:00
Even Rouault 56dce02c70 typo fix in comment 2021-03-13 12:58:25 +01:00
Even Rouault fba602f3a1 Doxyfile: remove obsolete COLS_IN_ALPHA_INDEX tag 2021-03-13 12:14:12 +01:00
Even Rouault 9167cd4dc2 fix_typos.sh: update while lists 2021-03-13 12:11:30 +01:00
Even Rouault b2fde1adf4 Merge pull request #2573 from mwtoews/breathe
Use breathe>=4.27 to support Doxygen \page, \section, etc.
2021-03-12 12:44:52 +01:00
Even Rouault a3246a4d14 Merge pull request #2574 from mwtoews/patch-sphinxcontrib-spelling
CI: workaround for sphinxcontrib-spelling 7.1.0 on Python 3.6.9
2021-03-12 11:52:45 +01:00
Mike Taves 83af3dca00 CI: workaround for sphinxcontrib-spelling 7.1.0 on Python 3.6.9 2021-03-12 23:26:47 +13:00
Mike Taves 8b4bb4409d DOC: Use breathe>=4.27 to support Doxygen \page, \section, etc. 2021-03-12 07:33:22 +13:00
Even Rouault e10a849cd0 Database: fix NKG transformations 2021-03-11 16:12:30 +01:00
Sveinung HimleandEven Rouault 763939849b Database: Additions to the norwegian NKG2020 transformation (#2548)
* Correction grid NKG:ETRF14 to EPSG:7922

* Added NKG:ITRF_TO_NO GIE test

* Correction grid no_kv_NKGETRF14_EPSG7922_2000 added to grid_alternatives.sql

* proj_method 'velocity_grid' added in check_grid_alternatives_proj_method. NKG velocity grid added to grid_alternatives.sql

Co-authored-by: Even Rouault <even.rouault@spatialys.com>
2021-03-11 10:48:49 +01:00
Mike Taves b2d8e255da Fix configuration for sphinxcontrib-bibtex version 2 or later (#2572) 2021-03-11 21:44:17 +13:00
Kristian Evers cf86b44bdd Merge pull request #2571 from kbevers/proj_lp_dist_docs
Improve docs for geodesic distance functions in proj.h
2021-03-10 21:19:41 +01:00
Even Rouault 554f95d705 Merge pull request #2570 from rouault/fix_proj_lp_dist_crs
Make proj_lp_dist() and proj_geod() work on a PJ* CRS object
2021-03-10 20:44:42 +01:00
Kristian Evers 77d6e671ab Improve docs for geodesic distance functions in proj.h 2021-03-10 20:08:13 +01:00
Even Rouault 1e47f2bda5 Make proj_lp_dist() and proj_geod() work on a PJ* CRS object 2021-03-10 19:44:56 +01:00
Even Rouault e6b20d968a Merge pull request #2569 from rouault/cleanup_SQLITE_OPEN_URI
Code cleanup: remove conditional testing of SQLITE_OPEN_URI.
2021-03-10 19:09:25 +01:00
Even Rouault 3c27205bf0 Code cleanup: remove conditional testing of SQLITE_OPEN_URI. It is present in sqlite >= 3.11 2021-03-10 18:22:29 +01:00
Even Rouault 47dd37ff79 Fix comment 2021-03-10 16:37:52 +01:00
Sveinung Himle ffc6e876d0 Database: add NGO48 (EPSG:4273) to ETRS89 (EPSG:4258) triangulation-based transformation (#2554) 2021-03-10 10:36:24 +01:00
Even Rouault 20295afe2f Merge pull request #2567 from rouault/fix_s45b_pol
s45b.pol: remove trailing backslashes that prevent it from being used
2021-03-09 15:09:45 +01:00
Even Rouault 7aa6383566 s45b.pol: remove trailing backslashes that prevent it from being used 2021-03-09 12:45:11 +01:00
Even Rouault d7a2bdefb8 typo fixes 2021-03-07 20:31:43 +01:00
Even Rouault 36a5a178cb doc: typo fixes 2021-03-07 20:31:43 +01:00
Even Rouault 044d4c305f README.md: comment out Cirrus CI [ci skip] 2021-03-07 19:53:18 +01:00
Even Rouault c021126079 pipeline: avoid CLang Static Analyzer 10.0 likely false positive about dereferencing a nullptr 2021-03-07 19:18:58 +01:00
Even Rouault b0fa082511 dmstor_ctx(): avoid setting a variable that is not read 2021-03-07 19:18:33 +01:00
Even Rouault 4cc4e038bc Merge pull request #2560 from rouault/coverityscan_fixes
Several fixes/improvements spotted by CoverityScan
2021-03-07 11:57:55 +01:00
Even Rouault 5b9d009293 Merge pull request #2561 from rouault/cppcheck_fixes
Two Cppcheck fixes
2021-03-07 11:57:33 +01:00
Even Rouault 5089106b18 Merge pull request #2562 from rouault/travis_arm64
Travis ARM64: set NPROC=4 to avoid the autodetected 32 to blow out RAM
2021-03-07 11:57:16 +01:00
Even Rouault 23ef6450fa Travis ARM64: set NPROC=4 to avoid the autodetected 32 to blow out RAM 2021-03-07 00:41:17 +01:00
Even Rouault 8d786107bd insertIntoHierarchy(): avoid confusing cppcheck about potential use of moved grid 2021-03-07 00:30:19 +01:00
Even Rouault a14026d715 NTv2Grid: remove useless m_name member (redundant with one of base class) 2021-03-07 00:27:13 +01:00
Even Rouault e3b0dda249 igh: check return value of setup_zone() (CID 314816) 2021-03-07 00:20:21 +01:00
Even Rouault 23e5bf8535 Check return value of curl_easy_setopt() (CID 314805) 2021-03-07 00:20:21 +01:00
Even Rouault 63823ccc76 is2DPartOf3D(): catch potential exception (CID 314817) 2021-03-07 00:20:21 +01:00
Even Rouault ec67ee73d1 initcache.cpp: add assertions for potential failed mem alloc (CID 314809, 314812) 2021-03-07 00:20:21 +01:00
Even Rouault ecd5a542c1 projinfo: catch exception on bad value for --accuracy (CID 314810) 2021-03-07 00:20:21 +01:00
Even Rouault 7e4c94f5fd gie.cpp: use correct type in error message (CID 314813) 2021-03-07 00:20:20 +01:00
Even Rouault 9093dc498e cs2cs: catch exception on bad value for --accuracy (CID 314818) 2021-03-07 00:20:20 +01:00
Even Rouault 58d59c3617 cct: remove useless nullptr checking (CID 314822) 2021-03-07 00:20:20 +01:00
Even Rouault bef4d8fe2e proj_info(): remove useless nullptr checking (CID 314807) 2021-03-07 00:20:20 +01:00
Even Rouault 43e1235334 BaseObject: add a move assignment operator (CID 314820) 2021-03-07 00:20:20 +01:00
Even Rouault 6dae91bd06 UnitOfMeasure: add a move assignment operator (CID 314811) 2021-03-06 23:14:25 +01:00
Even Rouault 3af34fc1c4 Merge pull request #2559 from rouault/gcc11_wnonnull
Fix gcc 11 -Wnonnull warnings
2021-03-06 22:40:35 +01:00
Even Rouault 194b13a876 Merge pull request #2558 from rouault/gie_self_tests_fix_uninitialized
gie_self_tests: fix use of uninitialized memory (fixes #2557)
2021-03-06 22:40:00 +01:00
Even Rouault feeca61287 Fix gcc 11 -Wnonnull warnings
```
/proj-8.0.0/src/iso19111/operation/coordinateoperationfactory.cpp: In function 'osgeo::proj::operation::TransformationNNPtr osgeo::proj::operation::createBallparkGeographicOffset(const CRSNNPtr&, const CRSNNPtr&, const DatabaseContextPtr&)':
/proj-8.0.0/src/iso19111/operation/coordinateoperationfactory.cpp:1860:36: warning: 'this' pointer is null [-Wnonnull]
 1860 |                 ->coordinateSystem()
      |                                    ^
In file included from /proj-8.0.0/src/iso19111/operation/coordinateoperationfactory.cpp:35:
/proj-8.0.0/include/proj/crs.hpp:196:47: note: in a call to non-static member function 'const CoordinateSystemNNPtr& osgeo::proj::crs::SingleCRS::coordinateSystem() const'
  196 |     PROJ_DLL const cs::CoordinateSystemNNPtr &coordinateSystem() PROJ_PURE_DECL;
      |                                               ^~~~~~~~~~~~~~~~
/proj-8.0.0/src/iso19111/operation/coordinateoperationfactory.cpp:1864:36: warning: 'this' pointer is null [-Wnonnull]
 1864 |                 ->coordinateSystem()
      |                                    ^
In file included from /proj-8.0.0/src/iso19111/operation/coordinateoperationfactory.cpp:35:
/proj-8.0.0/include/proj/crs.hpp:196:47: note: in a call to non-static member function 'const CoordinateSystemNNPtr& osgeo::proj::crs::SingleCRS::coordinateSystem() const'
  196 |     PROJ_DLL const cs::CoordinateSystemNNPtr &coordinateSystem() PROJ_PURE_DECL;
      |                                               ^~~~~~~~~~~~~~~~
/proj-8.0.0/src/iso19111/factory.cpp: In member function 'std::vector<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::operation::CoordinateOperation> > > osgeo::proj::io::AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(const CRSNNPtr&, const string&, const string&, const CRSNNPtr&, const string&, const string&, bool, bool, bool, bool, const std::vector<std::__cxx11::basic_string<char> >&, const ExtentPtr&, const ExtentPtr&) const':
/proj-8.0.0/src/iso19111/factory.cpp:4724:66: warning: 'this' pointer is null [-Wnonnull]
 4724 |         dynamic_cast<crs::GeodeticCRS *>(sourceCRS.get())->datum();
      |                                                                  ^
In file included from /proj-8.0.0/src/iso19111/factory.cpp:36:
/proj-8.0.0/include/proj/crs.hpp:254:54: note: in a call to non-static member function 'const GeodeticReferenceFramePtr& osgeo::proj::crs::GeodeticCRS::datum() const'
  254 |     PROJ_DLL const datum::GeodeticReferenceFramePtr &datum() PROJ_PURE_DECL;
      |                                                      ^~~~~
/proj-8.0.0/src/iso19111/factory.cpp:4726:66: warning: 'this' pointer is null [-Wnonnull]
 4726 |         dynamic_cast<crs::GeodeticCRS *>(targetCRS.get())->datum();
      |                                                                  ^
In file included from /proj-8.0.0/src/iso19111/factory.cpp:36:
/proj-8.0.0/include/proj/crs.hpp:254:54: note: in a call to non-static member function 'const GeodeticReferenceFramePtr& osgeo::proj::crs::GeodeticCRS::datum() const'
  254 |     PROJ_DLL const datum::GeodeticReferenceFramePtr &datum() PROJ_PURE_DECL;
      |                                                      ^~~~~
```
2021-03-06 22:21:57 +01:00
Even Rouault 27e1f4076c gie_self_tests: fix use of uninitialized memory (fixes #2557) 2021-03-06 22:12:27 +01:00
Even Rouault 652f86b4fb Merge pull request #2556 from rouault/uint_t
grids.cpp: use C99/C++11 uint16_t/uint32_t
2021-03-06 20:13:19 +01:00
Even Rouault c750f874af grids.cpp: use C99/C++11 uint16_t/uint32_t
libtiff has historically defined uint16 and uint32 as custom typedefs,
but those will be deprecated in the next libtiff release, and using them
will emit warnings, so use standard types as recommended.
2021-03-06 19:13:59 +01:00
Even Rouault 667b7c1f11 Merge pull request #2555 from rouault/fix_2541
createOperations(): fix incorrect height transformation between 3D promoted RGF93 and CH1903+ (fixes #2541)
2021-03-05 21:17:02 +01:00
Even Rouault c6a241f2fe createOperations(): fix incorrect height transformation between 3D promoted RGF93 and CH1903+ (fixes #2541) 2021-03-05 18:18:35 +01:00
Even Rouault f278b5bee6 Merge pull request #2551 from rouault/clang_format
Reformat code with clang-format-10 from ubuntu 20.04
2021-03-04 11:39:14 +01:00
Even Rouault 948f39a4da Merge pull request #2552 from rouault/disable_freebsd
CI: disable FreeBSD / Cirrus builds
2021-03-03 18:40:44 +01:00
Even Rouault de9c1ecf64 CI: disable FreeBSD / Cirrus builds
They started to fail a few weeks ago with the following error
```
./autogen.sh
Running aclocal
autom4te-2.69: need GNU m4 1.4 or later: /usr/local/bin/gm4
aclocal: error: autom4te failed with exit status: 1

  Something went wrong, giving up!
```
2021-03-03 18:23:38 +01:00
Even Rouault 095731d534 Reformat code with clang-format-10 from ubuntu 20.04 2021-03-03 17:45:53 +01:00
Kristian Evers 9e2eb06758 +proj=latlon docs: Datum list is given with cs2cs -ld
Closes #2549
2021-03-01 13:31:18 +01:00
Kristian Evers 82665e3baf HOWTORELEASE: Do not up update proj_api.h version numbers 2021-03-01 13:22:14 +01:00
Kristian Evers 316ea22bd2 Bump version numbers in anticipation of 8.1.0 release 2021-03-01 13:21:12 +01:00
Kristian Evers bd3702ed99 reconfigure 'edit on github' links to 8.0 branch 2021-03-01 13:05:34 +01:00
Kristian Evers b6c588ee75 Update web docs for 8.0.0 release 2021-03-01 13:01:25 +01:00
Mike Taves 12e7a43957 Update NEWS for CMake pkg-config support 2021-02-26 11:31:15 +13:00
Kristian Evers cbd4506ddd Merge pull request #2544 from sebastic/spelling-errors
Fix spelling errors.
2021-02-25 19:18:22 +01:00
Mike Taves 3d22f6f0a7 CMake: add support for pkg-config (#2547) 2021-02-26 00:45:42 +13:00
Even Rouault 1a51877361 Merge pull request #2545 from rouault/fix_gdal_test_issue_due_to_intl_rename
isEquivalentName(): fix for GDAL test failure
2021-02-22 17:05:21 +01:00
Even Rouault 6ef286ec69 isEquivalentName(): fix for GDAL test failure
https://github.com/OSGeo/PROJ/pull/2536 changed the name of the
ellps=intl to "International 1924 (Hayford 1909, 1910)"
When writing a GeoTIFF file from GDAL using a SRS built from a
PROJ string, GDAL massages the datum name to
"Unknown_based_on_International_1924_Hayford_1909_1910_ellipsoid"
Before this fix, this wasn't considered as equivaleent to the non-massaged
datum name "Unknown based on International 1924 (Hayford 1909, 1910) ellipsoid"
2021-02-22 16:37:26 +01:00
Even Rouault 4dcce2a857 Formatting fix 2021-02-22 16:36:45 +01:00
Bas Couwenberg 6b449e5533 Fix spelling errors.
* Allow to <verb> -> Allows <verb>ing
2021-02-20 15:40:13 +01:00
Kristian Evers 6a8d39c11e Updated NEWS for 8.0.0 2021-02-20 14:21:48 +01:00
Kristian Evers bc5f652914 Update man-pages from Sphinx-docs 2021-02-20 12:30:25 +01:00
Kristian Evers 57214ee34a Bump ABI numbers for 8.0.0 release 2021-02-20 12:23:24 +01:00
Kristian Evers c4015280a4 Merge pull request #2514 from mloskot/ml/enable-build-with-static-curl
Enable linking against static cURL on Windows
2021-02-20 11:58:29 +01:00
Kristian Evers 7645c38d2f Merge pull request #2542 from snowman2/warn
LOG: Default log level PJ_LOG_ERROR
2021-02-20 11:57:43 +01:00
snowman2 650ed38f31 LOG: Default log level PJ_LOG_ERROR 2021-02-19 20:39:53 -06:00
Kristian Evers d7f8b0ef22 Merge branch 'master' into ml/enable-build-with-static-curl 2021-02-19 14:01:21 +01:00
Kristian Evers 9c299f3848 Merge pull request #2538 from mwtoews/cmake-target-name
CMake: replace '${PROJ_CORE_TARGET}' with 'proj'
2021-02-19 13:51:41 +01:00
Mateusz Łoskot 842ed0e1b5 Enable linking against static cURL on Windows
This is preliminary fix to allow linking the library
as well as its dependants (e.g. PROJ apps) against cURL
built as static library on Windows with support of native
Windows TLS/SSL.
On Windows, such static cURL (and its dependants) requires linking
against Winsock, CryptoAPI and other networking libaries.
2021-02-19 13:18:03 +01:00
Kristian Evers 584a475207 Merge pull request #2532 from snowman2/autoclose
BUG: Close database connection when autoclose set to True
2021-02-19 08:14:59 +01:00
Kristian Evers ac7b1b1638 Merge pull request #2539 from nyalldawson/10_015
Update to EPSG v10.015
2021-02-19 05:32:17 +01:00
Nyall Dawson 7c52fed34c Update to EPSG v10.015 2021-02-19 13:26:23 +10:00
Mike Taves 59803d8222 CMake: replace '${PROJ_CORE_TARGET}' with 'proj' 2021-02-19 08:54:18 +13:00
Kristian Evers e8a535ee02 Merge pull request #2536 from OSGeo/busstoptaktik-patch-1
International ellipsoid designation correction
2021-02-16 12:07:35 +01:00
Thomas Knudsen c7543c2ff4 International ellipsoid designation correction
The "International 1909 (Hayford)" designation is an unfortunate mix of different aspects of the same ellipsoid.

The Hayford ellipsoid was based on investigations in 1909, published in 1910 as J.F. Hayford: *Supplementary Investigation in 1909 of the Figure of the Earth and Isostasy*, Coast and Geodetic Survey, 80pp. (freely accessible through Google Books).

In 1924 Hayford's ellipsoid was adopted by the IUGG as "the International Ellipsoid".

Hence either of 

- Hayford, 1909 (for the year the work was done),
- Hayford, 1910 (for the year of publication), or
- International, 1924

are reasonable names, in common use, but the "International, 1909" really is a peculiar mix of concepts.

Resolves #2534
2021-02-16 11:03:37 +01:00
Kristian Evers cd10468ece Merge pull request #2533 from mloskot/ml/cmake-keyword-target-commands
CMake: Prefer keyword signature of target_link_libraries command
2021-02-14 11:33:47 +01:00
Mateusz Łoskot 5fc8ab2de9 CMake: Prefer keyword signature of target_link_libraries command
Closes #2515
2021-02-14 10:21:21 +01:00
snowman2 6353da92f1 BUG: Close database connection if autoclose set to True 2021-02-13 19:14:29 -06:00
Even Rouault 32d442ddc6 Merge pull request #2527 from rouault/fix_2526
C API: avoid error messages to be emitted in PJ_LOG_NONE log level (fixes #2526)
2021-02-12 12:23:40 +01:00
Even Rouault d79850629a C API: avoid error messages to be emitted in PJ_LOG_NONE log level (fixes #2526) 2021-02-11 15:44:08 +01:00
Even Rouault 7f6c35f0cc Merge pull request #2525 from rouault/epsg_10_014
Database: update to EPSG v10.014
2021-02-11 12:05:32 +01:00
Even Rouault d3a6ca45ad Database: update to EPSG v10.014 2021-02-11 11:06:49 +01:00
Even Rouault 93d2571d56 Merge pull request #2521 from rouault/boundcrs_proj_based_method
Allow a BoundCRS to use a PROJ string transformation
2021-02-11 10:43:31 +01:00
Even Rouault 755d6d396e Merge pull request #2524 from rouault/fix_2510
Fix handling of +proj=ob_tran +o_proj=longlat combined with +over (fixes #2510)
2021-02-10 18:53:54 +01:00
Even Rouault 36d8691b20 Merge pull request #2522 from rouault/update_operations_computation
operations_computation.rst: update 'Filtering and sorting of coordinate operations' section
2021-02-10 18:53:27 +01:00
Even Rouault 836af9dcf1 Fix handling of +proj=ob_tran +o_proj=longlat combined with +over (fixes #2510) 2021-02-10 17:51:13 +01:00
Even Rouault 3ea7abc133 operations_computation.rst: update 'Filtering and sorting of coordinate operations' section 2021-02-10 17:05:03 +01:00
Even Rouault 4b44a55f6f Allow a BoundCRS to use a PROJ string transformation
Related to https://lists.osgeo.org/pipermail/proj/2021-February/010040.html

Given test.wkt with
```
BOUNDCRS[
    SOURCECRS[
        GEOGCRS["unknown",
            DATUM["Unknown based on GRS80 ellipsoid",
                ELLIPSOID["GRS 1980",6378137,298.257222101,
                    LENGTHUNIT["metre",1],
                    ID["EPSG",7019]]],
            PRIMEM["Greenwich",0,
                ANGLEUNIT["degree",0.0174532925199433],
                ID["EPSG",8901]],
            CS[ellipsoidal,2],
                AXIS["longitude",east,
                    ORDER[1],
                    ANGLEUNIT["degree",0.0174532925199433,
                        ID["EPSG",9122]]],
                AXIS["latitude",north,
                    ORDER[2],
                    ANGLEUNIT["degree",0.0174532925199433,
                        ID["EPSG",9122]]]]],
    TARGETCRS[
        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["latitude",north,
                    ORDER[1],
                    ANGLEUNIT["degree",0.0174532925199433]],
                AXIS["longitude",east,
                    ORDER[2],
                    ANGLEUNIT["degree",0.0174532925199433]],
            ID["EPSG",4326]]],
    ABRIDGEDTRANSFORMATION["Transformation from unknown to WGS84",
        METHOD["PROJ-based operation method: +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=axisswap +order=2,1 +step +proj=cart +ellps=GRS80 +step +proj=helmert +convention=coordinate_frame +exact +step +inv +proj=cart +ellps=WGS84 +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=rad +xy_out=deg"]]]
```

``projinfo -s @test.wkt -t "WGS 84" -o PROJ -q``

outputs:
```
+proj=pipeline
  +step +proj=unitconvert +xy_in=deg +xy_out=rad
  +step +proj=axisswap +order=2,1
  +step +proj=cart +ellps=GRS80
  +step +proj=helmert +convention=coordinate_frame +exact
  +step +inv +proj=cart +ellps=WGS84
  +step +proj=axisswap +order=2,1
  +step +proj=unitconvert +xy_in=rad +xy_out=deg
```
2021-02-10 15:48:29 +01:00
Even Rouault a7f6b40744 test_operation: use correct variable name 2021-02-10 15:43:16 +01:00
Kristian Evers 617f92e3d1 Merge pull request #2519 from nyalldawson/esri_update
Update ESRI projection db to 12.7 (10.8.1/2.6)
2021-02-10 07:03:36 +01:00
Nyall Dawson 2275b2dad9 Update ESRI projection db to 12.7 (10.8.1/2.6) 2021-02-10 08:34:41 +10:00
Kristian Evers 6ce2c1174a Merge pull request #2518 from rouault/epsg_10_013
Database: update to EPSG v10.013
2021-02-09 21:24:14 +01:00
Even Rouault c72dabdc3f Database: update to EPSG v10.013 2021-02-09 19:46:25 +01:00
Even Rouault ad2cb7a120 Merge pull request #2517 from nyalldawson/epsg_update
Database: update to EPSG v10.012
2021-02-09 18:02:42 +01:00
Even Rouault 0b8f6e3586 createOperations(): remove involved logic that was done for GDA94 -> WGS84 (G1762)
It is no longer needed for that particular case, since there's now a concatenated
operation for it. It could in theory be useful for other cases, but removing it
doesn't break existing tests, so...
2021-02-09 16:54:17 +01:00
Nyall Dawson 88618bb412 Database: update to EPSG v10.012 2021-02-09 16:53:36 +01:00
Even Rouault 6882017ff6 Merge pull request #2513 from jjimenezshaw/ahd-tasmania
Better grid_alternatives entries to include 'GDA94 to AHD (Tasmania) height' using 'au_ga_AUSGeoid98.tif'
2021-02-08 18:50:52 +01:00
Kristian Evers 5366db1b15 Merge pull request #2511 from mwtoews/remove-cmake-configurations-8.0
CMake: remove old configuration option aliases
2021-02-07 11:24:58 +01:00
Kristian Evers 197ea0569b Merge pull request #2476 from rouault/fix_2399
Add build time option to make PROJ_LIB env var tested last (fixes #2399)
2021-02-07 11:16:21 +01:00
Kristian Evers c0fb0041c2 Merge pull request #2503 from havingsexonthebeach/epsg10_011
Database: update to EPSG v10.011
2021-02-07 11:14:18 +01:00
Mike Taves af7cbf0ad1 CI: specify pip < 21.0; avoid using pip3 script (#2516) 2021-02-07 23:04:39 +13:00
Javier Jimenez Shaw 58840ddd5a change grid_alternatives entries to include 'GDA94 to AHD (Tasmania) height' 2021-02-03 16:20:10 +01:00
Mike Taves 2ceb24ce20 CMake: remove old configuration option aliases 2021-02-03 05:38:59 +13:00
Kristian Evers db2950e56e Merge pull request #2505 from visr/typos
fix a few typos in the docs
2021-01-17 16:29:38 +01:00
Martijn Visser f0bff3680a update julia binding description
This matches the go binding description. And fixes the colon.
2021-01-17 11:58:56 +01:00
Martijn Visser 169ccbb7a0 fix a few typos in the docs 2021-01-17 11:57:39 +01:00
Modern Slave 7b33d9180e Database: update to EPSG v10.011 2021-01-15 23:27:33 +01:00
Even Rouault 1e7f6c68bf Merge pull request #2502 from rouault/bug_projjson_geoid
createOperations(): fix bug involving geoidmodel and non-metre vertical unit
2021-01-14 23:01:22 +01:00
Even Rouault 9bbd56fca9 createOperations(): fix bug involving geoidmodel and non-metre vertical unit 2021-01-14 21:44:52 +01:00
Even Rouault 84c65702d1 formatting fix 2021-01-14 20:46:53 +01:00
Even Rouault bf5a2f6c79 Merge pull request #2501 from rouault/32bit_immediate
workflow linux_gcc_32bit: fix Could not perform immediate configuration on 'libgcc-s1:i386'
2021-01-13 18:11:31 +01:00
Even Rouault 99b2e8e24e Merge pull request #2500 from rouault/fix_compound_to_geog_non_metre_vert
createOperations(): fix Compound to Geog3D/Projected3D CRS with non-metre ellipsoidal height
2021-01-13 17:57:52 +01:00
Even Rouault e854ed469a workflow linux_gcc_32bit: fix Could not perform immediate configuration on 'libgcc-s1:i386' 2021-01-13 17:36:31 +01:00
Even Rouault 4a10b0f864 createOperations(): fix Compound to Geog3D/Projected3D CRS with non-metre ellipsoidal height 2021-01-13 17:23:34 +01:00
Even Rouault 99b06ef5e7 ellps_size(): do not log error if ellipsoid absent and not needed 2021-01-12 14:36:46 +01:00
Sveinung Himle f44df597b9 Database: add Norwegian height transformations grids to grid_alternatives table (#2359) 2021-01-06 15:20:10 +01:00
Even Rouault 93d8fccd51 createFromUserInput(): accept leading white space (fixes #2498) 2021-01-05 16:49:56 +01:00
Kristian Evers 367771f4ba Update website for 7.2.1 2021-01-01 17:09:45 +01:00
Even Rouault 26e07082d3 Merge pull request #2496 from rouault/proj_crs_is_derived
C API: add proj_crs_is_derived()
2020-12-28 22:25:48 +01:00
Even Rouault 882d84b086 C API: add proj_crs_is_derived() 2020-12-28 17:07:44 +01:00
Kristian Evers 9e7c39abac Update CITATION year to 2021 2020-12-26 19:57:07 +01:00
Kristian Evers 4424a9caeb Update NEWS for 7.2.1 release 2020-12-26 19:42:14 +01:00
Kristian Evers 5aad0d25f8 Merge remote-tracking branch 'osgeo/master' 2020-12-21 17:28:48 +01:00
Kristian Evers 1cafe3e602 Merge pull request #2494 from kbevers/nkg_trans_final
Implementing the NKG transformations in proj.db
2020-12-21 17:26:21 +01:00
Kristian Evers f969d51e0b Implementing the NKG transformations in proj.db
This adds the NKG 2008 and 2020 transformations to proj.db. The NKG
transformations offers transformations between global reference frames
and the national realisations of ETRS89 in Denmark, Estonia, Finland,
Latvia, Lithuania, Norway and Sweden.

The 2008 transformations are already implemented in the NKG 2008 file
but will now be more accessible with the modern API.

The 2020 transformations are new to PROJ and offers and updated version
of the 2008 transformations using a new and improved deformation model
(eu_nkg_nkgrf17vel.tif). A 2020 version of the NKG transformations are
currently not available for Norway but will in all likelyhood be
included at a later point in time.
2020-12-21 16:37:57 +01:00
Even Rouault fd98b78140 test_factory.cpp: add missing checks 2020-12-19 17:38:21 +01:00
Even Rouault a2f4d61f72 Database: register AGQG_20191107.gsb grid. Related to https://github.com/OSGeo/PROJ-data/pull/53 2020-12-18 22:42:31 +01:00
Even Rouault edcf6a2ea6 Merge pull request #2491 from glostis/documentation
Fix typos in resource_files.rst
2020-12-17 15:31:34 +01:00
Even Rouault 7766b1aad7 Merge pull request #2488 from rouault/crs_to_crs_improved_filtering
Improved coordinate operation filtering
2020-12-16 21:02:37 +01:00
Even Rouault da066800e5 cs2cs: add --no-ballpark and --accuracy options 2020-12-16 18:48:46 +01:00
Guillaume Lostis e685921b45 Fix typos in resource_files.rst 2020-12-16 16:50:47 +01:00
Even Rouault 1a84a71349 Merge pull request #2489 from rouault/update_to_epsg_10.0.8
Database: update to EPSG v10.008
2020-12-16 16:09:07 +01:00
Even Rouault 643ce02edf Database: update to EPSG v10.008 2020-12-16 15:24:16 +01:00
Even Rouault 5e07772927 Merge pull request #2487 from rouault/error_mgt_improvements
Error management: revise error codes and expose them to the public API
2020-12-16 15:12:51 +01:00
Even Rouault 37755e4edc proj_create_crs_to_crs_from_pj(): add ACCURACY and ALLOW_BALLPARK options 2020-12-15 18:30:50 +01:00
Even Rouault e570630579 projinfo: add a --accuracy option to define the minimum accuracy 2020-12-15 18:30:24 +01:00
Even Rouault a27c0255e7 Remap ENOMEM from PROJ_ERR_INVALID_OP to PROJ_ERR_OTHER 2020-12-15 17:53:29 +01:00
Even Rouault b020666081 horner.cpp: remove uses of EINVAL and EDOM errno 2020-12-15 17:48:24 +01:00
Even Rouault 41c4e54f03 Remove internal use of PJ_LOG_DEBUG_MINOR and PJ_LOG_DEBUG_MAJOR 2020-12-15 17:24:55 +01:00
Even Rouault df96a13d2c Various operations: remove explicit short name prefixing in log messages now that it is automatically added 2020-12-15 17:24:55 +01:00
Even Rouault ab7b02702a proj_log_XXX functions(): add the short name of the operation as prefix in the error message 2020-12-15 17:24:54 +01:00
Even Rouault 1d803550e7 proj_trans_array(): make it transform all coordinates even when an error occurs 2020-12-15 17:24:54 +01:00
Even Rouault 2abc0aaf3a tmerc exact: set errno to PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN when it returns invalid coordinate 2020-12-15 14:59:52 +01:00
Even Rouault 54b861e140 Doc: document error codes and proj_context_errno_string() 2020-12-15 14:59:52 +01:00
Even Rouault 244a24104d Revise error codes to have a reduced set exposed in the public API.
Fixes #2482

And also add proj_context_errno_string()

Revise gie 'expect failure errno XXXX' strings
2020-12-15 01:13:43 +01:00
Even Rouault 1e9894b0e2 Remove ancient no longer used implementation of pj_ell_set() 2020-12-15 00:52:51 +01:00
Even Rouault 0af437949d Move proj_log_XXX() functions from internal.cpp to log.cpp 2020-12-15 00:52:51 +01:00
Even Rouault 8b1ef9504d Merge pull request #2486 from rouault/fix_bound_proj_ntf_paris_to_bound_geog_ntf_paris_rebased
createOperations(): fix inconsistent chaining exception when transforming from BoundCRS of projected CRS based on NTF Paris to BoundCRS of geog CRS NTF Paris
2020-12-14 21:42:15 +01:00
Even Rouault 95340fb1d1 createOperations(): fix inconsistent chaining exception when transforming from BoundCRS of projected CRS based on NTF Paris to BoundCRS of geog CRS NTF Paris. Fixes https://github.com/OSGeo/gdal/issues/3273 2020-12-14 21:12:43 +01:00
Even Rouault bfc54bbac8 Merge pull request #2483 from rouault/split_coordinateoperation
Split coordinateoperation.cpp and test_operation.cpp in several parts
2020-12-14 18:14:31 +01:00
Even Rouault 69994f1922 CMake: install data/*.json files (fixes #2485) 2020-12-13 21:22:56 +01:00
Kristian Evers c3efbd23a5 Merge remote-tracking branch 'osgeo/master' 2020-12-13 15:30:47 +01:00
Even Rouault 49c6a49d83 Split test_operation.cpp in two parts 2020-12-12 22:34:11 +01:00
Even Rouault 4bc3fec94a Split coordinateoperation.cpp in many files in iso19111/operation directory
The big size of coordinateoperation.cpp could require significant amount
of RAM to build it with -O2 level, and cause compiler crashes in some
environments.
2020-12-12 22:23:28 +01:00
Even Rouault 6857d1a4a8 conda.yml: restrict to main repository builds, otherwise fails to build in forks 2020-12-11 22:15:38 +01:00
Even Rouault f51c723b45 .github/workflows/clang_static_analyzer/start.sh: add apt update 2020-12-11 21:50:49 +01:00
Even Rouault acab18920e funtions.rst: fix sphynx syntax 2020-12-11 21:50:35 +01:00
Even Rouault 2e13f14493 test_operation.cpp: remove debug message 2020-12-11 20:37:03 +01:00
Even Rouault 372b5b7480 Doc: fix return data type of proj_trans_array() 2020-12-09 19:28:27 +01:00
Zac Miller 29d2542cc3 Update isea.rst
Clarifying defaults for ISEA.
2020-12-08 23:02:32 +01:00
Even Rouault f3c51143b5 Merge pull request #2477 from rouault/fix_2442
cs2cs / proj_create_crs_to_crs_from_pj(): add a --authority switch to  control where coordinate operations are looked for (fixes #2442)
2020-12-04 23:52:23 +01:00
Even Rouault fe2c5e04d5 Merge pull request #2481 from rouault/ci_build_with_sqlite_dqs_zero
CI: test with a SQLite3 binary built with SQLITE_DQS=0 to avoid issue #2480
2020-12-04 23:51:28 +01:00
Even Rouault bf81813e9f CI: test with a SQLite3 binary built with SQLITE_DQS=0 to avoid issue #2480 2020-12-04 22:46:45 +01:00
Even Rouault 73ff92cfeb Merge pull request #2480 from rouault/fix_build_with_sqlite_3_29
Database: fix building proj.db with SQLite built with -DSQLITE_DQS=0
2020-12-04 22:45:49 +01:00
Even Rouault 2fc8821480 Database: fix building proj.db with SQLite built with -DSQLITE_DQS=0
That is the option to make SQLite reject misuses of double quotes instead
of single quotes. Most SQLite builds are forgiving, but some forks proposing
a CMake build system default to SQLITE_DQS=0
2020-12-04 22:29:58 +01:00
Even Rouault 18ab7ef2e3 cs2cs / proj_create_crs_to_crs_from_pj(): add a --authority switch to control where coordinate operations are looked for (fixes #2442) 2020-12-02 21:11:41 +01:00
Even Rouault 9488b26ca5 Add build time option to make PROJ_LIB env var tested last (fixes #2399)
If PROJ is built with the PROJ_LIB_ENV_VAR_TRIED_LAST CMake option /
--enable-proj-lib-env-var-tried-last configure switch, then the
hard-wired path ($prefix/share/proj) will be tried before looking at the
environment PROJ_LIB.
2020-12-02 15:41:53 +01:00
Even Rouault ebe00831b7 fix build 2020-12-02 15:22:48 +01:00
Even Rouault b7fb045ebd Merge pull request #2444 from rouault/topocentric
Add +proj=topocentric geocentric->topocentric conversion (fixes #500)
2020-12-02 14:42:33 +01:00
Even Rouault f9655458a9 Merge pull request #2474 from rouault/database_version_number
Database: add metadata with the version number of the database layout …
2020-11-30 17:37:49 +01:00
Even Rouault dc7a0c3c6f Merge pull request #2466 from rouault/fix_2423
cs2cs: add --area and --bbox  options to restrict candidate coordinate operations (fixes #2423)
2020-11-30 16:39:18 +01:00
Even Rouault e9f7439946 Merge pull request #2471 from rouault/extent_spherical_tmerc_domain
Spherical tmerc forward: do not restrict to [-90,90] longitude range
2020-11-30 15:18:54 +01:00
Even Rouault eef73e3eca Database: add metadata with the version number of the database layout and check it in the code
This is aimed at detecting running a PROJ version against a proj.db that is not
meant to work with it. This happens sometimes in complex setups mixing PROJ
versions. Hopefully this will help spotting the issue earlier.
2020-11-30 14:09:37 +01:00
Even Rouault 36c700192c test_io.cpp: formatting fix 2020-11-30 13:35:33 +01:00
Even Rouault 89deeee6c0 Merge pull request #2473 from rouault/further_old_api_cleanup
API cleanup: unexport number of internal symbols, and remove/replace …
2020-11-30 12:57:04 +01:00
Even Rouault 2bd09af7d0 Merge pull request #2467 from rouault/gha_windows
Migrate appveyor VS2017 build to github action VS2019
2020-11-30 01:43:31 +01:00
Even Rouault f4dc79075c API cleanup: unexport number of internal symbols, and remove/replace a few unused ones 2020-11-30 01:35:59 +01:00
Even Rouault ebf63e1fd7 Merge pull request #2472 from rouault/improve_pj_datum_set
pj_datum_set(): make code more obvious to humans and analyzers
2020-11-30 01:19:41 +01:00
Even Rouault ee534a70ef pj_datum_set(): make code more obvious to humans and analyzers 2020-11-30 00:32:32 +01:00
Even Rouault 284feecd27 Spherical tmerc forward: do not restrict to [-90,90] longitude range
The restriction was a copy&paste from the Evenden/Snyder approximate
ellipsoidal implementation, but the spherical one is exact, so this
restriction isn't needed.

Also tune a bit the handling of lat=0, |lon| > 90
2020-11-29 20:57:40 +01:00
Even Rouault edd7f165f8 Merge pull request #2450 from rouault/setAllowEllipsoidalHeightAsVerticalCRS
Add option to allow export of Geographic/Projected 3D CRS in WKT1_GDAL
2020-11-29 17:30:16 +01:00
Even Rouault 2ae0766eef Merge pull request #2469 from rouault/fix_2468
Inverse tmerc spherical: fix wrong sign of latitude when lat_0 is used (fixes #2468)
2020-11-29 16:30:26 +01:00
Even Rouault bc0c9f3e96 Inverse tmerc spherical: fix wrong sign of latitude when lat_0 is used (fixes #2468)
Corrected formula given by @evanmiller
2020-11-29 15:46:23 +01:00
Even Rouault 87270ae6f1 createOperations(): get a '+proj=noop' instead of '+proj=affine +s33=-1' when attempting (non-sensical) EPSG:3855 to EPSG:4326 2020-11-28 23:39:33 +01:00
Even Rouault c6dda7637c WKT1 import: better deal with apps.epsg.org output w.r.t datum ensemble names 2020-11-28 20:02:15 +01:00
Even Rouault e44a2acd9b test/fuzzers: remove standard_fuzzer that used proj_api.h now removed 2020-11-28 19:10:58 +01:00
Even Rouault cc5d46523e appveyor.yml: disable VS2017 x64 build 2020-11-28 18:08:22 +01:00
Even Rouault 2a13213dcf Add github action for VS2019 x64 build 2020-11-28 18:08:22 +01:00
Even Rouault ebe3425bf6 proj_create_crs_to_crs_from_pj(): do not use PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION if area is specified 2020-11-28 15:57:17 +01:00
Even Rouault 0b4c8b0a76 cs2cs: add --area and --bbox options to restrict candidate coordinate operations (fixes #2423) 2020-11-28 15:51:27 +01:00
Houder 24c74a4d1c Use same arguments to printf format string for both radians and degrees in output by cct (#2453)
Currently the output of the cct utility is different between radians
and degrees (as expected by cct), because of a bug in cct:

$ printf "1 2\n" | cct -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad
  1.0000000000    2.0000000000        0.0000        0.0000

$ printf "1 2\n" | cct -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=deg
       1.0000         2.0000        0.0000        0.0000

The arguments to the printf format string are as follows:

 * radians: width 14, precision 10
 * degrees: width 13, precision  4 (this is by mistake. bug!)

After the suggested fix has been applied, output will be the same for
both radians and degrees:

$ printf "1 2\n" | cct -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad
  1.0000000000    2.0000000000        0.0000        0.0000

$ printf "1 2\n" | cct -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=deg
  1.0000000000    2.0000000000        0.0000        0.0000

The cause of the bug is that cct does test if it "has radians to output",
but "neglects" to test if it "has degrees to output", resulting in using
different arguments to the printf format string in the latter case.

The fix makes cct test if it "has either radians or degrees to output".
2020-11-28 13:45:06 +01:00
Even Rouault 5283d926f7 Merge pull request #2462 from rouault/improve_createObjectsFromName
createObjectsFromName(): in exact match, make looking for 'ETRS89 / UTM zone 32N' return only the exact match
2020-11-28 02:08:06 +01:00
Even Rouault 4de6f0bd24 createObjectsFromName(): in exact match, make looking for 'ETRS89 / UTM zone 32N' return only the exact match 2020-11-28 00:15:11 +01:00
Even Rouault 24c3bbb299 testcct: create 'a' and 'b' from scratch 2020-11-27 23:43:28 +01:00
Even Rouault 9e8a790fc4 Merge pull request #2460 from rouault/gha_linux_gcc4.8
Move linux_gcc 4.8 job to github action, and on Travis-CI only keep the doc publishing
2020-11-27 22:43:00 +01:00
Even Rouault 90737bcf69 Move linux_gcc 4.8 job to github action, and on Travis-CI only keep the doc publishing 2020-11-27 22:00:33 +01:00
Even Rouault c85a44110d Add github action for cppcheck 2020-11-27 21:27:59 +01:00
Even Rouault 59b112687a crs.hpp: add cppcheck suppression for cppcheck 1.90 of ubuntu 20.04 2020-11-27 21:27:31 +01:00
Even Rouault 60ae9abbf9 Merge pull request #2459 from rouault/gha_gcc_32bit
Move linux gcc 32bit job to Github actions
2020-11-27 21:26:17 +01:00
Even Rouault 3b0102df6f Travis-CI: remove linux_gcc8 job 2020-11-27 20:41:42 +01:00
Even Rouault cdac370a9c Github action: add a linux_gcc_32bit job 2020-11-27 20:41:42 +01:00
Even Rouault a24c02199f Merge pull request #2455 from rouault/primem_fixes
PRIMEM WKT handling: fixes on import for 'sexagesimal DMS' or from WKT1:GDAL/ESRI when GEOGCS UNIT != Degree; morph to ESRI the PRIMEM name on export
2020-11-27 13:15:28 +01:00
Even Rouault f5b4060847 formatting fixes 2020-11-27 00:39:49 +01:00
Even Rouault b27efedef0 PRIMEM WKT handling: fixes on import for 'sexagesimal DMS' or from WKT1:GDAL/ESRI when GEOGCS UNIT != Degree; morph to ESRI the PRIMEM name on export 2020-11-27 00:39:18 +01:00
Even Rouault 968b06fbb6 Merge pull request #2457 from rouault/gha_linux_clang
Move linux_clang Travis-CI job to Github action
2020-11-27 00:36:52 +01:00
Even Rouault 74944e3af4 Merge pull request #2458 from rouault/fix_mingw_w64_pj_mutex_warning
Fix mingw_w64 warning about pj_acquire_lock() prototype being missing
2020-11-27 00:36:37 +01:00
Even Rouault 83754e1f77 Fix mingw_w64 warning about pj_acquire_lock() prototype being missing 2020-11-26 21:12:00 +01:00
Kristian Evers 3cb26a406a Merge pull request #2403 from kbevers/remove-proj_api.h
Remove proj_api.h
2020-11-26 20:58:01 +01:00
Even Rouault f0842bb0b0 Travis-CI: remove linux_clang job 2020-11-26 20:31:08 +01:00
Even Rouault 7562eee171 Github action: add a clang linux build job 2020-11-26 20:31:08 +01:00
Even Rouault e7fc87b21e travis/install.sh: make it robust to objdump on 20.04 and/or clang outputing symbols in different order 2020-11-26 20:31:07 +01:00
Even Rouault f5b3616bb0 Merge pull request #2456 from rouault/gha_csa
Move Clang Static Analyzer job to Github action
2020-11-26 20:08:59 +01:00
Even Rouault eeec780b20 Travis-CI: remove CSA job 2020-11-26 19:14:25 +01:00
Even Rouault 7cce6e6444 Github action: add a clang static analyzer job 2020-11-26 19:14:25 +01:00
Even Rouault 4caf32aedd Add option to allow export of Geographic/Projected 3D CRS in WKT1_GDAL
as CompoundCRS with a VerticalCRS being an ellipsoidal height, which is
not conformant. But needed for LAS 1.4 that only supports WKT1
2020-11-24 19:52:39 +01:00
Even Rouault 5172091009 Merge pull request #2449 from rouault/geoidmodel_ballpark
createOperation(): add a ballpark vertical transformation when dealing with GEOIDMODEL[]
2020-11-24 17:29:09 +01:00
Even Rouault d6f6862352 createOperation(): add a ballpark vertical transformation when dealing with GEOIDMODEL[] 2020-11-24 16:41:06 +01:00
Even Rouault 28aa4f1309 Merge pull request #2448 from rouault/gha_mingw_w64
CI: move mingw job to GitHub actions
2020-11-24 11:39:17 +01:00
Charles Karney 2414eb2bb6 Sync w GeographicLib 1.51. Remove C99 compatibility functions. (#2445)
Should be no changes in the compiled code.
2020-11-24 01:13:24 +01:00
Even Rouault 452f1dbb25 mutex.cpp: replace NULL by nullptr 2020-11-24 01:04:23 +01:00
Even Rouault 5d867c43a7 .travis.yml: remove mingw job 2020-11-24 00:56:25 +01:00
Even Rouault 78c8889a76 GitHub action: add a mingw_w64 build 2020-11-24 00:56:25 +01:00
Even Rouault d8fe9964bc Add +proj=topocentric geocentric->topocentric conversion (fixes #500) 2020-11-23 20:58:26 +01:00
Even Rouault 5974b85665 Merge pull request #2447 from rouault/gha_osx
CI: move Mac job to GitHub actions with Conda as the base for dependencies
2020-11-23 20:51:07 +01:00
Even Rouault 95fd9665ef .travis.yml: remove mac job 2020-11-23 20:23:50 +01:00
Even Rouault 42b8c2012d GitHub action: add a Mac build 2020-11-23 20:23:50 +01:00
Even Rouault 97eea25cb1 Merge pull request #2446 from rouault/fix_projectedCRS_3D_is_WKT1_equivalent_to_WKT2
GeographicCRS::_isEquivalentTo(EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS):…
2020-11-23 19:22:53 +01:00
Even Rouault b503c2e5ae GeographicCRS::_isEquivalentTo(EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS): make it work when comparing easting,northing,up and northing,easting,up 2020-11-23 16:56:44 +01:00
Even Rouault 765faba898 Remove no longer used build_db_create_ignf.py script 2020-11-22 23:53:22 +01:00
Even Rouault 6bc444c1b0 Database ESRI: map 2 grids in grid_alternatives 2020-11-22 23:52:42 +01:00
Even Rouault f50221ed66 projinfo.cpp: improve hint when to use --spatial-test intersects 2020-11-22 23:16:48 +01:00
Even Rouault 427a4545e0 Merge pull request #2443 from rouault/fix_parse_wkt2_2019_projected_with_base_geocentric
WKT parsing: fix ingestion of WKT with a Geocentric CRS as the base of the projected CRS
2020-11-22 01:23:12 +01:00
Even Rouault 650e37f159 PROJJSON parsing: fix parsing of a Geodetic CRS with a DatumEnsemble, and fix parsing of a ProjectedCRS whose base is a Geocentric CRS 2020-11-21 23:59:33 +01:00
Even Rouault eb66679cde WKT parsing: fix ingestion of WKT with a Geocentric CRS as the base of the projected CRS 2020-11-21 23:58:50 +01:00
Even Rouault 3f4058308b Merge pull request #2441 from rouault/fix_obtran_towgs84
createOperation(): make it work properly when one of the CRS is a BoundCRS of a DerivedGeographicCRS (+proj=ob_tran +o_proj=lonlat +towgs84=....)
2020-11-21 15:20:56 +01:00
Even Rouault c2edd467c5 createOperation(): make it work properly when one of the CRS is a BoundCRS of a DerivedGeographicCRS (+proj=ob_tran +o_proj=lonlat +towgs84=....) 2020-11-21 13:56:18 +01:00
Even Rouault 3dea81d9be Make GeographicCRS/GeodeticCRS::isEquivalentTo() work properly when comparing to a DerivedGeographicCRS/DerivedGeodeticCRS 2020-11-21 13:55:11 +01:00
Even Rouault 3b3ec2bd6a Merge pull request #2440 from rouault/update_backport_action
backport.yml: update to what QGIS uses
2020-11-21 13:13:18 +01:00
Even Rouault c3a83ef5ea backport.yml: update to what QGIS uses 2020-11-21 13:11:59 +01:00
Nomit Rawat 571096201b Update utm.rst
Typo
2020-11-20 17:04:25 +01:00
Kristian Evers d9205b9245 Update list of exported symbols 2020-11-20 16:40:40 +01:00
Kristian Evers 046270a85f Remove old pj_ memory (de)allocation functions
Gone are pj_malloc, pj_calloc, pj_dalloc and pj_dealloc. Their primary
function as API memory functions in proj_api.h is no longer there and
the other use as a workaround for old errno problems is no longer valid
either.

Replaced with malloc and free across the codebase.
2020-11-20 16:40:40 +01:00
Kristian Evers 56f0ad7005 Remove pj_errno and related functions 2020-11-20 16:40:40 +01:00
Kristian Evers 43efca4ab8 Remove pj_free() and move it's functional parts to proj_destroy() 2020-11-20 16:40:40 +01:00
Kristian Evers ddb3b8da07 Removed unused function pj_set_searchpath() and pj_set_finder() 2020-11-20 16:40:40 +01:00
Kristian Evers eb04ffca4c Remove unused pj_apply_gridshift() 2020-11-20 16:40:40 +01:00
Kristian Evers 8e13c3acd8 Removed unused functions from src/utils.cpp 2020-11-20 16:40:40 +01:00
Kristian Evers a74b985b50 Remove pj_ctx_* functions and use their proj_context counterparts 2020-11-20 16:40:40 +01:00
Kristian Evers 7f79fe7325 Remove legacy file API 2020-11-20 16:40:40 +01:00
Kristian Evers 70c4c41731 Convert multistresstest to new API 2020-11-20 16:40:40 +01:00
Kristian Evers aa46197d66 Weed out proj_api.h datatypes and replace them with their proj.h counterparts 2020-11-20 16:40:40 +01:00
Kristian Evers e2dd223c56 Remove src/transform.cpp and related tests 2020-11-20 16:40:40 +01:00
Kristian Evers eb82aa83f2 Raise error when ACCEPT_USE_OF_DEPRECATED_PROJ_API_H is defined 2020-11-20 16:40:40 +01:00
Kristian Evers 9e50c8c0e2 Remove ACCEPT_USE_OF_DEPRECATED_PROJ_API_H macro 2020-11-20 16:40:40 +01:00
Kristian Evers 9419b42ade Remove proj_api.h
Removes proj_api.h from the public API. The contents of the header file
has been moved to proj_internal.h verbatim and any references to
proj_api.h has been changed to proj_internal.h.

The documentation of proj_api.h has been removed. The only exception to
this is the API migration guides which still mention the old API.

Fixes #837
2020-11-20 16:40:39 +01:00
J.H. van de Water 2cbf659bfc Replace line feed in input line by null character
As result of a modification in logging (adding a line feed),
many changes had to be made in different places of cct.cpp.
However, one missed the line feed in input to cct.
As result of missing this, the output from cct showed a
superfluous empty line after each output line, but only if
the corresponding input line ended with comment.
Replacing the LF in the "comment" string (present if the
input line ended with comment) by a null character ('\0')
solves this issue.

Modification in logging?
https://github.com/OSGeo/PROJ/commit/37da5e243191c04607597f6b8a77acfa017a5c99
( cct: revise end-of-line handling in logging, and always output debug )

See also:
https://github.com/OSGeo/PROJ/issues/1677
( cct outputs excessive whitespace comments are included in input data )
2020-11-19 11:45:47 +01:00
Even Rouault 4478eed4f5 Merge pull request #2434 from rouault/update_to_epsg_10.0.7
Database: update to EPSG v10.007
2020-11-18 18:05:53 +01:00
Even Rouault 0476db2b05 Database: update to EPSG v10.007 2020-11-18 17:19:41 +01:00
Even Rouault c560b79576 cs2cs, cct, proj and geod: fflush(stdout) after each line to emit each result as soon as it is produced
This is needed when working with pipes, when stdout is not an interactive terminal,
and thus the behaviour is to have it buffered as a regular file, whereas with
an interactive terminal, each newline character causes an implicit flush.
2020-11-17 17:27:50 +01:00
Even Rouault 7eda8aacb6 github actions: update to conda-incubator/setup-miniconda@v2 to be compatible with latest github action security fix constraints 2020-11-17 16:35:39 +01:00
Even Rouault 63f9f4e09a WKT2 parsing: several fixes related to map projection parameter units
- WKT2 grammar: accept PARAMETER[name,value,id] without unit
- Recognize "Ellipsoid scaling factor" as a parameter with a scaling unit,
  and defaults to Unity when not specified
- WKT2 parsing: implement the requirement of 18-010r7.html#80, that is
  when a map projection parameter has no explicit unit, use metre/degree/unity
  as the default unit (contrary to WKT1 parsing rules where they are deduced
  from the GeogCRS angular unit and coordinate system)
2020-11-16 14:34:33 +01:00
Even Rouault 1a98229ed2 Merge pull request #2422 from rouault/fix_polar_stere_at_pole
Polar stereographic at pole: make it return (0,0)
2020-11-12 11:46:38 +01:00
Even Rouault b38d0143a6 Polar stereographic at pole: make it return (0,0)
Due to the improved accuracy of pj_tsfn(), it no longer returns
0 when phi=90° due to the conversion in radians.
Some GDAL tests are very sensitive to the pole transforming to (0,0)
exactly, so add a special case for that.

master only
2020-11-12 00:05:31 +01:00
Even Rouault d5b0ea29b6 Merge pull request #2420 from rouault/cct_improvements
cct: allow @filename syntax
2020-11-10 15:45:20 +01:00
Even Rouault 6be4e25c66 cct: allow @filename syntax
Similarly as for projinfo, allow "cct @filename" to mean read filename and
use its content as if it was provided inline. Useful for WKT or PROJJSON

And a tiny improvements, when the object definition contains ':', only try
proj_create_from_database() if the left part (authority name) matches a known
authority, to avoid a warning.
2020-11-10 14:47:41 +01:00
Even Rouault a8be7bc87c cct.rst: fix indentation 2020-11-10 14:23:09 +01:00
Kristian Evers af342bf74c Allow cct to instantiate operations via object codes or names (#2419)
Running cct like

    cct EPSG:8366

or

    cct "ITRF2014 to ETRF2014 (1)"

is now possible.
2020-11-10 14:08:30 +01:00
Even Rouault bcfb194060 Merge pull request #2417 from rouault/refresh_COPYING
COPYING: update and install COPYING, NEWS and AUTHORS
2020-11-09 20:36:56 +01:00
Even Rouault c87ace6908 automake and cmake: install COPYING, NEWS and AUTHORS in /share/doc/proj 2020-11-06 19:32:38 +01:00
Even Rouault b56f39dec5 COPYING: update
Fixes #2415

- Change mention of PROJ.4 to PROJ
- Change 'I' pronoun to Frank Warmerdam
2020-11-06 19:32:12 +01:00
Even Rouault 848ee7b6a8 createBoundCRSToWGS84IfPossible(): make it return same result with a CRS built from EPSG code or WKT1
Related to https://github.com/OSGeo/gdal/issues/3144
2020-11-04 18:50:36 +01:00
Even Rouault 9c28184f6f Code formatting 2020-11-04 15:27:56 +01:00
Even Rouault 20c987854f docs/Makefile: restore custom 'html' target
Fixes #2408

https://github.com/OSGeo/PROJ/pull/2377 removed our customized 'html' and
.doxygen_up_to_date targets. Let's restore them
2020-11-04 06:38:35 +01:00
Kristian Evers 126445148d Fix vim regex for making github links 2020-11-03 07:15:03 +01:00
Martin Steinisch c64c209f4a Correct links to github issues in release notes from 7.1.0 to 7.2.0 2020-11-03 07:12:39 +01:00
Olli Raisa dd829c94ff cmake build: set CURL_ENABLED definition on projinfo build (#2404)
Fixes projinfo operation, when --remote-data command line option is parsed.
2020-11-02 08:25:48 +01:00
Even Rouault 3b7c3a6ad4 Merge pull request #2371 from rouault/epsg10_part2
EPSG v10 update part 2: ingest DatumEnsemble from the database
2020-11-01 18:50:58 +01:00
Even Rouault 119888b041 proj.h: add PJ_CATEGORY_DATUM_ENSEMBLE for proj_create_from_database() 2020-11-01 12:57:35 +01:00
Even Rouault 1e5acb00a0 projinfo / createObjectsFromName(): support returning a datum ensemble 2020-11-01 12:57:34 +01:00
Even Rouault c2b0dcc468 When reading from database, possibly return VerticalCRS with a DatumEnsemble
Only occurence for now is EPSG:9451 'BI height' using the
'British Isles height ensemble'
2020-11-01 12:57:34 +01:00
Even Rouault 82695cce86 When reading from database, possibly return Geographic/GeodeticCRS with a DatumEnsemble, typically for WGS 84 and ETRS89 ('breaking change') 2020-11-01 12:57:34 +01:00
Charles Karney cccd65e50d Merge pull request #2397 from cffk/merc-update
Update Mercator projection, more accurate, faster
2020-11-01 06:53:02 -05:00
Even Rouault b7bf499b84 Merge pull request #2402 from rouault/improved_comments_datum
Doxygen: improve doc of functions related to Datum/DatumEnsemble
2020-11-01 11:25:29 +01:00
Even Rouault 2d778088f1 Merge pull request #2401 from rouault/improve_remarks
Fill remarks on coordinate operations in more situations
2020-11-01 11:25:19 +01:00
Even Rouault 12274943fb Merge pull request #2400 from rouault/proj_create_ellipsoidal_2D_cs_doc_improvement
proj_create_ellipsoidal_2D/3D_cs(): doc improvement
2020-11-01 11:25:03 +01:00
Kristian Evers 42634f5d71 Switch website 'edit on GitHub' to 7.2 branch 2020-11-01 11:04:07 +01:00
Kristian Evers ed782cb37f Update version numbers in preparation for 8.0.0 release 2020-11-01 11:00:45 +01:00
Kristian Evers a7b98870d8 Merge remote-tracking branch 'osgeo/master' 2020-11-01 10:41:05 +01:00
Kristian Evers c6ede221ed Update docs for 7.2.0 release 2020-11-01 10:40:17 +01:00
Even Rouault 6e7124c8b1 Doxygen: improve doc of functions related to Datum/DatumEnsemble 2020-10-31 15:53:15 +01:00
Even Rouault 67718853e1 Fill remarks for PROJ-based operation mixing horizontal and vertical transformations 2020-10-31 15:47:52 +01:00
Even Rouault baed8dae49 Make sure that remarks is preserved when substituting (EPSG) grid name by PROJ one 2020-10-31 13:59:25 +01:00
Even Rouault c08da1a660 proj_create_ellipsoidal_2D/3D_cs(): doc improvement 2020-10-31 10:52:44 +01:00
Even Rouault 64d46a6b29 Merge pull request #2398 from hernando/japanese-geoid
Update GSIGEO2011 grid alternative to latest PROJ-data
2020-10-28 11:56:51 +01:00
Juan Hernando 2d679fd66f Update GSIGEO2011 grid alternative to latest PROJ-data 2020-10-28 08:55:43 +01:00
Charles Karney 692fc26b6d merc.cpp + phi2.cpp: Avoid declaring multiple variables in 1 statement. 2020-10-27 16:44:43 -04:00
Charles Karney 94e36270ca Use nm units in builtins.gie. Remove backward looking comments in code. 2020-10-27 10:02:27 -04:00
Charles Karney 6bd7c777f8 Fix/add some comments. 2020-10-26 19:03:26 -04:00
Charles Karney 75a8436b24 Use sincos optimization in merc_e_forward. Revised timing data...
Times per call in ns = nanoseconds.

                Fedora 31    Ubuntu 18
                g++-9.3.1    g++-7.5.0
                fwd   inv    fwd   inv
    old merc    207   461    217   522
    new merc    159   457    137   410
      etmerc    212   196    174   147

The new forward method is now 25% faster (resp 35% faster) on Fedora
31 (resp Ubuntu 18).  The new inverse method is the same speed (resp 20%
faster) on Fedora 31 (resp Ubuntu 18).

The accuracy is hardly affected: rms error increases from 0.30 nm to
0.33 nm, max error increases from 1.83 nm to 1.84 nm (a barely
noticeable degradation).
2020-10-26 18:29:19 -04:00
Charles Karney ee35d15db5 phi2.cpp: Slight cosmetic changes to sinpsi2tanphi. 2020-10-26 17:50:51 -04:00
Charles Karney 1081e496a0 lcc.cpp: fix abs -> fabs
Also some corrected information...

Timing UPDATED
--------------

Sorry the previous timing data was wrong.  Here are corrected values..

Here's what I get with g++ -O3 on two Linux machines with recent
versions of g++.  As always, you should take these with a grain of
salt.  Times per call in ns = nanoseconds.

                Fedora 31    Ubuntu 18
                g++-9.3.1    g++-7.5.0
                fwd   inv    fwd   inv
    old merc    207   461    217   522
    new merc    228   457    168   410
      etmerc    212   196    174   147

The new forward method is the 10% slower (resp 20% faster) on Fedora
31 (resp Ubuntu 18).  The new inverse method is the same speed (resp
20% faster) on Fedora 31 (resp Ubuntu 18).

Roughly speaking the speed comparison is a wash.  Maybe we should pay
attention more to the Fedora 31 results since these are with a newer
version of the compiler.  I would still make the argument that a 20%
time penalty (which in a full PROJ pipeline would probably be no more
than a 5% penalty) would be a worthwhile price to pay for a more
robust implementation of the projection.
2020-10-26 16:06:19 -04:00
Charles Karney 6c2363e88f phi2.cpp: remove unused static consts + minor code tweak 2020-10-26 14:57:52 -04:00
Charles Karney 1b484f8530 Address comments by @schwehr 2020-10-26 14:05:06 -04:00
Charles Karney b3a20c5b9c Try to fix compiler complaints for max and constexpr sqrt 2020-10-26 13:58:42 -04:00
Charles Karney 5d22d137b1 Update Mercator projection
Introduction
------------

The existing formulation for the Mercator projection is
"satisfactory"; it is reasonably accurate.  However for a core
projection like Mercator, I think we should strive for full double
precision accuracy.

This commit uses cleaner, more accurate, and faster methods for
computing the forward and inverse projections.  These use the
formulation in terms of hyperbolic functions that are manifestly odd
in latitude

    psi = asinh(tan(phi)) - e * atanh(e  * sin(phi))

(phi = latitude; psi = isometric latitude = Mercator y coordinate).
Contrast this with the existing formulation

    psi = log(tan(pi/4 - phi/2))
          - e/2 * log((1 + e * sin(phi)) / (1 - e * sin(phi)))

where psi(-phi) isn't exactly equal to -psi(phi) and psi(0) isn't
guaranteed to be 0.

Implementation
--------------

There's no particular issue implementing the forward projection, just
apply the formulas above.  The inverse projection is tricky because
there's no closed form solution for the inverse.  The existing code
for the inverse uses an iterative method from Snyder.  This is the
usual hokey function iteration, and, as usual, the convergence rate is
linear (error reduced by a constant factor on each iteration).  This
is OK (just) for low accuracy work.  But nowadays, something with
quadratic convergence (e.g., Newton's method, number of correct digits
doubles on each iteration) is preferred (and used here).  More on this
later.

The solution for phi(psi) I use is described in my TM paper and I
lifted the specific formulation from GeographicLib's Math::tauf, which
uses the same underlying machinery for all conformal projections.  It
solves for tan(phi) in terms of sinh(psi) which as a near identity
mapping is ideal for Newton's method.

For comparison I also look at the approach adopted by Poder + Engsager
in their TM paper and implemented in etmerc.  This uses trigonometric
series (accurate to n^6) to convert phi <-> chi.  psi is then given by

    psi = asinh(tan(chi))

Accuracy
--------

I tested just the routines for transforming phi <-> psi from merc.cpp
and measured the errors (converted to true nm = nanometers) for the
forward and inverse mapping.  I also included in my analysis the
method used by etmerc.  This uses a trigonometric series to convert
phi <-> chi = atan(sinh(psi)), the conformal latitude.

		forward      inverse
		max  rms     max    rms
    old merc    3.60 0.85 2189.47 264.81
      etmerc    1.82 0.38    1.42   0.37
    new merc    1.83 0.30    2.12   0.31

1 nm is pretty much the absolute limit for accuracy in double
precision (1 nm = 10e6 m / 2^53, approximately), and 5 nm is probably
the limit on what you should routinely expect.  So the old merc
inverse is considerably less accurate that it could be.  The old merc
forward is OK on accuracy -- except that if does not preserve the
parity of the projection.

The accuracy of etmerc is fine (the truncation error of the 6th order
series is small compared with the round-off error).  However,
situation reverses as the flattening is increased.  E.g., at f =
1/150, the max error for the inverse projection is 8 nm.  etmerc is OK
for terrestrial applications, but couldn't be used for Mars.

Timing
------

Here's what I get with g++ -O3 on various Linux machines with recent
versions of g++.  As always, you should take these with a grain of
salt.  You might expect the relative timings to vary by 20% or so when
switching between compilers/machines.  Times per call in ns =
nanoseconds.

               forward inverse
    old merc     121      360
      etmerc    4e-6      1.4
    new merc      20      346

The new merc method is 6 times faster at the forward projection and
modestly faster at the inverse projection (despite being more
accurate).  The latter result is because it only take 2 iterations of
Newton's method to get full accuracy compared with an average of 5
iterations for the old method to get only um accuracy.

A shocking aspect of these timings is how fast etmerc is.  Another is
that forward etmerc is streaks faster that inverse etmerc (it made be
doubt my timing code).  Evidently, asinh(tan(chi)) is a lot faster to
compute than atan(sinh(psi)).  The hesitation about adopting etmerc
then comes down to:

  * the likelihood that Mercator may be used for non-terrestrial
    bodies;

  * the question of whether the timing benefits for the etmerc method
    would be noticeable in a realistic application;

  * need to duplicate the machinery for evaluating the coefficients
    for the series and for Clenshaw summation in the current code
    layout.

Ripple effects
==============

The Mercator routines used the the Snyder method, pj_tsfn and pj_phi2,
are used in other projections.  These relate phi to t = exp(-psi) (a
rather bizarre choice in my book).  I've retrofitted these to use the
more accurate methods.  These do the "right thing" for phi in [-pi/2,
pi/2] , t in [0, inf], and e in [0, 1).  NANs are properly handled.

Of course, phi = pi/2 in double precision is actually less than pi/2,
so cos(pi/2) > 0.  So no special handling is needed for pi/2.  Even if
angles were handled in such a way that 90deg were exactly represented,
these routines would still "work", with, e.g., tan(pi/2) -> inf.

(A caution: with long doubles = a 64-bit fraction, we have cos(pi/2) <
0; and now we would need to be careful.)

As a consequence, there no need for error handling in pj_tsfn; the
HUGE_VAL return has gone and, of course, HUGE_VAL is a perfectly legal
input to tsfn's inverse, phi2, which would return -pi/2.  This "error
handling" was only needed for e = 1, a case which is filtered out
upstream.  I will note that bad argument handling is much more natural
using NAN instead of HUGE_VAL.  See issue #2376

I've renamed the error condition for non-convergence of the inverse
projection from "non-convergent inverse phi2" to "non-convergent
sinh(psi) to tan(phi)".

Now that pj_tsfn and pj_phi2 now return "better" results, there were
some malfunctions in the projections that called them, specifically
gstmerc, lcc, and tobmerc.

  * gstmerc invoked pj_tsfn(phi, sinphi, e) with a value of sinphi
    that wasn't equal to sin(phi).  Disaster followed.  I fixed this.
    I also replaced numerous occurrences of "-1.0 * x" by "-x".
    (Defining a function with arguments phi and sinphi is asking for
    trouble.)

  * lcc incorrectly thinks that the projection isn't defined for
    standard latitude = +/- 90d.  This happens to be false (it reduces
    to polar stereographic in this limit).  The check was whether
    tsfn(phi) = 0 (which only tested for the north pole not the south
    pole).  However since tsfn(pi/2) now (correctly) returns a nonzero
    result, this test fails.  I now just test for |phi| = pi/2.  This
    is clearer and catches both poles (I'm assuming that the current
    implementation will probably fail in these cases).

  * tobmerc similarly thinks that phi close to +/- pi/2 can't be
    transformed even though psi(pi/2) is only 38.  I'm disincline to
    fight this.  However I did tighten up the failure condition
    (strict equality of |phi| == pi/2).

OTHER STUFF
===========

Testing
-------

builtins.gei: I tightened up the tests for merc (and while I was about
it etmerc and tmerc) to reflect full double precision accuracy.  My
test values are generated with MPFR enabled code and so should be
accurate to all digits given.  For the record, for GRS80 I use f =
1/298.2572221008827112431628366 in these calculations.

pj_phi2_test: many of the tests were bogus testing irrelevant input
parameters, like negative values of exp(-psi), and freezing in the
arbitrary behavior of phi2.  I've reworked most for the tests to be
semi-useful.  @schwehr can you review.

Documentation
-------------

I've updated merc.rst to outline the calculation of the inverse
projection.

phi2.cpp includes detailed notes about applying Newton's method to
find tan(phi) in terms of sinh(psi).

Future work
-----------

lcc needs some tender loving care.  It can easily (and should) be
modified to allow stdlat = +/- 90 (reduces to polar stereographic),
stdlat = 0 and stdlat_1 + stdlat_2 = 0 (reduces to Mercator).  A
little more elbow grease will allow the treatment of stdlat_1 close to
stdlat_2 using divided differences.  (See my implementation of the
LambertConformalConic class in GeographicLib.)

All the places where pj_tsfn and pj_phi2 are called need to be
reworked to cut out the use of Snyder's t = exp(-psi() variable and
instead use sinh(psi).

Maybe include the machinery for series conversions between all
auxiliary latitudes as "support functions".  Then etmerc could use
this (as could mlfn for computing meridional distance).  merc could
offer the etmerc style projection via chi as an option when the
flattening is sufficiently small.
2020-10-26 12:44:18 -04:00
Kristian Evers 91a767b0cd Use correct PROJ_API_VERSION following updated procedure in HOWTORELEASE 2020-10-26 14:32:19 +01:00
Kristian Evers 16a8e74ca0 Update PROJ_API_VERSION instructions 2020-10-26 14:06:40 +01:00
Kristian Evers e1a43ab05b Update NEWS for 7.2 release 2020-10-26 11:59:31 +01:00
Kristian Evers 37b645059c Update man-pages from Sphinx-docs 2020-10-26 11:02:11 +01:00
Kristian Evers 3bd548d816 Bump ABI version numbers for 7.2 release 2020-10-26 10:42:18 +01:00
Even Rouault 8e4399f668 build_esri_projection_mapping.py: use symbolic name EPSG_NAME_METHOD_COLOMBIA_URBAN 2020-10-26 00:31:13 +01:00
Even Rouault 177143442a Merge pull request #2396 from nyalldawson/notes
Remove 'Local' from list of unsupported ESRI projections
2020-10-26 00:18:22 +01:00
Even Rouault 8850bcb275 Map ESRI IGAC_Plano_Cartesiano to EPSG Colombia Urban (refs #2395) 2020-10-26 00:17:13 +01:00
Nyall Dawson 619994e2b8 Remove 'Local' from list of unsupported ESRI projections 2020-10-26 08:23:52 +10:00
Even Rouault a1513668db Merge pull request #2395 from rouault/colombia_urban
Add +proj=col_urban projection, implementing a EPSG projection method used by a number of projected CRS in Colombia (fixes #589)
2020-10-25 22:19:42 +01:00
Even Rouault 4559a3f702 Add +proj=col_urban projection, implementing a EPSG projection method used by a number of projected CRS in Colombia (fixes #589) 2020-10-25 21:17:29 +01:00
Even Rouault 6476108774 Fix issues spotted by cppcheck 2020-10-25 19:18:06 +01:00
Even Rouault 9f2500e74e More typo fixes 2020-10-25 16:24:37 +01:00
Even Rouault d0f552bd4d scripts/fix_typos.sh: adjust qgis.txt for our script 2020-10-25 16:24:31 +01:00
Even Rouault 64312b3367 Fix typos spotted by scripts/fix_typos.sh 2020-10-25 16:18:58 +01:00
Even Rouault 32f92851c0 projsync: fix --list-files to be compatible with filtering options 2020-10-24 21:18:51 +02:00
Even Rouault 4e95a04f1b triangulation.schema.json: add a 'name' member in 'extent' 2020-10-24 20:57:03 +02:00
Even Rouault 99a84ae742 triangulation.schema.json: add an 'extent' member 2020-10-24 19:45:09 +02:00
Even Rouault 99152afb0b Database: move NZGD2000 deformation model from customizations.sql to new other_tranformation_custom.sql 2020-10-24 17:39:52 +02:00
Even Rouault 469520cbc8 grid_checks.py: rename variables / messages to proj-data 2020-10-24 17:27:33 +02:00
Even Rouault eb1eee51ab Merge pull request #2393 from hernando/japanese-geoid
Added transformation from JGD2011 Geographic 3D to JGD2011 height using GSIGEO2011
2020-10-24 17:14:35 +02:00
Juan Hernando 3fc4b3d4a9 Added transformation from JDG2011 geog 3D to JGD2011 height using GSIGEO2011 2020-10-24 16:37:56 +02:00
Juan Hernando 0b86cc9bce Sort grid_alternatives.sql by agency alphabetically 2020-10-24 16:13:15 +02:00
Charles Karney f27c3d3c2e Merge branch 'master' of github.com:OSGeo/PROJ 2020-10-23 15:32:44 -04:00
Charles Karney f0458a9c79 Minor fixes to tmerc documentation 2020-10-23 15:32:35 -04:00
Even Rouault 2dabb14ec8 Merge pull request #2392 from rouault/fi_nls_tins
Database (and tweaks in core): Add Finland tinshift operations
2020-10-23 19:03:23 +02:00
Even Rouault e30be68ce1 Database: add Finland tinshift operations 2020-10-23 17:44:51 +02:00
Even Rouault 06162ef3cc PROJStringFormatter::getUsedGridNames(): recognize +file= parameter of operation +proj=tinshift 2020-10-23 17:44:29 +02:00
Even Rouault 19b4bba25c Add logic to handle interpolationCRS in PROJBasedOperation and ConcatenatedOperation 2020-10-23 17:44:07 +02:00
Even Rouault ef443bdf0e Database: add interpolation_crs_auth_name and interpolation_crs_code columns to other_transformation table 2020-10-23 17:42:39 +02:00
Charles Karney 30e0b09275 Merge pull request #2388 from cffk/merc-doc-update
Improve the documentation for the Mercator projection
2020-10-23 09:10:09 -04:00
Charles Karney f472a97490 merc.rst: change "origins from 15th cent" to 16th cent. 2020-10-23 08:20:17 -04:00
Even Rouault e6a992b599 AuthorityFactory::createCoordinateOperation(): correctly compute accuracy of concatenated operation when there is a conversion step 2020-10-23 14:17:13 +02:00
Even Rouault 03bede92da Merge pull request #2390 from rouault/db_interleave_usage
Database: for clarity, put usage records after the object they are for
2020-10-23 13:27:57 +02:00
Even Rouault b45891d778 Database: for clarity, put usage records after the object they are for 2020-10-23 12:11:30 +02:00
Even Rouault aaa159247b Merge pull request #2389 from rouault/wkt_parse_implict_compound_crs_esri
WKT1_ESRI: fix import and export of CompoundCRS
2020-10-23 10:28:05 +02:00
Even Rouault 6351422cc2 WKT1_ESRI export: try to export Geographic3D and Projected3D CRS when we can find a corresponding ellipsoidal vertical datum 2020-10-23 00:03:40 +02:00
Even Rouault 4969076c15 Database: import ESRI VERTCS that uses a (geodetic) datum to express ellipsoidal height 2020-10-23 00:03:40 +02:00
Even Rouault 9a11293155 WKT1_ESRI export: generate VERTCS[...,DATUM[...,SPHEROID[]] syntax when ellipsoidal height is found 2020-10-23 00:03:29 +02:00
Even Rouault 82cd218a7a WKT1_ESRI export: export CompoundCRS as PROJCS[...],VERTCS[...] or GEOGCS[...],VERTCS[...] 2020-10-22 21:22:43 +02:00
Even Rouault f2cd2b3b99 WKT parser: accept ESRI VERTCS[...,DATUM[...,SPHEROID[]] syntax to express ellipsoidal heights 2020-10-22 21:13:03 +02:00
Charles Karney 5b72015b0a merc.rst: revert to ln instead of log.
Also define merc (resp. tmerc) as the conformal projection in which the
equator (resp. a chosen meridan} projects to a straight line at constant
scale.
2020-10-22 13:53:45 -04:00
Even Rouault 698e51f476 WKT parser: accept implicit compoundCRS from ESRI WKT, like "PROJCS[...],VERTCS[...]" 2020-10-22 19:34:23 +02:00
Even Rouault 4fa0c250c1 WKTParser::createFromWKT(): minor adjustement for DATUM[],PRIMEM[] constructs
The WKT parser on the second part was called with "RIMEM[...]" (leading P skipped),
which has no visible consequence, as we didn't care about the actual value of the
keyword due to how we used it. But this is better fixing that.

Only applies to recent master changes.
2020-10-22 18:15:39 +02:00
Charles Karney 02ef4ed32e Flesh out the documentation for Mercator
This addresses item 1 in issue #2387

Things to note:

* I made "editorial" changes to the text.  The virtues and vices of
  Mercator are a hot topic.  So check these out.  (I judged that the
  text I replaced to be pretty misleading.)

* I include the radius of the sphere/ellipsoid in the formulas (and I
  did this also for my mods for tmerc documentation).  Surely this is
  better than leaving the reader to figure out how this is introduced.

* I include the "old-style" (ca 18th century) formulas and the newer
  ones in terms of hyperbolic functions.  The former may be the familiar
  ones, but the latter are better for computation (more succinct, more
  accurate, faster, preserve parity).

* For the inverse ellipsoidal transformation, I just say that the
  formula for psi is inverted iteratively.  This is probably sufficient,
  but it could be expanded later.
2020-10-22 11:01:29 -04:00
Even Rouault b61a1d0575 Merge pull request #2386 from rouault/improve_compoundcrs_identification
Improve CompoundCRS identification and name morphing in VerticalCRS with ESRI WKT1
2020-10-21 11:41:51 +02:00
Even Rouault 31f272708e VerticalCRS: morph CRS and datum name using ESRI aliases on import from / export to WKT1:ESRI 2020-10-20 21:51:45 +02:00
Even Rouault 45c819b69f Improve identification of compound CRS from ESRI WKT1, and for compound CRS whose result is not in the DB but whose horiz and vertical parts are known 2020-10-20 21:14:30 +02:00
Even Rouault 6b8ef545c4 projinfo: make '-q -o WKT1:ESRI' work 2020-10-20 20:37:49 +02:00
Even Rouault d18c1972df Orthographic projection: do not add f=0 to PROJ string if the ellipsoid is a sphere (fixes GDAL PDS4 tests) 2020-10-20 14:43:57 +02:00
Even Rouault a8ca9b4b9f test_c_api.cpp: reformat 2020-10-20 14:43:22 +02:00
Even Rouault 5180f5ceb3 Merge pull request #2363 from rouault/reactivate_s390x
.travis.yml: re-enable s390x and add arm64
2020-10-20 12:12:29 +02:00
Alan D. Snow 084f5f6cb3 C API: add proj_context_clone() (#2383)
Fixes #2382
2020-10-19 17:20:27 +02:00
Charles KarneyandCharles Karney 85137d9354 Document the default poder_engsager algorithm for tmerc. (#2379)
* Document the default poder_engsager algorithm for tmerc.

* Give exact expression for phi' in terms of phi

* Aadd another datapoint on range of applicability + explanation for
complex numbers.

* Update tmerc figure with one reflecting poder/engsager algo.

Courtesy of @hobu.

Co-authored-by: Charles Karney <charles.karney@sri.com>
2020-10-18 23:36:24 +02:00
Even Rouault 2357d264d4 Merge pull request #2381 from rouault/fix_1453
Add multi-line PROJ string export capability, and use it by default in projinfo (unless --single-line is specified) (fixes #1543)
2020-10-18 18:42:31 +02:00
Even Rouault 3a2df3462c CompoundCRS with ellipsoidal height: make sure the vertical axis has 'ellipsoid height' as name and 'h' as abbreviation 2020-10-17 22:41:55 +02:00
Even Rouault ffe1922d54 travis/install.sh: make output less verbose to hopefully avoid log size limitation on Mac 2020-10-16 18:49:58 +02:00
Even Rouault d981e01e3f projinfo: restrict PROJ multiline output to coordinate operations only 2020-10-16 18:49:58 +02:00
Even Rouault 53e716f80f projinfo.rst: fix typo 2020-10-16 18:49:58 +02:00
Even Rouault 149366116a Add multi-line PROJ string export capability, and use it by default in projinfo (unless --single-line is specified) (fixes #1543) 2020-10-16 18:49:58 +02:00
Even Rouault 82b496fb32 Merge pull request #2370 from rouault/epsg10
Update to EPSG 10.003 and make code base robust to dealing with WKT CRS with DatumEnsemble
2020-10-16 18:26:09 +02:00
Even Rouault 93508fbec1 Merge pull request #2378 from rouault/enable_gigs_5104
test/gigs: 5104 is passing now. Enable it
2020-10-15 11:28:33 +02:00
Even Rouault 3f575aec77 test/gigs: 5104 is passing now. Enable it 2020-10-15 10:56:43 +02:00
Howard Butler a762daddb5 Plot building Github Action (#2377)
* implement conda package building

* paths

* need libtool

* PLATFORM check

* point to my PROJ feedstock for now

* point to PROJ repos

* plot building and artifact upload

* syntax

* add proj conda package for plotting

* retab

* no doxygen

* syntax

* update docs Makefile

* doc building

* needs

* consolidate doc/plots

* plot updates

* put updated plot output into docs

* register spelling module

* use v2 download-artifact

* artifact upload
2020-10-14 14:40:42 -05:00
Howard Butler bb7dde0752 Add Conda package GitHub Action (#2373)
* implement conda package building

* paths

* need libtool

* PLATFORM check

* point to my PROJ feedstock for now

* point to PROJ repos
2020-10-14 12:30:50 -05:00
Even Rouault 686713479e C API: add proj_dynamic_datum_get_frame_reference_epoch() 2020-10-11 20:13:42 +02:00
Even Rouault d1a0d95da5 Database query: add AuthorityFactory::ObjectType::DYNAMIC_GEODETIC_REFERENCE_FRAME and DYNAMIC_VERTICAL_REFERENCE_FRAME, and make corresponding C API work 2020-10-11 20:01:29 +02:00
Even Rouault ad80dc88a7 Database: add a frame_reference_epoch column in vertical_datum to be able to handle dynamic vertical datums, and instanciate them properly from database 2020-10-11 19:50:09 +02:00
Even Rouault 9751f31ca9 Merge pull request #2372 from rouault/datum_with_pm
WKT2:2019 import/export: handle DATUM (at top level object) with PRIMEM
2020-10-10 15:38:54 +02:00
Even Rouault 5163741254 WKT2:2019 import/export: handle DATUM (at top level object) with PRIMEM
This is a peculiarity of the WKT grammar. Despite ISO 19111 saying that the
prime meridian is a component of the datum, in WKT, they are placed at the
same level, for backward compatibility with earlier WKT versions. So handle
exporting and importing that. The fix is only for situation where DATUM is
the top level object (was working fine otherwise), which is a uncommon use
case. And to limit the amount of issue, on export emit the prime meridian only
if it is not Greenwich.
2020-10-10 14:23:50 +02:00
Even Rouault a5dd7bbb85 Merge pull request #2369 from rouault/fix_2368
promoteTo3D(): add a remark with the original CRS identifier (fixes #2368)
2020-10-09 16:05:59 +02:00
Even Rouault d83c7af5ee projinfo: fix usage formatting 2020-10-09 01:43:32 +02:00
Even Rouault f0f9ec43e5 promoteTo3D(): add a remark with the original CRS identifier (fixes #2368)
```
$ projinfo EPSG:32631 --3d

WKT2:2019 string:
PROJCRS["WGS 84 / UTM zone 31N",
[ ...snip ]
    REMARK["Promoted to 3D from EPSG:32631"]]
```
2020-10-08 18:06:50 +02:00
Even Rouault acd1cf3278 Make GeographicCRS::is2DPartOf3D() work with DatumEnsemble 2020-10-08 17:31:57 +02:00
Even Rouault 67af1d5741 Make proj_create_crs_to_crs() / cs2cs work with CRS with DatumEnsemble 2020-10-08 17:31:57 +02:00
Even Rouault f147821920 Add C API to work with datum ensemble
Add:
- proj_crs_get_datum_ensemble()
- proj_crs_get_datum_forced()
- proj_datum_ensemble_get_member_count()
- proj_datum_ensemble_get_accuracy()
- proj_datum_ensemble_get_member()

Make proj_create_geographic_crs_from_datum() and
proj_create_geocentric_crs_from_datum() accept a datum ensemble.
2020-10-08 17:31:57 +02:00
Even Rouault 4049f4cc96 createGeodeticCRS(): more DatumEnsemble compatibility in the case when creating from text_definition 2020-10-08 17:31:57 +02:00
Even Rouault 492c95ce77 Make createOperations() work with DatumEnsemble 2020-10-08 17:31:57 +02:00
Even Rouault 53672bdf70 Make CRS identification work with CRS with DatumEnsemble 2020-10-08 17:31:56 +02:00
Even Rouault 9dc3bf503b Add DatumEnsemble::asDatum() and use it in exportToWkt()
to allow exporting DatumEnsemble to WKT < 2019.
2020-10-08 17:31:56 +02:00
Even Rouault b5369cc79e Add a AuthorityFactory::createDatumEnsemble() method, and make it inherit from ObjectUsage
as mandated by ISO 19111:2019
2020-10-08 17:31:56 +02:00
Even Rouault fece8a6c6e Database: add aliases for 'old' names of WGS84 and ETRS89 datums, and remove one hack 2020-10-08 17:31:56 +02:00
Even Rouault e51a7db2bd Database: avoid importing duplicated alias names 2020-10-08 17:31:55 +02:00
Even Rouault ff9a386c72 Database: import datum ensemble accuracy and members (but do not use them) 2020-10-08 17:31:55 +02:00
Even Rouault ecf9cf0d97 getCRSInfoList(): make it use area description 2020-10-08 17:31:54 +02:00
Even Rouault 3ed9a613d8 Database: use extended description for extent/area of use, as done by epsg.org WKT export 2020-10-08 17:31:50 +02:00
Even Rouault 2cfdd6f7fc Database: instanciate DynamicGeodeticReferenceFrame (things like ITRFxxx, WGS 84 (Gxxxx), etc.) when possible 2020-10-06 23:48:52 +02:00
Even Rouault 4c992038ea Database: add a reference_frame_epoch column to the geodetic_datum for dynamic datums, but not yet used 2020-10-06 23:48:52 +02:00
Even Rouault a9b6f39494 Database: "minimal" update to EPSG v10.003
Content mostly unchanged since v9.9

This update is "minimal" in that it mostly reflects the removal of the 'area'
table, replaced now by 'extent', 'scope' and 'usage'

Other new aspects of EPSG v10 are left aside.
2020-10-06 23:48:52 +02:00
Even Rouault 7cec30b85e Merge pull request #2366 from rouault/fix_reference_exported_symbols
Update scripts/reference_exported_symbols.txt and fix checking of them in travis/install.sh
2020-10-06 23:32:39 +02:00
Even Rouault 80c00d2727 Update scripts/reference_exported_symbols.txt and fix checking of them in travis/install.sh 2020-10-06 22:55:23 +02:00
Even Rouault f9c17392ad Merge pull request #2365 from rouault/bound_crs_to_wgs84_vertcrs
proj_crs_create_bound_crs_to_WGS84(): make it work on verticalCRS/compoundCRS such as EPSG:4326+5773 and EPSG:4326+3855
2020-10-05 21:02:32 +02:00
Even Rouault a227423cda proj_crs_create_bound_crs_to_WGS84(): make it work on verticalCRS/compoundCRS such as EPSG:4326+5773 and EPSG:4326+3855 2020-10-05 18:14:53 +02:00
Even Rouault 390d1ee101 Merge pull request #2364 from rouault/fix_issue_NAD83_NAD83_2011
createOperations(): several fixes affecting NAD83 -> NAD83(2011)
2020-10-05 11:32:22 +02:00
Even Rouault 7f7f2921ad createOperations(): avoid elimination of ballpark transformation that can help for NAD83->WGS84->NAD83(2011) hops 2020-10-02 23:58:08 +02:00
Even Rouault cd00bd6d0c createOperations(): when combining transformations, reject those with a non-intersecting area of validity 2020-10-02 23:57:18 +02:00
Even Rouault d00b2bdec0 CoordinateOperation: fix issue with ballpark flag not being copied with shallowClone() which affected result sorting 2020-10-02 21:52:33 +02:00
Even Rouault 3feddc89cb .travis.yml: add a arm64 platform 2020-10-02 11:05:51 +02:00
Even Rouault c939d1f9c5 Revert ".travis.yml: disable s390x target since Travis-CI infra is KO regarding this"
This reverts commit 11d2e04051.

This is now stable again
2020-10-02 11:02:28 +02:00
Even Rouault 1cd25bb01d Merge pull request #2361 from rouault/ortho_ellipsoidal
Implement ellipsoidal formulation of +proj=ortho (fixes #397)
2020-09-30 13:37:40 +02:00
Even Rouault 48c3a9a225 Merge pull request #2344 from rouault/tinshift
Add a +proj=tinshift for triangulation-based transformations
2020-09-30 13:37:21 +02:00
Even Rouault 164c85cc8e Add a +proj=tinshift for triangulation-based transformations
Implements RFC-6
2020-09-30 11:26:48 +02:00
Even Rouault 016e8e6074 ortho.cpp: more precise reference to guidance note 2020-09-30 11:17:13 +02:00
Kristian Evers 63541cc268 Merge pull request #2362 from rouault/tmerc_tidy_setup
tmerc: setup_exact(): do not recompute third flattening already available as P->n
2020-09-30 10:32:50 +02:00
Even Rouault 713a5ad61b tmerc: setup_exact(): do not recompute third flattening already available as P->n 2020-09-27 19:43:46 +02:00
Even Rouault 5e7d58ec69 Ortho ellipsoidal inverse: improve accuracy in polar case with (x,y) close to (0,0) 2020-09-27 16:19:56 +02:00
Even Rouault fedeeec68f Ortho ellipsoidal inverse: add domain check for oblique case, and slighly improve initial guessing 2020-09-27 13:51:15 +02:00
Even Rouault b04894819e Ortho ellipsoidal inverse: add non iterative implementations for polar and equatorial 2020-09-26 19:07:55 +02:00
Even Rouault 3d88b6fc89 Ortho: add visibility condition for ellipsoidal case. Credits to @cffk 2020-09-26 18:55:25 +02:00
Even Rouault 2e104e0925 Implement ellipsoidal formulation of +proj=ortho (fixes #397)
- Map ESRI 'Local' to +proj=ortho when Scale_Factor = 1 and Azimuth = 0
- Map ESRI 'Orthographic' to a PROJ WKT2 'Orthographic (Spherical)'
  which maps to +proj=ortho +f=0 to froce spherical evaluation
2020-09-26 11:09:23 +02:00
Even Rouault 485509f3b3 build_db.py: fix previous commit (those files were transient only) 2020-09-24 16:43:10 +02:00
Even Rouault 4376e2233b build_db.py: remove unneeded files 2020-09-24 16:13:56 +02:00
Howard Butler ae2f258a94 update Dockerfile for osgeo/proj-docs to include spell checking 2020-09-22 15:36:16 +02:00
Even Rouault 81aaa47b4e Merge pull request #2357 from rouault/fix_2356
Adjust createBoundCRSToWGS84IfPossible() and operation filtering (for POSGAR 2007 to WGS84 issues) (fixes #2356)
2020-09-18 13:31:36 +02:00
Even Rouault 75074ce863 createOperations(): tune sorting of transformations so that the ones with greater 'version numbers' are prefered over other ones, when all other comparison criteria are equal. Helps with Amersfoort RD New to EPSG:4326 2020-09-17 19:46:07 +02:00
Even Rouault aeb024f2df Adjust createBoundCRSToWGS84IfPossible() and operation filtering (for POSGAR 2007 to WGS84 issues) (fixes #2356)
- We make createBoundCRSToWGS84IfPossible() more restrictive. If there are more
  than one Helmert transformation from the CRS to WGS 84 covering the area of
  use of the CRS, we do not create a BoundCRS / +towgs84
- In createOperations() filtering, we are less aggressive in discarding operations
  that have the same area of use but worse accuracy. We do it only if they involve
  more transformation steps.

We now get:
```
$ projinfo EPSG:5340 -o PROJ
PROJ.4 string:
+proj=longlat +ellps=GRS80 +no_defs +type=crs

$ projinfo -s EPSG:5340 -t EPSG:4326 --spatial-test intersects --summary
Candidate operations found: 2
EPSG:9264, POSGAR 2007 to WGS 84 (2), 0.5 m, Argentina
EPSG:5351, POSGAR 2007 to WGS 84 (1), 1.0 m, Argentina
```
2020-09-17 18:36:22 +02:00
Even Rouault 1e11bf646d projjson.schema.json: indicate v0.2.1 (refs #2354) 2020-09-17 13:31:20 +02:00
Even Rouault 339f1e57d3 projjson.schema.json: update to reflect that prime_meridian.longitude can just be a number, in which case the unit is implicitly degrees (fixes #2354) 2020-09-17 00:19:24 +02:00
Even Rouault e3905b559a Merge pull request #2353 from rouault/fix_2352
proj_trans(): reset errno before attemptying a retry with a new coordinate operation (fixes #2352)
2020-09-11 11:49:44 +02:00
Even Rouault eedfc8908d proj_trans(): reset errno before attemptying a retry with a new coordinate operation (fixes #2352) 2020-09-10 21:17:14 +02:00
Even Rouault ed32f8e4f4 Merge pull request #2351 from rouault/update_to_epsg_9_9
Database: update to EPSG 9.9
2020-09-10 12:14:08 +02:00
Even Rouault ca7f41d0c4 Merge pull request #2350 from rouault/ogc_crs27_crs83
Database: add OGC:CRS27 and OGC:CRS83 CRS entries for NAD27 and NAD83 in longitude, latitude order
2020-09-09 22:41:00 +02:00
Even Rouault 9436c84196 Map EPSG:1083 'Geog3D to Geog2D+Vertical (AUSGeoid v2)' method to +proj=vgridshift 2020-09-09 22:29:19 +02:00
Even Rouault b69aa99cab Database: update to EPSG 9.9 2020-09-09 22:28:41 +02:00
Even Rouault eb2705fb93 Database: add OGC:CRS27 and OGC:CRS83 CRS entries for NAD27 and NAD83 in longitude, latitude order 2020-09-08 13:21:07 +02:00
Even Rouault 7c2718623d Merge pull request #2347 from saprykin/master
Fix compiling warnings when using GCC 4.8.x
2020-09-04 18:30:24 +02:00
Alexander Saprykin 97f06e4c5e Fix compiling warnings when using GCC 4.8.x 2020-09-04 14:50:16 +02:00
Alan D. Snow 50bf1180df DOC: Fix reference to proj_get_codes_from_database in proj_get_crs_info_list_from_database docstring (#2345) 2020-09-04 08:35:45 +02:00
Even Rouault 252bb9d461 Merge pull request #2283 from rouault/rfc6_text
Add RFC-6 text: triangulation-based transformations
2020-09-02 12:52:16 +02:00
Even Rouault 30bfb38c0a Add RFC-6 text 2020-09-02 11:58:49 +02:00
Even Rouault af2ab20b50 Doc: document members of C structures generated from Doxygen 2020-09-02 11:12:39 +02:00
Kristian Evers ff25c66351 Update docs for 7.1.1 release
Conflicts:
	docs/source/conf.py
2020-09-01 16:20:09 +02:00
Javier Jimenez Shaw f38c54e7fb fix typo in Canary Islands 2020-09-01 16:18:28 +02:00
Kristian Evers 55addc07a0 Update NEWS for 7.1.1 2020-09-01 16:18:15 +02:00
Kristian Evers 310fa2ce67 docs: Document missing members of PJ_COORD 2020-08-31 13:33:52 +02:00
Even Rouault ef48acb4ab Merge pull request #2342 from rouault/proj_create_vertical_crs_ex_accuracy
proj_create_vertical_crs_ex(): add a ACCURACY option to provide an explicit accuracy, or derive it from the grid name if it is known
2020-08-26 20:10:22 +02:00
Even Rouault 138555c249 proj_create_vertical_crs_ex(): add a ACCURACY option to provide an explicit accuracy, or derive it from the grid name if it is known 2020-08-26 00:18:36 +02:00
Even Rouault 683d3097ff lcc: avoid harmless division by zero in untypical case. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24442 2020-08-23 18:11:43 +02:00
Even Rouault 403bd8b267 createObjectsFromName(): add back case insensitivity when comparing names
Fixes #2332
Didn't affect released versions
2020-08-21 08:46:38 +02:00
Even Rouault b104bc7afb Helmert: fix regression when rotation terms are 0, but scale is not
Fixes #2333
Was due to 3dc92ad701
Doesn't affect released versions
2020-08-21 08:45:47 +02:00
Alan D. Snow bc1dcf2cd5 projCtx_t: Copy ini file settings, proj4_init_rules, etc.. when initializing context from global (#2331) 2020-08-20 17:48:40 +02:00
Even Rouault 2b3475c853 Code reformatting 2020-08-19 16:31:27 +02:00
Even Rouault 846455f958 Merge pull request #2329 from snowman2/ensure_cpp_context
Add methods to projCtx_t for safer interactions with cpp_context
2020-08-19 16:19:40 +02:00
snowman2 8c41cfc3a7 Add methods to ensure safer interactions with cpp_context 2020-08-19 08:06:18 -05:00
Alan D. Snow 84713021ed Clone projCppContext context when copying projCtx_t (#2324) 2020-08-19 15:02:42 +02:00
Even Rouault 62ad09fe02 Revert compiler generated Fused Multiply Addition optimized routines (#2327)
Fixes #2326

Partially reverts commit b84c9d0cb6 to
remove the use of the gcc 6 mechanism of generated multiple versions of
functions with different optimization flags, which was found to causes
crashes when dlopen'ing PROJ on CentOS 7.8 with gcc 8.3.1
2020-08-19 14:25:28 +02:00
Alan D. Snow e1dc2d5516 ENH: Add support for custum CA Bundle path (#2323)
Fixes #2320
2020-08-16 12:30:58 +02:00
Even Rouault b8c198897d WKT importer: tune for Oracle WKT and 'Lambert Conformal Conic' (#2321)
Fixes https://github.com/qgis/QGIS/issues/37898
2020-08-13 18:06:22 +02:00
Kristian Evers 9701afb98c cs2cs/cct docs: Align versionadded directives correctly for -d option 2020-08-13 12:22:53 +02:00
Even Rouault 6f78d5604e WKT parser: avoid null pointer dereference on corrupted WKT
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=24809
2020-08-11 09:51:05 +02:00
Even Rouault 56bacd3dc9 ProjectedCRS::identify(): fix to be able to identify EPSG:2154 as a candidate for 'RGF93_Lambert_93' (contributes to fixes https://github.com/qgis/QGIS/issues/32255) (#2315) 2020-08-07 17:22:31 +02:00
Javier Jimenez Shaw 916026cc34 Fix url for CDN GitHub project (#2313) 2020-08-06 13:36:58 +02:00
Even Rouault 17827338d0 Merge pull request #2312 from jjimenezshaw/add-canary-islands-geoid
Add Canary Islands geoid file
2020-08-06 11:19:08 +02:00
Javier Jimenez Shaw ca1a6ab916 add Canary Islands geoid file in grid_alternatives.sql 2020-08-05 12:58:58 +02:00
Even Rouault 14f868d922 Merge pull request #2309 from rouault/update_to_epsg_9_8_15
Database: update to EPSG v9.8.15 database
2020-08-03 11:40:09 +02:00
6d6229ca7b Database: update to EPSG v9.8.15 database
Co-authored-by: jmckenna <jmckenna@gatewaygeomatics.com>
Co-authored-by: Javier Jimenez Shaw <j1@jimenezshaw.com>
Co-authored-by: Even Rouault <even.rouault@spatialys.com>
2020-08-02 12:18:11 +02:00
Even Rouault 53abcb0425 PROJ CRS string ingestion: fix typo in identification of projection steps (fixes #2307) 2020-07-30 17:42:27 +02:00
Even Rouault 9488a7264a Merge pull request #2304 from rouault/fix_helmert_2D
Helmert 2D: do not require a useless convention= parameter
2020-07-24 16:00:47 +02:00
Even Rouault 886499e3a2 Helmert 2D: do not require a useless convention= parameter 2020-07-24 15:22:53 +02:00
Even Rouault 062c7f160f Transverse Mercator South Orientated: restrict export to PROJ string to cases where false_easting and false_northing are 0 2020-07-09 15:45:28 +02:00
Even Rouault 668fb0aacd Merge pull request #2300 from rouault/krovak_czech
PROJ string export of +proj=krovak +czech: make sure we export +czech…
2020-07-09 11:50:44 +02:00
Even Rouault 24624869b4 Merge pull request #2298 from rouault/gh_workflows_doc_build
Move doc building (without deployment) to github action
2020-07-09 00:12:32 +02:00
Even Rouault 5c9bd6e722 PROJ string export of +proj=krovak +czech: make sure we export +czech instead of +axis=swu (fixes #2299) 2020-07-09 00:11:28 +02:00
Even Rouault cf3caffd45 formatting fix 2020-07-08 23:47:59 +02:00
Even Rouault b5e13c2118 github workflows: add a workflow for doc building 2020-07-08 16:50:06 +02:00
Even Rouault dd38200142 travis/osx/before_install.sh: remove most brew actions and doc building
Brew is just to unstable
2020-07-08 16:35:58 +02:00
Even Rouault 08f287dc5d Merge pull request #2294 from dg0yt/mingw
CMake build: Check "target_clones" before use
2020-07-08 13:11:05 +02:00
Even Rouault 35468fd4f7 travis/osx/before_install.sh: fix related to installing python (#2295) 2020-07-07 23:14:33 +02:00
Kai Pastor 7ab3ee7370 CMake build: Check "target_clones" before use
gcc's "target_clones" and "ifunc" function attributes rely on
extensions to the ELF standard. Using them on MinGW causes "error:
the call requires 'ifunc', which is not supported by this target".
Amends 5396b72.
2020-07-07 21:04:16 +02:00
Even Rouault 7cfde8d0b3 Merge pull request #2274 from snowman2/pjtype
ENH: Added temporal, engineering, and parametric datum PJ_TYPE enumerations
2020-07-06 11:25:59 +02:00
Even Rouault b8fef0901b C API: missing a few SANITIZE_CTX() in entry points (#2292)
Found when investigating https://github.com/OSGeo/gdal/issues/2744
but the root cause of the GDAL issue is different.
2020-07-04 18:31:10 +02:00
Even Rouault c859c40dae Doc: improve cs2cs doc by mentionning possibility to use EPSG CRS names (#2290) 2020-07-03 11:18:29 +02:00
Even Rouault 66d5ffd529 Parse '+proj=something_not_latlong +vunits=' without +geoidgrids as a Projected3D CRS and not a compound CRS with a unknown datum (fixes #2287) (#2288) 2020-07-02 15:05:12 +02:00
anbj 6458c7cf2e improve cmake instructions (#2278) 2020-07-02 20:27:49 +12:00
Even Rouault becef63fbc news.rst: fix version number 2020-07-01 16:21:15 +02:00
Even Rouault f80567bf31 PROJ 7.1.0 NEWS and release notes: add missing mention of +proj=defmodel 2020-07-01 15:19:28 +02:00
Even Rouault ab2acccadf Doc: add alias in pages of transformation methods 2020-07-01 15:13:41 +02:00
anbj ce952dbe58 Doc: add projsync info (#2279) 2020-07-01 14:28:25 +02:00
Even Rouault 75ab93d19c Database: register Brazil' grids (refs https://github.com/OSGeo/PROJ-data/pull/39) (#2277) 2020-07-01 14:15:05 +02:00
Even Rouault c99cfa8ee7 WKT parser: do not raise warning when parsing a WKT2:2015 TIMECRS whose TIMEUNIT is at the CS level, and not inside (#2276)
Adresses testTemporal() and testCompoundWithTime() cases of
https://github.com/OSGeo/PROJ/issues/2275#issuecomment-650765730
2020-07-01 14:14:24 +02:00
Even Rouault 42cd771306 Update version numbers 2020-07-01 13:04:47 +02:00
Kristian Evers bb15481e66 Post release updates (#2270)
* Minor updates to HOWTO-RELEASE

* Update webpage for 7.1.0 release
2020-07-01 12:40:35 +02:00
snowman2 71ddcf9757 move new enums to bottom 2020-06-27 08:06:42 -05:00
snowman2 ed1eb90ef3 ENH: Added temporal, engineering, and parametric datum PJ_TYPE enumerations 2020-06-26 20:22:50 -05:00
Kristian Evers 0a995bb421 Mention new API function deprecations 2020-06-24 21:26:17 +02:00
Even Rouault d989bf3919 ESRI WKT: correctly map 'Goode Homolosine' from ESRI:54052 (resp. 54053) to 'Interrupted Googe Homolosine' (resp. 'Interrupted Googe Homolosine Ocean') 2020-06-24 17:19:16 +02:00
Even Rouault f40ab9fd0b c_api.cpp: code reformating 2020-06-24 17:06:12 +02:00
Alan D. Snow b8c2a2dba1 Replace assert with errors in c_api.cpp when some preconditions are not met (#2269)
Closes #2268
2020-06-24 15:22:56 +02:00
Even Rouault 7523645bae test_defmodel.cpp: increase comparison tolerance for ARM and MIPS platforms (fixes #2271) 2020-06-24 11:08:54 +02:00
Kristian Evers 57ccf582fc Update NEWS for 7.1.0 release 2020-06-23 20:37:53 +02:00
Kristian Evers 070db93ca4 Update man-pages from Sphinx-docs 2020-06-23 19:38:54 +02:00
Kristian Evers 720d3fd19b Update ABI version numbers for 7.1.0 release 2020-06-23 19:30:59 +02:00
Even Rouault af8334a5c8 Merge pull request #2267 from rouault/update_to_epsg_9_8_12
Database: update to EPSG v9.8.12
2020-06-19 14:53:50 +02:00
Even Rouault ee743a74c2 Database: update to EPSG v9.8.12 2020-06-19 13:50:12 +02:00
Even Rouault 6872529880 Merge pull request #2250 from and-marsh/pr-add-main-uk-geoid
Database: register geoid file for UK added in  OSGeo/PROJ-data#25
2020-06-18 11:48:25 +02:00
Even Rouault c408466fde Merge pull request #2265 from rouault/fix_createOperations_bound_to_geod
createOperations(): fix transformations between BoundCRS and Geocentric CRS
2020-06-17 11:42:37 +02:00
Even Rouault 963a4d4cae Merge pull request #2248 from rouault/database_nzgd2000_defmodel
Database: register NZGD2000 -> ITRF96 transformation for NZGD2000 database
2020-06-16 22:50:35 +02:00
Even Rouault 3d9aa5c82f createOperations(): fix transformations between BoundCRS and Geocentric CRS 2020-06-16 20:07:40 +02:00
Even Rouault 3005bcbc15 Doc building: workaround Doxygen issue that cause trouble with recent Sphinx/Breathe 2020-06-13 22:33:54 +02:00
Kristian Evers 09bbf268d6 Update code contributor guidelines so they reflect current state of affairs 2020-06-13 10:25:32 +02:00
Kristian Evers 6a36ac3c0f Merge pull request #2264 from jjimenezshaw/add-favicon
Add favicon.png in html
2020-06-12 21:33:35 +02:00
Javier Jimenez Shaw f0b231b37a add favicon.png in html 2020-06-12 19:56:34 +02:00
Even Rouault a3350fd7e8 Merge pull request #2263 from jjimenezshaw/egm08-rednap
add PROJ transformation for ETRS89 (EPSG:4937) to Alicate height (EPSG:5782)
2020-06-12 19:04:32 +02:00
Javier Jimenez Shaw 0046678fed add transformation for es_ign_egm08-rednap.tif 2020-06-12 17:59:24 +02:00
Even Rouault 69f315914c Merge pull request #2262 from rouault/proj_pc_in_tiff_curl
proj.pc.in: add @TIFF_LIBS@ @CURL_LIBS@ in Libs.private
2020-06-12 11:41:15 +02:00
Even Rouault e400278186 Merge pull request #2261 from rouault/register_SPED2ETV2
Database: register Spanish SPED2ETV2 grid for ED50->ETRS89
2020-06-11 18:52:27 +02:00
Even Rouault 0e20ccabce proj.pc.in: add @TIFF_LIBS@ @CURL_LIBS@ in Libs.private
Attempt at fixes #2084
2020-06-11 14:44:26 +02:00
Even Rouault eeb52c6dc6 Database: register Spanish SPED2ETV2 grid for ED50->ETRS89
Refs https://github.com/OSGeo/PROJ-data/pull/31
2020-06-11 12:48:36 +02:00
Even Rouault adc18aee52 Merge pull request #2260 from ollira/fix-proj_context_get_database_metadata
Fix access violation in proj_context_get_database_metadata
2020-06-10 14:31:33 +02:00
Olli Räisä adeca911c1 Fix access violation in proj_context_get_database_metadata 2020-06-10 12:52:14 +03:00
Even Rouault 144a611f84 Conversion::_exportToPROJString(): avoid potential floating point div by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23239 2020-06-09 17:24:20 +02:00
Even Rouault dfa281a25d Merge pull request #2259 from rouault/slovakian_geoids
Register Slovakian geoid transformations with needed code changes
2020-06-08 13:40:31 +02:00
Even Rouault a24cf969aa Database: make sure we can deal with 'Geog3D to Geog2D+GravityRelatedHeight' records as we do with the more common 'Geographic3D to GravityRelatedHeight' 2020-06-06 22:24:14 +02:00
Even Rouault c6ff686bf8 createOperations(): improve name of inverse transformation when there are registered transformations between compoundCRS and something else 2020-06-06 22:24:13 +02:00
Even Rouault a96e8f5f4e createOperations(): changes so that EPSG:9635 'Geog3D to Geog2D+GravityRelatedHeight (US .gtx)' method used by Slovakian geoids correctly deal with axis order and unit conversion, to be used as 'standalone'. Also improves when using directly 'Geographic3D to GravityRelatedHeight' method 2020-06-06 22:24:13 +02:00
Even Rouault 325d8e157d Database: register sk_gku_Slovakia_ETRS89h_to_Baltic1957.tif and sk_gku_Slovakia_ETRS89h_to_EVRF2007.tif geoids
Related to https://github.com/OSGeo/PROJ-data/pull/29
2020-06-06 22:23:54 +02:00
Even Rouault 4e347f4710 Merge pull request #2258 from rouault/doc_proj_normalize_for_visualization
Doc: use Doxygen output for proj_normalize_for_visualization() to avoid duplication of info (current .rst content is outdated)
2020-06-05 18:08:52 +02:00
Even Rouault 192a15764a Doc: use Doxygen output for proj_normalize_for_visualization() to avoid duplication of info (current .rst content is outdated) 2020-06-05 17:22:44 +02:00
Even Rouault 2a84dc816e Merge pull request #2256 from rouault/fix_normalizeForVisualization_for_EPSG_5482
normalizeForVisualization(): make it switch axis for EPSG:5482 (RSRGD2000 / RSPS2000)
2020-06-03 15:11:09 +02:00
Even Rouault dc1f82d8b5 Doc: add specific explanations for lat_ts for +proj=stere, also mentions +lat_0 and +k_0 (#2255)
Refs #2254
2020-06-03 15:10:55 +02:00
Even Rouault 5904499500 normalizeForVisualization(): make it switch axis for EPSG:5482 (RSRGD2000 / RSPS2000)
Fixes #2254
2020-06-03 14:09:04 +02:00
Even Rouault df1b082825 Merge pull request #2252 from rouault/workaround_appveyor_vs2015_issue
appveyor.yml: workaround vcpkg upstream build issue with VS2015
2020-06-03 11:38:03 +02:00
Andrei Marshalov 7e07589d21 customizations.sql: add entry for OSGM15 geoid_model 2020-06-03 12:21:57 +03:00
Even Rouault b59fd03f11 appveyor.yml: workaround vcpkg upstream build issue with VS2015 (see https://github.com/microsoft/vcpkg/issues/1166) [skip travis] 2020-06-03 10:54:04 +02:00
Kristian Evers b66798a8f3 Merge pull request #2251 from kbevers/doc-deformation
Docs: Use +grids and tif file for deformation examples
2020-06-03 07:40:40 +02:00
Kristian Evers 81602f3860 Docs: Use +grids and tif file for deformation examples 2020-06-02 12:27:29 +02:00
Andrei Marshalov eb9f5483f1 Database: register geoid file for UK added in OSGeo/PROJ-data#25 2020-06-02 12:13:04 +03:00
Even Rouault a0a44ac57e projsync.cpp: fix -Wrange-loop-construct clang10 warnings 2020-05-31 13:25:07 +02:00
Even Rouault d3aaf98292 filemanager.cpp: code reformatting 2020-05-31 13:24:40 +02:00
Even Rouault ad9efb19d3 Database: add concatenated operations for NZGD2000 -> ITRF97/2000/2005/2008/2014 2020-05-30 12:51:29 +02:00
Even Rouault 10d8e9af8d Database: register NZGD2000 -> ITRF96 transformation for NZGD2000 database
Related to https://github.com/OSGeo/PROJ-data/pull/22

An entry is added in the ``other_transformation`` table, using a raw PROJ
string. Later, once the deformation model has been registered in EPSG, we'll
have to add code to map the EPSG transformation method and parameters to
+proj=defmodel

In the meantime, this works pretty well:

```
$ src/projinfo -s EPSG:4959 -t EPSG:7907
Candidate operations found: 1
-------------------------------------
Operation No. 1:

PROJ:NZGD2000-20180701, NZGD2000 to ITRF96 deformation model, unknown accuracy, New Zealand

PROJ string:
+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=axisswap +order=2,1 +step +proj=defmodel +model=nz_linz_nzgd2000-20180701.json +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=rad +xy_out=deg

WKT2:2019 string:
COORDINATEOPERATION["NZGD2000 to ITRF96 deformation model",
    VERSION["20180701"],
    SOURCECRS[
        GEOGCRS["NZGD2000",
            DATUM["New Zealand Geodetic Datum 2000",
                ELLIPSOID["GRS 1980",6378137,298.257222101,
                    LENGTHUNIT["metre",1]]],
            PRIMEM["Greenwich",0,
                ANGLEUNIT["degree",0.0174532925199433]],
            CS[ellipsoidal,3],
                AXIS["geodetic latitude (Lat)",north,
                    ORDER[1],
                    ANGLEUNIT["degree",0.0174532925199433]],
                AXIS["geodetic longitude (Lon)",east,
                    ORDER[2],
                    ANGLEUNIT["degree",0.0174532925199433]],
                AXIS["ellipsoidal height (h)",up,
                    ORDER[3],
                    LENGTHUNIT["metre",1]],
            ID["EPSG",4959]]],
    TARGETCRS[
        GEOGCRS["ITRF96",
            DATUM["International Terrestrial Reference Frame 1996",
                ELLIPSOID["GRS 1980",6378137,298.257222101,
                    LENGTHUNIT["metre",1]]],
            PRIMEM["Greenwich",0,
                ANGLEUNIT["degree",0.0174532925199433]],
            CS[ellipsoidal,3],
                AXIS["geodetic latitude (Lat)",north,
                    ORDER[1],
                    ANGLEUNIT["degree",0.0174532925199433]],
                AXIS["geodetic longitude (Lon)",east,
                    ORDER[2],
                    ANGLEUNIT["degree",0.0174532925199433]],
                AXIS["ellipsoidal height (h)",up,
                    ORDER[3],
                    LENGTHUNIT["metre",1]],
            ID["EPSG",7907]]],
    METHOD["PROJ-based operation method: +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=axisswap +order=2,1 +step +proj=defmodel +model=nz_linz_nzgd2000-20180701.json +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=rad +xy_out=deg"],
    USAGE[
        SCOPE["unknown"],
        AREA["New Zealand"],
        BBOX[-55.95,160.6,-25.88,-171.2]],
    ID["PROJ","NZGD2000-20180701"],
    REMARK["New Zealand Deformation Model. Defines the secular model (National Deformation Model) and patches for significant deformation events since 2000"]]
```

```
$ echo "-41 173 0 2016.5" | PROJ_NETWORK=ON src/cct -d 8 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=axisswap +order=2,1 +step +proj=defmodel +model=nz_linz_nzgd2000-20180701.json +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=rad +xy_out=deg
 -40.99999402   172.99999938    0.00130333     2016.5000
```

```
$ echo "-41 173 0 2016.5" | PROJ_NETWORK=ON src/cs2cs -f "%.8f" EPSG:4959 EPSG:7907
-40.99999402	172.99999938 0.00130333 2016.5
```
2020-05-30 12:51:29 +02:00
Even Rouault 11d2e04051 .travis.yml: disable s390x target since Travis-CI infra is KO regarding this 2020-05-30 12:51:13 +02:00
chrodger f0baddbe63 filemanager.cpp: use non-deprecated SHGetKnownFolderPath() function to get the user writable directory on Windows (#2246)
Fixes #2245
2020-05-29 23:10:37 +02:00
Even Rouault e9a5addacb Merge pull request #2243 from rouault/inverse_wink2
Implement wink2 inverse by generic inversion of forward method
2020-05-29 12:37:48 +02:00
Even Rouault 48b3bd9afe Implement wink2 inverse by generic inversion of forward method
- Move the generic method initiated from adams_ws2 to a
  pj_generic_inverse_2d() method
- Use it in adams_ws2
- Use it in wink2

Fixes https://github.com/qgis/QGIS/issues/35512
2020-05-28 13:51:28 +02:00
Even Rouault 9ff543c4ff Merge pull request #2240 from rouault/fix_identification_epsg_3035
Fix identification of (one of the) ESRI WKT formulations of EPSG:3035
2020-05-25 21:10:18 +02:00
Even Rouault 4ade1b2eb1 Merge pull request #2239 from rouault/register_nc_dittt_Ranc08_Circe
Database: add entry for Ranc08_Circe.mnt grid (New Caledonia)
2020-05-25 19:48:06 +02:00
Even Rouault 172744361c Fix identification of (one of the) ESRI WKT formulations of EPSG:3035
Fixes https://github.com/qgis/QGIS/issues/36111
2020-05-25 19:47:51 +02:00
Even Rouault 263d121a3d Database: add entry for Ranc08_Circe.mnt grid (New Caledonia)
This geoid was added in EPSG 9.8.11 and has been added in PROJ-data
per https://github.com/OSGeo/PROJ-data/pull/21
2020-05-25 17:21:34 +02:00
Even Rouault cfdd474dd8 Merge pull request #2238 from rouault/update_to_epsg_9_8_11
Update to EPSG 9.8.11, ESRI 10.8.1 and import scope and remarks for conversion
2020-05-25 15:59:19 +02:00
Even Rouault bf50f76e1d Database: import scope and remarks for conversion (fixes #2237) 2020-05-24 21:35:13 +02:00
Even Rouault c2654aaf0f Database: update ESRI content to ArcMap 10.8.1 2020-05-24 21:22:19 +02:00
Even Rouault d03f15819b Database: update to EPSG v9.8.11 2020-05-24 21:22:18 +02:00
Even Rouault 4d9fa77bef Database: add a same_source_target_crs column to supersession table
This is in preparation for EPSG 9.8.11 import that supersedes a number of
grid transformation for US transformations, but the superseded and replacement
transformations don't operate on the same (source_crs, target_crs), which is
a bit weird. So in that situation, ignores the supersession.
2020-05-24 21:22:18 +02:00
Even Rouault 5d502d356e Merge pull request #2230 from rouault/limit_peirce_q_to_northern_hemisphere
Limit peirce_q to northern hemisphere, and fix images for adams_hemi, guyou and peirce_q
2020-05-24 20:03:48 +02:00
Jeff McKenna 35dc7d00f9 .travis.yml: enable commit notifications into dedicated 'proj-activity' IRC channel (#2236) 2020-05-19 21:53:19 +02:00
Even Rouault 8a1e831688 Merge pull request #2235 from rouault/check_sqlite3_runtime
Add runtime checking that sqlite3 is >= 3.11
2020-05-19 20:26:04 +02:00
Even Rouault 9d4de5d139 Add runtime checking that sqlite3 is >= 3.11
```
$ LD_LIBRARY_PATH=$HOME/install-sqlite-3.8.2/lib PROJ_DEBUG=1 src/projinfo -s @in.wkt -t @out.wkt --spatial-test intersects >/dev/null
SQLite3 version is 3.8.2, whereas at least 3.11 should be used
```
2020-05-19 19:26:05 +02:00
John Krasting b6b0ae12e3 Zone Definition Fixes for igh_o projection (#2233)
- Central lon for zone 2 should be -d10, not d10
- Extra lobe was missing for zone 11
- New figure generated
- New test suite values generated
2020-05-19 17:22:04 +02:00
Even Rouault 3ee7c9495b Merge pull request #2234 from rouault/fix_2232
Many fixes regarding BoundCRS, CompoundCRS, Geographic3D CRS with non-metre units
2020-05-19 16:53:27 +02:00
Even Rouault b0b33b8447 createOperations(): fix bug when transforming between CompoundCRS and BoundCRS in the general case let to 0 result (contributes to fixes #2232) 2020-05-19 14:21:02 +02:00
Even Rouault b6fc415925 createOperations(): optimization in generated pipeline in a case involving vertical unit change 2020-05-19 14:21:02 +02:00
Even Rouault 5aa99d4974 createOperations(): take correctly into account vertical unit change in a case of transformation between Compound of BoundVerticalCRS to GeographicCRS (contributes to fixes #2232) 2020-05-19 14:21:02 +02:00
Even Rouault 8dc8e1de06 createOperations(): fix wrong optimization in some instances of transforming a BoundCRS to a GeographicCRS (contributes to fixes #2232) 2020-05-19 14:21:01 +02:00
Even Rouault ec3fdd00f1 WKT1 ingestion: fix ingestion of COMPD_CS with ellipsoidal vertical datum and non metre units (contributes to fixes #2232) 2020-05-19 14:20:55 +02:00
Even Rouault 1a71523475 createOperations(): speed optimizations for transforming between a BoundCRS of a datum and the same datum (relates to #2232) 2020-05-19 14:15:47 +02:00
Even Rouault 166a1c681b createOperationsWithDatumPivot(): remove useless code 2020-05-19 14:15:47 +02:00
Even Rouault 4ee2ed65f7 createOperations(): fix 'caching' bugs causing potential exception about Inconsistent chainging of CRS (fixes #2232) 2020-05-19 14:15:46 +02:00
John Krasting 2e5470387d Implemented IGH Oceanic View (#2226)
- The current implementation of the Interrupted Goode Homolosine
  projection emphasizes land area. This is a compliment projection
  that emphasizes ocean area.
- A value of lon0=-160 produces a reasonable real-world map.
2020-05-19 02:04:04 +02:00
Even Rouault 9c501221de Address warnings raised by recent cppcheck 2020-05-17 23:26:24 +02:00
Even Rouault 0403980832 Merge pull request #2206 from rouault/deformation_model_for_merge
Add a +proj=defmodel transformation for multi-component time-based deformation models
2020-05-17 22:07:31 +02:00
Even Rouault b349fa7384 Merge pull request #2229 from rouault/fix_2228
Allow importing WKT1 COMPD_CS with a VERT_DATUM[Ellipsoid,2002]
2020-05-17 20:47:15 +02:00
Even Rouault 95e8777618 geodetictiffgrids.rst: update with deformation model 2020-05-16 17:53:13 +02:00
Even RouaultandChris Crook 697b93dbad Add a +proj=defmodel transformation for multi-component time-based deformation models
Fixes #1001

Co-authored-by: Chris Crook <ccrook@linz.govt.nz>
2020-05-16 17:53:13 +02:00
Even Rouault 4054c3b884 gie: fix loss of precision when parsing big values such as in projected coordinates 2020-05-16 17:52:49 +02:00
Even Rouault be6b6d7ec9 pj_bilinear_interpolation_three_samples(): add comments 2020-05-16 17:52:48 +02:00
Even Rouault f7f3b98a53 plotdefs.json: update validty area for adams_hemi, guyou and peirce_q, and regenerate associated images 2020-05-16 17:50:15 +02:00
Even Rouault 853db32089 plot.py: make path to 'proj' executable configurable with PROJ_EXE environment variable 2020-05-16 17:50:15 +02:00
Even Rouault ce38ade494 peirce_q: limit input to positive latitudes
Otherwise it returns junk (negative latitudes are mapped to
the same location as positive latitudes)

I'm a bit confused by PROJ peirce_q implementation. Looking at
the projection of the world, it looks like this matches the diamond
formulation of the right map shown at
https://desktop.arcgis.com/en/arcmap/latest/map/projections/peirce-quincuncial.htm,
but limited to the inner square of this diamond (which corresponds
to the northern hemisphere). We lack the 4 triangles on left, top,
right and bottom for the southern hemisphere. Furthermore, this
formulation of peirce_q does not seem to have the quincuncial
property of the square formulation (left images of the above ESRI
doc), or the one at https://en.wikipedia.org/wiki/Peirce_quincuncial_projection ...
2020-05-16 17:49:26 +02:00
Even Rouault 2d6b5c0a9a Merge pull request #2227 from rouault/fix_2225
createOperations(): when converting CompoundCRS<-->Geographic3DCrs, do not use discard change of ellipsoidal height if a Helmert transformation is involved
2020-05-16 16:20:10 +02:00
Even Rouault 6a3371ea66 Adjustments to deal with non-conformant WKT1 LAS COMPD_CS[] (refs #2171) 2020-05-16 15:51:01 +02:00
Even Rouault f57475aa3b Allow importing WKT1 COMPD_CS with a VERT_DATUM[Ellipsoid,2002], and exporting it back as such (on the same object) (fixes #2228) 2020-05-16 15:36:06 +02:00
Even Rouault 960285f974 test: improve formatting of expected result 2020-05-16 13:18:08 +02:00
Even Rouault e3e246854a createOperations(): improve operation name when inverting a 'axis order change (geographic3D horizontal)' operation 2020-05-16 13:17:08 +02:00
Even Rouault e3bbef8283 createOperations(): when converting CompoundCRS<-->Geographic3DCrs, do not use discard change of ellipsoidal height if a Helmert transformation is involved (fixes #2225) 2020-05-16 13:16:27 +02:00
Even Rouault fe3ffe8d5f createOperations(): be stricter when considering if an operation is a null one 2020-05-16 00:54:48 +02:00
Even Rouault 330b206624 Merge pull request #2224 from rouault/fix_2202
Make projinfo --3d --boundcrs-to-wgs84 better work (fixes #2202)
2020-05-15 11:58:17 +02:00
Even Rouault 6c5164eb49 Merge pull request #2223 from rouault/fix_2221
Avoid 2 warnings about missing database indices
2020-05-15 11:58:05 +02:00
Even Rouault 40bceca79f Merge pull request #2222 from rouault/fix_2217
Fixes related to CompoundCRS and BoundCRS
2020-05-15 11:57:52 +02:00
Even Rouault a2f8fd1a21 Make projinfo --3d --boundcrs-to-wgs84 better work (fixes #2202) 2020-05-15 00:40:25 +02:00
Even Rouault 77a8a9e01c AuthorityFactory::createObjectsFromName(): request SQL query to avoid warning about lack of object_view(table_name) index 2020-05-15 00:21:25 +02:00
Even Rouault f167d3fa6e Database: add index on alias_name(code) 2020-05-15 00:21:25 +02:00
Even Rouault e86ce263a9 Add SQLite3 debug logging if PROJ_LOG_SQLITE3 env var is defined 2020-05-15 00:21:24 +02:00
Even Rouault bc52bdcd51 createObjectsFromName(): fix when objectType = { GEOCENTRIC_CRS } 2020-05-14 22:56:37 +02:00
Even Rouault a918082e58 BoundCRS::create(): simplify 2020-05-14 20:21:13 +02:00
Even Rouault 056226ee66 createOperations(): optimize BoundCRS to BoundCRS of vertical CRS using the same vertical datum 2020-05-14 20:21:13 +02:00
Even Rouault 5871876450 createOperations(): fix exceptions related to CompoundCRS and BoundCRS 2020-05-14 20:21:13 +02:00
Even Rouault 69ee50ca36 Grid listing from a CoordinateOperation: take into account several grid names separated by comma (e.g. '+grids=foo1.gtx,foo2.gtx') 2020-05-14 18:55:41 +02:00
Even Rouault 70424a9a17 WKT1 parsing: fix parsing of CompoundCRS that has a TOWGS84 for horizontal and PROJ4_GRIDS for vertical (refs #2217) 2020-05-14 18:55:39 +02:00
Even Rouault 11012ebcc9 WKT/PROJJSON parsing: fix BoundCRS/PROJ4_GRIDS handling for vertical component when vertical CRS has non metre unit (fixes #2217) 2020-05-14 18:51:40 +02:00
Even Rouault 672b610dbc Merge pull request #2218 from rouault/wgs84_crs_alias
Database: add a 'WGS84' alias for the EPSG:4326 CRS (fixes #2216)
2020-05-14 16:10:02 +02:00
Even Rouault bf6020eee5 Database: add a 'WGS84' alias for the EPSG:4326 CRS (fixes #2216) 2020-05-14 11:35:26 +02:00
Even Rouault 0c9cf39297 Merge pull request #2215 from rouault/fix_2214
ProjectedCRS::identify(): fix identification of EPSG:3059  (fixes #2214)
2020-05-14 00:25:42 +02:00
Even Rouault 4e9d559d6c ProjectedCRS::identify(): fix identification of EPSG:3059 from 'LKS92_Latvia_TM' name, and other cleanups/improvements (fixes #2214) 2020-05-13 22:06:02 +02:00
Even Rouault 475e7fd9f1 Merge pull request #2213 from rouault/travis_s390x
.travis.yml: add linux_s390x (big endian)
2020-05-12 17:26:24 +02:00
Even Rouault ba8663c59c Merge pull request #2212 from rouault/typo_fixes
scripts/fix_typos.sh: fix URLs to dictionaries, and fix typos spotted
2020-05-12 17:26:12 +02:00
Even Rouault cf4c67c2b2 .travis.yml: add linux_s390x 2020-05-10 20:11:33 +02:00
Even Rouault b7f8a012bf scripts/fix_typos.sh: fix URLs to dictionaries, and fix typos spotted 2020-05-09 18:48:10 +02:00
Even Rouault 72fc6ab0f5 .travis.yml: disable notifications as they are probably more spam than useful [skip appveyor] (#2209) 2020-05-06 20:53:39 +02:00
PROJ-BOTandgithub-actions[bot] de323f98dc resource_file.rst: fix link to crs2crsgrid.py [skip appveyor] (#2208)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2020-05-04 18:50:15 +02:00
Even Rouault c405904001 grids: add support for projected grids for GenericShiftGridSet 2020-05-04 12:55:54 +02:00
Even Rouault f291c50f17 Doc: fix/hacks for compatibility with Breathe 4.17.0 [skip appveyor] (#2204) 2020-05-02 15:22:13 +02:00
Kristian Evers aa054d5cf1 Update NEWS for 7.0.1 2020-05-01 10:44:19 +02:00
Kristian Evers 9a1a00b3c0 Add a few notes to HOWTORELEASE 2020-05-01 10:40:44 +02:00
Kristian Evers e8a1a52098 doc: update download and news pages with new releases 2020-05-01 10:40:01 +02:00
Even Rouault 3cd07b2194 createFromProjString(): handle default parameters of '+krovak +type=crs', and handle +czech correctly (fixes #2199) (#2200)
* createFromProjString(): handle default parameters of '+krovak +type=crs', and handle +czech correctly (fixes #2199)

* Doc: add default values for Krovak
2020-04-28 11:36:29 +02:00
Even Rouault 39cd68f661 pipeline initialization: avoid deep recursion on corrupted PROJ string like https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=21889 2020-04-26 16:47:00 +02:00
Kristian Evers d6b3a52436 Merge pull request #2196 from kbevers/cs2cs-improve-rs-options
Update cs2cs options -r/-s to reflect axis ordering of PROJ >6
2020-04-26 15:11:53 +02:00
Kristian EversandGreg Troxel 8b41154efa Update cs2cs options -r/-s to reflect axis ordering of PROJ >6
Originally proposed by Greg Troxel on the mailing list:
https://lists.osgeo.org/pipermail/proj/2020-April/009597.html

Co-authored-by: Greg Troxel <gdt@lexort.com>
2020-04-26 14:32:39 +02:00
Even Rouault 54a5329036 Merge pull request #2195 from rouault/map_esri_grid_names
Database: map more ESRI grid names
2020-04-26 13:42:47 +02:00
Even Rouault 1750bb74c1 Database: map more ESRI grid names 2020-04-26 12:23:18 +02:00
Even Rouault fa55e657d1 projinfo: do not emit warnings about missing grids in quiet mode 2020-04-25 23:37:34 +02:00
Even Rouault ee355b8619 include/proj/util.hpp: recognized a PROJ_INTERNAL_CPP_NAMESPACE to use osgeo::internalproj namespace 2020-04-25 17:29:35 +02:00
Even Rouault 1c236551a2 Update proj_symbol_rename.h 2020-04-25 17:03:44 +02:00
Even Rouault 9f896faa5c Merge pull request #2193 from rouault/testcpp
postinstall checks: check that we include installed C++ headers (refs #2182)
2020-04-25 16:22:22 +02:00
Even Rouault 104011fe6a postinstall checks: check that we include installed C++ headers (refs #2182) 2020-04-25 15:29:47 +02:00
Even Rouault 4f1a05aa95 Tune support for WKT1_GDAL with netCDF rotated pole formulation. Follow-up to 40466db404 2020-04-24 23:28:08 +02:00
Even Rouault 8aba4d24b7 Doc: fixes for Sphinx 3.0 compat [skip appveyor] (#2191)
Those changes are also compatible with Sphinx 2.x

The use of .. cpp:enumerator::  for a C enum is questionable,
but .. c:member:: no longer works in Sphinx 3 for the value of
a C enum, but .. c:enumerator:: is Sphinx 3 only
( https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#directive-c-enumerator )

Sphinx 3 is also more strict with the use of cross-reference
to C types. It rejects cross-references to things like
`` :c:type:`int` `` since this isn't a type we actually define.
2020-04-24 18:42:05 +02:00
Even Rouault 40466db404 Fix support of WKT1_GDAL with netCDF rotated pole formulation (#2185)
Contributes to fixing issue raised in
https://lists.osgeo.org/pipermail/gdal-dev/2020-April/052003.html
2020-04-23 21:41:00 +02:00
Even Rouault b0e5448982 io.hpp: avoid dependency to proj_json_streaming_writer.hpp (fixes #2182) (#2183) 2020-04-23 19:15:22 +02:00
Even Rouault f5f0efe5eb .travis.yml: switch to bionic to restore i386 builds with gcc8 (fixes #2175)
Credits to @sebastic for his suggestion to try bionic and use aptitude
instead of apt !
2020-04-23 12:10:59 +02:00
Even Rouault db12d334cf .travis.yml: give-up with i386 builds on linux_gcc8 (refs #2175) (#2179)
My conclusion after numerous frustrating trial and error is that
there's something that has changed in the ppa:ubuntu-toolchain-r/test
that conflicts with the i386 packages.
2020-04-23 00:25:42 +02:00
Even Rouault 529a5c098c PROJ4 string import: take into correctly non-metre unit when the string looks like the one for WGS 84 / Pseudo Mercator (fixes https://github.com/OSGeo/gdal/issues/2433) (#2174) 2020-04-22 19:25:07 +02:00
Even Rouault 94aa1fc5ea Merge pull request #2168 from rouault/gie_strict_mode
gie: implement a strict mode with <gie-strict> </gie-strict> (fixes #2158)
2020-04-22 11:26:30 +02:00
Even Rouault 47458427c9 gie: implement a strict mode with <gie-strict> </gie-strict> (fixes #2158)
In that mode:
* All non-comment/decoration lines must start with a valid tag
* Commands split on several lines should be terminated with " \"
2020-04-21 23:05:59 +02:00
Even Rouault 5142bfbf72 Typo fixes in code comments [ci skip] 2020-04-21 20:47:05 +02:00
Even Rouault e493a5c17b Add limited support for non-conformant WKT1 LAS COMPD_CS[] (#2171)
* Allow importing EPSG:{horizontal_code}+{geographic_code} and
  turn it into valid Geographic 3D or Projected 3D CRS internally
* Allow importing WKT1 COMPD_CS[] with above structure
* On an object imported that way, allow exporting to WKT1_GDAL,
  with this non-standard structure of a horizontal CRS + geographic CRS
2020-04-21 20:45:49 +02:00
Even Rouault ea18e39b3b Code formatting fixes 2020-04-21 14:05:20 +02:00
Alan D. Snow 5e3aba396b Moved proj_context_get_url_endpoint & proj_context_get_user_writable_directory to proj.h (#2162)
Fixes #2028
2020-04-20 10:03:41 +02:00
Even Rouault b16b966b74 Merge pull request #2166 from rouault/lcea_ellipsoidal_wkt1_ingestion
Ingestion of WKT1_GDAL: correctly map 'Cylindrical_Equal_Area'
2020-04-19 15:46:43 +02:00
Even Rouault 2998a46d74 Doxyfile: remove TCL_SUBST variable considered obsolete by latest Doxygen 2020-04-19 15:13:45 +02:00
Even Rouault d667cadb72 travis/osx/before_install.sh: 'brew install graphviz' for missing 'dot' program 2020-04-19 14:47:20 +02:00
Even Rouault 605c01d255 Ingestion of WKT1_GDAL: correctly map 'Cylindrical_Equal_Area'
Map it to 'Lambert Cylindrical Equal Area' / EPSG:9835 non-spherical
method, when the ellipsoid is not a sphere. And rationalize the
handling of this for other methods with spherical vs non-spherical formulations
2020-04-19 13:27:43 +02:00
Kristian Evers dca24574f7 Merge pull request #2165 from jidanni/patch-2
Update proj.rst
2020-04-19 13:04:55 +02:00
積丹尼 Dan Jacobson f12bca692d Update proj.rst
See https://github.com/OSGeo/PROJ/pull/2164/
2020-04-19 18:23:34 +08:00
Even Rouault b7f5e7ea75 ellps_shape: catch corner case where es would be set to NaN. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=21761 2020-04-17 20:37:05 +02:00
Kristian Evers 7920a3fed1 Merge pull request #2159 from mwtoews/ci
AppVeyor: use Ninja generator, cache vcpkg installed packages
2020-04-17 20:29:13 +02:00
Even Rouault 8cce7b5702 createFromCoordinateReferenceSystemCodes(): 'optimization' to avoid using C++ exceptions (#2160) 2020-04-17 20:22:33 +02:00
Mike Taves a604ac8cda AppVeyor: use Ninja generator, cache vcpkg [skip travis] 2020-04-17 15:54:16 +12:00
Even Rouault 115c3db6bf Merge pull request #2030 from rouault/auto_sel_of_tmerc_alg
tmerc/utm: add a +algo=auto/evenden_snyder/poder_engsager parameter
2020-04-16 19:57:52 +02:00
Even Rouault ff8258bcdc Merge pull request #2157 from rouault/map_esri_54098
Adams Square II: map ESRI WKT to PROJ string, and implement iterative inverse method
2020-04-16 19:02:14 +02:00
Even Rouault 0cd2912037 Implement an iterative inverse method for +proj=adams_ws2 2020-04-16 17:47:18 +02:00
Even Rouault a8fdadfa3f Map ESRI WKT for Adams_Square_II to +proj=adams_ws2 2020-04-16 12:09:54 +02:00
Even Rouault 000fa21d07 Merge pull request #2155 from rouault/fix_2143
createOperations(): do not remove ballpark transformation if there are only grid based operations, even if they cover the whole area of use (fixes #2143)
2020-04-16 00:44:39 +02:00
Kristian Evers c91966953d Merge pull request #2148 from kbevers/add_adams_projections
Add square conformal projections from libproject
2020-04-15 19:19:32 +02:00
Kristian Evers fd17c604bf gitignore: add latex dir generated by sphinx [skip ci] 2020-04-15 09:31:22 +02:00
Kristian Evers e4bf822158 Add square conformal projections from libproject
This commit adds five new projections to PROJ:

    adams_hemi: Adams Hemisphere in a Square
    adams_wsI:  Adams World in a Square I
    adams_wsII: Adams World in a Square II
    guyou:      Guyou
    peirce_q:   Pierce Quincuncial

The code originates from Gerry Evendens libproject and has been adapted
to work with modern PROJ. To ensure that the modified code works as
intended extensive test data has been created using libproject and
sproj so that no errors occured when porting from libproject to PROJ.
The test data is wrapped in a gie files. All test cases reproduce
results from libproject at the mm level.
2020-04-15 09:10:01 +02:00
Even Rouault 9645697287 tmerc/utm: add a +algo=auto/evenden_snyder/poder_engsager parameter
The default remains +alg=poder_engsager.
This default value can be changed in proj.ini

+algo=auto will use Evenden Synder implementation if the error in
doing so remains below 0.1 mm on Earth-sized ellipsoid
2020-04-15 01:07:18 +02:00
Even Rouault 4be093e9d2 C API: add proj_operation_factory_context_set_allow_ballpark_transformations() 2020-04-15 00:00:11 +02:00
Even Rouault bc703787f1 projinfo: make it use the new C++ method to hide ballpark transformations 2020-04-14 23:59:57 +02:00
Even Rouault eadbb9d620 lookForGridAlternative(): fix bug with Dutch 2008 grids 2020-04-14 23:59:26 +02:00
Even Rouault 1409b00317 createOperations(): do not remove ballpark transformation if there are only grid based operations, even if they cover the whole area of use (fixes #2143) 2020-04-14 23:58:51 +02:00
Martin Raspaud 767a997658 Robinson inverse projection: error on out of domain values (#2151) 2020-04-14 22:09:40 +02:00
Even Rouault 5d94742cd7 Merge pull request #2147 from rouault/speedup_again_fwd_extented_tmerc
Extended tmerc: speed-up forward path by ~5%
2020-04-14 18:13:59 +02:00
Even Rouault 43d11bd830 ProjectedCRS identification: deal with switched 1st/2nd std parallels for LCC_2SP (#2150)
As switching the 2 standard parallels for Lambert Conformal Conic 2 standard
parallels result in a equivalently numerical projection definition, take
that into account when querying the database.
2020-04-14 18:13:35 +02:00
Even Rouault 5b017a8a78 code format fix [skip ci] 2020-04-14 12:51:13 +02:00
Even Rouault 97366a706c Extended tmerc: speed-up forward path by ~5%
Saves a useless sqrt() call
2020-04-13 11:49:56 +02:00
Kristian Evers 031b6ab95e Merge pull request #2144 from kbevers/proj_degree_inoutput
Add proj_degree_input() and proj_degree_output()
2020-04-13 10:32:05 +02:00
Even Rouault b0215f7890 Merge pull request #2146 from rouault/remove_geocent
Remove old geocent.h/.cpp code
2020-04-12 15:46:45 +02:00
Even Rouault ded96dfeb1 sch: simplify code 2020-04-12 15:05:00 +02:00
Kristian Evers ffe2997000 Merge pull request #2145 from rouault/speedup_inv_cart
Inverse cart: speed-up computation by 33%
2020-04-12 13:24:51 +02:00
Kristian Evers 925ae56c40 Add proj_degree_input() and proj_degree_output()
Equivalent to proj_angular_input() and proj_angular_output() but
checking for degree units instead. proj_create_crs_to_crs() rarely, if
ever, returns pipelines that has radians as input or output so using
proj_angular_*() is not a useful check for io units of pipelines.

These two new functions should make life a bit easier for users that
generally store there angular coordinates in radians.

Closes #2027
2020-04-12 12:20:44 +02:00
Even Rouault 67487b574b Remove old geocent.h/.cpp code
Last user, apart from transform.cpp, was the SCH projection. Modify it
to use cart instead.

And move content of geocent.h and .cpp into transform.cpp directly, so
that it can be later wiped up easily.
2020-04-12 00:11:57 +02:00
Even Rouault 78c1df51e0 Inverse cart: speed-up computation by 33%
Saves 2 sincos() and 1 atan2() calls.

With the following bench
```
 #include "proj.h"
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>

int main(int argc, char* argv[])
{
    if( argc != 2 ) {
        fprintf(stderr, "Usage: bench_inv_cart fwd/inv\n");
        exit(1);
    }
    PJ* p = proj_create(0, "+proj=cart");
    const int dir = strcmp(argv[1], "inv") == 0 ? PJ_INV : PJ_FWD;
    PJ_COORD coord;
    if( dir == PJ_FWD )
    {
        coord.xyz.x = 3.14159/2;
        coord.xyz.y = 3.14159/2;
        coord.xyz.z = 100;
    }
    else
    {
        coord.xyz.x = 3e6;
        coord.xyz.y = 3e6;
        coord.xyz.z = 3e6;
    }
    for(int i = 0; i < 10* 1024 * 1024; i++ )
    {
        proj_trans(p, dir, coord);
    }

    proj_destroy(p);
    return 0;
}
```

On Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
Time before: 2.37s
Time after:  1.57s
2020-04-11 19:37:55 +02:00
Even Rouault 21ebdfb89b proj_create(): improve error message in case of PJ* failure instanciation 2020-04-10 20:23:39 +02:00
Even Rouault c2751ebc4f createFromPROJString(): ignore +wktext in '+init=epsg:XXX +wktext' string (refs https://github.com/OSGeo/gdal/issues/2392) 2020-04-09 11:14:18 +02:00
Even Rouault dca4be189c Code formatting fix [skip ci] 2020-04-08 11:49:08 +02:00
Mike Taves 2eac355c73 Test GCC 4.8 and CMake 3.9; resolve a few shadowed declaration warnings 2020-04-07 22:01:10 +02:00
Even Rouault 0853daaeb1 Database: update to EPSG v9.8.9 2020-04-07 19:19:37 +02:00
Even Rouault 942709407e appveyor.yml: reduce to 2 configurations (still testing the same number of variables) [skip travis] (#2133) 2020-04-07 13:06:02 +12:00
Even Rouault 9b6a708df7 Merge pull request #2135 from rouault/fix_master_build_alpine
autoconf build: fix build on Alpine 3.11 where __attribute__((target_clones("fma","default"))) doesn't work for some reason
2020-04-06 20:23:38 +02:00
Even Rouault 5396b72e22 autoconf build: fix build on Alpine 3.11 where __attribute__((target_clones("fma","default"))) doesn't work for some reason 2020-04-06 19:26:40 +02:00
Even Rouault baf9b82254 Merge pull request #2134 from rouault/refactor_mlfn
Move inline code for optimize mlfn from tmerc to mlfn.hpp to avoid code duplication
2020-04-06 19:26:18 +02:00
Even Rouault 1005d96015 travis/osx/before_install.sh: use fixed version of sphinx and breathe to avoid build failure 2020-04-06 15:46:17 +02:00
Even Rouault 60f1efaafb Move inline code for optimize mlfn from tmerc to mlfn.hpp to avoid code duplication 2020-04-06 15:32:33 +02:00
Even Rouault 89d9bfd0f9 glossary.rst: fix recent typo [skip appveyor] 2020-04-04 21:50:51 +02:00
Even Rouault 0ff1190924 Merge pull request #2127 from rouault/projinfo_hide_ballpark
projinfo: add a --hide-ballpark option
2020-04-04 19:27:26 +02:00
Even Rouault 1f792e6b9c hgridshift/vgridshift: defer grid opening when grid has already been opened
Relates to #2115

With the fix of https://github.com/OSGeo/PROJ/pull/2128, transforming between
EPSG:4326+3855 and EPSG:4269+5703 leads to many operations with many grids,
and opening a file handle for each operation saturates the limit of 1024
file handles opened simunalteously. This fix defers grid opening when a
transformation has already been instanciated with the same grid.
2020-04-04 19:23:53 +02:00
Even Rouault 8aab6fd948 createOperations(): improve results of compoundCRS to compoundCRS case (fixes #2115) 2020-04-04 19:23:22 +02:00
Even Rouault 335d9367fd Doc: link projinfo to ballpark transformation term 2020-04-04 13:17:15 +02:00
Even Rouault ef3a387abd Doc: define 'Ballpark transformation' 2020-04-04 13:17:02 +02:00
Even Rouault 99a2d5f248 projinfo: add a --hide-ballpark option 2020-04-04 11:27:59 +02:00
Even Rouault 670eab68f2 Merge pull request #2126 from rouault/createFromUserInput_compoundCRS_from_names
createFromUserInput(): allow compound CRS with the 2 parts given by names, e.g. 'WGS 84 + EGM96 height'
2020-04-04 01:28:11 +02:00
Even Rouault bb770de3b7 createFromUserInput(): allow compound CRS with the 2 parts given by names, e.g. 'WGS 84 + EGM96 height' 2020-04-03 19:50:48 +02:00
Even Rouault 1a8933942c .travis.yml: fix issue with ubuntu-toolchain-r-test source 2020-04-03 14:32:41 +02:00
Even Rouault f4827e0a3b Make sure that importing a Projected 3D CRS from WKT:2019 keeps the base geographic CRS as 3D (fixes #2122) 2020-04-03 10:05:48 +02:00
Even Rouault d2467ab2af ESRI_WKT ingestion: make sure to identify to non-deprecated EPSG entry when possible (fixes #2116) 2020-03-30 23:05:00 +02:00
Even Rouault a837eaf033 Merge pull request #2052 from rouault/speedup_phi2
pj_phi2(): speed-up computation (and thus inverse ellipsoidal Mercator and LCC)
2020-03-30 19:07:10 +02:00
Even Rouault da32ee9459 Database: fix registration of custom entries of grid_transformation_custom.sql for geoid grids (fixes #2112) 2020-03-30 12:57:03 +02:00
Even Rouault 64946ab103 Fix working of Helmert transform between the horizontal part of 2 compoundCRS (fixes #2108) 2020-03-30 00:37:17 +02:00
Even Rouault b84c9d0cb6 Merge pull request #2039 from rouault/speedup_snyder_tmerc
Approximate tmerc (Snyder): speed optimizations
2020-03-29 18:43:37 +02:00
Even Rouault 455e6304d0 Merge pull request #2036 from rouault/speedup_poder_engsager_tmerc
Extended tmerc (Poder/Engsager): speed optimizations
2020-03-29 18:39:44 +02:00
Mike Taves 54fdb90a20 CMake: prefer to use use PROJ_SOURCE_DIR and PROJ_BINARY_DIR (#2100)
* Use instead of CMAKE_SOURCE_DIR and CMAKE_BINARY_DIR
* Also PROJECT_SOURCE_DIR and PROJECT_BINARY_DIR, which are similar
* Set properties with a list variable rather than a long line
* Correction to 'proj_test_set_properties' function, rename ENVIRONMENT:
  - PROJ_IGNORE_USER_WRITABLE_DIRECTORY     (ignored)
  - PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY  (used by filemanager.cpp)
2020-03-28 12:44:30 +13:00
Even Rouault 238f48fb7c Fix identification of projected CRS whose name is close but not strictly equal to a ESRI alias (fixes #2099) 2020-03-27 22:36:08 +01:00
Pedro Venancio ec206a4d50 Add entries in grid_alternatives for Portugal grids coming from ESRI entries (#2102)
Fixes #2096
2020-03-27 15:34:08 +01:00
Martin Dobias 554a7976b0 Use jtsk03-jtsk horizontal grid from CDN 2020-03-26 23:16:18 +01:00
Even Rouault fbc654ab0c EngineeringCRS: when exporting to WKT1_GDAL, output unit and axis (fixes https://github.com/OSGeo/gdal/issues/2347) 2020-03-25 15:15:29 +01:00
Even Rouault 23d2941ef3 ESRI WKT import / identification: special case for NAD_1983_HARN_StatePlane_Colorado_North_FIPS_0501 with Foot_US unit (fixes #2086) 2020-03-24 10:18:17 +01:00
Even Rouault 9af705d630 proj_get_suggested_operation(): extra fix to behave similarly to proj_create_crs_to_crs_from_pj() 2020-03-23 19:26:56 +01:00
Mike Taves b76acd354c Add post-install checks for CMake and Autotools/pkg-config (#2077)
* Checks CMake's find_package(PROJ) and find_package(PROJ4)
* Checks pkg-config used with a Makefile (Linux and macOS only)
* Use proj.h / libproj with a simple 'testappprojinfo'
2020-03-21 14:16:00 +13:00
Even Rouault 56b0d6c506 Merge pull request #2085 from rouault/fix_proj_get_suggested_operation_with_operations_without_area_of_use
proj_get_suggested_operation(): fix when there are only operations without area of use
2020-03-20 09:36:41 +01:00
Even Rouault 5aa3d9fce2 proj_get_suggested_operation(): fix when there are only operations without area of use 2020-03-19 23:17:59 +01:00
Mike Taves 0c5802e0f8 CMake: fix bug with find_package(PROJ) with macOS 2020-03-18 13:19:39 +01:00
Even Rouault 7bb5d00b21 cs2cs: don't require +to for '{source_crs} {target_crs} filename...' syntax (fixes #2012) 2020-03-18 09:35:16 +01:00
Even Rouault 0d630d411a Merge pull request #2079 from rouault/deprecate_proj_list_angular_units
Deprecate proj_list_angular_units(). Follow-up of https://github.com/OSGeo/PROJ/pull/2065
2020-03-17 16:27:02 +01:00
Even Rouault ac37a9127a Deprecate proj_list_angular_units(). Follow-up of https://github.com/OSGeo/PROJ/pull/2065 2020-03-17 12:03:09 +01:00
Kristian EversandMike Taves 781dedec1f Align install.rst with current version (#2075)
Using {PROJVERSION} and {PROJDATAVERSION} substitutes the macro for the current
version numbers of PROJ and PROJ-data.

Rephrased a few sections regarding grid packages.

Closes #2072

Co-authored-by: Mike Taves <mwtoews@gmail.com>
2020-03-17 10:21:56 +01:00
Even Rouault 1707090212 Merge pull request #2068 from rouault/add_proj_get_suggested_operation
Add proj_get_suggested_operation()
2020-03-16 17:56:42 +01:00
Even Rouault 6cfc2521d6 Merge branch 'master' into add_proj_get_suggested_operation 2020-03-16 17:56:29 +01:00
Even Rouault 175cbad0a7 Merge pull request #2065 from rouault/add_proj_get_units_from_database
Add proj_get_units_from_database() (fixes #2004)
2020-03-16 17:55:36 +01:00
Even Rouault 78eaa34a48 Fix build with libtiff master (libtiff > 4.1.0) 2020-03-15 11:51:00 +01:00
Even Rouault 2247841879 Tag proj_list_units() as deprecated 2020-03-13 11:45:47 +01:00
Even Rouault f0d6b64fee Add proj_get_suggested_operation()
Return the index of the operation that would be the most appropriate to
transform the specified coordinates.

This operation may use resources that are not locally available, depending
on the search criteria used by proj_create_operations().

This could be done by using proj_create_operations() with a punctual bounding
box, but this function is faster when one needs to evaluate on many points
with the same (source_crs, target_crs) tuple.
2020-03-13 08:45:56 +01:00
Mike Taves d8835f1288 Autotools/pkg-conf: Define datarootdir 2020-03-12 23:46:34 +01:00
Even Rouault 35425763e7 Add proj_get_units_from_database() (fixes #2004) 2020-03-12 19:40:35 +01:00
Even Rouault 66f81bec4a Fix build with gcc 4.8.5 (fixes #2062) 2020-03-12 19:38:24 +01:00
Even Rouault ca3caf0e97 Database: register grids for New Caledonia added per https://github.com/OSGeo/PROJ-data/pull/16 2020-03-12 11:05:13 +01:00
B R S Recht 12a0b2483c Add note about orientation of control points 2020-03-12 11:03:24 +01:00
Even Rouault 3a69b7be2f ProjectedCRS::identify(): tune it to better work with ESRI WKT representation of EPSG:2193
Adresses https://github.com/OSGeo/gdal/issues/2303 by raising the
identification confidence from 25% to 90% (90% means equivalent for
all purposes, but name not strictly the EPSG official one)
2020-03-11 18:16:36 +01:00
Even Rouault afa573f464 .cirrus.yml: disable ccache as cache uploading can be super slow 2020-03-11 18:16:20 +01:00
Even Rouault 94defd1a72 pj_phi2(): speed-up computation (and thus inverse ellipsoidal Mercator and LCC)
This does not change the numeric values returned by the method,
as far as I could see on a few samplings.

The tricks used save a call to sin() and atan() at each iteration.

This directly affects speed of inverse Mercator and LCC (among others),
in their ellipsoidal formulation.

Timings on inverse Mercator show a 31% speed-up at mid-latitudes
where pj_phi2() needs 5 iterations, and 24% at latitudes close to 0 or
90deg where it needs one iteration.
2020-03-11 11:18:23 +01:00
Even Rouault aa71df059f Doc: use 'ellipsoidal' to refer to the ellipsoidal formulation (to be opposed to the spherical one)
Instead of 'elliptical'.
Was suggested by @cffk in https://github.com/OSGeo/PROJ/pull/2030#issuecomment-596132341

An elliptical projection is a projection whose global shape fits inside an
ellipsoid, like Mollweide. At least according to
https://www.merriam-webster.com/dictionary/elliptical%20projection
and
https://en.wikipedia.org/wiki/Mollweide_projection
2020-03-11 09:22:32 +01:00
Even Rouault ba67e2c86d data/Makefile.am: remove bashism 2020-03-10 21:52:35 +01:00
Even Rouault dc4acc001e utm/ups: make sure to set errno to PJD_ERR_ELLIPSOID_USE_REQUIRED if es==0
ENOMEM was wrongly set after setting PJD_ERR_ELLIPSOID_USE_REQUIRED

Note: it is a bit strange to forbid the pure spherical case whereas the
maths would allow it. I presume this is due to the typical usage of those
methods.
2020-03-10 18:01:43 +01:00
Colin Doig fc1a72314c fix documentation for proj_trans_generic(), see https://github.com/OSGeo/PROJ/issues/2032 (#2037) 2020-03-10 12:17:22 +01:00
Even Rouault 4b606565b9 Merge pull request #2040 from rouault/esri_map_Transverse_Mercator_Complex
Map ESRI Transverse_Mercator_Complex to Transverse Mercator
2020-03-10 12:16:08 +01:00
Even Rouault 746c8aa17a Map ESRI Transverse_Mercator_Complex to Transverse Mercator
According to https://gis.stackexchange.com/questions/226679/complex-utm-projection
it is highly likely that Transverse_Mercator_Complex corresponds to our
extended/enhanced/Poder-Engsager transverse mercator method (etmerc), or something
similarly precise. So we can map that to the standard Transverse Mercator
method, since etmerc is used for it.
2020-03-09 23:17:11 +01:00
Even Rouault d9b1db0ff1 Approximate tmerc (Snyder): speed optimizations
fwd: 7% faster on Core-i7@2.6GHz (with FMA triggered), 22% faster on GCE Xeon@2GHz (with FMA)
inv: 31% faster on Core-i7@2.6GHz (with FMA triggered), 60% faster on GCE Xeon@2GHz (with FMA)

The optimizations consists in different things:
- optionaly use the FMA (Fused Multiply Addition) instruction set with gcc >= 6.
  Binaries are generated with the standard instruction set (SSE/SSE2),
  and with one variant with FMA, and the appropriate version is selected automatically
  at runtime. This gives a modest speedup, but measurable. The speedup is more
  obvious on lower clocked CPU.
- inline mlfn and inv_mlfn
- for inv_mlfn avoid recomputation of sin()/cos() at each iteration stage,
  by observing that the argument changes in modest way at each iteration,
  and using approximation of sin()/cos(). The differences due to that approximation
  are way below the 1e-11 tolerance threshold.

Different in results are neglectable (only found in areas where the approximations
of the Snyder formulas are already no longer valid)

Before:
$ echo 8e5 9e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx |  src/proj -d 12 +proj=utm +zone=31 +approx
799997.896522093331	8999999.520601103082
$ echo 8e5 5e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx |  src/proj -d 12 +proj=utm +zone=31 +approx
800000.000007762224	4999999.999971268699
$ echo 18e5 9e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx |  src/proj -d 12 +proj=utm +zone=31 +approx
1079182.990696100984	8661150.574729491025
$ echo 18e5 5e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx |  src/proj -d 12 +proj=utm +zone=31 +approx
1799997.510861013783	4999999.567328464240

After:
$ echo 8e5 9e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx |  src/proj -d 12 +proj=utm +zone=31 +approx
799997.896522093331	8999999.520601103082
$ echo 8e5 5e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx |  src/proj -d 12 +proj=utm +zone=31 +approx
800000.000007762224	4999999.999971268699
$ echo 18e5 9e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx |  src/proj -d 12 +proj=utm +zone=31 +approx
1079182.990696124267	8661150.574729502201
$ echo 18e5 5e6 | src/proj -d 12 +proj=utm +zone=31 -I +approx |  src/proj -d 12 +proj=utm +zone=31 +approx
1799997.510861013783	4999999.567328464240
2020-03-09 22:51:55 +01:00
Even Rouault d0d422dffc Extended tmerc (Poder/Engsager): speed optimizations
fwd: 52% faster on Core-i7@2.6GHz, 40% faster on GCE Xeon@2GHz
inv: 24% faster on Core-i7@2.6GHz, 36% faster on GCE Xeon@2GHz

Those speed-ups are obtained due to elimination of a number of
transcendental functions (atan, sincos, cosh, sinh), through the
use of usual trigonometric/hyperbolic formulas.

The numeric results before/after seem identical at worse up to
14 decimal digits, which is way beyond the apparent accuracy of the
computations

On a point, far from central meridian, where round-tripping is not so great:

Before:
echo "81 1" | src/proj -d 18 +proj=utm +zone=31 | src/proj -d 18 -I +proj=utm +zone=31
80.999994286593448578	0.999987970918421620

After:
$ echo "81 1" | src/proj -d 18 +proj=utm +zone=31 | src/proj -d 18 -I +proj=utm +zone=31
80.999994286593448578	0.999987970918422175

The benchmarking program used is:
```
 #include "proj.h"
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>

int main(int argc, char* argv[])
{
    if( argc != 3 ) {
        fprintf(stderr, "Usage: bench quoted_proj_string fwd/inv\n");
        exit(1);
    }
    PJ* p = proj_create(0, argv[1]);
    const int dir = strcmp(argv[2], "inv") == 0 ? PJ_INV : PJ_FWD;
    PJ_COORD coord;
    if( dir == PJ_FWD )
    {
        coord.xy.x = 0.5; // rad
        coord.xy.y = 0.5; // rad
    }
    else
    {
        coord.xy.x = 450000; // m
        coord.xy.y = 5000000; // m
    }
    for(int i = 0; i < 40 * 1000* 1000; i++)
        proj_trans(p, dir, coord);
    proj_destroy(p);
    return 0;
}
```
2020-03-09 15:12:12 +01:00
Even Rouault 13782b1997 Merge pull request #2031 from snowman2/appveyor
Updated appveyor to not copy DLL & update existing vcpkg
2020-03-09 11:24:01 +01:00
Kristian Evers 46c47e9adf Merge pull request #2025 from rouault/projections_remove_assignments_in_expressions
src/projections/: remove assignments in expression and multiple statements per line
2020-03-09 10:25:08 +01:00
snowman2 f3698185e0 Updated appveyor to not copy DLL & update existing vcpkg 2020-03-08 20:27:25 -05:00
Even Rouault 60d3df673c src/projections/: remove assignments in expression and multiple statements per line
Should hopefully result in no change in results, and hopefully more
readable code...
2020-03-08 19:58:35 +01:00
Even Rouault 38ec5e662a proj_internal.h: fix typo in macro name due to bad copy&paste. (No functional impact) 2020-03-06 19:08:55 +01:00
Even Rouault c0e1213b09 proj.ini: typo fix in comment [ci skip] 2020-03-06 18:35:29 +01:00
Even Rouault 5fff613d07 Typo fixes identified by scripts/fix_typos.sh 2020-03-06 18:33:44 +01:00
Even Rouault 93da0bcaa0 Merge pull request #2024 from rouault/add_support_for_WKT1_ESRI_VERTCS
WKT import/export: add support for WKT1_ESRI VERTCS syntax
2020-03-06 18:28:30 +01:00
Even Rouault 6512ef2427 WKT import/export: add support for WKT1_ESRI VERTCS syntax 2020-03-06 14:11:31 +01:00
Kristian Evers 2dbca196a0 Merge pull request #2023 from nyalldawson/update_notes
Add some more missing methods and notes to esri projection mapping
2020-03-06 08:13:45 +01:00
Nyall Dawson 9a35f3dad4 Add some more missing methods and notes to esri projection mapping 2020-03-06 10:17:36 +10:00
Even Rouault b8db250028 ESRI WKT: map Mercator_Variant_A, Mercator_Variant_C and Transverse_Cylindrical_Equal_Area projections (#2020)
* Add mapping of ESRI projection methods Mercator_Variant_A, Mercator_Variant_C
and Transverse_Cylindrical_Equal_Area
* Add a few notes about missing mappings
2020-03-05 08:20:19 +01:00
Kristian Evers 341e0e7eb4 Remove occurences of deprecated PROJ.4 syntax
+no_defs and +datum has no effect on the behaviour of proj, so can be
left out in these examples in the docs. +no_defs in rare occasions would
have had an effect in older PROJ versions but not from PROJ 6 and
onwards. +datum has ever only been honoured by cs2cs and pj_transform().

Fixes #2017
2020-03-05 00:18:01 +01:00
Even Rouault c1fbdd88b3 Merge pull request #1986 from nyalldawson/behrman
Map the Behrman projection to cae when converting ESRI CRSes
2020-03-04 14:35:18 +01:00
Nyall Dawson cb64ce2622 Add missing tests for ESRI projection method conversion 2020-03-04 20:51:44 +10:00
Nyall Dawson d49ce528bb Add capability to force a fixed value for a non-specified CRS component
while mapping ESRI projections, and map the Behrman projection to
cae with lat_ts=30, lon_0=0
2020-03-04 19:01:56 +10:00
Mike Taves 72f5bb21ae Document Autotools and CMake configure options (#2010) 2020-03-04 21:20:30 +13:00
Kristian Evers 93d3af6aec Update README with info on PROJ-data (#2015) [ci skip]
Removes section about proj-datumgrid-* packages in favour for a section
about the PROJ-data package and the CDN.
2020-03-04 00:37:47 +01:00
Even Rouault b2ca8e5f6b createUnitOfMeasure(): use full double resolution for the conversion factor (#2011)
Fixes https://github.com/OSGeo/gdal/issues/2290 where it was found that
PROJ returned value for conversion factor of US Survey Foot unit wasn't
at the maximum resolution, but only accurate to 15 significant digits.
2020-03-03 19:42:44 +01:00
Kristian Evers 57c12c27d2 Merge pull request #2009 from OSGeo/cmake-rpath
Follow PDAL's CMake RPATH strategy
2020-03-03 19:08:31 +01:00
Howard Butler 6f71d3f7d1 cmakelint changes as requested 2020-03-03 08:22:17 -06:00
Chris Mayo bda0d15ede Fix download link for proj-data 1.0 2020-03-03 07:50:12 +01:00
Howard Butler b465415cff Follow PDAL's CMake RPATH strategy 2020-03-02 13:44:23 -06:00
Even Rouault 404c73a22e Fix bad copy&replace pattern on HEALPix and rHEALPix projection names. Affects output of 'proj -l' 2020-03-02 18:56:09 +01:00
Kristian Evers 0bcf2b5aaa Update github_version in sphinx config 2020-03-01 11:48:37 +01:00
Kristian Evers 79abba9fa9 Bump version numbers in preparation for 7.1.0 2020-03-01 11:47:40 +01:00
Kristian Evers ccbfd15798 Update docs in preparation for 7.0.0 release 2020-03-01 11:23:13 +01:00
Even Rouault 10a8d5c984 createOperations(): fix wrong pipeline generation with CRS that has +nadgrids= and +pm= (#1998)
Fixes issue reported at
https://lists.osgeo.org/pipermail/gdal-dev/2020-February/051749.html

The generated pipeline assumes that the input coordinates for the grid transformation
were related to the non-Greenwich based datum, so we must compensate for that and
add logic to go back to Greenwich.
2020-02-29 13:24:58 +01:00
Even Rouault 1f3a571d32 Avoid crash when running against SQLite3 binary built with -DSQLITE_OMIT_AUTOINIT (fixes #1932) (#1997) 2020-02-28 17:41:45 +01:00
Even Rouault e81f938f7c Formatting fix 2020-02-28 16:05:56 +01:00
Even Rouault fb87c671f1 Fix warnings of latest cppcheck master 2020-02-27 23:35:36 +01:00
Chatziargyriou Eleftheria f3561e5749 Doc: Add missing projection property tables (#1992) 2020-02-27 19:28:17 +01:00
Even Rouault a9bc6e5fb0 Make tests independent of proj-datumgrid
Fixes #1984

- Copy BETA2007.gsb, MD, alaska, conus, ntf_r93.gsb, ntv1_can.dat grids
  from proj-datumgrid to data/tests.
- Replace a couple uses of nzgd2kgrid0005.gsb in tests by ntf_r93.gsb
- Add downsampled/subsetted versions of egm96_15.gtx as tests/egm96_15_downsampled.gtx
  and ntv2_0.gsb as tests/ntv2_0_downsampled.gsb
  This results in a few changes in expected results
- Simpify travis/install.sh due to less configurations to test

This results in a hopefully acceptable increase of the proj-X.Y.Z.tar.gz
from 2.9 to 5.3 MB
2020-02-27 13:19:13 +01:00
Even Rouault 8d665f20a7 proj_create_crs_to_crs(): avoid potential reprojection failures when reprojecting area of use to source and target CRS
Was found with https://github.com/OSGeo/PROJ/pull/1989
when using cs2cs EPSG:4937 EPSG:31258+5778
- We do not need to do vertical transformation in that context. This failed here
  because the Austrian grids have nodata value outside of the shape of Austria, so
  the edges of the grids are mostly nodata values.
- And we should avoid grid-based transformations too.
2020-02-27 12:19:34 +01:00
Even Rouault dbf5f363ae Merge pull request #1989 from rouault/register_austrian_height_grids
Database: register 4 height Austrian grids from https://github.com/OSGeo/PROJ-data/pull/13 + handle 'Vertical Offset by Grid Interpolation (BEV AT)' method
2020-02-27 12:19:19 +01:00
Even Rouault 3a38f50618 Merge pull request #1987 from nyalldawson/flat_polar_quartic
Support conversion of Flat_Polar_Quartic projection method
2020-02-27 12:19:01 +01:00
Even Rouault 250e4a222b Database: register 4 height Austrian grids from https://github.com/OSGeo/PROJ-data/pull/13 + handle 'Vertical Offset by Grid Interpolation (BEV AT)' method 2020-02-26 16:23:39 +01:00
Even Rouault 1f8541d6f4 Database: update to EPSG v9.8.7 2020-02-26 14:04:09 +01:00
Nyall Dawson 6ed13a5f8e Support conversion of Flat_Polar_Quartic projection method 2020-02-26 19:03:51 +10:00
Even Rouault 414ae2699c Merge pull request #1983 from rouault/fix_1982
createOperations(): be robust to a GeographicCRS having a wrong ID attached to it (fixes #1982)
2020-02-25 16:27:10 +01:00
Even Rouault 5c79670110 createOperations(): be robust to a GeographicCRS having a wrong ID attached to it (fixes #1982) 2020-02-25 15:32:28 +01:00
Even Rouault 1ce2cc80a4 CompoundCRS::create(): reject combinations of components not allowed by ISO 19111 2020-02-25 00:19:19 +01:00
Even Rouault 254bead44a createOperations(): keep height/z value in Helmert transform between 3D CRS
This is the consequence of a private email thread between me, Joel Haasdyk and
Roger Lott. I initially raised that the GDA2020 technical manual advertized the
Helmert transformation between GDA94 to GDA2020 to be a 3D one, with example of
a test point where ellipsoidal heights where modified. It appears this was intended.

The corresponding record in EPSG uses the EPSG:9607 "Coordinate Frame rotation (geog2D domain)"
method between the 2D geographic CRS of GDA94 and GDA2020. From the email exchange,
it appears that there's a lot of legacy explaining that Helmert transformations
are registered only between 2D CRS, which doesn't mean that when applied to the
corresponding 3D CRS, the change in ellipsoidal height should be discarded. Related
to that, the EPSG database, while it has methods flagged "(geog3D domain)" never uses them.

So... this changeset slightly ammends PROJ behaviour to ignore the "(geog2D domain)" flag,
but only consider the dimensionality of the source & target CRS. However, for a EPSG
transformation, those are always 2D CRS, hence introduce the use3DHelmert_ hack when
we know that ultimately the 'real' source & target CRS are 3D.

I wouldn't be surprised if in more complex pipeline the above logic would be lacking.
But it fixes at least simple transformations.
2020-02-24 20:37:49 +01:00
Even Rouault fe9e276d93 pj_hgrid_apply(): change error code when no grid match to PJD_ERR_GRID_AREA (refs #1973) 2020-02-24 12:59:13 +01:00
Nyall Dawson 004116f53a Fix mapping of Vertical_Near_Side_Perspective (fixes #1965) 2020-02-24 12:43:00 +01:00
Even Rouault 25f8c03774 Expose proj_context_is_network_enabled() in C API 2020-02-24 10:32:24 +01:00
Even Rouault 57595327b2 Merge pull request #1968 from wonder-sk/slovakia-jtsk-ntv2-master
Add alternative grid for JTSK - JTSK03 transform (EPSG:8364)
2020-02-24 08:34:14 +01:00
Martin Dobias 845f700335 Add alternative grid for JTSK - JTSK03 transform (EPSG:8364)
The definition of EPSG:8364 uses NADCON method for horizontal grid (.las/.los files)
but this format is not supported by PROJ.

UGKK (Slovak Geodetic and Cartographic Institute) provides NADCON .las/.los files here:
https://www.geoportal.sk/files/gz/slovakia_jtsk03_to_jtsk.zip

Additionally UGKK also provides the same grid file in NTv2 format:
https://www.geoportal.sk/files/gz/slovakia_jtsk03_to_jtsk_ntv2.zip

So let's add the NTv2 file the grid_alternatives table so that PROJ can automatically pick it up...
2020-02-23 21:46:47 +01:00
Mike Taves 7b873e8353 Merge pull request #1962 from mwtoews/shared
CMake: rename BUILD_LIBPROJ_SHARED to BUILD_SHARED_LIBS
2020-02-22 13:35:36 +13:00
Even Rouault f57a390398 Doc: advertize lat_0 for proj=nsper 2020-02-21 13:33:36 +01:00
Nyall Dawson 6aedfb204a Add support for creating coordinates operations using Compact Miller,
Times and Vertical Near Side Perspective projections
2020-02-21 11:26:55 +01:00
Nyall Dawson 0bc2ae258d Add support for creating coordinates operations using Natural Earth/Natural Earth 2 projection 2020-02-21 11:26:55 +01:00
Nyall Dawson dbe6dcf247 Add support for creating coordinates operations using ESRI:53079 (patterson) CRS 2020-02-21 11:26:55 +01:00
Even Rouault ee0ba2d2e6 test_network.cpp: fix test failures on big endian archs (fixes #1958) 2020-02-21 11:23:43 +01:00
Mike Taves 3eac8d5694 Switch build configuration logic from DISABLE_TIFF to ENABLE_TIFF
* Autotools interface should be the same, but different ./configure --help
* For CMake, the option should be -DENABLE_TIFF=NO (default is YES)
* Use TIFF_ENABLED and CURL_ENABLED variables, based on option and outcome
* Reword some messages and add hints
* Move -DTIFF_ENABLED and -DCURL_ENABLED from global add_definitions()
  to target_compile_definitions(), which is recommended practice
* Minor spelling and style consistency around SQLITE_VERSION check
2020-02-21 11:23:15 +01:00
Mike Taves 2336ac77b5 CMake: rename BUILD_LIBPROJ_SHARED to BUILD_SHARED_LIBS
* Deprecate BUILD_LIBPROJ_SHARED, but still use it as an alias for now
* Rename BUILD_LIBPROJ_SHARED_DEFAULT to BUILD_SHARED_LIBS_DEFAULT
* Keep previous defaults (UNIX as shared and Windows as static)
* Remove PROJ_LIBRARY_TYPE, since add_library() uses BUILD_SHARED_LIBS
2020-02-21 22:43:30 +13:00
Even Rouault 86530f3146 Fix wrong byte-swapping for NTv2 grids affecting master after RFC4 work (fixes #1938)
And add testing of both little-endian and big-endian NTv2 files
2020-02-20 09:57:45 +01:00
Mike Taves deb3ccf5bb Add/update description for pkg-config and CMake
Ignore WARNING:  'proj.pc.in' seems to ignore the --datarootdir setting
2020-02-20 09:57:08 +01:00
Mike Taves b72d25a32d CMake: rename ENABLE_LTO to ENABLE_IPO
* Deprecate ENABLE_LTO, but still use it as an alias for now
* Plan to remove ENABLE_LTO by PROJ 8.0
* Use CMake 3.9 logic to check feature and set property
2020-02-20 09:48:16 +01:00
Kristian Evers b80a7cd2e8 appveyor: Use sqlite tool from vcpkg
This follows the install guide for Windows using vcpkg.
2020-02-20 09:46:27 +01:00
Even Rouault d7a16efe71 validateParameters(): fix false-positive warning on Equidistant Cylindrical
We required the 'Latitude of natural origin' parameter to be present,
but it is only a GDAL/PROJ specific thing, not a EPSG one.
2020-02-19 18:13:02 +01:00
Even Rouault 71e6438ba2 DatabaseContext::lookForGridInfo(): use also old_proj_grid_name for lookups (fixes #1942) 2020-02-19 14:27:19 +01:00
Even Rouault 9022252da3 test: enhance testing of proj_grid_get_info_from_database 2020-02-18 20:17:52 +01:00
Jeroen Ooms 409f8b0e5d Fix static linking (due to typo in pc) 2020-02-18 16:22:08 +01:00
Even Rouault 11c50c0427 Merge pull request #1934 from sebastic/read_grid_from_user_writable_directory
Don't assume $HOME to be writable.
2020-02-18 13:18:24 +01:00
Bas Couwenberg eea42eaae6 Don't assume $HOME to be writable.
The read_grid_from_user_writable_directory test fails otherwise.

Fixes: #1933
2020-02-18 08:11:02 +01:00
Kristian Evers 8896b2a26c Remove man3 Makefile from configure.ac 2020-02-17 21:17:56 +01:00
Kristian Evers fba4148dd4 Update CMake setup with new projsync man file and removed man3 files 2020-02-17 21:15:06 +01:00
Kristian Evers 4fe8a81ca9 Update man-pages from Sphinx-docs 2020-02-17 21:03:16 +01:00
Kristian Evers 6f60d8e168 Update NEWS for 7.0.0 release 2020-02-17 21:03:07 +01:00
Kristian Evers 689dca11da Update ABI version numbers for 7.0.0 release 2020-02-17 21:02:57 +01:00
Kristian Evers c4878eac38 Make sure that projsync man file is packaged correctly 2020-02-17 21:02:48 +01:00
Kristian Evers 2d98931a88 Remove man3 files
Closes #1258
2020-02-17 21:02:41 +01:00
Even Rouault e4c9c26ee7 Doc: update with 6.3.1 release [skip appveyor] 2020-02-13 16:29:00 +01:00
Even Rouault 02e6715dd5 NEWS: update with 6.3.1 [ci skip] 2020-02-13 16:28:50 +01:00
Kristian Evers 89175e2ec1 Merge pull request #1931 from calumr/patch-1
Don't print version when using PROJ4 from cmake
2020-02-13 11:37:16 +01:00
Calum Robinson fea2ff9cda Don't print version when using PROJ4 from cmake
This will declutter cmake output for PROJ4 users
2020-02-13 09:30:59 +00:00
Kristian Evers 949171a6e1 Merge pull request #1923 from mwtoews/cmake-output
CMake: simplify message functions
2020-02-12 19:47:29 +01:00
Kristian Evers f9bf35c0ae Merge pull request #1928 from sebastic/make-readme
Create README from README.md when calling `make`.
2020-02-12 14:51:17 +01:00
Bas Couwenberg 43a91ce0a8 Create README from README.md when calling make.
The README file was only generated when calling `make README`.

Closes: #1927
2020-02-12 12:53:46 +01:00
Even Rouault 595aafef26 Merge pull request #1921 from rouault/pj_get_relative_share_proj
Use relative directory to locate PROJ resource files.
2020-02-11 18:50:53 +01:00
Even Rouault 29583196df Use relative directory to locate PROJ resource files.
Fixes #1490

This is an extension of the Window-specific logic added recently to
Unix builds. This reuses parts of proposed past commit
https://github.com/OSGeo/PROJ/pull/1517/commits/82a07e51c6e24ddb936d131ababe29f1ac36ef14
(credits to @abellgithub)
2020-02-11 15:48:05 +01:00
Kristian Evers a10b5edfad Merge pull request #1920 from rouault/travis_i386
Travis: change linux_gcc7 / x86_64 config to linux_gcc8 / i386
2020-02-11 15:26:32 +01:00
Mike Taves 5179435614 CMake: simplify message functions
* Remove colormsg(); just use message()
* Rename boost_report_value() with print_variable()
2020-02-11 11:09:00 +13:00
Even Rouault 3767adabe2 PROJStringParser::Private::buildProjectedCRS(): avoid (harmless) division by zero in super odd case with corrupted PROJ string. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=20624 2020-02-10 16:19:53 +01:00
Even Rouault 188dcf2cb9 HOWTO-RELEASE: update to add a check for version numbers [ci skip] 2020-02-10 11:38:11 +01:00
Even Rouault 3c1ab5e738 HOWTO-RELEASE: fix a few typos [ci skip] 2020-02-10 11:34:16 +01:00
Even Rouault d1d6bc3bbf README.md: add badges for Cirrus & Docker
[ci skip]
2020-02-09 18:18:42 +01:00
Even Rouault 8c9ed021c7 Dockerfile: make it non-git dependent, so that it can work in branches, and Docker Hub builds 2020-02-09 17:29:20 +01:00
Even Rouault 40ca9b0a74 Dockerfile: fix build with tiff&curl dependencies, and use CDN TIFF files 2020-02-09 16:59:02 +01:00
Even Rouault 1c3678b636 read_vgrid_value(): avoid assertion on huge latitude. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=20592. master only 2020-02-09 03:47:13 +01:00
Charles Karney 06d0a4c835 Add comments to vandg.cpp to tie implementation to Snyder (1987). 2020-02-08 14:33:06 -05:00
Even Rouault 888e1b1553 Travis: do only builds that test with all grids on -O2 builds that are slower to build 2020-02-08 16:34:52 +01:00
Even Rouault 5bb1920a5b Travis: update linux_gcc7 to linux_gcc8 2020-02-08 15:40:06 +01:00
Even Rouault 2d07a8dc0d Travis: modify linux_gcc7 to run i386 2020-02-08 15:36:30 +01:00
Even Rouault bec20afdfa travis/install.sh: fix wrong setting of CXXFLAGS 2020-02-08 15:36:18 +01:00
Even Rouault dfa29f9f85 Travis: restrict symbol comparison to x86_64 builds 2020-02-08 15:34:28 +01:00
Kristian Evers ead6a66d98 Merge pull request #1917 from rouault/fix_test_issues_on_i386
Fix test issues on i386
2020-02-08 10:17:18 +01:00
Even Rouault b6f442db6c Merge pull request #1918 from rouault/update_travis_csa
Travis: update CLang Static Analyzer to CLang 9
2020-02-07 21:10:42 +01:00
Kristian Evers ab68913e5b Merge pull request #1912 from kbevers/fix-1906
cart: Avoid discontinuity at poles in the inverse case (partial fix to #1906)
2020-02-07 11:53:37 +01:00
Even Rouault 7001c21828 Fix numerical precision issues in vandg and robin
Refs #1906
Fix remaining issues of https://github.com/OSGeo/PROJ/issues/1906#issuecomment-583168348
as found with gcc 8.2.0 -m32 -O2
2020-02-07 11:08:43 +01:00
Even Rouault 19bfb4987a Fix test issues on i386
Fix a few issues of #1906 found when running the test suite
on Ubuntu 16.04 with gcc 5.5 -m32. When applied on top of
the fix of #1912, make check succeeds
2020-02-07 00:21:25 +01:00
Even Rouault c8f8a5a6c5 Fix cppcheck warnings and make it work with latest cppcheck 1.90 2020-02-06 23:33:38 +01:00
Even Rouault 9e1420309c Travis: update CLang Static Analyzer to CLang 9
Enable optional checkers
Fix two false positives
2020-02-06 23:33:15 +01:00
Kristian Evers 55112033a4 cart: Avoid discontinuity at poles in the inverse case
This should avoid issues with numerical stability as uncovered in
https://github.com/OSGeo/PROJ/issues/1906.

Practically speaking this change isn't going to affect real life
scenarios since the position of the center of the Earth is rarely
expressed in geodetic coordinates.
2020-02-06 17:53:11 +01:00
Even Rouault bd6148db5f geodetictiffgrids.rst: fix links
[skip appveyor]
2020-02-06 15:47:38 +01:00
Even Rouault c2f4d1d172 Merge pull request #1915 from rouault/fix_1911
Fix identification of ESRI-style datum names starting with D_ but without alias
2020-02-06 13:44:13 +01:00
Even Rouault e9b5f63945 Merge pull request #1914 from rouault/fix_1913
Fix performance issue, affecting projinfo EPSG:7842
2020-02-06 13:43:59 +01:00
Even Rouault 72925acb84 Fix identification of ESRI-style datum names starting with D_ but without alias
Fixes #1911
2020-02-05 19:59:00 +01:00
Even Rouault aa2545bebd Fix performance issue, affecting projinfo EPSG:7842
Fixes #1913

AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates() issued
a complex SQL query that pushes the SQLite3 query plan optimizer to its limits.
Was working reasonably with sqlite 3.11, but not with later versions.
So put less constraints in the main query and do post-processing checks and
auxiliary requests to avoid such issues.

For some unknown reason, this slightly slows down a bit execution time of the
whole test_cpp_api binary (~ 10%), but couldn't come with something better,
despite trying many variations of the main SQL query. It seems that in the
general case the non-filter LEFT JOIN on the supersession table helped,
except on this EPSG:7842 case.
2020-02-05 18:54:04 +01:00
Kristian Evers c077e5b8b1 Add projsync to README 2020-02-05 07:50:23 +01:00
Charles Karney 1067766790 Merge pull request #1910 from cffk/cmake-proj
Make PROJ the CMake project name addressing first stage of #1885

Let's go with this!  It's conceivable that there's some wrinkle I haven't thought about.  So let's expose the changes to a wider community.
2020-02-04 19:15:57 -05:00
Even Rouault afda50628d Merge pull request #1903 from rouault/add_proj_download
Add projsync utility
2020-02-04 23:34:17 +01:00
Even Rouault 87318283ee Add projsync utility
Fixes #1750
2020-02-04 21:43:42 +01:00
Charles Karney c74781ea27 Make PROJ the CMake project name
Allow both find_package(PROJ) and find_package(PROJ4).  More details
are in cmake/CMakeLists.txt.
2020-02-04 14:20:28 -05:00
Kristian Evers c3e7876325 Merge pull request #1905 from russkel/patch-1
tests: force use of bash for proj_add_test_script_sh
2020-02-04 14:49:15 +01:00
Kristian Evers 712b873dc8 Merge pull request #1907 from mwtoews/cmake
Increase CMake minimum version from 3.5 to 3.9
2020-02-04 07:25:22 +01:00
Mike Taves 19b680c461 Increase CMake minimum version from 3.5 to 3.9
* Also remove a few if()-blocks to support older CMake versions
2020-02-04 14:14:03 +13:00
Even Rouault 6aadc40eac Merge pull request #1902 from rouault/fix_asan_issue_sqlite3_vfs
Fix ASAN issue with SQLite3VFS class (fixes #1901)
2020-02-02 23:46:05 +01:00
Even Rouault 42035701c0 proj_download_file(): relax test for the situation where a file < 1 MB is updated to be slightly larger
CloudFront could return a Range: bytes=0-X/Y with X < Y and X being the previous file size and Y the new one
2020-02-02 18:22:23 +01:00
Even Rouault 31e85df267 build_url(): remove no longer needed hack 2020-02-02 14:21:11 +01:00
Even Rouault 81a83f1142 test/fuzzers/build.sh: statically link sqlite3 for i386 builds 2020-02-01 12:11:09 +01:00
Even Rouault ee06c659f3 Fix ASAN issue with SQLite3VFS class (fixes #1901) 2020-01-31 11:21:43 +01:00
Even Rouault a1b1c4312e Database: add a custom concatenated_operation for NTF (Paris) to RGF93, using the non-deprecated EPSG:9327 for the geocentric translation 2020-01-30 14:14:12 +01:00
Kristian Evers 91c40b654b Merge pull request #1897 from rouault/map_geocentric_translation_method
Add EPSG records for 'Geocentric translation by Grid Interpolation (IGN)' (gr3df97a.txt) and map them to new +proj=xyzgridshift
2020-01-30 11:08:49 +01:00
Kristian Evers 3ab34eb940 Merge pull request #1898 from rouault/delete_null
Remove 'null' grid file as it is now a special hardcoded case in grid code
2020-01-30 11:08:20 +01:00
Even Rouault ec2faad6d6 Remove 'null' grid file as it is now a special hardcoded case in grid code 2020-01-29 18:06:58 +01:00
Even Rouault cebb314e14 test/fuzzers/build.sh: build with static libtiff [ci skip] 2020-01-29 17:26:07 +01:00
Kristian Evers e35cf5d63c Merge pull request #1896 from rouault/add_set_operation
Add +proj=set operation to set component(s) of a coordinate to a fixed value
2020-01-29 17:13:00 +01:00
Even Rouault 6f6c53c855 Add EPSG records for 'Geocentric translation by Grid Interpolation (IGN)' (gr3df97a.txt) and map them to new +proj=xyzgridshift 2020-01-29 16:28:07 +01:00
Even Rouault 9f6ab28f1d Make it possible to use grids from the CDN by their 'old name' even if not in the EPSG/grid_transformation table 2020-01-29 14:44:04 +01:00
Even Rouault d9ad20a959 scripts/grid_checks.py: update for change of PROJ-data repository name, and look for .tif extension 2020-01-29 14:40:10 +01:00
Even Rouault bf6b1a889b Merge pull request #1891 from rouault/rfc5
Implement RFC5: Adopt GeoTIFF-based grids for grids delivered with PROJ
2020-01-29 12:51:49 +01:00
Even Rouault 4b7ec1a182 Add +proj=set operation to set component(s) of a coordinate to a fixed value
Fixes #1846
2020-01-28 21:46:47 +01:00
Even Rouault 74a10a8de0 Add RFC5 text: Adopt GeoTIFF-based grids for grids delivered with PROJ (#1868) 2020-01-28 15:07:09 +01:00
Even Rouault 0bb5cc0ace Merge pull request #1893 from asinghvi17/patch-2
Mention the Julia package Proj4.jl
2020-01-28 12:04:18 +01:00
Even Rouault f2efd1d73c Merge pull request #1892 from rouault/add_projinfo_searchpaths
projinfo: add --searchpaths switch
2020-01-28 12:03:20 +01:00
Even Rouault 15814256e2 projinfo: add --remote-data switch 2020-01-27 20:38:40 +01:00
Anshul Singhvi 148842cea0 Mention the Julia package Proj4.jl
in `docs/src/development/bindings.rst`
2020-01-27 14:18:13 -05:00
Even Rouault ea6245ea32 projinfo: add --searchpaths switch 2020-01-27 18:45:07 +01:00
Even Rouault a4c5cc1e42 Doc: advertize FOSS4G 2020
Text copied from GDAL doc.
2020-01-26 21:37:20 +01:00
Kristian Evers da4ee62a71 Merge pull request #1887 from jmckenna/irc
add #proj IRC channel notifications
2020-01-26 21:36:32 +01:00
Kristian Evers 66013a0202 Merge pull request #1886 from rouault/cppcheck_1_90_happyness
Few improvements to make cppcheck 1.90 happier
2020-01-26 21:36:19 +01:00
Even Rouault 0f22959cb2 Fix ossfuzz builds [ci skip] 2020-01-26 19:39:51 +01:00
Jeff McKenna aeb1779827 add PROJ channel notifications 2020-01-26 11:40:00 -04:00
Even Rouault 9cdebf7ecf configure.ac: rename switch to disable tiff dependency to more neutral --disable-tiff 2020-01-26 13:49:06 +01:00
Even Rouault 9ae1176325 Conversion::_exportToPROJString(): use const ref as rightly suggest by cppcheck 2020-01-26 00:34:55 +01:00
Even Rouault d5a59ac2f3 Make JSONParser::buildObjectDomain() static 2020-01-26 00:34:52 +01:00
Even Rouault fa1ba24a0d buildProjectionStandard(): make it obvious to cppcheck that null-ptr dereference cannot happen 2020-01-26 00:34:30 +01:00
Even Rouault 70ffd8c58b string_to_paralist(): simplify so that it is obvious to cppcheck that null-ptr dereference cannot happen 2020-01-26 00:33:55 +01:00
Even Rouault 43b9748844 configure.ac: remove -Wmissing-prototypes for C++ files at is is for C files only 2020-01-25 23:52:00 +01:00
Kristian Evers f02d83434b Merge pull request #1884 from rouault/cea_k_0
Fix ingestion of +proj=cea with +k_0
2020-01-25 20:50:01 +01:00
Even Rouault d3e133b23f Merge pull request #1882 from rouault/fix_grid_antimeridian
Grid correction: fix handling grids spanning antimeridian (fixes #1859)
2020-01-25 19:51:36 +01:00
Charles Karney a6c6d1de6b Merge pull request #1883 from cffk/cmake-namespace-update
Remove legacy CMake target name "proj" addressing #802
2020-01-25 12:57:11 -05:00
Even Rouault f201a86386 Fix ingestion of +proj=cea with +k_0
Fixes #1881

Digging into the implementation of proj=cea, it appears that
k_0 and lat_ts are intended to be exclusive ways of specifying the
same concept. EPSG only models the variant using lat_s.
So if k_0 is found and lat_ts is absent, compute the equivalent
value of lat_ts from k_0.

Note: k_0 should normally be in the [0,1] range. In case creative users
would use something outside, we raise an exception, even if the cea
implementation could potentially deal with any k_0 value. Hopefully
this is a (reasonable) limitation that will address nominal use cases.
2020-01-25 16:31:00 +01:00
Charles Karney 4efa44d46f Remove legacy CMake target name "proj" addressing #802 2020-01-25 10:03:46 -05:00
Even Rouault b113d0825c Init file reading: use FileManager::open_resource_file() instead of deprecated proj_api I/O 2020-01-25 12:49:23 +01:00
Even Rouault 5358921291 Grid correction: fix handling grids spanning antimeridian (fixes #1859) 2020-01-25 11:20:20 +01:00
Even Rouault 680d1eb93b Implement RFC 5 2020-01-25 02:23:18 +01:00
Even Rouault 1039889c42 Merge pull request #1880 from rouault/createObjectsFromName_use_alias_as_fallback
createObjectsFromName(): use alias as fallback only
2020-01-24 18:28:27 +01:00
Even Rouault e5fae5239f Merge pull request #1879 from sebastic/rdnap
Add nlgeo2018.gtx & rdtrans2018.gsb to grid_alternatives.
2020-01-24 17:49:53 +01:00
Even Rouault 9db95ecde7 createObjectsFromName(): use alias as fallback only
Fixes a regression of 6.3.0 found when creating with GDAL a TIFF with
a Geographic3D CRS. As TIFF must also encode the Geographic2D CRS,
the code of the Geographic2D CRS is searched from the name of the
Geographic3D CRS. When doing createObjectsFromName(
"ETRS89", {AuthorityFactory::ObjectType::GEOGRAPHIC_2D_CRS}, false, 1),
the result returned was not EPSG:4258 as expected, but EPSG:4173 IRENET95
which is registered as an alias of ETRS89. So sort results such
that non-alias results are returned first.
2020-01-24 14:52:46 +01:00
Bas Couwenberg 223572d0a8 Add nlgeo2018.gtx & rdtrans2018.gsb to grid_alternatives.
* EPSG:9282 uses rdtrans2018.gsb
 * EPSG:9283 uses nlgeo2018.gtx
2020-01-24 14:01:19 +01:00
Even Rouault 15ed565101 grid_checks.py: update with additional column in filelist.csv [ci skip] 2020-01-24 13:49:16 +01:00
Kristian Evers 6507e962e0 Update .cirrus.yml (#1878)
Update .cirrus.yml
2020-01-24 12:12:32 +01:00
lbartoletti c20c27424e Update .cirrus.yml
- Use latest FreeBSD 12 version
- remove useless pkg (wget -> native fetch ; unzip -> tar)
- "speed up" with 4 cpus
2020-01-24 09:28:56 +01:00
Mike Taves e16a24ab39 Merge pull request #1870 from mwtoews/build-testing
CMake: replace PROJ_TESTS with CTest's BUILD_TESTING option
2020-01-24 20:56:29 +13:00
Mike Taves 43dc8c5752 CMake: replace PROJ_TESTS with CTest's BUILD_TESTING option
* CTest automatically creates a BUILD_TESTING option (default is ON)
* Also allow PROJ_TESTS to be used, but show deprecation message;
  and add note to remove this option by PROJ 8.0
* Only build geodtest when tests are enabled
* Add documentation to configure a build using -DBUILD_TESTING=OFF
2020-01-24 20:26:53 +13:00
Kristian Evers df4f78a8c1 Merge pull request #1873 from rouault/fix_wrong_use_of_derivingConversion
Fix wrong use of derivingConversionRef() that caused GDAL bug
2020-01-23 20:30:53 +01:00
Even Rouault 1ca02b5659 Merge pull request #1869 from rouault/update_to_epsg_9_8_6
Database: update to EPSG v9.8.6
2020-01-23 19:04:31 +01:00
Even Rouault b6db297c5a Fix wrong use of derivingConversionRef() that caused GDAL bug
Hopefully final cut at solving the same class of bug that the one
that affected QGIS in December.

This time, this hit GDAL in the situation of
https://lists.osgeo.org/pipermail/gdal-dev/2020-January/051500.html
The bug fix for that particular issue is in
PROJStringParser::createFromPROJString()

But grepping more in the code base, I could find other potential smelly
situations (might not be issues, but better be safe than sorry),
so let's fix them too.

Bottom line is:
derivingConversionRef() should *only* be used for consultation, and
never to create a new ProjectedCRS()
2020-01-23 18:31:32 +01:00
Even Rouault 00dd98457a Database: add a geoid_like value for proj_method column of grid_alternatives, fix related entries and simplify/robustify logic to deal with EPSG 'Geographic3D to GravityRelatedHeight' methods 2020-01-23 13:08:23 +01:00
Kristian Evers ef20438a3a docs: add note about autogen.sh to install guide 2020-01-23 10:49:13 +01:00
Even Rouault ffcd6253bb Database: update to EPSG v9.8.6
Fixes #1867
2020-01-22 22:31:44 +01:00
Even Rouault db31b6dfa9 Merge RFC4 (#1865)
This commit is the result of the squashing of rfc4_dev branch in a single
commit. It implements mostly RFC 4 related work.

* Grid handling:
  - remove obsolete and presumably unfinished implementation of grid catalog functionality
  - all grid functionality is in grids.cpp/.hpp
  - vertical and horizontal grid shift: rework to no longer load whole grid into memory
  - remove hgrids and vgrids member from PJ structure, and store them in hgridshift/vgridshift/deformation structures
  - build systems: add optional libtiff dependency. Must be explicitly disabled if not desired
  - add support for horizontal and vertical grids in GeoTIFF, if libtiff is available
  - add GenericShiftGridSet and GenericShiftGrid classes, relying on TIFF grids, that can be used for generic purpose grid-based adjustment
  - add a +proj=xyzgridshift method to perform geocentric translation by grid. Used for French NTF to RGF93 transformation using gr3df97a.tif grid
  - deformation: add support for +grids= for GeoTIFF grids
  - horizontal grid shift: fix failures on points slightly outside a subgrid (fixes #209)

* File management:
  - add a filemanager.cpp/.hpp to deal with file related work
  - test for legacy proj_api.h fileapi
  - proj.h: add proj_context_set_fileapi() and proj_context_set_sqlite3_vfs_name() (fixes #866)
  - add capability to read resource files from the user writable directory

* Network access:
  - build systems: add optional curl dependency
  - add a curl-based default implementation for network related functionality
  - proj.h: add C API to control network functionality, and optionaly provide network callbacks
  - add data/proj.ini with default settings
  - add a SQLite3 local cache of downloaded chunks
  - add proj_is_download_needed() and proj_download_file()

* Use Win32 Unicode APIs and expect all strings to be UTF-8 (fixes #1765)
  For backward compatibility, if PROJ_LIB content is found to be not UTF-8 or
  pointing to a non existing directory, then an attempt at interpretating it
  in the ANSI page encoding is done.
  proj_context_set_search_paths() now assumes strings to be in UTF-8, and
  functions returning paths will also return values in UTF-8.
2020-01-22 18:31:26 +01:00
Even Rouault 1ad703a58c Merge pull request #1864 from rouault/fix_appveyor_64bit
appveyor.yml: tune PATH order to fix error when running 'proj' on x64 builds
2020-01-22 15:02:57 +01:00
Even Rouault 8a4d459dfe appveyor.yml: tune PATH order to fix error when running 'proj' on x64 builds 2020-01-22 00:36:56 +01:00
Even Rouault cbf2eebf1b Merge pull request #1863 from rouault/fix_projcrs_identify_same_name_no_axis_but_different_unit
ProjectedCRS::identify(): fix wrong identification of some ESRI WKT linked to units
2020-01-21 22:51:57 +01:00
Kristian Evers 709717899c Merge pull request #1862 from kbevers/update-faq
Add explanation of the PROJ.4 -> PROJ shift to FAQ
2020-01-21 20:24:52 +01:00
Even Rouault 6cc83a2c80 ProjectedCRS::identify(): fix wrong identification of some ESRI WKT linked to units
Fixes bug reported in https://lists.osgeo.org/pipermail/gdal-dev/2020-January/051481.html
2020-01-21 18:20:38 +01:00
Kristian Evers b13a34f3e0 Add explanation of the PROJ.4 -> PROJ shift to FAQ
closes #1511
2020-01-21 13:03:22 +01:00
Even Rouault 1f649f8a99 Merge pull request #1849 from rouault/doc_add_win_build_tutorial
Doc: add in install.rst tutorials to build on Windows
2020-01-16 21:31:08 +01:00
Kristian Evers 0c646aa914 Update year in CITATION (#1854)
Update year in CITATION
2020-01-16 16:52:44 +01:00
Kristian Evers d3a1aa6200 Update year in CITATION 2020-01-16 16:51:20 +01:00
Even Rouault 6733048be4 Doc: add in install.rst tutorials to build on Windows
Fixes #1776

Content based on https://github.com/OSGeo/PROJ/wiki/Building-with-VS-and-vcpkg
which should be retired to avoid duplication of information

README.md is also modified to point to install.rst
2020-01-15 22:42:38 +01:00
841 changed files with 170337 additions and 74997 deletions

No files matched your search

-30
View File
@@ -1,30 +0,0 @@
# Cirrus CI configuration
task:
name: FreeBSD
freebsd_instance:
matrix:
image: freebsd-12-0-release-amd64
# image: freebsd-11-2-release-amd64
# image: freebsd-10-4-release-amd64
env:
CIRRUS_CLONE_DEPTH: 1
MAKE_FLAGS: -j 2
cache:
folder: $HOME/.ccache
pkginstall_script:
- pkg install -y autoconf automake libtool pkgconf sqlite3 wget unzip ccache gmake
download_grid_script:
- wget https://download.osgeo.org/proj/proj-datumgrid-1.8.zip
- (cd data && unzip -o ../proj-datumgrid-1.8.zip)
configure_script:
- ./autogen.sh
- CC="ccache cc" CXX="ccache c++" ./configure --disable-static
compile_script:
- gmake $(MAKE_FLAGS)
test_script:
- gmake check $(MAKE_FLAGS)
+29
View File
@@ -0,0 +1,29 @@
# Cirrus CI configuration
task:
name: FreeBSD
freebsd_instance:
cpu: 4
matrix:
image: freebsd-12-1-release-amd64
# image: freebsd-11-2-release-amd64
# image: freebsd-10-4-release-amd64
env:
CIRRUS_CLONE_DEPTH: 1
MAKE_FLAGS: -j 4
# Disable cache: its upload can take up to 30 minutes!
#cache:
# folder: $HOME/.ccache
pkginstall_script:
- pkg install -y autoconf automake libtool pkgconf sqlite3 tiff ccache gmake
configure_script:
- ./autogen.sh
- ./configure --disable-static
compile_script:
- gmake $(MAKE_FLAGS)
test_script:
- gmake check $(MAKE_FLAGS)
+2
View File
@@ -0,0 +1,2 @@
.git
build
+4 -6
View File
@@ -1,6 +1,6 @@
name: Backport
on:
pull_request:
pull_request_target:
types:
- closed
- labeled
@@ -11,10 +11,8 @@ jobs:
name: Backport
steps:
- name: Backport Bot
if: contains( join(github.event.pull_request.labels.*.name), 'backport')
uses: Gaurav0/backport@v1.0.24
id: backport
if: github.event.pull_request.merged && ( ( github.event.action == 'closed' && contains( join( github.event.pull_request.labels.*.name ), 'backport') ) || contains( github.event.label.name, 'backport' ) )
uses: m-kuhn/backport@v1.1.1
with:
bot_username: PROJ-BOT
bot_token: c1c49a5799d0a3a3885db8a4792880cbe509c1d6
bot_token_key: b01bdebf64595ed77207019258316df1b05ff6ac
github_token: ${{ secrets.GITHUB_TOKEN }}
+24
View File
@@ -0,0 +1,24 @@
name: CLang Linux
on: [push, pull_request]
jobs:
clang_linux:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Cache
uses: actions/cache@v2
id: cache
with:
path: |
${{ github.workspace }}/ccache.tar.gz
key: ${{ runner.os }}-cache-clang-${{ github.run_id }}
restore-keys: ${{ runner.os }}-cache-clang-
- name: Run
run: docker run -e CI -e TRAVIS_BUILD_DIR="$PWD" -e WORK_DIR="$PWD" -e TRAVIS_OS_NAME=linux -e BUILD_NAME=linux_clang -v $PWD:$PWD ubuntu:20.04 $PWD/.github/workflows/clang_linux/start.sh
+32
View File
@@ -0,0 +1,32 @@
#!/bin/sh
set -e
apt-get update -y
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
sudo autoconf automake libtool clang++-10 python3-clang-10 make cmake ccache pkg-config tar zip \
sqlite3 libsqlite3-dev libtiff-dev libcurl4-openssl-dev jq python3-pip nlohmann-json3-dev
python3 -m pip install --user jsonschema
cd "$WORK_DIR"
if test -f "$WORK_DIR/ccache.tar.gz"; then
echo "Restoring ccache..."
(cd $HOME && tar xzf "$WORK_DIR/ccache.tar.gz")
fi
export CCACHE_CPP2=yes
export PROJ_DB_CACHE_DIR="$HOME/.ccache"
ccache -M 500M
ccache -s
# -fno-use-cxa-atexit is needed to build with -coverage
CC="ccache clang-10" CXX="ccache clang++-10" CFLAGS="-Werror -fsanitize=address -fno-use-cxa-atexit" CXXFLAGS="-Werror -fsanitize=address -fno-use-cxa-atexit" LDFLAGS="-fsanitize=address" ./travis/install.sh
ccache -s
echo "Saving ccache..."
rm -f "$WORK_DIR/ccache.tar.gz"
(cd $HOME && tar czf "$WORK_DIR/ccache.tar.gz" .ccache)
@@ -0,0 +1,15 @@
name: CLang Static Analyzer
on: [push, pull_request]
jobs:
clang_static_analyzer:
runs-on: ubuntu-18.04
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Run
run: .github/workflows/clang_static_analyzer/start.sh
+46
View File
@@ -0,0 +1,46 @@
#!/bin/bash
set -e
sudo apt update
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y --no-install-recommends \
autoconf automake libtool g++ make sqlite3 libsqlite3-dev libtiff-dev libcurl4-openssl-dev jq
CLANG_LLVM=clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04
wget -nv https://releases.llvm.org/9.0.0/$CLANG_LLVM.tar.xz
tar xJf $CLANG_LLVM.tar.xz
mv $CLANG_LLVM clang+llvm-9
# prepare build files
./autogen.sh
NPROC=$(nproc)
echo "NPROC=${NPROC}"
export MAKEFLAGS="-j ${NPROC}"
export PATH=$PWD/clang+llvm-9/bin:$PATH
CXXFLAGS="-std=c++11" scan-build -o scanbuildoutput -plist -v ./configure
rm -rf scanbuildoutput
TOPDIR=$PWD
scan-build -o $TOPDIR/scanbuildoutput -sarif -v -enable-checker alpha.unix.cstring.OutOfBounds,alpha.unix.cstring.BufferOverlap,optin.cplusplus.VirtualCall,optin.cplusplus.UninitializedObject make
rm -f filtered_scanbuild.txt
files=$(find scanbuildoutput -name "*.sarif")
for f in $files; do
jq '.runs[].results[] | (if .locations[].physicalLocation.fileLocation.uri | (contains("_generated_parser") ) then empty else { "uri": .locations[].physicalLocation.fileLocation.uri, "msg": .message.text, "location": .codeFlows[-1].threadFlows[-1].locations[-1] } end)' < $f > tmp.txt
if [ -s tmp.txt ]; then
echo "Errors from $f: "
cat $f
echo ""
cat tmp.txt >> filtered_scanbuild.txt
fi
done
if [ -s filtered_scanbuild.txt ]; then
echo ""
echo ""
echo "========================"
echo "Summary of errors found:"
cat filtered_scanbuild.txt
/bin/false
fi
+20
View File
@@ -0,0 +1,20 @@
name: Code Checks
on: [push, pull_request]
jobs:
cppcheck_2004:
runs-on: ubuntu-20.04
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install Requirements
run: |
sudo apt update
sudo apt install -y --no-install-recommends cppcheck
- name: Run cppcheck test
run: ./scripts/cppcheck.sh
+44
View File
@@ -0,0 +1,44 @@
name: Conda
on:
push:
branches: '*'
jobs:
build:
name: Conda ${{ matrix.platform }}
if: github.repository == 'OSGeo/PROJ'
runs-on: ${{ matrix.platform }}
strategy:
fail-fast: true
matrix:
platform: ['ubuntu-latest','windows-latest','macos-latest']
env:
PLATFORM: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v2
- uses: conda-incubator/setup-miniconda@v2
with:
channels: conda-forge
auto-update-conda: true
- name: Setup
shell: bash -l {0}
run: |
source ./scripts/ci/conda/setup.sh
- name: Build
shell: bash -l {0}
run: |
source ../scripts/ci/conda/compile.sh
working-directory: ./proj.4-feedstock
- uses: actions/upload-artifact@v2
with:
name: ${{ matrix.platform }}-conda-package
path: ./proj.4-feedstock/packages/
+51
View File
@@ -0,0 +1,51 @@
name: coverity-scan
# Controls when the action will run.
on:
# Run this action on a schedule (we're allowed a maximum of two per day)
schedule:
- cron: '0 18 * * SUN' # Sunday at 18:00 UTC
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
build:
runs-on: ubuntu-20.04
if: github.repository == 'OSGeo/PROJ'
steps:
- uses: actions/checkout@v2
- name: Install Libraries
run: |
sudo apt-get update
sudo apt-get install --allow-unauthenticated curl libcurl4-gnutls-dev libtiff-dev sqlite3 libsqlite3-dev g++ make cmake
- name: Configure PROJ
run: |
cmake . -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=OFF
- name: Download Coverity Build Tool
run: |
wget -q https://scan.coverity.com/download/cxx/linux64 --post-data "token=$TOKEN&project=OSGeo%2Fproj.4" -O cov-analysis-linux64.tar.gz
mkdir cov-analysis-linux64
tar xzf cov-analysis-linux64.tar.gz --strip 1 -C cov-analysis-linux64
env:
TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
- name: Build with cov-build
run: |
pwd
export PATH=`pwd`/cov-analysis-linux64/bin:$PATH
cov-build --dir cov-int make -j$(nproc)
- name: Submit to Coverity Scan
run: |
tar czvf proj.tgz cov-int
curl \
--form project=OSGeo%2Fproj.4 \
--form token=$TOKEN \
--form email=even.rouault@spatialys.com \
--form file=@proj.tgz \
--form version=master \
--form description="`git rev-parse --abbrev-ref HEAD` `git rev-parse --short HEAD`" \
https://scan.coverity.com/builds?project=OSGeo%2Fproj.4
env:
TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
+95
View File
@@ -0,0 +1,95 @@
name: Docs
on: [push, pull_request]
jobs:
plots:
name: Plots
runs-on: ubuntu-latest
env:
PROJ_EXE: proj
steps:
- name: Checkout
uses: actions/checkout@v2
- uses: conda-incubator/setup-miniconda@v2
with:
channels: conda-forge
auto-update-conda: true
- name: Setup
shell: bash -l {0}
run: |
conda update -n base -c defaults conda
conda install descartes shapely geopandas matplotlib proj
- name: Plot
shell: bash -l {0}
working-directory: ./docs/plot
run: |
./plot.sh
- uses: actions/upload-artifact@v2
with:
name: Images
path: docs/plot/images
docs:
name: Docs
needs: [plots]
runs-on: ubuntu-latest
strategy:
fail-fast: true
container: osgeo/proj-docs
steps:
- uses: actions/checkout@v2
- name: Print versions
shell: bash -l {0}
run: |
python3 --version
sphinx-build --version
python3 -m pip list --not-required --format=columns
- uses: actions/download-artifact@v2
name: Images
with:
name: Images
path: ./docs/source/operations/projections/images
- name: Lint .rst files
shell: bash -l {0}
run: |
if find . -name '*.rst' | xargs grep -P '\t'; then echo 'Tabs are bad, please use four spaces in .rst files.'; false; fi
working-directory: ./docs
- name: Doxygen
shell: bash -l {0}
run: |
mkdir -p docs/build
doxygen Doxyfile
- name: HTML
shell: bash -l {0}
run: |
make html
working-directory: ./docs
- name: PDF
shell: bash -l {0}
run: |
make latexpdf
working-directory: ./docs
- name: Spelling
shell: bash -l {0}
run: |
make spelling
working-directory: ./docs
- uses: actions/upload-artifact@v2
with:
name: PDF
path: docs/build/latex/proj.pdf
- uses: actions/upload-artifact@v2
with:
name: HTML
path: docs/build/html/*
- uses: actions/upload-artifact@v2
with:
name: Misspelled
path: docs/build/spelling/output.txt
+78
View File
@@ -0,0 +1,78 @@
name: Docker
on: [push, pull_request, workflow_dispatch]
# 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:
PUSH_PACKAGES: ${{ github.repository_owner == 'OSGeo' && github.event_name != 'pull_request' }}
CONTAINER: ${{ matrix.container }}
steps:
- uses: actions/checkout@v2
- 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@v1
with:
version: latest
- if: ${{ env.PUSH_PACKAGES == 'true' }}
name: Login to GitHub Container Registry
uses: docker/login-action@v1
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@v1
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 ::set-output name=BUILD_DATE::$(date -u +'%Y-%m-%dT%H:%M:%SZ')
echo ::set-output name=VERSION::${VERSION}
- name: Build image
uses: docker/build-push-action@v2
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 }}
+24
View File
@@ -0,0 +1,24 @@
name: Linux GCC 32bit
on: [push, pull_request]
jobs:
linux_gcc_32bit:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Cache
uses: actions/cache@v2
id: cache
with:
path: |
${{ github.workspace }}/ccache.tar.gz
key: ${{ runner.os }}-cache-gcc32bit-${{ github.run_id }}
restore-keys: ${{ runner.os }}-cache-gcc32bit-
- name: Run
run: docker run -e CI -e WORK_DIR="$PWD" -v $PWD:$PWD ubuntu:20.04 $PWD/.github/workflows/linux_gcc_32bit/start.sh
+56
View File
@@ -0,0 +1,56 @@
#!/bin/bash
set -e
export TRAVIS_OS_NAME=linux
export BUILD_NAME=linux_gcc_32bit
export TRAVIS_BUILD_DIR="$WORK_DIR"
ARCH=i386
dpkg --add-architecture i386
apt update -y
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends -o APT::Immediate-Configure=0 \
autoconf automake libtool gcc-multilib g++-multilib g++ sqlite3 \
python3-pip \
make cmake ccache pkg-config tar zip \
libsqlite3-dev:$ARCH libtiff-dev:$ARCH libcurl4-openssl-dev:$ARCH \
jq
python3 -m pip install --user jsonschema
export PATH=$HOME/.local/bin:$PATH
export CXXFLAGS='-g -O2 -m32 -D_GLIBCXX_ASSERTIONS'
export CFLAGS='-g -O2 -m32'
export TIFF_CFLAGS=-I/usr/include/i386-linux-gnu
export TIFF_LIBS="-L/usr/lib/i386-linux-gnu -ltiff"
export SQLITE3_CFLAGS=-I/usr/include/i386-linux-gnu
export SQLITE3_LIBS="-L/usr/lib/i386-linux-gnu -lsqlite3"
export CC="ccache gcc"
export CXX="ccache g++"
NPROC=$(nproc)
echo "NPROC=${NPROC}"
export MAKEFLAGS="-j ${NPROC}"
cd "$WORK_DIR"
if test -f "$WORK_DIR/ccache.tar.gz"; then
echo "Restoring ccache..."
(cd $HOME && tar xzf "$WORK_DIR/ccache.tar.gz")
fi
export CCACHE_CPP2=yes
export PROJ_DB_CACHE_DIR="$HOME/.ccache"
ccache -M 500M
ccache -s
CFLAGS="-Werror $CFLAGS" CXXFLAGS="-Werror $CXXFLAGS" ./travis/install.sh
ccache -s
echo "Saving ccache..."
rm -f "$WORK_DIR/ccache.tar.gz"
(cd $HOME && tar czf "$WORK_DIR/ccache.tar.gz" .ccache)
+29
View File
@@ -0,0 +1,29 @@
name: Linux GCC 4.8
on: [push, pull_request]
jobs:
linux_gcc_4_8:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Cache
uses: actions/cache@v2
id: cache
with:
path: |
${{ github.workspace }}/ccache.tar.gz
key: ${{ runner.os }}-cache-gcc-4-8-${{ github.run_id }}
restore-keys: ${{ runner.os }}-cache-gcc-4-8-
- name: Run
run: docker run -e CI -e WORK_DIR="$PWD" -v $PWD:$PWD ubuntu:16.04 $PWD/.github/workflows/linux_gcc_4_8/start.sh
- name: Coveralls
uses: coverallsapp/github-action@v1.1.2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
+55
View File
@@ -0,0 +1,55 @@
#!/bin/bash
set -e
export TRAVIS_OS_NAME=linux
export BUILD_NAME=linux_gcc
export TRAVIS_BUILD_DIR="$WORK_DIR"
apt update -y
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
autoconf automake libtool g++-4.8 sqlite3 \
python3-pip python3-setuptools \
make cmake ccache pkg-config tar zip \
libsqlite3-dev libtiff-dev libcurl4-openssl-dev \
jq lcov
python3 -m pip install --user --upgrade "pip < 21.0"
echo `python3 -m pip --version`
python3 -m pip config --user set global.progress_bar off
python3 -m pip install --user jsonschema
python3 -m pip install --user cmake==3.9.6
export PATH=$HOME/.local/bin:$PATH
export CC="ccache gcc-4.8"
export CXX="ccache g++-4.8"
NPROC=$(nproc)
echo "NPROC=${NPROC}"
export MAKEFLAGS="-j ${NPROC}"
cd "$WORK_DIR"
if test -f "$WORK_DIR/ccache.tar.gz"; then
echo "Restoring ccache..."
(cd $HOME && tar xzf "$WORK_DIR/ccache.tar.gz")
fi
export CCACHE_CPP2=yes
export PROJ_DB_CACHE_DIR="$HOME/.ccache"
ccache -M 500M
ccache -s
CFLAGS="-Werror $CFLAGS" CXXFLAGS="-Werror $CXXFLAGS" ./travis/install.sh
ccache -s
echo "Saving ccache..."
rm -f "$WORK_DIR/ccache.tar.gz"
(cd $HOME && tar czf "$WORK_DIR/ccache.tar.gz" .ccache)
mkdir -p coverage
lcov --no-external --capture --directory src --output-file coverage/lcov.info
+39
View File
@@ -0,0 +1,39 @@
name: MacOS build
on: [push, pull_request]
jobs:
macos_build:
runs-on: macos-latest
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
steps:
- uses: actions/checkout@v2
- uses: conda-incubator/setup-miniconda@v2
with:
channels: conda-forge
auto-update-conda: true
- name: Cache
uses: actions/cache@v2
id: cache
with:
path: ~/.ccache
key: ${{ runner.os }}-cache-mac-${{ github.run_id }}
restore-keys: ${{ runner.os }}-cache-mac-
- name: Install Requirements
shell: bash -l {0}
run: |
source .github/workflows/mac/before_install.sh
- name: Build
shell: bash -l {0}
run: |
export TRAVIS_BUILD_DIR=$PWD
source .github/workflows/mac/install.sh
env:
TRAVIS_OS_NAME: osx
BUILD_NAME: osx
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
set -e
conda update -n base -c defaults conda
conda install compilers -y
conda config --set channel_priority strict
conda install --yes --quiet python=3.8 autoconf automake libtool ccache -y
conda install --yes --quiet proj=7.1.1=h45baca5_3 --only-deps -y
./travis/before_install_pip.sh
@@ -5,6 +5,9 @@ set -e
export CCACHE_CPP2=yes
export PROJ_DB_CACHE_DIR="$HOME/.ccache"
export PATH=$HOME/Library/Python/3.6/bin:$PATH
ccache -M 200M
ccache -s
CC="ccache clang" CXX="ccache clang++" CFLAGS="-Werror -O2" CXXFLAGS="-Werror -O2" ./travis/install.sh
ccache -s
+24
View File
@@ -0,0 +1,24 @@
name: mingw_w64 build
on: [push, pull_request]
jobs:
mingw_w64_build:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Cache
uses: actions/cache@v2
id: cache
with:
path: |
${{ github.workspace }}/ccache.tar.gz
key: ${{ runner.os }}-cache-mingw_w64-${{ github.run_id }}
restore-keys: ${{ runner.os }}-cache-mingw_w64-
- name: Build
run: docker run -e CI -e TRAVIS_OS_NAME=linux -e BUILD_NAME=mingw_w64 -e WORK_DIR="$PWD" -v $PWD:$PWD ubuntu:18.04 $PWD/.github/workflows/mingw_w64/start.sh
+118
View File
@@ -0,0 +1,118 @@
#!/bin/sh
set -e
SCRIPT_DIR=$(dirname "$0")
case $SCRIPT_DIR in
"/"*)
;;
".")
SCRIPT_DIR=$(pwd)
;;
*)
SCRIPT_DIR=$(pwd)/$(dirname "$0")
;;
esac
apt-get update -y
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
sudo wget tzdata
USER=root
export USER
cd "$WORK_DIR"
if test -f "$WORK_DIR/ccache.tar.gz"; then
echo "Restoring ccache..."
(cd $HOME && tar xzf "$WORK_DIR/ccache.tar.gz")
fi
export PROJ_DB_CACHE_DIR="$HOME/.ccache"
sudo apt-get install -y --no-install-recommends \
ccache \
binutils-mingw-w64-x86-64 \
gcc-mingw-w64-x86-64 \
g++-mingw-w64-x86-64 \
g++-mingw-w64 \
mingw-w64-tools \
wine-stable \
make autoconf automake libtool zip \
sqlite3 \
curl ca-certificates
# Select posix/pthread for std::mutex
update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
ccache -M 500M
ccache -s
MINGW_ARCH=x86_64-w64-mingw32
MINGW_PREFIX=/usr/lib/gcc/$MINGW_ARCH/7.3-posix
export CCACHE_CPP2=yes
export CC="ccache $MINGW_ARCH-gcc"
export CXX="ccache $MINGW_ARCH-g++"
export LD=$MINGW_ARCH-ld
UNAME="$(uname)" || UNAME=""
NPROC=$(nproc);
echo "NPROC=${NPROC}"
export MAKEFLAGS="-j ${NPROC}"
# prepare wine environment
export WINE_PREFIX="$HOME/.wine"
WINE_SYSDIR=$WINE_PREFIX/drive_c/windows
wine64 cmd /c dir
ln -s $MINGW_PREFIX/libstdc++-6.dll $WINE_SYSDIR
ln -s $MINGW_PREFIX/libgcc_s_seh-1.dll $WINE_SYSDIR
ln -s $MINGW_PREFIX/libgcc_s_sjlj-1.dll $WINE_SYSDIR
ln -s /usr/$MINGW_ARCH/lib/libwinpthread-1.dll $WINE_SYSDIR
# build zlib
wget https://github.com/madler/zlib/archive/v1.2.11.tar.gz
tar xzf v1.2.11.tar.gz
(cd zlib-1.2.11 && sudo make install -fwin32/Makefile.gcc SHARED_MODE=1 PREFIX=x86_64-w64-mingw32- DESTDIR=/usr/$MINGW_ARCH/)
sudo mkdir -p /usr/$MINGW_ARCH/include
sudo mkdir -p /usr/$MINGW_ARCH/lib
sudo cp /usr/$MINGW_ARCH/*.h /usr/$MINGW_ARCH/include
sudo cp /usr/$MINGW_ARCH/libz.* /usr/$MINGW_ARCH/lib
ln -s /usr/$MINGW_ARCH/zlib1.dll $WINE_SYSDIR
# build libtiff
wget http://download.osgeo.org/libtiff/tiff-4.1.0.tar.gz
tar xzf tiff-4.1.0.tar.gz
(cd tiff-4.1.0 && ./configure --host=$MINGW_ARCH --prefix=/usr/$MINGW_ARCH && make && sudo make install)
ln -s /usr/$MINGW_ARCH/bin/libtiff-5.dll $WINE_SYSDIR
# build sqlite3
wget https://sqlite.org/2020/sqlite-autoconf-3330000.tar.gz
tar xzf sqlite-autoconf-3330000.tar.gz
# Build with SQLITE_DQS=0 to ensure we properly use single quotes and double quotes (cf issue #2480)
(cd sqlite-autoconf-3330000 &&
CFLAGS="-DSQLITE_DQS=0" ./configure --host=$MINGW_ARCH --prefix=/usr/$MINGW_ARCH && make && sudo make install)
ln -s /usr/$MINGW_ARCH/bin/libsqlite3-0.dll $WINE_SYSDIR
# prepare build files
./autogen.sh
# autoconf build
mkdir build_autoconf
cd build_autoconf
CFLAGS="-Werror" CXXFLAGS="-Werror" ../configure --host=$MINGW_ARCH --prefix=/tmp/proj_autoconf_install --without-curl
make
make install
make dist-all
find /tmp/proj_autoconf_install
(cd test; make)
cp -r ../data/tests /tmp/proj_autoconf_install/share/proj
cp ../data/tests/egm96_15_downsampled.gtx /tmp/proj_autoconf_install/share/proj/egm96_15.gtx
cp ../data/tests/ntv2_0_downsampled.gsb /tmp/proj_autoconf_install/share/proj/ntv2_0.gsb
wine64 test/unit/test_cpp_api.exe
ccache -s
echo "Saving ccache..."
rm -f "$WORK_DIR/ccache.tar.gz"
(cd $HOME && tar czf "$WORK_DIR/ccache.tar.gz" .ccache)
+117
View File
@@ -0,0 +1,117 @@
name: Windows build
on: [push, pull_request]
jobs:
MSVC:
runs-on: windows-latest
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
strategy:
fail-fast: false
matrix:
BUILD_TYPE: [Release, Debug]
env:
ARCH: x64
BUILD_SHARED_LIBS: ON
BUILD_TYPE: ${{ matrix.BUILD_TYPE }}
steps:
- uses: actions/checkout@v2
- uses: ilammy/msvc-dev-cmd@v1
- name: Cache vcpkg packages
uses: actions/cache@v2
id: cache
with:
path: c:\vcpkg\installed
key: ${{ runner.os }}-vcpkg-${{ hashFiles('.github/workflows/windows.yml') }}
- name: Install build requirements
shell: cmd
if: steps.cache.outputs.cache-hit != 'true'
run: |
vcpkg install sqlite3[core,tool]:${{ env.ARCH }}-windows
vcpkg install tiff:${{ env.ARCH }}-windows
vcpkg install curl:${{ env.ARCH }}-windows
- name: Build
shell: cmd
run: |
set VCPKG_INSTALLED=c:\vcpkg\installed\${{ env.ARCH }}-windows
dir %VCPKG_INSTALLED%\bin
set PATH=%VCPKG_INSTALLED%\bin;%PATH%
set PROJ_BUILD=%GITHUB_WORKSPACE%\build
mkdir %PROJ_BUILD%
cd %PROJ_BUILD%
set PROJ_DIR=%GITHUB_WORKSPACE%\proj_dir
cmake -GNinja .. -DCMAKE_BUILD_TYPE="${{ env.BUILD_TYPE }}" -DBUILD_SHARED_LIBS="${{ env.BUILD_SHARED_LIBS }}" -DCMAKE_C_FLAGS="/WX" -DCMAKE_CXX_FLAGS="/WX" -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_INSTALL_PREFIX="%PROJ_DIR%"
ninja -v
ninja install
dir %PROJ_DIR%\bin
- name: Run tests
shell: cmd
run: |
set VCPKG_INSTALLED=c:\vcpkg\installed\${{ env.ARCH }}-windows
set PATH=%VCPKG_INSTALLED%\bin;%PATH%
set PROJ_DIR=%GITHUB_WORKSPACE%\proj_dir
set PROJ_BUILD=%GITHUB_WORKSPACE%\build
cd %PROJ_BUILD%
ctest -V -C "${{ env.BUILD_TYPE }}"
set PATH=%PROJ_DIR%\bin;%PATH%
if "${{ env.BUILD_TYPE }}"=="Release" call %GITHUB_WORKSPACE%\test\postinstall\test_cmake.bat %PROJ_DIR%
if "${{ env.BUILD_TYPE }}"=="Release" proj
MSYS2:
runs-on: windows-latest
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
defaults:
run:
shell: msys2 {0}
env:
CMAKE_GENERATOR: "MSYS Makefiles"
steps:
- uses: actions/checkout@v2
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: >-
git
make
mingw-w64-x86_64-cmake
mingw-w64-x86_64-curl
mingw-w64-x86_64-gcc
mingw-w64-x86_64-libtiff
mingw-w64-x86_64-sqlite3
- name: Build
run: |
PROJ_BUILD=${GITHUB_WORKSPACE}/build
PROJ_DIR=${GITHUB_WORKSPACE}/proj_dir
mkdir ${PROJ_BUILD}
cd ${PROJ_BUILD}
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX="${PROJ_DIR}" -DCMAKE_C_FLAGS="-Werror" -DCMAKE_CXX_FLAGS="-Werror" ..
make -j 2
make install
ls ${PROJ_DIR}/bin
- name: Run tests
run: |
PROJ_BUILD=${GITHUB_WORKSPACE}/build
PROJ_DIR=${GITHUB_WORKSPACE}/proj_dir
cd ${PROJ_BUILD}
ctest --output-on-failure
export PATH=${PROJ_DIR}/bin:${PATH}
../test/postinstall/test_cmake.sh ${PROJ_DIR}
../test/postinstall/test_pkg-config.sh ${PROJ_DIR}
proj
+7 -1
View File
@@ -93,11 +93,12 @@ install_manifest.txt
/data/stlrnc
/data/stpaul
/data/tv_out
/data/for_tests/
# docs
tmp_breathe
/docs/.doxygen_up_to_date
/docs/build
/latex
# m4
m4/libtool.m4
@@ -116,6 +117,7 @@ m4/lt~obsolete.m4
/src/proj_config.h
/src/proj_config.h.in
/src/projinfo
/src/projsync
/src/stamp-h1
/src/test-suite.log
@@ -129,6 +131,10 @@ m4/lt~obsolete.m4
/test/unit/proj_context_test
/test/unit/test_cpp_api
/test/unit/proj_errno_string_test
/test/unit/test_defmodel
/test/unit/test_network
/test/unit/test_tinshift
/tmp_alias/
# jniwrap
jniwrap/out
+19 -48
View File
@@ -20,57 +20,25 @@ matrix:
services:
- docker
env:
- BUILD_NAME=linux_gcc
- DETAILS="linux, gcc"
- BUILD_NAME=publish_doc
- DETAILS="publish_doc"
- os: linux
dist: xenial
dist: bionic
compiler: gcc
services:
- docker
arch: s390x
env:
- BUILD_NAME=linux_gcc7
- DETAILS="linux, gcc7"
- CC=gcc-7
- CXX=g++-7
- CXXFLAGS='-g -D_GLIBCXX_ASSERTIONS'
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-7
- make
- autoconf
- automake
- BUILD_NAME=linux_generic
- DETAILS="linux, s390x"
- os: linux
dist: xenial
compiler: clang
services:
- docker
env:
- BUILD_NAME=linux_clang
- DETAILS="linux, clang"
- os: osx
env:
- BUILD_NAME=osx
- DETAILS="osx"
- os: linux
dist: xenial
dist: bionic
compiler: gcc
arch: arm64
env:
- BUILD_NAME=mingw32
- DETAILS="mingw32"
- os: linux
compiler: gcc
dist: xenial
env:
- BUILD_NAME=csa
- DETAILS="CLang Static Analyzer"
- BUILD_NAME=linux_generic
- DETAILS="linux, arm64"
- NPROC=4
allow_failures:
- env: BUILD_NAME=mingw32
@@ -85,11 +53,14 @@ script:
after_success: ./travis/${BUILD_NAME}/after_success.sh
notifications:
#email:
# recipients:
# - gdal-commits@lists.osgeo.org
irc:
channels:
- "irc.freenode.org#gdal"
- "irc.freenode.org#proj-activity"
# - "irc.freenode.org#gdal"
# - "irc.freenode.org#proj"
use_notice: true
# #email:
# # recipients:
# # - gdal-commits@lists.osgeo.org
#
+2 -2
View File
@@ -1,6 +1,6 @@
To cite PROJ in publications use:
PROJ contributors (2019). PROJ coordinate transformation software
PROJ contributors (2020). PROJ coordinate transformation software
library. Open Source Geospatial Foundation. URL https://proj.org/.
A BibTeX entry for LaTeX users is
@@ -11,6 +11,6 @@ A BibTeX entry for LaTeX users is
title = {{PROJ} coordinate transformation software library},
author = {{PROJ contributors}},
organization = {Open Source Geospatial Foundation},
year = {2020},
year = {2022},
url = {https://proj.org/},
}
+208 -33
View File
@@ -9,15 +9,15 @@
################################################################################
# General settings
################################################################################
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
# For historic reasons, the CMake PROJECT-NAME is PROJ4
project(PROJ4 LANGUAGES C CXX)
set(PROJECT_INTERN_NAME PROJ)
project(PROJ
DESCRIPTION "PROJ coordinate transformation software library"
LANGUAGES C CXX
)
if(NOT CMAKE_VERSION VERSION_LESS 3.1)
cmake_policy(SET CMP0054 NEW)
endif()
# Only interpret if() arguments as variables or keywords when unquoted
cmake_policy(SET CMP0054 NEW)
# Set C++ version
# Make CMAKE_CXX_STANDARD available as cache option overridable by user
@@ -37,6 +37,13 @@ set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
message(STATUS "Requiring C${CMAKE_C_STANDARD} - done")
set(CMAKE_SKIP_BUILD_RPATH FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
if(APPLE)
set(MACOSX_RPATH ON)
endif()
# Set global -fvisibility=hidden
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
@@ -83,6 +90,14 @@ elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "Intel")
set(PROJ_CXX_WARN_FLAGS -Wall)
endif()
endif()
if (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
# Intel CXX compiler based on clang defaults to -ffast-math, which
# breaks std::isinf(), std::isnan(), etc.
set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -fno-fast-math)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -fno-fast-math)
endif ()
set(PROJ_C_WARN_FLAGS "${PROJ_C_WARN_FLAGS}"
CACHE STRING "C flags used to compile PROJ targets")
set(PROJ_CXX_WARN_FLAGS "${PROJ_CXX_WARN_FLAGS}"
@@ -92,20 +107,24 @@ set(PROJ_CXX_WARN_FLAGS "${PROJ_CXX_WARN_FLAGS}"
# PROJ CMake modules
################################################################################
# Path to additional CMake modules
set(CMAKE_MODULE_PATH ${PROJ4_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
set(CMAKE_MODULE_PATH ${PROJ_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
include(ProjUtilities)
message(STATUS "")
colormsg(_HIBLUE_ "Configuring PROJ:")
message(STATUS "Configuring PROJ:")
################################################################################
#PROJ version information
################################################################################
include(ProjVersion)
proj_version(MAJOR 7 MINOR 0 PATCH 0)
set(PROJ_API_VERSION "18")
set(PROJ_BUILD_VERSION "18.0.3")
proj_version(MAJOR 8 MINOR 2 PATCH 1)
# Use libtool convention to build the CMake's VERSION and SOVERSION
# See https://github.com/pvanhoof/dir-examples#cmake-in-the-cmake-example
set(PROJ_LIBTOOL_CURRENT 24)
set(PROJ_LIBTOOL_REVISION 1)
set(PROJ_LIBTOOL_AGE 2)
math(EXPR PROJ_API_VERSION "${PROJ_LIBTOOL_CURRENT} - ${PROJ_LIBTOOL_AGE}")
set(PROJ_BUILD_VERSION "${PROJ_API_VERSION}.${PROJ_LIBTOOL_AGE}.${PROJ_LIBTOOL_REVISION}")
################################################################################
# Build features and variants
@@ -114,9 +133,49 @@ include(ProjConfig)
include(ProjMac)
include(policies)
################################################################################
# Check for nlohmann_json
################################################################################
set(NLOHMANN_JSON_ORIGIN "auto" CACHE STRING
"nlohmann/json origin. The default auto will try to use external \
nlohmann/json if possible")
set_property(CACHE NLOHMANN_JSON_ORIGIN PROPERTY STRINGS auto internal external)
# Probably not the strictest minimum, but known to work with it
set(MIN_NLOHMANN_JSON_VERSION 3.7.0)
if(NLOHMANN_JSON_ORIGIN STREQUAL "external")
find_package(nlohmann_json REQUIRED)
set(NLOHMANN_JSON "external")
elseif(NLOHMANN_JSON_ORIGIN STREQUAL "internal")
set(NLOHMANN_JSON "internal")
else()
find_package(nlohmann_json QUIET)
if(nlohmann_json_FOUND)
set(NLOHMANN_JSON "external")
else()
set(NLOHMANN_JSON "internal")
endif()
endif()
if(NLOHMANN_JSON STREQUAL "external")
# Check minimum version
if(nlohmann_json_VERSION VERSION_LESS MIN_NLOHMANN_JSON_VERSION)
message(STATUS "external nlohmann/json version ${nlohmann_json_VERSION} "
"is older than minimum requirement ${MIN_NLOHMANN_JSON_VERSION}")
set(NLOHMANN_JSON "internal")
else()
message(STATUS "found nlohmann/json version ${nlohmann_json_VERSION}")
endif()
endif()
message(STATUS "nlohmann/json: ${NLOHMANN_JSON}")
################################################################################
# Check for sqlite3
################################################################################
find_program(EXE_SQLITE3 sqlite3)
if(NOT EXE_SQLITE3)
message(SEND_ERROR "sqlite3 binary not found!")
@@ -127,11 +186,54 @@ if(NOT SQLITE3_FOUND)
message(SEND_ERROR "sqlite3 dependency not found!")
endif()
# Would build and run with older versons, but with horrible performance
# Would build and run with older versions, but with horrible performance
# See https://github.com/OSGeo/PROJ/issues/1718
IF("${SQLITE3_VERSION}" VERSION_LESS "3.11")
if("${SQLITE3_VERSION}" VERSION_LESS "3.11")
message(SEND_ERROR "sqlite3 >= 3.11 required!")
ENDIF()
endif()
################################################################################
# Check for libtiff
################################################################################
option(ENABLE_TIFF "Enable TIFF support to read some grids" ON)
mark_as_advanced(ENABLE_TIFF)
set(TIFF_ENABLED FALSE)
if(ENABLE_TIFF)
find_package(TIFF REQUIRED)
if(TIFF_FOUND)
set(TIFF_ENABLED TRUE)
else()
message(SEND_ERROR
"libtiff dependency not found! Use ENABLE_TIFF=OFF to force it off")
endif()
else()
message(WARNING
"TIFF support is not enabled and will result in the inability to read "
"some grids")
endif()
################################################################################
# Check for curl
################################################################################
option(ENABLE_CURL "Enable Curl support" ON)
set(CURL_ENABLED FALSE)
if(ENABLE_CURL)
find_package(CURL REQUIRED)
if(CURL_FOUND)
set(CURL_ENABLED TRUE)
else()
message(SEND_ERROR "curl dependency not found!")
endif()
endif()
################################################################################
option(PROJ_LIB_ENV_VAR_TRIED_LAST "Whether the PROJ_LIB environment variable should be tried after the hardcoded location" OFF)
if(PROJ_LIB_ENV_VAR_TRIED_LAST)
add_definitions(-DPROJ_LIB_ENV_VAR_TRIED_LAST)
endif()
################################################################################
# threading configuration
@@ -139,8 +241,6 @@ ENDIF()
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
find_package(Threads)
include(CheckIncludeFiles)
include(CheckCSourceCompiles)
if(MSVC)
set(CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} /WX /W4")
@@ -178,20 +278,13 @@ if(MSVC OR CMAKE_CONFIGURATION_TYPES)
set(CMAKE_DEBUG_POSTFIX _d)
endif()
option(PROJ_TESTS "Enable build of collection of PROJ tests" ON)
boost_report_value(PROJ_TESTS)
if(PROJ_TESTS)
enable_testing()
endif()
include(ProjTest)
# Put the libraries and binaries that get built into directories at the
# top of the build tree rather than in hard-to-find leaf
# directories. This simplifies manual testing and the use of the build
# tree rather than installed Boost libraries.
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
# tree rather than installed PROJ libraries.
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJ_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJ_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJ_BINARY_DIR}/bin)
link_directories(${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
################################################################################
@@ -209,19 +302,101 @@ set(DOCDIR "${DEFAULT_DOCDIR}"
set(INCLUDEDIR "${DEFAULT_INCLUDEDIR}"
CACHE PATH "The directory to install includes into.")
set(CMAKECONFIGDIR "${DEFAULT_CMAKEDIR}"
CACHE PATH "The directory to install cmake config files into.")
CACHE PATH "Parent of the directory to install cmake config files into.")
################################################################################
# Tests
################################################################################
include(CTest)
if(BUILD_TESTING)
include(ProjTest)
else()
message(STATUS "Testing disabled")
endif()
################################################################################
# Build configured components
################################################################################
include_directories(${PROJ4_SOURCE_DIR}/src)
include_directories(${PROJ_SOURCE_DIR}/src)
message(STATUS "")
add_subdirectory(data)
add_subdirectory(include)
add_subdirectory(src)
add_subdirectory(man)
add_subdirectory(cmake)
if(PROJ_TESTS)
if(BUILD_TESTING)
add_subdirectory(test)
endif()
set(docfiles COPYING NEWS AUTHORS)
install(FILES ${docfiles}
DESTINATION "${DOCDIR}")
################################################################################
# pkg-config support
################################################################################
if(UNIX OR MINGW)
configure_proj_pc()
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/proj.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()
################################################################################
# "make dist" workalike
################################################################################
set(CPACK_SOURCE_GENERATOR "TGZ;ZIP")
set(CPACK_SOURCE_PACKAGE_FILE_NAME "proj-${PROJ_VERSION}")
set(CPACK_PACKAGE_VENDOR "OSGeo")
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJ_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${PROJ_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${PROJ_VERSION_PATCH})
set(CPACK_VERBATIM_VARIABLES TRUE)
set(CPACK_SOURCE_IGNORE_FILES
/\\..* # any file/directory starting with .
/.*\\.yml
/.*\\.gz
/.*\\.zip
/.*build.*/
\\.deps
/autogen\\.sh
/autom4te\\.cache
/CODE_OF_CONDUCT.md
/CONTRIBUTING.md
/Dockerfile
/docs/
/Doxyfile
/examples/
/HOWTO-RELEASE
/m4/lt*
/m4/libtool*
/media/
/schemas/
/scripts/
/test/fuzzers/
/test/gigs/.*gie\\.failing
/test/postinstall/
/travis/
${PROJECT_BINARY_DIR}
)
include(CPack)
# Simplify README.md to README
add_custom_target(README
COMMAND ${CMAKE_COMMAND}
-D PROJ_SOURCE_DIR=${PROJ_SOURCE_DIR}
-P ${PROJ_SOURCE_DIR}/cmake/ProjReadme.cmake
)
get_property(_is_multi_config_generator GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(NOT _is_multi_config_generator)
add_custom_target(dist
COMMAND ${CMAKE_MAKE_PROGRAM} package_source
DEPENDS README
)
message(STATUS "PROJ: Configured 'dist' target")
endif()
+20 -20
View File
@@ -1,11 +1,11 @@
# How to contribute to PROJ.4
# How to contribute to PROJ
PROJ.4 has a wide and varied user base. Some are highly skilled geodesists with a deep
PROJ has a wide and varied user base. Some are highly skilled geodesists with a deep
knowledge of map projections and reference systems, some are GIS software developers
and others are GIS users. All users, regardless of the profession or skill level,
has the ability to contribute to PROJ.4. Here's a few suggestion on how:
has the ability to contribute to PROJ. Here's a few suggestion on how:
* Help PROJ.4-users that is less experienced than yourself.
* Help PROJ-users that is less experienced than yourself.
* Write a bug report
* Request a new feature
* Write documentation for your favorite map projection
@@ -13,16 +13,16 @@ has the ability to contribute to PROJ.4. Here's a few suggestion on how:
* Implement a new feature
In the following sections you can find some guidelines on how to contribute.
As PROJ.4 is managed on GitHub most contributions require that you have a GitHub
As PROJ is managed on GitHub most contributions require that you have a GitHub
account. Familiarity with [issues](https://guides.github.com/features/issues/) and
the [GitHub Flow](https://guides.github.com/introduction/flow/) is an advantage.
## Help a fellow PROJ.4 user
The main forum for support for PROJ.4 is the mailing list. You can subscribe to
## Help a fellow PROJ user
The main forum for support for PROJ is the mailing list. You can subscribe to
the mailing list [here](http://lists.osgeo.org/mailman/listinfo/proj) and read
the archive [here](http://lists.osgeo.org/pipermail/proj/).
If you have questions about the usage of PROJ.4 the mailing list is also the place to go.
If you have questions about the usage of PROJ the mailing list is also the place to go.
Please *do not* use the GitHub issue tracker as a support forum. Your question is much
more likely to be answered on the mailing list, as many more people follow that than
the issue tracker.
@@ -30,7 +30,7 @@ the issue tracker.
## Adding bug reports
Bug reports are handled in the [issue tracker](https://github.com/OSGeo/PROJ/issues)
on PROJ.4's home on GitHub. Writing a good bug report is not easy. But fixing a poorly
on PROJ's home on GitHub. Writing a good bug report is not easy. But fixing a poorly
documented bug is not easy either, so please put in the effort it takes to create a
thorough bug report.
@@ -38,7 +38,7 @@ A good bug report includes at least:
* A title that quickly explains the problem
* A description of the problem and how it can be reproduced
* Version of PROJ.4 being used
* Version of PROJ being used
* Version numbers of any other relevant software being used, e.g. operating system
* A description of what already has been done to solve the problem
@@ -47,15 +47,15 @@ will find interest in solving the problem. You will probably get follow-up quest
after submitting a bug report. Please answer them in a timely manner if you have an
interest in getting the issue solved.
Finally, please only submit bug reports that are actually related to PROJ.4. If the
issue materializes in software that uses PROJ.4 it is likely a problem with that
particular software. Make sure that it actually is a PROJ.4 problem before you submit
an issue. If you can reproduce the problem only by using tools from PROJ.4 it is
definitely a problem with PROJ.4.
Finally, please only submit bug reports that are actually related to PROJ. If the
issue materializes in software that uses PROJ it is likely a problem with that
particular software. Make sure that it actually is a PROJ problem before you submit
an issue. If you can reproduce the problem only by using tools from PROJ it is
definitely a problem with PROJ.
## Feature requests
Got an idea for a new feature in PROJ.4? Submit a thorough description of the new
Got an idea for a new feature in PROJ? Submit a thorough description of the new
feature in the [issue tracker](https://github.com/OSGeo/PROJ/issues). Please
include any technical documents that can help the developer make the new feature a
reality. An example of this could be a publicly available academic paper that
@@ -67,13 +67,13 @@ Note that not all feature requests are accepted.
## Write documentation
PROJ.4 is in dire need of better documentation. Any contributions of documentation
are greatly appreciated. The PROJ.4 documentation is available on [proj.org](https://proj.org).
PROJ is in dire need of better documentation. Any contributions of documentation
are greatly appreciated. The PROJ documentation is available on [proj.org](https://proj.org).
The website is generated with [Sphinx](http://www.sphinx-doc.org/en/stable/). Contributions
to the documentation should be made as [Pull Requests](https://github.com/OSGeo/PROJ/pulls)
on GitHub.
If you intend to document one of PROJ.4's supported projections please use the
If you intend to document one of PROJ's supported projections please use the
[Mercator projection](https://proj.org/operations/projections/merc.html) as a template.
@@ -83,7 +83,7 @@ See [Code Contributions](https://proj.org/community/code_contributions.html)
#### Legalese
Committers are the front line gatekeepers to keep the code base clear of improperly contributed code.
It is important to the PROJ.4 users, developers and the OSGeo foundation to avoid contributing any
It is important to the PROJ users, developers and the OSGeo foundation to avoid contributing any
code to the project without it being clearly licensed under the project license.
Generally speaking the key issues are that those providing code to be included in the repository
+9 -9
View File
@@ -1,19 +1,20 @@
All source, data files and other contents of the PROJ.4 package are
All source, data files and other contents of the PROJ package are
available under the following terms. Note that the PROJ 4.3 and earlier
was "public domain" as is common with US government work, but apparently
this is not a well defined legal term in many countries. I am placing
everything under the following MIT style license because I believe it is
this is not a well defined legal term in many countries. Frank Warmerdam placed
everything under the following MIT style license because he believed it is
effectively the same as public domain, allowing anyone to use the code as
they wish, including making proprietary derivatives.
they wish, including making proprietary derivatives.
Though I have put my own name as copyright holder, I don't mean to imply
I did the work. Essentially all work was done by Gerald Evenden.
Initial PROJ 4.3 public domain code was put as Frank Warmerdam as copyright
holder, but he didn't mean to imply he did the work. Essentially all work was
done by Gerald Evenden.
Copyright information can be found in source files.
--------------
Copyright (c) 2000, Frank Warmerdam
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
@@ -31,4 +32,3 @@ I did the work. Essentially all work was done by Gerald Evenden.
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
+1 -1
View File
@@ -601,7 +601,7 @@
2010-03-16 Frank Warmerdam <warmerdam@pobox.com>
* src/pj_transform.c, src/pj_init.c, src/projects.h, src/pj_gridlist.c,
src/pj_apply_gridshit.c: rework the translation of nadgrids parameters
src/pj_apply_gridshift.c: rework the translation of nadgrids parameters
into a list of gridshift files to avoid use of static "lastnadgrids"
information which screws up multithreading. Changes the PJ structure.
+14 -14
View File
@@ -5,21 +5,22 @@ FROM ubuntu:18.04 as builder
MAINTAINER Howard Butler <howard@hobu.co>
ARG PROJ_VERSION=master
ARG DESTDIR="/build"
# Setup build env
RUN apt-get update -y \
&& apt-get install -y --fix-missing --no-install-recommends \
software-properties-common build-essential ca-certificates \
git make cmake wget unzip libtool automake \
zlib1g-dev libsqlite3-dev pkg-config sqlite3
make cmake wget unzip libtool automake \
zlib1g-dev libsqlite3-dev pkg-config sqlite3 libcurl4-gnutls-dev \
libtiff5-dev
RUN git clone https://github.com/OSGeo/PROJ.git \
&& cd PROJ \
COPY . /PROJ
RUN cd /PROJ \
&& ./autogen.sh \
&& ./configure --prefix=/usr \
&& make \
&& make -j$(nproc) \
&& make install
@@ -31,18 +32,17 @@ RUN date
RUN apt-get update; \
DEBIAN_FRONTEND=noninteractive apt-get install -y \
libsqlite3-0 \
curl unzip
libsqlite3-0 libtiff5 libcurl4 libcurl3-gnutls \
wget ca-certificates
# Put this first as this is rarely changing
RUN \
mkdir -p /usr/share/proj; \
curl -LOs https://download.osgeo.org/proj/proj-datumgrid-1.8.zip && unzip -j -u -o proj-datumgrid-1.8.zip -d /usr/share/proj; \
curl -LOs https://download.osgeo.org/proj/proj-datumgrid-europe-1.2.zip && unzip -j -u -o proj-datumgrid-europe-1.2.zip -d /usr/share/proj; \
curl -LOs https://download.osgeo.org/proj/proj-datumgrid-oceania-1.0.zip && unzip -j -u -o proj-datumgrid-oceania-1.0.zip -d /usr/share/proj; \
curl -LOs https://download.osgeo.org/proj/proj-datumgrid-world-1.0.zip && unzip -j -u -o proj-datumgrid-world-1.0.zip -d /usr/share/proj; \
curl -LOs https://download.osgeo.org/proj/proj-datumgrid-north-america-1.2.zip && unzip -j -u -o proj-datumgrid-north-america-1.2.zip -d /usr/share/proj; \
rm *.zip
wget --no-verbose --mirror https://cdn.proj.org/; \
rm -f cdn.proj.org/*.js; \
rm -f cdn.proj.org/*.css; \
mv cdn.proj.org/* /usr/share/proj/; \
rmdir cdn.proj.org
COPY --from=builder /build/usr/share/proj/ /usr/share/proj/
COPY --from=builder /build/usr/include/ /usr/include/
+5 -26
View File
@@ -230,12 +230,6 @@ TAB_SIZE = 4
ALIASES =
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding "class=itcl::class"
# will allow you to use the command class in the itcl::class meaning.
TCL_SUBST =
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
# only. Doxygen will then generate output that is more tailored for C. For
# instance, some of the names that are used will be different. The list of all
@@ -772,7 +766,7 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
INPUT = src/iso19111 include/proj src/proj.h src/proj_experimental.h src/general_doc.dox
INPUT = src/iso19111 src/iso19111/operation include/proj src/proj.h src/proj_experimental.h src/general_doc.dox src/filemanager.cpp src/networkfilemanager.cpp src/4D_api.cpp
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -1039,13 +1033,6 @@ VERBATIM_HEADERS = YES
ALPHABETICAL_INDEX = YES
# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
# which the alphabetical index list will be split.
# Minimum value: 1, maximum value: 20, default value: 5.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
COLS_IN_ALPHA_INDEX = 5
# In case all classes in a project start with a common prefix, all classes will
# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
# can be used to specify a prefix (or a list of prefixes) that should be ignored
@@ -1742,16 +1729,6 @@ LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
# code with syntax highlighting in the LaTeX output.
#
# Note that which sources are shown also depends on other settings such as
# SOURCE_BROWSER.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_SOURCE_CODE = NO
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. See
# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
@@ -1886,7 +1863,7 @@ MAN_LINKS = NO
# captures the structure of the code including all documentation.
# The default value is: NO.
GENERATE_XML = NO
GENERATE_XML = YES
# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@@ -2051,7 +2028,9 @@ PREDEFINED = DOXYGEN_ENABLED \
protected=private \
INLINED_MAKE_SHARED= \
PROJ_OPAQUE_PRIVATE_DATA= \
PROJ_PRIVATE=private
PROJ_PRIVATE=private \
PROJ_PURE_DECL= \
noexceptoverride="noexcept override"
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
+31 -16
View File
@@ -30,6 +30,9 @@ list. The PROJ PSC guidelines describes the rules for passing a motion.
1.1 Update ABI version numbers:
-------------------------------------------------------------------------------
In case of a un-planned maintenance release, make sure that version numbers are
propertly updated: see 3.1
Determine the ABI version number. It consists of "current:revision:age". Follow
the steps below to determine the next ABI version number:
@@ -48,8 +51,7 @@ the steps below to determine the next ABI version number:
Update the following files with the new ABI version number:
- `src/Makefile.am` Update -version-info
- `CMakelists.txt`: Update PROJ_BUILD_VERSION (cur:rev:age) and
PROJ_API_VERSION (current)
- `CMakeLists.txt`: Update PROJ_LIBTOOL_CURRENT, PROJ_LIBTOOL_REVISON and PROJ_LIBTOOL_AGE
*Commit the changes to master.*
@@ -57,14 +59,11 @@ Update the following files with the new ABI version number:
1.2 Update man pages
-------------------------------------------------------------------------------
Man pages are (mostly) automatically generated from the Sphinx docs. The pages
in man/man3/ was manually updated in 1.1. Here we update the pages in
man/man1/. Follow these steps:
Man pages are (mostly) automatically generated from the Sphinx docs. Follow
these steps:
- Update version number and date in `man/man3/pj_init.3` and
`man/man3/geodesic.3`
- Temporarily update version in `docs/source/conf.py`
- run `script/update_man.sh`
- Temporarily update `version` and `data_version` in `docs/source/conf.py`
- run `scripts/update_man.sh`
- Revert version number in `docs/source/conf.py`
The `update_man.sh` script builds the man pages and commits the update man pages
@@ -99,7 +98,16 @@ If needed, update the year in `CITATION`.
*Commit the changes to master.*
1.5 Create maintenance branch
1.5 Update `PROJ_DATA.VERSION`
-------------------------------------------------------------------------------
If the database references data from an updated PROJ-data package, update
`PROJ_DATA.VERSION` in `data/sql/metadata.sql`.
*Commit the changes to master.*
1.6 Create maintenance branch
-------------------------------------------------------------------------------
*Skip this step if you are preparing a patch release or RC2 and later.*
@@ -117,7 +125,7 @@ subsequently cherry-picked to the maintenance branch.
*Push branch upstream.*
1.6 Prepare and upload archives
1.7 Prepare and upload archives
-------------------------------------------------------------------------------
Run autoconf and configure the build:
@@ -148,13 +156,13 @@ scp proj-x.y.zRCn.* warmerdam@download.osgeo.org:/osgeo/download/proj
Adjust version numbers and usernames accordingly.
1.7 Announce the release candidate
1.8 Announce the release candidate
-------------------------------------------------------------------------------
Announce the release candidate on the PROJ mailing list.
1.8 Promotion to final release
1.9 Promotion to final release
-------------------------------------------------------------------------------
When you are confident that the latest release candidate is ready for promotion
@@ -176,10 +184,18 @@ See step 1.6 above. Do not rename the archives with RC postfixes.
------------------------------------------------------------------------------
- Add the release notes from `NEWS` to `docs/source/news.rst`
These vim substitutions are helpfull when converting NEWS to rst:
:s!(\#\(\d\{4}\))!(`\#\1 <https://github.com/OSGeo/PROJ/issues/\1>`_)!
:s/^o/*/
- Update download links in `docs/source/download.rst`
- Update `$TRAVIS_BRANCH` in `travis\after_success.sh` to new maintenance
branch.
*Commit the changes to master and cherry-pick into maintenance branch.*
When pushed upstream the website will be update to the current version.
@@ -227,10 +243,9 @@ version numbers in the files.
- configure.ac: Update the version number in AC_INIT().
- src/proj.h: Update PROJ_VERSION_MAJOR, PROJ_VERSION_MINOR and
PROJ_VERSION_PATCH.
- src/proj_api.h: Update PJ_VERSION.
- src/release.cpp: Update date to the scheduled release date.
- CMakelists.txt: Update proj_version()
- doc/source/conf.py: Update version number
- CMakeLists.txt: Update proj_version()
- docs/source/conf.py: Update version number
*Commit changes. Either to master or maintenance branch depending on the nature
+3
View File
@@ -3,6 +3,8 @@ DIST_SUBDIRS = include src man data cmake test
EXTRA_DIST = CMakeLists.txt CITATION README.md
dist_doc_DATA = COPYING NEWS AUTHORS
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = proj.pc
@@ -12,6 +14,7 @@ ACLOCAL_AMFLAGS = -I m4
check-local:
cd test; $(MAKE) check
all-local: README
README: README.md
fgrep -v "[![" $< > $@
+1152 -3
View File
File diff suppressed because it is too large. Load diff
+24 -85
View File
@@ -2,11 +2,14 @@
[![Travis Status](https://travis-ci.com/OSGeo/PROJ.svg?branch=master)](https://travis-ci.com/OSGeo/PROJ)
[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/github/OSGeo/PROJ?branch=master&svg=true)](https://ci.appveyor.com/project/OSGeo/PROJ?branch=master)
[![Docker build Status](https://img.shields.io/docker/cloud/build/osgeo/proj)](https://hub.docker.com/r/osgeo/proj/builds)
[![Coveralls Status](https://coveralls.io/repos/github/OSGeo/PROJ/badge.svg?branch=master)](https://coveralls.io/github/OSGeo/PROJ?branch=master)
[![Gitter](https://badges.gitter.im/OSGeo/proj.4.svg)](https://gitter.im/OSGeo/proj.4)
[![Mailing List](https://img.shields.io/badge/PROJ-mailing%20list-4eb899.svg)](http://lists.osgeo.org/mailman/listinfo/proj)
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v1.4%20adopted-ff69b4.svg)](CODE_OF_CONDUCT.md)
<!-- [![Cirrus Status](https://img.shields.io/cirrus/github/OSGeo/PROJ)](https://cirrus-ci.com/github/OSGeo/PROJ/master) -->
PROJ is a generic coordinate transformation software, that transforms
coordinates from one coordinate reference system (CRS) to another.
This includes cartographic projections as well as geodetic transformations.
@@ -23,89 +26,24 @@ See the NEWS file for changes between versions.
The following command line utilities are included in the PROJ package:
- `proj`: for cartographic projection of geodetic coordinates
- `proj`: for cartographic projection of geodetic coordinates.
- `cs2cs`: for transformation from one CRS to another CRS.
- `geod`: for geodesic (great circle) computations.
- `cct`: for generic Coordinate Conversions and Transformations.
- `gie`: the Geospatial Integrity Investigation Environment.
- `projinfo`: for geodetic object and coordinate operation queries
- `projinfo`: for geodetic object and coordinate operation queries.
- `projsync`: for synchronizing PROJ datum and transformation support data.
> More information on the utilities can be found on the [PROJ website](https://proj.org/apps).
## Installation
### Build dependencies
PROJ requires C and C++11 compilers.
It also requires SQLite3 (headers, library and executable). The minimum
version of SQLite3 required is 3.11
Consult the [Installation](https://proj.org/install.html) page of the official
documentation.
For builds on the master branch, [install.rst](https://github.com/OSGeo/PROJ/blob/master/docs/source/install.rst)
might be more up-to-date.
### Building with CMake
cd proj
mkdir build
cd build
cmake ..
cmake --build .
On Windows, one may need to specify generator:
cmake -G "Visual Studio 15 2017" ..
If the SQLite3 dependency is installed in a custom location, specify the
paths to the include directory and the library:
cmake -DSQLITE3_INCLUDE_DIR=/opt/SQLite/include -DSQLITE3_LIBRARY=/opt/SQLite/lib/libsqlite3.so ..
Tests are run with
ctest
The test suite requires that the proj-datumgrid package is installed
in `PROJ_LIB`.
### Building on Unix/Linux
FSF's configuration procedure is used to ease installation of the
PROJ system.
The default destination path prefix for installed files is `/usr/local`.
Results from the installation script will be placed into subdirectories
`bin`, `include`, `lib`, `man/man1` and `man/man3`.
If this default path prefix is proper, then execute:
./configure
See the note below if you are building PROJ directly from the git repository.
If another path prefix is required, then execute:
./configure --prefix=/my/path
In either case, the directory of the prefix path must exist and be
writable by the installer.
After executing configure, execute:
make
make install
The install target will create, if necessary, all required sub-directories.
Tests are run with
make check
The test suite requires that the proj-datumgrid package is installed
in `PROJ_LIB`.
#### Building from the git repository
If you are building from the git repository you have to first run
./autogen.sh
which will generate a configure script that can be used as described above.
### Distribution files and format
## Distribution files and format
Sources are distributed in one or more files. The principle elements
of the system are stored in a compressed tar file named `proj-x.y.z.tar.gz` where
@@ -114,20 +52,14 @@ number, and "z" indicates the patch number of the release.
In addition to the PROJ software package, distributions of datum
conversion grid files and PROJ parameter files are also available.
The grid package is distributed under the name `proj-datumgrid-x.y.zip`,
The grid package is distributed under the name `proj-data-x.y.zip`,
where "x" is the major release version and "y" is the minor release
version numbers. Similarly regional packages are distributed. The
regional packages contain resources that are not essential to the
functionality of PROJ but still of value to users in the region
specific to the package. All grids that were in proj-datumgrids-1.6
remain in proj-datumgrids-1.7; the regional datumgrid files contain
grids for datums not previously supported (prior to PROJ 5.0.0).
version numbers. The resource packages can be downloaded from the
[PROJ website](https://proj.org/download.html).
The resource packages can be downloaded from the [PROJ website](https://proj.org/download.html).
More info on the contents of the various resource packages can be
More info on the contents of the proj-data package can be
found at the
[proj-datumgrid GitHub repository](https://github.com/OSGeo/proj-datumgrid).
[PROJ-data GitHub repository](https://github.com/OSGeo/PROJ-data).
The resource file packages should be extracted to `PROJ_LIB`
where PROJ will find them after installation. The default location of
@@ -135,6 +67,13 @@ where PROJ will find them after installation. The default location of
be changed to a different directory. On Windows you have to define
`PROJ_LIB` yourself.
### Citing PROJ in publications
As an alternative to installing the data package on the local system,
the resource files can be retrieved on-the-fly from the
[PROJ CDN](https://cdn.proj.org/). A [network-enabled](https://proj.org/usage/network.html) PROJ build, will
automatically fetch resource files that are not present locally from the
CDN.
## Citing PROJ in publications
See [CITATION](CITATION)
+34 -33
View File
@@ -1,7 +1,3 @@
platform:
- x64
- x86
branches:
except:
- /(cherry-pick-)?backport-\d+-to-/
@@ -10,53 +6,58 @@ environment:
matrix:
# VS 2015
- VS_VERSION: Visual Studio 14
- platform: x86
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
BUILD_SHARED_LIBS: OFF
# VS 2017
- VS_VERSION: Visual Studio 15
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
# - platform: x64
# APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
# BUILD_SHARED_LIBS: ON
shallow_clone: true
cache:
- C:\Tools\vcpkg\installed\ -> appveyor.yml
build_script:
- echo build_script
- git clone https://github.com/microsoft/vcpkg
- cd vcpkg
- bootstrap-vcpkg.bat
- set PATH=%CD%;%PATH%
- cd ..
- vcpkg install sqlite3:"%platform%"-windows
- set SQLITE3_BIN=%APPVEYOR_BUILD_FOLDER%\sqlite3\bin
- mkdir %SQLITE3_BIN%
- copy c:\projects\proj\vcpkg\installed\"%platform%"-windows\bin\sqlite3.dll %SQLITE3_BIN%
- ps: |
appveyor DownloadFile https://sqlite.org/2018/sqlite-tools-win32-x86-3250100.zip
7z x sqlite-tools-win32-x86-3250100.zip
- copy "%APPVEYOR_BUILD_FOLDER%"\sqlite-tools-win32-x86-3250100\sqlite3.exe %SQLITE3_BIN%
- set PATH=%PATH%;%SQLITE3_BIN%
- if "%platform%" == "x64" SET VS_FULL=%VS_VERSION% Win64
- if "%platform%" == "x64" SET BUILD_LIBPROJ_SHARED=ON
- if "%platform%" == "x86" SET VS_FULL=%VS_VERSION%
- if "%platform%" == "x86" SET BUILD_LIBPROJ_SHARED=OFF
- echo "%VS_FULL%"
- set VCPKG_INSTALLED=C:\Tools\vcpkg\installed\%platform%-windows
# If cached directory does not exist, update vcpkg and install dependencies
# The checkout of a precise sha1 for VS2015 is a workaround for https://github.com/microsoft/vcpkg/issues/11666
- if not exist %VCPKG_INSTALLED%\bin (
cd "C:\Tools\vcpkg" &
git pull > nul &
(if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2015" (git checkout a64dc07690bc8806e717e190f62eb58e198b599c)) &
.\bootstrap-vcpkg.bat -disableMetrics &
vcpkg install sqlite3[core,tool]:"%platform%"-windows &
vcpkg install tiff:"%platform%"-windows &
vcpkg install curl:"%platform%"-windows &
cd %APPVEYOR_BUILD_FOLDER%
)
- dir %VCPKG_INSTALLED%\bin
- set PATH=%VCPKG_INSTALLED%\bin;%PATH%
# See https://www.appveyor.com/docs/lang/cpp/
- if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2015" if %platform%==x86
(call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86)
- if "%APPVEYOR_BUILD_WORKER_IMAGE%"=="Visual Studio 2017"
(call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" %platform% )
#
- cd %APPVEYOR_BUILD_FOLDER%\data
- curl -O https://download.osgeo.org/proj/proj-datumgrid-1.8.zip
- 7z e -aoa -y proj-datumgrid-1.8.zip
- set PROJ_BUILD=%APPVEYOR_BUILD_FOLDER%\build
- mkdir %PROJ_BUILD%
- cd %PROJ_BUILD%
- set PROJ_DIR=%APPVEYOR_BUILD_FOLDER%\proj_dir
- cmake -G "%VS_FULL%" .. -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBPROJ_SHARED="%BUILD_LIBPROJ_SHARED%" -DCMAKE_C_FLAGS="/WX" -DCMAKE_CXX_FLAGS="/WX" -DCMAKE_TOOLCHAIN_FILE=C:/projects/proj/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_INSTALL_PREFIX="%PROJ_DIR%"
- cmake --build . --config Release --target install
- cmake -GNinja .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS="%BUILD_SHARED_LIBS%" -DCMAKE_C_FLAGS="/WX" -DCMAKE_CXX_FLAGS="/WX" -DCMAKE_TOOLCHAIN_FILE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_INSTALL_PREFIX="%PROJ_DIR%"
- ninja -v
- ninja install
- dir %PROJ_DIR%\bin
test_script:
- echo test_script
- set PROJ_LIB=%PROJ_DIR%\share\proj
- cd %PROJ_BUILD%
- ctest -V -C Release
- set PATH=%PATH%;%PROJ_DIR%\bin
- set PATH=%PROJ_DIR%\bin;%PATH%
- call %APPVEYOR_BUILD_FOLDER%\test\postinstall\test_cmake.bat %PROJ_DIR%
- proj
deploy: off
+108 -27
View File
@@ -1,9 +1,78 @@
# proj-config.cmake for the install tree. It's installed in
# ${INSTALL_CMAKE_DIR} and @PROJECT_ROOT_DIR@ is the relative
# path to the root from there. (Note that the whole install tree can
# be relocated.)
file(RELATIVE_PATH PROJECT_ROOT_DIR
${CMAKE_INSTALL_PREFIX}/${CMAKECONFIGDIR} ${CMAKE_INSTALL_PREFIX})
# The old CMake PROJECT-NAME was PROJ4.
set (PROJECT_LEGACY_NAME PROJ4)
string (TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER)
string (TOLOWER "${PROJECT_LEGACY_NAME}" PROJECT_LEGACY_LOWER)
# Starting with version 7.0, we install config-style find package
# files so that PROJ can be found with both
#
# find_package(PROJ)
# find_package(PROJ4)
#
# Here are the details... The command
#
# find_package(PROJ)
#
# if successful, will define variables
#
# PROJ_FOUND
# PROJ_VERSION
# PROJ_LIBRARIES = PROJ::proj
# PROJ_INCLUDE_DIRS
# etc
#
# and will define targets
#
# PROJ::proj
# PROJ4::proj
#
# Similarly
#
# find_package(PROJ4)
#
# if successful, will define variables
#
# PROJ4_FOUND
# PROJ4_VERSION
# PROJ4_LIBRARIES = PROJ4::proj
# PROJ4_INCLUDE_DIRS
# etc
#
# and will define targets
#
# PROJ::proj
# PROJ4::proj
#
# Note that targets PROJ::proj and PROJ4::proj are provided in both
# cases. However, no attempt is made to define both sets of variables
# with the two find_package options. Doing so would just lead to user
# confusion.
#
# Because pre-7.0 versions of PROJ do not support find_package (PROJ)
# and do not define a target PROJ::proj
#
# find_package(PROJ4)
#
# (instead of PROJ) should be used in any development scenarios which
# might involve (even indirectly) pre-7.0 versions of PROJ.
#
# At some future dates, find_package (PROJ4) will
#
# define PROJ4_LIBRARIES = PROJ::proj
# give WARNING message suggesting migration to find_package(PROJ)
# be disallowed via the version checking code
#
# At some more distant date, the PROJ4::proj target will be retired.
#
# To support this change, the CACHE variables PROJ_CMAKE_SUBDIR (and
# CMAKECONFIGDIR) is now the "Parent of directory to install cmake
# config files into".
#
# All this messiness is confined to
#
# cmake/CMakeLists.txt (this file)
# cmake/project-config.cmake.in
# cmake/project-config-version.cmake.in
# Variables needed by ${PROJECT_NAME_LOWER}-config-version.cmake
if (MSVC)
@@ -24,24 +93,36 @@ else ()
set (CMAKE_CROSSCOMPILING_STR "OFF")
endif ()
string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER)
configure_file(project-config.cmake.in project-config.cmake @ONLY)
configure_file(project-config-version.cmake.in
project-config-version.cmake @ONLY)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/project-config.cmake"
DESTINATION "${CMAKECONFIGDIR}"
RENAME "${PROJECT_NAME_LOWER}-config.cmake")
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/project-config-version.cmake"
DESTINATION "${CMAKECONFIGDIR}"
RENAME "${PROJECT_NAME_LOWER}-config-version.cmake")
# Make information about the cmake targets (the library and the tools)
# available.
install(EXPORT targets
FILE ${PROJECT_NAME_LOWER}-targets.cmake
DESTINATION "${CMAKECONFIGDIR}")
install(EXPORT targets
NAMESPACE ${PROJECT_NAME}::
FILE ${PROJECT_NAME_LOWER}-namespace-targets.cmake
DESTINATION "${CMAKECONFIGDIR}")
foreach (PROJECT_VARIANT_NAME ${PROJECT_NAME} ${PROJECT_LEGACY_NAME})
string (TOLOWER "${PROJECT_VARIANT_NAME}" PROJECT_VARIANT_LOWER)
set (CMAKECONFIGSUBDIR "${CMAKECONFIGDIR}/${PROJECT_VARIANT_LOWER}")
# proj-config.cmake for the install tree. It's installed in
# ${CMAKECONFIGSUBDIR} and @PROJECT_ROOT_DIR@ is the relative
# path to the root from there. (Note that the whole install tree can
# be relocated.)
file (RELATIVE_PATH PROJECT_ROOT_DIR
${CMAKE_INSTALL_PREFIX}/${CMAKECONFIGSUBDIR} ${CMAKE_INSTALL_PREFIX})
configure_file (project-config.cmake.in
project-${PROJECT_VARIANT_LOWER}-config.cmake @ONLY)
configure_file (project-config-version.cmake.in
project-${PROJECT_VARIANT_LOWER}-version.cmake @ONLY)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/project-${PROJECT_VARIANT_LOWER}-config.cmake"
DESTINATION "${CMAKECONFIGSUBDIR}"
RENAME "${PROJECT_VARIANT_LOWER}-config.cmake")
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/project-${PROJECT_VARIANT_LOWER}-version.cmake"
DESTINATION "${CMAKECONFIGSUBDIR}"
RENAME "${PROJECT_VARIANT_LOWER}-config-version.cmake")
# Make information about the cmake targets (the library and the tools)
# available.
install(EXPORT targets
NAMESPACE ${PROJECT_NAME}::
FILE ${PROJECT_NAME_LOWER}-targets.cmake
DESTINATION "${CMAKECONFIGSUBDIR}")
install(EXPORT targets
NAMESPACE ${PROJECT_LEGACY_NAME}::
FILE ${PROJECT_LEGACY_LOWER}-targets.cmake
DESTINATION "${CMAKECONFIGSUBDIR}")
endforeach ()
+1
View File
@@ -4,6 +4,7 @@ EXTRA_DIST = CMakeLists.txt \
proj_config.cmake.in \
ProjConfig.cmake \
ProjMac.cmake \
ProjReadme.cmake \
ProjTest.cmake \
ProjVersion.cmake \
policies.cmake \
+7 -18
View File
@@ -7,39 +7,28 @@
# (See accompanying file LICENSE_1_0.txt or copy at
# https://www.boost.org/LICENSE_1_0.txt)
################################################################################
include(CheckIncludeFiles)
include(CheckLibraryExists)
include(CheckFunctionExists)
# check needed include file
check_include_files(dlfcn.h HAVE_DLFCN_H)
check_include_files(inttypes.h HAVE_INTTYPES_H)
check_include_files(memory.h HAVE_MEMORY_H)
check_include_files(stdint.h HAVE_STDINT_H)
check_include_files(stdlib.h HAVE_STDLIB_H)
check_include_files(string.h HAVE_STRING_H)
check_include_files(sys/stat.h HAVE_SYS_STAT_H)
check_include_files(sys/types.h HAVE_SYS_TYPES_H)
check_include_files(unistd.h HAVE_UNISTD_H)
check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS)
check_function_exists(localeconv HAVE_LOCALECONV)
check_function_exists(strerror HAVE_STRERROR)
# check libm need on unix
check_library_exists(m ceil "" HAVE_LIBM)
if(NOT WIN32)
check_library_exists(dl dladdr "" HAVE_LIBDL)
check_library_exists(m exp "" HAVE_LIBM)
endif()
set(PACKAGE "proj")
set(PACKAGE_BUGREPORT "https://github.com/OSGeo/PROJ/issues")
set(PACKAGE_NAME "PROJ")
set(PACKAGE_STRING "PROJ ${${PROJECT_INTERN_NAME}_VERSION}")
set(PACKAGE_STRING "PROJ ${${PROJECT_NAME}_VERSION}")
set(PACKAGE_TARNAME "proj")
set(PACKAGE_URL "https://proj.org")
set(PACKAGE_VERSION "${${PROJECT_INTERN_NAME}_VERSION}")
set(PACKAGE_VERSION "${${PROJECT_NAME}_VERSION}")
# check if a second proj_config.h exists (created by ./configure)
# as this is within CMake's C_INCLUDES / CXX_INCLUDES
set(AUTOCONF_PROJ_CONFIG_H "${CMAKE_SOURCE_DIR}/src/proj_config.h")
set(AUTOCONF_PROJ_CONFIG_H "${PROJ_SOURCE_DIR}/src/proj_config.h")
if(EXISTS ${AUTOCONF_PROJ_CONFIG_H})
message(WARNING
"Autoconf's ${AUTOCONF_PROJ_CONFIG_H} may interfere with this "
+6 -4
View File
@@ -29,8 +29,8 @@ if(UNIX)
set(DEFAULT_LIB_SUBDIR ${CMAKE_INSTALL_LIBDIR})
set(DEFAULT_DATA_SUBDIR ${CMAKE_INSTALL_DATAROOTDIR}/proj)
set(DEFAULT_INCLUDE_SUBDIR ${CMAKE_INSTALL_INCLUDEDIR})
set(DEFAULT_DOC_SUBDIR ${CMAKE_INSTALL_DOCDIR})
set(DEFAULT_CMAKE_SUBDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME_LOWER})
set(DEFAULT_DOC_SUBDIR share/doc/${PROJECT_NAME_LOWER})
set(DEFAULT_CMAKE_SUBDIR ${CMAKE_INSTALL_LIBDIR}/cmake)
else()
# Common locations for Unix and Mac OS X
set(DEFAULT_BIN_SUBDIR bin)
@@ -39,7 +39,9 @@ else()
set(DEFAULT_DOC_SUBDIR doc/proj)
set(DEFAULT_INCLUDE_SUBDIR include)
set(DEFAULT_DOC_SUBDIR share/doc/proj)
set(DEFAULT_CMAKE_SUBDIR lib/cmake/${PROJECT_NAME_LOWER})
set(DEFAULT_CMAKE_SUBDIR lib/cmake)
# Used for proj.pc
set(CMAKE_INSTALL_DATAROOTDIR share)
endif()
# Locations are changeable by user to customize layout of PROJ installation
@@ -55,7 +57,7 @@ set(PROJ_DATA_SUBDIR ${DEFAULT_DATA_SUBDIR} CACHE STRING
set(PROJ_DOC_SUBDIR ${DEFAULT_DOC_SUBDIR} CACHE STRING
"Subdirectory where doc will be installed")
set(PROJ_CMAKE_SUBDIR ${DEFAULT_CMAKE_SUBDIR} CACHE STRING
"Subdirectory where cmake proj-config file will be installed")
"Parent of subdirectory where cmake proj-config file will be installed")
# Mark *DIR variables as advanced and dedicated to use by power-users only.
mark_as_advanced(
+3 -3
View File
@@ -23,7 +23,7 @@ if(APPLE)
"if set to ON, build a library framework and application bundle, \
otherwise install classical UNIX bin/lib" OFF)
set(DEFAULT_BINDIR ${BUNDLEDIR})
boost_report_value(BUNDLEDIR)
boost_report_value(PROJ_INSTALL_NAME_DIR)
boost_report_value(FRAMEWORKDIR)
print_variable(BUNDLEDIR)
print_variable(PROJ_INSTALL_NAME_DIR)
print_variable(FRAMEWORKDIR)
endif()
+28
View File
@@ -0,0 +1,28 @@
#
# CMake script to modify README.md to create simpler README file
#
# This is equivalent to: fgrep -v "[!["
#
set(SourceFile "${PROJ_SOURCE_DIR}/README.md")
set(DestFile "${PROJ_SOURCE_DIR}/README")
# Below is based on https://stackoverflow.com/a/30227627
file(READ ${SourceFile} Contents)
# Set the variable "Esc" to the ASCII value 27 as a special escape value
string(ASCII 27 Esc)
# Turn the contents into a list of strings, each ending with Esc
string(REGEX REPLACE "\n" "${Esc};" ContentsAsList "${Contents}")
unset(ModifiedContents)
foreach(Line ${ContentsAsList})
if(NOT "${Line}" MATCHES "\\[!\\[")
# Swap the appended Esc character back out in favour of a line feed
string(REGEX REPLACE "${Esc}" "\n" Line ${Line})
set(ModifiedContents "${ModifiedContents}${Line}")
endif()
endforeach()
file(WRITE ${DestFile} ${ModifiedContents})
+36 -27
View File
@@ -2,33 +2,23 @@
# add test with sh script
#
function(proj_test_set_properties TESTNAME)
set_property(TEST ${TESTNAME}
PROPERTY ENVIRONMENT
"PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY=YES"
"PROJ_LIB=${PROJ_BINARY_DIR}/data/for_tests")
endfunction()
function(proj_add_test_script_sh SH_NAME BIN_USE)
if(UNIX)
get_filename_component(testname ${SH_NAME} NAME_WE)
set(TEST_OK 1)
if(ARGV2)
set(TEST_OK 0)
set(GRID_FULLNAME ${PROJECT_SOURCE_DIR}/data/${ARGV2})
if(EXISTS ${GRID_FULLNAME})
set(TEST_OK 1)
endif()
endif()
if(CMAKE_VERSION VERSION_LESS 2.8.4)
set(TEST_OK 0)
message(STATUS "test with bash script need a cmake version >= 2.8.4")
endif()
if(${TEST_OK})
add_test(NAME "${testname}"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/data
COMMAND ${PROJECT_SOURCE_DIR}/test/cli/${SH_NAME}
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${${BIN_USE}}
)
set_tests_properties( ${testname}
PROPERTIES ENVIRONMENT "PROJ_LIB=${PROJECT_BINARY_DIR}/data/for_tests")
endif()
add_test(NAME "${testname}"
WORKING_DIRECTORY ${PROJ_BINARY_DIR}/test/cli
COMMAND bash ${PROJ_SOURCE_DIR}/test/cli/${SH_NAME}
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${${BIN_USE}}
)
proj_test_set_properties(${testname})
endif()
endfunction()
@@ -37,14 +27,33 @@ endfunction()
function(proj_add_gie_test TESTNAME TESTCASE)
set(GIE_BIN $<TARGET_FILE_NAME:gie>)
set(TESTFILE ${CMAKE_SOURCE_DIR}/test/${TESTCASE})
set(TESTFILE ${PROJ_SOURCE_DIR}/test/${TESTCASE})
add_test(NAME ${TESTNAME}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/test
WORKING_DIRECTORY ${PROJ_SOURCE_DIR}/test
COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${GIE_BIN}
${TESTFILE}
)
set_tests_properties( ${TESTNAME}
PROPERTIES ENVIRONMENT "PROJ_LIB=${PROJECT_BINARY_DIR}/data/for_tests")
proj_test_set_properties(${TESTNAME})
endfunction()
# Create user writable directory for tests
add_custom_target(create_tmp_user_writable_dir ALL
COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJ_BINARY_DIR}/tmp_user_writable_dir)
function(proj_add_gie_network_dependent_test TESTNAME TESTCASE)
set(GIE_BIN $<TARGET_FILE_NAME:gie>)
set(TESTFILE ${PROJ_SOURCE_DIR}/test/${TESTCASE})
add_test(NAME ${TESTNAME}
WORKING_DIRECTORY ${PROJ_SOURCE_DIR}/test
COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${GIE_BIN}
${TESTFILE}
)
set_property(TEST ${TESTNAME}
PROPERTY ENVIRONMENT
"PROJ_USER_WRITABLE_DIRECTORY=${PROJ_BINARY_DIR}/tmp_user_writable_dir"
"PROJ_NETWORK=ON"
"PROJ_LIB=${PROJ_BINARY_DIR}/data/for_tests")
endfunction()
+56 -67
View File
@@ -13,78 +13,25 @@
################################################################################
# Macros in this module:
#
# proj_target_output_name:
# print_variable
# proj_target_output_name
# configure_proj_pc
#
################################################################################
#
# A big shout out to the cmake gurus @ compiz
#
function(colormsg)
string(ASCII 27 _escape)
set(WHITE "29")
set(GRAY "30")
set(RED "31")
set(GREEN "32")
set(YELLOW "33")
set(BLUE "34")
set(MAG "35")
set(CYAN "36")
foreach(color WHITE GRAY RED GREEN YELLOW BLUE MAG CYAN)
set(HI${color} "1\;${${color}}")
set(LO${color} "2\;${${color}}")
set(_${color}_ "4\;${${color}}")
set(_HI${color}_ "1\;4\;${${color}}")
set(_LO${color}_ "2\;4\;${${color}}")
endforeach()
set(str "")
set(coloron FALSE)
foreach(arg ${ARGV})
if(NOT ${${arg}} STREQUAL "")
if(CMAKE_COLOR_MAKEFILE)
set(str "${str}${_escape}[${${arg}}m")
set(coloron TRUE)
endif()
else()
set(str "${str}${arg}")
if(coloron)
set(str "${str}${_escape}[0m")
set(coloron FALSE)
endif()
set(str "${str} ")
endif()
endforeach()
message(STATUS ${str})
endfunction()
# colormsg("Colors:"
# WHITE "white" GRAY "gray" GREEN "green"
# RED "red" YELLOW "yellow" BLUE "blue" MAG "mag" CYAN "cyan"
# _WHITE_ "white" _GRAY_ "gray" _GREEN_ "green"
# _RED_ "red" _YELLOW_ "yellow" _BLUE_ "blue" _MAG_ "mag" _CYAN_ "cyan"
# _HIWHITE_ "white" _HIGRAY_ "gray" _HIGREEN_ "green"
# _HIRED_ "red" _HIYELLOW_ "yellow" _HIBLUE_ "blue" _HIMAG_ "mag"
# _HICYAN_ "cyan" HIWHITE "white" HIGRAY "gray" HIGREEN "green"
# HIRED "red" HIYELLOW "yellow" HIBLUE "blue" HIMAG "mag" HICYAN "cyan"
# "right?")
#
# pretty-prints the value of a variable so that the
# equals signs align
#
function(boost_report_value NAME)
function(print_variable NAME)
string(LENGTH "${NAME}" varlen)
# LOG
#message(STATUS "boost_report_value: NAME=${NAME} (${varlen})")
#message(STATUS "boost_report_value: \${NAME}=${${NAME}}")
math(EXPR padding_len 40-${varlen})
string(SUBSTRING " "
0 ${padding_len} varpadding)
colormsg("${NAME}${varpadding} = ${${NAME}}")
math(EXPR padding_len 30-${varlen})
if(${padding_len} GREATER 0)
string(SUBSTRING " "
0 ${padding_len} varpadding)
endif()
message(STATUS "${NAME}${varpadding} = ${${NAME}}")
endfunction()
#
@@ -98,19 +45,61 @@ function(proj_target_output_name TARGET_NAME OUTPUT_NAME)
message(SEND_ERROR "Error, the variable TARGET_NAME is not defined!")
endif()
if(NOT DEFINED ${PROJECT_INTERN_NAME}_VERSION)
if(NOT DEFINED ${PROJECT_NAME}_VERSION)
message(SEND_ERROR
"Error, the variable ${${PROJECT_INTERN_NAME}_VERSION} is not defined!")
"Error, the variable ${${PROJECT_NAME}_VERSION} is not defined!")
endif()
# On Windows, ABI version is specified using binary file name suffix.
# On Unix, suffix is empty and SOVERSION is used instead.
if(WIN32)
string(LENGTH "${${PROJECT_INTERN_NAME}_ABI_VERSION}" abilen)
string(LENGTH "${${PROJECT_NAME}_ABI_VERSION}" abilen)
if(abilen GREATER 0)
set(SUFFIX "_${${PROJECT_INTERN_NAME}_ABI_VERSION}")
set(SUFFIX "_${${PROJECT_NAME}_ABI_VERSION}")
endif()
endif()
set(${OUTPUT_NAME} ${TARGET_NAME}${SUFFIX} PARENT_SCOPE)
endfunction()
#
# Configure a pkg-config file proj.pc
# See also ProjInstallPath.cmake
#
function(configure_proj_pc)
set(prefix "${CMAKE_INSTALL_PREFIX}")
set(exec_prefix "$\{prefix\}")
set(libdir "$\{exec_prefix\}/${PROJ_LIB_SUBDIR}")
set(includedir "$\{prefix\}/${PROJ_INCLUDE_SUBDIR}")
set(datarootdir "$\{prefix\}/${CMAKE_INSTALL_DATAROOTDIR}")
set(datadir "$\{datarootdir\}")
set(PACKAGE "proj")
set(VERSION ${PROJ_VERSION})
# Build list for Libs.private
set(EXTRA_LIBS
-lstdc++
-lsqlite3
${CMAKE_THREAD_LIBS_INIT}
)
if(TIFF_ENABLED)
list(APPEND EXTRA_LIBS -ltiff)
endif()
if(CURL_ENABLED)
list(APPEND EXTRA_LIBS -lcurl)
endif()
if(HAVE_LIBM)
list(APPEND EXTRA_LIBS -lm)
endif()
if(HAVE_LIBDL)
list(APPEND EXTRA_LIBS -ldl)
endif()
# Join list with a space; list(JOIN) added CMake 3.12
string(REPLACE ";" " " _tmp_str "${EXTRA_LIBS}")
set(EXTRA_LIBS "${_tmp_str}")
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/proj.pc.in
${CMAKE_CURRENT_BINARY_DIR}/proj.pc
@ONLY)
endfunction()
+12 -13
View File
@@ -27,27 +27,26 @@ macro(proj_version)
${ARGN})
# Set version components
set(${PROJECT_INTERN_NAME}_VERSION_MAJOR ${THIS_VERSION_MAJOR})
set(${PROJECT_INTERN_NAME}_VERSION_MINOR ${THIS_VERSION_MINOR})
set(${PROJECT_INTERN_NAME}_VERSION_PATCH ${THIS_VERSION_PATCH})
set(${PROJECT_NAME}_VERSION_MAJOR ${THIS_VERSION_MAJOR})
set(${PROJECT_NAME}_VERSION_MINOR ${THIS_VERSION_MINOR})
set(${PROJECT_NAME}_VERSION_PATCH ${THIS_VERSION_PATCH})
# Set VERSION string
set(${PROJECT_INTERN_NAME}_VERSION
"${${PROJECT_INTERN_NAME}_VERSION_MAJOR}.\
${${PROJECT_INTERN_NAME}_VERSION_MINOR}.\
${${PROJECT_INTERN_NAME}_VERSION_PATCH}")
set(${PROJECT_NAME}_VERSION
"${${PROJECT_NAME}_VERSION_MAJOR}.\
${${PROJECT_NAME}_VERSION_MINOR}.\
${${PROJECT_NAME}_VERSION_PATCH}")
# Set ABI version string used to name binary output
# On Windows, ABI version is specified using binary file name suffix.
if(WIN32)
set(${PROJECT_INTERN_NAME}_ABI_VERSION
"${${PROJECT_INTERN_NAME}_VERSION_MAJOR}_\
${${PROJECT_INTERN_NAME}_VERSION_MINOR}")
set(${PROJECT_NAME}_ABI_VERSION
"${${PROJECT_NAME}_VERSION_MAJOR}_\
${${PROJECT_NAME}_VERSION_MINOR}")
endif()
message(STATUS "")
boost_report_value(${PROJECT_INTERN_NAME}_VERSION)
print_variable(${PROJECT_NAME}_VERSION)
if(WIN32)
boost_report_value(${PROJECT_INTERN_NAME}_ABI_VERSION)
print_variable(${PROJECT_NAME}_ABI_VERSION)
endif()
endmacro()
+2 -35
View File
@@ -1,42 +1,12 @@
/* Define to 1 if you have the <dlfcn.h> header file. */
#cmakedefine HAVE_DLFCN_H 1
/* Define to 1 if you have the <inttypes.h> header file. */
#cmakedefine HAVE_INTTYPES_H 1
/* Define to 1 if you have the `m' library (-lm). */
#cmakedefine HAVE_LIBM 1
/* Define to 1 if you have the `dl' library (-ldl). */
#cmakedefine HAVE_LIBDL 1
/* Define to 1 if you have localeconv */
#cmakedefine HAVE_LOCALECONV 1
/* Define to 1 if you have the <memory.h> header file. */
#cmakedefine HAVE_MEMORY_H 1
/* Define to 1 if you have the <stdint.h> header file. */
#cmakedefine HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#cmakedefine HAVE_STDLIB_H 1
/* Define to 1 if you have the `strerror' function. */
#cmakedefine HAVE_STRERROR 1
/* Define to 1 if you have the <strings.h> header file. */
#cmakedefine HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#cmakedefine HAVE_STRING_H 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#cmakedefine HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#cmakedefine HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <unistd.h> header file. */
#cmakedefine HAVE_UNISTD_H 1
/* Name of package */
#cmakedefine PACKAGE "${PACKAGE}"
@@ -55,8 +25,5 @@
/* Define to the version of this package. */
#cmakedefine PACKAGE_VERSION "${PACKAGE_VERSION}"
/* Define to 1 if you have the ANSI C header files. */
#cmakedefine STDC_HEADERS 1
/* Version number of package */
#cmakedefine VERSION "${VERSION}"
+5 -5
View File
@@ -1,4 +1,4 @@
# Version checking for @PROJECT_NAME@
# Version checking for @PROJECT_VARIANT_NAME@
set (PACKAGE_VERSION "@PROJ_VERSION@")
set (PACKAGE_VERSION_MAJOR "@PROJ_VERSION_MAJOR@")
@@ -22,18 +22,18 @@ else ()
set (CMAKE_CROSSCOMPILING_STR "OFF")
endif ()
if (NOT PACKAGE_FIND_NAME STREQUAL "@PROJECT_NAME@")
if (NOT PACKAGE_FIND_NAME STREQUAL "@PROJECT_VARIANT_NAME@")
# Check package name (in particular, because of the way cmake finds
# package config files, the capitalization could easily be "wrong").
# This is necessary to ensure that the automatically generated
# variables, e.g., <package>_FOUND, are consistently spelled.
set (REASON "package = @PROJECT_NAME@, NOT ${PACKAGE_FIND_NAME}")
set (REASON "package = @PROJECT_VARIANT_NAME@, NOT ${PACKAGE_FIND_NAME}")
set (PACKAGE_VERSION_UNSUITABLE TRUE)
elseif (NOT (APPLE OR (NOT DEFINED CMAKE_SIZEOF_VOID_P) OR
CMAKE_SIZEOF_VOID_P EQUAL @CMAKE_SIZEOF_VOID_P@))
CMAKE_SIZEOF_VOID_P EQUAL "@CMAKE_SIZEOF_VOID_P@"))
# Reject if there's a 32-bit/64-bit mismatch (not necessary with Apple
# since a multi-architecture library is built for that platform).
set (REASON "sizeof(*void) = @CMAKE_SIZEOF_VOID_P@")
set (REASON "sizeof(*void) = @CMAKE_SIZEOF_VOID_P@")
set (PACKAGE_VERSION_UNSUITABLE TRUE)
elseif (MSVC AND NOT (
# toolset version must be at least as great as @PROJECT_NAME@'s
+16 -18
View File
@@ -1,32 +1,30 @@
# Configure @PROJECT_NAME@
#
# Set
# @PROJECT_NAME@_FOUND = 1
# @PROJECT_NAME@_INCLUDE_DIRS = /usr/local/include
# @PROJECT_NAME@_LIBRARIES = proj
# @PROJECT_NAME@_LIBRARY_DIRS = /usr/local/lib
# @PROJECT_NAME@_BINARY_DIRS = /usr/local/bin
# @PROJECT_NAME@_VERSION = 4.9.1 (for example)
message (STATUS "Reading ${CMAKE_CURRENT_LIST_FILE}")
# @PROJECT_NAME@_VERSION is set by version file
message (STATUS
"@PROJECT_NAME@ configuration, version ${@PROJECT_NAME@_VERSION}")
# @PROJECT_VARIANT_NAME@_FOUND = 1
# @PROJECT_VARIANT_NAME@_INCLUDE_DIRS = /usr/local/include
# @PROJECT_VARIANT_NAME@_LIBRARIES = @PROJECT_VARIANT_NAME@::proj
# @PROJECT_VARIANT_NAME@_LIBRARY_DIRS = /usr/local/lib
# @PROJECT_VARIANT_NAME@_BINARY_DIRS = /usr/local/bin
# @PROJECT_VARIANT_NAME@_VERSION = 4.9.1 (for example)
# Tell the user project where to find our headers and libraries
get_filename_component (_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
get_filename_component (_ROOT "${_DIR}/@PROJECT_ROOT_DIR@" ABSOLUTE)
set (@PROJECT_NAME@_INCLUDE_DIRS "${_ROOT}/@INCLUDEDIR@")
set (@PROJECT_NAME@_LIBRARY_DIRS "${_ROOT}/@LIBDIR@")
set (@PROJECT_NAME@_BINARY_DIRS "${_ROOT}/@BINDIR@")
set (@PROJECT_VARIANT_NAME@_INCLUDE_DIRS "${_ROOT}/@INCLUDEDIR@")
set (@PROJECT_VARIANT_NAME@_LIBRARY_DIRS "${_ROOT}/@LIBDIR@")
set (@PROJECT_VARIANT_NAME@_BINARY_DIRS "${_ROOT}/@BINDIR@")
set (@PROJECT_NAME@_LIBRARIES @PROJECT_NAME@::proj)
set (@PROJECT_VARIANT_NAME@_LIBRARIES @PROJECT_VARIANT_NAME@::proj)
# Read in the exported definition of the library
include ("${_DIR}/@PROJECT_NAME_LOWER@-targets.cmake")
include ("${_DIR}/@PROJECT_NAME_LOWER@-namespace-targets.cmake")
include ("${_DIR}/@PROJECT_LEGACY_LOWER@-targets.cmake")
unset (_ROOT)
unset (_DIR)
# For backward compatibility with old releases of libgeotiff
set (@PROJECT_NAME@_INCLUDE_DIR ${@PROJECT_NAME@_INCLUDE_DIRS})
if ("@PROJECT_VARIANT_NAME@" STREQUAL "PROJ4")
# For backward compatibility with old releases of libgeotiff
set (@PROJECT_VARIANT_NAME@_INCLUDE_DIR
${@PROJECT_VARIANT_NAME@_INCLUDE_DIRS})
endif ()
+125 -8
View File
@@ -1,7 +1,7 @@
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT([PROJ], [7.0.0],
AC_INIT([PROJ], [8.2.1],
[https://github.com/OSGeo/PROJ/issues], proj, [https://proj.org])
AC_CONFIG_MACRO_DIR([m4])
AC_LANG(C)
@@ -20,6 +20,8 @@ AC_PROG_LN_S
AC_PROG_MAKE_SET
AM_PROG_LIBTOOL
PKG_PROG_PKG_CONFIG
dnl Enable as much warnings as possible
AX_CFLAGS_WARN_ALL(C_WFLAGS)
AX_CXXFLAGS_WARN_ALL(CXX_WFLAGS)
@@ -87,7 +89,6 @@ dnl C++ specific stuff
AC_LANG_PUSH([C++])
AX_CHECK_COMPILE_FLAG([-Wunused-private-field], [CXX_WFLAGS="$CXX_WFLAGS -Wunused-private-field"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wmissing-prototypes], [CXX_WFLAGS="$CXX_WFLAGS -Wmissing-prototypes"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wmissing-declarations], [CXX_WFLAGS="$CXX_WFLAGS -Wmissing-declarations"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wnon-virtual-dtor], [CXX_WFLAGS="$CXX_WFLAGS -Wnon-virtual-dtor" NO_NON_VIRTUAL_DTOR_FLAG="-Wno-non-virtual-dtor"],,[$ERROR_ON_UNKNOWN_OPTIONS])
AX_CHECK_COMPILE_FLAG([-Wold-style-cast], [WARN_OLD_STYLE_CAST="-Wold-style-cast"],,[$ERROR_ON_UNKNOWN_OPTIONS])
@@ -124,7 +125,6 @@ if test "$HAVE_GCC_WARNING_ZERO_AS_NULL_POINTER_CONSTANT" = "yes"; then
AC_DEFINE_UNQUOTED(HAVE_GCC_WARNING_ZERO_AS_NULL_POINTER_CONSTANT, 1,
[Define to 1 if the compiler supports -Wzero-as-null-pointer-constant])
fi
AC_LANG_POP([C++])
dnl ---------------------------------------------------------------------------
@@ -169,10 +169,19 @@ AC_SUBST(NO_ZERO_AS_NULL_POINTER_CONSTANT_FLAG,$NO_ZERO_AS_NULL_POINTER_CONSTANT
CFLAGS="${CFLAGS} -fvisibility=hidden"
CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
case "${host_os}" in
cygwin* | mingw32* | pw32* | beos* | darwin*)
CFLAGS="${CFLAGS} -DNOMINMAX"
CXXFLAGS="${CXXFLAGS} -DNOMINMAX"
;;
*)
;;
esac
dnl Checks for libraries.
save_CFLAGS="$CFLAGS"
CFLAGS=`echo "$CFLAGS" | sed "s/-Werror/ /"`
AC_CHECK_LIB(m,exp,,,)
AC_CHECK_LIB(m,exp,,HAVE_LIBM=no,)
CFLAGS="$save_CFLAGS"
dnl We check for headers
@@ -189,6 +198,7 @@ AC_SEARCH_LIBS([sqrt], [m])
AC_CHECK_FUNC(localeconv, [AC_DEFINE(HAVE_LOCALECONV,1,[Define to 1 if you have localeconv])])
AC_CHECK_FUNCS([strerror])
AC_CHECK_LIB(dl,dladdr,,HAVE_LIBDL=no,)
dnl ---------------------------------------------------------------------------
dnl Provide a mechanism to disable real mutex support (if lacking win32 or
@@ -227,7 +237,7 @@ dnl ---------------------------------------------------------------------------
if test "x$SQLITE3_CFLAGS$SQLITE3_LIBS" = "x" ; then
dnl Would build and run with older versons, but with horrible performance
dnl Would build and run with older versions, but with horrible performance
dnl See https://github.com/OSGeo/PROJ/issues/1718
PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= 3.11])
@@ -240,6 +250,111 @@ if test x"$SQLITE3_CHECK" != x"yes" ; then
AC_MSG_ERROR([Please install sqlite3 binary.])
fi
dnl ---------------------------------------------------------------------------
dnl Check for libtiff
dnl ---------------------------------------------------------------------------
AC_ARG_ENABLE([tiff],
AS_HELP_STRING([--enable-tiff],
[Enable TIFF support; strongly encouraged to read some grids [default=yes]]))
if test "x$enable_tiff" != "xno" -o "x$enable_tiff" = ""; then
if test "x$TIFF_CFLAGS$TIFF_LIBS" = "x" ; then
if $PKG_CONFIG libtiff; then
PKG_CHECK_MODULES([TIFF], [libtiff])
else
PKG_CHECK_MODULES([TIFF], [libtiff-4])
fi
fi
TIFF_ENABLED_FLAGS=-DTIFF_ENABLED
fi
AC_SUBST(TIFF_CFLAGS,$TIFF_CFLAGS)
AC_SUBST(TIFF_LIBS,$TIFF_LIBS)
AC_SUBST(TIFF_ENABLED_FLAGS,$TIFF_ENABLED_FLAGS)
dnl ---------------------------------------------------------------------------
dnl Check for curl
dnl ---------------------------------------------------------------------------
FOUND_CURL=no
CURL_CFLAGS=
CURL_LIB=
AC_ARG_WITH(curl,
[ --with-curl[=ARG] Enable curl support (ARG=path to curl-config.)],,,)
dnl Clear some cache variables
unset ac_cv_path_LIBCURL
if test "`basename xx/$with_curl`" = "curl-config" ; then
LIBCURL_CONFIG="$with_curl"
elif test "$with_curl" = "no" ; then
LIBCURL_CONFIG=no
else
AC_PATH_PROG(LIBCURL_CONFIG, curl-config, not-found)
fi
if test "$LIBCURL_CONFIG" = "not-found" ; then
AC_MSG_ERROR([curl not found. If wanting to do a build without curl support (and thus without built-in networking capability), explictly disable it with --without-curl])
elif test "$LIBCURL_CONFIG" != "no" ; then
CURL_VERNUM=`$LIBCURL_CONFIG --vernum`
CURL_VER=`$LIBCURL_CONFIG --version | awk '{print $2}'`
AC_MSG_RESULT([ found libcurl version $CURL_VER])
AC_CHECK_LIB(curl,curl_global_init,FOUND_CURL=yes,FOUND_CURL=no,`$LIBCURL_CONFIG --libs`)
if test "$FOUND_CURL" = "no" ; then
AC_MSG_ERROR([curl not found. If wanting to do a build without curl support (and thus without built-in networking capability), explictly disable it with --without-curl])
fi
CURL_ENABLED_FLAGS=-DCURL_ENABLED
fi
if test "$FOUND_CURL" = "yes" ; then
CURL_CFLAGS=`$LIBCURL_CONFIG --cflags`
CURL_LIBS=`$LIBCURL_CONFIG --libs`
fi
AC_SUBST(CURL_CFLAGS,$CURL_CFLAGS)
AC_SUBST(CURL_LIBS,$CURL_LIBS)
AC_SUBST(CURL_ENABLED_FLAGS,$CURL_ENABLED_FLAGS)
AM_CONDITIONAL(HAVE_CURL, [test "x$FOUND_CURL" = "xyes"])
dnl ---------------------------------------------------------------------------
dnl Check for extra libraries, required for static linking with pkg-config
dnl ---------------------------------------------------------------------------
EXTRA_LIBS="-lstdc++ -lsqlite3"
if test "no$THREAD_LIB" != "no"; then
EXTRA_LIBS="$EXTRA_LIBS $THREAD_LIB"
fi
if test "x$enable_tiff" != "xno" -o "x$enable_tiff" = ""; then
EXTRA_LIBS="$EXTRA_LIBS -ltiff"
fi
if test "$FOUND_CURL" = "yes" ; then
EXTRA_LIBS="$EXTRA_LIBS -lcurl"
fi
if test "$HAVE_LIBM" != "no" ; then
EXTRA_LIBS="$EXTRA_LIBS -lm"
fi
if test "$HAVE_LIBDL" != "no" ; then
EXTRA_LIBS="$EXTRA_LIBS -ldl"
fi
AC_SUBST(EXTRA_LIBS,$EXTRA_LIBS)
dnl ---------------------------------------------------------------------------
dnl proj-lib-env-var-tried-last
dnl ---------------------------------------------------------------------------
AC_ARG_ENABLE(proj-lib-env-var-tried-last,
AS_HELP_STRING([--enable-proj-lib-env-var-tried-last],
[Whether the PROJ_LIB environment variable should be tried after the hardcoded location [default=no]]))
if test "x$enable_proj_lib_env_var_tried_last" = "xyes"; then
AC_SUBST(PROJ_LIB_ENV_VAR_TRIED_LAST_FLAGS,-DPROJ_LIB_ENV_VAR_TRIED_LAST)
fi
dnl ---------------------------------------------------------------------------
dnl Check for external Google Test
dnl ---------------------------------------------------------------------------
@@ -264,10 +379,12 @@ dnl ---------------------------------------------------------------------------
dnl Generate files
dnl ---------------------------------------------------------------------------
AC_CONFIG_FILES([Makefile cmake/Makefile src/Makefile include/Makefile include/proj/Makefile include/proj/internal/Makefile
include/proj/internal/nlohmann/Makefile
AC_CONFIG_FILES([Makefile cmake/Makefile src/Makefile include/Makefile include/proj/Makefile
include/proj/internal/Makefile
include/proj/internal/vendor/Makefile
include/proj/internal/vendor/nlohmann/Makefile
test/Makefile test/cli/Makefile test/gie/Makefile test/gigs/Makefile test/unit/Makefile
man/Makefile man/man1/Makefile man/man3/Makefile data/Makefile])
man/Makefile man/man1/Makefile data/Makefile])
if ! test "x$with_external_gtest" = "xyes" ; then
AC_CONFIG_FILES([test/googletest/Makefile test/googletest/include/Makefile
test/googletest/include/gtest/Makefile
+2 -2
View File
@@ -18,6 +18,6 @@
#
<metadata> +origin=Swisstopo +lastupdate=2012-02-27
# CH1903/LV03
<1903_LV03> +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +units=m +nadgrids=CHENYX06_etrs.gsb +no_defs
<1903_LV03> +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +units=m +nadgrids=CHENyx06_ETRS.gsb +no_defs
# CH1903
<1903> +proj=longlat +ellps=bessel +nadgrids=CHENYX06_etrs.gsb +no_defs <>
<1903> +proj=longlat +ellps=bessel +nadgrids=CHENyx06_ETRS.gsb +no_defs <>
+37 -32
View File
@@ -2,8 +2,11 @@
# files containing dictionary of useful projection
#
set(CONFIG_FILES
proj.ini
)
set(PROJ_DICTIONARY
null
world
other.extra
nad27
@@ -24,29 +27,20 @@ file(GLOB GSB_FILES *.gsb)
file(GLOB GTX_FILES *.gtx)
set(GRIDSHIFT_FILES ${GSB_FILES} ${GTX_FILES})
file(GLOB SCHEMA_FILES *.json)
set(ALL_SQL_IN "${CMAKE_CURRENT_BINARY_DIR}/all.sql.in")
set(PROJ_DB "${CMAKE_CURRENT_BINARY_DIR}/proj.db")
include(sql_filelist.cmake)
add_custom_command(
OUTPUT ${ALL_SQL_IN}
COMMAND ${CMAKE_COMMAND} "-DALL_SQL_IN=${ALL_SQL_IN}"
-P "${CMAKE_CURRENT_SOURCE_DIR}/generate_all_sql_in.cmake"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
DEPENDS ${SQL_FILES}
COMMENT "Generating all.sql.in"
VERBATIM
)
add_custom_target(generate_all_sql_in ALL DEPENDS ${ALL_SQL_IN})
add_custom_command(
OUTPUT ${PROJ_DB}
COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJ_DB}
COMMAND ${EXE_SQLITE3} -init ${ALL_SQL_IN} ${PROJ_DB} .quit
COMMAND ${CMAKE_COMMAND} "-DALL_SQL_IN=${ALL_SQL_IN}" "-DEXE_SQLITE3=${EXE_SQLITE3}" "-DPROJ_DB=${PROJ_DB}" "-DPROJ_VERSION=${PROJ_VERSION}"
-P "${CMAKE_CURRENT_SOURCE_DIR}/generate_proj_db.cmake"
COMMAND ${CMAKE_COMMAND} -E copy ${PROJ_DB} ${CMAKE_CURRENT_BINARY_DIR}/for_tests
# note: we didn't port yet the foreign_key_check done in Makefile.am
DEPENDS generate_all_sql_in ${ALL_SQL_IN}
DEPENDS ${SQL_FILES} "${CMAKE_CURRENT_SOURCE_DIR}/generate_proj_db.cmake"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMENT "Generating proj.db"
VERBATIM
)
@@ -54,7 +48,7 @@ add_custom_command(
add_custom_target(generate_proj_db ALL DEPENDS ${PROJ_DB})
if(NOT "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
foreach(FILE ${PROJ_DICTIONARY} ${GRIDSHIFT_FILES})
foreach(FILE ${CONFIG_FILES} ${PROJ_DICTIONARY} ${GRIDSHIFT_FILES})
configure_file(${FILE} ${FILE} COPYONLY)
endforeach()
endif()
@@ -64,35 +58,46 @@ endif()
# Note: this is done at configure/cmake time, not build time.
# So if you install new grids in the source data/ subdirectory, run cmake again
set(DATA_FOR_TESTS
null
GL27
nad27
nad83
ntv1_can.dat
MD
ntf_r93.gsb
egm96_15.gtx
ntv2_0.gsb
conus
alaska
nzgd2kgrid0005.gsb
ITRF2000
BETA2007.gsb)
ITRF2000)
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/for_tests)
foreach(FILE ${DATA_FOR_TESTS})
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${FILE} ${CMAKE_CURRENT_BINARY_DIR}/for_tests/${FILE} COPYONLY)
endif()
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/for_tests/tests)
foreach(FILE ${DATA_FOR_TESTS} ${CONFIG_FILES})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${FILE} ${CMAKE_CURRENT_BINARY_DIR}/for_tests/${FILE} COPYONLY)
endforeach()
file(GLOB DATA_TESTS tests/*)
foreach(FILE ${DATA_TESTS})
get_filename_component(FILENAME ${FILE} NAME)
configure_file(${FILE} ${CMAKE_CURRENT_BINARY_DIR}/for_tests/tests/${FILENAME} COPYONLY)
endforeach()
set(DATA_FOR_TESTS_FROM_TESTS_SUBDIR
alaska
BETA2007.gsb
conus
MD
ntf_r93.gsb
ntv1_can.dat)
foreach(FILE ${DATA_FOR_TESTS_FROM_TESTS_SUBDIR})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tests/${FILE} ${CMAKE_CURRENT_BINARY_DIR}/for_tests/${FILE} COPYONLY)
endforeach()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tests/egm96_15_downsampled.gtx ${CMAKE_CURRENT_BINARY_DIR}/for_tests/egm96_15.gtx COPYONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tests/ntv2_0_downsampled.gsb ${CMAKE_CURRENT_BINARY_DIR}/for_tests/ntv2_0.gsb COPYONLY)
#
#install
#
set(ALL_DATA_FILE
${CONFIG_FILES}
${PROJ_DICTIONARY}
${GRIDSHIFT_FILES}
${PROJ_DB}
${SCHEMA_FILES}
)
install(
FILES ${ALL_DATA_FILE}
+131 -39
View File
@@ -1,22 +1,28 @@
DATAPATH = $(top_srcdir)/data
pkgdata_DATA = GL27 nad.lst nad27 nad83 world other.extra \
CH null \
pkgdata_DATA = proj.ini GL27 nad.lst nad27 nad83 world other.extra \
CH \
ITRF2000 ITRF2008 ITRF2014 proj.db \
projjson.schema.json
projjson.schema.json \
deformation_model.schema.json \
triangulation.schema.json
SQL_ORDERED_LIST = sql/begin.sql \
sql/proj_db_table_defs.sql \
sql/conversion_triggers.sql \
sql/customizations_early.sql \
sql/metadata.sql \
sql/unit_of_measure.sql \
sql/area.sql \
sql/extent.sql \
sql/scope.sql \
sql/coordinate_system.sql \
sql/axis.sql \
sql/ellipsoid.sql \
sql/prime_meridian.sql \
sql/geodetic_datum.sql \
sql/geodetic_datum_ensemble_member.sql \
sql/vertical_datum.sql \
sql/vertical_datum_ensemble_member.sql \
sql/conversion.sql \
sql/geodetic_crs.sql \
sql/projected_crs.sql \
@@ -26,6 +32,7 @@ SQL_ORDERED_LIST = sql/begin.sql \
sql/grid_transformation.sql \
sql/grid_transformation_custom.sql \
sql/other_transformation.sql \
sql/other_transformation_custom.sql \
sql/concatenated_operation.sql \
sql/concatenated_operation_step.sql \
sql/alias_name.sql \
@@ -33,24 +40,104 @@ SQL_ORDERED_LIST = sql/begin.sql \
sql/deprecation.sql \
sql/esri.sql \
sql/ignf.sql \
sql/nkg.sql \
sql/iau.sql \
sql/grid_alternatives.sql \
sql/grid_alternatives_generated.sql \
sql/grid_alternatives_generated_noaa.sql \
sql/customizations.sql \
sql/nkg_post_customizations.sql \
sql/commit.sql
EXTRA_DIST = GL27 nad.lst nad27 nad83 \
EXTRA_DIST = proj.ini GL27 nad.lst nad27 nad83 \
world other.extra \
CH \
ITRF2000 ITRF2008 ITRF2014 \
projjson.schema.json \
CMakeLists.txt tests/test_nodata.gtx null \
generate_all_sql_in.cmake sql_filelist.cmake \
deformation_model.schema.json \
triangulation.schema.json \
CMakeLists.txt \
tests/test_nodata.gtx \
tests/test_vgrid_bigendian_bigtiff.tif \
tests/test_vgrid_bigendian.tif \
tests/test_vgrid_bigtiff.tif \
tests/test_vgrid_bottomup_with_matrix.tif \
tests/test_vgrid_bottomup_with_scale.tif \
tests/test_vgrid_deflate_floatingpointpredictor.tif \
tests/test_vgrid_deflate.tif \
tests/test_vgrid_float64.tif \
tests/test_vgrid_in_second_channel.tif \
tests/test_vgrid_int16.tif \
tests/test_vgrid_int32.tif \
tests/test_vgrid_uint32.tif \
tests/test_vgrid_invalid_channel_type.tif \
tests/test_vgrid_nodata.tif \
tests/test_vgrid_pixelisarea.tif \
tests/test_vgrid_pixelispoint.tif \
tests/test_vgrid_uint16.tif \
tests/test_vgrid_uint16_with_scale_offset.tif \
tests/test_vgrid_unsupported_byte.tif \
tests/test_vgrid_with_overview.tif \
tests/test_vgrid_with_subgrid.tif \
tests/test_hgrid.tif \
tests/test_hgrid_separate.tif \
tests/test_hgrid_tiled.tif \
tests/test_hgrid_tiled_separate.tif \
tests/test_hgrid_strip.tif \
tests/test_hgrid_positive_west.tif \
tests/test_hgrid_lon_shift_first.tif \
tests/test_hgrid_radian.tif \
tests/test_hgrid_degree.tif \
tests/test_hgrid_with_overview.tif \
tests/test_hgrid_extra_ifd_with_other_info.tif \
tests/test_hgrid_with_subgrid.tif \
tests/test_hgrid_with_subgrid_no_grid_name.tif \
tests/subset_of_gr3df97a.tif \
tests/egm96_15_uncompressed_truncated.tif \
tests/test_vgrid_single_strip_truncated.tif \
tests/nkgrf03vel_realigned_extract.tif \
tests/nkgrf03vel_realigned_xy_extract.ct2 \
tests/nkgrf03vel_realigned_z_extract.gtx \
tests/test_hgrid_with_two_level_of_subgrids_no_grid_name.tif \
tests/us_noaa_geoid06_ak_subset_at_antimeridian.tif \
tests/test_hgrid_little_endian.gsb \
tests/test_hgrid_big_endian.gsb \
tests/test_3d_grid_projected.tif \
tests/BETA2007.gsb \
tests/MD \
tests/alaska \
tests/conus \
tests/egm96_15_downsampled.gtx \
tests/ntv1_can.dat \
tests/ntv2_0_downsampled.gsb \
tests/ntf_r93.gsb \
tests/simple_model_degree_3d_grid.tif \
tests/simple_model_degree_horizontal.json \
tests/simple_model_degree_3d.json \
tests/simple_model_metre_3d_grid.tif \
tests/simple_model_metre_horizontal.json \
tests/simple_model_metre_3d.json \
tests/simple_model_metre_3d_geocentric.json \
tests/simple_model_metre_vertical_grid.tif \
tests/simple_model_metre_vertical.json \
tests/simple_model_polar.json \
tests/simple_model_polar.tif \
tests/simple_model_wrap_east.json \
tests/simple_model_wrap_east.tif \
tests/simple_model_wrap_west.json \
tests/simple_model_wrap_west.tif \
tests/simple_model_projected.json \
tests/tinshift_crs_implicit.json \
tests/tinshift_simplified_kkj_etrs.json \
tests/tinshift_simplified_n60_n2000.json \
tests/tinshift_fallback_nearest_side.json \
tests/tinshift_fallback_nearest_centroid.json \
generate_proj_db.cmake sql_filelist.cmake \
$(SQL_ORDERED_LIST)
install-data-local:
$(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
@for gridfile in $(DATAPATH)/*.gsb $(DATAPATH)/*.gtx $(DATAPATH)/ntv1_can.dat dummy \
$(DATAPATH)/alaska $(DATAPATH)/conus $(DATAPATH)/hawaii $(DATAPATH)/null \
$(DATAPATH)/alaska $(DATAPATH)/conus $(DATAPATH)/hawaii \
$(DATAPATH)/prvi $(DATAPATH)/stgeorge $(DATAPATH)/stlrnc $(DATAPATH)/stpaul \
$(DATAPATH)/FL $(DATAPATH)/MD $(DATAPATH)/TN $(DATAPATH)/WI $(DATAPATH)/WO; do \
if test "$$gridfile" != "dummy" -a -f "$$gridfile" ; then \
@@ -59,45 +146,49 @@ install-data-local:
fi; \
done
# head -c1 not handled on Solaris
proj.db: $(DATAPATH)/sql/*.sql
@echo "Make proj.db"
$(RM) proj.db
@export SQL_EXPANDED_LIST=""; \
for x in $(SQL_ORDERED_LIST); do \
export SQL_EXPANDED_LIST="$${SQL_EXPANDED_LIST} $(DATAPATH)/$$x"; \
export SQL_EXPANDED_LIST="$${SQL_EXPANDED_LIST} $(DATAPATH)/$$x"; \
done; \
cat $${SQL_EXPANDED_LIST} | sed 's/$${PROJ_VERSION}/${PACKAGE_VERSION}/' > all.sql.in; \
if test "x$(PROJ_DB_CACHE_DIR)" != "x" -a -x "$$(command -v md5sum)" -a -f "$(PROJ_DB_CACHE_DIR)/proj.db" -a -f "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5" ; then \
cat $${SQL_EXPANDED_LIST} | md5sum | diff - "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5" > /dev/null \
cat all.sql.in | md5sum | diff - "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5" > /dev/null \
&& (echo "Reusing cached proj.db"; cp "$(PROJ_DB_CACHE_DIR)/proj.db" proj.db); \
fi; \
if test ! -f proj.db ; then \
cat $${SQL_EXPANDED_LIST} | sqlite3 proj.db; \
cat all.sql.in | sqlite3 proj.db; \
fi; \
if [ $$? -ne 0 ] ; then \
echo "Build of proj.db failed"; \
$(RM) proj.db; \
exit 1; \
fi; \
echo "" | head -c1; \
if [ $$? -eq 0 ] ; then \
echo "Running foreign_key_check"; \
if [[ $$(echo "pragma foreign_key_check;" | sqlite3 proj.db | head -c1 | wc -c) -ne 0 ]]; then \
echo "Foreign key check failed"; \
$(RM) proj.db; \
exit 1; \
else \
if test "x$(PROJ_DB_CACHE_DIR)" != "x" -a -x "$$(command -v md5sum)" ; then \
fi; \
if test "x$(PROJ_DB_CACHE_DIR)" != "x" -a -x "$$(command -v md5sum)" ; then \
mkdir -p "$(PROJ_DB_CACHE_DIR)"; \
cat $${SQL_EXPANDED_LIST} | md5sum > "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5"; \
cat all.sql.in | md5sum > "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5"; \
cp proj.db "$(PROJ_DB_CACHE_DIR)"; \
fi \
fi \
fi
fi; \
$(RM) all.sql.in
# For out-of-tree builds, link all file of the source data dir to the generated data
# Also link select resource files in a for_tests subdirectory so that we are not
# influenced by the presence of other grids
# egm96_15_downsampled.gtx created with
# gdal_translate proj-datumgrid/egm96_15.gtx egm96_15_downsampled.gtx -of GTX -outsize 25% 25% -r average
# ntv2_0_downsampled.gsb created with:
# gdal_translate NTv2:0:/home/even/proj/proj-datumgrid/north-america/ntv2_0.gsb /tmp/ntv2_0_downsampled.gsb -of NTv2 -outsize 10% 10%
# gdal_translate NTv2:1:/home/even/proj/proj-datumgrid/north-america/ntv2_0.gsb /tmp/ntv2_0_downsampled.gsb -of NTv2 -outsize 10% 10% -co append_subdataset=yes
# gdal_translate NTv2:2:/home/even/proj/proj-datumgrid/north-america/ntv2_0.gsb /tmp/ntv2_0_downsampled.gsb -of NTv2 -outsize 10% 10% -co append_subdataset=yes
# gdal_translate NTv2:3:/home/even/proj/proj-datumgrid/north-america/ntv2_0.gsb /tmp/ntv2_0_downsampled.gsb -of NTv2 -outsize 10% 10% -co append_subdataset=yes
# gdal_translate NTv2:99:/home/even/proj/proj-datumgrid/north-america/ntv2_0.gsb /tmp/ntv2_0_downsampled.gsb -of NTv2 -co append_subdataset=yes
# gdal_translate NTv2:44:/home/even/proj/proj-datumgrid/north-america/ntv2_0.gsb /tmp/ntv2_0_downsampled.gsb -of NTv2 -co append_subdataset=yes
# gdal_translate NTv2:4:/home/even/proj/proj-datumgrid/north-america/ntv2_0.gsb /tmp/ntv2_0_downsampled.gsb -of NTv2 -co append_subdataset=yes
check-local:
@if [ ! -f GL27 ]; then \
for x in $(DATAPATH)/*; do \
@@ -106,27 +197,28 @@ check-local:
fi; \
rm -rf for_tests; \
mkdir for_tests; \
for x in $(DATAPATH)/null \
$(DATAPATH)/GL27 \
for x in $(DATAPATH)/GL27 \
$(DATAPATH)/nad27 \
$(DATAPATH)/nad83 \
$(DATAPATH)/ntv1_can.dat \
$(DATAPATH)/MD \
$(DATAPATH)/ntf_r93.gsb \
$(DATAPATH)/egm96_15.gtx \
$(DATAPATH)/ntv2_0.gsb \
$(DATAPATH)/conus \
$(DATAPATH)/alaska \
$(DATAPATH)/nzgd2kgrid0005.gsb \
$(DATAPATH)/tests/ntv1_can.dat \
$(DATAPATH)/tests/MD \
$(DATAPATH)/tests/ntf_r93.gsb \
$(DATAPATH)/tests/conus \
$(DATAPATH)/tests/alaska \
$(DATAPATH)/ITRF2000 \
$(DATAPATH)/BETA2007.gsb; \
$(DATAPATH)/tests/BETA2007.gsb; \
do \
if test -f "$$x" ; then \
ln -sf "../$$x" for_tests; \
else \
echo "WARNING: grid $$x missing: some tests will be skipped"; \
echo "ERROR: grid $$x missing: some tests will be skipped"; \
exit 1; \
fi \
done; \
ln -sf ../$(DATAPATH)/tests for_tests; \
ln -sf ../$(DATAPATH)/tests/ntv2_0_downsampled.gsb for_tests/ntv2_0.gsb; \
ln -sf ../$(DATAPATH)/tests/egm96_15_downsampled.gtx for_tests/egm96_15.gtx; \
ln -sf ../$(DATAPATH)/proj.ini for_tests; \
ln -sf ../proj.db for_tests
clean-local:
+1 -16
View File
@@ -4,16 +4,6 @@ File Contents:
README --- This file
epsg --- Translation of EPSG GCS/PCS codes into PROJ via init= mechanism.
epsg-deprecated --- EPSG definitions that have been deprecated. They are
not part of 'epsg' anymore, but may have been delivered
with earlier versions of 'epsg'.
Thus, they might occur e.g. in WMS (Web Mapping Services)
running with old EPSG definitions.
This file is not complete at all - it contains just
definitions that were individually reported.
nad27 --- North American Datum 1927 for "init=" definition of
State Plane Coordinate Systems (SPCS).
@@ -25,9 +15,4 @@ world --- Proj specifications for several international grid systems.
nad.lst --- Reference list of SPCS States and NGS datum identifiers
IGNF --- Translation of French Mapping Agency codes into PROJ via init= mechanism.
install --- Unix shell (sh) script to install proj init files.
Read beginning for usage instructions.
Additional data files are available in https://github.com/OSGeo/proj-datumgrid/
Additional data files are available in https://github.com/OSGeo/PROJ-data
+582
View File
@@ -0,0 +1,582 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for deformation models",
"type": "object",
"properties": {
"file_type": {
"type": "string",
"enum": [
"deformation_model_master_file"
],
"description": "File type. Always \"deformation_model_master_file\""
},
"format_version": {
"type": "string",
"enum": [
"1.0"
]
},
"name": {
"type": "string",
"description": "A brief descriptive name of the deformation model"
},
"version": {
"type": "string",
"description": "A string identifying the version of the deformation model. The format for specifying version will be defined by the agency responsible for the deformation model"
},
"publication_date": {
"$ref": "#/definitions/datetime",
"description": "The date on which this version of the deformation model was published (or possibly the date on which it takes effect?)"
},
"license": {
"type": "string",
"description": "License under which the model is published"
},
"description": {
"type": "string",
"description": "A text description of the model"
},
"authority": {
"type": "object",
"description": "Basic information about the agency responsible for the data set",
"properties": {
"name": {
"type": "string",
"description": "The name of the agency"
},
"url": {
"type": "string",
"description": "The url of the agency website",
"format": "uri"
},
"address": {
"type": "string",
"description": "The postal address of the agency"
},
"email": {
"type": "string",
"description": "An email contact address for the agency",
"format": "email"
}
},
"required": [
"name"
],
"additionalProperties": false
},
"links": {
"type": "array",
"description": "Links to related information",
"items": {
"type": "object",
"properties": {
"href": {
"type": "string",
"description": "The URL holding the information",
"format": "uri"
},
"rel": {
"type": "string",
"description": "The relationship to the dataset. Proposed relationships are:\n- \"about\": a web page for human consumption describing the model\n- \"source\": the authoritative source data from which the deformation model is built.\n- \"metadata\": ISO 19115 XML metadata regarding the deformation model."
},
"type": {
"type": "string",
"description": "MIME type"
},
"title": {
"type": "string",
"description": "Description of the link"
}
},
"required": [
"href"
],
"additionalProperties": false
}
},
"source_crs": {
"$ref": "#/definitions/crs",
"description": "The coordinate reference system to which the deformation model applies"
},
"target_crs": {
"$ref": "#/definitions/crs",
"description": "For a time dependent coordinate transformation the coordinate reference system resulting from applying the deformation"
},
"definition_crs": {
"$ref": "#/definitions/crs",
"description": "The coordinate reference system used to define the component spatial models. This proposal only supports using the same value for the source and definition coordinate reference system."
},
"reference_epoch": {
"$ref": "#/definitions/datetime",
"description": "A nominal reference epoch of the deformation model. This is not necessarily used to calculate the deformation model - each component defines its own time function."
},
"uncertainty_reference_epoch": {
"$ref": "#/definitions/datetime",
"description": "The uncertainties of the deformation model are calculated in terms of this epoch. This is described below in the Time functions section."
},
"horizontal_offset_unit": {
"type": "string",
"enum": [
"metre",
"degree"
]
},
"vertical_offset_unit": {
"type": "string",
"enum": [
"metre"
]
},
"horizontal_uncertainty_type": {
"type": "string",
"enum": [
"circular 95% confidence limit"
]
},
"horizontal_uncertainty_unit": {
"type": "string",
"enum": [
"metre"
]
},
"vertical_uncertainty_type": {
"type": "string",
"enum": [
"95% confidence limit"
]
},
"vertical_uncertainty_unit": {
"type": "string",
"enum": [
"metre"
]
},
"horizontal_offset_method": {
"type": "string",
"description": "Defines how the horizontal offsets are applied to geographic coordinates",
"enum": [
"addition",
"geocentric"
]
},
"extent": {
"$ref": "#/definitions/extent",
"description": "Defines the region within which the deformation model is defined. It cannot be calculated outside this region. The region is specified by a type and value. This proposal only supports using a bounding box as an array of [west,south,east,north] coordinate values"
},
"time_extent": {
"type": "object",
"description": "Defines the range of times for which the model is valid, specified by a first and a last value. The deformation model is undefined for dates outside this range.",
"properties": {
"first": {
"$ref": "#/definitions/datetime"
},
"last": {
"$ref": "#/definitions/datetime"
}
},
"required": [
"first",
"last"
],
"additionalProperties": false
},
"components": {
"type": "array",
"items": {
"$ref": "#/definitions/component"
}
}
},
"required": [
"file_type",
"format_version",
"source_crs",
"target_crs",
"definition_crs",
"extent",
"time_extent",
"components"
],
"additionalProperties": false,
"definitions": {
"component": {
"type": "object",
"definition": "A component describes an aspect of the deformation, such as glacial isostatic adjustment, secular deformation, earthquakes, etc.",
"properties": {
"description": {
"type": "string",
"description": "A text description of this component of the model"
},
"extent": {
"$ref": "#/definitions/extent",
"description": "The region within the component is defined. Outside this region the component evaluates to 0. The region is specified by a type and value. This proposal only supports using a bounding box as an array of [west,south,east,north] coordinate values"
},
"displacement_type": {
"type": "string",
"description": "The displacement parameters defined by the model. The \"none\" option allows for a component which defines uncertainty with different grids to those defining displacement",
"enum": [
"none",
"horizontal",
"vertical",
"3d"
]
},
"uncertainty_type": {
"type": "string",
"description": "The uncertainty parameters defined by the model",
"enum": [
"none",
"horizontal",
"vertical",
"3d"
]
},
"horizontal_uncertainty": {
"type": "number",
"description": "The horizontal uncertainty to use if it is not defined explicitly in the spatial model"
},
"vertical_uncertainty": {
"type": "number",
"description": "The vertical uncertainty to use if it is not defined explicitly in the spatial model"
},
"spatial_model": {
"type": "object",
"description": "Defines the spatial model",
"properties": {
"type": {
"type": "string",
"description": "Specifies the type of the spatial model data file. Initially it is proposed that only GeoTIFF is supported",
"enum": [
"GeoTIFF"
]
},
"interpolation_method": {
"type": "string",
"description": "Interpolation method",
"enum": [
"bilinear",
"geocentric_bilinear"
]
},
"filename": {
"type": "string",
"description": "Specifies location of the spatial model GeoTIFF file relative to this JSON file"
},
"md5_checksum": {
"type": "string",
"description": "A hex encoded MD5 checksum of the grid file that can be used to validate that it is the correct version of the file"
}
},
"required": [
"type",
"interpolation_method",
"filename"
],
"additionalProperties": false
},
"time_function": {
"$ref": "#/definitions/time_function"
}
},
"required": [
"description",
"extent",
"displacement_type",
"spatial_model",
"time_function"
],
"additionalProperties": false
},
"crs": {
"type": "string",
"pattern": "^[a-zA-Z]+:[a-zA-Z0-9]+$"
},
"datetime": {
"type": "string",
"format": "date-time",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$"
},
"extent": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"bbox"
]
},
"parameters": {
"type": "object",
"properties": {
"bbox": {
"type": "array",
"minItems": 4,
"maxItems": 4,
"items": {
"type": "number"
}
}
}
}
},
"required": [
"type",
"parameters"
],
"additionalProperties": false
},
"time_function": {
"description": "Function describing a multiplicative factor to apply to the spatial_model depending on the time",
"oneOf": [
{
"$ref": "#/definitions/time_function_constant"
},
{
"$ref": "#/definitions/time_function_velocity"
},
{
"$ref": "#/definitions/time_function_step"
},
{
"$ref": "#/definitions/time_function_reverse_step"
},
{
"$ref": "#/definitions/time_function_piecewise"
},
{
"$ref": "#/definitions/time_function_exponential"
}
]
},
"time_function_constant": {
"description": "The valuation of this function is 1 at any epoch",
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"constant"
]
},
"parameters": {
"type": "object",
"properties": {
},
"additionalProperties": false
}
},
"required": [
"type"
],
"additionalProperties": false
},
"time_function_velocity": {
"description": "The valuation of this function is 0 at reference_epoch, and proportional to the time difference to it at other times",
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"velocity"
]
},
"parameters": {
"type": "object",
"properties": {
"reference_epoch": {
"$ref": "#/definitions/datetime"
}
},
"required": [
"reference_epoch"
],
"additionalProperties": false
}
},
"required": [
"type",
"parameters"
],
"additionalProperties": false
},
"time_function_step": {
"description": "The valuation of this function is 0 before step_epoch, and 1 starting from it",
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"step"
]
},
"parameters": {
"type": "object",
"properties": {
"step_epoch": {
"$ref": "#/definitions/datetime"
}
},
"required": [
"step_epoch"
],
"additionalProperties": false
}
},
"required": [
"type",
"parameters"
],
"additionalProperties": false
},
"time_function_reverse_step": {
"description": "The valuation of this function is 1 before step_epoch, and 0 starting from it",
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"reverse_step"
]
},
"parameters": {
"type": "object",
"properties": {
"step_epoch": {
"$ref": "#/definitions/datetime"
}
},
"required": [
"step_epoch"
],
"additionalProperties": false
}
},
"required": [
"type",
"parameters"
],
"additionalProperties": false
},
"time_function_piecewise": {
"description": "Piecewise time function",
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"piecewise"
]
},
"parameters": {
"type": "object",
"properties": {
"before_first": {
"type": "string",
"description": "Defines the behaviour of the function before the first defined epoch",
"enum": [
"zero",
"constant",
"linear"
]
},
"after_last": {
"type": "string",
"description": "Defines the behaviour of the function after the last defined epoch",
"enum": [
"zero",
"constant",
"linear"
]
},
"model": {
"type": "array",
"description": "A sorted array data points each defined by two elements, \"epoch\" defines the date/time of the data point, and \"scale_factor\" is the corresponding function value. The array is sorted in order of increasing epoch. Note: where the time function includes a step it is represented by two consecutive data points with the same epoch. The first defines the scale factor that applies before the epoch and the second the scale factor that applies after the epoch",
"items": {
"type": "object",
"properties": {
"epoch": {
"$ref": "#/definitions/datetime"
},
"scale_factor": {
"type": "number"
}
},
"required": [
"epoch",
"scale_factor"
],
"additionalProperties": false
},
"minItems": 2
}
},
"required": [
"before_first",
"after_last",
"model"
],
"additionalProperties": false
}
},
"required": [
"type",
"parameters"
],
"additionalProperties": false
},
"time_function_exponential": {
"description": "The valuation of this function is an exponential function with a time-based relaxation constant",
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"exponential"
]
},
"parameters": {
"type": "object",
"properties": {
"reference_epoch": {
"$ref": "#/definitions/datetime",
"description": "The date/time at which the exponential decay starts"
},
"end_epoch": {
"$ref": "#/definitions/datetime",
"description": "The date/time at which the exponential decay ends (optional)"
},
"relaxation_constant": {
"type": "number",
"description": "Relaxation constant in years"
},
"before_scale_factor": {
"type": "number",
"description": "The scale factor that applies before the reference epoch"
},
"initial_scale_factor": {
"type": "number",
"description": "The initial scale factor"
},
"final_scale_factor": {
"type": "number",
"description": "The scale factor the exponential function approaches"
}
},
"required": [
"reference_epoch",
"relaxation_constant",
"before_scale_factor",
"initial_scale_factor",
"final_scale_factor"
],
"additionalProperties": false
}
},
"required": [
"type",
"parameters"
],
"additionalProperties": false
}
}
}
-2
View File
@@ -1,2 +0,0 @@
# DHDN / Germany zone 3
<31493> +proj=tmerc +lat_0=0.000000000 +lon_0=9.000000000 +k=1.000000 +x_0=3500000.000 +y_0=0.000 +ellps=bessel +units=m no_defs <>
-10
View File
@@ -1,10 +0,0 @@
function(cat IN_FILE OUT_FILE)
file(READ ${IN_FILE} CONTENTS)
file(APPEND ${OUT_FILE} "${CONTENTS}")
endfunction()
file(WRITE "${ALL_SQL_IN}" "")
include(sql_filelist.cmake)
foreach(SQL_FILE ${SQL_FILES})
cat(${SQL_FILE} "${ALL_SQL_IN}")
endforeach()
+23
View File
@@ -0,0 +1,23 @@
function(cat IN_FILE OUT_FILE)
file(READ ${IN_FILE} CONTENTS)
file(APPEND ${OUT_FILE} "${CONTENTS}")
endfunction()
file(WRITE "${ALL_SQL_IN}" "")
include(sql_filelist.cmake)
foreach(SQL_FILE ${SQL_FILES})
cat(${SQL_FILE} "${ALL_SQL_IN}")
endforeach()
# Do ${PROJ_VERSION} substitution
file(READ ${ALL_SQL_IN} CONTENTS)
string(REPLACE "\${PROJ_VERSION}" "${PROJ_VERSION}" CONTENTS_MOD "${CONTENTS}")
file(WRITE "${ALL_SQL_IN}" "${CONTENTS_MOD}")
execute_process(COMMAND "${EXE_SQLITE3}" "${PROJ_DB}"
INPUT_FILE "${ALL_SQL_IN}"
RESULT_VARIABLE STATUS)
if(STATUS AND NOT STATUS EQUAL 0)
message(FATAL_ERROR "SQLite3 failed")
endif()
BIN
View File
Binary file not shown.
+24
View File
@@ -0,0 +1,24 @@
[general]
; Lines starting by ; are commented lines.
;
; Network capabilities disabled by default.
; Can be overridden with the PROJ_NETWORK=ON environment variable.
; network = on
; Can be overridden with the PROJ_NETWORK_ENDPOINT environment variable.
cdn_endpoint = https://cdn.proj.org
cache_enabled = on
cache_size_MB = 300
cache_ttl_sec = 86400
; Transverse Mercator (and UTM) default algorithm: auto, evenden_snyder or poder_engsager
; * evenden_snyder is the fastest, but less accurate far from central meridian
; * poder_engsager is slower, but more accurate far from central meridian
; * default will auto-select between the two above depending on the coordinate
; to transform and will use evenden_snyder if the error in doing so is below
; 0.1 mm (for an ellipsoid of the size of Earth)
tmerc_default_algo = poder_engsager
+25 -5
View File
@@ -1,7 +1,7 @@
{
"$id": "https://proj.org/schemas/v0.2/projjson.schema.json",
"$id": "https://proj.org/schemas/v0.4/projjson.schema.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Schema for PROJJSON",
"description": "Schema for PROJJSON (v0.4)",
"$comment": "This file exists both in data/ and in schemas/vXXX/. Keep both in sync. And if changing the value of $id, change PROJJSON_CURRENT_VERSION accordingly in io.cpp",
"oneOf": [
@@ -111,12 +111,20 @@
"bound_crs": {
"type": "object",
"allOf": [{ "$ref": "#/definitions/object_usage" }],
"properties": {
"$schema" : { "type": "string" },
"type": { "type": "string", "enum": ["BoundCRS"] },
"name": { "type": "string" },
"source_crs": { "$ref": "#/definitions/crs" },
"target_crs": { "$ref": "#/definitions/crs" },
"transformation": { "$ref": "#/definitions/abridged_transformation" }
"transformation": { "$ref": "#/definitions/abridged_transformation" },
"scope": {},
"area": {},
"bbox": {},
"usages": {},
"remarks": {},
"id": {}, "ids": {}
},
"required" : [ "source_crs", "target_crs", "transformation" ],
"additionalProperties": false
@@ -604,7 +612,12 @@
"authority": { "type": "string" },
"code": {
"oneOf": [ { "type": "string" }, { "type": "integer" } ]
}
},
"version": {
"oneOf": [ { "type": "string" }, { "type": "number" } ]
},
"authority_citation": { "type": "string" },
"uri": { "type": "string" }
},
"required" : [ "authority", "code" ],
"additionalProperties": false
@@ -756,7 +769,7 @@
"$schema" : { "type": "string" },
"type": { "type": "string", "enum": ["PrimeMeridian"] },
"name": { "type": "string" },
"longitude": { "$ref": "#/definitions/value_and_unit" },
"longitude": { "$ref": "#/definitions/value_in_degree_or_value_and_unit" },
"id": { "$ref": "#/definitions/id" },
"ids": { "$ref": "#/definitions/ids" }
},
@@ -912,6 +925,13 @@
"additionalProperties": false
},
"value_in_degree_or_value_and_unit": {
"oneOf": [
{ "type": "number" },
{ "$ref": "#/definitions/value_and_unit" }
]
},
"value_in_metre_or_value_and_unit": {
"oneOf": [
{ "type": "number" },
+457 -348
View File
File diff suppressed because it is too large. Load diff
-3541
View File
File diff suppressed because it is too large. Load diff
+61 -57
View File
@@ -1,7 +1,7 @@
--- This file has been generated by scripts/build_db.py. DO NOT EDIT !
INSERT INTO "axis" VALUES('EPSG','1039','Easting','M','east','EPSG','1024',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1040','Northing','P','north','EPSG','1024',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32773','Easting','M','east','EPSG','1024',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32774','Northing','P','north','EPSG','1024',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1062','Easting','X','North along 130°W','EPSG','1025',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1063','Northing','Y','North along 140°E','EPSG','1025',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1065','Easting','E','South along 90°E','EPSG','1026',1,'EPSG','9001');
@@ -12,15 +12,14 @@ INSERT INTO "axis" VALUES('EPSG','1073','Easting','E','east','EPSG','1028',1,'EP
INSERT INTO "axis" VALUES('EPSG','1074','Northing','N','north','EPSG','1028',2,'EPSG','9037');
INSERT INTO "axis" VALUES('EPSG','1078','Northing','N','north','EPSG','1029',1,'EPSG','9002');
INSERT INTO "axis" VALUES('EPSG','1079','Easting','E','east','EPSG','1029',2,'EPSG','9002');
INSERT INTO "axis" VALUES('EPSG','1082','Gravity-related height','H','up','EPSG','1030',1,'EPSG','9002');
INSERT INTO "axis" VALUES('EPSG','1101','Northing','Y','north','EPSG','1031',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1102','Westing','X','west','EPSG','1031',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1110','Plant East','x','east','EPSG','1032',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1111','Plant North','y','north','EPSG','1032',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1112','Gravity-related height','z','up','EPSG','1032',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1428','Bin grid I','I','J-axis plus 90°','EPSG','1033',1,'EPSG','1024');
INSERT INTO "axis" VALUES('EPSG','1428','Bin grid I','I','J-axis plus 90 degrees','EPSG','1033',1,'EPSG','1024');
INSERT INTO "axis" VALUES('EPSG','1429','Bin grid J','J','See associated operation','EPSG','1033',2,'EPSG','1024');
INSERT INTO "axis" VALUES('EPSG','1431','Bin grid I','I','J-axis minus 90°','EPSG','1034',1,'EPSG','1024');
INSERT INTO "axis" VALUES('EPSG','1431','Bin grid I','I','J-axis minus 90 degrees','EPSG','1034',1,'EPSG','1024');
INSERT INTO "axis" VALUES('EPSG','1432','Bin grid J','J','See associated operation','EPSG','1034',2,'EPSG','1024');
INSERT INTO "axis" VALUES('EPSG','1466','Easting','X','South along 180°E','EPSG','1035',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1467','Northing','Y','South along 90°W','EPSG','1035',2,'EPSG','9001');
@@ -32,27 +31,24 @@ INSERT INTO "axis" VALUES('EPSG','1481','Easting','X','South along 165°W','EPSG
INSERT INTO "axis" VALUES('EPSG','1482','Northing','Y','South along 75°W','EPSG','1038',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1486','Easting','E','east','EPSG','1039',1,'EPSG','9002');
INSERT INTO "axis" VALUES('EPSG','1487','Northing','N','north','EPSG','1039',2,'EPSG','9002');
INSERT INTO "axis" VALUES('EPSG','1024','Forward','x','Ahead','EPSG','1040',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1025','Starboard','y','Starboard','EPSG','1040',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1026','Platform Up','z','Upward','EPSG','1040',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1030','Forward','x','Ahead','EPSG','1041',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1031','Starboard','y','Starboard','EPSG','1041',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1032','Platform Down','z','Downward','EPSG','1041',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1036','Starboard','x','Starboard','EPSG','1042',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1037','Forward','y','Ahead','EPSG','1042',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1038','Platform Up','z','Upward','EPSG','1042',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1516','Depth','D','down','EPSG','1043',1,'EPSG','9003');
INSERT INTO "axis" VALUES('EPSG','32855','Forward','x','forward','EPSG','1040',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32856','Starboard','y','starboard','EPSG','1040',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32857','Platform Up','z','up','EPSG','1040',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32858','Forward','x','forward','EPSG','1041',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32859','Starboard','y','starboard','EPSG','1041',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32860','Platform Down','z','down','EPSG','1041',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32861','Starboard','x','starboard','EPSG','1042',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32862','Forward','y','forward','EPSG','1042',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32863','Platform Up','z','up','EPSG','1042',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1525','Northing','N','North along 180°E','EPSG','1044',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1526','Easting','E','North along 90°W','EPSG','1044',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1044','Starboard','x','Starboard','EPSG','1045',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1045','Forward','y','Ahead','EPSG','1045',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1046','Platform Down','z','Downward','EPSG','1045',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32864','Starboard','x','starboard','EPSG','1045',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32865','Forward','y','forward','EPSG','1045',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32866','Platform Down','z','down','EPSG','1045',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1042','Local northing','n','north','EPSG','1047',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1043','Local easting','e','east','EPSG','1047',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1049','Local northing','n','north','EPSG','1048',1,'EPSG','9002');
INSERT INTO "axis" VALUES('EPSG','1050','Local easting','e','east','EPSG','1048',2,'EPSG','9002');
INSERT INTO "axis" VALUES('EPSG','1051','Local depth','d','down','EPSG','1049',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1053','Local depth','d','down','EPSG','1050',1,'EPSG','9002');
INSERT INTO "axis" VALUES('EPSG','1','Easting','E','east','EPSG','4400',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','2','Northing','N','north','EPSG','4400',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','3','Easting','E','east','EPSG','4401',1,'EPSG','9062');
@@ -75,8 +71,8 @@ INSERT INTO "axis" VALUES('EPSG','19','Easting','E','east','EPSG','4409',1,'EPSG
INSERT INTO "axis" VALUES('EPSG','20','Northing','N','north','EPSG','4409',2,'EPSG','9040');
INSERT INTO "axis" VALUES('EPSG','181','Easting','E','east','EPSG','4410',1,'EPSG','9301');
INSERT INTO "axis" VALUES('EPSG','182','Northing','N','north','EPSG','4410',2,'EPSG','9301');
INSERT INTO "axis" VALUES('EPSG','236','Easting','E','South along 90°E.','EPSG','4460',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','237','Northing','N','South along 180°E','EPSG','4460',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32875','Easting','E','South along 90°E','EPSG','4460',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32876','Northing','N','South along 180°E','EPSG','4460',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','205','Topocentric East','U','east','EPSG','4461',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','206','Topocentric North','V','north','EPSG','4461',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','207','Topocentric height','W','up','EPSG','4461',3,'EPSG','9001');
@@ -172,6 +168,46 @@ INSERT INTO "axis" VALUES('EPSG','180','Northing','X','north','EPSG','4533',1,'E
INSERT INTO "axis" VALUES('EPSG','179','Easting','Y','east','EPSG','4533',2,'EPSG','9098');
INSERT INTO "axis" VALUES('EPSG','183','Northing','none','north','EPSG','4534',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','184','Easting','none','east','EPSG','4534',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','63','Geodetic latitude','Lat','north','EPSG','6405',1,'EPSG','9102');
INSERT INTO "axis" VALUES('EPSG','64','Geodetic longitude','Long','east','EPSG','6405',2,'EPSG','9102');
INSERT INTO "axis" VALUES('EPSG','65','Geodetic latitude','Lat','north','EPSG','6406',1,'EPSG','9116');
INSERT INTO "axis" VALUES('EPSG','66','Geodetic longitude','Long','east','EPSG','6406',2,'EPSG','9116');
INSERT INTO "axis" VALUES('EPSG','106','Geodetic latitude','Lat','north','EPSG','6422',1,'EPSG','9122');
INSERT INTO "axis" VALUES('EPSG','107','Geodetic longitude','Lon','east','EPSG','6422',2,'EPSG','9122');
INSERT INTO "axis" VALUES('EPSG','115','Geocentric X','X','geocentricX','EPSG','6500',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','116','Geocentric Y','Y','geocentricY','EPSG','6500',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','117','Geocentric Z','Z','geocentricZ','EPSG','6500',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','119','Southing','X','south','EPSG','6501',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','118','Westing','Y','west','EPSG','6501',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','120','Westing','Y','west','EPSG','6502',1,'EPSG','9031');
INSERT INTO "axis" VALUES('EPSG','121','Southing','X','south','EPSG','6502',2,'EPSG','9031');
INSERT INTO "axis" VALUES('EPSG','122','Westing','Y','west','EPSG','6503',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','123','Southing','X','south','EPSG','6503',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32877','Plant North','n','northWest','EPSG','6504',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32878','Plant East','e','northEast','EPSG','6504',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32873','First local axis','n','northWest','EPSG','6505',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32874','Second local axis','e','northEast','EPSG','6505',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','128','First local axis','I','east-south-east','EPSG','6506',1,'EPSG','9205');
INSERT INTO "axis" VALUES('EPSG','129','Second local axis','J','north-north-east','EPSG','6506',2,'EPSG','9204');
INSERT INTO "axis" VALUES('EPSG','130','First local axis','X','north','EPSG','6507',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','131','Second local axis','Y','west','EPSG','6507',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','133','Bin grid J','J','north north east','EPSG','6508',1,'EPSG','9209');
INSERT INTO "axis" VALUES('EPSG','132','Bin grid I','I','east south east','EPSG','6508',2,'EPSG','9208');
INSERT INTO "axis" VALUES('EPSG','135','Southing','P','south','EPSG','6509',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','134','Westing','M','west','EPSG','6509',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32871','Plant East','x','northEast','EPSG','6510',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32872','Plant North','y','northWest','EPSG','6510',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','211','Plant East','x','east','EPSG','6512',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','212','Plant North','y','north','EPSG','6512',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','213','Local height','z','up','EPSG','6512',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','32890','Bin grid I','I','columnPositive','EPSG','32760',1,NULL,NULL);
INSERT INTO "axis" VALUES('EPSG','32891','Bin grid J','J','rowPositive','EPSG','32760',2,NULL,NULL);
INSERT INTO "axis" VALUES('EPSG','32894','Bin grid I','I','columnNegative','EPSG','32761',1,NULL,NULL);
INSERT INTO "axis" VALUES('EPSG','32895','Bin grid J','J','rowPositive','EPSG','32761',2,NULL,NULL);
INSERT INTO "axis" VALUES('EPSG','1082','Gravity-related height','H','up','EPSG','1030',1,'EPSG','9002');
INSERT INTO "axis" VALUES('EPSG','1516','Depth','D','down','EPSG','1043',1,'EPSG','9003');
INSERT INTO "axis" VALUES('EPSG','1051','Local depth','d','down','EPSG','1049',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','1053','Local depth','d','down','EPSG','1050',1,'EPSG','9002');
INSERT INTO "axis" VALUES('EPSG','53','Geodetic latitude','Lat','north','EPSG','6401',1,'EPSG','9108');
INSERT INTO "axis" VALUES('EPSG','54','Geodetic longitude','Long','east','EPSG','6401',2,'EPSG','9108');
INSERT INTO "axis" VALUES('EPSG','55','Ellipsoidal height','h','up','EPSG','6401',3,'EPSG','9001');
@@ -179,13 +215,9 @@ INSERT INTO "axis" VALUES('EPSG','56','Geodetic latitude','Lat','north','EPSG','
INSERT INTO "axis" VALUES('EPSG','57','Geodetic longitude','Long','east','EPSG','6402',2,'EPSG','9108');
INSERT INTO "axis" VALUES('EPSG','58','Geodetic latitude','Lat','north','EPSG','6403',1,'EPSG','9105');
INSERT INTO "axis" VALUES('EPSG','59','Geodetic longitude','Lon','east','EPSG','6403',2,'EPSG','9105');
INSERT INTO "axis" VALUES('EPSG','60','Spherical latitude','Lat','north','EPSG','6404',1,'EPSG','9122');
INSERT INTO "axis" VALUES('EPSG','61','Spherical longitude','Long','east','EPSG','6404',2,'EPSG','9122');
INSERT INTO "axis" VALUES('EPSG','62','Geocentric radius','R','up','EPSG','6404',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','63','Geodetic latitude','Lat','north','EPSG','6405',1,'EPSG','9102');
INSERT INTO "axis" VALUES('EPSG','64','Geodetic longitude','Long','east','EPSG','6405',2,'EPSG','9102');
INSERT INTO "axis" VALUES('EPSG','65','Geodetic latitude','Lat','north','EPSG','6406',1,'EPSG','9116');
INSERT INTO "axis" VALUES('EPSG','66','Geodetic longitude','Long','east','EPSG','6406',2,'EPSG','9116');
INSERT INTO "axis" VALUES('EPSG','32879','Spherical latitude','lat','north','EPSG','6404',1,'EPSG','9122');
INSERT INTO "axis" VALUES('EPSG','32880','Spherical longitude','lon','east','EPSG','6404',2,'EPSG','9122');
INSERT INTO "axis" VALUES('EPSG','32881','Geocentric radius','R','up','EPSG','6404',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','67','Geodetic latitude','Lat','north','EPSG','6407',1,'EPSG','9117');
INSERT INTO "axis" VALUES('EPSG','68','Geodetic longitude','Long','east','EPSG','6407',2,'EPSG','9117');
INSERT INTO "axis" VALUES('EPSG','69','Geodetic latitude','Lat','north','EPSG','6408',1,'EPSG','9115');
@@ -225,8 +257,6 @@ INSERT INTO "axis" VALUES('EPSG','102','Ellipsoidal height','h','up','EPSG','642
INSERT INTO "axis" VALUES('EPSG','103','Geodetic latitude','Lat','north','EPSG','6421',1,'EPSG','9105');
INSERT INTO "axis" VALUES('EPSG','104','Geodetic longitude','Lon','east','EPSG','6421',2,'EPSG','9105');
INSERT INTO "axis" VALUES('EPSG','105','Ellipsoidal height','h','up','EPSG','6421',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','106','Geodetic latitude','Lat','north','EPSG','6422',1,'EPSG','9122');
INSERT INTO "axis" VALUES('EPSG','107','Geodetic longitude','Lon','east','EPSG','6422',2,'EPSG','9122');
INSERT INTO "axis" VALUES('EPSG','108','Geodetic latitude','Lat','north','EPSG','6423',1,'EPSG','9122');
INSERT INTO "axis" VALUES('EPSG','109','Geodetic longitude','Lon','east','EPSG','6423',2,'EPSG','9122');
INSERT INTO "axis" VALUES('EPSG','110','Ellipsoidal height','h','up','EPSG','6423',3,'EPSG','9001');
@@ -255,31 +285,5 @@ INSERT INTO "axis" VALUES('EPSG','111','Gravity-related height','H','up','EPSG',
INSERT INTO "axis" VALUES('EPSG','112','Gravity-related height','H','up','EPSG','6497',1,'EPSG','9003');
INSERT INTO "axis" VALUES('EPSG','113','Depth','D','down','EPSG','6498',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','114','Gravity-related height','H','up','EPSG','6499',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','115','Geocentric X','X','geocentricX','EPSG','6500',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','116','Geocentric Y','Y','geocentricY','EPSG','6500',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','117','Geocentric Z','Z','geocentricZ','EPSG','6500',3,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','119','Southing','X','south','EPSG','6501',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','118','Westing','Y','west','EPSG','6501',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','120','Westing','Y','west','EPSG','6502',1,'EPSG','9031');
INSERT INTO "axis" VALUES('EPSG','121','Southing','X','south','EPSG','6502',2,'EPSG','9031');
INSERT INTO "axis" VALUES('EPSG','122','Westing','Y','west','EPSG','6503',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','123','Southing','X','south','EPSG','6503',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','125','Plant North','n','northwest','EPSG','6504',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','124','Plant East','e','northeast','EPSG','6504',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','126','First local axis','n','northwest','EPSG','6505',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','127','Second local axis','e','northeast','EPSG','6505',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','128','First local axis','I','east-south-east','EPSG','6506',1,'EPSG','9205');
INSERT INTO "axis" VALUES('EPSG','129','Second local axis','J','north-north-east','EPSG','6506',2,'EPSG','9204');
INSERT INTO "axis" VALUES('EPSG','130','First local axis','X','north','EPSG','6507',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','131','Second local axis','Y','west','EPSG','6507',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','133','Bin grid J','J','north north east','EPSG','6508',1,'EPSG','9209');
INSERT INTO "axis" VALUES('EPSG','132','Bin grid I','I','east south east','EPSG','6508',2,'EPSG','9208');
INSERT INTO "axis" VALUES('EPSG','135','Southing','P','south','EPSG','6509',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','134','Westing','M','west','EPSG','6509',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','173','Plant East','x','northeast','EPSG','6510',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','174','Plant North','y','northwest','EPSG','6510',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','177','Inline','I','Along receiver lines','EPSG','6511',1,'EPSG','9208');
INSERT INTO "axis" VALUES('EPSG','178','Crossline','J','Across receiver lines','EPSG','6511',2,'EPSG','9209');
INSERT INTO "axis" VALUES('EPSG','211','Plant East','x','east','EPSG','6512',1,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','212','Plant North','y','north','EPSG','6512',2,'EPSG','9001');
INSERT INTO "axis" VALUES('EPSG','213','Local height','z','up','EPSG','6512',3,'EPSG','9001');
+3
View File
@@ -1 +1,4 @@
PRAGMA page_size = 4096;
PRAGMA foreign_keys = 1;
BEGIN;
+204 -38
View File
@@ -9,10 +9,8 @@ CREATE INDEX grid_transformation_idx ON grid_transformation(source_crs_auth_name
CREATE INDEX other_transformation_idx ON other_transformation(source_crs_auth_name, source_crs_code, target_crs_auth_name, target_crs_code);
CREATE INDEX concatenated_operation_idx ON concatenated_operation(source_crs_auth_name, source_crs_code, target_crs_auth_name, target_crs_code);
-- Do an explicit foreign_key_check as foreign key checking is a no-op within
-- a transaction. Unfortunately we can't ask for this to be an error, so this
-- is just for verbose output. In Makefile, we check this separately
PRAGMA foreign_key_check;
-- We don't need to select by auth_name, code so nullify them to save space
UPDATE usage SET auth_name = NULL, code = NULL;
-- Final consistency checks
CREATE TABLE dummy(foo);
@@ -30,11 +28,59 @@ FOR EACH ROW BEGIN
SELECT RAISE(ABORT, 'corrupt definition of authority_list')
WHERE (SELECT 1 FROM authority_list LIMIT 1) = 0;
-- check that a usage is registered for most objects where this is needed
SELECT RAISE(ABORT, 'One or several objects lack a corresponding record in the usage table')
WHERE EXISTS (
SELECT * FROM object_view o WHERE NOT EXISTS (
SELECT 1 FROM usage u WHERE
o.table_name = u.object_table_name AND
o.auth_name = u.object_auth_name AND
o.code = u.object_code)
AND o.table_name NOT IN ('unit_of_measure', 'axis',
'celestial_body', 'ellipsoid', 'prime_meridian', 'extent')
-- the IGNF registry lacks extent for the following objects
AND NOT (o.auth_name = 'IGNF' AND o.table_name IN ('geodetic_datum', 'vertical_datum', 'conversion'))
);
SELECT RAISE(ABORT, 'Geodetic datum ensemble defined, but no ensemble member')
WHERE EXISTS (
SELECT * FROM geodetic_datum d WHERE ensemble_accuracy IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM geodetic_datum_ensemble_member WHERE
d.auth_name = ensemble_auth_name AND d.code = ensemble_code)
);
SELECT RAISE(ABORT, 'Vertical datum ensemble defined, but no ensemble member')
WHERE EXISTS (
SELECT * FROM vertical_datum d WHERE ensemble_accuracy IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM vertical_datum_ensemble_member WHERE
d.auth_name = ensemble_auth_name AND d.code = ensemble_code)
);
SELECT RAISE(ABORT, 'PROJ defines an alias that exists in EPSG')
WHERE EXISTS (
SELECT * FROM (
SELECT count(*) AS count, table_name, auth_name, code, alt_name FROM alias_name
WHERE source in ('EPSG', 'PROJ')
AND NOT (source = 'PROJ' AND alt_name IN ('GGRS87', 'NAD27', 'NAD83'))
GROUP BY table_name, auth_name, code, alt_name) x WHERE count > 1
);
-- test to check that our custom grid transformation overrides are really needed
SELECT RAISE(ABORT, 'PROJ grid_transformation defined whereas EPSG has one')
WHERE EXISTS (SELECT 1 FROM grid_transformation g1, grid_transformation g2 WHERE
lower(g1.grid_name) = lower(g2.grid_name) AND
g1.auth_name = 'PROJ' AND g2.auth_name = 'EPSG');
WHERE EXISTS (SELECT 1 FROM grid_transformation g1
JOIN grid_transformation g2
ON g1.source_crs_auth_name = g2.source_crs_auth_name
AND g1.source_crs_code = g2.source_crs_code
AND g1.target_crs_auth_name = g2.target_crs_auth_name
AND g1.target_crs_code = g2.target_crs_code
WHERE g1.auth_name = 'PROJ' AND g1.code NOT LIKE '%_RESTRICTED_TO_VERTCRS%' AND g2.auth_name = 'EPSG')
OR EXISTS (SELECT 1 FROM grid_transformation g1
JOIN grid_transformation g2
ON g1.source_crs_auth_name = g2.target_crs_auth_name
AND g1.source_crs_code = g2.target_crs_code
AND g1.target_crs_auth_name = g1.source_crs_auth_name
AND g1.target_crs_code = g1.source_crs_code
WHERE g1.auth_name = 'PROJ' AND g1.code NOT LIKE '%_RESTRICTED_TO_VERTCRS%' AND g2.auth_name = 'EPSG');
SELECT RAISE(ABORT, 'Arg! there is now a EPSG:102100 object. Hack in createFromUserInput() will no longer work')
WHERE EXISTS(SELECT 1 FROM crs_view WHERE auth_name = 'EPSG' AND code = '102100');
@@ -63,19 +109,6 @@ FOR EACH ROW BEGIN
(SELECT auth_name || code FROM geodetic_crs
WHERE type = 'geographic 2D'));
-- check that grids with HEIGHT_TO_GEOGRAPHIC3D method are properly registered
SELECT RAISE(ABORT, 'One grid_transformation with HEIGHT_TO_GEOGRAPHIC3D has not its source_crs in vertical_crs table')
WHERE EXISTS (SELECT * FROM grid_transformation g WHERE
g.method_code = 'HEIGHT_TO_GEOGRAPHIC3D' AND
g.source_crs_auth_name || g.source_crs_code NOT IN
(SELECT auth_name || code FROM vertical_crs));
SELECT RAISE(ABORT, 'One grid_transformation with HEIGHT_TO_GEOGRAPHIC3D has not its target_crs in geodetic_crs table with type = ''geographic 3D''')
WHERE EXISTS (SELECT * FROM grid_transformation g WHERE
g.method_code = 'HEIGHT_TO_GEOGRAPHIC3D' AND
g.target_crs_auth_name || g.target_crs_code NOT IN
(SELECT auth_name || code FROM geodetic_crs
WHERE type = 'geographic 3D'));
-- check that grids with Geographic3D to GravityRelatedHeight method are properly registered
SELECT RAISE(ABORT, 'One grid_transformation with Geographic3D to GravityRelatedHeight has not its target_crs in vertical_crs table')
WHERE EXISTS (SELECT * FROM grid_transformation g WHERE
@@ -83,39 +116,161 @@ FOR EACH ROW BEGIN
g.method_name LIKE 'Geographic3D to GravityRelatedHeight%' AND
g.target_crs_auth_name || g.target_crs_code NOT IN
(SELECT auth_name || code FROM vertical_crs));
SELECT RAISE(ABORT, 'One grid_transformation with Geographic3D to GravityRelatedHeight has not its source_crs in geodetic_crs table with type = ''geographic 3D''')
SELECT RAISE(ABORT, 'One grid_transformation with Geographic3D to GravityRelatedHeight or Geog3D to Geog2D+XXX has not its source_crs in geodetic_crs table with type = ''geographic 3D''')
WHERE EXISTS (SELECT * FROM grid_transformation g WHERE
g.deprecated = 0 AND
g.method_name LIKE 'Geographic3D to GravityRelatedHeight%' AND
NOT (g.auth_name = 'EPSG' AND g.code IN (7648, 7649, 7650)) AND -- those are wrongly registered as they use a geocentric CRS. Reported to EPSG
(g.method_name LIKE 'Geographic3D to %' OR g.method_name LIKE 'Geog3D to %') AND
g.source_crs_auth_name || g.source_crs_code NOT IN
(SELECT auth_name || code FROM geodetic_crs
WHERE type = 'geographic 3D'));
-- check that grids with 'Vertical Offset by Grid Interpolation' methods are properly registered
SELECT RAISE(ABORT, 'One grid_transformation with Vertical Offset by Grid Interpolation has not its source_crs in vertical_crs table')
WHERE EXISTS (SELECT * FROM grid_transformation g WHERE
g.method_name LIKE 'Vertical Offset by Grid Interpolation%' AND
g.source_crs_auth_name || g.source_crs_code NOT IN
(SELECT auth_name || code FROM vertical_crs));
SELECT RAISE(ABORT, 'One grid_transformation with Vertical Offset by Grid Interpolation has not its target_crs in vertical_crs table')
WHERE EXISTS (SELECT * FROM grid_transformation g WHERE
g.method_name LIKE 'Vertical Offset by Grid Interpolation%' AND
g.target_crs_auth_name || g.target_crs_code NOT IN
(SELECT auth_name || code FROM vertical_crs));
-- check that Helmert transformations have source and target of the same nature (the fkey already checks they are geodetic_crs)
SELECT RAISE(ABORT, 'One helmert_transformation has a source CRS of a different nature than its target CRS')
WHERE EXISTS (SELECT helmert_transformation.auth_name,
helmert_transformation.code,
helmert_transformation.name,
crs1.type AS crs1_type,
crs2.type AS crs2_type
FROM helmert_transformation
JOIN geodetic_crs crs1 ON
crs1.auth_name = source_crs_auth_name AND crs1.code = source_crs_code
JOIN geodetic_crs crs2 ON
crs2.auth_name = target_crs_auth_name AND crs2.code = target_crs_code
WHERE helmert_transformation.deprecated = 0 AND crs1.type != crs2.type);
-- check that the method used by a Helmert transformation is consistent with the dimensionality of the CRS
SELECT RAISE(ABORT, 'The domain of the method of helmert_transformation is not consistent with the dimensionality of the CRS')
WHERE EXISTS (SELECT helmert_transformation.auth_name,
helmert_transformation.code,
helmert_transformation.name,
helmert_transformation.method_name,
crs.type AS crs_type
FROM helmert_transformation
JOIN geodetic_crs crs ON
crs.auth_name = source_crs_auth_name AND crs.code = source_crs_code
WHERE helmert_transformation.deprecated = 0 AND
((method_name LIKE '%geog2D domain%' AND crs.type != 'geographic 2D') OR
(method_name LIKE '%geog3D domain%' AND crs.type != 'geographic 3D') OR
(method_name LIKE '%geocentric domain%' AND crs.type != 'geocentric')));
-- check that a time-dependent Helmert transformation has its source or target CRS being dyanmic
SELECT RAISE(ABORT, 'A time-dependent Helmert transformations has its source and target CRS both non-dynamic')
WHERE EXISTS (SELECT helmert_transformation.auth_name,
helmert_transformation.code,
helmert_transformation.name
FROM helmert_transformation
JOIN geodetic_crs crs1 ON
crs1.auth_name = source_crs_auth_name AND crs1.code = source_crs_code
JOIN geodetic_crs crs2 ON
crs2.auth_name = target_crs_auth_name AND crs2.code = target_crs_code
JOIN geodetic_datum gd1 ON
gd1.auth_name = crs1.datum_auth_name AND gd1.code = crs1.datum_code
JOIN geodetic_datum gd2 ON
gd2.auth_name = crs2.datum_auth_name AND gd2.code = crs2.datum_code
WHERE helmert_transformation.deprecated = 0 AND
method_name LIKE 'Time-dependent%' AND
gd1.frame_reference_epoch IS NULL AND
gd2.frame_reference_epoch IS NULL);
-- check that transformations operations between vertical CRS are from/into a vertical CRS
SELECT RAISE(ABORT, 'A transformation operating on vertical CRS has a source CRS not being a vertical CRS')
WHERE EXISTS (SELECT other_transformation.auth_name,
other_transformation.code,
other_transformation.name
FROM other_transformation
LEFT JOIN vertical_crs crs ON
crs.auth_name = source_crs_auth_name AND crs.code = source_crs_code
WHERE other_transformation.deprecated = 0 AND
method_name IN ('Vertical Offset', 'Height Depth Reversal', 'Change of Vertical Unit') AND
crs.code IS NULL);
SELECT RAISE(ABORT, 'AA transformation operating on vertical CRS has a target CRS not being a vertical CRS')
WHERE EXISTS (SELECT other_transformation.auth_name,
other_transformation.code,
other_transformation.name
FROM other_transformation
LEFT JOIN vertical_crs crs ON
crs.auth_name = target_crs_auth_name AND crs.code = target_crs_code
WHERE other_transformation.deprecated = 0 AND
method_name IN ('Vertical Offset', 'Height Depth Reversal', 'Change of Vertical Unit') AND
crs.code IS NULL);
-- check that 'Geographic2D with Height Offsets' transformations have a compound CRS with a geog2D as source
SELECT RAISE(ABORT, 'A transformation Geographic2D with Height Offsets does not have a compound CRS with a geog2D as source')
WHERE EXISTS (SELECT other_transformation.auth_name,
other_transformation.code,
other_transformation.name
FROM other_transformation
LEFT JOIN compound_crs ccrs ON
ccrs.auth_name = source_crs_auth_name AND ccrs.code = source_crs_code
LEFT JOIN geodetic_crs gcrs ON
gcrs.auth_name = horiz_crs_auth_name AND gcrs.code = horiz_crs_code
WHERE other_transformation.deprecated = 0 AND
method_name = 'Geographic2D with Height Offsets' AND
(gcrs.code IS NULL OR gcrs.type != 'geographic 2D'));
SELECT RAISE(ABORT, 'A transformation Geographic2D with Height Offsets does not have a geographic 3D CRS as target')
WHERE EXISTS (SELECT other_transformation.auth_name,
other_transformation.code,
other_transformation.name
FROM other_transformation
LEFT JOIN geodetic_crs gcrs ON
gcrs.auth_name = target_crs_auth_name AND gcrs.code = target_crs_code
WHERE other_transformation.deprecated = 0 AND
method_name = 'Geographic2D with Height Offsets' AND
(gcrs.type IS NULL OR gcrs.type != 'geographic 3D'));
-- check that transformations intersect the area of use of their source/target CRS
-- EPSG, ESRI and IGNF have cases where this does not hold.
SELECT RAISE(ABORT, 'The area of use of at least one coordinate_operation does not intersect the one of its source CRS')
WHERE EXISTS (SELECT * FROM coordinate_operation_view v, crs_view c, area va, area ca WHERE
WHERE EXISTS (SELECT * FROM coordinate_operation_view v, crs_view c, usage vu, extent ve, usage cu, extent ce WHERE
v.deprecated = 0 AND
v.auth_name NOT IN ('EPSG', 'ESRI', 'IGNF') AND
(v.table_name = 'grid_transformation' OR v.auth_name NOT IN ('EPSG', 'ESRI', 'IGNF')) AND
v.source_crs_auth_name = c.auth_name AND
v.source_crs_code = c.code AND
v.area_of_use_auth_name = va.auth_name AND
v.area_of_use_code = va.code AND
c.area_of_use_auth_name = ca.auth_name AND
c.area_of_use_code = ca.code AND
NOT (ca.south_lat < va.north_lat AND va.south_lat < ca.north_lat));
vu.object_table_name = v.table_name AND
vu.object_auth_name = v.auth_name AND
vu.object_code = v.code AND
vu.extent_auth_name = ve.auth_name AND
vu.extent_code = ve.code AND
cu.object_table_name = c.table_name AND
cu.object_auth_name = c.auth_name AND
cu.object_code = c.code AND
cu.extent_auth_name = ce.auth_name AND
cu.extent_code = ce.code AND
NOT ((ce.south_lat < ve.north_lat AND ve.south_lat < ce.north_lat) OR
(ce.west_lon < ce.east_lon AND ve.west_lon < ve.east_lon AND
NOT (ce.west_lon < ve.east_lon AND ve.west_lon < ce.east_lon))) );
SELECT RAISE(ABORT, 'The area of use of at least one coordinate_operation does not intersect the one of its target CRS')
WHERE EXISTS (SELECT * FROM coordinate_operation_view v, crs_view c, area va, area ca WHERE
WHERE EXISTS (SELECT * FROM coordinate_operation_view v, crs_view c, usage vu, extent ve, usage cu, extent ce WHERE
v.deprecated = 0 AND
v.auth_name NOT IN ('EPSG', 'ESRI', 'IGNF') AND
((v.table_name = 'grid_transformation' AND NOT (v.auth_name = 'IGNF' AND v.code = 'TSG1185'))
OR v.auth_name NOT IN ('EPSG', 'ESRI', 'IGNF')) AND
v.target_crs_auth_name = c.auth_name AND
v.target_crs_code = c.code AND
v.area_of_use_auth_name = va.auth_name AND
v.area_of_use_code = va.code AND
c.area_of_use_auth_name = ca.auth_name AND
c.area_of_use_code = ca.code AND
NOT (ca.south_lat < va.north_lat AND va.south_lat < ca.north_lat));
vu.object_table_name = v.table_name AND
vu.object_auth_name = v.auth_name AND
vu.object_code = v.code AND
vu.extent_auth_name = ve.auth_name AND
vu.extent_code = ve.code AND
cu.object_table_name = c.table_name AND
cu.object_auth_name = c.auth_name AND
cu.object_code = c.code AND
cu.extent_auth_name = ce.auth_name AND
cu.extent_code = ce.code AND
NOT ((ce.south_lat < ve.north_lat AND ve.south_lat < ce.north_lat) OR
(ce.west_lon < ce.east_lon AND ve.west_lon < ve.east_lon AND
NOT (ce.west_lon < ve.east_lon AND ve.west_lon < ce.east_lon))) );
-- check geoid_model table
SELECT RAISE(ABORT, 'missing GEOID99 in geoid_model')
@@ -132,9 +287,20 @@ FOR EACH ROW BEGIN
WHERE NOT EXISTS(SELECT 1 FROM geoid_model WHERE name = 'GEOID12B');
SELECT RAISE(ABORT, 'missing GEOID18 in geoid_model')
WHERE NOT EXISTS(SELECT 1 FROM geoid_model WHERE name = 'GEOID18');
-- check presence of au_ga_AUSGeoid98.tif
SELECT RAISE(ABORT, 'missing au_ga_AUSGeoid98.tif')
WHERE NOT EXISTS(SELECT 1 FROM grid_alternatives WHERE proj_grid_name = 'au_ga_AUSGeoid98.tif');
-- check PROJ.VERSION value
SELECT RAISE(ABORT, 'Value of PROJ.VERSION entry of metadata tables not substituted by actual value')
WHERE (SELECT 1 FROM metadata WHERE key = 'PROJ.VERSION' AND value LIKE '$%');
END;
INSERT INTO dummy DEFAULT VALUES;
DROP TRIGGER final_checks;
DROP TABLE dummy;
VACUUM;
ANALYZE;
VACUUM;
+724 -277
View File
File diff suppressed because it is too large. Load diff
+437 -210
View File
@@ -1,212 +1,439 @@
--- This file has been generated by scripts/build_db.py. DO NOT EDIT !
INSERT INTO "concatenated_operation" VALUES('EPSG','3896','MGI (Ferro) to WGS 84 (2)','','2m accuracy','EPSG','4805','EPSG','4326','EPSG','1037',NULL,'BEV-Aut',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','3966','MGI (Ferro) to WGS 84 (1)','Accuracy estimate is not available.','For military purposes only.','EPSG','4805','EPSG','4326','EPSG','2370',NULL,'DMA-balk',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','4435','Puerto Rico to NAD83(HARN) (1)','May be taken as approximate transformation Puerto Rico to WGS 84 - see code 8583.','Accuracy 0.1m at 67% confidence level.','EPSG','4139','EPSG','4152','EPSG','3634',NULL,'NGS-PRVI',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','4837','Amersfoort to ED50 (1)','Adopted by NAM in 2006, replacing polynomial tfms 1046, 6304, 1050 and 6306.','Oil and gas exploration and production.','EPSG','4289','EPSG','4230','EPSG','1275',NULL,'NAM-Nld 2006',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','5190','Tokyo 1892 to Korea 2000 (1)','','Accuracy 10m.','EPSG','5132','EPSG','4737','EPSG','3266',NULL,'OGP-Kor',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','5192','Tokyo 1892 to WGS 84 (1)','','Accuracy 10m.','EPSG','5132','EPSG','4326','EPSG','3266',NULL,'OGP-Kor',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','5230','S-JTSK (Ferro) to WGS 84 (2)','','For applications to an accuracy of 1 metre.','EPSG','4818','EPSG','4326','EPSG','1211',NULL,'OGP-Svk',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','5240','S-JTSK/05 (Ferro) to WGS 84 (1)','Replaces S-JTSK (Ferro) to WGS 84 (1) (CRS code 8642) in Czech Republic.','For applications to an accuracy of 1 metre.','EPSG','5229','EPSG','4326','EPSG','1079',NULL,'OGP-Cze',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','5242','S-JTSK (Ferro) to WGS 84 (3)','Replaces S-JTSK (Ferro) to WGS 84 (1) (tfm code 8642).','Parameter values from S-JTSK/05 to ETRS89 (1) (code 5226). For applications to an accuracy of 1m.','EPSG','4818','EPSG','4326','EPSG','1079',NULL,'OGP-Cze R05',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','5838','Lisbon (Lisbon) to WGS 84 (2)','','For applications to an accuracy of 2 metres.','EPSG','4803','EPSG','4326','EPSG','1294',NULL,'OGP-Prt 2009',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','6714','Tokyo to JGD2011 (1)','See Tokyo to JGD2011 (2) (code 6740) for areas other than northern Honshu.','Surveying, mapping and civil engineering.','EPSG','4301','EPSG','6668','EPSG','4170',NULL,'OGP-Jpn N Honshu',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','6739','NAD27 to NAD83(HARN) (22)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8622.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1410',NULL,'NGS-Usa SD',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','6874','Tananarive (Paris) to WGS 84 (2)','Used by OMV.','For applications with an accuracy of 3m.','EPSG','4810','EPSG','4326','EPSG','3273',NULL,'OGP-Mdg',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','7811','NTF (Paris) to RGF93 (2)','Second step is an emulation using NTv2 method of geocentric Interpolation method described in tfm code 7810. Note that the grid file parameters are of opposite sign.','Approximation to better than 1m of transformation of coordinates referenced to NTF (Paris) to RGF93.','EPSG','4807','EPSG','4171','EPSG','3694',NULL,'IOGP-Fra NTv2',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','7965','Poolbeg height (ft(Br36)) to Malin Head height (1)','','Change of height to a different vertical reference surface for topographic mapping. Accuracy 0.1m.','EPSG','5754','EPSG','5731','EPSG','1305',NULL,'1',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','7967','Poolbeg height (ft(Br36)) to Belfast height (1)','','Change of height to a different vertical reference surface for topographic mapping and engineering survey. Accuracy 0.1m.','EPSG','5754','EPSG','5732','EPSG','1305',NULL,'1',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','7973','NGVD29 height (ftUS) to NAVD88 height (1)','','Change of height to a different vertical reference surface and unit. Accuracy 2cm.','EPSG','5702','EPSG','5703','EPSG','2950',NULL,'IOGP - US Conus W',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','7974','NGVD29 height (ftUS) to NAVD88 height (2)','','Change of height to a different vertical reference surface and unit, accuracy 2cm.','EPSG','5702','EPSG','5703','EPSG','2949',NULL,'IOGP - US Conus C',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','7975','NGVD29 height (ftUS) to NAVD88 height (3)','','Change of height to a different vertical reference surface and unit, accuracy 2cm.','EPSG','5702','EPSG','5703','EPSG','2948',NULL,'IOGP - US Conus E',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','7983','HKPD height to HKCD depth (1)','','Hydrographic charting.','EPSG','5738','EPSG','5739','EPSG','3335',NULL,'IOGP-HK',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','7986','KOC CD height to KOC WD depth (1)','','Vertical offset including change of axis positive direction.','EPSG','5790','EPSG','5789','EPSG','3267',NULL,'IOGP-Kwt',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','7987','KOC CD height to KOC WD depth (ft) (1)','','Vertical offset including change of axis positive direction and change of axis unit.','EPSG','5790','EPSG','5614','EPSG','3267',NULL,'IOGP-Kwt',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8047','ED50 to WGS 84 (15)','Replaced by codes 8569 and 1612 in 1997 and 2001.¶The concatenation of transformations 1147 and 1146 gives the following position vector tfm: dX=-84.491 dY=-100.559 dZ=-114.209 metres rX= -2.4006 rY=-0.5367 rZ=-2.3742 microradians dS=+0.2947 ppm.','Oil exploration before 2001.','EPSG','4230','EPSG','4326','EPSG','2332',NULL,'NMA-Nor N65 1991',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8094','NTF (Paris) to WGS 84 (1)','','Not known.','EPSG','4807','EPSG','4326','EPSG','3694',NULL,'EPSG-Fra',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8174','Bogota 1975 (Bogota) to WGS 84 (1)','','For military purposes. Accuracy 6m, 5m and 6m in X, Y and Z axes.','EPSG','4802','EPSG','4326','EPSG','3229',NULL,'DMA-Col',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8175','Monte Mario (Rome) to WGS 84 (1)','','For military purposes. Accuracy 25m in each axis.','EPSG','4806','EPSG','4326','EPSG','2339',NULL,'EPSG-Ita',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8176','Tananarive (Paris) to WGS 84 (1)','','For military purposes. Accuracy not available.','EPSG','4810','EPSG','4326','EPSG','3273',NULL,'EPSG-Mdg',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8178','Batavia (Jakarta) to WGS 84 (1)','','For military purposes. Accuracy 3m in each axis.','EPSG','4813','EPSG','4326','EPSG','1355',NULL,'EPSG-Idn Sumatra',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8183','HD72 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4237','EPSG','4326','EPSG','1119',NULL,'EPSG-Hun',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8186','NTF (Paris) to ED50 (1)','','Not known.','EPSG','4807','EPSG','4230','EPSG','3694',NULL,'EPSG-Fra',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8188','NTF (Paris) to WGS 72 (1)','','Not known.','EPSG','4807','EPSG','4322','EPSG','3694',NULL,'EPSG-Fra',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8190','AGD66 to WGS 84 (2)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. 0.1m accuracy.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2575',NULL,'EPSG-Aus 5m',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8192','AGD84 to WGS 84 (3)','Approximation assuming that GDA94 is equivalent to WGS 84.','5m accuracy. Approximation assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326','EPSG','2575',NULL,'EPSG-Aus 5m',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8194','AGD84 to WGS 84 (4)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326','EPSG','2575',NULL,'EPSG-Aus 1m',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8195','RT90 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4124','EPSG','4326','EPSG','1225',NULL,'EPSG-Swe',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8199','Pulkovo 1942 to WGS 84 (2)','Approximation at the +/- 1m level assuming that LKS94(ETRS89) is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that LKS94(ETRS89) is equivalent to WGS 84.','EPSG','4284','EPSG','4326','EPSG','1145',NULL,'EPSG-Ltu',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8211','Voirol 1875 (Paris) to WGS 84 (1)','','Oil exploration.','EPSG','4811','EPSG','4326','EPSG','1365',NULL,'EPSG-Dza N',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8215','Tete to WGS 84 (1)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','1167',NULL,'EPSG-Moz',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8217','Tete to WGS 84 (2)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','2350',NULL,'EPSG-Moz A',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8219','Tete to WGS 84 (3)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','2351',NULL,'EPSG-Moz B',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8221','Tete to WGS 84 (4)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','2352',NULL,'EPSG-Moz C',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8223','Tete to WGS 84 (5)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','2353',NULL,'EPSG-Moz D',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8234','DHDN to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4314','EPSG','4326','EPSG','2326',NULL,'EPSG-Deu W',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8236','Pulkovo 1942 to WGS 84 (11)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','EPSG','4284','EPSG','4326','EPSG','1343',NULL,'EPSG-Deu E',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8243','NAD27 to WGS 84 (25)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84. Superseded by NAD27 to WGS 84 (27) (code 8404) in Quebec and NAD27 to WGS 84 (26) (code 8245) elsewhere in Canada.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','1061',NULL,'EPSG-Can old',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8245','NAD27 to WGS 84 (26)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','1061',NULL,'EPSG-Can',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8263','MGI (Ferro) to WGS 84 (1)','Accuracy estimate is not available.','For military purposes only.','EPSG','4805','EPSG','4326','EPSG','2370',NULL,'DMA-balk',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8363','ETRS89 + Baltic 1957 height to ETRS89 + EVRF2007 height (1)','Compound transformation using two separate quasigeoid models (DVRM05 and DMQSK2014E).','Recommended method for transforming coordinates between Baltic 1957 height and EVRF2007 height and vice-versa in Slovakia.','EPSG','8360','EPSG','7423','EPSG','1211',NULL,'UGKK-Svk',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8386','Old Hawaiian to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4135','EPSG','4326','EPSG','1334',NULL,'EPSG-Usa Hi',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8388','St. Lawrence Island to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4136','EPSG','4326','EPSG','1332',NULL,'EPSG-Usa AK StL',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8390','St. Paul Island to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4137','EPSG','4326','EPSG','1333',NULL,'EPSG-Usa AK StP',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8392','St. George Island to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4138','EPSG','4326','EPSG','1331',NULL,'EPSG-Usa AK StG',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8394','NAD27(CGQ77) to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84. Superseded by NAD27(CGQ77) to WGS 84 (2) (code 8564).','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4609','EPSG','4326','EPSG','1368',NULL,'EPSG-Can Qc NT1',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8396','AGD66 to WGS 84 (3)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD66 to WGS 84 (11) (code 8581).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2283',NULL,'EPSG-Aus ACT 1m',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8398','AGD66 to WGS 84 (4)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD66 to WGS 84 (9) (code 8576).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','1282',NULL,'EPSG-Aus Tas 1m',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8400','AGD66 to WGS 84 (5)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2286',NULL,'EPSG-Aus NSW Vic 1m',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8402','Puerto Rico to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4139','EPSG','4326','EPSG','1335',NULL,'EPSG-PRVI',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8404','NAD27 to WGS 84 (27)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84. Superseded by NAD27 to WGS 84 (31) (code 8565).','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','1368',NULL,'EPSG-Can QC',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8406','NAD27(76) to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4608','EPSG','4326','EPSG','1367',NULL,'EPSG-Can On',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8408','AGD66 to WGS 84 (6)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD66 to WGS 84 (11) (code 8578).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2285',NULL,'EPSG-Aus Vic 0.1m',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8418','ATS77 to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4122','EPSG','4326','EPSG','1447',NULL,'EPSG-Can NB',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8419','ATS77 to WGS 84 (2)','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4122','EPSG','4326','EPSG','1533',NULL,'EPSG-Can PEI',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8420','NAD27 to WGS 84 (32)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','2375',NULL,'SK PMC-Can SK',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8421','NAD83 to WGS 84 (7)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4269','EPSG','4326','EPSG','2375',NULL,'SK PMC-Can SK',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8422','NAD83 to WGS 84 (8)','The gridded difference file AB_CSRS.DAC in STEP 1 will need to be renamed to AB_CSRS.gsb to run in some software suites. Formats identical, but AB file is provincial fit only.','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4269','EPSG','4326','EPSG','2376',NULL,'Alb Env-Can AB',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8442','ETRS89 to S-JTSK (5)','Recommended method of a transformation from ETRS89 to S-JTSK in Slovakia. For reverse transformation see S-JTSK to ETRS89 (6) (code 8443). Both together replace S-JTSK to ETRS89 (4) (code 4827).','GIS, geodetic survey.','EPSG','4258','EPSG','4156','EPSG','1211',NULL,'UGKK-Sk JTSK03',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8443','S-JTSK to ETRS89 (6)','Recommended method of a transformation from S-JTSK to ETRS89 in Slovakia. For reverse transformation see ETRS89 to S-JTSK (5) (code 8442). Both together replace S-JTSK to ETRS89 (4) (code 4827).','GIS, geodetic survey.','EPSG','4156','EPSG','4258','EPSG','1211',NULL,'UGKK-Sk JTSK03',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8453','AGD66 to WGS 84 (7)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','1282',NULL,'EPSG-Aus Tas 0.1m',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8454','AGD66 to WGS 84 (8)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2284',NULL,'EPSG-Aus NT 0.1m',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8457','CH1903+ to WGS 84 (1)','Approximation at the +/- 1m level assuming that CHTRF95 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that CHTRF95 is equivalent to WGS 84.','EPSG','4150','EPSG','4326','EPSG','1286',NULL,'EPSG-CH',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8460','NAD27 to NAD83(HARN) (1)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8590.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1372',NULL,'NGS-Usa AL',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8461','NAD27 to NAD83(HARN) (2)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8591.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1373',NULL,'NGS-Usa AZ',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8462','NAD27 to NAD83(HARN) (3)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8593.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2297',NULL,'NGS-Usa CA n',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8463','NAD27 to NAD83(HARN) (4)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8594.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2298',NULL,'NGS-Usa CA s',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8464','NAD27 to NAD83(HARN) (5)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8595.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1376',NULL,'NGS-Usa CO',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8465','NAD27 to NAD83(HARN) (6)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8597.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1380',NULL,'NGS-Usa GA',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8466','NAD27 to NAD83(HARN) (7)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8596.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1379',NULL,'NGS-Usa FL',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8467','NAD27 to NAD83(HARN) (8)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8611.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','2382',NULL,'NGS-Usa ID MT e',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8468','NAD27 to NAD83(HARN) (9)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8612.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','2383',NULL,'NGS-Usa ID MT w',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8469','NAD27 to NAD83(HARN) (10)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8602.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1386',NULL,'NGS-Usa KY',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8470','NAD27 to NAD83(HARN) (11)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8603.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1387',NULL,'NGS-Usa LA',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8471','NAD27 to NAD83(HARN) (12)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8605.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','2377',NULL,'NGS-Usa DE MD',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8472','NAD27 to NAD83(HARN) (13)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8604.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1388',NULL,'NGS-Usa ME',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8473','NAD27 to NAD83(HARN) (14)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8607.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1391',NULL,'NGS-Usa MI',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8474','NAD27 to NAD83(HARN) (15)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8609.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1393',NULL,'NGS-Usa MS',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8475','NAD27 to NAD83(HARN) (16)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8613.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1396',NULL,'NGS-Usa NE',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8476','NAD27 to NAD83(HARN) (17)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8606.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2378',NULL,'NGS-Usa NewEng',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8477','NAD27 to NAD83(HARN) (18)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8616.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1400',NULL,'NGS-Usa NM',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8478','NAD27 to NAD83(HARN) (19)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8617.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1401',NULL,'NGS-Usa NY',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8479','NAD27 to NAD83(HARN) (20)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8618.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1403',NULL,'NGS-Usa ND',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8480','NAD27 to NAD83(HARN) (21)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8620.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1405',NULL,'NGS-Usa OK',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8481','Puerto Rico to NAD83(HARN) (1)','May be taken as approximate transformation Puerto Rico to WGS 84 - see code 8583.','Accuracy 0.1m at 67% confidence level.','EPSG','4139','EPSG','4152','EPSG','1335',NULL,'NGS-PRVI',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8482','NAD27 to NAD83(HARN) (22)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8622.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1410',NULL,'NGS-Usa SD',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8483','NAD27 to NAD83(HARN) (23)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8623.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1411',NULL,'NGS-Usa TN',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8484','NAD27 to NAD83(HARN) (24)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8624.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2379',NULL,'NGS-Usa TX e',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8485','NAD27 to NAD83(HARN) (25)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8625.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','2380',NULL,'NGS-Usa TX w',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8486','NAD27 to NAD83(HARN) (26)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8627.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1415',NULL,'NGS-Usa VA',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8487','NAD27 to NAD83(HARN) (27)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8621.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2381',NULL,'NGS-Usa OR WA',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8488','NAD27 to NAD83(HARN) (28)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8629.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1418',NULL,'NGS-Usa WI',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8489','NAD27 to NAD83(HARN) (29)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8630.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1419',NULL,'NGS-Usa WY',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8496','NAD27 to WGS 84 (28)','','Geodetic survey.','EPSG','4267','EPSG','4326','EPSG','2374',NULL,'NGS-Usa conus',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8497','NAD27 to WGS 84 (29)','','Geodetic survey.','EPSG','4267','EPSG','4326','EPSG','2373',NULL,'NGS-Usa AK',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8508','Old Hawaiian to NAD83(HARN) (1)','Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs Old Hawaiian (code 4135), NAD83 (code 4269) and NAD83(HARN) have longitudes positive east. May be taken as approximate transformation Old Hawaiin to WGS 84 - see code 8582.','Assumes NAD83 is coincident with NAD83(HARN). Accuracy about 1m.','EPSG','4135','EPSG','4152','EPSG','1334',NULL,'NGS-Usa HI',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8509','NAD27 to NAD83(HARN) (30)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8599.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1383',NULL,'NGS-Usa IN',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8510','NAD27 to NAD83(HARN) (31)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8601.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1385',NULL,'NGS-Usa KS',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8511','NAD27 to NAD83(HARN) (32)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8614.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1397',NULL,'NGS-Usa NV',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8512','NAD27 to NAD83(HARN) (33)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8619.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1404',NULL,'NGS-Usa OH',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8513','NAD27 to NAD83(HARN) (34)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8626.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1413',NULL,'NGS-Usa UT',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8514','NAD27 to NAD83(HARN) (35)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8628.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1417',NULL,'NGS-Usa WV',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8517','Chos Malal 1914 to WGS 84 (1)','May be implemented using a single step geocentric translations of dx=+5.5m dY=+176.7m dZ=+141.4m.','Oil exploration','EPSG','4160','EPSG','4326','EPSG','2325',NULL,'TOT-Arg Neu',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8530','South Yemen to WGS 84 (1)','May be implemented as a single transformation using geocentric translations transformation method with parameter values dX=-76m dY=-138m dZ=+67m.','Approximation at the +/- 1m level assuming that NGN96 is equivalent to WGS 84.','EPSG','4164','EPSG','4326','EPSG','1340',NULL,'IGN-Yem South',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8532','Indian 1960 to WGS 84 (1)','May be implemented as a single transformation using position vector 7-parameter geocentric transformation method with parameter values dX=+199m dY=+931m dZ=+318.9m rX=rY=0 sec rZ=+0.814 sec dS=-0.38 ppm.','Oil exploration.','EPSG','4131','EPSG','4326','EPSG','1495',NULL,'PV-Vnm',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8537','Egypt 1907 to WGS 84 (2)','Used by Shell. May be implemented as a single transformation using position vector 7-parameter geocentric transformation method with parameter values dX=-121.8m dY=+98.1m dZ=-10.7m rX=rY=0 sec rZ=+0.554 sec dS=+0.2263 ppm.','Oil exploration.','EPSG','4229','EPSG','4326','EPSG','1086',NULL,'MCE-Egy',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8553','NAD27 to NAD83(HARN) (36)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8598.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1382',NULL,'NGS-Usa IL',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8554','NAD27 to NAD83(HARN) (37)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8615.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1399',NULL,'NGS-Usa NJ',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8560','AGD84 to WGS 84 (5)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD84 to WGS 84 (6) (code 8579).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326','EPSG','1280',NULL,'EPSG-Aus WA',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8562','Nord Sahara 1959 to WGS 84 (3)','Derived at IGN monument CFP19 using Transit. Can be implemented as a single 7-param Position Vector transformation with parameter values of dX=-156.5m dY=-87.2m dZ=+287.8m; rX=rY=0 rZ=+0.814sec; dS=-0.38ppm.','Oil exploration.','EPSG','4307','EPSG','4326','EPSG','2393',NULL,'CGG-Alg HM',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8563','NZGD49 to WGS 84 (3)','Assumes WGS 84 is coincident with NZGD2000. Accuracy about 1m.','Assumes WGS 84 is coincident with NZGD2000. Accuracy about 1m.','EPSG','4272','EPSG','4326','EPSG','1175',NULL,'OSG-Nzl 1m',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8564','NAD27(CGQ77) to WGS 84 (2)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4609','EPSG','4326','EPSG','1368',NULL,'EPSG-Can Qc NT2',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8565','NAD27 to WGS 84 (31)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','1368',NULL,'EPSG-Can Que',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8566','NAD83 to WGS 84 (6)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4269','EPSG','4326','EPSG','1368',NULL,'EPSG-Can Qc',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8568','Deir ez Zor to WGS 84 (1)','Can be implemented as a position vector tfm with param. values dX=-174.6 dY=-3.1 dZ=238.1m; rX=rY=0 rZ=0.814"; dS=-0.38 ppm.','Oil exploration','EPSG','4227','EPSG','4326','EPSG','2329',NULL,'EPSG-Syr',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8569','ED50 to WGS 84 (21)','Included in Statens Kartverk programme wsktrans between 1997 (v3.1) and 2001 (v4.0). Replaced by ED50 to WGS 84 (23) (code 1612) in April 2001.','Oil exploration before 1997/2001.','EPSG','4230','EPSG','4326','EPSG','2332',NULL,'EPSG-Nor N65 1997',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8571','Accra to WGS 84 (2)','Can be implemented as a position vector tfm dX=-171.16 dY=17.29 dZ=325.21m, rX=rY=0 rZ=0.814", dS=-0.38 ppm. See tfm code 15495. Found in use within oil industry erroneously concatenated as dX=-171.16 dY=17.29 dZ=327.81m, rX=rY0 rZ=0.554", dS=0.2263 ppm.','Oil industry.','EPSG','4168','EPSG','4326','EPSG','1505',NULL,'EPSG-Gha',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8572','Amersfoort to WGS 84 (2)','Parameter values for step 1 from Amersfoort to ETRS89 (2) (code 1751). Step 2 assumes that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Supersedes Amersfoort to WGS 84 (1) (code 1112).','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4289','EPSG','4326','EPSG','1275',NULL,'EPSG-Nld',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8573','RGF93 to WGS 84 (1)','','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4171','EPSG','4326','EPSG','1096',NULL,'EPSG-Fra',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8574','American Samoa 1962 to WGS 84 (2)','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARNS) can be considered to be coincident with WGS 84.','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARN) can be considered to be coincident with WGS 84.','EPSG','4169','EPSG','4326','EPSG','2288',NULL,'EPSG-Asm',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8575','American Samoa 1962 to WGS 84 (3)','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARNS) can be considered to be coincident with WGS 84.','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARN) can be considered to be coincident with WGS 84.','EPSG','4169','EPSG','4326','EPSG','2289',NULL,'EPSG-Asm',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8576','AGD66 to WGS 84 (9)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Supersedes AGD66 to WGS 84 (4) (code 8398).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','1282',NULL,'EPSG-Aus Tas 1m',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8577','AGD66 to WGS 84 (10)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2284',NULL,'EPSG-Aus NT',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8578','AGD66 to WGS 84 (11)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Supersedes AGD66 to WGS 84 (3) (code 8396) and AGD66 to WGS 84 (6) (code 8408).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2287',NULL,'EPSG-Aus',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8579','AGD84 to WGS 84 (6)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Supersedes AGD84 to WGS 84 (5) (code 8560).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326','EPSG','1280',NULL,'EPSG-Aus WA',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8580','IRENET95 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4173','EPSG','4326','EPSG','1305',NULL,'OSI-Ire',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8581','PSD93 to WGS 84 (2)','Replaced by PSD93 to WGS 84 (1) (code 1439) in 1997. Can be implemented as a position vector tfm with parameter values dX= -182.046 dY= -225.604 dZ=+173.384m rX= -0.616 rY= -1.655 rZ=+8.378" dS=16.8673ppm.','Oil exploration.','EPSG','4134','EPSG','4326','EPSG','3288',NULL,'PDO-Omn 93',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8582','Old Hawaiian to WGS 84 (2)','Transformation steps are from Old Hawaiian to NAD83(HARN) (1) (code 8508) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4135','EPSG','4326','EPSG','1334',NULL,'EPSG-Usa Hi',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8583','Puerto Rico to WGS 84 (2)','Transformation steps are from Puerto Rico to NAD83(HARN) (1) (code 4435) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4139','EPSG','4326','EPSG','3634',NULL,'EPSG-PRVI',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8584','NAD27 to NAD83(CSRS98) (3)','Can be taken as an approximate transformation NAD27 to WGS 84 - see code 8585.','Accuracy 1-2 metres.','EPSG','4267','EPSG','4140','EPSG','2376',NULL,'EPSG-Can AB',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8585','NAD27 to WGS 84 (36)','Steps based on concatenated transformation NAD27 to NAD83(CSRS) (3) (code 8635) assuming that NAD83(CSRS) is equivalent to WGS 84.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2376',NULL,'EPSG-Can AB',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8586','NAD27 to NAD83(HARN) (38)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8592.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1374',NULL,'NGS-Usa AR',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8587','NAD27 to NAD83(HARN) (39)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8600.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1384',NULL,'NGS-Usa IA',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8588','NAD27 to NAD83(HARN) (40)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8608.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1392',NULL,'NGS-Usa MN',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8589','NAD27 to NAD83(HARN) (41)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8610.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1394',NULL,'NGS-Usa MO',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8590','NAD27 to WGS 84 (37)','Transformation steps are from NAD27 to NAD83(HARN) (1) (code 8460) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1372',NULL,'EPSG-Usa AL',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8591','NAD27 to WGS 84 (38)','Transformation steps are from NAD27 to NAD83(HARN) (2) (code 8461) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1373',NULL,'EPSG-Usa AZ',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8592','NAD27 to WGS 84 (39)','Transformation steps are from NAD27 to NAD83(HARN) (38) (code 8586) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1374',NULL,'EPSG-Usa AR',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8593','NAD27 to WGS 84 (40)','Transformation steps are from NAD27 to NAD83(HARN) (3) (code 8462) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2297',NULL,'EPSG-Usa CA n',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8594','NAD27 to WGS 84 (41)','Transformation steps are from NAD27 to NAD83(HARN) (4) (code 8463) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2298',NULL,'EPSG-Usa CA s',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8595','NAD27 to WGS 84 (42)','Transformation steps are from NAD27 to NAD83(HARN) (5) (code 8464) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1376',NULL,'EPSG-Usa CO',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8596','NAD27 to WGS 84 (43)','Transformation steps are from NAD27 to NAD83(HARN) (7) (code 8466) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1379',NULL,'EPSG-Usa FL',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8597','NAD27 to WGS 84 (44)','Transformation steps are from NAD27 to NAD83(HARN) (6) (code 8465) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1380',NULL,'EPSG-Usa GA',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8598','NAD27 to WGS 84 (45)','Transformation steps are from NAD27 to NAD83(HARN) (36) (code 8553) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1382',NULL,'EPSG-Usa IL',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8599','NAD27 to WGS 84 (46)','Transformation steps are from NAD27 to NAD83(HARN) (30) (code 8509) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1383',NULL,'EPSG-Usa IN',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8600','NAD27 to WGS 84 (47)','Transformation steps are from NAD27 to NAD83(HARN) (39) (code 8587) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1384',NULL,'EPSG-Usa IA',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8601','NAD27 to WGS 84 (48)','Transformation steps are from NAD27 to NAD83(HARN) (31) (code 8510) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1385',NULL,'EPSG-Usa KS',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8602','NAD27 to WGS 84 (49)','Transformation steps are from NAD27 to NAD83(HARN) (10) (code 8469) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1386',NULL,'EPSG-Usa KY',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8603','NAD27 to WGS 84 (50)','Transformation steps are from NAD27 to NAD83(HARN) (11) (code 8470) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1387',NULL,'EPSG-Usa LA',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8604','NAD27 to WGS 84 (51)','Transformation steps are from NAD27 to NAD83(HARN) (13) (code 8472) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1388',NULL,'EPSG-Usa ME',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8605','NAD27 to WGS 84 (52)','Transformation steps are from NAD27 to NAD83(HARN) (12) (code 8471) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2377',NULL,'EPSG-Usa DE MD',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8606','NAD27 to WGS 84 (53)','Transformation steps are from NAD27 to NAD83(HARN) (17) (code 8476) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2378',NULL,'EPSG-Usa NewEng',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8607','NAD27 to WGS 84 (54)','Transformation steps are from NAD27 to NAD83(HARN) (14) (code 8473) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1391',NULL,'EPSG-Usa MI',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8608','NAD27 to WGS 84 (55)','Transformation steps are from NAD27 to NAD83(HARN) (40) (code 8588) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1392',NULL,'EPSG-Usa MN',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8609','NAD27 to WGS 84 (56)','Transformation steps are from NAD27 to NAD83(HARN) (15) (code 8474) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1393',NULL,'EPSG-Usa MS',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8610','NAD27 to WGS 84 (57)','Transformation steps are from NAD27 to NAD83(HARN) (41) (code 8589) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1394',NULL,'EPSG-Usa MO',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8611','NAD27 to WGS 84 (58)','Transformation steps are from NAD27 to NAD83(HARN) (8) (code 8467) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2382',NULL,'EPSG-Usa ID MT e',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8612','NAD27 to WGS 84 (59)','Transformation steps are from NAD27 to NAD83(HARN) (9) (code 8468) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2383',NULL,'EPSG-Usa ID MT w',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8613','NAD27 to WGS 84 (60)','Transformation steps are from NAD27 to NAD83(HARN) (16) (code 8475) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1396',NULL,'EPSG-Usa NE',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8614','NAD27 to WGS 84 (61)','Transformation steps are from NAD27 to NAD83(HARN) (32) (code 8511) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1397',NULL,'EPSG-Usa NV',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8615','NAD27 to WGS 84 (62)','Transformation steps are from NAD27 to NAD83(HARN) (37) (code 8554) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1399',NULL,'EPSG-Usa NJ',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8616','NAD27 to WGS 84 (63)','Transformation steps are from NAD27 to NAD83(HARN) (18) (code 8477) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1400',NULL,'EPSG-Usa NM',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8617','NAD27 to WGS 84 (64)','Transformation steps are from NAD27 to NAD83(HARN) (19) (code 8478) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1401',NULL,'EPSG-Usa NY',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8618','NAD27 to WGS 84 (65)','Transformation steps are from NAD27 to NAD83(HARN) (20) (code 8479) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1403',NULL,'EPSG-Usa ND',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8619','NAD27 to WGS 84 (66)','Transformation steps are from NAD27 to NAD83(HARN) (33) (code 8512) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1404',NULL,'EPSG-Usa OH',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8620','NAD27 to WGS 84 (67)','Transformation steps are from NAD27 to NAD83(HARN) (21) (code 8480) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1405',NULL,'EPSG-Usa OK',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8621','NAD27 to WGS 84 (68)','Transformation steps are from NAD27 to NAD83(HARN) (27) (code 8487) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2381',NULL,'EPSG-Usa OR WA',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8622','NAD27 to WGS 84 (69)','Transformation steps are from NAD27 to NAD83(HARN) (22) (code 6739) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1410',NULL,'EPSG-Usa SD',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8623','NAD27 to WGS 84 (70)','Transformation steps are from NAD27 to NAD83(HARN) (23) (code 8483) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1411',NULL,'EPSG-Usa TN',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8624','NAD27 to WGS 84 (71)','Transformation steps are from NAD27 to NAD83(HARN) (24) (code 8484) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2379',NULL,'EPSG-Usa TX e',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8625','NAD27 to WGS 84 (72)','Transformation steps are from NAD27 to NAD83(HARN) (25) (code 8485) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2380',NULL,'EPSG-Usa TX w',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8626','NAD27 to WGS 84 (73)','Transformation steps are from NAD27 to NAD83(HARN) (34) (code 8513) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1413',NULL,'EPSG-Usa UT',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8627','NAD27 to WGS 84 (74)','Transformation steps are from NAD27 to NAD83(HARN) (26) (code 8486) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1415',NULL,'EPSG-Usa VA',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8628','NAD27 to WGS 84 (75)','Transformation steps are from NAD27 to NAD83(HARN) (35) (code 8514) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1417',NULL,'EPSG-Usa WV',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8629','NAD27 to WGS 84 (76)','Transformation steps are from NAD27 to NAD83(HARN) (28) (code 8488) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1418',NULL,'EPSG-Usa WI',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8630','NAD27 to WGS 84 (77)','Transformation steps are from NAD27 to NAD83(HARN) (29) (code 8489) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1419',NULL,'EPSG-Usa WY',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8631','Garoua to WGS 84 (1)','','Oil industry.','EPSG','4197','EPSG','4326','EPSG','2590',NULL,'EPSG-Cmr',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8632','Kousseri to WGS 84 (1)','','Oil industry.','EPSG','4198','EPSG','4326','EPSG','2591',NULL,'EPSG-Cmr',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8633','Yoff to WGS 84 (1)','Derived via WGS72. Can be used as a single positon vector transformation with parameter vaues of dX = -37 m, dY = +157 m, dZ = +89.5 m, rX = rY = 0 sec, rZ = 0.554 sec, dS = 0.219 ppm','Military purposes.','EPSG','4310','EPSG','4326','EPSG','1207',NULL,'EPSG-SEN',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8634','Beduaram to WGS 84 (1)','Derived via WGS72BE. Can be used as a single positon vector transformation with parameter vaues of dX = -101 m, dY = -111 m, dZ = +188.9 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm','Oil exploration.','EPSG','4213','EPSG','4326','EPSG','2771',NULL,'ELF-Ner SE',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8635','NAD27 to NAD83(CSRS) (3)','Can be taken as an approximate transformation NAD27 to WGS 84 - see code 8585.','Accuracy 1-2 metres.','EPSG','4267','EPSG','4617','EPSG','2376',NULL,'EPSG-Can AB',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8636','Carthage (Paris) to WGS 84 (1)','','For military purposes.','EPSG','4816','EPSG','4326','EPSG','1618',NULL,'EPSG-Tun',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8637','Lisbon (Lisbon) to WGS 84 (1)','','For applications to an accuracy of 2 metres.','EPSG','4803','EPSG','4326','EPSG','1294',NULL,'EPSG-Prt',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8638','Makassar (Jakarta) to WGS 84 (1)','','Oil exploration.','EPSG','4804','EPSG','4326','EPSG','1316',NULL,'EPSG - Idn Sul SW',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8639','NGO 1948 (Oslo) to WGS 84 (1)','','For military purposes.','EPSG','4817','EPSG','4326','EPSG','1352',NULL,'EPSG-Nor',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8640','Nord Sahara 1959 (Paris) to WGS 84 (1)','','For military purposes.','EPSG','4819','EPSG','4326','EPSG','1026',NULL,'EPSG-Dza',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8641','Segara (Jakarta) to WGS 84 (1)','','Accuracy estimate not available.','EPSG','4820','EPSG','4326','EPSG','1360',NULL,'EPSG-Idn Kal SW',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8642','S-JTSK (Ferro) to WGS 84 (1)','Replaced by S-JTSK (Ferro) to WGS 84 (3) (code 5242) in 2009.','For applications to an accuracy of 1 metre.','EPSG','4818','EPSG','4326','EPSG','1079',NULL,'EPSG-Cze',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8643','Greek to WGS 84 (1)','','5m accuracy','EPSG','4120','EPSG','4326','EPSG','3254',NULL,'EPSG-Grc',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8644','Greek (Athens) to WGS 84 (1)','','5m accuracy.','EPSG','4815','EPSG','4326','EPSG','3254',NULL,'EPSG-Grc',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8645','MGI (Ferro) to WGS 84 (2)','','2m accuracy','EPSG','4805','EPSG','4326','EPSG','1037',NULL,'BEV-Aut',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8646','Manoca 1962 to WGS 84 (1)','Derived via WGS72BE. Can be used as a single positon vector transformation with parameter vaues of dX = -56.7 m, dY = -171.8 m, dZ = -40.6 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm','Oil exploration','EPSG','4193','EPSG','4326','EPSG','2555',NULL,'OGP-Cmr',1);
INSERT INTO "concatenated_operation" VALUES('EPSG','8647','NAD27 to WGS 84 (78)','','Oil industry operations.','EPSG','4267','EPSG','4326','EPSG','2831',NULL,'EPSG-Can E Off',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8648','Lisbon 1890 (Lisbon) to WGS 84 (1)','','Low accuracy applications.','EPSG','4904','EPSG','4326','EPSG','1294',NULL,'EPSG-Prt 5m',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8649','Lisbon 1890 (Lisbon) to WGS 84 (2)','','Medium accuracy applications.','EPSG','4904','EPSG','4326','EPSG','1294',NULL,'EPSG-Prt 1m',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8650','Palestine 1923 to WGS 84 (2)','Can be implemented as a geocentric translation tfm with param. values dX = -229m, dY = -67m, dZ= +277m.','Accuracy: 1m to north and 10m to south of east-west line through Beersheba (31°15''N).','EPSG','4281','EPSG','4326','EPSG','2603',NULL,'SoI-Isr',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8651','Vientiane 1982 to WGS 84 (1)','Can be implemented as a geocentric translation tfm with param. values dX = 42.358m, dY = -124.688m, dZ= -37.366m.','Accuracy: 5m.','EPSG','4676','EPSG','4326','EPSG','1138',NULL,'EPSG-Lao',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8652','Lao 1993 to WGS 84 (1)','Can be implemented as a geocentric translation tfm with param. values dX = 43.933m, dY = -129.593m, dZ= -39.331m.','Accuracy: 5m.','EPSG','4677','EPSG','4326','EPSG','1138',NULL,'EPSG-Lao',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8655','Manoca 1962 to WGS 84 (2)','Derived via WGS 72BE. Can be implemented as a single positon vector transformation with parameter vaues of dX = -56.7 m, dY = -171.8 m, dZ = -38.7 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm.','Oil exploration','EPSG','4193','EPSG','4326','EPSG','2555',NULL,'OGP-Cmr',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8656','Mhast (offshore) to WGS 84 (1)','Derived via WGS 72BE. Can be implemented as a single positon vector transformation with parameter vaues of dX = -255.0 m, dY = -29.0 m, dZ = -103.1 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm.','Oil industry exploration and production between 1979 and 1987.','EPSG','4705','EPSG','4326','EPSG','3180',NULL,'OGP-Ago Cab',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8657','Egypt Gulf of Suez S-650 TL to WGS 84 (1)','Can be implemented as a single positon vector transformation with parameter vaues of dX = -123.0 m, dY = 98.0 m, dZ = 3.9 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm. Replaced by Egypt Gulf of Suez S-650 TL to WGS 84 (2) (tfm code 15846).','Oil industry exploration and production between 1980 and 1984.','EPSG','4706','EPSG','4326','EPSG','2341',NULL,'OGP-Egy GoS',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','8659','Kertau (RSO) to WGS 84 (1)','Step 1 is necessary to rescale the grid units before using step 2.','For transformation of MRT68 RSO coordinates.','EPSG','4751','EPSG','4326','EPSG','1309',NULL,'OGP-Mys',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','9103','NAD27 to ITRF2014 (1)','For use with legacy data - see CT code 9104 for alternative for new areas. Note that steps 1 and 2 are documented in the geog2D domain, steps 3 and 4 in the geocentric domain. Steps 3 and 4 may be implemented in one operation using CT code 8970.','Oil and gas exploration and production.','EPSG','4267','EPSG','7789','EPSG','3357',NULL,'IOGP-Usa GoM legacy',0);
INSERT INTO "concatenated_operation" VALUES('EPSG','3896','MGI (Ferro) to WGS 84 (2)','','EPSG','4805','EPSG','4326',1.5,'BEV-Aut',0);
INSERT INTO "usage" VALUES('EPSG','8965','concatenated_operation','EPSG','3896','EPSG','1037','EPSG','1042');
INSERT INTO "concatenated_operation" VALUES('EPSG','3966','MGI (Ferro) to WGS 84 (1)','Accuracy estimate is not available.','EPSG','4805','EPSG','4326',6.0,'DMA-balk',0);
INSERT INTO "usage" VALUES('EPSG','9014','concatenated_operation','EPSG','3966','EPSG','2370','EPSG','1160');
INSERT INTO "concatenated_operation" VALUES('EPSG','4435','Puerto Rico to NAD83(HARN) (1)','Accuracy 0.1m at 67% confidence level. May be taken as approximate transformation Puerto Rico to WGS 84 - see code 8583.','EPSG','4139','EPSG','4152',0.08,'NGS-PRVI',0);
INSERT INTO "usage" VALUES('EPSG','9074','concatenated_operation','EPSG','4435','EPSG','3634','EPSG','1031');
INSERT INTO "concatenated_operation" VALUES('EPSG','4837','Amersfoort to ED50 (1)','Adopted by NAM in 2006, replacing polynomial tfms 1046, 6304, 1050 and 6306.','EPSG','4289','EPSG','4230',1.5,'NAM-Nld 2006',0);
INSERT INTO "usage" VALUES('EPSG','9130','concatenated_operation','EPSG','4837','EPSG','1275','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','5190','Tokyo 1892 to Korea 2000 (1)','','EPSG','5132','EPSG','4737',1.0,'OGP-Kor',0);
INSERT INTO "usage" VALUES('EPSG','9275','concatenated_operation','EPSG','5190','EPSG','3266','EPSG','1050');
INSERT INTO "concatenated_operation" VALUES('EPSG','5192','Tokyo 1892 to WGS 84 (1)','','EPSG','5132','EPSG','4326',1.0,'OGP-Kor',0);
INSERT INTO "usage" VALUES('EPSG','9277','concatenated_operation','EPSG','5192','EPSG','3266','EPSG','1050');
INSERT INTO "concatenated_operation" VALUES('EPSG','5230','S-JTSK (Ferro) to WGS 84 (2)','','EPSG','4818','EPSG','4326',1.0,'OGP-Svk',0);
INSERT INTO "usage" VALUES('EPSG','9306','concatenated_operation','EPSG','5230','EPSG','1211','EPSG','1041');
INSERT INTO "concatenated_operation" VALUES('EPSG','5240','S-JTSK/05 (Ferro) to WGS 84 (1)','Replaces S-JTSK (Ferro) to WGS 84 (1) (CRS code 8642) in Czech Republic.','EPSG','5229','EPSG','4326',1.0,'OGP-Cze',0);
INSERT INTO "usage" VALUES('EPSG','9312','concatenated_operation','EPSG','5240','EPSG','1079','EPSG','1041');
INSERT INTO "concatenated_operation" VALUES('EPSG','5242','S-JTSK (Ferro) to WGS 84 (3)','Parameter values from S-JTSK/05 to ETRS89 (1) (code 5226). For applications to an accuracy of 1m. Replaces S-JTSK (Ferro) to WGS 84 (1) (tfm code 8642).','EPSG','4818','EPSG','4326',1.0,'OGP-Cze R05',0);
INSERT INTO "usage" VALUES('EPSG','9314','concatenated_operation','EPSG','5242','EPSG','1079','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','5838','Lisbon (Lisbon) to WGS 84 (2)','','EPSG','4803','EPSG','4326',2.0,'OGP-Prt 2009',0);
INSERT INTO "usage" VALUES('EPSG','9511','concatenated_operation','EPSG','5838','EPSG','1294','EPSG','1042');
INSERT INTO "concatenated_operation" VALUES('EPSG','6714','Tokyo to JGD2011 (1)','See Tokyo to JGD2011 (2) (code 6740) for areas other than northern Honshu.','EPSG','4301','EPSG','6668',0.3,'OGP-Jpn N Honshu',0);
INSERT INTO "usage" VALUES('EPSG','9742','concatenated_operation','EPSG','6714','EPSG','4170','EPSG','1142');
INSERT INTO "concatenated_operation" VALUES('EPSG','6739','NAD27 to NAD83(HARN) (22)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8622.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa SD',0);
INSERT INTO "usage" VALUES('EPSG','9755','concatenated_operation','EPSG','6739','EPSG','1410','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','6874','Tananarive (Paris) to WGS 84 (2)','Used by OMV.','EPSG','4810','EPSG','4326',3.0,'OGP-Mdg',0);
INSERT INTO "usage" VALUES('EPSG','9803','concatenated_operation','EPSG','6874','EPSG','3273','EPSG','1043');
INSERT INTO "concatenated_operation" VALUES('EPSG','7811','NTF (Paris) to RGF93 v1 (2)','Second step is an emulation (using the NTv2 method) of the geocentric interpolation method described in CT code 9337. Note that the grid file parameters are of opposite sign.','EPSG','4807','EPSG','4171',1.0,'IOGP-Fra NTv2',0);
INSERT INTO "usage" VALUES('EPSG','10276','concatenated_operation','EPSG','7811','EPSG','3694','EPSG','1041');
INSERT INTO "concatenated_operation" VALUES('EPSG','7965','Poolbeg height (ft(Br36)) to Malin Head height (1)','','EPSG','5754','EPSG','5731',0.1,'1',0);
INSERT INTO "usage" VALUES('EPSG','10349','concatenated_operation','EPSG','7965','EPSG','1305','EPSG','1059');
INSERT INTO "concatenated_operation" VALUES('EPSG','7967','Poolbeg height (ft(Br36)) to Belfast height (1)','','EPSG','5754','EPSG','5732',0.1,'1',0);
INSERT INTO "usage" VALUES('EPSG','10351','concatenated_operation','EPSG','7967','EPSG','2530','EPSG','1059');
INSERT INTO "concatenated_operation" VALUES('EPSG','7973','NGVD29 height (ftUS) to NAVD88 height (1)','','EPSG','5702','EPSG','5703',0.02,'IOGP - US Conus W',0);
INSERT INTO "usage" VALUES('EPSG','10356','concatenated_operation','EPSG','7973','EPSG','2950','EPSG','1099');
INSERT INTO "concatenated_operation" VALUES('EPSG','7974','NGVD29 height (ftUS) to NAVD88 height (2)','','EPSG','5702','EPSG','5703',0.02,'IOGP - US Conus C',0);
INSERT INTO "usage" VALUES('EPSG','10357','concatenated_operation','EPSG','7974','EPSG','2949','EPSG','1099');
INSERT INTO "concatenated_operation" VALUES('EPSG','7975','NGVD29 height (ftUS) to NAVD88 height (3)','','EPSG','5702','EPSG','5703',0.02,'IOGP - US Conus E',0);
INSERT INTO "usage" VALUES('EPSG','10358','concatenated_operation','EPSG','7975','EPSG','2948','EPSG','1099');
INSERT INTO "concatenated_operation" VALUES('EPSG','7983','HKPD height to HKCD depth (1)','','EPSG','5738','EPSG','5739',0.0,'IOGP-HK',0);
INSERT INTO "usage" VALUES('EPSG','10364','concatenated_operation','EPSG','7983','EPSG','3335','EPSG','1198');
INSERT INTO "concatenated_operation" VALUES('EPSG','7986','KOC CD height to KOC WD depth (1)','','EPSG','5790','EPSG','5789',0.1,'IOGP-Kwt',0);
INSERT INTO "usage" VALUES('EPSG','10367','concatenated_operation','EPSG','7986','EPSG','3267','EPSG','1059');
INSERT INTO "concatenated_operation" VALUES('EPSG','7987','KOC CD height to KOC WD depth (ft) (1)','','EPSG','5790','EPSG','5614',0.1,'IOGP-Kwt',0);
INSERT INTO "usage" VALUES('EPSG','10368','concatenated_operation','EPSG','7987','EPSG','3267','EPSG','1099');
INSERT INTO "concatenated_operation" VALUES('EPSG','8047','ED50 to WGS 84 (15)','Replaced by codes 8569 and 1612 in 1997 and 2001.
The concatenation of transformations 1147 and 1146 gives the following position vector tfm: dX=-84.491 dY=-100.559 dZ=-114.209 metres rX= -2.4006 rY=-0.5367 rZ=-2.3742 microradians dS=+0.2947 ppm.','EPSG','4230','EPSG','4326',1.5,'NMA-Nor N65 1991',0);
INSERT INTO "usage" VALUES('EPSG','10400','concatenated_operation','EPSG','8047','EPSG','2332','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8094','NTF (Paris) to WGS 84 (1)','','EPSG','4807','EPSG','4326',2.0,'EPSG-Fra',0);
INSERT INTO "usage" VALUES('EPSG','10426','concatenated_operation','EPSG','8094','EPSG','3694','EPSG','1024');
INSERT INTO "concatenated_operation" VALUES('EPSG','8174','Bogota 1975 (Bogota) to WGS 84 (1)','Accuracy 6m, 5m and 6m in X, Y and Z axes.','EPSG','4802','EPSG','4326',10.0,'DMA-Col',0);
INSERT INTO "usage" VALUES('EPSG','10427','concatenated_operation','EPSG','8174','EPSG','3229','EPSG','1160');
INSERT INTO "concatenated_operation" VALUES('EPSG','8175','Monte Mario (Rome) to WGS 84 (1)','Accuracy 25m in each axis.','EPSG','4806','EPSG','4326',44.0,'EPSG-Ita',0);
INSERT INTO "usage" VALUES('EPSG','10428','concatenated_operation','EPSG','8175','EPSG','2339','EPSG','1160');
INSERT INTO "concatenated_operation" VALUES('EPSG','8176','Tananarive (Paris) to WGS 84 (1)','Accuracy not available.','EPSG','4810','EPSG','4326',999.0,'EPSG-Mdg',0);
INSERT INTO "usage" VALUES('EPSG','10429','concatenated_operation','EPSG','8176','EPSG','3273','EPSG','1160');
INSERT INTO "concatenated_operation" VALUES('EPSG','8178','Batavia (Jakarta) to WGS 84 (1)','Accuracy 3m in each axis.','EPSG','4813','EPSG','4326',6.0,'EPSG-Idn Sumatra',0);
INSERT INTO "usage" VALUES('EPSG','10430','concatenated_operation','EPSG','8178','EPSG','1285','EPSG','1160');
INSERT INTO "concatenated_operation" VALUES('EPSG','8183','HD72 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','EPSG','4237','EPSG','4326',NULL,'EPSG-Hun',1);
INSERT INTO "usage" VALUES('EPSG','10431','concatenated_operation','EPSG','8183','EPSG','1119','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8186','NTF (Paris) to ED50 (1)','','EPSG','4807','EPSG','4230',2.0,'EPSG-Fra',0);
INSERT INTO "usage" VALUES('EPSG','10432','concatenated_operation','EPSG','8186','EPSG','3694','EPSG','1024');
INSERT INTO "concatenated_operation" VALUES('EPSG','8188','NTF (Paris) to WGS 72 (1)','','EPSG','4807','EPSG','4322',2.0,'EPSG-Fra',0);
INSERT INTO "usage" VALUES('EPSG','10433','concatenated_operation','EPSG','8188','EPSG','3694','EPSG','1024');
INSERT INTO "concatenated_operation" VALUES('EPSG','8190','AGD66 to WGS 84 (2)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. 0.1m accuracy.','EPSG','4202','EPSG','4326',NULL,'EPSG-Aus 5m',1);
INSERT INTO "usage" VALUES('EPSG','10434','concatenated_operation','EPSG','8190','EPSG','2575','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8192','AGD84 to WGS 84 (3)','Approximation assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326',NULL,'EPSG-Aus 5m',1);
INSERT INTO "usage" VALUES('EPSG','10435','concatenated_operation','EPSG','8192','EPSG','2575','EPSG','1045');
INSERT INTO "concatenated_operation" VALUES('EPSG','8194','AGD84 to WGS 84 (4)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326',NULL,'EPSG-Aus 1m',1);
INSERT INTO "usage" VALUES('EPSG','10436','concatenated_operation','EPSG','8194','EPSG','2575','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8195','RT90 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','EPSG','4124','EPSG','4326',NULL,'EPSG-Swe',1);
INSERT INTO "usage" VALUES('EPSG','10437','concatenated_operation','EPSG','8195','EPSG','1225','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8199','Pulkovo 1942 to WGS 84 (2)','Approximation at the +/- 1m level assuming that LKS94(ETRS89) is equivalent to WGS 84.','EPSG','4284','EPSG','4326',NULL,'EPSG-Ltu',1);
INSERT INTO "usage" VALUES('EPSG','10438','concatenated_operation','EPSG','8199','EPSG','1145','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8211','Voirol 1875 (Paris) to WGS 84 (1)','','EPSG','4811','EPSG','4326',999.0,'EPSG-Dza N',0);
INSERT INTO "usage" VALUES('EPSG','10439','concatenated_operation','EPSG','8211','EPSG','1365','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8215','Tete to WGS 84 (1)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326',NULL,'EPSG-Moz',1);
INSERT INTO "usage" VALUES('EPSG','10440','concatenated_operation','EPSG','8215','EPSG','1167','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8217','Tete to WGS 84 (2)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326',NULL,'EPSG-Moz A',1);
INSERT INTO "usage" VALUES('EPSG','10441','concatenated_operation','EPSG','8217','EPSG','2350','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8219','Tete to WGS 84 (3)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326',NULL,'EPSG-Moz B',1);
INSERT INTO "usage" VALUES('EPSG','10442','concatenated_operation','EPSG','8219','EPSG','2351','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8221','Tete to WGS 84 (4)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326',NULL,'EPSG-Moz C',1);
INSERT INTO "usage" VALUES('EPSG','10443','concatenated_operation','EPSG','8221','EPSG','2352','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8223','Tete to WGS 84 (5)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326',NULL,'EPSG-Moz D',1);
INSERT INTO "usage" VALUES('EPSG','10444','concatenated_operation','EPSG','8223','EPSG','2353','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8234','DHDN to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','EPSG','4314','EPSG','4326',NULL,'EPSG-Deu W',1);
INSERT INTO "usage" VALUES('EPSG','10446','concatenated_operation','EPSG','8234','EPSG','2326','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8236','Pulkovo 1942 to WGS 84 (11)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','EPSG','4284','EPSG','4326',NULL,'EPSG-Deu E',1);
INSERT INTO "usage" VALUES('EPSG','10447','concatenated_operation','EPSG','8236','EPSG','1343','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8243','NAD27 to WGS 84 (25)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84. Superseded by NAD27 to WGS 84 (27) (code 8404) in Quebec and NAD27 to WGS 84 (26) (code 8245) elsewhere in Canada.','EPSG','4267','EPSG','4326',NULL,'EPSG-Can old',1);
INSERT INTO "usage" VALUES('EPSG','10449','concatenated_operation','EPSG','8243','EPSG','1061','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8245','NAD27 to WGS 84 (26)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4267','EPSG','4326',NULL,'EPSG-Can',1);
INSERT INTO "usage" VALUES('EPSG','10450','concatenated_operation','EPSG','8245','EPSG','1061','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8263','MGI (Ferro) to WGS 84 (1)','Accuracy estimate is not available.','EPSG','4805','EPSG','4326',NULL,'DMA-balk',1);
INSERT INTO "usage" VALUES('EPSG','10458','concatenated_operation','EPSG','8263','EPSG','2370','EPSG','1160');
INSERT INTO "concatenated_operation" VALUES('EPSG','8363','ETRS89 + Baltic 1957 height to ETRS89 + EVRF2007 height (1)','Recommended method for transforming coordinates between Baltic 1957 height and EVRF2007 height and vice-versa in Slovakia. Compound transformation using two separate quasigeoid models (DVRM05 and DMQSK2014E).','EPSG','8360','EPSG','7423',0.05,'UGKK-Svk',0);
INSERT INTO "usage" VALUES('EPSG','10510','concatenated_operation','EPSG','8363','EPSG','1211','EPSG','1059');
INSERT INTO "concatenated_operation" VALUES('EPSG','8386','Old Hawaiian to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4135','EPSG','4326',NULL,'EPSG-Usa Hi',1);
INSERT INTO "usage" VALUES('EPSG','10523','concatenated_operation','EPSG','8386','EPSG','1334','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8388','St. Lawrence Island to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4136','EPSG','4326',NULL,'EPSG-Usa AK StL',1);
INSERT INTO "usage" VALUES('EPSG','10524','concatenated_operation','EPSG','8388','EPSG','1332','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8390','St. Paul Island to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4137','EPSG','4326',NULL,'EPSG-Usa AK StP',1);
INSERT INTO "usage" VALUES('EPSG','10526','concatenated_operation','EPSG','8390','EPSG','1333','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8392','St. George Island to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4138','EPSG','4326',NULL,'EPSG-Usa AK StG',1);
INSERT INTO "usage" VALUES('EPSG','10527','concatenated_operation','EPSG','8392','EPSG','1331','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8394','NAD27(CGQ77) to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84. Superseded by NAD27(CGQ77) to WGS 84 (2) (code 8564).','EPSG','4609','EPSG','4326',NULL,'EPSG-Can Qc NT1',1);
INSERT INTO "usage" VALUES('EPSG','10529','concatenated_operation','EPSG','8394','EPSG','1368','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8396','AGD66 to WGS 84 (3)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD66 to WGS 84 (11) (code 8581).','EPSG','4202','EPSG','4326',NULL,'EPSG-Aus ACT 1m',1);
INSERT INTO "usage" VALUES('EPSG','10530','concatenated_operation','EPSG','8396','EPSG','2283','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8398','AGD66 to WGS 84 (4)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD66 to WGS 84 (9) (code 8576).','EPSG','4202','EPSG','4326',NULL,'EPSG-Aus Tas 1m',1);
INSERT INTO "usage" VALUES('EPSG','10531','concatenated_operation','EPSG','8398','EPSG','1282','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8400','AGD66 to WGS 84 (5)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326',NULL,'EPSG-Aus NSW Vic 1m',1);
INSERT INTO "usage" VALUES('EPSG','10532','concatenated_operation','EPSG','8400','EPSG','2286','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8402','Puerto Rico to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4139','EPSG','4326',NULL,'EPSG-PRVI',1);
INSERT INTO "usage" VALUES('EPSG','10533','concatenated_operation','EPSG','8402','EPSG','1335','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8404','NAD27 to WGS 84 (27)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84. Superseded by NAD27 to WGS 84 (31) (code 8565).','EPSG','4267','EPSG','4326',NULL,'EPSG-Can QC',1);
INSERT INTO "usage" VALUES('EPSG','10534','concatenated_operation','EPSG','8404','EPSG','1368','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8406','NAD27(76) to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4608','EPSG','4326',NULL,'EPSG-Can On',1);
INSERT INTO "usage" VALUES('EPSG','10536','concatenated_operation','EPSG','8406','EPSG','1367','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8408','AGD66 to WGS 84 (6)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD66 to WGS 84 (11) (code 8578).','EPSG','4202','EPSG','4326',NULL,'EPSG-Aus Vic 0.1m',1);
INSERT INTO "usage" VALUES('EPSG','10538','concatenated_operation','EPSG','8408','EPSG','2285','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8418','ATS77 to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4122','EPSG','4326',NULL,'EPSG-Can NB',1);
INSERT INTO "usage" VALUES('EPSG','10548','concatenated_operation','EPSG','8418','EPSG','1447','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8419','ATS77 to WGS 84 (2)','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4122','EPSG','4326',NULL,'EPSG-Can PEI',1);
INSERT INTO "usage" VALUES('EPSG','10549','concatenated_operation','EPSG','8419','EPSG','1533','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8420','NAD27 to WGS 84 (32)','','EPSG','4267','EPSG','4326',NULL,'SK PMC-Can SK',1);
INSERT INTO "usage" VALUES('EPSG','10550','concatenated_operation','EPSG','8420','EPSG','2375','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8421','NAD83 to WGS 84 (7)','','EPSG','4269','EPSG','4326',NULL,'SK PMC-Can SK',1);
INSERT INTO "usage" VALUES('EPSG','10551','concatenated_operation','EPSG','8421','EPSG','2375','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8422','NAD83 to WGS 84 (8)','The gridded difference file AB_CSRS.DAC in STEP 1 will need to be renamed to AB_CSRS.gsb to run in some software suites. Formats identical, but AB file is provincial fit only.','EPSG','4269','EPSG','4326',NULL,'Alb Env-Can AB',1);
INSERT INTO "usage" VALUES('EPSG','10552','concatenated_operation','EPSG','8422','EPSG','2376','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8442','ETRS89 to S-JTSK (5)','Recommended method of a transformation from ETRS89 to S-JTSK in Slovakia. For reverse transformation see S-JTSK to ETRS89 (6) (code 8443). Both together replace S-JTSK to ETRS89 (4) (code 4827).','EPSG','4258','EPSG','4156',0.06,'UGKK-Sk JTSK03',0);
INSERT INTO "usage" VALUES('EPSG','10562','concatenated_operation','EPSG','8442','EPSG','1211','EPSG','1027');
INSERT INTO "concatenated_operation" VALUES('EPSG','8443','S-JTSK to ETRS89 (6)','Recommended method of a transformation from S-JTSK to ETRS89 in Slovakia. For reverse transformation see ETRS89 to S-JTSK (5) (code 8442). Both together replace S-JTSK to ETRS89 (4) (code 4827).','EPSG','4156','EPSG','4258',0.06,'UGKK-Sk JTSK03',0);
INSERT INTO "usage" VALUES('EPSG','10563','concatenated_operation','EPSG','8443','EPSG','1211','EPSG','1027');
INSERT INTO "concatenated_operation" VALUES('EPSG','8453','AGD66 to WGS 84 (7)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326',NULL,'EPSG-Aus Tas 0.1m',1);
INSERT INTO "usage" VALUES('EPSG','10572','concatenated_operation','EPSG','8453','EPSG','1282','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8454','AGD66 to WGS 84 (8)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326',NULL,'EPSG-Aus NT 0.1m',1);
INSERT INTO "usage" VALUES('EPSG','10573','concatenated_operation','EPSG','8454','EPSG','2284','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8457','CH1903+ to WGS 84 (1)','Approximation at the +/- 1m level assuming that CHTRF95 is equivalent to WGS 84.','EPSG','4150','EPSG','4326',NULL,'EPSG-CH',1);
INSERT INTO "usage" VALUES('EPSG','10574','concatenated_operation','EPSG','8457','EPSG','1286','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8460','NAD27 to NAD83(HARN) (1)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8590.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa AL',0);
INSERT INTO "usage" VALUES('EPSG','10577','concatenated_operation','EPSG','8460','EPSG','1372','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8461','NAD27 to NAD83(HARN) (2)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8591.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa AZ',0);
INSERT INTO "usage" VALUES('EPSG','10578','concatenated_operation','EPSG','8461','EPSG','1373','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8462','NAD27 to NAD83(HARN) (3)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8593.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa CA n',0);
INSERT INTO "usage" VALUES('EPSG','10579','concatenated_operation','EPSG','8462','EPSG','2297','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8463','NAD27 to NAD83(HARN) (4)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8594.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa CA s',0);
INSERT INTO "usage" VALUES('EPSG','10580','concatenated_operation','EPSG','8463','EPSG','2298','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8464','NAD27 to NAD83(HARN) (5)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8595.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa CO',0);
INSERT INTO "usage" VALUES('EPSG','10581','concatenated_operation','EPSG','8464','EPSG','1376','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8465','NAD27 to NAD83(HARN) (6)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8597.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa GA',0);
INSERT INTO "usage" VALUES('EPSG','10582','concatenated_operation','EPSG','8465','EPSG','1380','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8466','NAD27 to NAD83(HARN) (7)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8596.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa FL',0);
INSERT INTO "usage" VALUES('EPSG','10583','concatenated_operation','EPSG','8466','EPSG','1379','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8467','NAD27 to NAD83(HARN) (8)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8611.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa ID MT e',0);
INSERT INTO "usage" VALUES('EPSG','10584','concatenated_operation','EPSG','8467','EPSG','2382','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8468','NAD27 to NAD83(HARN) (9)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8612.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa ID MT w',0);
INSERT INTO "usage" VALUES('EPSG','10585','concatenated_operation','EPSG','8468','EPSG','2383','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8469','NAD27 to NAD83(HARN) (10)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8602.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa KY',0);
INSERT INTO "usage" VALUES('EPSG','10586','concatenated_operation','EPSG','8469','EPSG','1386','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8470','NAD27 to NAD83(HARN) (11)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8603.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa LA',0);
INSERT INTO "usage" VALUES('EPSG','10587','concatenated_operation','EPSG','8470','EPSG','1387','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8471','NAD27 to NAD83(HARN) (12)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8605.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa DE MD',0);
INSERT INTO "usage" VALUES('EPSG','10588','concatenated_operation','EPSG','8471','EPSG','2377','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8472','NAD27 to NAD83(HARN) (13)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8604.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa ME',0);
INSERT INTO "usage" VALUES('EPSG','10589','concatenated_operation','EPSG','8472','EPSG','1388','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8473','NAD27 to NAD83(HARN) (14)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8607.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa MI',0);
INSERT INTO "usage" VALUES('EPSG','10590','concatenated_operation','EPSG','8473','EPSG','1391','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8474','NAD27 to NAD83(HARN) (15)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8609.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa MS',0);
INSERT INTO "usage" VALUES('EPSG','10591','concatenated_operation','EPSG','8474','EPSG','1393','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8475','NAD27 to NAD83(HARN) (16)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8613.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa NE',0);
INSERT INTO "usage" VALUES('EPSG','10592','concatenated_operation','EPSG','8475','EPSG','1396','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8476','NAD27 to NAD83(HARN) (17)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8606.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa NewEng',0);
INSERT INTO "usage" VALUES('EPSG','10593','concatenated_operation','EPSG','8476','EPSG','2378','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8477','NAD27 to NAD83(HARN) (18)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8616.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa NM',0);
INSERT INTO "usage" VALUES('EPSG','10594','concatenated_operation','EPSG','8477','EPSG','1400','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8478','NAD27 to NAD83(HARN) (19)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8617.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa NY',0);
INSERT INTO "usage" VALUES('EPSG','10595','concatenated_operation','EPSG','8478','EPSG','1401','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8479','NAD27 to NAD83(HARN) (20)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8618.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa ND',0);
INSERT INTO "usage" VALUES('EPSG','10596','concatenated_operation','EPSG','8479','EPSG','1403','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8480','NAD27 to NAD83(HARN) (21)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8620.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa OK',0);
INSERT INTO "usage" VALUES('EPSG','10597','concatenated_operation','EPSG','8480','EPSG','1405','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8481','Puerto Rico to NAD83(HARN) (1)','May be taken as approximate transformation Puerto Rico to WGS 84 - see code 8583.','EPSG','4139','EPSG','4152',NULL,'NGS-PRVI',1);
INSERT INTO "usage" VALUES('EPSG','10598','concatenated_operation','EPSG','8481','EPSG','1335','EPSG','1031');
INSERT INTO "concatenated_operation" VALUES('EPSG','8482','NAD27 to NAD83(HARN) (22)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8622.','EPSG','4267','EPSG','4152',NULL,'NGS-Usa SD',1);
INSERT INTO "usage" VALUES('EPSG','10599','concatenated_operation','EPSG','8482','EPSG','1410','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8483','NAD27 to NAD83(HARN) (23)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8623.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa TN',0);
INSERT INTO "usage" VALUES('EPSG','10600','concatenated_operation','EPSG','8483','EPSG','1411','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8484','NAD27 to NAD83(HARN) (24)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8624.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa TX e',0);
INSERT INTO "usage" VALUES('EPSG','10601','concatenated_operation','EPSG','8484','EPSG','2379','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8485','NAD27 to NAD83(HARN) (25)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8625.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa TX w',0);
INSERT INTO "usage" VALUES('EPSG','10602','concatenated_operation','EPSG','8485','EPSG','2380','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8486','NAD27 to NAD83(HARN) (26)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8627.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa VA',0);
INSERT INTO "usage" VALUES('EPSG','10603','concatenated_operation','EPSG','8486','EPSG','1415','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8487','NAD27 to NAD83(HARN) (27)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8621.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa OR WA',0);
INSERT INTO "usage" VALUES('EPSG','10604','concatenated_operation','EPSG','8487','EPSG','2381','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8488','NAD27 to NAD83(HARN) (28)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8629.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa WI',0);
INSERT INTO "usage" VALUES('EPSG','10605','concatenated_operation','EPSG','8488','EPSG','1418','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8489','NAD27 to NAD83(HARN) (29)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8630.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa WY',0);
INSERT INTO "usage" VALUES('EPSG','10606','concatenated_operation','EPSG','8489','EPSG','1419','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8496','NAD27 to WGS 84 (28)','','EPSG','4267','EPSG','4326',NULL,'NGS-Usa conus',1);
INSERT INTO "usage" VALUES('EPSG','10613','concatenated_operation','EPSG','8496','EPSG','2374','EPSG','1027');
INSERT INTO "concatenated_operation" VALUES('EPSG','8497','NAD27 to WGS 84 (29)','','EPSG','4267','EPSG','4326',NULL,'NGS-Usa AK',1);
INSERT INTO "usage" VALUES('EPSG','10614','concatenated_operation','EPSG','8497','EPSG','2373','EPSG','1027');
INSERT INTO "concatenated_operation" VALUES('EPSG','8508','Old Hawaiian to NAD83(HARN) (1)','Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs Old Hawaiian (code 4135), NAD83 (code 4269) and NAD83(HARN) have longitudes positive east. May be taken as approximate transformation Old Hawaiin to WGS 84 - see code 8582.','EPSG','4135','EPSG','4152',0.3,'NGS-Usa HI',0);
INSERT INTO "usage" VALUES('EPSG','10625','concatenated_operation','EPSG','8508','EPSG','1334','EPSG','1041');
INSERT INTO "concatenated_operation" VALUES('EPSG','8509','NAD27 to NAD83(HARN) (30)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8599.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa IN',0);
INSERT INTO "usage" VALUES('EPSG','10626','concatenated_operation','EPSG','8509','EPSG','1383','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8510','NAD27 to NAD83(HARN) (31)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8601.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa KS',0);
INSERT INTO "usage" VALUES('EPSG','10627','concatenated_operation','EPSG','8510','EPSG','1385','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8511','NAD27 to NAD83(HARN) (32)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8614.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa NV',0);
INSERT INTO "usage" VALUES('EPSG','10628','concatenated_operation','EPSG','8511','EPSG','1397','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8512','NAD27 to NAD83(HARN) (33)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8619.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa OH',0);
INSERT INTO "usage" VALUES('EPSG','10629','concatenated_operation','EPSG','8512','EPSG','1404','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8513','NAD27 to NAD83(HARN) (34)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8626.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa UT',0);
INSERT INTO "usage" VALUES('EPSG','10630','concatenated_operation','EPSG','8513','EPSG','1413','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8514','NAD27 to NAD83(HARN) (35)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8628.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa WV',0);
INSERT INTO "usage" VALUES('EPSG','10631','concatenated_operation','EPSG','8514','EPSG','1417','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8517','Chos Malal 1914 to WGS 84 (1)','May be implemented using a single step geocentric translations of dx=+5.5m dY=+176.7m dZ=+141.4m.','EPSG','4160','EPSG','4326',11.0,'TOT-Arg Neu',0);
INSERT INTO "usage" VALUES('EPSG','10634','concatenated_operation','EPSG','8517','EPSG','2325','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8530','South Yemen to WGS 84 (1)','May be implemented as a single transformation using geocentric translations transformation method with parameter values dX=-76m dY=-138m dZ=+67m.','EPSG','4164','EPSG','4326',NULL,'IGN-Yem South',1);
INSERT INTO "usage" VALUES('EPSG','10635','concatenated_operation','EPSG','8530','EPSG','1340','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8532','Indian 1960 to WGS 84 (1)','May be implemented as a single transformation using position vector 7-parameter geocentric transformation method with parameter values dX=+199m dY=+931m dZ=+318.9m rX=rY=0 sec rZ=+0.814 sec dS=-0.38 ppm.','EPSG','4131','EPSG','4326',26.0,'PV-Vnm',0);
INSERT INTO "usage" VALUES('EPSG','10636','concatenated_operation','EPSG','8532','EPSG','1495','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8537','Egypt 1907 to WGS 84 (2)','Used by Shell. May be implemented as a single transformation using position vector 7-parameter geocentric transformation method with parameter values dX=-121.8m dY=+98.1m dZ=-10.7m rX=rY=0 sec rZ=+0.554 sec dS=+0.2263 ppm.','EPSG','4229','EPSG','4326',6.0,'MCE-Egy',0);
INSERT INTO "usage" VALUES('EPSG','10637','concatenated_operation','EPSG','8537','EPSG','1086','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8553','NAD27 to NAD83(HARN) (36)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8598.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa IL',0);
INSERT INTO "usage" VALUES('EPSG','10645','concatenated_operation','EPSG','8553','EPSG','1382','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8554','NAD27 to NAD83(HARN) (37)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8615.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa NJ',0);
INSERT INTO "usage" VALUES('EPSG','10646','concatenated_operation','EPSG','8554','EPSG','1399','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8560','AGD84 to WGS 84 (5)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD84 to WGS 84 (6) (code 8579).','EPSG','4203','EPSG','4326',NULL,'EPSG-Aus WA',1);
INSERT INTO "usage" VALUES('EPSG','10652','concatenated_operation','EPSG','8560','EPSG','1280','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8562','Nord Sahara 1959 to WGS 84 (3)','Derived at IGN monument CFP19 using Transit. Can be implemented as a single 7-param Position Vector transformation with parameter values of dX=-156.5m dY=-87.2m dZ=+287.8m; rX=rY=0 rZ=+0.814sec; dS=-0.38ppm.','EPSG','4307','EPSG','4326',9.0,'CGG-Alg HM',0);
INSERT INTO "usage" VALUES('EPSG','10654','concatenated_operation','EPSG','8562','EPSG','2393','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8563','NZGD49 to WGS 84 (3)','Assumes WGS 84 is coincident with NZGD2000. Accuracy about 1m.','EPSG','4272','EPSG','4326',NULL,'OSG-Nzl 1m',1);
INSERT INTO "usage" VALUES('EPSG','10655','concatenated_operation','EPSG','8563','EPSG','1175','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8564','NAD27(CGQ77) to WGS 84 (2)','','EPSG','4609','EPSG','4326',NULL,'EPSG-Can Qc NT2',1);
INSERT INTO "usage" VALUES('EPSG','10656','concatenated_operation','EPSG','8564','EPSG','1368','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8565','NAD27 to WGS 84 (31)','','EPSG','4267','EPSG','4326',NULL,'EPSG-Can Que',1);
INSERT INTO "usage" VALUES('EPSG','10657','concatenated_operation','EPSG','8565','EPSG','1368','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8566','NAD83 to WGS 84 (6)','','EPSG','4269','EPSG','4326',NULL,'EPSG-Can Qc',1);
INSERT INTO "usage" VALUES('EPSG','10658','concatenated_operation','EPSG','8566','EPSG','1368','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8568','Deir ez Zor to WGS 84 (1)','Can be implemented as a position vector tfm with param. values dX=-174.6 dY=-3.1 dZ=238.1m; rX=rY=0 rZ=0.814"; dS=-0.38 ppm.','EPSG','4227','EPSG','4326',6.0,'EPSG-Syr',0);
INSERT INTO "usage" VALUES('EPSG','10660','concatenated_operation','EPSG','8568','EPSG','2329','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8569','ED50 to WGS 84 (21)','Included in Statens Kartverk programme wsktrans between 1997 (v3.1) and 2001 (v4.0). Replaced by ED50 to WGS 84 (23) (code 1612) in April 2001.','EPSG','4230','EPSG','4326',1.5,'EPSG-Nor N65 1997',0);
INSERT INTO "usage" VALUES('EPSG','10661','concatenated_operation','EPSG','8569','EPSG','2332','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8571','Accra to WGS 84 (2)','Can be implemented as a position vector tfm dX=-171.16 dY=17.29 dZ=325.21m, rX=rY=0 rZ=0.814", dS=-0.38 ppm. See tfm code 15495. Found in use within oil industry erroneously concatenated as dX=-171.16 dY=17.29 dZ=327.81m, rX=rY0 rZ=0.554", dS=0.2263 ppm.','EPSG','4168','EPSG','4326',26.0,'EPSG-Gha',0);
INSERT INTO "usage" VALUES('EPSG','10663','concatenated_operation','EPSG','8571','EPSG','1505','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8572','Amersfoort to WGS 84 (2)','Parameter values for step 1 from Amersfoort to ETRS89 (2) (code 1751). Step 2 assumes that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Supersedes Amersfoort to WGS 84 (1) (code 1112).','EPSG','4289','EPSG','4326',NULL,'EPSG-Nld',1);
INSERT INTO "usage" VALUES('EPSG','10664','concatenated_operation','EPSG','8572','EPSG','1275','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8573','RGF93 to WGS 84 (1)','','EPSG','4171','EPSG','4326',NULL,'EPSG-Fra',1);
INSERT INTO "usage" VALUES('EPSG','10665','concatenated_operation','EPSG','8573','EPSG','1096','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8574','American Samoa 1962 to WGS 84 (2)','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARNS) can be considered to be coincident with WGS 84.','EPSG','4169','EPSG','4326',NULL,'EPSG-Asm',1);
INSERT INTO "usage" VALUES('EPSG','10666','concatenated_operation','EPSG','8574','EPSG','2288','EPSG','1045');
INSERT INTO "concatenated_operation" VALUES('EPSG','8575','American Samoa 1962 to WGS 84 (3)','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARNS) can be considered to be coincident with WGS 84.','EPSG','4169','EPSG','4326',NULL,'EPSG-Asm',1);
INSERT INTO "usage" VALUES('EPSG','10667','concatenated_operation','EPSG','8575','EPSG','2289','EPSG','1045');
INSERT INTO "concatenated_operation" VALUES('EPSG','8576','AGD66 to WGS 84 (9)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Supersedes AGD66 to WGS 84 (4) (code 8398).','EPSG','4202','EPSG','4326',NULL,'EPSG-Aus Tas 1m',1);
INSERT INTO "usage" VALUES('EPSG','10668','concatenated_operation','EPSG','8576','EPSG','1282','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8577','AGD66 to WGS 84 (10)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326',NULL,'EPSG-Aus NT',1);
INSERT INTO "usage" VALUES('EPSG','10669','concatenated_operation','EPSG','8577','EPSG','2284','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8578','AGD66 to WGS 84 (11)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Supersedes AGD66 to WGS 84 (3) (code 8396) and AGD66 to WGS 84 (6) (code 8408).','EPSG','4202','EPSG','4326',NULL,'EPSG-Aus',1);
INSERT INTO "usage" VALUES('EPSG','10670','concatenated_operation','EPSG','8578','EPSG','2287','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8579','AGD84 to WGS 84 (6)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Supersedes AGD84 to WGS 84 (5) (code 8560).','EPSG','4203','EPSG','4326',NULL,'EPSG-Aus WA',1);
INSERT INTO "usage" VALUES('EPSG','10671','concatenated_operation','EPSG','8579','EPSG','1280','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8580','IRENET95 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4173','EPSG','4326',NULL,'OSI-Ire',1);
INSERT INTO "usage" VALUES('EPSG','10672','concatenated_operation','EPSG','8580','EPSG','1305','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8581','PSD93 to WGS 84 (2)','Replaced by PSD93 to WGS 84 (1) (code 1439) in 1997. Can be implemented as a position vector tfm with parameter values dX= -182.046 dY= -225.604 dZ=+173.384m rX= -0.616 rY= -1.655 rZ=+8.378" dS=16.8673ppm.','EPSG','4134','EPSG','4326',2.5,'PDO-Omn 93',0);
INSERT INTO "usage" VALUES('EPSG','10673','concatenated_operation','EPSG','8581','EPSG','3288','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8582','Old Hawaiian to WGS 84 (2)','Transformation steps are from Old Hawaiian to NAD83(HARN) (1) (code 8508) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4135','EPSG','4326',1.5,'EPSG-Usa Hi',0);
INSERT INTO "usage" VALUES('EPSG','10674','concatenated_operation','EPSG','8582','EPSG','1334','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8583','Puerto Rico to WGS 84 (2)','Transformation steps are from Puerto Rico to NAD83(HARN) (1) (code 4435) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4139','EPSG','4326',1.5,'EPSG-PRVI',0);
INSERT INTO "usage" VALUES('EPSG','10675','concatenated_operation','EPSG','8583','EPSG','3634','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8584','NAD27 to NAD83(CSRS98) (3)','Can be taken as an approximate transformation NAD27 to WGS 84 - see code 8585.','EPSG','4267','EPSG','4140',NULL,'EPSG-Can AB',1);
INSERT INTO "usage" VALUES('EPSG','10676','concatenated_operation','EPSG','8584','EPSG','2376','EPSG','1151');
INSERT INTO "concatenated_operation" VALUES('EPSG','8585','NAD27 to WGS 84 (36)','Steps based on concatenated transformation NAD27 to NAD83(CSRS)v4 (3) (code 9336) assuming that NAD83(CSRS)v4 is equivalent to WGS 84.','EPSG','4267','EPSG','4326',2.5,'EPSG-Can AB',0);
INSERT INTO "usage" VALUES('EPSG','10677','concatenated_operation','EPSG','8585','EPSG','2376','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8586','NAD27 to NAD83(HARN) (38)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8592.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa AR',0);
INSERT INTO "usage" VALUES('EPSG','10678','concatenated_operation','EPSG','8586','EPSG','1374','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8587','NAD27 to NAD83(HARN) (39)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8600.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa IA',0);
INSERT INTO "usage" VALUES('EPSG','10679','concatenated_operation','EPSG','8587','EPSG','1384','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8588','NAD27 to NAD83(HARN) (40)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8608.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa MN',0);
INSERT INTO "usage" VALUES('EPSG','10680','concatenated_operation','EPSG','8588','EPSG','1392','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8589','NAD27 to NAD83(HARN) (41)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8610.','EPSG','4267','EPSG','4152',0.2,'NGS-Usa MO',0);
INSERT INTO "usage" VALUES('EPSG','10681','concatenated_operation','EPSG','8589','EPSG','1394','EPSG','1032');
INSERT INTO "concatenated_operation" VALUES('EPSG','8590','NAD27 to WGS 84 (37)','Transformation steps are from NAD27 to NAD83(HARN) (1) (code 8460) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa AL',0);
INSERT INTO "usage" VALUES('EPSG','10682','concatenated_operation','EPSG','8590','EPSG','1372','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8591','NAD27 to WGS 84 (38)','Transformation steps are from NAD27 to NAD83(HARN) (2) (code 8461) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa AZ',0);
INSERT INTO "usage" VALUES('EPSG','10683','concatenated_operation','EPSG','8591','EPSG','1373','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8592','NAD27 to WGS 84 (39)','Transformation steps are from NAD27 to NAD83(HARN) (38) (code 8586) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa AR',0);
INSERT INTO "usage" VALUES('EPSG','10684','concatenated_operation','EPSG','8592','EPSG','1374','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8593','NAD27 to WGS 84 (40)','Transformation steps are from NAD27 to NAD83(HARN) (3) (code 8462) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa CA n',0);
INSERT INTO "usage" VALUES('EPSG','10685','concatenated_operation','EPSG','8593','EPSG','2297','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8594','NAD27 to WGS 84 (41)','Transformation steps are from NAD27 to NAD83(HARN) (4) (code 8463) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa CA s',0);
INSERT INTO "usage" VALUES('EPSG','10686','concatenated_operation','EPSG','8594','EPSG','2298','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8595','NAD27 to WGS 84 (42)','Transformation steps are from NAD27 to NAD83(HARN) (5) (code 8464) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa CO',0);
INSERT INTO "usage" VALUES('EPSG','10687','concatenated_operation','EPSG','8595','EPSG','1376','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8596','NAD27 to WGS 84 (43)','Transformation steps are from NAD27 to NAD83(HARN) (7) (code 8466) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa FL',0);
INSERT INTO "usage" VALUES('EPSG','10688','concatenated_operation','EPSG','8596','EPSG','1379','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8597','NAD27 to WGS 84 (44)','Transformation steps are from NAD27 to NAD83(HARN) (6) (code 8465) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa GA',0);
INSERT INTO "usage" VALUES('EPSG','10689','concatenated_operation','EPSG','8597','EPSG','1380','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8598','NAD27 to WGS 84 (45)','Transformation steps are from NAD27 to NAD83(HARN) (36) (code 8553) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa IL',0);
INSERT INTO "usage" VALUES('EPSG','10690','concatenated_operation','EPSG','8598','EPSG','1382','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8599','NAD27 to WGS 84 (46)','Transformation steps are from NAD27 to NAD83(HARN) (30) (code 8509) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa IN',0);
INSERT INTO "usage" VALUES('EPSG','10691','concatenated_operation','EPSG','8599','EPSG','1383','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8600','NAD27 to WGS 84 (47)','Transformation steps are from NAD27 to NAD83(HARN) (39) (code 8587) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa IA',0);
INSERT INTO "usage" VALUES('EPSG','10692','concatenated_operation','EPSG','8600','EPSG','1384','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8601','NAD27 to WGS 84 (48)','Transformation steps are from NAD27 to NAD83(HARN) (31) (code 8510) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa KS',0);
INSERT INTO "usage" VALUES('EPSG','10693','concatenated_operation','EPSG','8601','EPSG','1385','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8602','NAD27 to WGS 84 (49)','Transformation steps are from NAD27 to NAD83(HARN) (10) (code 8469) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa KY',0);
INSERT INTO "usage" VALUES('EPSG','10694','concatenated_operation','EPSG','8602','EPSG','1386','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8603','NAD27 to WGS 84 (50)','Transformation steps are from NAD27 to NAD83(HARN) (11) (code 8470) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa LA',0);
INSERT INTO "usage" VALUES('EPSG','10695','concatenated_operation','EPSG','8603','EPSG','1387','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8604','NAD27 to WGS 84 (51)','Transformation steps are from NAD27 to NAD83(HARN) (13) (code 8472) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa ME',0);
INSERT INTO "usage" VALUES('EPSG','10696','concatenated_operation','EPSG','8604','EPSG','1388','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8605','NAD27 to WGS 84 (52)','Transformation steps are from NAD27 to NAD83(HARN) (12) (code 8471) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa DE MD',0);
INSERT INTO "usage" VALUES('EPSG','10697','concatenated_operation','EPSG','8605','EPSG','2377','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8606','NAD27 to WGS 84 (53)','Transformation steps are from NAD27 to NAD83(HARN) (17) (code 8476) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa NewEng',0);
INSERT INTO "usage" VALUES('EPSG','10698','concatenated_operation','EPSG','8606','EPSG','2378','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8607','NAD27 to WGS 84 (54)','Transformation steps are from NAD27 to NAD83(HARN) (14) (code 8473) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa MI',0);
INSERT INTO "usage" VALUES('EPSG','10699','concatenated_operation','EPSG','8607','EPSG','1391','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8608','NAD27 to WGS 84 (55)','Transformation steps are from NAD27 to NAD83(HARN) (40) (code 8588) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa MN',0);
INSERT INTO "usage" VALUES('EPSG','10700','concatenated_operation','EPSG','8608','EPSG','1392','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8609','NAD27 to WGS 84 (56)','Transformation steps are from NAD27 to NAD83(HARN) (15) (code 8474) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa MS',0);
INSERT INTO "usage" VALUES('EPSG','10701','concatenated_operation','EPSG','8609','EPSG','1393','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8610','NAD27 to WGS 84 (57)','Transformation steps are from NAD27 to NAD83(HARN) (41) (code 8589) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa MO',0);
INSERT INTO "usage" VALUES('EPSG','10702','concatenated_operation','EPSG','8610','EPSG','1394','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8611','NAD27 to WGS 84 (58)','Transformation steps are from NAD27 to NAD83(HARN) (8) (code 8467) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa ID MT e',0);
INSERT INTO "usage" VALUES('EPSG','10703','concatenated_operation','EPSG','8611','EPSG','2382','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8612','NAD27 to WGS 84 (59)','Transformation steps are from NAD27 to NAD83(HARN) (9) (code 8468) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa ID MT w',0);
INSERT INTO "usage" VALUES('EPSG','10704','concatenated_operation','EPSG','8612','EPSG','2383','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8613','NAD27 to WGS 84 (60)','Transformation steps are from NAD27 to NAD83(HARN) (16) (code 8475) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa NE',0);
INSERT INTO "usage" VALUES('EPSG','10705','concatenated_operation','EPSG','8613','EPSG','1396','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8614','NAD27 to WGS 84 (61)','Transformation steps are from NAD27 to NAD83(HARN) (32) (code 8511) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa NV',0);
INSERT INTO "usage" VALUES('EPSG','10706','concatenated_operation','EPSG','8614','EPSG','1397','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8615','NAD27 to WGS 84 (62)','Transformation steps are from NAD27 to NAD83(HARN) (37) (code 8554) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa NJ',0);
INSERT INTO "usage" VALUES('EPSG','10707','concatenated_operation','EPSG','8615','EPSG','1399','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8616','NAD27 to WGS 84 (63)','Transformation steps are from NAD27 to NAD83(HARN) (18) (code 8477) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa NM',0);
INSERT INTO "usage" VALUES('EPSG','10708','concatenated_operation','EPSG','8616','EPSG','1400','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8617','NAD27 to WGS 84 (64)','Transformation steps are from NAD27 to NAD83(HARN) (19) (code 8478) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa NY',0);
INSERT INTO "usage" VALUES('EPSG','10709','concatenated_operation','EPSG','8617','EPSG','1401','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8618','NAD27 to WGS 84 (65)','Transformation steps are from NAD27 to NAD83(HARN) (20) (code 8479) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa ND',0);
INSERT INTO "usage" VALUES('EPSG','10710','concatenated_operation','EPSG','8618','EPSG','1403','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8619','NAD27 to WGS 84 (66)','Transformation steps are from NAD27 to NAD83(HARN) (33) (code 8512) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa OH',0);
INSERT INTO "usage" VALUES('EPSG','10711','concatenated_operation','EPSG','8619','EPSG','1404','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8620','NAD27 to WGS 84 (67)','Transformation steps are from NAD27 to NAD83(HARN) (21) (code 8480) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa OK',0);
INSERT INTO "usage" VALUES('EPSG','10712','concatenated_operation','EPSG','8620','EPSG','1405','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8621','NAD27 to WGS 84 (68)','Transformation steps are from NAD27 to NAD83(HARN) (27) (code 8487) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa OR WA',0);
INSERT INTO "usage" VALUES('EPSG','10713','concatenated_operation','EPSG','8621','EPSG','2381','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8622','NAD27 to WGS 84 (69)','Transformation steps are from NAD27 to NAD83(HARN) (22) (code 6739) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa SD',0);
INSERT INTO "usage" VALUES('EPSG','10714','concatenated_operation','EPSG','8622','EPSG','1410','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8623','NAD27 to WGS 84 (70)','Transformation steps are from NAD27 to NAD83(HARN) (23) (code 8483) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa TN',0);
INSERT INTO "usage" VALUES('EPSG','10715','concatenated_operation','EPSG','8623','EPSG','1411','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8624','NAD27 to WGS 84 (71)','Transformation steps are from NAD27 to NAD83(HARN) (24) (code 8484) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa TX e',0);
INSERT INTO "usage" VALUES('EPSG','10716','concatenated_operation','EPSG','8624','EPSG','2379','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8625','NAD27 to WGS 84 (72)','Transformation steps are from NAD27 to NAD83(HARN) (25) (code 8485) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa TX w',0);
INSERT INTO "usage" VALUES('EPSG','10717','concatenated_operation','EPSG','8625','EPSG','2380','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8626','NAD27 to WGS 84 (73)','Transformation steps are from NAD27 to NAD83(HARN) (34) (code 8513) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa UT',0);
INSERT INTO "usage" VALUES('EPSG','10718','concatenated_operation','EPSG','8626','EPSG','1413','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8627','NAD27 to WGS 84 (74)','Transformation steps are from NAD27 to NAD83(HARN) (26) (code 8486) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa VA',0);
INSERT INTO "usage" VALUES('EPSG','10719','concatenated_operation','EPSG','8627','EPSG','1415','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8628','NAD27 to WGS 84 (75)','Transformation steps are from NAD27 to NAD83(HARN) (35) (code 8514) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa WV',0);
INSERT INTO "usage" VALUES('EPSG','10720','concatenated_operation','EPSG','8628','EPSG','1417','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8629','NAD27 to WGS 84 (76)','Transformation steps are from NAD27 to NAD83(HARN) (28) (code 8488) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa WI',0);
INSERT INTO "usage" VALUES('EPSG','10721','concatenated_operation','EPSG','8629','EPSG','1418','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8630','NAD27 to WGS 84 (77)','Transformation steps are from NAD27 to NAD83(HARN) (29) (code 8489) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','4267','EPSG','4326',1.5,'EPSG-Usa WY',0);
INSERT INTO "usage" VALUES('EPSG','10722','concatenated_operation','EPSG','8630','EPSG','1419','EPSG','1252');
INSERT INTO "concatenated_operation" VALUES('EPSG','8631','Garoua to WGS 84 (1)','','EPSG','4197','EPSG','4326',6.0,'EPSG-Cmr',0);
INSERT INTO "usage" VALUES('EPSG','10723','concatenated_operation','EPSG','8631','EPSG','2590','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8632','Kousseri to WGS 84 (1)','','EPSG','4198','EPSG','4326',6.0,'EPSG-Cmr',0);
INSERT INTO "usage" VALUES('EPSG','10724','concatenated_operation','EPSG','8632','EPSG','2591','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8633','Yoff to WGS 84 (1)','Derived via WGS72. Can be used as a single positon vector transformation with parameter vaues of dX = -37 m, dY = +157 m, dZ = +89.5 m, rX = rY = 0 sec, rZ = 0.554 sec, dS = 0.219 ppm','EPSG','4310','EPSG','4326',26.0,'EPSG-SEN',0);
INSERT INTO "usage" VALUES('EPSG','10725','concatenated_operation','EPSG','8633','EPSG','1207','EPSG','1160');
INSERT INTO "concatenated_operation" VALUES('EPSG','8634','Beduaram to WGS 84 (1)','Derived via WGS72BE. Can be used as a single positon vector transformation with parameter vaues of dX = -101 m, dY = -111 m, dZ = +188.9 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm','EPSG','4213','EPSG','4326',16.0,'ELF-Ner SE',0);
INSERT INTO "usage" VALUES('EPSG','10726','concatenated_operation','EPSG','8634','EPSG','2771','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8635','NAD27 to NAD83(CSRS) (3)','Can be taken as an approximate transformation NAD27 to WGS 84 - see code 8585.','EPSG','4267','EPSG','4617',2.5,'EPSG-Can AB',1);
INSERT INTO "usage" VALUES('EPSG','10727','concatenated_operation','EPSG','8635','EPSG','2376','EPSG','1151');
INSERT INTO "concatenated_operation" VALUES('EPSG','8636','Carthage (Paris) to WGS 84 (1)','','EPSG','4816','EPSG','4326',14.0,'EPSG-Tun',0);
INSERT INTO "usage" VALUES('EPSG','10728','concatenated_operation','EPSG','8636','EPSG','1618','EPSG','1160');
INSERT INTO "concatenated_operation" VALUES('EPSG','8637','Lisbon (Lisbon) to WGS 84 (1)','','EPSG','4803','EPSG','4326',NULL,'EPSG-Prt',1);
INSERT INTO "usage" VALUES('EPSG','10729','concatenated_operation','EPSG','8637','EPSG','1294','EPSG','1042');
INSERT INTO "concatenated_operation" VALUES('EPSG','8638','Makassar (Jakarta) to WGS 84 (1)','','EPSG','4804','EPSG','4326',999.0,'EPSG - Idn Sul SW',0);
INSERT INTO "usage" VALUES('EPSG','10730','concatenated_operation','EPSG','8638','EPSG','1316','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8639','NGO 1948 (Oslo) to WGS 84 (1)','','EPSG','4817','EPSG','4326',3.0,'EPSG-Nor',0);
INSERT INTO "usage" VALUES('EPSG','10731','concatenated_operation','EPSG','8639','EPSG','1352','EPSG','1160');
INSERT INTO "concatenated_operation" VALUES('EPSG','8640','Nord Sahara 1959 (Paris) to WGS 84 (1)','','EPSG','4819','EPSG','4326',NULL,'EPSG-Dza',1);
INSERT INTO "usage" VALUES('EPSG','10732','concatenated_operation','EPSG','8640','EPSG','1026','EPSG','1160');
INSERT INTO "concatenated_operation" VALUES('EPSG','8641','Segara (Jakarta) to WGS 84 (1)','','EPSG','4820','EPSG','4326',999.0,'EPSG-Idn Kal SW',0);
INSERT INTO "usage" VALUES('EPSG','10733','concatenated_operation','EPSG','8641','EPSG','1360','EPSG','1153');
INSERT INTO "concatenated_operation" VALUES('EPSG','8642','S-JTSK (Ferro) to WGS 84 (1)','Replaced by S-JTSK (Ferro) to WGS 84 (3) (code 5242) in 2009.','EPSG','4818','EPSG','4326',1.0,'EPSG-Cze',0);
INSERT INTO "usage" VALUES('EPSG','10734','concatenated_operation','EPSG','8642','EPSG','1079','EPSG','1041');
INSERT INTO "concatenated_operation" VALUES('EPSG','8643','Greek to WGS 84 (1)','','EPSG','4120','EPSG','4326',6.0,'EPSG-Grc',0);
INSERT INTO "usage" VALUES('EPSG','10735','concatenated_operation','EPSG','8643','EPSG','3254','EPSG','1045');
INSERT INTO "concatenated_operation" VALUES('EPSG','8644','Greek (Athens) to WGS 84 (1)','','EPSG','4815','EPSG','4326',5.0,'EPSG-Grc',0);
INSERT INTO "usage" VALUES('EPSG','10736','concatenated_operation','EPSG','8644','EPSG','3254','EPSG','1045');
INSERT INTO "concatenated_operation" VALUES('EPSG','8645','MGI (Ferro) to WGS 84 (2)','','EPSG','4805','EPSG','4326',NULL,'BEV-Aut',1);
INSERT INTO "usage" VALUES('EPSG','10737','concatenated_operation','EPSG','8645','EPSG','1037','EPSG','1042');
INSERT INTO "concatenated_operation" VALUES('EPSG','8646','Manoca 1962 to WGS 84 (1)','Derived via WGS72BE. Can be used as a single positon vector transformation with parameter vaues of dX = -56.7 m, dY = -171.8 m, dZ = -40.6 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm','EPSG','4193','EPSG','4326',NULL,'OGP-Cmr',1);
INSERT INTO "usage" VALUES('EPSG','10738','concatenated_operation','EPSG','8646','EPSG','2555','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8647','NAD27 to WGS 84 (78)','','EPSG','4267','EPSG','4326',3.0,'EPSG-Can E Off',0);
INSERT INTO "usage" VALUES('EPSG','10739','concatenated_operation','EPSG','8647','EPSG','2831','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8648','Lisbon 1890 (Lisbon) to WGS 84 (1)','','EPSG','4904','EPSG','4326',5.0,'EPSG-Prt 5m',0);
INSERT INTO "usage" VALUES('EPSG','10740','concatenated_operation','EPSG','8648','EPSG','1294','EPSG','1157');
INSERT INTO "concatenated_operation" VALUES('EPSG','8649','Lisbon 1890 (Lisbon) to WGS 84 (2)','','EPSG','4904','EPSG','4326',1.0,'EPSG-Prt 1m',0);
INSERT INTO "usage" VALUES('EPSG','10741','concatenated_operation','EPSG','8649','EPSG','1294','EPSG','1158');
INSERT INTO "concatenated_operation" VALUES('EPSG','8650','Palestine 1923 to WGS 84 (2)','Accuracy: 1m to north and 10m to south of east-west line through Beersheba (31°15''N). Can be implemented as a geocentric translation tfm with param. Values dX = -229m, dY = -67m, dZ= +277m.','EPSG','4281','EPSG','4326',2.5,'SoI-Isr',0);
INSERT INTO "usage" VALUES('EPSG','10742','concatenated_operation','EPSG','8650','EPSG','2603','EPSG','1153');
INSERT INTO "concatenated_operation" VALUES('EPSG','8651','Vientiane 1982 to WGS 84 (1)','Can be implemented as a geocentric translation tfm with param. values dX = 42.358m, dY = -124.688m, dZ= -37.366m.','EPSG','4676','EPSG','4326',6.0,'EPSG-Lao',0);
INSERT INTO "usage" VALUES('EPSG','10743','concatenated_operation','EPSG','8651','EPSG','1138','EPSG','1045');
INSERT INTO "concatenated_operation" VALUES('EPSG','8652','Lao 1993 to WGS 84 (1)','Can be implemented as a geocentric translation tfm with param. values dX = 43.933m, dY = -129.593m, dZ= -39.331m.','EPSG','4677','EPSG','4326',6.0,'EPSG-Lao',0);
INSERT INTO "usage" VALUES('EPSG','10744','concatenated_operation','EPSG','8652','EPSG','1138','EPSG','1045');
INSERT INTO "concatenated_operation" VALUES('EPSG','8655','Manoca 1962 to WGS 84 (2)','Derived via WGS 72BE. Can be implemented as a single positon vector transformation with parameter vaues of dX = -56.7 m, dY = -171.8 m, dZ = -38.7 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm.','EPSG','4193','EPSG','4326',6.0,'OGP-Cmr',0);
INSERT INTO "usage" VALUES('EPSG','10747','concatenated_operation','EPSG','8655','EPSG','2555','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8656','Mhast (offshore) to WGS 84 (1)','Derived via WGS 72BE. Can be implemented as a single positon vector transformation with parameter vaues of dX = -255.0 m, dY = -29.0 m, dZ = -103.1 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm.','EPSG','4705','EPSG','4326',11.0,'OGP-Ago Cab',0);
INSERT INTO "usage" VALUES('EPSG','10748','concatenated_operation','EPSG','8656','EPSG','3180','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8657','Egypt Gulf of Suez S-650 TL to WGS 84 (1)','Can be implemented as a single positon vector transformation with parameter vaues of dX = -123.0 m, dY = 98.0 m, dZ = 3.9 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm. Replaced by Egypt Gulf of Suez S-650 TL to WGS 84 (2) (tfm code 15846).','EPSG','4706','EPSG','4326',6.0,'OGP-Egy GoS',0);
INSERT INTO "usage" VALUES('EPSG','10749','concatenated_operation','EPSG','8657','EPSG','2341','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','8659','Kertau (RSO) to WGS 84 (1)','Step 1 is necessary to rescale the grid units before using step 2.','EPSG','4751','EPSG','4326',15.0,'OGP-Mys',0);
INSERT INTO "usage" VALUES('EPSG','10751','concatenated_operation','EPSG','8659','EPSG','1309','EPSG','1164');
INSERT INTO "concatenated_operation" VALUES('EPSG','9103','NAD27 to ITRF2014 (1)','For use with legacy data - see CT code 9104 for alternative for new areas. Note that steps 1 and 2 are documented in the geog2D domain, steps 3 and 4 in the geocentric domain. Steps 3 and 4 may be implemented in one operation using CT code 8970.','EPSG','4267','EPSG','7789',1.5,'IOGP-Usa GoM legacy',0);
INSERT INTO "usage" VALUES('EPSG','10917','concatenated_operation','EPSG','9103','EPSG','3357','EPSG','1136');
INSERT INTO "concatenated_operation" VALUES('EPSG','9336','NAD27 to NAD83(CSRS)v4 (3)','Can be taken as an approximate transformation NAD27 to WGS 84 - see code 8585.','EPSG','4267','EPSG','8246',2.5,'EPSG-Can AB',0);
INSERT INTO "usage" VALUES('EPSG','14011','concatenated_operation','EPSG','9336','EPSG','2376','EPSG','1151');
INSERT INTO "concatenated_operation" VALUES('EPSG','9337','NTF (Paris) to RGF93 v1 (1)','See transformation code 7811 for an alternative which uses the NTv2 method as an emulation of the geocentric interpolation in the second step.','EPSG','4807','EPSG','4171',1.0,'IOGP-Fra',0);
INSERT INTO "usage" VALUES('EPSG','14012','concatenated_operation','EPSG','9337','EPSG','3694','EPSG','1041');
INSERT INTO "concatenated_operation" VALUES('EPSG','9499','ETRS89 to GHA height (2)','This concatenated operation gives the same result as the HoehenGrid-plus offset from ETRS89 to GHA height. HoehenGrid-plus is implemented in BEV-Transformator using MGI (CRS 4312) as the interpolation CRS for the grid','EPSG','4937','EPSG','5778',0.07,'BEV-Aut',0);
INSERT INTO "usage" VALUES('EPSG','14958','concatenated_operation','EPSG','9499','EPSG','1037','EPSG','1133');
INSERT INTO "concatenated_operation" VALUES('EPSG','9683','ITRF2014 to GDA94 (2)','See ITRF2014 to GDA94 (1) (CT 9682) for conformal-only alternative (i.e. without distortion modelling).','EPSG','9000','EPSG','4283',0.06,'ICSM-Aus Conf+Dist',0);
INSERT INTO "usage" VALUES('EPSG','14962','concatenated_operation','EPSG','9683','EPSG','2575','EPSG','1234');
INSERT INTO "concatenated_operation" VALUES('EPSG','9685','ATRF2014 to GDA94 (2)','See ATRF2014 to GDA94 (1) (CT 9684) for conformal-only alternative (i.e. without distortion modelling).','EPSG','9309','EPSG','4283',0.06,'ICSM-Aus Conf+Dist',0);
INSERT INTO "usage" VALUES('EPSG','14963','concatenated_operation','EPSG','9685','EPSG','2575','EPSG','1234');
INSERT INTO "concatenated_operation" VALUES('EPSG','9687','GDA94 to WGS 84 (G1762) (2)','See GDA94 to WGS 84 (G1762) (1) (CT code 9686) for conformal-only alternative (i.e. without distortion modelling).','EPSG','4283','EPSG','9057',0.25,'ICSM-Aus Conf+Dist',0);
INSERT INTO "usage" VALUES('EPSG','14964','concatenated_operation','EPSG','9687','EPSG','2575','EPSG','1234');
INSERT INTO "concatenated_operation" VALUES('EPSG','9731','ETRS89 to ETRS89 + Catania 1965 height (1)','','EPSG','4937','EPSG','9724',0.035,'IGM-Ita 2005 Sicily',1);
INSERT INTO "usage" VALUES('EPSG','15285','concatenated_operation','EPSG','9731','EPSG','2340','EPSG','1270');
INSERT INTO "concatenated_operation" VALUES('EPSG','9750','ETRS89 to Catania 1965 height (1)','','EPSG','4937','EPSG','9721',0.035,'IGM-Ita 2005 Sicily',0);
INSERT INTO "usage" VALUES('EPSG','15385','concatenated_operation','EPSG','9750','EPSG','2340','EPSG','1133');
+26 -10
View File
@@ -28,23 +28,23 @@ INSERT INTO "concatenated_operation_step" VALUES('EPSG','6874',1,'EPSG','1265');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','6874',2,'EPSG','6873');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7811',1,'EPSG','1763');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7811',2,'EPSG','15958');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7965',1,'EPSG','7963');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7965',1,'EPSG','7813');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7965',2,'EPSG','7964');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7967',1,'EPSG','7963');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7967',1,'EPSG','7813');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7967',2,'EPSG','7966');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7973',1,'EPSG','7972');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7973',1,'EPSG','7813');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7973',2,'EPSG','7969');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7974',1,'EPSG','7972');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7974',1,'EPSG','7813');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7974',2,'EPSG','7970');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7975',1,'EPSG','7972');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7975',1,'EPSG','7813');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7975',2,'EPSG','7971');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7983',1,'EPSG','7982');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7983',1,'EPSG','7812');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7983',2,'EPSG','7977');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7986',1,'EPSG','7980');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7986',2,'EPSG','7984');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7986',2,'EPSG','7812');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7987',1,'EPSG','7980');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7987',2,'EPSG','7984');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7987',3,'EPSG','7985');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7987',2,'EPSG','7812');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','7987',3,'EPSG','7813');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','8047',1,'EPSG','1147');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','8047',2,'EPSG','1146');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','8094',1,'EPSG','1763');
@@ -56,7 +56,7 @@ INSERT INTO "concatenated_operation_step" VALUES('EPSG','8175',2,'EPSG','1169');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','8176',1,'EPSG','1265');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','8176',2,'EPSG','1227');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','8178',1,'EPSG','1759');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','8178',2,'EPSG','1123');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','8178',2,'EPSG','8452');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','8183',1,'EPSG','1273');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','8183',2,'EPSG','1149');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','8186',1,'EPSG','1763');
@@ -425,3 +425,19 @@ INSERT INTO "concatenated_operation_step" VALUES('EPSG','9103',1,'EPSG','1241');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9103',2,'EPSG','8971');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9103',3,'EPSG','7807');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9103',4,'EPSG','7790');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9336',1,'EPSG','1313');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9336',2,'EPSG','9244');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9337',1,'EPSG','1763');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9337',2,'EPSG','9327');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9499',1,'EPSG','9276');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9499',2,'EPSG','9275');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9683',1,'EPSG','8049');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9683',2,'EPSG','8447');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9685',1,'EPSG','9459');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9685',2,'EPSG','8447');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9687',1,'EPSG','8447');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9687',2,'EPSG','8448');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9731',1,'EPSG','9729');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9731',2,'EPSG','9726');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9750',1,'EPSG','9727');
INSERT INTO "concatenated_operation_step" VALUES('EPSG','9750',2,'EPSG','9726');
+5168 -2416
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -83,7 +83,7 @@ BEGIN
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1068' AND (NEW.method_name != 'Height Depth Reversal' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Change of Vertical Unit')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1069' AND (NEW.method_name != 'Change of Vertical Unit' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '1051' OR NEW.param1_name != 'Unit conversion scalar' OR (NOT((NEW.param1_value IS NULL AND NEW.param1_uom_auth_name IS NULL AND NEW.param1_uom_code IS NULL) OR (NEW.param1_value IS NOT NULL AND (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) = 'scale'))) OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1104' AND (NEW.method_name != 'Change of Vertical Unit' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Hotine Oblique Mercator (variant B)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9815' AND (NEW.method_name != 'Hotine Oblique Mercator (variant B)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8812' OR NEW.param2_name != 'Longitude of projection centre' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8813' OR NEW.param3_name != 'Azimuth of initial line' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8814' OR NEW.param4_name != 'Angle from Rectified to Skew Grid' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8815' OR NEW.param5_name != 'Scale factor on initial line' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8816' OR NEW.param6_name != 'Easting at projection centre' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8817' OR NEW.param7_name != 'Northing at projection centre' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length');
+2
View File
@@ -134,3 +134,5 @@ INSERT INTO "coordinate_system" VALUES('EPSG','6509','Cartesian',2);
INSERT INTO "coordinate_system" VALUES('EPSG','6510','Cartesian',2);
INSERT INTO "coordinate_system" VALUES('EPSG','6511','Cartesian',2);
INSERT INTO "coordinate_system" VALUES('EPSG','6512','Cartesian',3);
INSERT INTO "coordinate_system" VALUES('EPSG','32760','ordinal',2);
INSERT INTO "coordinate_system" VALUES('EPSG','32761','ordinal',2);
+257 -10
View File
@@ -1,11 +1,105 @@
-- This file is hand generated.
INSERT INTO "geodetic_crs" VALUES('OGC','CRS84','WGS 84 (CRS84)',NULL,NULL,'geographic 2D','EPSG','6424','EPSG','6326','EPSG','1262',NULL,0);
-- grid_alternatives entries created from existing ones
INSERT INTO "other_transformation" VALUES('PROJ','CRS84_TO_EPSG_4326','OGC:CRS84 to WGS 84',NULL,NULL,'EPSG','9843','Axis Order Reversal (2D)','OGC','CRS84','EPSG','4326','EPSG','1262',0.0,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 grid_alternatives(original_grid_name,
proj_grid_name,
old_proj_grid_name,
proj_grid_format,
proj_method,
inverse_direction,
package_name,
url, direct_download, open_license, directory)
SELECT grid_name,
'au_ga_AUSGeoid98.tif',
'AUSGeoid98.gtx',
'GTiff',
'geoid_like',
0,
NULL,
'https://cdn.proj.org/au_ga_AUSGeoid98.tif', 1, 1, NULL FROM grid_transformation WHERE
grid_name LIKE '%DAT.htm' AND name LIKE 'GDA94 to AHD %height%';
-- OGC CRS84, CRS27 and CRS83 longitude/latitude ordered CRS
INSERT INTO "geodetic_crs" VALUES('OGC','CRS84','WGS 84 (CRS84)',NULL,'geographic 2D','EPSG','6424','EPSG','6326',NULL,0);
INSERT INTO "usage" VALUES(
'PROJ',
'OGC_CRS84_USAGE',
'geodetic_crs',
'OGC',
'CRS84',
'EPSG','1262', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "geodetic_crs" VALUES('OGC','CRS27','NAD27 (CRS27)',NULL,'geographic 2D','EPSG','6424','EPSG','6267',NULL,0);
INSERT INTO "usage" VALUES(
'PROJ',
'OGC_CRS27_USAGE',
'geodetic_crs',
'OGC',
'CRS27',
'EPSG','1349', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "geodetic_crs" VALUES('OGC','CRS83','NAD83 (CRS83)',NULL,'geographic 2D','EPSG','6424','EPSG','6269',NULL,0);
INSERT INTO "usage" VALUES(
'PROJ',
'OGC_CRS83_USAGE',
'geodetic_crs',
'OGC',
'CRS83',
'EPSG','1350', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "other_transformation" VALUES('PROJ','CRS84_TO_EPSG_4326','OGC:CRS84 to WGS 84',NULL,'EPSG','9843','Axis Order Reversal (2D)','OGC','CRS84','EPSG','4326',0.0,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',
'CRS84_TO_EPSG_4326_USAGE',
'other_transformation',
'PROJ',
'CRS84_TO_EPSG_4326',
'EPSG','1262', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "other_transformation" VALUES('PROJ','CRS27_TO_EPSG_4267','OGC:CRS27 to NAD27',NULL,'EPSG','9843','Axis Order Reversal (2D)','OGC','CRS27','EPSG','4267',0.0,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',
'CRS27_TO_EPSG_4267_USAGE',
'other_transformation',
'PROJ',
'CRS27_TO_EPSG_4267',
'EPSG','1262', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "other_transformation" VALUES('PROJ','CRS83_TO_EPSG_4269','OGC:CRS83 to NAD83',NULL,'EPSG','9843','Axis Order Reversal (2D)','OGC','CRS83','EPSG','4269',0.0,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',
'CRS83_TO_EPSG_4269_USAGE',
'other_transformation',
'PROJ',
'CRS83_TO_EPSG_4269',
'EPSG','1262', -- extent
'EPSG','1024' -- unknown
);
-- alias of EPSG:3857
INSERT INTO "projected_crs" VALUES('EPSG','900913','Google Maps Global Mercator',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','3856','EPSG','3544',NULL,1);
INSERT INTO "projected_crs" VALUES('EPSG','900913','Google Maps Global Mercator',NULL,'EPSG','4499','EPSG','4326','EPSG','3856',NULL,1);
INSERT INTO "usage" VALUES(
'PROJ',
'900913_USAGE',
'projected_crs',
'EPSG',
'900913',
'EPSG','3544', -- extent
'EPSG','1098'
);
-- ('EPSG','7001','ETRS89 to NAP height (1)') lacks an interpolationCRS with Amersfoort / EPSG:4289
-- See https://salsa.debian.org/debian-gis-team/proj-rdnap/blob/debian/2008-8/Use%20of%20RDTRANS2008%20and%20NAPTRANS2008.pdf
@@ -78,12 +172,71 @@ INSERT INTO "axis" VALUES('PROJ','2','Northing','N','north','PROJ','ENh',2,'EPSG
INSERT INTO "axis" VALUES('PROJ','3','Ellipsoidal height','h','up','PROJ','ENh',2,'EPSG','9001');
-- Consider all WGS84 related CRS are equivalent with an accuracy of 2m
INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G730','WGS 84 to WGS 84 (G730)','','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9053','EPSG','1262',2.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,'',0);
INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G873','WGS 84 to WGS 84 (G873)','','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9054','EPSG','1262',2.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,'',0);
INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G1150','WGS 84 to WGS 84 (G1150)','','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9055','EPSG','1262',2.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,'',0);
INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G1674','WGS 84 to WGS 84 (G1674)','','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9056','EPSG','1262',2.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,'',0);
INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G1762','WGS 84 to WGS 84 (G1762)','','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9057','EPSG','1262',2.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,'',0);
INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_TRANSIT','WGS 84 to WGS 84 (Transit)','','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','8888','EPSG','1262',2.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,'',0);
INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G730','WGS 84 to WGS 84 (G730)','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9053',2.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,'',0);
INSERT INTO "usage" VALUES(
'PROJ',
'WGS84_TO_WGS84_G730_USAGE',
'helmert_transformation',
'PROJ',
'WGS84_TO_WGS84_G730',
'EPSG','1262', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G873','WGS 84 to WGS 84 (G873)','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9054',2.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,'',0);
INSERT INTO "usage" VALUES(
'PROJ',
'WGS84_TO_WGS84_G873_USAGE',
'helmert_transformation',
'PROJ',
'WGS84_TO_WGS84_G873',
'EPSG','1262', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G1150','WGS 84 to WGS 84 (G1150)','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9055',2.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,'',0);
INSERT INTO "usage" VALUES(
'PROJ',
'WGS84_TO_WGS84_G1150_USAGE',
'helmert_transformation',
'PROJ',
'WGS84_TO_WGS84_G1150',
'EPSG','1262', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G1674','WGS 84 to WGS 84 (G1674)','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9056',2.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,'',0);
INSERT INTO "usage" VALUES(
'PROJ',
'WGS84_TO_WGS84_G1674_USAGE',
'helmert_transformation',
'PROJ',
'WGS84_TO_WGS84_G1674',
'EPSG','1262', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G1762','WGS 84 to WGS 84 (G1762)','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9057',2.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,'',0);
INSERT INTO "usage" VALUES(
'PROJ',
'WGS84_TO_WGS84_G1762_USAGE',
'helmert_transformation',
'PROJ',
'WGS84_TO_WGS84_G1762',
'EPSG','1262', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_TRANSIT','WGS 84 to WGS 84 (Transit)','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','8888',2.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,'',0);
INSERT INTO "usage" VALUES(
'PROJ',
'WGS84_TO_WGS84_TRANSIT_USAGE',
'helmert_transformation',
'PROJ',
'WGS84_TO_WGS84_TRANSIT',
'EPSG','1262', -- extent
'EPSG','1024' -- unknown
);
---- Geoid models -----
@@ -102,6 +255,10 @@ INSERT INTO "geoid_model" SELECT 'GEOID12B', auth_name, code FROM grid_transform
INSERT INTO "geoid_model" SELECT 'GEOID18', auth_name, code FROM grid_transformation WHERE auth_name = 'EPSG' AND grid_name LIKE 'g2018%' AND deprecated = 0;
INSERT INTO "geoid_model" SELECT 'OSGM15', auth_name, code FROM grid_transformation WHERE auth_name = 'EPSG' AND grid_name LIKE '%OSGM15%' AND deprecated = 0;
INSERT INTO "geoid_model" SELECT 'GGM10', auth_name, code FROM grid_transformation WHERE auth_name = 'PROJ' AND grid_name LIKE 'GGM10.txt' AND deprecated = 0;
---- PROJ historic +datum aliases -----
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6326','WGS84','PROJ');
@@ -113,4 +270,94 @@ INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6223','carthage','PROJ'
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6312','hermannskogel','PROJ');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6299','ire65','PROJ');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6272','nzgd49','PROJ');
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6277','OSGB36','PROJ');
-- Given that we have installed above a WGS84 alias to the datum, add also one
-- to the EPSG:4326 CRS, as this is a common use case (https://github.com/OSGeo/PROJ/issues/2216)
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4326','WGS84','PROJ');
---- PROJ unit short names -----
-- Linear units
UPDATE unit_of_measure SET proj_short_name = 'mm' WHERE auth_name = 'EPSG' AND code = '1025';
UPDATE unit_of_measure SET proj_short_name = 'cm' WHERE auth_name = 'EPSG' AND code = '1033';
UPDATE unit_of_measure SET proj_short_name = 'm' WHERE auth_name = 'EPSG' AND code = '9001';
UPDATE unit_of_measure SET proj_short_name = 'ft' WHERE auth_name = 'EPSG' AND code = '9002';
UPDATE unit_of_measure SET proj_short_name = 'us-ft' WHERE auth_name = 'EPSG' AND code = '9003';
UPDATE unit_of_measure SET proj_short_name = 'fath' WHERE auth_name = 'EPSG' AND code = '9014';
UPDATE unit_of_measure SET proj_short_name = 'kmi' WHERE auth_name = 'EPSG' AND code = '9030';
UPDATE unit_of_measure SET proj_short_name = 'us-ch' WHERE auth_name = 'EPSG' AND code = '9033';
UPDATE unit_of_measure SET proj_short_name = 'us-mi' WHERE auth_name = 'EPSG' AND code = '9035';
UPDATE unit_of_measure SET proj_short_name = 'km' WHERE auth_name = 'EPSG' AND code = '9036';
UPDATE unit_of_measure SET proj_short_name = 'ind-ft' WHERE auth_name = 'EPSG' AND code = '9081';
UPDATE unit_of_measure SET proj_short_name = 'ind-yd' WHERE auth_name = 'EPSG' AND code = '9085';
UPDATE unit_of_measure SET proj_short_name = 'mi' WHERE auth_name = 'EPSG' AND code = '9093';
UPDATE unit_of_measure SET proj_short_name = 'yd' WHERE auth_name = 'EPSG' AND code = '9096';
UPDATE unit_of_measure SET proj_short_name = 'ch' WHERE auth_name = 'EPSG' AND code = '9097';
UPDATE unit_of_measure SET proj_short_name = 'link' WHERE auth_name = 'EPSG' AND code = '9098';
-- Angular units
UPDATE unit_of_measure SET proj_short_name = 'rad' WHERE auth_name = 'EPSG' AND code = '9101';
UPDATE unit_of_measure SET proj_short_name = 'deg' WHERE auth_name = 'EPSG' AND code = '9102';
UPDATE unit_of_measure SET proj_short_name = 'grad' WHERE auth_name = 'EPSG' AND code = '9105';
-- PROJ specific units
INSERT INTO "unit_of_measure" VALUES('PROJ','DM','decimeter','length',0.01,'dm',0);
INSERT INTO "unit_of_measure" VALUES('PROJ','IN','inch','length',0.0254,'in',0);
INSERT INTO "unit_of_measure" VALUES('PROJ','US_IN','US survey inch','length',0.025400050800101,'us-in',0);
INSERT INTO "unit_of_measure" VALUES('PROJ','US_YD','US survey yard','length',0.914401828803658,'us-yd',0);
INSERT INTO "unit_of_measure" VALUES('PROJ','IND_CH','Indian chain','length',20.11669506,'ind-ch',0);
-- Deal with grid_transformation using EPSG:1088 'Geog3D to Geog2D+GravityRelatedHeight (gtx)' method
-- and similar ones
-- We derive records using the more classic 'Geographic3D to GravityRelatedHeight' method
-- We could probably do that at runtime too, but more simple and efficient to create records
INSERT INTO "grid_transformation"
SELECT
'PROJ' AS auth_name,
gt.auth_name || '_' || gt.code || '_RESTRICTED_TO_VERTCRS' AS code,
gcrs.name || ' to ' || vcrs.name || ' (from ' || gt.name || ')' AS name,
NULL AS description,
'EPSG' AS method_auth_name,
'9665' AS method_code,
'Geographic3D to GravityRelatedHeight (gtx)' AS method_name,
gt.source_crs_auth_name,
gt.source_crs_code,
c.vertical_crs_auth_name AS target_crs_auth_name,
c.vertical_crs_code AS target_crs_code,
gt.accuracy,
gt.grid_param_auth_name,
gt.grid_param_code,
gt.grid_param_name,
gt.grid_name,
gt.grid2_param_auth_name,
gt.grid2_param_code,
gt.grid2_param_name,
gt.grid2_name,
gt.interpolation_crs_auth_name,
gt.interpolation_crs_code,
gt.operation_version,
gt.deprecated
FROM grid_transformation gt
JOIN compound_crs c ON gt.target_crs_code = c.code AND gt.target_crs_auth_name = c.auth_name
JOIN geodetic_crs gcrs ON gt.source_crs_auth_name = gcrs.auth_name AND gt.source_crs_code = gcrs.code
JOIN vertical_crs vcrs on vcrs.auth_name = c.vertical_crs_auth_name AND vcrs.code = c.vertical_crs_code
WHERE method_auth_name = 'EPSG' AND method_name LIKE 'Geog3D to Geog2D+%'
AND NOT EXISTS (SELECT 1 FROM grid_transformation gt2 WHERE gt2.method_name LIKE 'Geographic3D to%' AND gt2.source_crs_auth_name = gt.source_crs_auth_name AND gt2.source_crs_code = gt.source_crs_code AND gt2.target_crs_auth_name = vcrs.auth_name AND gt2.target_crs_code = vcrs.code)
AND gt.deprecated = 0;
INSERT INTO "usage"
SELECT
'PROJ' AS auth_name,
gt.auth_name || '_' || gt.code || '_RESTRICTED_TO_VERTCRS_USAGE' AS code,
'grid_transformation' AS object_table_name,
'PROJ' AS object_auth_name,
gt.auth_name || '_' || gt.code || '_RESTRICTED_TO_VERTCRS' AS object_code,
u.extent_auth_name,
u.extent_code,
u.scope_auth_name,
u.scope_code
FROM grid_transformation gt
JOIN usage u ON u.object_auth_name = gt.auth_name AND u.object_code = gt.code AND u.object_table_name = 'grid_transformation'
WHERE method_auth_name = 'EPSG' AND method_name LIKE 'Geog3D to Geog2D+%'
AND EXISTS (SELECT 1 FROM grid_transformation gt2 WHERE gt2.auth_name = 'PROJ' AND gt2.code = gt.auth_name || '_' || gt.code || '_RESTRICTED_TO_VERTCRS');
+17
View File
@@ -0,0 +1,17 @@
-- This file is hand generated.
INSERT INTO "extent" VALUES('PROJ','EXTENT_UNKNOWN','Not specified','Not specified.',-90.0,90.0,-180.0,180.0,0);
INSERT INTO "scope" VALUES('PROJ','SCOPE_UNKNOWN','Not known.',0);
INSERT INTO celestial_body VALUES('PROJ', 'EARTH', 'Earth', 6378137.0);
INSERT INTO versioned_auth_name_mapping VALUES ('IAU_2015', 'IAU', '2015', 1);
CREATE TRIGGER conversion_method_check_insert_trigger_orthographic
INSTEAD OF INSERT ON conversion
BEGIN
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Orthographic')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9840' AND (NEW.method_name != 'Orthographic' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
END;
+10
View File
@@ -454,3 +454,13 @@ INSERT INTO "deprecation" VALUES('projected_crs','EPSG','7082','EPSG','8456','EP
INSERT INTO "deprecation" VALUES('projected_crs','EPSG','7082','EPSG','8455','EPSG');
INSERT INTO "deprecation" VALUES('projected_crs','EPSG','3911','EPSG','8686','EPSG');
INSERT INTO "deprecation" VALUES('geodetic_crs','EPSG','8449','EPSG','8860','EPSG');
INSERT INTO "deprecation" VALUES('geodetic_crs','EPSG','4280','EPSG','4211','EPSG');
INSERT INTO "deprecation" VALUES('geodetic_crs','EPSG','4808','EPSG','4813','EPSG');
INSERT INTO "deprecation" VALUES('projected_crs','EPSG','2163','EPSG','9311','EPSG');
INSERT INTO "deprecation" VALUES('projected_crs','EPSG','3408','EPSG','6931','EPSG');
INSERT INTO "deprecation" VALUES('projected_crs','EPSG','3409','EPSG','6932','EPSG');
INSERT INTO "deprecation" VALUES('projected_crs','EPSG','3410','EPSG','6933','EPSG');
INSERT INTO "deprecation" VALUES('projected_crs','EPSG','3411','EPSG','3413','EPSG');
INSERT INTO "deprecation" VALUES('projected_crs','EPSG','3412','EPSG','3976','EPSG');
INSERT INTO "deprecation" VALUES('projected_crs','EPSG','4088','EPSG','4087','EPSG');
INSERT INTO "deprecation" VALUES('projected_crs','EPSG','7804','EPSG','9391','EPSG');
+10746 -5478
View File
File diff suppressed because it is too large. Load diff
+3636
View File
File diff suppressed because it is too large. Load diff
+2162 -1026
View File
File diff suppressed because it is too large. Load diff
+1202 -576
View File
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,20 @@
--- This file has been generated by scripts/build_db.py. DO NOT EDIT !
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1178',1);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1179',2);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1180',3);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1181',4);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1182',5);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1183',6);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1184',7);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1185',8);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1186',9);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1204',10);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1206',11);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6326','EPSG','1166',1);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6326','EPSG','1152',2);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6326','EPSG','1153',3);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6326','EPSG','1154',4);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6326','EPSG','1155',5);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6326','EPSG','1156',6);
INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6326','EPSG','1309',7);
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+192 -55
View File
@@ -3,96 +3,233 @@
-- Denmark
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_5799_TO_EPSG_4937','DVR90 height to ETRS89',
NULL,NULL,
'PROJ','HEIGHT_TO_GEOGRAPHIC3D','GravityRelatedHeight to Geographic3D',
'EPSG','5799', -- source CRS (DVR90 height)
'EPSG','4937', -- target CRS (ETRS89)
'EPSG','3237', -- area of use: Denmark onshore
'PROJ','EPSG_4937_TO_EPSG_5799','ETRS89 to DVR90 height',
NULL,
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
'EPSG','4937', -- source CRS (ETRS89)
'EPSG','5799', -- target CRS (DVR90 height)
NULL,
'EPSG','8666','Geoid (height correction) model file','dvr90.gtx',
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_5733_TO_EPSG_4937','DNN height to ETRS89',
NULL,NULL,
'PROJ','HEIGHT_TO_GEOGRAPHIC3D','GravityRelatedHeight to Geographic3D',
'EPSG','5733', -- source CRS (DNN height)
'EPSG','4937', -- target CRS (ETRS89)
INSERT INTO "usage" VALUES(
'PROJ',
'EPSG_4937_TO_EPSG_5799_USAGE',
'grid_transformation',
'PROJ',
'EPSG_4937_TO_EPSG_5799',
'EPSG','3237', -- area of use: Denmark onshore
'EPSG','1024' -- unknown
);
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_4937_TO_EPSG_5733','ETRS89 to DNN height',
NULL,
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
'EPSG','4937', -- source CRS (ETRS89)
'EPSG','5733', -- target CRS (DNN height)
NULL,
'EPSG','8666','Geoid (height correction) model file','dnn.gtx',
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES(
'PROJ',
'EPSG_4937_TO_EPSG_5733_USAGE',
'grid_transformation',
'PROJ',
'EPSG_4937_TO_EPSG_5733',
'EPSG','3237', -- area of use: Denmark onshore
'EPSG','1024' -- unknown
);
-- Faroe Islands
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_5317_TO_EPSG_4937','FVR09 height to ETRS89',
NULL,NULL,
'PROJ','HEIGHT_TO_GEOGRAPHIC3D','GravityRelatedHeight to Geographic3D',
'EPSG','5317', -- source CRS (FVR09 height)
'EPSG','4937', -- target CRS (ETRS89)
'EPSG','3248', -- area of use: Faroe Islands - onshore
'PROJ','EPSG_4937_TO_EPSG_5317','ETRS89 to FVR09 height',
NULL,
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
'EPSG','4937', -- source CRS (ETRS89)
'EPSG','5317', -- target CRS (FVR09 height)
NULL,
'EPSG','8666','Geoid (height correction) model file','fvr09.gtx',
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES(
'PROJ',
'EPSG_4937_TO_EPSG_5317_USAGE',
'grid_transformation',
'PROJ',
'EPSG_4937_TO_EPSG_5317',
'EPSG','3248', -- area of use: Faroe Islands - onshore
'EPSG','1024' -- unknown
);
-- Sweden
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_5613_TO_EPSG_4977','RH2000 height to SWEREF99',
NULL,NULL,
'PROJ','HEIGHT_TO_GEOGRAPHIC3D','GravityRelatedHeight to Geographic3D',
'EPSG','5613', -- source CRS (RH2000 height)
'EPSG','4977', -- target CRS (SWEREF99)
'EPSG','3313', -- area of use: Sweden onshore
'PROJ','EPSG_4977_TO_EPSG_5613','SWEREF99 to RH2000 height',
NULL,
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
'EPSG','4977', -- source CRS (SWEREF99)
'EPSG','5613', -- target CRS (RH2000 height)
NULL,
'EPSG','8666','Geoid (height correction) model file','SWEN17_RH2000.gtx',
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
----- Hopefully temporary entry for BWTA2017.gsb grid -----
INSERT INTO "area" VALUES('PROJ','BWTA2017','Germany - Baden-Wurtemberg','Germany - Baden-Wurtemberg',47.5,49.83,7.49,10.51,0);
-- Advertize a 0.8 accuracy slightly better than the 0.9 of BETA2007 for sort purposes
INSERT INTO "grid_transformation" VALUES('PROJ','BWTA2017','DHDN to ETRS89 (BWTA2017)','DHDN to ETRS89 for Baden-Wurtemberg for ALKIS 2017. Using official BWTA2017 grid but this transformation entry has been created temporarily by PROJ. Accuracy indication not to be considered as authoritative','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4314','EPSG','4258','PROJ','BWTA2017',0.89,'EPSG','8656','Latitude and longitude difference file','BWTA2017.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'-',0);
----- Hopefully temporary entry for SeTa2016.gsb grid -----
INSERT INTO "area" VALUES('PROJ','SETA2016','Germany - Saarland','Germany - Saarland',49.10,49.64,6.345,7.45,0);
-- Advertize a 0.8 accuracy slightly better than the 0.9 of BETA2007 for sort purposes
INSERT INTO "grid_transformation" VALUES('PROJ','SETA2016','DHDN to ETRS89 (SETA2016)','DHDN to ETRS89 for Saarland. Using official SETA2016 grid but this transformation entry has been created temporarily by PROJ. Accuracy indication not to be considered as authoritative','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4314','EPSG','4258','PROJ','SETA2016',0.89,'EPSG','8656','Latitude and longitude difference file','SeTa2016.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'-',0);
INSERT INTO "usage" VALUES(
'PROJ',
'EPSG_4977_TO_EPSG_5613_USAGE',
'grid_transformation',
'PROJ',
'EPSG_4977_TO_EPSG_5613',
'EPSG','3313', -- area of use: Sweden onshore
'EPSG','1024' -- unknown
);
-- Iceland
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_8089_TO_EPSG_5323','ISH2004 height to ISN2004',
NULL,NULL,
'PROJ','HEIGHT_TO_GEOGRAPHIC3D','GravityRelatedHeight to Geographic3D',
'EPSG','8089', -- source CRS (ISH2004 height)
'EPSG','5323', -- target CRS (ISN2004 geographic 3D)
'EPSG','1120', -- area of use: Iceland - onshore and offshore
'PROJ','EPSG_5323_TO_EPSG_8089','ISN2004 to ISH2004 height',
NULL,
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
'EPSG','5323', -- source CRS (ISN2004 geographic 3D)
'EPSG','8089', -- target CRS (ISH2004 height)
NULL,
'EPSG','8666','Geoid (height correction) model file','Icegeoid_ISN2004.gtx',
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_8089_TO_EPSG_4945','ISH2004 height to ISN93',
NULL,NULL,
'PROJ','HEIGHT_TO_GEOGRAPHIC3D','GravityRelatedHeight to Geographic3D',
'EPSG','8089', -- source CRS (ISH2004 height)
'EPSG','4945', -- target CRS (ISN93 geographic 3D)
INSERT INTO "usage" VALUES(
'PROJ',
'EPSG_5323_TO_EPSG_8089_USAGE',
'grid_transformation',
'PROJ',
'EPSG_5323_TO_EPSG_8089',
'EPSG','1120', -- area of use: Iceland - onshore and offshore
'EPSG','1024' -- unknown
);
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_4945_TO_EPSG_8089','ISN93 to ISH2004 height',
NULL,
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
'EPSG','4945', -- source CRS (ISN93 geographic 3D)
'EPSG','8089', -- target CRS (ISH2004 height)
NULL,
'EPSG','8666','Geoid (height correction) model file','Icegeoid_ISN93.gtx',
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_8089_TO_EPSG_8085','ISH2004 height to ISN2016',
NULL,NULL,
'PROJ','HEIGHT_TO_GEOGRAPHIC3D','GravityRelatedHeight to Geographic3D',
'EPSG','8089', -- source CRS (ISH2004 height)
'EPSG','8085', -- target CRS (ISN2016 geographic 3D)
INSERT INTO "usage" VALUES(
'PROJ',
'EPSG_4945_TO_EPSG_8089_USAGE',
'grid_transformation',
'PROJ',
'EPSG_4945_TO_EPSG_8089',
'EPSG','1120', -- area of use: Iceland - onshore and offshore
'EPSG','1024' -- unknown
);
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_8085_TO_EPSG_8089','ISN2016 to ISH2004 height',
NULL,
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
'EPSG','8085', -- source CRS (ISN2016 geographic 3D)
'EPSG','8089', -- target CRS (ISH2004 height)
NULL,
'EPSG','8666','Geoid (height correction) model file','Icegeoid_ISN2016.gtx',
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES(
'PROJ',
'EPSG_8085_TO_EPSG_8089_USAGE',
'grid_transformation',
'PROJ',
'EPSG_8085_TO_EPSG_8089',
'EPSG','1120', -- area of use: Iceland - onshore and offshore
'EPSG','1024' -- unknown
);
-- Japan
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_6667_TO_EPSG_6695','JDG2011 to JGD2011 height',
NULL,
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
'EPSG','6667', -- source CRS (JDG2011)
'EPSG','6695', -- target CRS (JDG2011 (vertical) height)
NULL,
'EPSG','8666','Geoid (height correction) model file','jp_gsi_gsigeo2011.tif',
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES(
'PROJ',
'EPSG_6667_TO_EPSG_6695_USAGE',
'grid_transformation',
'PROJ',
'EPSG_6667_TO_EPSG_6695',
'EPSG','3263', -- area of use: Japan - onshore mainland
'EPSG','1024' -- unknown
);
-- Switzerland
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_4937_TO_EPSG_5729','ETRS89 to LHN95 height',
NULL,
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
'EPSG','4937', -- source CRS (ETRS89)
'EPSG','5729', -- target CRS (LHN95 height)
NULL,
'EPSG','8666','Geoid (height correction) model file','chgeo2004_ETRS.agr',
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES(
'PROJ',
'EPSG_4937_TO_EPSG_5729_USAGE',
'grid_transformation',
'PROJ',
'EPSG_4937_TO_EPSG_5729',
'EPSG','1286', -- area of use: Europe - Liechtenstein and Switzerland
'EPSG','1024' -- unknown
);
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_4937_TO_EPSG_5728','ETRS89 to LN02 height',
NULL,
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
'EPSG','4937', -- source CRS (ETRS89)
'EPSG','5728', -- target CRS (LN02 height)
NULL,
'EPSG','8666','Geoid (height correction) model file','chgeo2004_htrans_ETRS.agr',
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES(
'PROJ',
'EPSG_4937_TO_EPSG_5728_USAGE',
'grid_transformation',
'PROJ',
'EPSG_4937_TO_EPSG_5728',
'EPSG','1286', -- area of use: Europe - Liechtenstein and Switzerland
'EPSG','1024' -- unknown
);
-- Mexico
INSERT INTO "grid_transformation" VALUES(
'PROJ','EPSG_6364_TO_EPSG_5703','Mexico ITRF2008 to NAVD88 height',
NULL,
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
'EPSG','6364', -- source CRS (Mexico ITRF2008)
'EPSG','5703', -- target CRS (NAVD88 height)
NULL,
'EPSG','8666','Geoid (height correction) model file','GGM10.txt',
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES(
'PROJ',
'EPSG_6364_TO_EPSG_5703_USAGE',
'grid_transformation',
'PROJ',
'EPSG_6364_TO_EPSG_5703',
'EPSG','3278', -- area of use: Mexico - onshore
'EPSG','1024' -- unknown
);
File diff suppressed because it is too large. Load diff
+4828
View File
File diff suppressed because it is too large. Load diff
+4251 -3023
View File
File diff suppressed because it is too large. Load diff
+21 -2
View File
@@ -1,2 +1,21 @@
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v9.8.4');
INSERT INTO "metadata" VALUES('EPSG.DATE', '2019-11-12');
-- Version of the database structure.
-- The major number indicates an incompatible change (e.g. table or column
-- removed or renamed).
-- The minor number is incremented if a backward compatible change done, that
-- is the new database can still work with an older PROJ version.
-- When updating those numbers, the DATABASE_LAYOUT_VERSION_MAJOR and
-- DATABASE_LAYOUT_VERSION_MINOR constants in src/iso19111/factory.cpp must be
-- updated as well.
INSERT INTO "metadata" VALUES('DATABASE.LAYOUT.VERSION.MAJOR', 1);
INSERT INTO "metadata" VALUES('DATABASE.LAYOUT.VERSION.MINOR', 2);
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v10.041');
INSERT INTO "metadata" VALUES('EPSG.DATE', '2021-12-03');
-- The value of ${PROJ_VERSION} is substituted at build time by the actual
-- value.
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.8');
-165
View File
@@ -1,165 +0,0 @@
--- This file has been generated by scripts/build_db.py. DO NOT EDIT !
CREATE TRIGGER conversion_method_check_insert_trigger
BEFORE INSERT ON conversion
FOR EACH ROW BEGIN
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (2SP)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9802' AND (NEW.method_name != 'Lambert Conic Conformal (2SP)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8823' OR NEW.param3_name != 'Latitude of 1st standard parallel' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8824' OR NEW.param4_name != 'Latitude of 2nd standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8826' OR NEW.param5_name != 'Easting at false origin' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8827' OR NEW.param6_name != 'Northing at false origin' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Transverse Mercator')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9807' AND (NEW.method_name != 'Transverse Mercator' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Mercator (variant A)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9804' AND (NEW.method_name != 'Mercator (variant A)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Popular Visualisation Pseudo Mercator')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1024' AND (NEW.method_name != 'Popular Visualisation Pseudo Mercator' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Azimuthal Equal Area (Spherical)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1027' AND (NEW.method_name != 'Lambert Azimuthal Equal Area (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equidistant Cylindrical')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1028' AND (NEW.method_name != 'Equidistant Cylindrical' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equidistant Cylindrical (Spherical)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1029' AND (NEW.method_name != 'Equidistant Cylindrical (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Cassini-Soldner')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9806' AND (NEW.method_name != 'Cassini-Soldner' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Bonne (South Orientated)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9828' AND (NEW.method_name != 'Bonne (South Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Albers Equal Area')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9822' AND (NEW.method_name != 'Albers Equal Area' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8823' OR NEW.param3_name != 'Latitude of 1st standard parallel' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8824' OR NEW.param4_name != 'Latitude of 2nd standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8826' OR NEW.param5_name != 'Easting at false origin' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8827' OR NEW.param6_name != 'Northing at false origin' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Krovak (North Orientated)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1041' AND (NEW.method_name != 'Krovak (North Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '1036' OR NEW.param3_name != 'Co-latitude of cone axis' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8818' OR NEW.param4_name != 'Latitude of pseudo standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8819' OR NEW.param5_name != 'Scale factor on pseudo standard parallel' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length');
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Krovak Modified')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1042' AND (NEW.method_name != 'Krovak Modified' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '1036' OR NEW.param3_name != 'Co-latitude of cone axis' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8818' OR NEW.param4_name != 'Latitude of pseudo standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8819' OR NEW.param5_name != 'Scale factor on pseudo standard parallel' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length');
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Krovak Modified (North Orientated)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1043' AND (NEW.method_name != 'Krovak Modified (North Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '1036' OR NEW.param3_name != 'Co-latitude of cone axis' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8818' OR NEW.param4_name != 'Latitude of pseudo standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8819' OR NEW.param5_name != 'Scale factor on pseudo standard parallel' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length');
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (1SP)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9801' AND (NEW.method_name != 'Lambert Conic Conformal (1SP)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for American Polyconic')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9818' AND (NEW.method_name != 'American Polyconic' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Polar Stereographic (variant A)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9810' AND (NEW.method_name != 'Polar Stereographic (variant A)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Krovak')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9819' AND (NEW.method_name != 'Krovak' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '1036' OR NEW.param3_name != 'Co-latitude of cone axis' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8818' OR NEW.param4_name != 'Latitude of pseudo standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8819' OR NEW.param5_name != 'Scale factor on pseudo standard parallel' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length');
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Oblique Stereographic')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9809' AND (NEW.method_name != 'Oblique Stereographic' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Mercator (variant B)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9805' AND (NEW.method_name != 'Mercator (variant B)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Polar Stereographic (variant B)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9829' AND (NEW.method_name != 'Polar Stereographic (variant B)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8832' OR NEW.param1_name != 'Latitude of standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (2SP Michigan)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1051' AND (NEW.method_name != 'Lambert Conic Conformal (2SP Michigan)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8823' OR NEW.param3_name != 'Latitude of 1st standard parallel' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8824' OR NEW.param4_name != 'Latitude of 2nd standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8826' OR NEW.param5_name != 'Easting at false origin' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8827' OR NEW.param6_name != 'Northing at false origin' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '1038' OR NEW.param7_name != 'Ellipsoid scaling factor' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'scale');
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Colombia Urban')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1052' AND (NEW.method_name != 'Colombia Urban' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '1039' OR NEW.param5_name != 'Projection plane origin height' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Hotine Oblique Mercator (variant A)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9812' AND (NEW.method_name != 'Hotine Oblique Mercator (variant A)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8812' OR NEW.param2_name != 'Longitude of projection centre' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8813' OR NEW.param3_name != 'Azimuth of initial line' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8814' OR NEW.param4_name != 'Angle from Rectified to Skew Grid' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8815' OR NEW.param5_name != 'Scale factor on initial line' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length');
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Cylindrical Equal Area')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9835' AND (NEW.method_name != 'Lambert Cylindrical Equal Area' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Azimuthal Equal Area')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9820' AND (NEW.method_name != 'Lambert Azimuthal Equal Area' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Height Depth Reversal')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1068' AND (NEW.method_name != 'Height Depth Reversal' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Change of Vertical Unit')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1069' AND (NEW.method_name != 'Change of Vertical Unit' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '1051' OR NEW.param1_name != 'Unit conversion scalar' OR (NOT((NEW.param1_value IS NULL AND NEW.param1_uom_auth_name IS NULL AND NEW.param1_uom_code IS NULL) OR (NEW.param1_value IS NOT NULL AND (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) = 'scale'))) OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Hotine Oblique Mercator (variant B)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9815' AND (NEW.method_name != 'Hotine Oblique Mercator (variant B)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8812' OR NEW.param2_name != 'Longitude of projection centre' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8813' OR NEW.param3_name != 'Azimuth of initial line' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8814' OR NEW.param4_name != 'Angle from Rectified to Skew Grid' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8815' OR NEW.param5_name != 'Scale factor on initial line' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8816' OR NEW.param6_name != 'Easting at projection centre' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8817' OR NEW.param7_name != 'Northing at projection centre' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length');
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Laborde Oblique Mercator')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9813' AND (NEW.method_name != 'Laborde Oblique Mercator' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8812' OR NEW.param2_name != 'Longitude of projection centre' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8813' OR NEW.param3_name != 'Azimuth of initial line' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8815' OR NEW.param4_name != 'Scale factor on initial line' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'scale' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8806' OR NEW.param5_name != 'False easting' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8807' OR NEW.param6_name != 'False northing' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equal Earth')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1078' AND (NEW.method_name != 'Equal Earth' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8802' OR NEW.param1_name != 'Longitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8806' OR NEW.param2_name != 'False easting' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'length' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8807' OR NEW.param3_name != 'False northing' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Modified Azimuthal Equidistant')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9832' AND (NEW.method_name != 'Modified Azimuthal Equidistant' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Guam Projection')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9831' AND (NEW.method_name != 'Guam Projection' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Axis Order Reversal (2D)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9843' AND (NEW.method_name != 'Axis Order Reversal (2D)' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Axis Order Reversal (Geographic3D horizontal)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9844' AND (NEW.method_name != 'Axis Order Reversal (Geographic3D horizontal)' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Geographic/geocentric conversions')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9602' AND (NEW.method_name != 'Geographic/geocentric conversions' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Geographic3D to 2D conversion')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9659' AND (NEW.method_name != 'Geographic3D to 2D conversion' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Geographic/topocentric conversions')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9837' AND (NEW.method_name != 'Geographic/topocentric conversions' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8834' OR NEW.param1_name != 'Latitude of topocentric origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8835' OR NEW.param2_name != 'Longitude of topocentric origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8836' OR NEW.param3_name != 'Ellipsoidal height of topocentric origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Geocentric/topocentric conversions')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9836' AND (NEW.method_name != 'Geocentric/topocentric conversions' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8837' OR NEW.param1_name != 'Geocentric X of topocentric origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'length' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8838' OR NEW.param2_name != 'Geocentric Y of topocentric origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'length' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8839' OR NEW.param3_name != 'Geocentric Z of topocentric origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Transverse Mercator Zoned Grid System')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9824' AND (NEW.method_name != 'Transverse Mercator Zoned Grid System' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8830' OR NEW.param2_name != 'Initial longitude' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8831' OR NEW.param3_name != 'Zone width' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8805' OR NEW.param4_name != 'Scale factor at natural origin' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'scale' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8806' OR NEW.param5_name != 'False easting' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8807' OR NEW.param6_name != 'False northing' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Transverse Mercator (South Orientated)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9808' AND (NEW.method_name != 'Transverse Mercator (South Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (West Orientated)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9826' AND (NEW.method_name != 'Lambert Conic Conformal (West Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equidistant Cylindrical')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9842' AND (NEW.method_name != 'Equidistant Cylindrical' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Mercator (1SP) (Spherical)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9841' AND (NEW.method_name != 'Mercator (1SP) (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Vertical Perspective')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9838' AND (NEW.method_name != 'Vertical Perspective' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8834' OR NEW.param1_name != 'Latitude of topocentric origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8835' OR NEW.param2_name != 'Longitude of topocentric origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8836' OR NEW.param3_name != 'Ellipsoidal height of topocentric origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8840' OR NEW.param4_name != 'Viewpoint height' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Azimuthal Equal Area (Spherical)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9821' AND (NEW.method_name != 'Lambert Azimuthal Equal Area (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8828' OR NEW.param1_name != 'Spherical latitude of origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8829' OR NEW.param2_name != 'Spherical longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Cylindrical Equal Area (Spherical)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9834' AND (NEW.method_name != 'Lambert Cylindrical Equal Area (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Hyperbolic Cassini-Soldner')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9833' AND (NEW.method_name != 'Hyperbolic Cassini-Soldner' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (2SP Belgium)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9803' AND (NEW.method_name != 'Lambert Conic Conformal (2SP Belgium)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8823' OR NEW.param3_name != 'Latitude of 1st standard parallel' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8824' OR NEW.param4_name != 'Latitude of 2nd standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8826' OR NEW.param5_name != 'Easting at false origin' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8827' OR NEW.param6_name != 'Northing at false origin' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for New Zealand Map Grid')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9811' AND (NEW.method_name != 'New Zealand Map Grid' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Tunisia Mining Grid')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9816' AND (NEW.method_name != 'Tunisia Mining Grid' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8826' OR NEW.param3_name != 'Easting at false origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8827' OR NEW.param4_name != 'Northing at false origin' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Near-Conformal')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9817' AND (NEW.method_name != 'Lambert Conic Near-Conformal' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equidistant Cylindrical (Spherical)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9823' AND (NEW.method_name != 'Equidistant Cylindrical (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Polar Stereographic (variant C)')
WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9830' AND (NEW.method_name != 'Polar Stereographic (variant C)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8832' OR NEW.param1_name != 'Latitude of standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8826' OR NEW.param3_name != 'Easting at false origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8827' OR NEW.param4_name != 'Northing at false origin' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL);
END;
+2341
View File
File diff suppressed because it is too large. Load diff
+13
View File
@@ -0,0 +1,13 @@
-- Append NKG to authority references
UPDATE
authority_to_authority_preference
SET
allowed_authorities = allowed_authorities || ',NKG'
WHERE
source_auth_name = 'EPSG' AND target_auth_name = 'EPSG';
INSERT INTO "authority_to_authority_preference"
(source_auth_name,target_auth_name, allowed_authorities)
VALUES
('NKG', 'EPSG', 'NKG,PROJ,EPSG');
File diff suppressed because it is too large. Load diff
+159
View File
@@ -0,0 +1,159 @@
-- This file is hand generated.
-- Norway triangulated files
INSERT INTO other_transformation VALUES(
'PROJ','NGO48_TO_ETRS89NO','NGO 1948 to ETRS89 (2)',
'Transformation based on a triangulated irregular network',
'PROJ','PROJString',
'+proj=pipeline ' ||
'+step +proj=axisswap +order=2,1 ' ||
'+step +proj=tinshift +file=no_kv_ETRS89NO_NGO48_TIN.json +inv ' ||
'+step +proj=axisswap +order=2,1',
'EPSG','4273',
'EPSG','4258',
0.1,
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','NGO48_TO_ETRS89NO_USAGE','other_transformation','PROJ','NGO48_TO_ETRS89NO','EPSG','1352','EPSG','1031');
-- Finland triangulated files
INSERT INTO other_transformation VALUES(
'PROJ','YKJ_TO_ETRS35FIN','KKJ / Finland Uniform Coordinate System to ETRS35FIN',
'Transformation based on a triangulated irregular network',
'PROJ','PROJString','+proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=tinshift +file=fi_nls_ykj_etrs35fin.json',
'EPSG','2393','EPSG','3067',0.1,
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','YKJ_TO_ETRS35FIN_USAGE','other_transformation','PROJ','YKJ_TO_ETRS35FIN','EPSG','3333','EPSG','1024');
INSERT INTO "concatenated_operation" VALUES('PROJ','KKJ_TO_ETRS89','KKJ to ETRS89 (using PROJ:YKJ_TO_ETRS35FIN)','Transformation based on a triangulated irregular network','EPSG','4123','EPSG','4258',NULL,NULL,0);
INSERT INTO "concatenated_operation_step" VALUES('PROJ','KKJ_TO_ETRS89',1,'EPSG','18193');
INSERT INTO "concatenated_operation_step" VALUES('PROJ','KKJ_TO_ETRS89',2,'PROJ','YKJ_TO_ETRS35FIN');
INSERT INTO "concatenated_operation_step" VALUES('PROJ','KKJ_TO_ETRS89',3,'EPSG','16065');
INSERT INTO "usage" VALUES(
'PROJ',
'KKJ_TO_ETRS89_USAGE',
'concatenated_operation',
'PROJ',
'KKJ_TO_ETRS89',
'EPSG','3333', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO other_transformation VALUES(
'PROJ','N43_TO_N60','N43 height to N60 height',
'Transformation based on a triangulated irregular network',
'PROJ','PROJString','+proj=pipeline +step +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +step +proj=tinshift +file=fi_nls_n43_n60.json +step +inv +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl',
'EPSG','8675','EPSG','5717',0.01,
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,'EPSG','4123',NULL,0);
INSERT INTO "usage" VALUES('PROJ','N43_TO_N60_USAGE','other_transformation','PROJ','N43_TO_N60','EPSG','4522','EPSG','1024');
INSERT INTO other_transformation VALUES(
'PROJ','N60_TO_N2000','N60 height to N2000 height',
'Transformation based on a triangulated irregular network',
'PROJ','PROJString','+proj=pipeline +step +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl +step +proj=tinshift +file=fi_nls_n60_n2000.json +step +inv +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl',
'EPSG','5717','EPSG','3900',0.01,
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,'EPSG','4123',NULL,0);
INSERT INTO "usage" VALUES('PROJ','N60_TO_N2000_USAGE','other_transformation','PROJ','N60_TO_N2000','EPSG','3333','EPSG','1024');
-- Temporary entry for NZGD2000 deformation model
INSERT INTO other_transformation VALUES(
'PROJ','NZGD2000-20180701','NZGD2000 to ITRF96',
'New Zealand Deformation Model. Defines the secular model (National Deformation Model) and patches for significant deformation events since 2000',
'PROJ', 'PROJString',
'+proj=pipeline ' ||
'+step +proj=unitconvert +xy_in=deg +xy_out=rad ' ||
'+step +proj=axisswap +order=2,1 ' ||
'+step +proj=defmodel +model=nz_linz_nzgd2000-20180701.json ' ||
'+step +proj=axisswap +order=2,1 ' ||
'+step +proj=unitconvert +xy_in=rad +xy_out=deg',
'EPSG','4959',
'EPSG','7907',
NULL, --accuracy
NULL,NULL,NULL,NULL,NULL,NULL, -- param1
NULL,NULL,NULL,NULL,NULL,NULL, -- param2
NULL,NULL,NULL,NULL,NULL,NULL, -- param3
NULL,NULL,NULL,NULL,NULL,NULL, -- param4
NULL,NULL,NULL,NULL,NULL,NULL, -- param5
NULL,NULL,NULL,NULL,NULL,NULL, -- param6
NULL,NULL,NULL,NULL,NULL,NULL, -- param7
NULL,NULL,
'20180701', -- operation version
0);
INSERT INTO "usage" VALUES(
'PROJ',
'NZGD2000-20180701_USAGE',
'other_transformation',
'PROJ',
'NZGD2000-20180701',
'EPSG','1175', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "concatenated_operation" VALUES('PROJ','NZGD2000_TO_ITRF97','NZGD2000 to ITRF97','Concatenation of PROJ:NZGD2000-20180701 and 9079','EPSG','4959','EPSG','7908',NULL,NULL,0);
INSERT INTO "concatenated_operation_step" VALUES('PROJ','NZGD2000_TO_ITRF97',1,'PROJ','NZGD2000-20180701');
INSERT INTO "concatenated_operation_step" VALUES('PROJ','NZGD2000_TO_ITRF97',2,'EPSG','9079');
INSERT INTO "usage" VALUES(
'PROJ',
'NZGD2000_TO_ITRF97_USAGE',
'concatenated_operation',
'PROJ',
'NZGD2000_TO_ITRF97',
'EPSG','1175', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "concatenated_operation" VALUES('PROJ','NZGD2000_TO_ITRF2000','NZGD2000 to ITRF2000','Concatenation of PROJ:NZGD2000-20180701 and 9080','EPSG','4959','EPSG','7909',NULL,NULL,0);
INSERT INTO "concatenated_operation_step" VALUES('PROJ','NZGD2000_TO_ITRF2000',1,'PROJ','NZGD2000-20180701');
INSERT INTO "concatenated_operation_step" VALUES('PROJ','NZGD2000_TO_ITRF2000',2,'EPSG','9080');
INSERT INTO "usage" VALUES(
'PROJ',
'NZGD2000_TO_ITRF2000_USAGE',
'concatenated_operation',
'PROJ',
'NZGD2000_TO_ITRF2000',
'EPSG','1175', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "concatenated_operation" VALUES('PROJ','NZGD2000_TO_ITRF2005','NZGD2000 to ITRF2005','Concatenation of PROJ:NZGD2000-20180701 and 9081','EPSG','4959','EPSG','7910',NULL,NULL,0);
INSERT INTO "concatenated_operation_step" VALUES('PROJ','NZGD2000_TO_ITRF2005',1,'PROJ','NZGD2000-20180701');
INSERT INTO "concatenated_operation_step" VALUES('PROJ','NZGD2000_TO_ITRF2005',2,'EPSG','9081');
INSERT INTO "usage" VALUES(
'PROJ',
'NZGD2000_TO_ITRF2005_USAGE',
'concatenated_operation',
'PROJ',
'NZGD2000_TO_ITRF2005',
'EPSG','1175', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "concatenated_operation" VALUES('PROJ','NZGD2000_TO_ITRF2008','NZGD2000 to ITRF2008','Concatenation of PROJ:NZGD2000-20180701 and EPSG:9082','EPSG','4959','EPSG','7911',NULL,NULL,0);
INSERT INTO "concatenated_operation_step" VALUES('PROJ','NZGD2000_TO_ITRF2008',1,'PROJ','NZGD2000-20180701');
INSERT INTO "concatenated_operation_step" VALUES('PROJ','NZGD2000_TO_ITRF2008',2,'EPSG','9082');
INSERT INTO "usage" VALUES(
'PROJ',
'NZGD2000_TO_ITRF2008_USAGE',
'concatenated_operation',
'PROJ',
'NZGD2000_TO_ITRF2008',
'EPSG','1175', -- extent
'EPSG','1024' -- unknown
);
INSERT INTO "concatenated_operation" VALUES('PROJ','NZGD2000_TO_ITRF2014','NZGD2000 to ITRF2014','Concatenation of PROJ:NZGD2000-20180701 and EPSG:9083','EPSG','4959','EPSG','7912',NULL,NULL,0);
INSERT INTO "concatenated_operation_step" VALUES('PROJ','NZGD2000_TO_ITRF2014',1,'PROJ','NZGD2000-20180701');
INSERT INTO "concatenated_operation_step" VALUES('PROJ','NZGD2000_TO_ITRF2014',2,'EPSG','9083');
INSERT INTO "usage" VALUES(
'PROJ',
'NZGD2000_TO_ITRF2014_USAGE',
'concatenated_operation',
'PROJ',
'NZGD2000_TO_ITRF2014',
'EPSG','1175', -- extent
'EPSG','1024' -- unknown
);
+1 -1
View File
@@ -4,7 +4,7 @@ INSERT INTO "prime_meridian" VALUES('EPSG','8901','Greenwich',0.0,'EPSG','9102',
INSERT INTO "prime_meridian" VALUES('EPSG','8902','Lisbon',-9.0754862,'EPSG','9110',0);
INSERT INTO "prime_meridian" VALUES('EPSG','8903','Paris',2.5969213,'EPSG','9105',0);
INSERT INTO "prime_meridian" VALUES('EPSG','8904','Bogota',-74.04513,'EPSG','9110',0);
INSERT INTO "prime_meridian" VALUES('EPSG','8905','Madrid',-3.411658,'EPSG','9110',0);
INSERT INTO "prime_meridian" VALUES('EPSG','8905','Madrid',-3.411455,'EPSG','9110',0);
INSERT INTO "prime_meridian" VALUES('EPSG','8906','Rome',12.27084,'EPSG','9110',0);
INSERT INTO "prime_meridian" VALUES('EPSG','8907','Bern',7.26225,'EPSG','9110',0);
INSERT INTO "prime_meridian" VALUES('EPSG','8908','Jakarta',106.482779,'EPSG','9110',0);
File diff suppressed because it is too large. Load diff
+10713 -5066
View File
File diff suppressed because it is too large. Load diff
+256
View File
@@ -0,0 +1,256 @@
--- This file has been generated by scripts/build_db.py. DO NOT EDIT !
INSERT INTO "scope" VALUES('EPSG','1024','Not known.',0);
INSERT INTO "scope" VALUES('EPSG','1025','?',1);
INSERT INTO "scope" VALUES('EPSG','1026','Spatial referencing.',0);
INSERT INTO "scope" VALUES('EPSG','1027','Geodesy.',0);
INSERT INTO "scope" VALUES('EPSG','1028','Cadastre.',0);
INSERT INTO "scope" VALUES('EPSG','1029','Engineering survey.',0);
INSERT INTO "scope" VALUES('EPSG','1030','Example only (fictitious).',0);
INSERT INTO "scope" VALUES('EPSG','1031','Transformation of coordinates at 0.1m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1032','Transformation of coordinates at 0.2m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1033','Transformation of coordinates at 0.3m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1034','Transformation of coordinates at 0.4m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1035','Transformation of coordinates at 0.5m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1036','Transformation of coordinates at 0.6m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1037','Transformation of coordinates at 0.7m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1038','Transformation of coordinates at 0.8m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1039','Transformation of coordinates at 0.9m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1040','Polar research.',0);
INSERT INTO "scope" VALUES('EPSG','1041','Transformation of coordinates at 1m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1042','Transformation of coordinates at 2m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1043','Transformation of coordinates at 3m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1044','Transformation of coordinates at 4m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1045','Transformation of coordinates at 5m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1046','Atlas of Canada and nationwide web mapping applications.',0);
INSERT INTO "scope" VALUES('EPSG','1047','Remote sensing.',0);
INSERT INTO "scope" VALUES('EPSG','1048','Transformation of coordinates at 0.25m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1049','Transformation of coordinates at 9m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1050','Transformation of coordinates at 10m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1051','Approximation of horizontal component of official 3D RDNAPTRANS(TM) transformation, which since 1st October 2000 has defined Amersfoort geodetic datum.',0);
INSERT INTO "scope" VALUES('EPSG','1052','Basin-wide mapping and analysis.',0);
INSERT INTO "scope" VALUES('EPSG','1053','Boundary demarcation.',0);
INSERT INTO "scope" VALUES('EPSG','1054','Cadastre, engineering survey.',0);
INSERT INTO "scope" VALUES('EPSG','1055','Cadastre, engineering survey, topographic mapping (large scale).',0);
INSERT INTO "scope" VALUES('EPSG','1056','Cadastre, engineering survey, topographic mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1057','Cadastre, engineering survey, topographic mapping (medium scale).',0);
INSERT INTO "scope" VALUES('EPSG','1058','Change of coordinate epoch for points referenced to NAD83(CSRS)v6.',0);
INSERT INTO "scope" VALUES('EPSG','1059','Change of height to a different vertical reference surface.',0);
INSERT INTO "scope" VALUES('EPSG','1060','Change of depth to a different vertical reference surface.',0);
INSERT INTO "scope" VALUES('EPSG','1061','Cadastre, engineering survey, topographic mapping (1:5000 and larger scales).',0);
INSERT INTO "scope" VALUES('EPSG','1062','Topographic mapping (1:50,000).',0);
INSERT INTO "scope" VALUES('EPSG','1063','Topographic mapping (1:50,000) published between 1955 and 2000.',0);
INSERT INTO "scope" VALUES('EPSG','1064','Abu Dhabi Municipality GIS.',0);
INSERT INTO "scope" VALUES('EPSG','1065','Academic research, not officially adopted.',0);
INSERT INTO "scope" VALUES('EPSG','1066','Recommended by OSi and OSNI for all horizontal CTs in the Republic and Northern Ireland.',0);
INSERT INTO "scope" VALUES('EPSG','1067','Post-1996 data based on the classical geodetic network.',0);
INSERT INTO "scope" VALUES('EPSG','1068','Pre-1996 data related to the classical geodetic network.',0);
INSERT INTO "scope" VALUES('EPSG','1069','Adopted as official definition of OSGB36 from 2002 to August 2016. Accuracy by definition exact. Accuracy compared to triangulation coordinates 0.1m at 67% confidence level.',0);
INSERT INTO "scope" VALUES('EPSG','1070','Adopted as official definition of OSGB36 from August 2016. Accuracy by definition exact. Accuracy compared to triangulation coordinates 0.1m at 67% confidence level.',0);
INSERT INTO "scope" VALUES('EPSG','1071','Arctic small scale mapping - Alaska-centred.',0);
INSERT INTO "scope" VALUES('EPSG','1072','Arctic small scale mapping - Canada-centred.',0);
INSERT INTO "scope" VALUES('EPSG','1073','Arctic small scale mapping - Greenland-centred.',0);
INSERT INTO "scope" VALUES('EPSG','1074','Arctic small scale mapping - Norway-centred.',0);
INSERT INTO "scope" VALUES('EPSG','1075','Arctic small scale mapping - Russia-centred.',0);
INSERT INTO "scope" VALUES('EPSG','1076','Transformation of coordinates at 25m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1077','Transformation of coordinates at 30m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1078','Transformation of coordinates at 0.15m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1079','Transformation of coordinates at 0.05m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1080','Angola LNG project.',0);
INSERT INTO "scope" VALUES('EPSG','1081','Seismic survey.',0);
INSERT INTO "scope" VALUES('EPSG','1082','Approximate transformation of seismic data acquired before 1985 to CRS used post 1985.',0);
INSERT INTO "scope" VALUES('EPSG','1083','Approximation (to better than 2cm) using NTv2 method of results of FINELTRA programme concatenated with LV-95 parameters.',0);
INSERT INTO "scope" VALUES('EPSG','1084','Parameter values from CH1903+ to ETRS89 (tfm code 1647) and are used as an approximation from CH1903 with a lesser accuracy of 1.5m which equates to the magnitude of distortions in the CH1903 network.',0);
INSERT INTO "scope" VALUES('EPSG','1085','Approximation using NTv2 method of results of FINELTRA programme to an accuracy of 0.01m except at boundary of the Geneva and Vaud cantons, in city of Geneva and in the main valleys of Valais canton where differences are up to 20 cm.',0);
INSERT INTO "scope" VALUES('EPSG','1086','Approximation of horizontal component of official 3D RDNAPTRANS(TM) transformation, which since 1st October 2000 has defined Amersfoort geodetic datum.',0);
INSERT INTO "scope" VALUES('EPSG','1087','Approximation for pan-European small-scale mapping in extended ETRS89.',0);
INSERT INTO "scope" VALUES('EPSG','1088','Approximation for pan-European statistical analysis in extended ETRS89.',0);
INSERT INTO "scope" VALUES('EPSG','1089','Basis for topographic mapping in Republic of Ireland between 1965 and 1975; for scientific purposes only in Northern Ireland.',0);
INSERT INTO "scope" VALUES('EPSG','1090','Basis for topographic mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1091','Cadastre, topographic mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1092','Cadastre, engineering survey, topographic mapping (large and medium scale).',0);
INSERT INTO "scope" VALUES('EPSG','1093','Cadastre, engineering survey. Usage restricted to areas below 290m above sea level.',0);
INSERT INTO "scope" VALUES('EPSG','1094','Cadastre in Czechia.',0);
INSERT INTO "scope" VALUES('EPSG','1095','Cadastre in Slovakia.',0);
INSERT INTO "scope" VALUES('EPSG','1096','Cadastre, survey control and engineering survey in urban areas, typically in all municipalities that previously comprised the 73 Municipal Integrated Surveying and Mapping (MISAM) areas, also known as urban cadastral map areas. For rural areas use UTM.',0);
INSERT INTO "scope" VALUES('EPSG','1097','Cartography System of Distrito Federal (SICAD).',0);
INSERT INTO "scope" VALUES('EPSG','1098','Web mapping and visualisation.',0);
INSERT INTO "scope" VALUES('EPSG','1099','Change of height to a different vertical reference surface and unit.',0);
INSERT INTO "scope" VALUES('EPSG','1100','Change of prime meridian.',0);
INSERT INTO "scope" VALUES('EPSG','1101','Change of height or depth unit.',0);
INSERT INTO "scope" VALUES('EPSG','1102','Cadastre, engineering survey, civilian topographic mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1103','Coastal hydrography.',0);
INSERT INTO "scope" VALUES('EPSG','1104','Coastal hydrography, offshore oil and gas exploration and production.',0);
INSERT INTO "scope" VALUES('EPSG','1105','Coastal hydrography. Not used by oil industry.',0);
INSERT INTO "scope" VALUES('EPSG','1106','Construction of the Basic Spatial Unit (BSU) grid.',0);
INSERT INTO "scope" VALUES('EPSG','1107','Conformal mapping at scales of 1:500,000 and smaller.',0);
INSERT INTO "scope" VALUES('EPSG','1108','Transformation of GDA94 coordinates that have been derived through GNSS CORS.',0);
INSERT INTO "scope" VALUES('EPSG','1109','Data analysis and small scale data presentation for contiguous lower 48 states.',0);
INSERT INTO "scope" VALUES('EPSG','1110','US Defense Meteorological Satellite Program (DMSP) SSM/I microwave imagery products.',0);
INSERT INTO "scope" VALUES('EPSG','1111','Change of axis positive direction to facilitate transformation of heights or depths through concatenated operations.',0);
INSERT INTO "scope" VALUES('EPSG','1112','Convert degree representation.',1);
INSERT INTO "scope" VALUES('EPSG','1113','Defined as exact.',0);
INSERT INTO "scope" VALUES('EPSG','1114','Geodesy. Defined as exact for S-JTSK/05 (Ferro) / Modified Krovak projCRSs (CRS codes 5224-25).',0);
INSERT INTO "scope" VALUES('EPSG','1115','Geodesy. Defines the S-JTSK [JTSK03] realization.',0);
INSERT INTO "scope" VALUES('EPSG','1116','Geodesy. Defines ED50 in the Faroe Islands.',0);
INSERT INTO "scope" VALUES('EPSG','1117','Defines ellipsoidal coordinates of origin of topocentric CS.',0);
INSERT INTO "scope" VALUES('EPSG','1118','Defines geocentric coordinates of origin of topocentric CS.',0);
INSERT INTO "scope" VALUES('EPSG','1119','Geodesy. Defines ETRF89.',0);
INSERT INTO "scope" VALUES('EPSG','1120','Geodesy. Defines ETRF90.',0);
INSERT INTO "scope" VALUES('EPSG','1121','Geodesy. Defines ETRF91.',0);
INSERT INTO "scope" VALUES('EPSG','1122','Geodesy. Defines ETRF92.',0);
INSERT INTO "scope" VALUES('EPSG','1123','Geodesy. Defines ETRF93.',0);
INSERT INTO "scope" VALUES('EPSG','1124','Geodesy. Defines ETRF94.',0);
INSERT INTO "scope" VALUES('EPSG','1125','Geodesy. Defines ETRF96.',0);
INSERT INTO "scope" VALUES('EPSG','1126','Geodesy. Defines ETRF97.',0);
INSERT INTO "scope" VALUES('EPSG','1127','Geodesy. Defines ETRF2000.',0);
INSERT INTO "scope" VALUES('EPSG','1128','Geodesy. Defines ETRF2005.',0);
INSERT INTO "scope" VALUES('EPSG','1129','Geodesy. Defines ETRF2014.',0);
INSERT INTO "scope" VALUES('EPSG','1130','EEZ delimitation.',0);
INSERT INTO "scope" VALUES('EPSG','1131','Change of coordinate epoch for points referenced to NAD83(CSRS)v7.',0);
INSERT INTO "scope" VALUES('EPSG','1132','Derivation of approximate gravity-related heights from GNSS observations.',0);
INSERT INTO "scope" VALUES('EPSG','1133','Derivation of gravity-related heights from GNSS observations.',0);
INSERT INTO "scope" VALUES('EPSG','1134','Description of the use or purpose of the CRS.',0);
INSERT INTO "scope" VALUES('EPSG','1135','State-wide spatial data management.',0);
INSERT INTO "scope" VALUES('EPSG','1136','Oil and gas exploration and production.',0);
INSERT INTO "scope" VALUES('EPSG','1137','Emulation of polynomial.',0);
INSERT INTO "scope" VALUES('EPSG','1138','Engineering survey, harbour hydrography.',0);
INSERT INTO "scope" VALUES('EPSG','1139','Engineering survey and construction for Fehmarnbelt tunnel.',0);
INSERT INTO "scope" VALUES('EPSG','1140','Engineering survey for onshore facilities for South Pars phase 11 and Pars LNG.',0);
INSERT INTO "scope" VALUES('EPSG','1141','Engineering survey and topographic mapping for railway applications.',0);
INSERT INTO "scope" VALUES('EPSG','1142','Engineering survey, topographic mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1143','Engineering survey, GIS.',0);
INSERT INTO "scope" VALUES('EPSG','1144','Engineering survey, GIS, topographic mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1145','Engineering survey 2011 to 2015.',0);
INSERT INTO "scope" VALUES('EPSG','1146','Engineering survey including Airport and Ruperts Wharf construction.',0);
INSERT INTO "scope" VALUES('EPSG','1147','Engineering survey prior to 2016 including Airport and Ruperts Wharfe construction.',0);
INSERT INTO "scope" VALUES('EPSG','1148','Exploration and development, mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1149','Exploration and production operations in Brunei. Formerly also topographic mapping (large and medium scale) and engineering survey.',0);
INSERT INTO "scope" VALUES('EPSG','1150','Transformation of coordinates at 0.01m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1151','Transformation of coordinates at 1m to 2m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1152','Transformation of coordinates at 0.1m to 0.2m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1153','Topographic mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1154','Geocentric to geographic 3D conversions and vice versa.',0);
INSERT INTO "scope" VALUES('EPSG','1155','Geographic 3D to geographic 2D conversions.',0);
INSERT INTO "scope" VALUES('EPSG','1156','Height to depth or depth to height conversions.',0);
INSERT INTO "scope" VALUES('EPSG','1157','Low accuracy applications.',0);
INSERT INTO "scope" VALUES('EPSG','1158','Medium accuracy applications.',0);
INSERT INTO "scope" VALUES('EPSG','1159','Approximation for medium and low accuracy applications ignoring static/dynamic CRS differences.',0);
INSERT INTO "scope" VALUES('EPSG','1160','Military survey.',0);
INSERT INTO "scope" VALUES('EPSG','1161','Pan-European spatial positioning.',0);
INSERT INTO "scope" VALUES('EPSG','1162','Statistical analysis.',0);
INSERT INTO "scope" VALUES('EPSG','1163','Spatial referencing in zoned CRSs where zone boundaries are strictly enforced.',0);
INSERT INTO "scope" VALUES('EPSG','1164','Transformation of MRT68 RSO coordinates.',0);
INSERT INTO "scope" VALUES('EPSG','1165','Forestry.',0);
INSERT INTO "scope" VALUES('EPSG','1166','Geodesy. Defines NAD83(CSRS96).',0);
INSERT INTO "scope" VALUES('EPSG','1167','Geodesy. Defines NAD83(CSRS)v2.',0);
INSERT INTO "scope" VALUES('EPSG','1168','Geodesy. Defines NAD83(CSRS)v3.',0);
INSERT INTO "scope" VALUES('EPSG','1169','Geodesy. Defines NAD83(CSRS)v4.',0);
INSERT INTO "scope" VALUES('EPSG','1170','Geodesy. Defines NAD83(CSRS)v5.',0);
INSERT INTO "scope" VALUES('EPSG','1171','Geodesy. Defines NAD83(CSRS)v6.',0);
INSERT INTO "scope" VALUES('EPSG','1172','Geodesy. Defines NAD83(CSRS)v7.',0);
INSERT INTO "scope" VALUES('EPSG','1173','Geodesy. Defines NAD83(CORS96) from 1st January 1997 through 31st December 1999.',0);
INSERT INTO "scope" VALUES('EPSG','1174','Geodesy. Defines NAD83(CORS96) from January 2000 through December 2001.',0);
INSERT INTO "scope" VALUES('EPSG','1175','Geodesy. Defines NAD83(CORS96) from from 1st January 2002 through 6th September 2011.',0);
INSERT INTO "scope" VALUES('EPSG','1176','Geodesy. Navigation and positioning using GPS satellite system.',0);
INSERT INTO "scope" VALUES('EPSG','1177','Geodesy. Navigation and positioning using Glonass satellite system.',0);
INSERT INTO "scope" VALUES('EPSG','1178','Geodesy, engineering survey, topographic mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1179','Geodesy, engineering survey.',0);
INSERT INTO "scope" VALUES('EPSG','1180','Geodesy, topographic mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1181','Geodesy, cadastre, engineering survey, topographic mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1182','Geodesy; air, land and sea navigation and safety of life purposes.',0);
INSERT INTO "scope" VALUES('EPSG','1183','Horizontal component of 3D system.',0);
INSERT INTO "scope" VALUES('EPSG','1184','Geodesy, cadastre, engineering survey.',0);
INSERT INTO "scope" VALUES('EPSG','1185','Geodesy, cadastre.',0);
INSERT INTO "scope" VALUES('EPSG','1186','Geodesy, GIS.',0);
INSERT INTO "scope" VALUES('EPSG','1187','Geodesy, offshore minerals management.',0);
INSERT INTO "scope" VALUES('EPSG','1188','Geodesy, onshore minerals management.',0);
INSERT INTO "scope" VALUES('EPSG','1189','GIS.',0);
INSERT INTO "scope" VALUES('EPSG','1190','Geological analysis.',0);
INSERT INTO "scope" VALUES('EPSG','1191','Graticule coordinates expressed in simple Cartesian form.',0);
INSERT INTO "scope" VALUES('EPSG','1192','Graticule coordinates in rectangular Cartesian form.',0);
INSERT INTO "scope" VALUES('EPSG','1193','Geological analysis.',1);
INSERT INTO "scope" VALUES('EPSG','1194','Spatial referencing in and around city and county of San Francisco.',0);
INSERT INTO "scope" VALUES('EPSG','1195','Environmental science - used as basis for EASE grid.',0);
INSERT INTO "scope" VALUES('EPSG','1196','Highway engineering.',0);
INSERT INTO "scope" VALUES('EPSG','1197','Historic record only - now superseded - see remarks.',0);
INSERT INTO "scope" VALUES('EPSG','1198','Hydrography and nautical charting.',0);
INSERT INTO "scope" VALUES('EPSG','1199','Hydrography, drilling.',0);
INSERT INTO "scope" VALUES('EPSG','1200','Hydrography, drilling, marine geophysics.',0);
INSERT INTO "scope" VALUES('EPSG','1201','Hydrography, topographic mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1202','Hydrology.',0);
INSERT INTO "scope" VALUES('EPSG','1203','Intermediate stage in transformations - not used otherwise.',0);
INSERT INTO "scope" VALUES('EPSG','1204','Preliminary estimate.',0);
INSERT INTO "scope" VALUES('EPSG','1205','KOC exploration and field development subsurface work.',0);
INSERT INTO "scope" VALUES('EPSG','1206','KOC survey control and facilities engineering.',0);
INSERT INTO "scope" VALUES('EPSG','1207','Cadastre, topographic mapping (large scale).',0);
INSERT INTO "scope" VALUES('EPSG','1208','Engineering survey, topographic mapping (large scale).',0);
INSERT INTO "scope" VALUES('EPSG','1209','Topographic mapping (large scale).',0);
INSERT INTO "scope" VALUES('EPSG','1210','Topographic mapping (medium and small scale).',0);
INSERT INTO "scope" VALUES('EPSG','1211','Topographic mapping (medium scale).',0);
INSERT INTO "scope" VALUES('EPSG','1212','No official usage.',0);
INSERT INTO "scope" VALUES('EPSG','1213','Not a valid datum.',0);
INSERT INTO "scope" VALUES('EPSG','1214','Not recommended.',0);
INSERT INTO "scope" VALUES('EPSG','1215','Obsolete.',0);
INSERT INTO "scope" VALUES('EPSG','1216','Oil and gas exploration.',0);
INSERT INTO "scope" VALUES('EPSG','1217','Oil and gas exploration offshore.',0);
INSERT INTO "scope" VALUES('EPSG','1218','NNRMS 1:250,000 national resources database of coarse resolution earth observation imagery and mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1219','NNRMS National Spatial Framework (NSF) state resource database of medium resolution earth observation imagery and mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1220','Province-wide spatial data management.',0);
INSERT INTO "scope" VALUES('EPSG','1221','State-wide spatial data presentation requiring shape preservation.',0);
INSERT INTO "scope" VALUES('EPSG','1222','State-wide spatial data presentation requiring true area measurements.',0);
INSERT INTO "scope" VALUES('EPSG','1223','Very small scale equal-area mapping - Americas-centred.',0);
INSERT INTO "scope" VALUES('EPSG','1224','Very small scale equal-area mapping - Asia-Pacific-centred.',0);
INSERT INTO "scope" VALUES('EPSG','1225','Very small scale equal-area mapping - Europe-Africa-centred.',0);
INSERT INTO "scope" VALUES('EPSG','1226','Wellbore survey.',0);
INSERT INTO "scope" VALUES('EPSG','1227','Pan-European medium scale conformal mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1228','Very small scale conformal mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1229','Engineering design concept visualisation.',0);
INSERT INTO "scope" VALUES('EPSG','1230','User-defined CRS in GPS receiver.',0);
INSERT INTO "scope" VALUES('EPSG','1231','GeoNB Coordinate Transformation Service.',0);
INSERT INTO "scope" VALUES('EPSG','1232','GRANIT coordinate transformation programme between 1987 and 1997.',0);
INSERT INTO "scope" VALUES('EPSG','1233','US space and military operations.',0);
INSERT INTO "scope" VALUES('EPSG','1234','Transformation of GDA94 coordinates when localised distortion needs to be taken into account, e.g. if GDA94 coordinates were derived from survey control monuments.',0);
INSERT INTO "scope" VALUES('EPSG','1235','Approximation at the 0.01m level.',0);
INSERT INTO "scope" VALUES('EPSG','1236','Topographic mapping, environmental studies.',0);
INSERT INTO "scope" VALUES('EPSG','1237','Cadastre, hydrography, topographic mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1238','Territory-wide spatial data management.',0);
INSERT INTO "scope" VALUES('EPSG','1239','Temporary transformation pending introduction of bilinear interpolation gridded dataset.',0);
INSERT INTO "scope" VALUES('EPSG','1240','Spatial analysis for the purposes of Natural Capital Accounting.',0);
INSERT INTO "scope" VALUES('EPSG','1241','Topographic mapping (small scale).',0);
INSERT INTO "scope" VALUES('EPSG','1242','Topographic and geological mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1243','Hydrography and aeronautical charting.',0);
INSERT INTO "scope" VALUES('EPSG','1244','enter as appropriate: seismic data acquisition / processing / interpretation',0);
INSERT INTO "scope" VALUES('EPSG','1245','Satellite navigation.',0);
INSERT INTO "scope" VALUES('EPSG','1246','Regional studies.',0);
INSERT INTO "scope" VALUES('EPSG','1247','Oceanography.',0);
INSERT INTO "scope" VALUES('EPSG','1248','Municipal spatial referencing.',0);
INSERT INTO "scope" VALUES('EPSG','1249','Minerals management (including oil and gas exploration and production).',0);
INSERT INTO "scope" VALUES('EPSG','1250','Metrication of RSO grid.',0);
INSERT INTO "scope" VALUES('EPSG','1251','Marine navigation.',0);
INSERT INTO "scope" VALUES('EPSG','1252','(null/copy) Approximation for medium and low accuracy applications assuming equality between plate-fixed static and earth-fixed dynamic CRSs, ignoring static/dynamic CRS differences.',0);
INSERT INTO "scope" VALUES('EPSG','1253','Approximation at the 1m level.',0);
INSERT INTO "scope" VALUES('EPSG','1254','Antarctic Digital Database and small scale topographic mapping.',0);
INSERT INTO "scope" VALUES('EPSG','1255','Transformation of coordinates at 0.02m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1256','Transformation of coordinates at accuracy of about 1 part in 10^5 of distance between points, depending on relative tectonic motion.',0);
INSERT INTO "scope" VALUES('EPSG','1257','Transformation of coordinates obtained independently of the classical geodetic network (GPS observations conducted after 1994).',0);
INSERT INTO "scope" VALUES('EPSG','1258','Products and services through the BEV Geoportal.',0);
INSERT INTO "scope" VALUES('EPSG','1259','Statistical mapping (small scale).',0);
INSERT INTO "scope" VALUES('EPSG','1260','Engineering survey for HS2 project phases 1 and 2a.',0);
INSERT INTO "scope" VALUES('EPSG','1261','Geodesy (gravity).',0);
INSERT INTO "scope" VALUES('EPSG','1262','Geodesy (GNSS), oceanography.',0);
INSERT INTO "scope" VALUES('EPSG','1263','Cadastre, engineering surveying applications over distances up to 10km.',0);
INSERT INTO "scope" VALUES('EPSG','1264','Geodesy, hydrography, transfer of accurate heights over distances greater than 10km.',0);
INSERT INTO "scope" VALUES('EPSG','1265','Hydrography, drilling, offshore engineering.',0);
INSERT INTO "scope" VALUES('EPSG','1266','Engineering survey, topographic mapping (large and medium scale).',0);
INSERT INTO "scope" VALUES('EPSG','1267','Location-based services, Intelligent Transport Services, navigation, positioning.',0);
INSERT INTO "scope" VALUES('EPSG','1268','Geodesy, location based services, intelligent transport services.',0);
INSERT INTO "scope" VALUES('EPSG','1269','Intermediate CRS in transformation to and from projected CRS.',0);
INSERT INTO "scope" VALUES('EPSG','1270','Reversible geoid model transformation.',0);
INSERT INTO "scope" VALUES('EPSG','1271','Engineering survey and mapping for the Trans-Europe Lyon-Turin (TELT) railway project.',0);
INSERT INTO "scope" VALUES('EPSG','1272','Reversible hydroid model transformation.',0);
INSERT INTO "scope" VALUES('EPSG','1273','Transformation of coordinates at 0.03m level of accuracy.',0);
INSERT INTO "scope" VALUES('EPSG','1274','Spatial referencing including water resource management.',0);
INSERT INTO "scope" VALUES('EPSG','1275','Alignment of datasets referenced to WGS 84 which have been derived from GDA2020 via the null transformation EPSG::8450 with GDA94 datasets.',0);
INSERT INTO "scope" VALUES('EPSG','1276','Alignment of datasets referenced to WGS 84 which have been derived from GDA94 via the null transformation EPSG::1150 with GDA2020 datasets.',0);
INSERT INTO "scope" VALUES('EPSG','1277','Derivation of depths from GNSS observations.',0);
+254 -200
View File
@@ -1,202 +1,256 @@
--- This file has been generated by scripts/build_db.py. DO NOT EDIT !
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1112','helmert_transformation','EPSG','1672','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1154','helmert_transformation','EPSG','1304','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1232','helmert_transformation','EPSG','1305','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1236','helmert_transformation','EPSG','1280','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1236','helmert_transformation','EPSG','1669','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1297','helmert_transformation','EPSG','1298','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1297','helmert_transformation','EPSG','1299','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1297','helmert_transformation','EPSG','1300','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1297','helmert_transformation','EPSG','1301','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1320','helmert_transformation','EPSG','1326','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1321','helmert_transformation','EPSG','1324','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1322','helmert_transformation','EPSG','1324','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1324','helmert_transformation','EPSG','1327','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1325','helmert_transformation','EPSG','1327','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1330','helmert_transformation','EPSG','1557','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1437','helmert_transformation','EPSG','1895','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1451','grid_transformation','EPSG','1575','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1459','helmert_transformation','EPSG','1594','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1464','grid_transformation','EPSG','1596','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1506','grid_transformation','EPSG','1803','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1507','grid_transformation','EPSG','1803','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1559','grid_transformation','EPSG','1593','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1593','grid_transformation','EPSG','1804','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1596','grid_transformation','EPSG','1803','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1655','helmert_transformation','EPSG','1997','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1657','helmert_transformation','EPSG','1992','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1674','helmert_transformation','EPSG','1775','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1680','helmert_transformation','EPSG','1896','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1683','helmert_transformation','EPSG','1684','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1683','helmert_transformation','EPSG','1685','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1683','helmert_transformation','EPSG','1686','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1683','helmert_transformation','EPSG','1687','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1807','helmert_transformation','EPSG','1808','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1900','helmert_transformation','EPSG','1901','EPSG');
INSERT INTO "supersession" VALUES('concatenated_operation','EPSG','8047','concatenated_operation','EPSG','8569','EPSG');
INSERT INTO "supersession" VALUES('concatenated_operation','EPSG','8047','helmert_transformation','EPSG','1612','EPSG');
INSERT INTO "supersession" VALUES('concatenated_operation','EPSG','8569','helmert_transformation','EPSG','1612','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1638','helmert_transformation','EPSG','10098','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1639','helmert_transformation','EPSG','10099','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1751','helmert_transformation','EPSG','15739','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1066','helmert_transformation','EPSG','15740','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','15781','grid_transformation','EPSG','10084','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15791','helmert_transformation','EPSG','1330','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15817','helmert_transformation','EPSG','15818','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15852','grid_transformation','EPSG','15851','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15853','grid_transformation','EPSG','15851','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15854','grid_transformation','EPSG','15851','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15856','grid_transformation','EPSG','15851','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1309','helmert_transformation','EPSG','1776','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1673','helmert_transformation','EPSG','1777','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1753','helmert_transformation','EPSG','1766','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','15895','grid_transformation','EPSG','15932','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','15907','grid_transformation','EPSG','15933','EPSG');
INSERT INTO "supersession" VALUES('concatenated_operation','EPSG','8581','helmert_transformation','EPSG','1439','EPSG');
INSERT INTO "supersession" VALUES('concatenated_operation','EPSG','8657','helmert_transformation','EPSG','15846','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1672','helmert_transformation','EPSG','15934','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1829','helmert_transformation','EPSG','1449','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1830','helmert_transformation','EPSG','1448','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1831','helmert_transformation','EPSG','1242','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15993','helmert_transformation','EPSG','15994','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1656','helmert_transformation','EPSG','1988','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1658','helmert_transformation','EPSG','1987','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1928','helmert_transformation','EPSG','15901','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15783','helmert_transformation','EPSG','15901','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1917','helmert_transformation','EPSG','15902','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1927','helmert_transformation','EPSG','15902','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1962','helmert_transformation','EPSG','15903','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1963','helmert_transformation','EPSG','15903','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','3972','helmert_transformation','EPSG','4834','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10092','helmert_transformation','EPSG','5051','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1992','helmert_transformation','EPSG','5037','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1281','helmert_transformation','EPSG','5043','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1267','helmert_transformation','EPSG','5044','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1997','helmert_transformation','EPSG','5038','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1550','helmert_transformation','EPSG','5061','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1551','helmert_transformation','EPSG','5061','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1552','helmert_transformation','EPSG','5061','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15710','helmert_transformation','EPSG','5053','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15711','helmert_transformation','EPSG','5051','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15712','helmert_transformation','EPSG','5055','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10091','helmert_transformation','EPSG','5055','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10089','helmert_transformation','EPSG','5051','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10090','helmert_transformation','EPSG','5053','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15872','helmert_transformation','EPSG','5078','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1642','helmert_transformation','EPSG','5485','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1643','helmert_transformation','EPSG','5486','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15754','helmert_transformation','EPSG','5055','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15754','helmert_transformation','EPSG','5053','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15754','helmert_transformation','EPSG','5051','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10093','helmert_transformation','EPSG','5055','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10093','helmert_transformation','EPSG','5053','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10093','helmert_transformation','EPSG','5051','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1079','helmert_transformation','EPSG','5484','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1078','helmert_transformation','EPSG','5483','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10082','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1108','helmert_transformation','EPSG','6905','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10081','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10078','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10039','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10040','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10041','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10042','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10043','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','6392','helmert_transformation','EPSG','6279','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1121','helmert_transformation','EPSG','6906','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10083','grid_transformation','EPSG','5657','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','6315','helmert_transformation','EPSG','6278','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','6313','helmert_transformation','EPSG','6280','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1256','helmert_transformation','EPSG','6908','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1951','helmert_transformation','EPSG','6909','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','5662','helmert_transformation','EPSG','6939','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15938','helmert_transformation','EPSG','6998','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10000','grid_transformation','EPSG','8271','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15800','helmert_transformation','EPSG','6907','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15897','helmert_transformation','EPSG','6895','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1868','helmert_transformation','EPSG','6976','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1868','helmert_transformation','EPSG','6975','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1868','helmert_transformation','EPSG','6974','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1203','helmert_transformation','EPSG','6971','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1204','helmert_transformation','EPSG','6973','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10063','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10037','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10064','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10066','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10067','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10068','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10069','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5334','grid_transformation','EPSG','7718','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5335','grid_transformation','EPSG','7719','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10001','grid_transformation','EPSG','8271','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10058','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10059','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10060','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10061','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10062','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1646','grid_transformation','EPSG','7674','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10034','grid_transformation','EPSG','7713','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10070','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10031','grid_transformation','EPSG','7713','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10030','grid_transformation','EPSG','7713','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10026','grid_transformation','EPSG','7713','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10071','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10025','grid_transformation','EPSG','7713','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10024','grid_transformation','EPSG','7713','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10072','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10033','grid_transformation','EPSG','7715','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10032','grid_transformation','EPSG','7716','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10021','grid_transformation','EPSG','7711','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10029','grid_transformation','EPSG','7712','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1766','grid_transformation','EPSG','7788','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10027','grid_transformation','EPSG','7714','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10023','grid_transformation','EPSG','7717','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10002','grid_transformation','EPSG','8272','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10073','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10038','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10074','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10035','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10044','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10045','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10046','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10047','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10048','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10049','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10050','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10051','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10052','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10053','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10036','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10054','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10055','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10056','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10057','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10075','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10076','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5338','grid_transformation','EPSG','7709','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5339','grid_transformation','EPSG','7710','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10077','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10079','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10080','grid_transformation','EPSG','5656','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10003','grid_transformation','EPSG','8272','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1923','helmert_transformation','EPSG','8270','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','4829','concatenated_operation','EPSG','8443','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','4827','concatenated_operation','EPSG','8443','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','4827','concatenated_operation','EPSG','8442','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','4829','concatenated_operation','EPSG','8442','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5504','grid_transformation','EPSG','9135','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5502','grid_transformation','EPSG','9136','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','8371','grid_transformation','EPSG','8885','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','3917','helmert_transformation','EPSG','8688','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','3915','helmert_transformation','EPSG','8688','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','3916','helmert_transformation','EPSG','8689','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','3914','helmert_transformation','EPSG','8689','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5506','grid_transformation','EPSG','9134','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5503','grid_transformation','EPSG','9133','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5505','grid_transformation','EPSG','9188','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5508','grid_transformation','EPSG','9187','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9137','grid_transformation','EPSG','9228','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','6326','grid_transformation','EPSG','9229','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7646','grid_transformation','EPSG','9230','EPSG');
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7647','grid_transformation','EPSG','9231','EPSG');
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1112','helmert_transformation','EPSG','1672','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1154','helmert_transformation','EPSG','1304','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1232','helmert_transformation','EPSG','1305','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1236','helmert_transformation','EPSG','1280','EPSG',0);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1236','helmert_transformation','EPSG','1669','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1297','helmert_transformation','EPSG','1298','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1297','helmert_transformation','EPSG','1299','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1297','helmert_transformation','EPSG','1300','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1297','helmert_transformation','EPSG','1301','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1320','helmert_transformation','EPSG','1326','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1321','helmert_transformation','EPSG','1324','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1322','helmert_transformation','EPSG','1324','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1324','helmert_transformation','EPSG','1327','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1325','helmert_transformation','EPSG','1327','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1330','helmert_transformation','EPSG','1557','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1437','helmert_transformation','EPSG','1895','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1451','grid_transformation','EPSG','1575','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1459','helmert_transformation','EPSG','1594','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1464','grid_transformation','EPSG','1596','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1506','grid_transformation','EPSG','1803','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1507','grid_transformation','EPSG','1803','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1559','grid_transformation','EPSG','1593','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1593','grid_transformation','EPSG','1804','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','1596','grid_transformation','EPSG','1803','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1655','helmert_transformation','EPSG','1997','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1657','helmert_transformation','EPSG','1992','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1674','helmert_transformation','EPSG','1775','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1680','helmert_transformation','EPSG','1896','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1683','helmert_transformation','EPSG','1684','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1683','helmert_transformation','EPSG','1685','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1683','helmert_transformation','EPSG','1686','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1683','helmert_transformation','EPSG','1687','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1807','helmert_transformation','EPSG','1808','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1900','helmert_transformation','EPSG','1901','EPSG',1);
INSERT INTO "supersession" VALUES('concatenated_operation','EPSG','8047','concatenated_operation','EPSG','8569','EPSG',1);
INSERT INTO "supersession" VALUES('concatenated_operation','EPSG','8047','helmert_transformation','EPSG','1612','EPSG',1);
INSERT INTO "supersession" VALUES('concatenated_operation','EPSG','8569','helmert_transformation','EPSG','1612','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1638','helmert_transformation','EPSG','10098','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1639','helmert_transformation','EPSG','10099','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1751','helmert_transformation','EPSG','15739','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1066','helmert_transformation','EPSG','15740','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','15781','grid_transformation','EPSG','10084','EPSG',0);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15791','helmert_transformation','EPSG','1330','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15817','helmert_transformation','EPSG','15818','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15852','grid_transformation','EPSG','15851','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15853','grid_transformation','EPSG','15851','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15854','grid_transformation','EPSG','15851','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15856','grid_transformation','EPSG','15851','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1309','helmert_transformation','EPSG','1776','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1673','helmert_transformation','EPSG','1777','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1753','helmert_transformation','EPSG','1766','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','15895','grid_transformation','EPSG','15932','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','15907','grid_transformation','EPSG','15933','EPSG',1);
INSERT INTO "supersession" VALUES('concatenated_operation','EPSG','8581','helmert_transformation','EPSG','1439','EPSG',1);
INSERT INTO "supersession" VALUES('concatenated_operation','EPSG','8657','helmert_transformation','EPSG','15846','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1672','helmert_transformation','EPSG','15934','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1829','helmert_transformation','EPSG','1449','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1830','helmert_transformation','EPSG','1448','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1831','helmert_transformation','EPSG','1242','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15993','helmert_transformation','EPSG','15994','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1656','helmert_transformation','EPSG','1988','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1658','helmert_transformation','EPSG','1987','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1928','helmert_transformation','EPSG','15901','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15783','helmert_transformation','EPSG','15901','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1917','helmert_transformation','EPSG','15902','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1927','helmert_transformation','EPSG','15902','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1962','helmert_transformation','EPSG','15903','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1963','helmert_transformation','EPSG','15903','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','3972','helmert_transformation','EPSG','4834','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10092','helmert_transformation','EPSG','5051','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1992','helmert_transformation','EPSG','5037','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1281','helmert_transformation','EPSG','5043','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1267','helmert_transformation','EPSG','5044','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1997','helmert_transformation','EPSG','5038','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1550','helmert_transformation','EPSG','5061','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1551','helmert_transformation','EPSG','5061','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1552','helmert_transformation','EPSG','5061','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15710','helmert_transformation','EPSG','5053','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15711','helmert_transformation','EPSG','5051','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15712','helmert_transformation','EPSG','5055','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10091','helmert_transformation','EPSG','5055','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10089','helmert_transformation','EPSG','5051','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10090','helmert_transformation','EPSG','5053','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15872','helmert_transformation','EPSG','5078','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1642','helmert_transformation','EPSG','5485','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1643','helmert_transformation','EPSG','5486','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15754','helmert_transformation','EPSG','5055','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15754','helmert_transformation','EPSG','5053','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15754','helmert_transformation','EPSG','5051','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10093','helmert_transformation','EPSG','5055','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10093','helmert_transformation','EPSG','5053','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','10093','helmert_transformation','EPSG','5051','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1079','helmert_transformation','EPSG','5484','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1078','helmert_transformation','EPSG','5483','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10082','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1108','helmert_transformation','EPSG','6905','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10081','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10078','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10039','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10040','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10041','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10042','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10043','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','6392','helmert_transformation','EPSG','6279','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1121','helmert_transformation','EPSG','6906','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10083','grid_transformation','EPSG','5657','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','6315','helmert_transformation','EPSG','6278','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','6313','helmert_transformation','EPSG','6280','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1256','helmert_transformation','EPSG','6908','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1951','helmert_transformation','EPSG','6909','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','5662','helmert_transformation','EPSG','6939','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15938','helmert_transformation','EPSG','6998','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10000','grid_transformation','EPSG','8371','EPSG',0);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15800','helmert_transformation','EPSG','6907','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15897','helmert_transformation','EPSG','6895','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1868','helmert_transformation','EPSG','6976','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1868','helmert_transformation','EPSG','6975','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1868','helmert_transformation','EPSG','6974','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1203','helmert_transformation','EPSG','6971','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1204','helmert_transformation','EPSG','6973','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10063','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10037','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10064','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10066','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10067','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10068','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10069','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5334','grid_transformation','EPSG','7958','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5335','grid_transformation','EPSG','7959','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10001','grid_transformation','EPSG','8371','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10058','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10059','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10060','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10061','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10062','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1646','grid_transformation','EPSG','7674','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10034','grid_transformation','EPSG','7713','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10070','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10031','grid_transformation','EPSG','7713','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10030','grid_transformation','EPSG','7713','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10026','grid_transformation','EPSG','7713','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10071','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10025','grid_transformation','EPSG','7713','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10024','grid_transformation','EPSG','7713','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10072','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10033','grid_transformation','EPSG','7715','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10032','grid_transformation','EPSG','7716','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10021','grid_transformation','EPSG','7711','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10029','grid_transformation','EPSG','7712','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1766','grid_transformation','EPSG','7788','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10027','grid_transformation','EPSG','7714','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10023','grid_transformation','EPSG','7717','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10002','grid_transformation','EPSG','8372','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10073','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10038','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10074','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10035','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10044','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10045','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10046','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10047','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10048','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10049','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10050','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10051','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10052','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10053','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10036','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10054','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10055','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10056','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10057','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10075','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10076','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5338','grid_transformation','EPSG','7709','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5339','grid_transformation','EPSG','7710','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10077','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10079','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10080','grid_transformation','EPSG','5656','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10003','grid_transformation','EPSG','8372','EPSG',0);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1923','helmert_transformation','EPSG','8270','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','4829','concatenated_operation','EPSG','8443','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','4827','concatenated_operation','EPSG','8443','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','4827','concatenated_operation','EPSG','8442','EPSG',0);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','4829','concatenated_operation','EPSG','8442','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5504','grid_transformation','EPSG','9135','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5502','grid_transformation','EPSG','9136','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','8371','grid_transformation','EPSG','8885','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','3917','helmert_transformation','EPSG','8688','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','3915','helmert_transformation','EPSG','8688','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','3916','helmert_transformation','EPSG','8689','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','3914','helmert_transformation','EPSG','8689','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5506','grid_transformation','EPSG','9134','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5503','grid_transformation','EPSG','9133','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5505','grid_transformation','EPSG','9188','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5508','grid_transformation','EPSG','9187','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9137','grid_transformation','EPSG','9228','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','6326','grid_transformation','EPSG','9229','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7646','grid_transformation','EPSG','9230','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7647','grid_transformation','EPSG','9231','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15739','helmert_transformation','EPSG','4830','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15740','helmert_transformation','EPSG','4831','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','4831','helmert_transformation','EPSG','9281','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','4830','helmert_transformation','EPSG','9281','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7000','grid_transformation','EPSG','9282','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5657','grid_transformation','EPSG','8451','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7860','grid_transformation','EPSG','9312','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','4459','grid_transformation','EPSG','9325','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7840','grid_transformation','EPSG','9326','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7861','grid_transformation','EPSG','9313','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7872','grid_transformation','EPSG','9324','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7871','grid_transformation','EPSG','9323','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7870','grid_transformation','EPSG','9322','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7869','grid_transformation','EPSG','9321','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7868','grid_transformation','EPSG','9320','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7867','grid_transformation','EPSG','9319','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7866','grid_transformation','EPSG','9318','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7865','grid_transformation','EPSG','9317','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7864','grid_transformation','EPSG','9316','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7863','grid_transformation','EPSG','9315','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7862','grid_transformation','EPSG','9314','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','5656','grid_transformation','EPSG','8451','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9170','grid_transformation','EPSG','7650','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9124','grid_transformation','EPSG','9125','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9246','grid_transformation','EPSG','9247','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10084','grid_transformation','EPSG','3859','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9171','grid_transformation','EPSG','7648','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','8268','grid_transformation','EPSG','8269','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9160','grid_transformation','EPSG','9168','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9161','grid_transformation','EPSG','9168','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9162','grid_transformation','EPSG','9168','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9163','grid_transformation','EPSG','9168','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9164','grid_transformation','EPSG','9168','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9165','grid_transformation','EPSG','9168','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9166','grid_transformation','EPSG','9168','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9167','grid_transformation','EPSG','9168','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9173','grid_transformation','EPSG','6326','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9174','grid_transformation','EPSG','6327','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9172','grid_transformation','EPSG','7649','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9175','grid_transformation','EPSG','7646','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9176','grid_transformation','EPSG','7647','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10084','grid_transformation','EPSG','3858','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9168','grid_transformation','EPSG','9173','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9169','grid_transformation','EPSG','9174','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','15932','grid_transformation','EPSG','9409','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','15932','grid_transformation','EPSG','9408','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','7675','helmert_transformation','EPSG','9495','EPSG',0);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','7676','helmert_transformation','EPSG','9486','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15779','helmert_transformation','EPSG','9679','EPSG',1);
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1458','helmert_transformation','EPSG','5827','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','8885','grid_transformation','EPSG','9786','EPSG',0);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9786','grid_transformation','EPSG','9876','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9787','grid_transformation','EPSG','9877','EPSG',1);
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9638','grid_transformation','EPSG','9787','EPSG',0);
+95 -95
View File
@@ -1,97 +1,97 @@
--- This file has been generated by scripts/build_db.py. DO NOT EDIT !
INSERT INTO "unit_of_measure" VALUES('EPSG','1024','bin','scale',1.0,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1025','millimetre','length',0.001,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1026','metre per second','length',1.0,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1027','millimetres per year','length',3.16887651727314875889e-11,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1028','parts per billion','scale',1.0e-09,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1029','year','time',31556925.445,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1030','parts per billion per year','scale',3.16887651727314834646e-17,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1031','milliarc-second','angle',4.84813681109535528357e-09,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1032','milliarc-seconds per year','angle',1.53631468932075975278e-16,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1033','centimetre','length',0.01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1034','centimetres per year','length',3.1688765172731483714e-10,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1035','radian per second','angle',1.0,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1036','unity per second','scale',1.0,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1040','second','time',1.0,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1041','parts per million per year','scale',3.1688765172731486173e-14,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1042','metres per year','length',3.16887651727314861947e-08,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1043','arc-seconds per year','angle',1.53631468932075975646e-13,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9001','metre','length',1.0,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9002','foot','length',0.3048,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9003','US survey foot','length',3.04800609601219241184e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9005','Clarke''s foot','length',0.3047972654,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9014','fathom','length',1.8288,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9030','nautical mile','length',1852.0,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9031','German legal metre','length',1.0000135965,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9033','US survey chain','length',2.01168402336804703618e+01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9034','US survey link','length',2.0116840233680469141e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9035','US survey mile','length',1.60934721869443751532e+03,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9036','kilometre','length',1000.0,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9037','Clarke''s yard','length',0.9143917962,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9038','Clarke''s chain','length',20.1166195164,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9039','Clarke''s link','length',0.201166195164,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9040','British yard (Sears 1922)','length',9.14398414616028665236e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9041','British foot (Sears 1922)','length',3.04799471538676203241e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9042','British chain (Sears 1922)','length',2.01167651215526319683e+01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9043','British link (Sears 1922)','length',2.01167651215526294139e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9050','British yard (Benoit 1895 A)','length',0.9143992,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9051','British foot (Benoit 1895 A)','length',3.04799733333333322526e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9052','British chain (Benoit 1895 A)','length',20.1167824,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9053','British link (Benoit 1895 A)','length',0.201167824,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9060','British yard (Benoit 1895 B)','length',9.14399204289812361778e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9061','British foot (Benoit 1895 B)','length',3.04799734763270768755e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9062','British chain (Benoit 1895 B)','length',2.01167824943758724023e+01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9063','British link (Benoit 1895 B)','length',2.01167824943758705158e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9070','British foot (1865)','length',3.04800833333333354158e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9080','Indian foot','length',3.04799510248146943158e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9081','Indian foot (1937)','length',0.30479841,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9082','Indian foot (1962)','length',0.3047996,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9083','Indian foot (1975)','length',0.3047995,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9084','Indian yard','length',9.14398530744440773965e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9085','Indian yard (1937)','length',0.91439523,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9086','Indian yard (1962)','length',0.9143988,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9087','Indian yard (1975)','length',0.9143985,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9093','Statute mile','length',1609.344,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9094','Gold Coast foot','length',3.04799710181508809458e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9095','British foot (1936)','length',0.3048007491,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9096','yard','length',0.9144,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9097','chain','length',20.1168,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9098','link','length',0.201168,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9099','British yard (Sears 1922 truncated)','length',0.914398,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9101','radian','angle',1.0,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9102','degree','angle',1.74532925199432781271e-02,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9103','arc-minute','angle',2.90888208665721309346e-04,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9104','arc-second','angle',4.84813681109535476055e-06,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9105','grad','angle',1.57079632679489496205e-02,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9106','gon','angle',1.57079632679489496205e-02,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9107','degree minute second','angle',NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9108','degree minute second hemisphere','angle',NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9109','microradian','angle',1.0e-06,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9110','sexagesimal DMS','angle',NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9111','sexagesimal DM','angle',NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9112','centesimal minute','angle',1.57079632679489491868e-04,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9113','centesimal second','angle',1.57079632679489496951e-06,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9114','mil_6400','angle',9.81747704246809351283e-04,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9115','degree minute','angle',NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9116','degree hemisphere','angle',NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9117','hemisphere degree','angle',NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9118','degree minute hemisphere','angle',NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9119','hemisphere degree minute','angle',NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9120','hemisphere degree minute second','angle',NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9121','sexagesimal DMS.s','angle',NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9122','degree (supplier to define representation)','angle',1.74532925199432781271e-02,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9201','unity','scale',1.0,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9202','parts per million','scale',1.0e-06,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9203','coefficient','scale',1.0,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9204','Bin width 330 US survey feet','length',1.00584201168402344707e+02,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9205','Bin width 165 US survey feet','length',5.02921005842011723538e+01,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9206','Bin width 82.5 US survey feet','length',2.51460502921005861769e+01,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9207','Bin width 37.5 metres','length',37.5,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9208','Bin width 25 metres','length',25.0,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9209','Bin width 12.5 metres','length',12.5,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9210','Bin width 6.25 metres','length',6.25,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9211','Bin width 3.125 metres','length',3.125,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9300','British foot (Sears 1922 truncated)','length',3.04799333333333366535e-01,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9301','British chain (Sears 1922 truncated)','length',20.116756,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9302','British link (Sears 1922 truncated)','length',0.20116756,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1024','(bin)','scale',1.0,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1025','millimetre','length',0.001,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1026','metre per second','length',1.0,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1027','millimetres per year','length',3.16887651727314875889e-11,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1028','parts per billion','scale',1.0e-09,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1029','year','time',31556925.445,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1030','parts per billion per year','scale',3.16887651727314834646e-17,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1031','milliarc-second','angle',4.84813681109535528357e-09,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1032','milliarc-seconds per year','angle',1.53631468932075975278e-16,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1033','centimetre','length',0.01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1034','centimetres per year','length',3.1688765172731483714e-10,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1035','radian per second','angle',1.0,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1036','unity per second','scale',1.0,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1040','second','time',1.0,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1041','parts per million per year','scale',3.1688765172731486173e-14,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1042','metres per year','length',3.16887651727314861947e-08,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','1043','arc-seconds per year','angle',1.53631468932075975646e-13,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9001','metre','length',1.0,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9002','foot','length',0.3048,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9003','US survey foot','length',3.04800609601219241184e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9005','Clarke''s foot','length',0.3047972654,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9014','fathom','length',1.8288,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9030','nautical mile','length',1852.0,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9031','German legal metre','length',1.0000135965,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9033','US survey chain','length',2.01168402336804703618e+01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9034','US survey link','length',2.0116840233680469141e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9035','US survey mile','length',1.60934721869443751532e+03,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9036','kilometre','length',1000.0,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9037','Clarke''s yard','length',0.9143917962,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9038','Clarke''s chain','length',20.1166195164,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9039','Clarke''s link','length',0.201166195164,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9040','British yard (Sears 1922)','length',9.14398414616028665236e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9041','British foot (Sears 1922)','length',3.04799471538676203241e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9042','British chain (Sears 1922)','length',2.01167651215526319683e+01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9043','British link (Sears 1922)','length',2.01167651215526294139e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9050','British yard (Benoit 1895 A)','length',0.9143992,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9051','British foot (Benoit 1895 A)','length',3.04799733333333322526e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9052','British chain (Benoit 1895 A)','length',20.1167824,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9053','British link (Benoit 1895 A)','length',0.201167824,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9060','British yard (Benoit 1895 B)','length',9.14399204289812361778e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9061','British foot (Benoit 1895 B)','length',3.04799734763270768755e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9062','British chain (Benoit 1895 B)','length',2.01167824943758724023e+01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9063','British link (Benoit 1895 B)','length',2.01167824943758705158e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9070','British foot (1865)','length',3.04800833333333354158e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9080','Indian foot','length',3.04799510248146943158e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9081','Indian foot (1937)','length',0.30479841,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9082','Indian foot (1962)','length',0.3047996,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9083','Indian foot (1975)','length',0.3047995,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9084','Indian yard','length',9.14398530744440773965e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9085','Indian yard (1937)','length',0.91439523,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9086','Indian yard (1962)','length',0.9143988,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9087','Indian yard (1975)','length',0.9143985,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9093','Statute mile','length',1609.344,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9094','Gold Coast foot','length',3.04799710181508809458e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9095','British foot (1936)','length',0.3048007491,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9096','yard','length',0.9144,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9097','chain','length',20.1168,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9098','link','length',0.201168,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9099','British yard (Sears 1922 truncated)','length',0.914398,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9101','radian','angle',1.0,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9102','degree','angle',1.74532925199432781271e-02,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9103','arc-minute','angle',2.90888208665721309346e-04,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9104','arc-second','angle',4.84813681109535476055e-06,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9105','grad','angle',1.57079632679489496205e-02,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9106','gon','angle',1.57079632679489496205e-02,NULL,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9107','degree minute second','angle',NULL,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9108','degree minute second hemisphere','angle',NULL,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9109','microradian','angle',1.0e-06,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9110','sexagesimal DMS','angle',NULL,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9111','sexagesimal DM','angle',NULL,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9112','centesimal minute','angle',1.57079632679489491868e-04,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9113','centesimal second','angle',1.57079632679489496951e-06,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9114','mil_6400','angle',9.81747704246809351283e-04,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9115','degree minute','angle',NULL,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9116','degree hemisphere','angle',NULL,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9117','hemisphere degree','angle',NULL,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9118','degree minute hemisphere','angle',NULL,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9119','hemisphere degree minute','angle',NULL,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9120','hemisphere degree minute second','angle',NULL,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9121','sexagesimal DMS.s','angle',NULL,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9122','degree (supplier to define representation)','angle',1.74532925199432781271e-02,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9201','unity','scale',1.0,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9202','parts per million','scale',1.0e-06,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9203','coefficient','scale',1.0,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9204','Bin width 330 US survey feet','length',1.00584201168402344707e+02,NULL,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9205','Bin width 165 US survey feet','length',5.02921005842011723538e+01,NULL,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9206','Bin width 82.5 US survey feet','length',2.51460502921005861769e+01,NULL,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9207','Bin width 37.5 metres','length',37.5,NULL,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9208','Bin width 25 metres','length',25.0,NULL,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9209','Bin width 12.5 metres','length',12.5,NULL,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9210','Bin width 6.25 metres','length',6.25,NULL,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9211','Bin width 3.125 metres','length',3.125,NULL,1);
INSERT INTO "unit_of_measure" VALUES('EPSG','9300','British foot (Sears 1922 truncated)','length',3.04799333333333366535e-01,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9301','British chain (Sears 1922 truncated)','length',20.116756,NULL,0);
INSERT INTO "unit_of_measure" VALUES('EPSG','9302','British link (Sears 1922 truncated)','length',0.20116756,NULL,0);
+504 -217
View File
@@ -1,219 +1,506 @@
--- This file has been generated by scripts/build_db.py. DO NOT EDIT !
INSERT INTO "vertical_crs" VALUES('EPSG','3855','EGM2008 height',NULL,NULL,'EPSG','6499','EPSG','1027','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','3886','Fao 1979 height',NULL,NULL,'EPSG','6499','EPSG','1028','EPSG','3625',0);
INSERT INTO "vertical_crs" VALUES('EPSG','3900','N2000 height',NULL,NULL,'EPSG','6499','EPSG','1030','EPSG','3333',0);
INSERT INTO "vertical_crs" VALUES('EPSG','4440','NZVD2009 height',NULL,NULL,'EPSG','6499','EPSG','1039','EPSG','1175',0);
INSERT INTO "vertical_crs" VALUES('EPSG','4458','Dunedin-Bluff 1960 height',NULL,NULL,'EPSG','6499','EPSG','1040','EPSG','3806',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5193','Incheon height',NULL,NULL,'EPSG','6499','EPSG','1049','EPSG','3739',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5195','Trieste height',NULL,NULL,'EPSG','6499','EPSG','1050','EPSG','2370',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5214','Genoa height',NULL,NULL,'EPSG','6499','EPSG','1051','EPSG','3736',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5237','SLVD height',NULL,NULL,'EPSG','6499','EPSG','1054','EPSG','3310',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5317','FVR09 height',NULL,NULL,'EPSG','6499','EPSG','1059','EPSG','3248',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5336','Black Sea depth',NULL,NULL,'EPSG','6498','EPSG','5134','EPSG','3251',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5597','FCSVR10 height',NULL,NULL,'EPSG','6499','EPSG','1079','EPSG','3890',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5600','NGPF height',NULL,NULL,'EPSG','6499','EPSG','5195','EPSG','3134',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5601','IGN 1966 height',NULL,NULL,'EPSG','6499','EPSG','5196','EPSG','3124',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5602','Moorea SAU 1981 height',NULL,NULL,'EPSG','6499','EPSG','5197','EPSG','3125',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5603','Raiatea SAU 2001 height',NULL,NULL,'EPSG','6499','EPSG','5198','EPSG','3136',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5604','Maupiti SAU 2001 height',NULL,NULL,'EPSG','6499','EPSG','5199','EPSG','3126',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5605','Huahine SAU 2001 height',NULL,NULL,'EPSG','6499','EPSG','5200','EPSG','3135',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5606','Tahaa SAU 2001 height',NULL,NULL,'EPSG','6499','EPSG','5201','EPSG','3138',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5607','Bora Bora SAU 2001 height',NULL,NULL,'EPSG','6499','EPSG','5202','EPSG','3137',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5608','IGLD 1955 height',NULL,NULL,'EPSG','6499','EPSG','5204','EPSG','3468',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5609','IGLD 1985 height',NULL,NULL,'EPSG','6499','EPSG','5205','EPSG','3468',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5610','HVRS71 height',NULL,NULL,'EPSG','6499','EPSG','5207','EPSG','3234',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5611','Caspian height',NULL,NULL,'EPSG','6499','EPSG','5106','EPSG','1291',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5612','Baltic 1977 depth',NULL,NULL,'EPSG','6498','EPSG','5105','EPSG','2423',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5613','RH2000 height',NULL,NULL,'EPSG','6499','EPSG','5208','EPSG','3313',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5614','KOC WD depth (ft)',NULL,NULL,'EPSG','6495','EPSG','5187','EPSG','3267',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5615','RH00 height',NULL,NULL,'EPSG','6499','EPSG','5209','EPSG','3313',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5616','IGN 1988 LS height',NULL,NULL,'EPSG','6499','EPSG','5210','EPSG','2895',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5617','IGN 1988 MG height',NULL,NULL,'EPSG','6499','EPSG','5211','EPSG','2894',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5618','IGN 1992 LD height',NULL,NULL,'EPSG','6499','EPSG','5212','EPSG','2893',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5619','IGN 1988 SB height',NULL,NULL,'EPSG','6499','EPSG','5213','EPSG','2891',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5620','IGN 1988 SM height',NULL,NULL,'EPSG','6499','EPSG','5214','EPSG','2890',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5621','EVRF2007 height',NULL,NULL,'EPSG','6499','EPSG','5215','EPSG','3594',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5701','ODN height',NULL,NULL,'EPSG','6499','EPSG','5101','EPSG','2792',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5702','NGVD29 height (ftUS)',NULL,NULL,'EPSG','6497','EPSG','5102','EPSG','1323',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5703','NAVD88 height',NULL,NULL,'EPSG','6499','EPSG','5103','EPSG','4161',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5704','Yellow Sea',NULL,NULL,'EPSG','6499','EPSG','5104','EPSG','1067',1);
INSERT INTO "vertical_crs" VALUES('EPSG','5705','Baltic 1977 height',NULL,NULL,'EPSG','6499','EPSG','5105','EPSG','2423',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5706','Caspian depth',NULL,NULL,'EPSG','6498','EPSG','5106','EPSG','1291',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5709','NAP height',NULL,NULL,'EPSG','6499','EPSG','5109','EPSG','1275',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5710','Ostend height',NULL,NULL,'EPSG','6499','EPSG','5110','EPSG','1347',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5711','AHD height',NULL,NULL,'EPSG','6499','EPSG','5111','EPSG','4493',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5712','AHD (Tasmania) height',NULL,NULL,'EPSG','6499','EPSG','5112','EPSG','2947',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5713','CGVD28 height',NULL,NULL,'EPSG','6499','EPSG','5114','EPSG','1289',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5714','MSL height',NULL,NULL,'EPSG','6499','EPSG','5100','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5715','MSL depth',NULL,NULL,'EPSG','6498','EPSG','5100','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5716','Piraeus height',NULL,NULL,'EPSG','6499','EPSG','5115','EPSG','3254',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5717','N60 height',NULL,NULL,'EPSG','6499','EPSG','5116','EPSG','3333',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5718','RH70 height',NULL,NULL,'EPSG','6499','EPSG','5117','EPSG','3313',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5719','NGF Lallemand height',NULL,NULL,'EPSG','6499','EPSG','5118','EPSG','1326',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5720','NGF-IGN69 height',NULL,NULL,'EPSG','6499','EPSG','5119','EPSG','1326',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5721','NGF-IGN78 height',NULL,NULL,'EPSG','6499','EPSG','5120','EPSG','1327',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5722','Maputo height',NULL,NULL,'EPSG','6499','EPSG','5121','EPSG','3281',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5723','JSLD69 height',NULL,NULL,'EPSG','6499','EPSG','5122','EPSG','4166',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5724','PHD93 height',NULL,NULL,'EPSG','6499','EPSG','5123','EPSG','3288',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5725','Fahud HD height',NULL,NULL,'EPSG','6499','EPSG','5124','EPSG','4009',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5726','Ha Tien 1960 height',NULL,NULL,'EPSG','6499','EPSG','5125','EPSG','1302',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5727','Hon Dau 1992 height',NULL,NULL,'EPSG','6499','EPSG','5126','EPSG','4015',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5728','LN02 height',NULL,NULL,'EPSG','6499','EPSG','5127','EPSG','1286',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5729','LHN95 height',NULL,NULL,'EPSG','6499','EPSG','5128','EPSG','1286',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5730','EVRF2000 height',NULL,NULL,'EPSG','6499','EPSG','5129','EPSG','1299',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5731','Malin Head height',NULL,NULL,'EPSG','6499','EPSG','5130','EPSG','1305',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5732','Belfast height',NULL,NULL,'EPSG','6499','EPSG','5131','EPSG','2530',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5733','DNN height',NULL,NULL,'EPSG','6499','EPSG','5132','EPSG','3237',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5734','AIOC95 depth',NULL,NULL,'EPSG','6498','EPSG','5133','EPSG','2592',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5735','Black Sea height',NULL,NULL,'EPSG','6499','EPSG','5134','EPSG','3251',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5736','Yellow Sea 1956 height',NULL,NULL,'EPSG','6499','EPSG','5104','EPSG','3228',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5737','Yellow Sea 1985 height',NULL,NULL,'EPSG','6499','EPSG','5137','EPSG','3228',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5738','HKPD height',NULL,NULL,'EPSG','6499','EPSG','5135','EPSG','3334',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5739','HKCD depth',NULL,NULL,'EPSG','6498','EPSG','5136','EPSG','3335',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5740','ODN Orkney height',NULL,NULL,'EPSG','6499','EPSG','5138','EPSG','2793',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5741','Fair Isle height',NULL,NULL,'EPSG','6499','EPSG','5139','EPSG','2794',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5742','Lerwick height',NULL,NULL,'EPSG','6499','EPSG','5140','EPSG','2795',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5743','Foula height',NULL,NULL,'EPSG','6499','EPSG','5141','EPSG','2796',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5744','Sule Skerry height',NULL,NULL,'EPSG','6499','EPSG','5142','EPSG','2797',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5745','North Rona height',NULL,NULL,'EPSG','6499','EPSG','5143','EPSG','2798',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5746','Stornoway height',NULL,NULL,'EPSG','6499','EPSG','5144','EPSG','2799',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5747','St Kilda height',NULL,NULL,'EPSG','6499','EPSG','5145','EPSG','2800',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5748','Flannan Isles height',NULL,NULL,'EPSG','6499','EPSG','5146','EPSG','2801',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5749','St Marys height',NULL,NULL,'EPSG','6499','EPSG','5147','EPSG','2802',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5750','Douglas height',NULL,NULL,'EPSG','6499','EPSG','5148','EPSG','2803',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5751','Fao height',NULL,NULL,'EPSG','6499','EPSG','5149','EPSG','3390',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5752','Bandar Abbas height',NULL,NULL,'EPSG','6499','EPSG','5150','EPSG','3336',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5753','NGNC height',NULL,NULL,'EPSG','6499','EPSG','5151','EPSG','2822',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5754','Poolbeg height (ft(Br36))',NULL,NULL,'EPSG','6496','EPSG','5152','EPSG','1305',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5755','NGG1977 height',NULL,NULL,'EPSG','6499','EPSG','5153','EPSG','3146',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5756','Martinique 1987 height',NULL,NULL,'EPSG','6499','EPSG','5154','EPSG','3276',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5757','Guadeloupe 1988 height',NULL,NULL,'EPSG','6499','EPSG','5155','EPSG','2892',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5758','Reunion 1989 height',NULL,NULL,'EPSG','6499','EPSG','5156','EPSG','3337',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5759','Auckland 1946 height',NULL,NULL,'EPSG','6499','EPSG','5157','EPSG','3764',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5760','Bluff 1955 height',NULL,NULL,'EPSG','6499','EPSG','5158','EPSG','3801',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5761','Dunedin 1958 height',NULL,NULL,'EPSG','6499','EPSG','5159','EPSG','3803',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5762','Gisborne 1926 height',NULL,NULL,'EPSG','6499','EPSG','5160','EPSG','3771',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5763','Lyttelton 1937 height',NULL,NULL,'EPSG','6499','EPSG','5161','EPSG','3804',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5764','Moturiki 1953 height',NULL,NULL,'EPSG','6499','EPSG','5162','EPSG','3768',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5765','Napier 1962 height',NULL,NULL,'EPSG','6499','EPSG','5163','EPSG','3772',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5766','Nelson 1955 height',NULL,NULL,'EPSG','6499','EPSG','5164','EPSG','3802',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5767','One Tree Point 1964 height',NULL,NULL,'EPSG','6499','EPSG','5165','EPSG','3762',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5768','Tararu 1952 height',NULL,NULL,'EPSG','6499','EPSG','5166','EPSG','3818',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5769','Taranaki 1970 height',NULL,NULL,'EPSG','6499','EPSG','5167','EPSG','3769',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5770','Wellington 1953 height',NULL,NULL,'EPSG','6499','EPSG','5168','EPSG','3773',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5771','Chatham Island 1959 height',NULL,NULL,'EPSG','6499','EPSG','5169','EPSG','3894',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5772','Stewart Island 1977 height',NULL,NULL,'EPSG','6499','EPSG','5170','EPSG','3338',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5773','EGM96 height',NULL,NULL,'EPSG','6499','EPSG','5171','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5774','NG-L height',NULL,NULL,'EPSG','6499','EPSG','5172','EPSG','1146',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5775','Antalya height',NULL,NULL,'EPSG','6499','EPSG','5173','EPSG','3322',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5776','NN54 height',NULL,NULL,'EPSG','6499','EPSG','5174','EPSG','1352',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5777','Durres height',NULL,NULL,'EPSG','6499','EPSG','5175','EPSG','3212',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5778','GHA height',NULL,NULL,'EPSG','6499','EPSG','5176','EPSG','1037',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5779','SVS2000 height',NULL,NULL,'EPSG','6499','EPSG','5177','EPSG','3307',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5780','Cascais height',NULL,NULL,'EPSG','6499','EPSG','5178','EPSG','1294',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5781','Constanta height',NULL,NULL,'EPSG','6499','EPSG','5179','EPSG','3295',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5782','Alicante height',NULL,NULL,'EPSG','6499','EPSG','5180','EPSG','4188',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5783','DHHN92 height',NULL,NULL,'EPSG','6499','EPSG','5181','EPSG','3339',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5784','DHHN85 height',NULL,NULL,'EPSG','6499','EPSG','5182','EPSG','2326',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5785','SNN76 height',NULL,NULL,'EPSG','6499','EPSG','5183','EPSG','1343',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5786','Baltic 1982 height',NULL,NULL,'EPSG','6499','EPSG','5184','EPSG','3224',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5787','EOMA 1980 height',NULL,NULL,'EPSG','6499','EPSG','5185','EPSG','1119',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5788','Kuwait PWD height',NULL,NULL,'EPSG','6499','EPSG','5186','EPSG','3267',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5789','KOC WD depth',NULL,NULL,'EPSG','6498','EPSG','5187','EPSG','3267',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5790','KOC CD height',NULL,NULL,'EPSG','6499','EPSG','5188','EPSG','3267',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5791','NGC 1948 height',NULL,NULL,'EPSG','6499','EPSG','5189','EPSG','1327',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5792','Danger 1950 height',NULL,NULL,'EPSG','6499','EPSG','5190','EPSG','3299',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5793','Mayotte 1950 height',NULL,NULL,'EPSG','6499','EPSG','5191','EPSG','3340',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5794','Martinique 1955 height',NULL,NULL,'EPSG','6499','EPSG','5192','EPSG','3276',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5795','Guadeloupe 1951 height',NULL,NULL,'EPSG','6499','EPSG','5193','EPSG','2892',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5796','Lagos 1955 height',NULL,NULL,'EPSG','6499','EPSG','5194','EPSG','3287',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5797','AIOC95 height',NULL,NULL,'EPSG','6499','EPSG','5133','EPSG','2592',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5798','EGM84 height',NULL,NULL,'EPSG','6499','EPSG','5203','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5799','DVR90 height',NULL,NULL,'EPSG','6499','EPSG','5206','EPSG','3237',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5829','Instantaneous Water Level height',NULL,NULL,'EPSG','6499','EPSG','5113','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5831','Instantaneous Water Level depth',NULL,NULL,'EPSG','6498','EPSG','5113','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5843','Ras Ghumays height',NULL,NULL,'EPSG','6499','EPSG','1146','EPSG','4225',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5861','LAT depth',NULL,NULL,'EPSG','6498','EPSG','1080','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5862','LLWLT depth',NULL,NULL,'EPSG','6498','EPSG','1083','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5863','ISLW depth',NULL,NULL,'EPSG','6498','EPSG','1085','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5864','MLLWS depth',NULL,NULL,'EPSG','6498','EPSG','1086','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5865','MLWS depth',NULL,NULL,'EPSG','6498','EPSG','1087','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5866','MLLW depth',NULL,NULL,'EPSG','6498','EPSG','1089','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5867','MLW depth',NULL,NULL,'EPSG','6498','EPSG','1091','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5868','MHW height',NULL,NULL,'EPSG','6499','EPSG','1092','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5869','MHHW height',NULL,NULL,'EPSG','6499','EPSG','1090','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5870','MHWS height',NULL,NULL,'EPSG','6499','EPSG','1088','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5871','HHWLT height',NULL,NULL,'EPSG','6499','EPSG','1084','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5872','HAT height',NULL,NULL,'EPSG','6499','EPSG','1082','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5873','Low Water depth',NULL,NULL,'EPSG','6498','EPSG','1093','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5874','High Water height',NULL,NULL,'EPSG','6499','EPSG','1094','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','5941','NN2000 height',NULL,NULL,'EPSG','6499','EPSG','1096','EPSG','1352',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6130','GCVD54 height (ft)',NULL,NULL,'EPSG','1030','EPSG','1097','EPSG','3185',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6131','LCVD61 height (ft)',NULL,NULL,'EPSG','1030','EPSG','1098','EPSG','4121',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6132','CBVD61 height (ft)',NULL,NULL,'EPSG','1030','EPSG','1099','EPSG','3207',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6178','Cais da Pontinha - Funchal height',NULL,NULL,'EPSG','6499','EPSG','1101','EPSG','4125',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6179','Cais da Vila - Porto Santo height',NULL,NULL,'EPSG','6499','EPSG','1102','EPSG','3680',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6180','Cais das Velas height',NULL,NULL,'EPSG','6499','EPSG','1103','EPSG','2875',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6181','Horta height',NULL,NULL,'EPSG','6499','EPSG','1104','EPSG','2873',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6182','Cais da Madalena height',NULL,NULL,'EPSG','6499','EPSG','1105','EPSG','2874',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6183','Santa Cruz da Graciosa height',NULL,NULL,'EPSG','6499','EPSG','1106','EPSG','3681',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6184','Cais da Figueirinha - Angra do Heroismo height',NULL,NULL,'EPSG','6499','EPSG','1107','EPSG','2872',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6185','Santa Cruz das Flores height',NULL,NULL,'EPSG','6499','EPSG','1108','EPSG','1344',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6186','Cais da Vila do Porto height',NULL,NULL,'EPSG','6499','EPSG','1109','EPSG','4126',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6187','Ponta Delgada height',NULL,NULL,'EPSG','6499','EPSG','1110','EPSG','2871',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6357','NAVD88 depth',NULL,NULL,'EPSG','6498','EPSG','5103','EPSG','4161',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6358','NAVD88 depth (ftUS)',NULL,NULL,'EPSG','1043','EPSG','5103','EPSG','3664',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6359','NGVD29 depth (ftUS)',NULL,NULL,'EPSG','1043','EPSG','5102','EPSG','1323',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6360','NAVD88 height (ftUS)',NULL,NULL,'EPSG','6497','EPSG','5103','EPSG','3664',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6638','Tutuila 1962 height',NULL,NULL,'EPSG','6499','EPSG','1121','EPSG','2288',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6639','Guam 1963 height',NULL,NULL,'EPSG','6499','EPSG','1122','EPSG','3255',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6640','NMVD03 height',NULL,NULL,'EPSG','6499','EPSG','1119','EPSG','4171',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6641','PRVD02 height',NULL,NULL,'EPSG','6499','EPSG','1123','EPSG','3294',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6642','VIVD09 height',NULL,NULL,'EPSG','6499','EPSG','1124','EPSG','3330',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6643','ASVD02 height',NULL,NULL,'EPSG','6499','EPSG','1125','EPSG','2288',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6644','GUVD04 height',NULL,NULL,'EPSG','6499','EPSG','1126','EPSG','3255',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6647','CGVD2013(CGG2013) height',NULL,NULL,'EPSG','6499','EPSG','1127','EPSG','1061',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6693','JSLD72 height',NULL,NULL,'EPSG','6499','EPSG','1129','EPSG','4168',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6694','JGD2000 (vertical) height',NULL,NULL,'EPSG','6499','EPSG','1130','EPSG','3263',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6695','JGD2011 (vertical) height',NULL,NULL,'EPSG','6499','EPSG','1131','EPSG','3263',0);
INSERT INTO "vertical_crs" VALUES('EPSG','6916','SHD height',NULL,NULL,'EPSG','6499','EPSG','1140','EPSG','1210',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7446','Famagusta 1960 height',NULL,NULL,'EPSG','6499','EPSG','1148','EPSG','3236',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7447','PNG08 height',NULL,NULL,'EPSG','6499','EPSG','1149','EPSG','4384',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7651','Kumul 34 height',NULL,NULL,'EPSG','6499','EPSG','1150','EPSG','4013',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7652','Kiunga height',NULL,NULL,'EPSG','6499','EPSG','1151','EPSG','4383',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7699','DHHN12 height',NULL,NULL,'EPSG','6499','EPSG','1161','EPSG','3339',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7700','Latvia 2000 height',NULL,NULL,'EPSG','6499','EPSG','1162','EPSG','3268',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7707','ODN (Offshore) height',NULL,NULL,'EPSG','6499','EPSG','1164','EPSG','4391',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7832','POM96 height',NULL,NULL,'EPSG','6499','EPSG','1171','EPSG','4425',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7837','DHHN2016 height',NULL,NULL,'EPSG','6499','EPSG','1170','EPSG','3339',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7839','NZVD2016 height',NULL,NULL,'EPSG','6499','EPSG','1169','EPSG','1175',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7841','POM08 height',NULL,NULL,'EPSG','6499','EPSG','1172','EPSG','4425',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7888','Jamestown 1971 height',NULL,NULL,'EPSG','6499','EPSG','1175','EPSG','3183',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7889','St. Helena Tritan 2011 height',NULL,NULL,'EPSG','6499','EPSG','1176','EPSG','3183',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7890','SHVD2015 height',NULL,NULL,'EPSG','6499','EPSG','1177','EPSG','3183',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7962','Poolbeg height (m)',NULL,NULL,'EPSG','6499','EPSG','5152','EPSG','1305',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7968','NGVD29 height (m)',NULL,NULL,'EPSG','6499','EPSG','5102','EPSG','1323',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7976','HKPD depth',NULL,NULL,'EPSG','6498','EPSG','5135','EPSG','3334',0);
INSERT INTO "vertical_crs" VALUES('EPSG','7979','KOC WD height',NULL,NULL,'EPSG','6499','EPSG','5187','EPSG','3267',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8050','MSL height (ft)',NULL,NULL,'EPSG','1030','EPSG','5100','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8051','MSL depth (ft)',NULL,NULL,'EPSG','6495','EPSG','5100','EPSG','1262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8052','MSL height (ftUS)',NULL,NULL,'EPSG','6497','EPSG','5100','EPSG','1245',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8053','MSL depth (ftUS)',NULL,NULL,'EPSG','1043','EPSG','5100','EPSG','1245',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8089','ISH2004 height',NULL,NULL,'EPSG','6499','EPSG','1190','EPSG','3262',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8228','NAVD88 height (ft)',NULL,NULL,'EPSG','1030','EPSG','5103','EPSG','4464',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8266','GVR2000 height',NULL,NULL,'EPSG','6499','EPSG','1199','EPSG','4461',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8267','GVR2016 height',NULL,NULL,'EPSG','6499','EPSG','1200','EPSG','4454',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8357','Baltic 1957 height',NULL,NULL,'EPSG','6499','EPSG','1202','EPSG','1306',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8358','Baltic 1957 depth',NULL,NULL,'EPSG','6498','EPSG','1202','EPSG','1306',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8378','EPSG example wellbore local vertical CRS',NULL,NULL,'EPSG','1049','EPSG','1205','EPSG','4393',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8434','Macao height',NULL,NULL,'EPSG','6499','EPSG','1210','EPSG','1147',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8675','N43 height',NULL,NULL,'EPSG','6499','EPSG','1213','EPSG','4522',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8690','SVS2010 height',NULL,NULL,'EPSG','6499','EPSG','1215','EPSG','3307',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8691','SRB_VRS12 height',NULL,NULL,'EPSG','6499','EPSG','1216','EPSG','4543',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8841','MVGC height',NULL,NULL,'EPSG','6499','EPSG','1219','EPSG','3303',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8897','EPSG example wellbore local vertical CRS (ft)',NULL,NULL,'EPSG','1050','EPSG','1205','EPSG','4393',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8904','TWVD 2001 height',NULL,NULL,'EPSG','6499','EPSG','1224','EPSG','3982',0);
INSERT INTO "vertical_crs" VALUES('EPSG','8911','DACR52 height',NULL,NULL,'EPSG','6499','EPSG','1226','EPSG','3232',0);
INSERT INTO "vertical_crs" VALUES('EPSG','9130','IGN 2008 LD height',NULL,NULL,'EPSG','6499','EPSG','1250','EPSG','2893',0);
INSERT INTO "vertical_crs" VALUES('EPSG','9245','CGVD2013(CGG2013a) height',NULL,NULL,'EPSG','6499','EPSG','1256','EPSG','1061',0);
INSERT INTO "vertical_crs" VALUES('EPSG','3855','EGM2008 height',NULL,'EPSG','6499','EPSG','1027',0);
INSERT INTO "usage" VALUES('EPSG','2857','vertical_crs','EPSG','3855','EPSG','1262','EPSG','1027');
INSERT INTO "vertical_crs" VALUES('EPSG','3886','Fao 1979 height',NULL,'EPSG','6499','EPSG','1028',0);
INSERT INTO "usage" VALUES('EPSG','2872','vertical_crs','EPSG','3886','EPSG','3625','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','3900','N2000 height',NULL,'EPSG','6499','EPSG','1030',0);
INSERT INTO "usage" VALUES('EPSG','2880','vertical_crs','EPSG','3900','EPSG','3333','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','4440','NZVD2009 height',NULL,'EPSG','6499','EPSG','1039',0);
INSERT INTO "usage" VALUES('EPSG','3313','vertical_crs','EPSG','4440','EPSG','1175','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','4458','Dunedin-Bluff 1960 height',NULL,'EPSG','6499','EPSG','1040',0);
INSERT INTO "usage" VALUES('EPSG','3317','vertical_crs','EPSG','4458','EPSG','3806','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5193','Incheon height',NULL,'EPSG','6499','EPSG','1049',0);
INSERT INTO "usage" VALUES('EPSG','3864','vertical_crs','EPSG','5193','EPSG','3739','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5195','Trieste height',NULL,'EPSG','6499','EPSG','1050',0);
INSERT INTO "usage" VALUES('EPSG','3865','vertical_crs','EPSG','5195','EPSG','2370','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5214','Genoa 1942 height',NULL,'EPSG','6499','EPSG','1051',0);
INSERT INTO "usage" VALUES('EPSG','3866','vertical_crs','EPSG','5214','EPSG','3736','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5237','SLVD height',NULL,'EPSG','6499','EPSG','1054',0);
INSERT INTO "usage" VALUES('EPSG','3876','vertical_crs','EPSG','5237','EPSG','3310','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5317','FVR09 height',NULL,'EPSG','6499','EPSG','1059',0);
INSERT INTO "usage" VALUES('EPSG','3924','vertical_crs','EPSG','5317','EPSG','3248','EPSG','1029');
INSERT INTO "vertical_crs" VALUES('EPSG','5336','Black Sea depth',NULL,'EPSG','6498','EPSG','5134',0);
INSERT INTO "usage" VALUES('EPSG','3936','vertical_crs','EPSG','5336','EPSG','1102','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5597','FCSVR10 height',NULL,'EPSG','6499','EPSG','1079',0);
INSERT INTO "usage" VALUES('EPSG','4067','vertical_crs','EPSG','5597','EPSG','3890','EPSG','1139');
INSERT INTO "vertical_crs" VALUES('EPSG','5600','NGPF height',NULL,'EPSG','6499','EPSG','5195',0);
INSERT INTO "usage" VALUES('EPSG','4069','vertical_crs','EPSG','5600','EPSG','3134','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5601','IGN 1966 height',NULL,'EPSG','6499','EPSG','5196',0);
INSERT INTO "usage" VALUES('EPSG','4070','vertical_crs','EPSG','5601','EPSG','3124','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5602','Moorea SAU 1981 height',NULL,'EPSG','6499','EPSG','5197',0);
INSERT INTO "usage" VALUES('EPSG','4071','vertical_crs','EPSG','5602','EPSG','3125','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5603','Raiatea SAU 2001 height',NULL,'EPSG','6499','EPSG','5198',0);
INSERT INTO "usage" VALUES('EPSG','4072','vertical_crs','EPSG','5603','EPSG','3136','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5604','Maupiti SAU 2001 height',NULL,'EPSG','6499','EPSG','5199',0);
INSERT INTO "usage" VALUES('EPSG','4073','vertical_crs','EPSG','5604','EPSG','3126','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5605','Huahine SAU 2001 height',NULL,'EPSG','6499','EPSG','5200',0);
INSERT INTO "usage" VALUES('EPSG','4074','vertical_crs','EPSG','5605','EPSG','3135','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5606','Tahaa SAU 2001 height',NULL,'EPSG','6499','EPSG','5201',0);
INSERT INTO "usage" VALUES('EPSG','4075','vertical_crs','EPSG','5606','EPSG','3138','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5607','Bora Bora SAU 2001 height',NULL,'EPSG','6499','EPSG','5202',0);
INSERT INTO "usage" VALUES('EPSG','4076','vertical_crs','EPSG','5607','EPSG','3137','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5608','IGLD 1955 height',NULL,'EPSG','6499','EPSG','5204',0);
INSERT INTO "usage" VALUES('EPSG','4077','vertical_crs','EPSG','5608','EPSG','3468','EPSG','1202');
INSERT INTO "vertical_crs" VALUES('EPSG','5609','IGLD 1985 height',NULL,'EPSG','6499','EPSG','5205',0);
INSERT INTO "usage" VALUES('EPSG','4078','vertical_crs','EPSG','5609','EPSG','3468','EPSG','1202');
INSERT INTO "vertical_crs" VALUES('EPSG','5610','HVRS71 height',NULL,'EPSG','6499','EPSG','5207',0);
INSERT INTO "usage" VALUES('EPSG','4079','vertical_crs','EPSG','5610','EPSG','3234','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5611','Caspian height',NULL,'EPSG','6499','EPSG','5106',0);
INSERT INTO "usage" VALUES('EPSG','4080','vertical_crs','EPSG','5611','EPSG','1291','EPSG','1136');
INSERT INTO "vertical_crs" VALUES('EPSG','5612','Baltic 1977 depth',NULL,'EPSG','6498','EPSG','5105',0);
INSERT INTO "usage" VALUES('EPSG','4081','vertical_crs','EPSG','5612','EPSG','2423','EPSG','1136');
INSERT INTO "vertical_crs" VALUES('EPSG','5613','RH2000 height',NULL,'EPSG','6499','EPSG','5208',0);
INSERT INTO "usage" VALUES('EPSG','4082','vertical_crs','EPSG','5613','EPSG','3313','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5614','KOC WD depth (ft)',NULL,'EPSG','6495','EPSG','5187',0);
INSERT INTO "usage" VALUES('EPSG','4083','vertical_crs','EPSG','5614','EPSG','3267','EPSG','1205');
INSERT INTO "vertical_crs" VALUES('EPSG','5615','RH00 height',NULL,'EPSG','6499','EPSG','5209',0);
INSERT INTO "usage" VALUES('EPSG','4084','vertical_crs','EPSG','5615','EPSG','3313','EPSG','1029');
INSERT INTO "vertical_crs" VALUES('EPSG','5616','IGN 1988 LS height',NULL,'EPSG','6499','EPSG','5210',0);
INSERT INTO "usage" VALUES('EPSG','4085','vertical_crs','EPSG','5616','EPSG','2895','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5617','IGN 1988 MG height',NULL,'EPSG','6499','EPSG','5211',0);
INSERT INTO "usage" VALUES('EPSG','4086','vertical_crs','EPSG','5617','EPSG','2894','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5618','IGN 1992 LD height',NULL,'EPSG','6499','EPSG','5212',0);
INSERT INTO "usage" VALUES('EPSG','4087','vertical_crs','EPSG','5618','EPSG','2893','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5619','IGN 1988 SB height',NULL,'EPSG','6499','EPSG','5213',0);
INSERT INTO "usage" VALUES('EPSG','4088','vertical_crs','EPSG','5619','EPSG','2891','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5620','IGN 1988 SM height',NULL,'EPSG','6499','EPSG','5214',0);
INSERT INTO "usage" VALUES('EPSG','4089','vertical_crs','EPSG','5620','EPSG','2890','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5621','EVRF2007 height',NULL,'EPSG','6499','EPSG','5215',0);
INSERT INTO "usage" VALUES('EPSG','4090','vertical_crs','EPSG','5621','EPSG','3594','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5701','ODN height',NULL,'EPSG','6499','EPSG','5101',0);
INSERT INTO "usage" VALUES('EPSG','4144','vertical_crs','EPSG','5701','EPSG','2792','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5702','NGVD29 height (ftUS)',NULL,'EPSG','6497','EPSG','5102',0);
INSERT INTO "usage" VALUES('EPSG','4145','vertical_crs','EPSG','5702','EPSG','1323','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5703','NAVD88 height',NULL,'EPSG','6499','EPSG','5103',0);
INSERT INTO "usage" VALUES('EPSG','4146','vertical_crs','EPSG','5703','EPSG','4161','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5704','Yellow Sea',NULL,'EPSG','6499','EPSG','5104',1);
INSERT INTO "usage" VALUES('EPSG','4147','vertical_crs','EPSG','5704','EPSG','1067','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5705','Baltic 1977 height',NULL,'EPSG','6499','EPSG','5105',0);
INSERT INTO "usage" VALUES('EPSG','4148','vertical_crs','EPSG','5705','EPSG','2423','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5706','Caspian depth',NULL,'EPSG','6498','EPSG','5106',0);
INSERT INTO "usage" VALUES('EPSG','4149','vertical_crs','EPSG','5706','EPSG','1291','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5709','NAP height',NULL,'EPSG','6499','EPSG','5109',0);
INSERT INTO "usage" VALUES('EPSG','4152','vertical_crs','EPSG','5709','EPSG','1172','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5710','Ostend height',NULL,'EPSG','6499','EPSG','5110',0);
INSERT INTO "usage" VALUES('EPSG','4153','vertical_crs','EPSG','5710','EPSG','1347','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5711','AHD height',NULL,'EPSG','6499','EPSG','5111',0);
INSERT INTO "usage" VALUES('EPSG','14230','vertical_crs','EPSG','5711','EPSG','4493','EPSG','1263');
INSERT INTO "vertical_crs" VALUES('EPSG','5712','AHD (Tasmania) height',NULL,'EPSG','6499','EPSG','5112',0);
INSERT INTO "usage" VALUES('EPSG','4155','vertical_crs','EPSG','5712','EPSG','2947','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5713','CGVD28 height',NULL,'EPSG','6499','EPSG','5114',0);
INSERT INTO "usage" VALUES('EPSG','4156','vertical_crs','EPSG','5713','EPSG','1289','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5714','MSL height',NULL,'EPSG','6499','EPSG','5100',0);
INSERT INTO "usage" VALUES('EPSG','4157','vertical_crs','EPSG','5714','EPSG','1262','EPSG','1199');
INSERT INTO "vertical_crs" VALUES('EPSG','5715','MSL depth',NULL,'EPSG','6498','EPSG','5100',0);
INSERT INTO "usage" VALUES('EPSG','4158','vertical_crs','EPSG','5715','EPSG','1262','EPSG','1199');
INSERT INTO "vertical_crs" VALUES('EPSG','5716','Piraeus height',NULL,'EPSG','6499','EPSG','5115',0);
INSERT INTO "usage" VALUES('EPSG','4159','vertical_crs','EPSG','5716','EPSG','3254','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5717','N60 height',NULL,'EPSG','6499','EPSG','5116',0);
INSERT INTO "usage" VALUES('EPSG','4160','vertical_crs','EPSG','5717','EPSG','3333','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5718','RH70 height',NULL,'EPSG','6499','EPSG','5117',0);
INSERT INTO "usage" VALUES('EPSG','4161','vertical_crs','EPSG','5718','EPSG','3313','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5719','NGF Lallemand height',NULL,'EPSG','6499','EPSG','5118',0);
INSERT INTO "usage" VALUES('EPSG','4162','vertical_crs','EPSG','5719','EPSG','1326','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5720','NGF-IGN69 height',NULL,'EPSG','6499','EPSG','5119',0);
INSERT INTO "usage" VALUES('EPSG','4163','vertical_crs','EPSG','5720','EPSG','1326','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5721','NGF-IGN78 height',NULL,'EPSG','6499','EPSG','5120',0);
INSERT INTO "usage" VALUES('EPSG','4164','vertical_crs','EPSG','5721','EPSG','1327','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5722','Maputo height',NULL,'EPSG','6499','EPSG','5121',0);
INSERT INTO "usage" VALUES('EPSG','4165','vertical_crs','EPSG','5722','EPSG','3281','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5723','JSLD69 height',NULL,'EPSG','6499','EPSG','5122',0);
INSERT INTO "usage" VALUES('EPSG','4166','vertical_crs','EPSG','5723','EPSG','4166','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5724','PHD93 height',NULL,'EPSG','6499','EPSG','5123',0);
INSERT INTO "usage" VALUES('EPSG','4167','vertical_crs','EPSG','5724','EPSG','3288','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5725','Fahud HD height',NULL,'EPSG','6499','EPSG','5124',0);
INSERT INTO "usage" VALUES('EPSG','4168','vertical_crs','EPSG','5725','EPSG','4009','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5726','Ha Tien 1960 height',NULL,'EPSG','6499','EPSG','5125',0);
INSERT INTO "usage" VALUES('EPSG','4169','vertical_crs','EPSG','5726','EPSG','1302','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5727','Hon Dau 1992 height',NULL,'EPSG','6499','EPSG','5126',0);
INSERT INTO "usage" VALUES('EPSG','4170','vertical_crs','EPSG','5727','EPSG','4015','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5728','LN02 height',NULL,'EPSG','6499','EPSG','5127',0);
INSERT INTO "usage" VALUES('EPSG','4171','vertical_crs','EPSG','5728','EPSG','1286','EPSG','1142');
INSERT INTO "vertical_crs" VALUES('EPSG','5729','LHN95 height',NULL,'EPSG','6499','EPSG','5128',0);
INSERT INTO "usage" VALUES('EPSG','4172','vertical_crs','EPSG','5729','EPSG','1286','EPSG','1027');
INSERT INTO "vertical_crs" VALUES('EPSG','5730','EVRF2000 height',NULL,'EPSG','6499','EPSG','5129',0);
INSERT INTO "usage" VALUES('EPSG','4173','vertical_crs','EPSG','5730','EPSG','1299','EPSG','1161');
INSERT INTO "vertical_crs" VALUES('EPSG','5731','Malin Head height',NULL,'EPSG','6499','EPSG','5130',0);
INSERT INTO "usage" VALUES('EPSG','4174','vertical_crs','EPSG','5731','EPSG','1305','EPSG','1153');
INSERT INTO "vertical_crs" VALUES('EPSG','5732','Belfast height',NULL,'EPSG','6499','EPSG','5131',0);
INSERT INTO "usage" VALUES('EPSG','4175','vertical_crs','EPSG','5732','EPSG','2530','EPSG','1209');
INSERT INTO "vertical_crs" VALUES('EPSG','5733','DNN height',NULL,'EPSG','6499','EPSG','5132',0);
INSERT INTO "usage" VALUES('EPSG','4176','vertical_crs','EPSG','5733','EPSG','3237','EPSG','1142');
INSERT INTO "vertical_crs" VALUES('EPSG','5734','AIOC95 depth',NULL,'EPSG','6498','EPSG','5133',0);
INSERT INTO "usage" VALUES('EPSG','4177','vertical_crs','EPSG','5734','EPSG','2592','EPSG','1136');
INSERT INTO "vertical_crs" VALUES('EPSG','5735','Black Sea height',NULL,'EPSG','6499','EPSG','5134',0);
INSERT INTO "usage" VALUES('EPSG','4178','vertical_crs','EPSG','5735','EPSG','3251','EPSG','1153');
INSERT INTO "vertical_crs" VALUES('EPSG','5736','Yellow Sea 1956 height',NULL,'EPSG','6499','EPSG','5104',0);
INSERT INTO "usage" VALUES('EPSG','4179','vertical_crs','EPSG','5736','EPSG','3228','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5737','Yellow Sea 1985 height',NULL,'EPSG','6499','EPSG','5137',0);
INSERT INTO "usage" VALUES('EPSG','4180','vertical_crs','EPSG','5737','EPSG','3228','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5738','HKPD height',NULL,'EPSG','6499','EPSG','5135',0);
INSERT INTO "usage" VALUES('EPSG','4181','vertical_crs','EPSG','5738','EPSG','3334','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5739','HKCD depth',NULL,'EPSG','6498','EPSG','5136',0);
INSERT INTO "usage" VALUES('EPSG','4182','vertical_crs','EPSG','5739','EPSG','3335','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5740','ODN Orkney height',NULL,'EPSG','6499','EPSG','5138',0);
INSERT INTO "usage" VALUES('EPSG','4183','vertical_crs','EPSG','5740','EPSG','2793','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5741','Fair Isle height',NULL,'EPSG','6499','EPSG','5139',0);
INSERT INTO "usage" VALUES('EPSG','4184','vertical_crs','EPSG','5741','EPSG','2794','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5742','Lerwick height',NULL,'EPSG','6499','EPSG','5140',0);
INSERT INTO "usage" VALUES('EPSG','4185','vertical_crs','EPSG','5742','EPSG','2795','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5743','Foula height',NULL,'EPSG','6499','EPSG','5141',0);
INSERT INTO "usage" VALUES('EPSG','4186','vertical_crs','EPSG','5743','EPSG','2796','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5744','Sule Skerry height',NULL,'EPSG','6499','EPSG','5142',0);
INSERT INTO "usage" VALUES('EPSG','4187','vertical_crs','EPSG','5744','EPSG','2797','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5745','North Rona height',NULL,'EPSG','6499','EPSG','5143',0);
INSERT INTO "usage" VALUES('EPSG','4188','vertical_crs','EPSG','5745','EPSG','2798','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5746','Stornoway height',NULL,'EPSG','6499','EPSG','5144',0);
INSERT INTO "usage" VALUES('EPSG','4189','vertical_crs','EPSG','5746','EPSG','2799','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5747','St. Kilda height',NULL,'EPSG','6499','EPSG','5145',0);
INSERT INTO "usage" VALUES('EPSG','4190','vertical_crs','EPSG','5747','EPSG','2800','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5748','Flannan Isles height',NULL,'EPSG','6499','EPSG','5146',0);
INSERT INTO "usage" VALUES('EPSG','4191','vertical_crs','EPSG','5748','EPSG','2801','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5749','St. Marys height',NULL,'EPSG','6499','EPSG','5147',0);
INSERT INTO "usage" VALUES('EPSG','4192','vertical_crs','EPSG','5749','EPSG','2802','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5750','Douglas height',NULL,'EPSG','6499','EPSG','5148',0);
INSERT INTO "usage" VALUES('EPSG','4193','vertical_crs','EPSG','5750','EPSG','2803','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5751','Fao height',NULL,'EPSG','6499','EPSG','5149',0);
INSERT INTO "usage" VALUES('EPSG','4194','vertical_crs','EPSG','5751','EPSG','3390','EPSG','1136');
INSERT INTO "vertical_crs" VALUES('EPSG','5752','Bandar Abbas height',NULL,'EPSG','6499','EPSG','5150',0);
INSERT INTO "usage" VALUES('EPSG','4195','vertical_crs','EPSG','5752','EPSG','3336','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','5753','NGNC69 height',NULL,'EPSG','6499','EPSG','5151',0);
INSERT INTO "usage" VALUES('EPSG','4196','vertical_crs','EPSG','5753','EPSG','2822','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5754','Poolbeg height (ft(Br36))',NULL,'EPSG','6496','EPSG','5152',0);
INSERT INTO "usage" VALUES('EPSG','4197','vertical_crs','EPSG','5754','EPSG','1305','EPSG','1153');
INSERT INTO "vertical_crs" VALUES('EPSG','5755','NGG1977 height',NULL,'EPSG','6499','EPSG','5153',0);
INSERT INTO "usage" VALUES('EPSG','4198','vertical_crs','EPSG','5755','EPSG','3146','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5756','Martinique 1987 height',NULL,'EPSG','6499','EPSG','5154',0);
INSERT INTO "usage" VALUES('EPSG','4199','vertical_crs','EPSG','5756','EPSG','3276','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5757','Guadeloupe 1988 height',NULL,'EPSG','6499','EPSG','5155',0);
INSERT INTO "usage" VALUES('EPSG','4200','vertical_crs','EPSG','5757','EPSG','2892','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5758','Reunion 1989 height',NULL,'EPSG','6499','EPSG','5156',0);
INSERT INTO "usage" VALUES('EPSG','4201','vertical_crs','EPSG','5758','EPSG','3337','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5759','Auckland 1946 height',NULL,'EPSG','6499','EPSG','5157',0);
INSERT INTO "usage" VALUES('EPSG','4202','vertical_crs','EPSG','5759','EPSG','3764','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5760','Bluff 1955 height',NULL,'EPSG','6499','EPSG','5158',0);
INSERT INTO "usage" VALUES('EPSG','4203','vertical_crs','EPSG','5760','EPSG','3801','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5761','Dunedin 1958 height',NULL,'EPSG','6499','EPSG','5159',0);
INSERT INTO "usage" VALUES('EPSG','4204','vertical_crs','EPSG','5761','EPSG','3803','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5762','Gisborne 1926 height',NULL,'EPSG','6499','EPSG','5160',0);
INSERT INTO "usage" VALUES('EPSG','4205','vertical_crs','EPSG','5762','EPSG','3771','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5763','Lyttelton 1937 height',NULL,'EPSG','6499','EPSG','5161',0);
INSERT INTO "usage" VALUES('EPSG','4206','vertical_crs','EPSG','5763','EPSG','3804','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5764','Moturiki 1953 height',NULL,'EPSG','6499','EPSG','5162',0);
INSERT INTO "usage" VALUES('EPSG','4207','vertical_crs','EPSG','5764','EPSG','3768','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5765','Napier 1962 height',NULL,'EPSG','6499','EPSG','5163',0);
INSERT INTO "usage" VALUES('EPSG','4208','vertical_crs','EPSG','5765','EPSG','3772','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5766','Nelson 1955 height',NULL,'EPSG','6499','EPSG','5164',0);
INSERT INTO "usage" VALUES('EPSG','4209','vertical_crs','EPSG','5766','EPSG','3802','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5767','One Tree Point 1964 height',NULL,'EPSG','6499','EPSG','5165',0);
INSERT INTO "usage" VALUES('EPSG','4210','vertical_crs','EPSG','5767','EPSG','3762','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5768','Tararu 1952 height',NULL,'EPSG','6499','EPSG','5166',0);
INSERT INTO "usage" VALUES('EPSG','4211','vertical_crs','EPSG','5768','EPSG','3818','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5769','Taranaki 1970 height',NULL,'EPSG','6499','EPSG','5167',0);
INSERT INTO "usage" VALUES('EPSG','4212','vertical_crs','EPSG','5769','EPSG','3769','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5770','Wellington 1953 height',NULL,'EPSG','6499','EPSG','5168',0);
INSERT INTO "usage" VALUES('EPSG','4213','vertical_crs','EPSG','5770','EPSG','3773','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5771','Chatham Island 1959 height',NULL,'EPSG','6499','EPSG','5169',0);
INSERT INTO "usage" VALUES('EPSG','4214','vertical_crs','EPSG','5771','EPSG','3894','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5772','Stewart Island 1977 height',NULL,'EPSG','6499','EPSG','5170',0);
INSERT INTO "usage" VALUES('EPSG','4215','vertical_crs','EPSG','5772','EPSG','3338','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5773','EGM96 height',NULL,'EPSG','6499','EPSG','5171',0);
INSERT INTO "usage" VALUES('EPSG','4216','vertical_crs','EPSG','5773','EPSG','1262','EPSG','1027');
INSERT INTO "vertical_crs" VALUES('EPSG','5774','NG-L height',NULL,'EPSG','6499','EPSG','5172',0);
INSERT INTO "usage" VALUES('EPSG','4217','vertical_crs','EPSG','5774','EPSG','1146','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5775','Antalya height',NULL,'EPSG','6499','EPSG','5173',0);
INSERT INTO "usage" VALUES('EPSG','4218','vertical_crs','EPSG','5775','EPSG','3322','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5776','NN54 height',NULL,'EPSG','6499','EPSG','5174',0);
INSERT INTO "usage" VALUES('EPSG','4219','vertical_crs','EPSG','5776','EPSG','1352','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5777','Durres height',NULL,'EPSG','6499','EPSG','5175',0);
INSERT INTO "usage" VALUES('EPSG','4220','vertical_crs','EPSG','5777','EPSG','3212','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5778','GHA height',NULL,'EPSG','6499','EPSG','5176',0);
INSERT INTO "usage" VALUES('EPSG','4221','vertical_crs','EPSG','5778','EPSG','1037','EPSG','1056');
INSERT INTO "vertical_crs" VALUES('EPSG','5779','SVS2000 height',NULL,'EPSG','6499','EPSG','5177',0);
INSERT INTO "usage" VALUES('EPSG','4222','vertical_crs','EPSG','5779','EPSG','3307','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5780','Cascais height',NULL,'EPSG','6499','EPSG','5178',0);
INSERT INTO "usage" VALUES('EPSG','4223','vertical_crs','EPSG','5780','EPSG','1294','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5781','Constanta height',NULL,'EPSG','6499','EPSG','5179',0);
INSERT INTO "usage" VALUES('EPSG','4224','vertical_crs','EPSG','5781','EPSG','3295','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5782','Alicante height',NULL,'EPSG','6499','EPSG','5180',0);
INSERT INTO "usage" VALUES('EPSG','4225','vertical_crs','EPSG','5782','EPSG','4188','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5783','DHHN92 height',NULL,'EPSG','6499','EPSG','5181',0);
INSERT INTO "usage" VALUES('EPSG','4226','vertical_crs','EPSG','5783','EPSG','3339','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5784','DHHN85 height',NULL,'EPSG','6499','EPSG','5182',0);
INSERT INTO "usage" VALUES('EPSG','4227','vertical_crs','EPSG','5784','EPSG','2326','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5785','SNN76 height',NULL,'EPSG','6499','EPSG','5183',0);
INSERT INTO "usage" VALUES('EPSG','4228','vertical_crs','EPSG','5785','EPSG','1343','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5786','Baltic 1982 height',NULL,'EPSG','6499','EPSG','5184',0);
INSERT INTO "usage" VALUES('EPSG','4229','vertical_crs','EPSG','5786','EPSG','3224','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5787','EOMA 1980 height',NULL,'EPSG','6499','EPSG','5185',0);
INSERT INTO "usage" VALUES('EPSG','4230','vertical_crs','EPSG','5787','EPSG','1119','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5788','Kuwait PWD height',NULL,'EPSG','6499','EPSG','5186',0);
INSERT INTO "usage" VALUES('EPSG','4231','vertical_crs','EPSG','5788','EPSG','3267','EPSG','1248');
INSERT INTO "vertical_crs" VALUES('EPSG','5789','KOC WD depth',NULL,'EPSG','6498','EPSG','5187',0);
INSERT INTO "usage" VALUES('EPSG','4232','vertical_crs','EPSG','5789','EPSG','3267','EPSG','1205');
INSERT INTO "vertical_crs" VALUES('EPSG','5790','KOC CD height',NULL,'EPSG','6499','EPSG','5188',0);
INSERT INTO "usage" VALUES('EPSG','4233','vertical_crs','EPSG','5790','EPSG','3267','EPSG','1206');
INSERT INTO "vertical_crs" VALUES('EPSG','5791','NGC 1948 height',NULL,'EPSG','6499','EPSG','5189',0);
INSERT INTO "usage" VALUES('EPSG','4234','vertical_crs','EPSG','5791','EPSG','1327','EPSG','1179');
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 "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);
INSERT INTO "usage" VALUES('EPSG','4238','vertical_crs','EPSG','5795','EPSG','2892','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5796','Lagos 1955 height',NULL,'EPSG','6499','EPSG','5194',0);
INSERT INTO "usage" VALUES('EPSG','4239','vertical_crs','EPSG','5796','EPSG','3287','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','5797','AIOC95 height',NULL,'EPSG','6499','EPSG','5133',0);
INSERT INTO "usage" VALUES('EPSG','4240','vertical_crs','EPSG','5797','EPSG','2592','EPSG','1136');
INSERT INTO "vertical_crs" VALUES('EPSG','5798','EGM84 height',NULL,'EPSG','6499','EPSG','5203',0);
INSERT INTO "usage" VALUES('EPSG','4241','vertical_crs','EPSG','5798','EPSG','1262','EPSG','1027');
INSERT INTO "vertical_crs" VALUES('EPSG','5799','DVR90 height',NULL,'EPSG','6499','EPSG','5206',0);
INSERT INTO "usage" VALUES('EPSG','4242','vertical_crs','EPSG','5799','EPSG','3237','EPSG','1142');
INSERT INTO "vertical_crs" VALUES('EPSG','5829','Instantaneous Water Level height',NULL,'EPSG','6499','EPSG','5113',0);
INSERT INTO "usage" VALUES('EPSG','4267','vertical_crs','EPSG','5829','EPSG','1262','EPSG','1200');
INSERT INTO "vertical_crs" VALUES('EPSG','5831','Instantaneous Water Level depth',NULL,'EPSG','6498','EPSG','5113',0);
INSERT INTO "usage" VALUES('EPSG','4269','vertical_crs','EPSG','5831','EPSG','1262','EPSG','1200');
INSERT INTO "vertical_crs" VALUES('EPSG','5843','Ras Ghumays height',NULL,'EPSG','6499','EPSG','1146',0);
INSERT INTO "usage" VALUES('EPSG','4278','vertical_crs','EPSG','5843','EPSG','4225','EPSG','1142');
INSERT INTO "vertical_crs" VALUES('EPSG','5861','LAT depth',NULL,'EPSG','6498','EPSG','1080',0);
INSERT INTO "usage" VALUES('EPSG','4295','vertical_crs','EPSG','5861','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5862','LLWLT depth',NULL,'EPSG','6498','EPSG','1083',0);
INSERT INTO "usage" VALUES('EPSG','4296','vertical_crs','EPSG','5862','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5863','ISLW depth',NULL,'EPSG','6498','EPSG','1085',0);
INSERT INTO "usage" VALUES('EPSG','4297','vertical_crs','EPSG','5863','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5864','MLLWS depth',NULL,'EPSG','6498','EPSG','1086',0);
INSERT INTO "usage" VALUES('EPSG','4298','vertical_crs','EPSG','5864','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5865','MLWS depth',NULL,'EPSG','6498','EPSG','1087',0);
INSERT INTO "usage" VALUES('EPSG','4299','vertical_crs','EPSG','5865','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5866','MLLW depth',NULL,'EPSG','6498','EPSG','1089',0);
INSERT INTO "usage" VALUES('EPSG','4300','vertical_crs','EPSG','5866','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5867','MLW depth',NULL,'EPSG','6498','EPSG','1091',0);
INSERT INTO "usage" VALUES('EPSG','4301','vertical_crs','EPSG','5867','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5868','MHW height',NULL,'EPSG','6499','EPSG','1092',0);
INSERT INTO "usage" VALUES('EPSG','4302','vertical_crs','EPSG','5868','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5869','MHHW height',NULL,'EPSG','6499','EPSG','1090',0);
INSERT INTO "usage" VALUES('EPSG','4303','vertical_crs','EPSG','5869','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5870','MHWS height',NULL,'EPSG','6499','EPSG','1088',0);
INSERT INTO "usage" VALUES('EPSG','4304','vertical_crs','EPSG','5870','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5871','HHWLT height',NULL,'EPSG','6499','EPSG','1084',0);
INSERT INTO "usage" VALUES('EPSG','4305','vertical_crs','EPSG','5871','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5872','HAT height',NULL,'EPSG','6499','EPSG','1082',0);
INSERT INTO "usage" VALUES('EPSG','4306','vertical_crs','EPSG','5872','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5873','Low Water depth',NULL,'EPSG','6498','EPSG','1093',0);
INSERT INTO "usage" VALUES('EPSG','4307','vertical_crs','EPSG','5873','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5874','High Water height',NULL,'EPSG','6499','EPSG','1094',0);
INSERT INTO "usage" VALUES('EPSG','4308','vertical_crs','EPSG','5874','EPSG','1262','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','5941','NN2000 height',NULL,'EPSG','6499','EPSG','1096',0);
INSERT INTO "usage" VALUES('EPSG','4345','vertical_crs','EPSG','5941','EPSG','1352','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','6130','GCVD54 height (ft)',NULL,'EPSG','1030','EPSG','1097',0);
INSERT INTO "usage" VALUES('EPSG','4457','vertical_crs','EPSG','6130','EPSG','3185','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','6131','LCVD61 height (ft)',NULL,'EPSG','1030','EPSG','1098',0);
INSERT INTO "usage" VALUES('EPSG','4458','vertical_crs','EPSG','6131','EPSG','4121','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','6132','CBVD61 height (ft)',NULL,'EPSG','1030','EPSG','1099',0);
INSERT INTO "usage" VALUES('EPSG','4459','vertical_crs','EPSG','6132','EPSG','3207','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','6178','Cais da Pontinha - Funchal height',NULL,'EPSG','6499','EPSG','1101',0);
INSERT INTO "usage" VALUES('EPSG','4497','vertical_crs','EPSG','6178','EPSG','4125','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6179','Cais da Vila - Porto Santo height',NULL,'EPSG','6499','EPSG','1102',0);
INSERT INTO "usage" VALUES('EPSG','4498','vertical_crs','EPSG','6179','EPSG','3680','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6180','Cais das Velas height',NULL,'EPSG','6499','EPSG','1103',0);
INSERT INTO "usage" VALUES('EPSG','4499','vertical_crs','EPSG','6180','EPSG','2875','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6181','Horta height',NULL,'EPSG','6499','EPSG','1104',0);
INSERT INTO "usage" VALUES('EPSG','4500','vertical_crs','EPSG','6181','EPSG','2873','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6182','Cais da Madalena height',NULL,'EPSG','6499','EPSG','1105',0);
INSERT INTO "usage" VALUES('EPSG','4501','vertical_crs','EPSG','6182','EPSG','2874','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6183','Santa Cruz da Graciosa height',NULL,'EPSG','6499','EPSG','1106',0);
INSERT INTO "usage" VALUES('EPSG','4502','vertical_crs','EPSG','6183','EPSG','3681','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6184','Cais da Figueirinha - Angra do Heroismo height',NULL,'EPSG','6499','EPSG','1107',0);
INSERT INTO "usage" VALUES('EPSG','4503','vertical_crs','EPSG','6184','EPSG','2872','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6185','Santa Cruz das Flores height',NULL,'EPSG','6499','EPSG','1108',0);
INSERT INTO "usage" VALUES('EPSG','4504','vertical_crs','EPSG','6185','EPSG','1344','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6186','Cais da Vila do Porto height',NULL,'EPSG','6499','EPSG','1109',0);
INSERT INTO "usage" VALUES('EPSG','4505','vertical_crs','EPSG','6186','EPSG','4126','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6187','Ponta Delgada height',NULL,'EPSG','6499','EPSG','1110',0);
INSERT INTO "usage" VALUES('EPSG','4506','vertical_crs','EPSG','6187','EPSG','2871','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6357','NAVD88 depth',NULL,'EPSG','6498','EPSG','5103',0);
INSERT INTO "usage" VALUES('EPSG','4591','vertical_crs','EPSG','6357','EPSG','4161','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','6358','NAVD88 depth (ftUS)',NULL,'EPSG','1043','EPSG','5103',0);
INSERT INTO "usage" VALUES('EPSG','4592','vertical_crs','EPSG','6358','EPSG','3664','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','6359','NGVD29 depth (ftUS)',NULL,'EPSG','1043','EPSG','5102',0);
INSERT INTO "usage" VALUES('EPSG','4593','vertical_crs','EPSG','6359','EPSG','1323','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','6360','NAVD88 height (ftUS)',NULL,'EPSG','6497','EPSG','5103',0);
INSERT INTO "usage" VALUES('EPSG','4594','vertical_crs','EPSG','6360','EPSG','3664','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','6638','Tutuila 1962 height',NULL,'EPSG','6499','EPSG','1121',0);
INSERT INTO "usage" VALUES('EPSG','4859','vertical_crs','EPSG','6638','EPSG','2288','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6639','Guam 1963 height',NULL,'EPSG','6499','EPSG','1122',0);
INSERT INTO "usage" VALUES('EPSG','4860','vertical_crs','EPSG','6639','EPSG','3255','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6640','NMVD03 height',NULL,'EPSG','6499','EPSG','1119',0);
INSERT INTO "usage" VALUES('EPSG','4861','vertical_crs','EPSG','6640','EPSG','4171','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6641','PRVD02 height',NULL,'EPSG','6499','EPSG','1123',0);
INSERT INTO "usage" VALUES('EPSG','4862','vertical_crs','EPSG','6641','EPSG','3294','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6642','VIVD09 height',NULL,'EPSG','6499','EPSG','1124',0);
INSERT INTO "usage" VALUES('EPSG','4863','vertical_crs','EPSG','6642','EPSG','3330','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6643','ASVD02 height',NULL,'EPSG','6499','EPSG','1125',0);
INSERT INTO "usage" VALUES('EPSG','4864','vertical_crs','EPSG','6643','EPSG','2288','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6644','GUVD04 height',NULL,'EPSG','6499','EPSG','1126',0);
INSERT INTO "usage" VALUES('EPSG','4865','vertical_crs','EPSG','6644','EPSG','3255','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6647','CGVD2013(CGG2013) height',NULL,'EPSG','6499','EPSG','1127',0);
INSERT INTO "usage" VALUES('EPSG','4867','vertical_crs','EPSG','6647','EPSG','1061','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','6693','JSLD72 height',NULL,'EPSG','6499','EPSG','1129',0);
INSERT INTO "usage" VALUES('EPSG','4912','vertical_crs','EPSG','6693','EPSG','4168','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','6694','JGD2000 (vertical) height',NULL,'EPSG','6499','EPSG','1130',0);
INSERT INTO "usage" VALUES('EPSG','4913','vertical_crs','EPSG','6694','EPSG','3263','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','6695','JGD2011 (vertical) height',NULL,'EPSG','6499','EPSG','1131',0);
INSERT INTO "usage" VALUES('EPSG','4914','vertical_crs','EPSG','6695','EPSG','3263','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','6916','SHD height',NULL,'EPSG','6499','EPSG','1140',0);
INSERT INTO "usage" VALUES('EPSG','5039','vertical_crs','EPSG','6916','EPSG','1210','EPSG','1144');
INSERT INTO "vertical_crs" VALUES('EPSG','7446','Famagusta 1960 height',NULL,'EPSG','6499','EPSG','1148',0);
INSERT INTO "usage" VALUES('EPSG','5289','vertical_crs','EPSG','7446','EPSG','3236','EPSG','1142');
INSERT INTO "vertical_crs" VALUES('EPSG','7447','PNG08 height',NULL,'EPSG','6499','EPSG','1149',0);
INSERT INTO "usage" VALUES('EPSG','5290','vertical_crs','EPSG','7447','EPSG','4384','EPSG','1027');
INSERT INTO "vertical_crs" VALUES('EPSG','7651','Kumul 34 height',NULL,'EPSG','6499','EPSG','1150',0);
INSERT INTO "usage" VALUES('EPSG','5409','vertical_crs','EPSG','7651','EPSG','4013','EPSG','1029');
INSERT INTO "vertical_crs" VALUES('EPSG','7652','Kiunga height',NULL,'EPSG','6499','EPSG','1151',0);
INSERT INTO "usage" VALUES('EPSG','5410','vertical_crs','EPSG','7652','EPSG','4383','EPSG','1029');
INSERT INTO "vertical_crs" VALUES('EPSG','7699','DHHN12 height',NULL,'EPSG','6499','EPSG','1161',0);
INSERT INTO "usage" VALUES('EPSG','5436','vertical_crs','EPSG','7699','EPSG','3339','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','7700','Latvia 2000 height',NULL,'EPSG','6499','EPSG','1162',0);
INSERT INTO "usage" VALUES('EPSG','5437','vertical_crs','EPSG','7700','EPSG','3268','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','7707','ODN (Offshore) height',NULL,'EPSG','6499','EPSG','1164',0);
INSERT INTO "usage" VALUES('EPSG','5439','vertical_crs','EPSG','7707','EPSG','4391','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','7832','POM96 height',NULL,'EPSG','6499','EPSG','1171',0);
INSERT INTO "usage" VALUES('EPSG','5497','vertical_crs','EPSG','7832','EPSG','4425','EPSG','1029');
INSERT INTO "vertical_crs" VALUES('EPSG','7837','DHHN2016 height',NULL,'EPSG','6499','EPSG','1170',0);
INSERT INTO "usage" VALUES('EPSG','5498','vertical_crs','EPSG','7837','EPSG','3339','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','7839','NZVD2016 height',NULL,'EPSG','6499','EPSG','1169',0);
INSERT INTO "usage" VALUES('EPSG','5499','vertical_crs','EPSG','7839','EPSG','1175','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','7841','POM08 height',NULL,'EPSG','6499','EPSG','1172',0);
INSERT INTO "usage" VALUES('EPSG','5500','vertical_crs','EPSG','7841','EPSG','4425','EPSG','1029');
INSERT INTO "vertical_crs" VALUES('EPSG','7888','Jamestown 1971 height',NULL,'EPSG','6499','EPSG','1175',0);
INSERT INTO "usage" VALUES('EPSG','5530','vertical_crs','EPSG','7888','EPSG','3183','EPSG','1153');
INSERT INTO "vertical_crs" VALUES('EPSG','7889','St. Helena Tritan 2011 height',NULL,'EPSG','6499','EPSG','1176',0);
INSERT INTO "usage" VALUES('EPSG','5531','vertical_crs','EPSG','7889','EPSG','3183','EPSG','1145');
INSERT INTO "vertical_crs" VALUES('EPSG','7890','SHVD2015 height',NULL,'EPSG','6499','EPSG','1177',0);
INSERT INTO "usage" VALUES('EPSG','5532','vertical_crs','EPSG','7890','EPSG','3183','EPSG','1027');
INSERT INTO "vertical_crs" VALUES('EPSG','7962','Poolbeg height (m)',NULL,'EPSG','6499','EPSG','5152',0);
INSERT INTO "usage" VALUES('EPSG','5568','vertical_crs','EPSG','7962','EPSG','1305','EPSG','1203');
INSERT INTO "vertical_crs" VALUES('EPSG','7968','NGVD29 height (m)',NULL,'EPSG','6499','EPSG','5102',0);
INSERT INTO "usage" VALUES('EPSG','5569','vertical_crs','EPSG','7968','EPSG','1323','EPSG','1203');
INSERT INTO "vertical_crs" VALUES('EPSG','7976','HKPD depth',NULL,'EPSG','6498','EPSG','5135',0);
INSERT INTO "usage" VALUES('EPSG','5570','vertical_crs','EPSG','7976','EPSG','3334','EPSG','1203');
INSERT INTO "vertical_crs" VALUES('EPSG','7979','KOC WD height',NULL,'EPSG','6499','EPSG','5187',0);
INSERT INTO "usage" VALUES('EPSG','5571','vertical_crs','EPSG','7979','EPSG','3267','EPSG','1205');
INSERT INTO "vertical_crs" VALUES('EPSG','8050','MSL height (ft)',NULL,'EPSG','1030','EPSG','5100',0);
INSERT INTO "usage" VALUES('EPSG','5600','vertical_crs','EPSG','8050','EPSG','1262','EPSG','1199');
INSERT INTO "vertical_crs" VALUES('EPSG','8051','MSL depth (ft)',NULL,'EPSG','6495','EPSG','5100',0);
INSERT INTO "usage" VALUES('EPSG','5601','vertical_crs','EPSG','8051','EPSG','1262','EPSG','1199');
INSERT INTO "vertical_crs" VALUES('EPSG','8052','MSL height (ftUS)',NULL,'EPSG','6497','EPSG','5100',0);
INSERT INTO "usage" VALUES('EPSG','5602','vertical_crs','EPSG','8052','EPSG','1245','EPSG','1199');
INSERT INTO "vertical_crs" VALUES('EPSG','8053','MSL depth (ftUS)',NULL,'EPSG','1043','EPSG','5100',0);
INSERT INTO "usage" VALUES('EPSG','5603','vertical_crs','EPSG','8053','EPSG','1245','EPSG','1199');
INSERT INTO "vertical_crs" VALUES('EPSG','8089','ISH2004 height',NULL,'EPSG','6499','EPSG','1190',0);
INSERT INTO "usage" VALUES('EPSG','5616','vertical_crs','EPSG','8089','EPSG','3262','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','8228','NAVD88 height (ft)',NULL,'EPSG','1030','EPSG','5103',0);
INSERT INTO "usage" VALUES('EPSG','5736','vertical_crs','EPSG','8228','EPSG','4464','EPSG','1144');
INSERT INTO "vertical_crs" VALUES('EPSG','8266','GVR2000 height',NULL,'EPSG','6499','EPSG','1199',0);
INSERT INTO "usage" VALUES('EPSG','5758','vertical_crs','EPSG','8266','EPSG','4461','EPSG','1153');
INSERT INTO "vertical_crs" VALUES('EPSG','8267','GVR2016 height',NULL,'EPSG','6499','EPSG','1200',0);
INSERT INTO "usage" VALUES('EPSG','5759','vertical_crs','EPSG','8267','EPSG','4454','EPSG','1153');
INSERT INTO "vertical_crs" VALUES('EPSG','8357','Baltic 1957 height',NULL,'EPSG','6499','EPSG','1202',0);
INSERT INTO "usage" VALUES('EPSG','5803','vertical_crs','EPSG','8357','EPSG','1306','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','8358','Baltic 1957 depth',NULL,'EPSG','6498','EPSG','1202',0);
INSERT INTO "usage" VALUES('EPSG','5804','vertical_crs','EPSG','8358','EPSG','1306','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','8378','EPSG example wellbore local vertical CRS',NULL,'EPSG','1049','EPSG','1205',0);
INSERT INTO "usage" VALUES('EPSG','5808','vertical_crs','EPSG','8378','EPSG','4393','EPSG','1226');
INSERT INTO "vertical_crs" VALUES('EPSG','8434','Macao height',NULL,'EPSG','6499','EPSG','1210',0);
INSERT INTO "usage" VALUES('EPSG','5831','vertical_crs','EPSG','8434','EPSG','1147','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','8675','N43 height',NULL,'EPSG','6499','EPSG','1213',0);
INSERT INTO "usage" VALUES('EPSG','5861','vertical_crs','EPSG','8675','EPSG','4522','EPSG','1179');
INSERT INTO "vertical_crs" VALUES('EPSG','8690','SVS2010 height',NULL,'EPSG','6499','EPSG','1215',0);
INSERT INTO "usage" VALUES('EPSG','5871','vertical_crs','EPSG','8690','EPSG','3307','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','8691','SRB_VRS12 height',NULL,'EPSG','6499','EPSG','1216',0);
INSERT INTO "usage" VALUES('EPSG','5872','vertical_crs','EPSG','8691','EPSG','4543','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','8841','MVGC height',NULL,'EPSG','6499','EPSG','1219',0);
INSERT INTO "usage" VALUES('EPSG','6006','vertical_crs','EPSG','8841','EPSG','3303','EPSG','1181');
INSERT INTO "vertical_crs" VALUES('EPSG','8881','Vienna height',NULL,'EPSG','6499','EPSG','1267',0);
INSERT INTO "usage" VALUES('EPSG','13973','vertical_crs','EPSG','8881','EPSG','4585','EPSG','1248');
INSERT INTO "vertical_crs" VALUES('EPSG','8897','EPSG example wellbore local vertical CRS (ft)',NULL,'EPSG','1050','EPSG','1205',0);
INSERT INTO "usage" VALUES('EPSG','6013','vertical_crs','EPSG','8897','EPSG','4393','EPSG','1226');
INSERT INTO "vertical_crs" VALUES('EPSG','8904','TWVD 2001 height',NULL,'EPSG','6499','EPSG','1224',0);
INSERT INTO "usage" VALUES('EPSG','6020','vertical_crs','EPSG','8904','EPSG','3982','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','8911','DACR52 height',NULL,'EPSG','6499','EPSG','1226',0);
INSERT INTO "usage" VALUES('EPSG','6027','vertical_crs','EPSG','8911','EPSG','3232','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9130','IGN 2008 LD height',NULL,'EPSG','6499','EPSG','1250',0);
INSERT INTO "usage" VALUES('EPSG','6138','vertical_crs','EPSG','9130','EPSG','2893','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9245','CGVD2013(CGG2013a) height',NULL,'EPSG','6499','EPSG','1256',0);
INSERT INTO "usage" VALUES('EPSG','13877','vertical_crs','EPSG','9245','EPSG','1061','EPSG','1180');
INSERT INTO "vertical_crs" VALUES('EPSG','9255','SRVN16 height',NULL,'EPSG','6499','EPSG','1260',0);
INSERT INTO "usage" VALUES('EPSG','13908','vertical_crs','EPSG','9255','EPSG','4573','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9274','EVRF2000 Austria height',NULL,'EPSG','6499','EPSG','1261',0);
INSERT INTO "usage" VALUES('EPSG','13915','vertical_crs','EPSG','9274','EPSG','1037','EPSG','1027');
INSERT INTO "vertical_crs" VALUES('EPSG','9279','SA LLD height',NULL,'EPSG','6499','EPSG','1262',0);
INSERT INTO "usage" VALUES('EPSG','13916','vertical_crs','EPSG','9279','EPSG','3309','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9287','LAT NL depth',NULL,'EPSG','6498','EPSG','1290',0);
INSERT INTO "usage" VALUES('EPSG','14122','vertical_crs','EPSG','9287','EPSG','1630','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','9288','MSL NL depth',NULL,'EPSG','6498','EPSG','1270',0);
INSERT INTO "usage" VALUES('EPSG','14123','vertical_crs','EPSG','9288','EPSG','1630','EPSG','1265');
INSERT INTO "vertical_crs" VALUES('EPSG','9303','HS2-VRF height',NULL,'EPSG','6499','EPSG','1265',0);
INSERT INTO "usage" VALUES('EPSG','14049','vertical_crs','EPSG','9303','EPSG','4582','EPSG','1260');
INSERT INTO "vertical_crs" VALUES('EPSG','9335','KSA-VRF14 height',NULL,'EPSG','6499','EPSG','1269',0);
INSERT INTO "usage" VALUES('EPSG','13922','vertical_crs','EPSG','9335','EPSG','3303','EPSG','1181');
INSERT INTO "vertical_crs" VALUES('EPSG','9351','NGNC08 height',NULL,'EPSG','6499','EPSG','1255',0);
INSERT INTO "usage" VALUES('EPSG','13977','vertical_crs','EPSG','9351','EPSG','3430','EPSG','1026');
INSERT INTO "vertical_crs" VALUES('EPSG','9389','EVRF2019 height',NULL,'EPSG','6499','EPSG','1274',0);
INSERT INTO "usage" VALUES('EPSG','14658','vertical_crs','EPSG','9389','EPSG','4608','EPSG','1261');
INSERT INTO "vertical_crs" VALUES('EPSG','9390','EVRF2019 mean-tide height',NULL,'EPSG','6499','EPSG','1287',0);
INSERT INTO "usage" VALUES('EPSG','14659','vertical_crs','EPSG','9390','EPSG','4608','EPSG','1262');
INSERT INTO "vertical_crs" VALUES('EPSG','9392','Mallorca height',NULL,'EPSG','6499','EPSG','1275',0);
INSERT INTO "usage" VALUES('EPSG','14031','vertical_crs','EPSG','9392','EPSG','4602','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9393','Menorca height',NULL,'EPSG','6499','EPSG','1276',0);
INSERT INTO "usage" VALUES('EPSG','14032','vertical_crs','EPSG','9393','EPSG','4603','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9394','Ibiza height',NULL,'EPSG','6499','EPSG','1277',0);
INSERT INTO "usage" VALUES('EPSG','14033','vertical_crs','EPSG','9394','EPSG','4604','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9395','Lanzarote height',NULL,'EPSG','6499','EPSG','1278',0);
INSERT INTO "usage" VALUES('EPSG','14034','vertical_crs','EPSG','9395','EPSG','4591','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9396','Fuerteventura height',NULL,'EPSG','6499','EPSG','1279',0);
INSERT INTO "usage" VALUES('EPSG','14035','vertical_crs','EPSG','9396','EPSG','4592','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9397','Gran Canaria height',NULL,'EPSG','6499','EPSG','1280',0);
INSERT INTO "usage" VALUES('EPSG','14036','vertical_crs','EPSG','9397','EPSG','4593','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9398','Tenerife height',NULL,'EPSG','6499','EPSG','1281',0);
INSERT INTO "usage" VALUES('EPSG','14037','vertical_crs','EPSG','9398','EPSG','4594','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9399','La Gomera height',NULL,'EPSG','6499','EPSG','1282',0);
INSERT INTO "usage" VALUES('EPSG','14038','vertical_crs','EPSG','9399','EPSG','4595','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9400','La Palma height',NULL,'EPSG','6499','EPSG','1283',0);
INSERT INTO "usage" VALUES('EPSG','14039','vertical_crs','EPSG','9400','EPSG','4596','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9401','El Hierro height',NULL,'EPSG','6499','EPSG','1284',0);
INSERT INTO "usage" VALUES('EPSG','14040','vertical_crs','EPSG','9401','EPSG','4597','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9402','Ceuta 2 height',NULL,'EPSG','6499','EPSG','1285',0);
INSERT INTO "usage" VALUES('EPSG','14041','vertical_crs','EPSG','9402','EPSG','4590','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9451','BI height',NULL,'EPSG','6499','EPSG','1288',0);
INSERT INTO "usage" VALUES('EPSG','14087','vertical_crs','EPSG','9451','EPSG','4606','EPSG','1026');
INSERT INTO "vertical_crs" VALUES('EPSG','9458','AVWS height',NULL,'EPSG','6499','EPSG','1292',0);
INSERT INTO "usage" VALUES('EPSG','14231','vertical_crs','EPSG','9458','EPSG','4177','EPSG','1264');
INSERT INTO "vertical_crs" VALUES('EPSG','9471','INAGeoid2020 height',NULL,'EPSG','6499','EPSG','1294',0);
INSERT INTO "usage" VALUES('EPSG','14153','vertical_crs','EPSG','9471','EPSG','1122','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9650','Baltic 1986 height',NULL,'EPSG','6499','EPSG','1296',0);
INSERT INTO "usage" VALUES('EPSG','15032','vertical_crs','EPSG','9650','EPSG','3293','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9651','EVRF2007-PL height',NULL,'EPSG','6499','EPSG','1297',0);
INSERT INTO "usage" VALUES('EPSG','15034','vertical_crs','EPSG','9651','EPSG','3293','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9663','EH2000 height',NULL,'EPSG','6499','EPSG','1298',0);
INSERT INTO "usage" VALUES('EPSG','14747','vertical_crs','EPSG','9663','EPSG','3246','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9666','LAS07 height',NULL,'EPSG','6499','EPSG','1299',0);
INSERT INTO "usage" VALUES('EPSG','14754','vertical_crs','EPSG','9666','EPSG','3272','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9669','BGS2005 height',NULL,'EPSG','6499','EPSG','1300',0);
INSERT INTO "usage" VALUES('EPSG','14770','vertical_crs','EPSG','9669','EPSG','3224','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9672','CD Norway depth',NULL,'EPSG','6498','EPSG','1301',0);
INSERT INTO "usage" VALUES('EPSG','14776','vertical_crs','EPSG','9672','EPSG','4615','EPSG','1198');
INSERT INTO "vertical_crs" VALUES('EPSG','9675','Pago Pago 2020 height',NULL,'EPSG','6499','EPSG','1302',0);
INSERT INTO "usage" VALUES('EPSG','14793','vertical_crs','EPSG','9675','EPSG','2288','EPSG','1026');
INSERT INTO "vertical_crs" VALUES('EPSG','9681','NVD 1992 height',NULL,'EPSG','6499','EPSG','1303',0);
INSERT INTO "usage" VALUES('EPSG','14851','vertical_crs','EPSG','9681','EPSG','3217','EPSG','1181');
INSERT INTO "vertical_crs" VALUES('EPSG','9721','Catania 1965 height',NULL,'EPSG','6499','EPSG','1306',0);
INSERT INTO "usage" VALUES('EPSG','15276','vertical_crs','EPSG','9721','EPSG','2340','EPSG','1178');
INSERT INTO "vertical_crs" VALUES('EPSG','9722','Cagliari 1956 height',NULL,'EPSG','6499','EPSG','1307',0);
INSERT INTO "usage" VALUES('EPSG','15278','vertical_crs','EPSG','9722','EPSG','2339','EPSG','1178');
Loaded 100 of 841 files, more files were not shown because too many files have changed in this diff. Show more