Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8aeed60fd1 | ||
|
|
60fe2a4c79 | ||
|
|
ebae22ca0e | ||
|
|
d94a369d1e | ||
|
|
e3d2e0253f | ||
|
|
0ddc063421 | ||
|
|
92b4702029 | ||
|
|
93b5898ef5 | ||
|
|
05bfe14e4b | ||
|
|
94cfdfec9d | ||
|
|
811904ff9e | ||
|
|
fd5ca759eb | ||
|
|
f33a3b364b | ||
|
|
b1daaa9ca5 | ||
|
|
ef0fd8f809 | ||
|
|
079e685255 | ||
|
|
db42199815 | ||
|
|
72ca69a5d9 | ||
|
|
888da00d26 | ||
|
|
5a385632c5 | ||
|
|
2989fcffd2 | ||
|
|
523b6f703b | ||
|
|
dd91c93ca4 | ||
|
|
3b4862042d | ||
|
|
93e3ec8391 | ||
|
|
e5c0d97810 | ||
|
|
58b69a9fdf | ||
|
|
16a0b9ecc3 | ||
|
|
38339dfb57 | ||
|
|
3dc92ad701 | ||
|
|
6a37d15001 | ||
|
|
918134258b | ||
|
|
a8f58871c2 | ||
|
|
edf2d9e4f3 | ||
|
|
3dc7d7d1d1 | ||
|
|
aff43892f4 | ||
|
|
e7c9adbd8c | ||
|
|
cc8930eaf7 | ||
|
|
42b9c119ad | ||
|
|
5cd3152e44 | ||
|
|
1e68176bf3 | ||
|
|
bd85834f84 | ||
|
|
088f5f8475 | ||
|
|
1c1585cb15 | ||
|
|
ed32eb0442 | ||
|
|
89a6dd54a8 | ||
|
|
3331838c8a | ||
|
|
a9202e990f | ||
|
|
6511d4583c | ||
|
|
9edecaaab2 | ||
|
|
578264acca | ||
|
|
76aed5878d | ||
|
|
59b1db7d0a | ||
|
|
a861356b21 | ||
|
|
cdcd5a036b | ||
|
|
a36f2f50bb |
+1
-1
@@ -95,9 +95,9 @@ install_manifest.txt
|
||||
/data/tv_out
|
||||
|
||||
# docs
|
||||
tmp_breathe
|
||||
/docs/.doxygen_up_to_date
|
||||
/docs/build
|
||||
/docs/plot/images
|
||||
/latex
|
||||
|
||||
# m4
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
# .readthedocs.yaml
|
||||
# Read the Docs configuration file
|
||||
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||
|
||||
# Required
|
||||
version: 2
|
||||
|
||||
build:
|
||||
os: "ubuntu-22.04"
|
||||
tools:
|
||||
python: "mambaforge-4.10"
|
||||
|
||||
jobs:
|
||||
post_checkout:
|
||||
# Cancel building pull requests when there aren't changed in the docs directory or YAML file.
|
||||
# You can add any other files or directories that you'd like here as well,
|
||||
# like your docs requirements file, or other files that will change your docs build.
|
||||
#
|
||||
# If there are no changes (git diff exits with 0) we force the command to return with 183.
|
||||
# This is a special exit code on Read the Docs that will cancel the build immediately.
|
||||
- |
|
||||
if [ "$READTHEDOCS_VERSION_TYPE" = "external" ] && git diff --quiet origin/7.1 -- docs/ .readthedocs.yaml;
|
||||
then
|
||||
exit 183;
|
||||
fi
|
||||
- (git --no-pager log --pretty="tformat:%s -- %b" -1 | grep -viq "skip ci") || exit 183
|
||||
pre_build:
|
||||
- ./docs/rtd/pre_build.sh
|
||||
- ./scripts/doxygen.sh
|
||||
- ./docs/rtd/plot.sh
|
||||
post_build:
|
||||
- ./docs/rtd/post_build.sh
|
||||
|
||||
apt_packages:
|
||||
- cmake
|
||||
- ninja-build
|
||||
- g++
|
||||
- sqlite3
|
||||
- libsqlite3-dev
|
||||
- libtiff-dev
|
||||
- libcurl4-openssl-dev
|
||||
|
||||
formats:
|
||||
- pdf
|
||||
- epub
|
||||
|
||||
conda:
|
||||
environment: docs/environment.yml
|
||||
|
||||
sphinx:
|
||||
configuration: docs/source/conf.py
|
||||
fail_on_warning: true
|
||||
+2
-2
@@ -110,9 +110,9 @@ message(STATUS "Configuring PROJ:")
|
||||
#PROJ version information
|
||||
################################################################################
|
||||
include(ProjVersion)
|
||||
proj_version(MAJOR 7 MINOR 1 PATCH 0)
|
||||
proj_version(MAJOR 7 MINOR 1 PATCH 1)
|
||||
set(PROJ_API_VERSION "20")
|
||||
set(PROJ_BUILD_VERSION "20.0.1")
|
||||
set(PROJ_BUILD_VERSION "20.1.1")
|
||||
|
||||
################################################################################
|
||||
# Build features and variants
|
||||
|
||||
+1
-1
@@ -179,7 +179,7 @@ See step 1.6 above. Do not rename the archives with RC postfixes.
|
||||
|
||||
These vim substitutions are helpfull when converting NEWS to rst:
|
||||
|
||||
:!(\#(\d\{4}\))!(`\#\1 <https://github.com/OSGeo/issues/\1>`_)!
|
||||
:s!(\#\(\d\{4}\))!(`\#\1 <https://github.com/OSGeo/issues/\1>`_)!
|
||||
:s/^o/*/
|
||||
|
||||
- Update download links in `docs/source/download.rst`
|
||||
|
||||
@@ -1,9 +1,63 @@
|
||||
7.1.1 Release Notes
|
||||
-------------------
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
o Added various Brazillian grids to the database #2277
|
||||
|
||||
o Added geoid file for Canary Islands to the database #2312
|
||||
|
||||
o Updated EPSG database to version 9.8.15 #2310
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
o WKT parser: do not raise warning when parsing a WKT2:2015 TIMECRS
|
||||
whose TIMEUNIT is at the CS level, and not inside #2281
|
||||
|
||||
o Parse '+proj=something_not_latlong +vunits=' without +geoidgrids as a
|
||||
Projected3D CRS and not a compound CRS with a unknown datum #2289
|
||||
|
||||
o C API: Avoid crashing due to missing SANITIZE_CTX() in entry points #2293
|
||||
|
||||
o CMake build: Check "target_clones" before use #2297
|
||||
|
||||
o PROJ string export of +proj=krovak +czech: make sure we export +czech… #2301
|
||||
|
||||
o Helmert 2D: do not require a useless +convention= parameter #2305
|
||||
|
||||
o Fix a few spelling errors ("vgridshit" vs. "vgridshift") #2307
|
||||
|
||||
o Fix ability to identify EPSG:2154 as a candidate for 'RGF93_Lambert_93' #2316
|
||||
|
||||
o WKT importer: tune for Oracle WKT and 'Lambert Conformal Conic' #2322
|
||||
|
||||
o Revert compiler generated Fused Multiply Addition optimized routines #2328
|
||||
|
||||
THANKS TO
|
||||
---------
|
||||
|
||||
Jeff McKenna
|
||||
Kai Pastor
|
||||
Javier Jimenez Shaw
|
||||
Kristian Evers
|
||||
Even Rouault
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
7.1.0 Release Notes
|
||||
-------------------
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
+ New transformations:
|
||||
|
||||
o Add a +proj=defmodel transformation for multi-component time-based deformation models (#2206)
|
||||
|
||||
+ New projections:
|
||||
|
||||
o Add square conformal projections from libproject:
|
||||
@@ -67,6 +121,10 @@
|
||||
use discard change of ellipsoidal height if a Helmert transformation is
|
||||
involved (#2227)
|
||||
|
||||
o proj_list_units() deprecated, superceeded by proj_get_units_from_database()
|
||||
|
||||
o proj_list_angular_units() deprecated, superceeded by proj_get_units_from_database()
|
||||
|
||||
+ Optimizations:
|
||||
|
||||
o tmerc/utm: add a +algo=auto/evenden_snyder/poder_engsager parameter (#2030)
|
||||
@@ -127,6 +185,8 @@
|
||||
|
||||
o Fix access violation in proj_context_get_database_metadata (#2260)
|
||||
|
||||
o Fail gracefully when calling API functions with invalid input (#2272)
|
||||
|
||||
THANKS TO
|
||||
---------
|
||||
|
||||
|
||||
+1
-22
@@ -1,7 +1,7 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT([PROJ], [7.1.0],
|
||||
AC_INIT([PROJ], [7.1.1],
|
||||
[https://github.com/OSGeo/PROJ/issues], proj, [https://proj.org])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_LANG(C)
|
||||
@@ -127,27 +127,6 @@ AC_DEFINE_UNQUOTED(HAVE_GCC_WARNING_ZERO_AS_NULL_POINTER_CONSTANT, 1,
|
||||
fi
|
||||
AC_LANG_POP([C++])
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl Check if __attribute__((target_clones("fma","default"))) works
|
||||
dnl This is needed for example on Alpine Linux where for some reason, building
|
||||
dnl such tagged functions fails with 'error: the call requires 'ifunc', which is not supported by this target'
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
TARGET_CLONES_FMA_FLAGS=""
|
||||
AC_MSG_CHECKING([if target_clones_fma works])
|
||||
SAVED_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||
[[
|
||||
__attribute__((target_clones("fma","default"))) void foo() {}
|
||||
]])],
|
||||
[AC_MSG_RESULT([yes])]
|
||||
[TARGET_CLONES_FMA_FLAGS="-DTARGET_CLONES_FMA_ALLOWED"],
|
||||
[AC_MSG_RESULT([no])])
|
||||
CFLAGS="$SAVED_CFLAGS"
|
||||
AC_SUBST(TARGET_CLONES_FMA_FLAGS,$TARGET_CLONES_FMA_FLAGS)
|
||||
|
||||
|
||||
dnl ---------------------------------------------------------------------------
|
||||
dnl Check for --enable-lto
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$id": "https://proj.org/schemas/v0.2/projjson.schema.json",
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"description": "Schema for PROJJSON",
|
||||
"description": "Schema for PROJJSON (v0.2.1)",
|
||||
"$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": [
|
||||
@@ -756,7 +756,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 +912,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" },
|
||||
|
||||
+53
-5
@@ -347,7 +347,7 @@ INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1147','ONGD14','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1031','D48','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6805','MGI (Ferro)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1033','RGRDC 2005','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6728','Pico de las Nieves','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5207','HVRD71','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6728','PN84','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1027','EGM2008','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1152','WGS 84 (G730)','EPSG');
|
||||
@@ -356,10 +356,19 @@ INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5203','EGM84','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1154','WGS 84 (G1150)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5171','EGM96','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1155','WGS 84 (G1674)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1273','AbInvA96_2020-IRF','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6903','Madrid','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1156','WGS 84 (G1762)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1157','PZ-90.02','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1158','PZ-90.11','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1274','EVRF2019','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1275','REDNAP','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1276','REDNAP','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1277','REDNAP','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1160','Kyrg-06','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1286','PN68','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1278','REDNAP','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1279','REDNAP','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1165','ITRF2014','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6818','Systém Jednotnej trigonometrickej siete katastrálnej (Ferro)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1167','BGS2005','EPSG');
|
||||
@@ -377,6 +386,7 @@ INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1173','WGS 84 Tritan St
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1177','SHVD2015','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1180','ETRF91','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1178','ETRF89','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1280','REDNAP','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1179','ETRF90','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1181','ETRF92','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1182','ETRF93','EPSG');
|
||||
@@ -387,6 +397,7 @@ INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1186','ETRF2000','EPSG'
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1176','MSL Tritan','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1175','MSL 1971','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1176','St. Helena Tritan 2011','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1281','REDNAP','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1193','NAD83(CSRS)v2','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1187','ISN2016','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1190','ISH2004','EPSG');
|
||||
@@ -464,6 +475,7 @@ INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1237','SIRGAS Multi-Yea
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1238','SIRGAS-CON SIR11P01','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1238','SIRGAS Multi-Year Solution 2011','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1035','REGCAN95','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1282','REDNAP','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6761','HTRS96','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1047','RRAF91','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1251','KOSOVAREF12','EPSG');
|
||||
@@ -482,11 +494,19 @@ INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1260','SRVN16','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6160','Quiñi-Huao','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1261','EVRF2000 Austria','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1262','SA LLD','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1264','HS2-IRF','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1263','ONGD17','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1269','KSA-VRF14','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1265','HS2-VRF','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5207','Croatian Vertical Reference System 1971','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1255','NGNC08','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1268','KSA-GRF17','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1266','TPEN11-IRF','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1283','REDNAP','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1284','REDNAP','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1285','REDNAP','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1243','SIRGAS-Chile 2010','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1287','EVRF2019mean','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1042','Red Geodesica Nacional 1992','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1046','Morro do Papagaio','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1046','Island of Principe datum','EPSG');
|
||||
@@ -2761,7 +2781,7 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2058','ED50(ED77) / UTM
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2059','ED50(ED77) / UTM 39N','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2060','ED50(ED77) / UTM 40N','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2061','ED50(ED77) / UTM 41N','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2062','Madrid (Madrid) / Spain','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2062','Madrid (Madrid) / Spain LCC','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2063','Dabola 1981 / UTM 28N','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2064','Dabola 1981 / UTM 29N','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2104','Lake / La Rosa Grid','EPSG');
|
||||
@@ -4585,9 +4605,9 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7535','NAD83(2011) / WIS
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7535','NAD83(2011) / WISCRS Fond du Lac (m)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7561','WISCRS Menominee (m)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7548','WISCRS Grant (m)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4728','Pico de las Nieves','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4728','PN84','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4728','Pico de las Nieves 1984','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7538','WISCRS Columbia (m)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','5610','HR_HRVD71 / NOH','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7580','WISCRS Walworth (m)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7562','WISCRS Monroe (m)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7564','WISCRS Oneida (m)','EPSG');
|
||||
@@ -4719,6 +4739,9 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7617','WISCRS Lincoln (f
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7638','WISCRS Vilas (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7618','WISCRS Marathon (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7639','WISCRS Walworth (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','9377','MAGNA-SIRGAS / CTM12','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','9387','ETRS89 / AbInvA96_2020 SnakeGrid','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','9388','ETRS89 / AbInvA96_2020 SnakeGrid + Newlyn height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7640','WISCRS Washburn (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7641','WISCRS Washington (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7642','WISCRS Waukesha (ftUS)','EPSG');
|
||||
@@ -4727,12 +4750,19 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7644','WISCRS Waushara (
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7645','WISCRS Wood (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6316','Macedonia State Coordinate System zone 7','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3857','Web Mercator','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','9391','BGS2005 / UTM zone 35 (E-N)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5634','REGCAN95 - LCC','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','9400','REDNAP height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','9389','EVRF2019_AMST / NH','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','9392','REDNAP height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7692','Kyrg06-68','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7693','Kyrg06-71','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7694','Kyrg06-74','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7695','Kyrg06-77','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7696','Kyrg06-80','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','7700','LAS-2000 height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5635','REGCAN95 - LAEA','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','9401','REDNAP height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','5754','Poolbeg height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7791','RDN2008 / UTM zone 32N (E-N)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7792','RDN2008 / TM33 (E-N)','EPSG');
|
||||
@@ -4743,7 +4773,7 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7800','CS2005 zone 35','
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7794','RDN2008 / Fuso Italia (E-N)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7795','RDN2008 / Fuso 12 (E-N)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7799','CS2005 zone 34','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7799','Coordinate System 2005 zone 35','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7799','Coordinate System 2005 zone 34','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','7815','WGS 84 (Original)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7800','Coordinate System 2005 zone 35','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7803','BGS2005 / UTM zone 34N (E-N)','EPSG');
|
||||
@@ -4780,6 +4810,7 @@ INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4919','419','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4919','ITRF2000 - XYZ','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4918','349','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7887','SHGD2015 / UTM zone 30S','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','9393','REDNAP height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7887','St. Helena Map Grid 2015','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','7888','MSL 1971 height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','7889','MSL Tritan height','EPSG');
|
||||
@@ -4796,6 +4827,7 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2315','Campo Inchauspe /
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2316','Campo Inchauspe /UTM 20S','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7992','Malongo 1987 / UTM 33S','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','7976','Hong Kong Principal Datum depth','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2062','Madrid - LCC','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','8042','S-SC','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','8042','Stable Cadastre','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','8043','Stable cadastre','EPSG');
|
||||
@@ -6019,14 +6051,30 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','9285','Pampa del Castill
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','9285','Pampa del Castillo / Argentina zone 3','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4289','RD-Bessel','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','4776','New Beijing / 3GK zone 40','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','9306','ETRS89 / HS2P1+14 Snake + HS2-VRF height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','4777','New Beijing / 3GK zone 41','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','9300','ETRS89 / HS2P1+14 Snake','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','5753','NGNC height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','9311','US National Atlas EA','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','9354','WGS 84 / IBCSO PS','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','9394','REDNAP height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','31289','MGI (Ferro) / M31','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','31290','MGI (Ferro) / M34','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','31288','MGI (Ferro) / M28','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','9402','REDNAP height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','9395','REDNAP height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','9396','REDNAP height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','9403','Pico de las Nieves 1968','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','9397','REDNAP height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4903','Madrid','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','9398','REDNAP height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','9399','REDNAP height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','8690','SI_KOP / NH','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','5195','SI_TRIE / NOH','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','5195','MK_TRIE / NOH','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','4826','WGS 84 / Cape Verde New','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','9390','EVRF2019mean_AMST / NH','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','9450','ETRS89 + Belfast Lough height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','4647','ETRS89 / UTM zone 32N','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4824','Morro do Papagaio','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4824','Island of Principe datum','EPSG');
|
||||
|
||||
+58
-38
@@ -193,7 +193,7 @@ INSERT INTO "area" VALUES('EPSG','1213','Solomon Islands - onshore main islands'
|
||||
INSERT INTO "area" VALUES('EPSG','1214','Somalia','Somalia - onshore and offshore.',-3.61,13.5,40.98,54.43,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1215','South Africa','South Africa - onshore and offshore, including Marion Island, and Prince Edward Island.',-50.32,-22.13,13.33,42.85,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1216','South Georgia and the South Sandwich Islands','South Georgia and the South Sandwich Islands - onshore and offshore.',-62.79,-50.15,-48.06,-19.84,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1217','Spain','Spain - mainland, Balearic Islands, Canary Islands, Ceuta and Melila - onshore and offshore.',24.6,46.26,-21.93,6.3,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1217','Spain','Spain - mainland, Balearic Islands, Canary Islands, Ceuta and Melilla - onshore and offshore.',24.6,46.26,-21.93,6.3,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1218','Sri Lanka','Sri Lanka - onshore and offshore.',2.58,11.45,77.02,85.24,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1219','St Helena, Ascension and Tristan da Cunha','St Helena, Ascension and Tristan da Cunha archipelago (Gough, Inaccessible, Nightingale and Stoltenhoff Islands) - onshore and offshore.',-43.71,-4.55,-17.79,-2.16,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1220','St Pierre and Miquelon','St Pierre and Miquelon - onshore and offshore.',43.41,47.37,-57.1,-55.9,0);
|
||||
@@ -459,7 +459,7 @@ INSERT INTO "area" VALUES('EPSG','1479','Libya - west of 12°E onshore','Libya -
|
||||
INSERT INTO "area" VALUES('EPSG','1480','Libya - 12°E to 18°E onshore','Libya - onshore between 12°E and 18°E.',22.51,33.06,12.0,18.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1481','Libya - 18°E to 24°E onshore','Libya - onshore between 18°E and 24°E.',19.5,33.0,17.99,24.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1482','Libya - west of 15°E onshore','Libya - onshore west of 15°E.',22.61,33.23,9.31,15.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1483','Argentina - Mendoza and Neuquen 70.5°W to 67.5°W','Argentina – Mendoza and Neuquen provinces between 70°30''W and 67°30''W - Neuquen and Cuyo basins.',-43.41,-31.91,-70.51,-67.49,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1483','Argentina - Mendoza and Neuquen 70.5°W to 67.5°W','Argentina - Mendoza and Neuquen provinces between 70°30''W and 67°30''W - Neuquen and Cuyo basins.',-43.41,-31.91,-70.51,-67.49,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1484','Argentina - 42.5°S to 50.3°S and 70.5°W to 67.5°W','Argentina - Chibut province between 70°30''W and 67°30''W and south of approximately 42°30''S and Santa Cruz province between 70°30''W and 67°30''W and north of approximately 50°20''S.',-50.34,-42.49,-70.5,-67.49,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1485','Argentina - Tierra del Fuego onshore west of 67.5°W','Argentina - Tierra del Fuego onshore west of 67°30''W.',-54.9,-52.59,-68.64,-67.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1486','Argentina - Tierra del Fuego offshore','Argentina - Tierra del Fuego offshore Atlantic.',-54.93,-51.36,-68.62,-61.49,0);
|
||||
@@ -619,7 +619,7 @@ INSERT INTO "area" VALUES('EPSG','1639','Europe - 30°E to 36°E and ED50 by cou
|
||||
INSERT INTO "area" VALUES('EPSG','1640','Europe - 36°E to 42°E and ED50 by country','Europe - between 36°E and 42°E - Jordan; Norway including Svalbard - offshore; Turkey onshore and offshore.',29.18,79.09,36.0,42.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1641','Europe - 42°E to 48°E and ED50 by country','Europe - between 42°E and 48°E - Turkey.',36.97,41.6,42.0,44.83,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1642','Egypt - east of 33°E onshore','Egypt - east of 33°E - onshore plus offshore Gulf of Suez.',21.97,31.36,33.0,36.95,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1643','Egypt - 29°E to 33°E','Egypt – onshore between 29°E and 33°E, offshore Mediterranean east of 29°E and offshore Gulf of Suez.',21.99,33.82,29.0,34.27,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1643','Egypt - 29°E to 33°E','Egypt - onshore between 29°E and 33°E, offshore Mediterranean east of 29°E and offshore Gulf of Suez.',21.99,33.82,29.0,34.27,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1644','Egypt - west of 29°E; north of 28°11''N','Egypt - onshore west of 29°E and north of approximately 28°11''N.',28.18,31.68,24.7,29.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1645','Egypt - west of 29°E; south of 28°11''N','Egypt - west of 29°E; south of approximately 28°11''N.',21.99,28.19,24.99,29.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1646','Europe - Estonia; Latvia; Lithuania','Estonia, Latvia and Lithuania - onshore and offshore.',53.89,60.0,19.02,28.24,0);
|
||||
@@ -1311,7 +1311,7 @@ INSERT INTO "area" VALUES('EPSG','2331','Norway - offshore north of 65°N','Norw
|
||||
INSERT INTO "area" VALUES('EPSG','2332','Norway - offshore north of 65°N; Svalbard','Norway - offshore north of 65°N. Also Svalbard.',65.0,84.17,-3.7,39.65,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2333','Norway - offshore 62°N to 65°N and west of 5°E','Norway - offshore between 62°N and 65°N and west of 5°E.',62.0,65.0,-0.49,5.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2334','Norway - North Sea - offshore south of 62°N','Norway - offshore south of 62°N - North Sea.',56.08,62.0,1.37,11.14,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2335','Spain - Balearic Islands','Spain - Balearic Islands.',38.59,40.11,1.14,4.39,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2335','Spain - Balearic Islands','Spain - Balearic Islands.',38.59,40.15,1.12,4.39,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2336','Spain - mainland except northwest','Spain - onshore mainland except northwest (north of 41°30''N and west of 4°30''W).',35.26,43.56,-7.54,3.39,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2337','Spain - mainland northwest','Spain - onshore mainland north of 41°30''N and west of 4°30'' W.',41.5,43.82,-9.37,-4.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2338','Europe - Portugal and Spain','Portugal; Spain - mainland.',35.26,43.82,-9.56,3.39,0);
|
||||
@@ -2405,7 +2405,7 @@ INSERT INTO "area" VALUES('EPSG','3425','Mexico - 108°W to 102°W','Mexico betw
|
||||
INSERT INTO "area" VALUES('EPSG','3426','Mexico - 102°W to 96°W','Mexico between 102°W and 96°W, onshore and offshore.',12.3,29.81,-102.0,-96.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3427','Latin America - 96°W to 90°W; N hemisphere and SIRGAS 2000 by country','Latin America - Central and South America - between 96°W and 90°W, northern hemisphere, onshore and offshore.',0.0,26.0,-96.0,-90.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3428','Latin America - 90°W to 84°W; N hemisphere and SIRGAS 2000 by country','Latin America - Central America and South America - between 90°W and 84°W, northern hemisphere, onshore and offshore.',0.0,25.77,-90.0,-83.99,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3429','Spain - mainland and Balearic Islands onshore','Spain - mainland, Balearic Islands, Ceuta and Melila - onshore.',35.26,43.82,-9.37,4.39,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3429','Spain - mainland and Balearic Islands onshore','Spain - mainland, Balearic Islands, Ceuta and Melilla - onshore.',35.26,43.82,-9.37,4.39,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3430','New Caledonia - Belep, Grande Terre, Ile des Pins, Loyalty Islands','New Caledonia - Belep, Grande Terre, Ile des Pins, Loyalty Islands (Lifou, Mare, Ouvea).',-22.73,-19.5,163.54,168.19,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3431','New Caledonia - west of 162°E','New Caledonia - west of 162°E onshore and offshore.',-26.03,-15.34,156.25,162.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3432','New Caledonia - 162°E to 168°E','New Caledonia - between 162°E and 168°E onshore and offshore.',-26.45,-14.83,162.0,168.0,0);
|
||||
@@ -2612,10 +2612,10 @@ INSERT INTO "area" VALUES('EPSG','3632','Denmark - onshore Jutland east of 9°E
|
||||
INSERT INTO "area" VALUES('EPSG','3633','Mexico - 96°W to 90°W','Mexico between 96°W and 90°W, onshore and offshore.',12.1,26.0,-96.0,-90.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3634','Caribbean - Puerto Rico and US Virgin Islands - onshore','Puerto Rico and US Virgin Islands - onshore.',17.62,18.57,-67.97,-64.51,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3635','Mexico - east of 90°W','Mexico east of 90°W, onshore and offshore.',17.81,25.77,-90.0,-84.64,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3636','Norway - onshore - west of 6ºE','Norway - onshore - west of 6ºE.',58.32,62.49,4.68,6.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3636','Norway - onshore - west of 6°E','Norway - onshore - west of 6°E.',58.32,62.49,4.68,6.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3637','USA - 102°W to 96°W and GoM OCS','United States (USA) - between 102°W and 96°W. Iowa; Kansas; Minnesota; Nebraska; North Dakota; Oklahoma; South Dakota; Texas; Gulf of Mexico outer continental shelf (GoM OCS) west of approximately 96°W - protraction areas Corpus Christi; Port Isabel.',25.83,49.01,-102.0,-95.87,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3638','South America - 84°W to 78°W, S hemisphere and SIRGAS95 by country','Ecuador (mainland whole country including areas in northern hemisphere and east of 78°W), onshore and offshore. In remainder of South America, between 84°W and 78°W, southern hemisphere, onshore and offshore.',-56.45,1.45,-84.0,-75.21,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3639','Norway - onshore - 6ºE to 7ºE','Norway - onshore - between 6ºE and 7ºE.',57.93,63.02,6.0,7.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3639','Norway - onshore - 6°E to 7°E','Norway - onshore - between 6°E and 7°E.',57.93,63.02,6.0,7.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3640','USA - 96°W to 90°W and GoM OCS','United States (USA) - between 96°W and 90°W - Arkansas; Illinois; Iowa; Kansas; Louisiana; Michigan; Minnesota; Mississippi; Missouri; Nebraska; Oklahoma; Tennessee; Texas; Wisconsin; Gulf of Mexico outer continental shelf (GoM OCS) between approximately 96°W and 90°W - protraction areas East Breaks; Alaminos Canyon; Garden Banks; Keathley Canyon; Sigsbee Escarpment; Ewing Bank; Green Canyon; Walker Ridge; Amery Terrace.',25.61,49.38,-96.01,-89.86,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3641','USA - 90°W to 84°W and GoM OCS','United States (USA) - between 90°W and 84°W onshore and offshore - Alabama; Arkansas; Florida; Georgia; Indiana; Illinois; Kentucky; Louisiana; Michigan; Minnesota; Mississippi; Missouri; North Carolina; Ohio; Tennessee; Wisconsin; Gulf of Mexico outer continental shelf (GoM OCS) between approximately 90°W and 84°W - protraction areas Mobile; Viosca Knoll; Mississippi Canyon; Atwater Valley; Lund; Lund South; Pensacola; Destin Dome; De Soto Canyon; Lloyd Ridge; Henderson; Florida Plain; Campeche Escarpment; Apalachicola; Florida Middle Ground; The Elbow; Vernon Basin; Howell Hook; Rankin.',23.95,48.32,-90.01,-83.91,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3642','USA - 84°W to 78°W and GoM OCS','United States (USA) - between 84°W and 78°W onshore and offshore - Florida; Georgia; Maryland; Michigan; New York; North Carolina; Ohio; Pennsylvania; South Carolina; Tennessee; Virginia; West Virginia; Gulf of Mexico outer continental shelf (GoM OCS) east of approximately 84°W - protraction areas Gainesville; Tarpon Springs; St Petersburg; Charlotte Harbor; Pulley Ridge; Dry Tortugas; Tortugas Valley; Miami; Key West.',23.81,46.13,-84.09,-77.99,0);
|
||||
@@ -2623,36 +2623,36 @@ INSERT INTO "area" VALUES('EPSG','3643','Germany - Schleswig-Holstein','Germany
|
||||
INSERT INTO "area" VALUES('EPSG','3644','Germany - Schleswig-Holstein - east of 10.5°E','Germany - Schleswig-Holstein - east of 10°30''E.',53.36,54.59,10.49,11.4,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3645','Sao Tome and Principe - onshore - Sao Tome','Sao Tome and Principe - onshore - Sao Tome.',-0.04,0.46,6.41,6.82,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3646','Sao Tome and Principe - onshore - Principe','Sao Tome and Principe - onshore - Principe.',1.48,1.76,7.27,7.52,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3647','Norway - onshore - 7ºE to 8ºE','Norway - onshore - between 7ºE and 8ºE.',57.93,63.52,7.0,8.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3648','Norway - onshore - 8ºE to 9ºE','Norway - onshore - between 8ºE and 9ºE.',58.03,63.87,8.0,9.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3649','Norway - onshore - 9ºE to 10ºE','Norway - onshore - between 9ºE and 10ºE.',58.52,64.16,9.0,10.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3650','Norway - onshore - 10ºE to 11ºE','Norway - onshore - between 10ºE and 11ºE.',58.9,65.04,10.0,11.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3651','Norway - onshore - 11ºE to 12ºE','Norway - onshore - between 11ºE and 12ºE.',58.88,65.76,11.0,12.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3647','Norway - onshore - 7°E to 8°E','Norway - onshore - between 7°E and 8°E.',57.93,63.52,7.0,8.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3648','Norway - onshore - 8°E to 9°E','Norway - onshore - between 8°E and 9°E.',58.03,63.87,8.0,9.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3649','Norway - onshore - 9°E to 10°E','Norway - onshore - between 9°E and 10°E.',58.52,64.16,9.0,10.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3650','Norway - onshore - 10°E to 11°E','Norway - onshore - between 10°E and 11°E.',58.9,65.04,10.0,11.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3651','Norway - onshore - 11°E to 12°E','Norway - onshore - between 11°E and 12°E.',58.88,65.76,11.0,12.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3652','USA - Michigan - SPCS - W','United States (USA) - Michigan - counties of Baraga; Dickinson; Gogebic; Houghton; Iron; Keweenaw; Marquette; Menominee; Ontonagon.',45.09,48.32,-90.42,-83.44,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3653','Norway - onshore - 12ºE to 13ºE','Norway - onshore - between 12ºE and 13ºE.',59.88,68.15,12.0,13.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3654','Norway - onshore - 13ºE to 14ºE','Norway - onshore - between 13ºE and 14ºE.',64.01,68.37,13.0,14.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3655','Norway - onshore - 14ºE to 15ºE','Norway - onshore - between 14ºE and 15ºE.',64.03,69.05,14.0,15.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3656','Norway - onshore - 15ºE to 16ºE','Norway - onshore - between 15ºE and 16ºE.',66.14,69.35,15.0,16.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3657','Norway - onshore - 16ºE to 17ºE','Norway - onshore - between 16ºE and 17ºE.',66.88,69.45,16.0,17.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3658','Norway - onshore - 17ºE to 18ºE','Norway - onshore - between 17ºE and 18ºE.',67.94,69.68,17.0,18.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3653','Norway - onshore - 12°E to 13°E','Norway - onshore - between 12°E and 13°E.',59.88,68.15,12.0,13.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3654','Norway - onshore - 13°E to 14°E','Norway - onshore - between 13°E and 14°E.',64.01,68.37,13.0,14.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3655','Norway - onshore - 14°E to 15°E','Norway - onshore - between 14°E and 15°E.',64.03,69.05,14.0,15.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3656','Norway - onshore - 15°E to 16°E','Norway - onshore - between 15°E and 16°E.',66.14,69.35,15.0,16.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3657','Norway - onshore - 16°E to 17°E','Norway - onshore - between 16°E and 17°E.',66.88,69.45,16.0,17.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3658','Norway - onshore - 17°E to 18°E','Norway - onshore - between 17°E and 18°E.',67.94,69.68,17.0,18.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3659','Germany - Schleswig-Holstein - west of 10.5°E','Germany - Schleswig-Holstein - west of 10°30''E including Heligoland.',53.37,55.09,7.8,10.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3660','Norway - onshore - 18ºE to 19ºE','Norway - onshore - between 18ºE and 19ºE.',68.04,70.27,18.0,19.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3661','Norway - onshore - 19ºE to 20ºE','Norway - onshore - between 19ºE and 20ºE.',68.33,70.34,19.0,20.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3662','Norway - onshore - 20ºE to 21ºE','Norway - onshore - between 20ºE and 21ºE.',68.37,70.29,20.0,21.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3663','Norway - onshore - 21ºE to 22ºE','Norway - onshore - between 21ºE and 22ºE.',69.03,70.71,21.0,22.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3660','Norway - onshore - 18°E to 19°E','Norway - onshore - between 18°E and 19°E.',68.04,70.27,18.0,19.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3661','Norway - onshore - 19°E to 20°E','Norway - onshore - between 19°E and 20°E.',68.33,70.34,19.0,20.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3662','Norway - onshore - 20°E to 21°E','Norway - onshore - between 20°E and 21°E.',68.37,70.29,20.0,21.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3663','Norway - onshore - 21°E to 22°E','Norway - onshore - between 21°E and 22°E.',69.03,70.71,21.0,22.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3664','USA - CONUS and Alaska - onshore','United States (USA) - CONUS and Alaska - onshore - Alabama; Alaska mainland; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming.',24.41,71.4,-168.26,-66.91,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3665','Norway - onshore - 22ºE to 23ºE','Norway - onshore - between 22ºE and 23ºE.',68.69,70.81,22.0,23.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3665','Norway - onshore - 22°E to 23°E','Norway - onshore - between 22°E and 23°E.',68.69,70.81,22.0,23.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3666','Indonesia - Java, Java Sea and western Sumatra','Indonesia - Bali, Java and western Sumatra onshore, offshore southern Java Sea, Madura Strait and western Bali Sea.',-8.91,5.97,95.16,117.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3667','Norway - onshore - 23ºE to 24ºE','Norway - onshore - between 23ºE and 24ºE.',68.62,71.08,23.0,24.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3668','Norway - onshore - 24ºE to 25ºE','Norway - onshore - between 24ºE and 25ºE.',68.58,71.16,24.0,25.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3669','Norway - onshore - 25ºE to 26ºE','Norway - onshore - between 25ºE and 26ºE.',68.59,71.21,25.0,26.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3667','Norway - onshore - 23°E to 24°E','Norway - onshore - between 23°E and 24°E.',68.62,71.08,23.0,24.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3668','Norway - onshore - 24°E to 25°E','Norway - onshore - between 24°E and 25°E.',68.58,71.16,24.0,25.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3669','Norway - onshore - 25°E to 26°E','Norway - onshore - between 25°E and 26°E.',68.59,71.21,25.0,26.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3670','Portugal - Azores and Madeira','Portugal - Azores and Madeira island groups and surrounding EEZ - Flores, Corvo; Graciosa, Terceira, Sao Jorge, Pico, Faial; Sao Miguel, Santa Maria; Madeira, Porto Santo, Desertas; Selvagens.',29.24,43.07,-35.58,-12.48,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3671','Norway - onshore - 26ºE to 27ºE','Norway - onshore - between 26ºE and 27ºE.',69.71,71.17,26.0,27.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3672','Norway - onshore - 27ºE to 28ºE','Norway - onshore - between 27ºE and 28ºE.',69.9,71.17,27.0,28.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3673','Norway - onshore - 28ºE to 29ºE','Norway - onshore - between 28ºE and 29ºE.',69.03,71.13,28.0,29.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3674','Norway - onshore - 29ºE to 30ºE','Norway - onshore - between 29ºE and 30ºE.',69.02,70.93,29.0,30.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3671','Norway - onshore - 26°E to 27°E','Norway - onshore - between 26°E and 27°E.',69.71,71.17,26.0,27.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3672','Norway - onshore - 27°E to 28°E','Norway - onshore - between 27°E and 28°E.',69.9,71.17,27.0,28.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3673','Norway - onshore - 28°E to 29°E','Norway - onshore - between 28°E and 29°E.',69.03,71.13,28.0,29.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3674','Norway - onshore - 29°E to 30°E','Norway - onshore - between 29°E and 30°E.',69.02,70.93,29.0,30.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3675','Paraguay - north of 22°S','Paraguay - north of 22°S.',-22.0,-19.29,-62.57,-57.81,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3676','Norway - onshore - east of 30ºE','Norway - onshore - east of 30ºE.',69.46,70.77,30.0,31.22,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3676','Norway - onshore - east of 30°E','Norway - onshore - east of 30°E.',69.46,70.77,30.0,31.22,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3677','Portugal - Azores 30°W to 24°W','Portugal - between 30°W and 24°W - central and eastern Azores - Graciosa, Terceira, Sao Jorge, Pico, Faial; Sao Miguel and Santa Maria islands and surrounding EEZ.',33.52,42.96,-30.0,-24.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3678','Portugal - Madeira and EEZ E of 18°W','Portugal - Madeira, Porto Santo, Desertas and Selvagens islands and surrounding EEZ east of 18°W.',29.24,36.46,-18.0,-12.48,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3679','Portugal - Madeira island onshore','Portugal - Madeira island onshore.',32.58,32.93,-17.31,-16.66,0);
|
||||
@@ -2849,7 +2849,7 @@ INSERT INTO "area" VALUES('EPSG','3869','Costa Rica - onshore north of 9°32''N'
|
||||
INSERT INTO "area" VALUES('EPSG','3870','Costa Rica - onshore south of 9°56''N','Costa Rica - onshore south of 9°56''N',7.98,9.94,-85.74,-82.53,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3871','USA - 72°W to 66°W onshore','United States (USA) - between 72°W and 66°W - onshore - Connecticut; Maine; Massachusetts; New Hampshire; New York (Long Island); Rhode Island; Vermont.',40.96,47.47,-72.0,-66.91,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3872','North America - 144°W to 138°W and NAD83 by country','North America - between 144°W and 138°W - onshore and offshore. Canada - British Columbia; Yukon. United States (USA) - Alaska.',52.05,73.59,-144.0,-137.99,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3873','Spain - Canary Islands onshore','Spain - Canary Islands onshore.',27.58,29.3,-18.22,-13.37,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3873','Spain - Canary Islands onshore','Spain - Canary Islands onshore.',27.58,29.47,-18.22,-13.37,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3874','Brazil - Corrego Alegre 1961','Brazil - onshore - between 18°S and 27°30''S, also east of 54°W between 15°S and 18°S.',-27.5,-14.99,-58.16,-38.82,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3875','Canada - Labrador - 63°W to 60°W','Canada - Labrador between 63°W and 60°W.',52.0,58.92,-63.0,-60.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3876','Central America - Guatemala to Costa Rica','Costa Rica; El Salvador; Guatemala; Honduras; Nicaragua.',7.98,17.83,-92.29,-82.53,0);
|
||||
@@ -2887,11 +2887,11 @@ INSERT INTO "area" VALUES('EPSG','3907','Ukraine - 22.5°E to 25.5°E','Ukraine
|
||||
INSERT INTO "area" VALUES('EPSG','3908','Ukraine - 25.5°E to 28.5°E','Ukraine - between 25°30''E and 28°30''E.',45.26,51.94,25.5,28.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3909','Ukraine - 28.5°E to 31.5°E','Ukraine - between 28°30''E and 31°30''E, onshore and offshore.',43.42,52.12,28.5,31.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3910','Ukraine - 31.5°E to 34.5°E','Ukraine - between 31°30''E and 34°30''E, onshore and offshore.',43.18,52.38,31.5,34.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3911','Reunion - east of 54ºE','Reunion - onshore and offshore - east of 54ºE.',-24.72,-18.28,54.0,58.24,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3911','Reunion - east of 54°E','Reunion - onshore and offshore - east of 54°E.',-24.72,-18.28,54.0,58.24,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3912','Ukraine - 34.5°E to 37.5°E','Ukraine - between 34°30''E and 37°30''E, onshore and offshore.',43.24,51.25,34.5,37.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3913','Ukraine - east of 37.5°E','Ukraine - east of 37°30''E.',46.77,50.39,37.5,40.18,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3914','World - N hemisphere - 3°E to 9°E - by country','France - offshore Mediterranean including area east of 9°E. Nigeria - offshore including area west of 3°E.',1.92,43.74,2.66,10.38,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3915','Reunion - west of 54ºE','Reunion - offshore - west of 54ºE.',-24.37,-18.52,51.83,54.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3915','Reunion - west of 54°E','Reunion - offshore - west of 54°E.',-24.37,-18.52,51.83,54.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3916','French Southern Territories - Amsterdam onshore','French Southern Territories - Amsterdam Island onshore.',-37.93,-37.74,77.45,77.67,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3917','Algeria - Ahnet licence area','Algeria - Ahnet licence area.',26.06,27.51,1.26,2.92,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3918','French Southern Territories - Kerguelen','French Southern Territories - Kerguelen onshore and offshore.',-53.24,-45.11,62.96,75.66,0);
|
||||
@@ -3204,7 +3204,7 @@ INSERT INTO "area" VALUES('EPSG','4224','Chile - onshore 32°S to 36°S','Chile
|
||||
INSERT INTO "area" VALUES('EPSG','4225','UAE - Abu Dhabi - onshore','United Arab Emirates (UAE) - Abu Dhabi onshore.',22.63,24.95,51.56,56.03,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4226','UAE - Abu Dhabi','United Arab Emirates (UAE) - Abu Dhabi onshore and offshore.',22.63,25.64,51.5,56.03,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4227','UAE - Abu Dhabi - onshore east of 54°E','United Arab Emirates (UAE) - Abu Dhabi onshore east of 54°E.',22.63,24.95,53.99,56.03,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4228','USA - California - San Francisco Bay Area','United States (USA) - California - San Francisco bay area – counties of Alameda, Contra Costa, Marin, Napa, San Francisco, San Mateo, Santa Clara, Santa Cruz, Solano and Sonoma.',36.85,38.87,-123.56,-121.2,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4228','USA - California - San Francisco Bay Area','United States (USA) - California - San Francisco bay area - counties of Alameda, Contra Costa, Marin, Napa, San Francisco, San Mateo, Santa Clara, Santa Cruz, Solano and Sonoma.',36.85,38.87,-123.56,-121.2,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4229','UAE - Abu Dhabi island','United Arab Emirates (UAE) - Abu Dhabi island.',24.24,24.64,54.2,54.71,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4230','USA - Iowa - Elkader','United States (USA) - Iowa - counties of Allamakee; Clayton; Delaware.',42.29,43.51,-91.62,-90.89,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4231','Chile - onshore north of 26°S','Chile - onshore north of 26°S.',-26.0,-17.5,-70.79,-67.0,0);
|
||||
@@ -3366,8 +3366,8 @@ INSERT INTO "area" VALUES('EPSG','4386','Kyrgyzstan - 70°01''E to 73°01''E','K
|
||||
INSERT INTO "area" VALUES('EPSG','4387','Kyrgyzstan - 73°01''E to 76°01''E','Kyrgyzstan - between 73°01''E and 76°01''E.',39.35,43.22,73.01,76.02,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4388','Kyrgyzstan - 76°01''E to 79°01''E','Kyrgyzstan - between 76°01''E and 79°01''E.',40.35,43.0,76.01,79.02,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4389','Kyrgyzstan - east of 79°01''E','Kyrgyzstan - east of 79°01''E.',41.66,42.8,79.01,80.29,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4390','UK - Britain and UKCS 49°46''N to 61°01''N, 7°33''W to 3°33''E','United Kingdom (UK) - offshore to boundary of UKCS within 49°46''N to 61°01''N and 7°33''W to 3°33''E; onshore Great Britain (England, Wales and Scotland). Isle of Man onshore.',49.75,61.14,-9.2,2.88,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4391','UK - offshore 49°46''N to 61°01''N, 7°33''W to 3°33''E','United Kingdom (UK) – offshore between 2km from shore and boundary of UKCS within 49°46''N to 61°01''N and 7°33''W to 3°33''E.',49.75,61.14,-9.2,2.88,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4390','UK - Britain and UKCS 49°45''N to 61°N, 9°W to 2°E','United Kingdom (UK) - offshore to boundary of UKCS within 49°45''N to 61°N and 9°W to 2°E; onshore Great Britain (England, Wales and Scotland). Isle of Man onshore.',49.75,61.01,-9.0,2.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4391','UK - offshore 49°46''N to 61°01''N, 7°33''W to 3°33''E','United Kingdom (UK) - offshore between 2km from shore and boundary of UKCS within 49°46''N to 61°01''N and 7°33''W to 3°33''E.',49.75,61.14,-9.2,2.88,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4392','India - northeast','India - Arunachal Pradesh, Assam, Manipur, Meghalaya, Mizoram, Nagaland and Tripura.',21.94,29.47,89.69,97.42,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4393','To be specified','Description of the extent of the CRS.',-90.0,90.0,-180.0,180.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4394','India - Andhra Pradesh and Telangana','India - Andhra Pradesh; Telangana; Yanam area of Pudacherry territory.',12.61,19.92,76.75,84.81,0);
|
||||
@@ -3491,7 +3491,7 @@ INSERT INTO "area" VALUES('EPSG','4511','USA - Kansas - Arkansas City','United S
|
||||
INSERT INTO "area" VALUES('EPSG','4512','USA - Kansas - Coffeyville','United States (USA) - Kansas - counties of Chautauqua; Coffey; Elk; Greenwood; Montgomery; Osage; Wilson; Woodson.',36.99,38.88,-96.53,-95.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4513','USA - Kansas - Pittsburg','United States (USA) - Kansas - counties of Allen; Anderson; Bourbon; Cherokee; Crawford; Franklin; Labette; Linn; Miami; Neosho.',36.99,38.74,-95.53,-94.6,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4514','Pacific - Guam and NMI west of 144°E','Guam and Northern Mariana Islands; offshore west of 144°E.',10.95,23.9,141.19,144.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4515','USA - FBN','American Samoa - Tutuila, Aunu''u, Ofu, Olesega, Ta''u and Rose islands - onshore. Guam - onshore. Northern Mariana Islands - onshore. Puerto Rico - onshore. United States (USA) – CONUS - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming - onshore plus Gulf of Mexico offshore continental shelf (GoM OCS). US Virgin Islands - onshore.',-14.59,49.38,144.58,-64.51,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4515','USA - FBN','American Samoa - Tutuila, Aunu''u, Ofu, Olesega, Ta''u and Rose islands - onshore. Guam - onshore. Northern Mariana Islands - onshore. Puerto Rico - onshore. United States (USA) - CONUS - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming - onshore plus Gulf of Mexico offshore continental shelf (GoM OCS). US Virgin Islands - onshore.',-14.59,49.38,144.58,-64.51,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4516','USA - CONUS and GoM','United States (USA) - CONUS onshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico offshore continental shelf (GoM OCS).',23.82,49.38,-124.79,-66.91,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4517','Canada - NAD27','Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast.',40.04,83.17,-141.01,-47.74,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4518','Pacific - Guam and NMI east of 144°E','Guam and Northern Mariana Islands; onshore and offshore east of 144°E.',11.05,23.9,144.0,149.55,0);
|
||||
@@ -3557,9 +3557,29 @@ INSERT INTO "area" VALUES('EPSG','4578','Argentina - 67.5°W to 64.5°W mainland
|
||||
INSERT INTO "area" VALUES('EPSG','4579','Argentina - 64.5°W to 61.5°W mainland onshore','Argentina - between 64°30''W and 61°30''W, onshore mainland.',-43.14,-21.99,-64.5,-61.49,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4580','Germany - Baden-Wurttemberg','Germany - Baden-Wurttemberg.',47.54,49.8,7.51,10.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4581','Africa - Morocco and Western Sahara - onshore','Africa - Morocco and Western Sahara - onshore.',20.71,35.97,-17.16,-1.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4582','UK - London to Birmingham and Crewe','UK - HS2 phases 1 and 2a railway corridor from London to Birmingham, Lichfield and Crewe.',51.45,53.3,-2.75,0.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4583','UK - Liverpool to Leeds','UK - on or related to the Trans-Pennine rail route from Liverpool via Manchester to Bradford and Leeds.',53.32,53.9,-3.14,-1.34,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4584','Germany - Saarland','Germany - Saarland.',49.11,49.64,6.35,7.41,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4585','Austria - Vienna','Austria - Vienna city state.',48.12,48.34,16.18,16.59,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4586','World - south of 50°S','Southern hemisphere - south of 50°S onshore and offshore, including Antarctica.',-90.0,-50.0,-180.0,180.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4587','Congo DR (Zaire) - 6th parallel south 21.5°E to 23°E','The Democratic Republic of the Congo (Zaire) - adjacent to 6th parallel south traverse between 21°30''E and 23°E.',-7.31,-5.31,21.5,23.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4588','UK - London to Sheffield','UK - on or related to the Midland Mainline rail route from Sheffield to London.',51.46,53.42,-1.89,0.16,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4589','UK - Aberdeen to Inverness','UK - on or related to the A96 highway from Aberdeen to Inverness.',57.1,57.71,-4.31,-2.1,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4590','Spain - Ceuta','Spain - Ceuta onshore.',35.82,35.97,-5.4,-5.24,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4591','Spain - Canary Islands - Lanzarote','Spain - Canary Islands - Lanzarote onshore.',28.78,29.47,-13.95,-13.37,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4592','Spain - Canary Islands - Fuerteventura','Spain - Canary Islands - Fuerteventura onshore.',27.99,28.81,-14.58,-13.75,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4593','Spain - Canary Islands - Gran Canaria','Spain - Canary Islands - Gran Canaria onshore.',27.68,28.23,-15.88,-15.31,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4594','Spain - Canary Islands - Tenerife','Spain - Canary Islands - Tenerife onshore.',27.93,28.63,-16.96,-16.08,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4595','Spain - Canary Islands - La Gomera','Spain - Canary Islands - La Gomera onshore.',27.95,28.26,-17.39,-17.03,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4596','Spain - Canary Islands - La Palma','Spain - Canary Islands - La Palma onshore.',28.4,28.9,-18.06,-17.66,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4597','Spain - Canary Islands - El Hierro','Spain - Canary Islands - El Hierro onshore.',27.58,27.9,-18.22,-17.83,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4598','Spain - Canary Islands western','Spain - Canary Islands - El Hierro, La Gomera, La Palma and Tenerife - onshore.',27.58,28.9,-18.22,-16.08,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4599','Spain - Canary Islands - El Hierro west of 18°W','Spain - Canary Islands - El Hierro onshore west of 18°W.',27.59,27.88,-18.22,-18.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4600','Spain - Canary Islands onshore east of 18°W','Spain - Canary Islands onshore - El Hierro east of 18°W, Fuerteventura, Gran Canaria, La Gomera, La Palma, Lanzarote and Tenerife.',27.58,29.47,-18.06,-13.37,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4601','Spain - Canary Islands western east of 18°W','Spain - Canary Islands onshore - El Hierro east of 18°W, La Gomera, La Palma and Tenerife.',27.58,28.9,-18.06,-16.08,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4602','Spain - Balearic Islands - Mallorca','Spain - Balearic Islands - Mallorca onshore.',39.07,40.02,2.23,3.55,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4603','Spain - Balearic Islands - Menorca','Spain - Balearic Islands - Menorca onshore.',39.75,40.15,3.73,4.39,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4604','Spain - Balearic Islands - Ibiza and Formentera','Spain - Balearic Islands - Ibiza and Formentera - onshore.',38.59,39.17,1.12,1.68,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4605','Spain - mainland onshore and Ceuta','Spain - mainland and Ceuta - onshore.',35.82,43.82,-9.37,3.39,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4608','Europe - EVRF2019','Europe - onshore - Andorra; Austria; Belarus; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Czechia; Denmark; Estonia; Finland; France - mainland; Germany; Gibraltar, Hungary; Italy - mainland and Sicily; Latvia; Liechtenstein; Lithuania; Luxembourg; Netherlands; North Macedonia; Norway; Poland; Portugal - mainland; Romania; Russia – west of approximately 60°E; San Marino; Slovakia; Slovenia; Spain - mainland; Sweden; Switzerland; United Kingdom (UK) - Great Britain mainland; Ukraine; Vatican City State.',35.95,77.07,-9.56,69.15,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4609','Europe - ETRF EVRF2019','Europe - onshore - Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Czechia; Denmark; Estonia; Finland; France - mainland; Germany; Gibraltar, Hungary; Italy - mainland and Sicily; Latvia; Liechtenstein; Lithuania; Luxembourg; Netherlands; North Macedonia; Norway; Poland; Portugal - mainland; Romania; San Marino; Slovakia; Slovenia; Spain - mainland; Sweden; Switzerland; United Kingdom (UK) - Great Britain mainland; Vatican City State.',35.95,71.21,-9.56,31.59,0);
|
||||
|
||||
@@ -277,5 +277,18 @@ INSERT INTO "compound_crs" VALUES('EPSG','8813','NAD83 / Missouri East + NAVD88
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','8814','NAD83 / Missouri Central + NAVD88 height',NULL,NULL,'EPSG','26997','EPSG','5703','EPSG','2218',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','8815','NAD83 / Missouri West + NAVD88 height',NULL,NULL,'EPSG','26998','EPSG','5703','EPSG','2220',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','8912','CR-SIRGAS / CRTM05 + DACR52 height',NULL,NULL,'EPSG','8908','EPSG','8911','EPSG','3232',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9306','HS2 Survey Grid + HS2-VRF height',NULL,NULL,'EPSG','9300','EPSG','9303','EPSG','4582',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9368','TPEN11 Grid + ODN height',NULL,NULL,'EPSG','9367','EPSG','5701','EPSG','4583',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9374','MML07 Grid + ODN height',NULL,NULL,'EPSG','9373','EPSG','5701','EPSG','4588',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9388','AbInvA96_2020 Grid + ODN height',NULL,NULL,'EPSG','9387','EPSG','5701','EPSG','4589',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9422','ETRS89 + EVRF2019 height',NULL,NULL,'EPSG','4258','EPSG','9389','EPSG','4609',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9423','ETRS89 + EVRF2019 mean-tide height',NULL,NULL,'EPSG','4258','EPSG','9390','EPSG','4609',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9424','ETRS89 + ODN height',NULL,NULL,'EPSG','4258','EPSG','5701','EPSG','2792',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9425','ETRS89 + ODN (Offshore) height',NULL,NULL,'EPSG','4258','EPSG','7707','EPSG','4391',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9426','ETRS89 + ODN Orkney height',NULL,NULL,'EPSG','4258','EPSG','5740','EPSG','2793',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9427','ETRS89 + Lerwick height',NULL,NULL,'EPSG','4258','EPSG','5742','EPSG','2795',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9428','ETRS89 + Stornoway height',NULL,NULL,'EPSG','4258','EPSG','5746','EPSG','2799',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9429','ETRS89 + Douglas height',NULL,NULL,'EPSG','4258','EPSG','5750','EPSG','2803',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9430','ETRS89 + St. Marys height',NULL,NULL,'EPSG','4258','EPSG','5749','EPSG','2802',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9449','ETRS89 + Malin Head height',NULL,NULL,'EPSG','4258','EPSG','5731','EPSG','1305',0);
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','9450','ETRS89 + Belfast height',NULL,NULL,'EPSG','4258','EPSG','5732','EPSG','2530',0);
|
||||
|
||||
@@ -859,10 +859,12 @@ INSERT INTO "conversion" VALUES('EPSG','9220','South Africa Basic Survey Unit Al
|
||||
INSERT INTO "conversion" VALUES('EPSG','9268','Austria West','Greenwich equivalent of Austria West Zone (EPSG code 18041).','Products and services through the BEV Geoportal.','EPSG','1706','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',10.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9269','Austria Central','Greenwich equivalent of Austria Central Zone (EPSG code 18042).','Products and services through the BEV Geoportal.','EPSG','1707','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',13.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9270','Austria East','Greenwich equivalent of Austria East Zone (EPSG code 18043).','Products and services through the BEV Geoportal.','EPSG','1708','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',16.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9301','HS2-TM','In conjunction with transformation HS2TN15 (code 9302) emulates the zero-distortion Snake projection HS2P1+14. Emulation derived at 350,000 locations, RMS position difference is 0.15 mm and max position difference is 0.6 mm; this is considered errorless.','Engineering survey for HS2 project phases 1 and 2a.','EPSG','4582','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',52.3,'EPSG','9102','EPSG','8802','Longitude of natural origin',-1.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',198873.0046,'EPSG','9001','EPSG','8807','False northing',375064.3871,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9353','IBCSO Polar Stereographic','Used for the International Bathymetric Chart of the Southern Ocean.','Hydrography and nautical charting.','EPSG','4586','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-65.0,'EPSG','9102','EPSG','8833','Longitude of origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9366','TPEN11-TM','In conjunction with transformation ETRS89 to TPEN11-IRF (1) (code 9365), emulates the TPEN11 Snake and TPEN11ext Snake projections.','Engineering survey and topographic mapping for railway applications.','EPSG','4583','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',53.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-2.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',203252.175,'EPSG','9001','EPSG','8807','False northing',407512.765,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9370','MML07-TM','In conjunction with transformation ETRS89 to MML07-IRF (1) (code 9369), emulates the MML07 Snake projection.','Engineering survey and topographic mapping for railway applications.','EPSG','4588','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',52.27,'EPSG','9110','EPSG','8802','Longitude of natural origin',-0.51,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',49350.157,'EPSG','9001','EPSG','8807','False northing',108398.212,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9376','Colombia Transverse Mercator','Adopted by resolution IGAC 471/May 14, 2020. Supports the Spatial Data Infrastructure for Land Administration (IDE-AT) and its GIS applications. Used to fulfill all the requirements of the activities required for the Multipurpose Cadastre.','Cadastre.','EPSG','1070','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-73.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9992,'EPSG','9201','EPSG','8806','False easting',5000000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9385','AbInvA96_2020-TM','In conjunction with transformation ETRS89 to AbInvA96_2020-IRF (1) (code 9386), emulates the AbInvA96_2020 Snake projection.','Highway engineering.','EPSG','4589','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',57.24,'EPSG','9110','EPSG','8802','Longitude of natural origin',-3.12,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',155828.702,'EPSG','9001','EPSG','8807','False northing',115225.707,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','10101','Alabama CS27 East zone','','Used for large and medium scale topographic mapping and engineering survey.','EPSG','2154','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','10102','Alabama CS27 West zone','','Used for large and medium scale topographic mapping and engineering survey.','EPSG','2155','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','10131','SPCS83 Alabama East zone (meters)','','Used for large and medium scale topographic mapping and engineering survey.','EPSG','2154','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99996,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
@@ -2347,7 +2349,7 @@ INSERT INTO "conversion" VALUES('EPSG','19916','British National Grid','With the
|
||||
INSERT INTO "conversion" VALUES('EPSG','19917','New Zealand Map Grid','Replaces North and South Island National Grids (codes 18141-2). Used for topographic mapping.','Large and medium scale topographic mapping and engineering survey.','EPSG','3973','EPSG','9811','New Zealand Map Grid','EPSG','8801','Latitude of natural origin',-41.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',173.0,'EPSG','9102','EPSG','8806','False easting',2510000.0,'EPSG','9001','EPSG','8807','False northing',6023150.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19919','Qatar National Grid','','Large and medium scale topographic mapping and engineering survey.','EPSG','1195','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',24.27,'EPSG','9110','EPSG','8802','Longitude of natural origin',51.13,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19920','Singapore Grid','','Large and medium scale topographic mapping and engineering survey.','EPSG','1210','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',1.1715528,'EPSG','9110','EPSG','8802','Longitude of natural origin',103.5110808,'EPSG','9110','EPSG','8806','False easting',30000.0,'EPSG','9001','EPSG','8807','False northing',30000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19921','Spain','Replaced by UTM. Longitude is referenced to the Madrid meridian.','Large and medium scale topographic mapping and engineering survey.','EPSG','2366','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9988085293,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',600000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19921','Spain Lambert Conic Conformal Projection','Longitude is referenced to the Madrid meridian. Used for small-scale mapping only. The original Spanish medium scale topographic mapping used a polyhedral projection, not this. Replaced by UTM.','Topographic mapping (small scale).','EPSG','2366','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9988085293,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',600000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19922','Swiss Oblique Mercator 1903M','','Large and medium scale topographic mapping and engineering survey.','EPSG','1286','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',46.570866,'EPSG','9110','EPSG','8812','Longitude of projection centre',7.26225,'EPSG','9110','EPSG','8813','Azimuth of initial line',90.0,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',90.0,'EPSG','9110','EPSG','8815','Scale factor on initial line',1.0,'EPSG','9201','EPSG','8816','Easting at projection centre',600000.0,'EPSG','9001','EPSG','8817','Northing at projection centre',200000.0,'EPSG','9001',0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19923','Swiss Oblique Mercator 1903C','In Switzerland, replaced by new grid LV03 (proj code 19922). Longitude is referenced to the Bern meridian. See proj code 19841 for Greenwich-based equivalent.','Large and medium scale topographic mapping and engineering survey.','EPSG','1286','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',46.570866,'EPSG','9110','EPSG','8812','Longitude of projection centre',0.0,'EPSG','9110','EPSG','8813','Azimuth of initial line',90.0,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',90.0,'EPSG','9110','EPSG','8815','Scale factor on initial line',1.0,'EPSG','9201','EPSG','8816','Easting at projection centre',0.0,'EPSG','9001','EPSG','8817','Northing at projection centre',0.0,'EPSG','9001',0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19924','Tobago Grid','','Large and medium scale topographic mapping and engineering survey.','EPSG','1322','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',11.1507843,'EPSG','9110','EPSG','8802','Longitude of natural origin',-60.4109632,'EPSG','9110','EPSG','8806','False easting',187500.0,'EPSG','9039','EPSG','8807','False northing',180000.0,'EPSG','9039',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
@@ -2382,7 +2384,7 @@ INSERT INTO "conversion" VALUES('EPSG','19953','Qatar Grid','','Large and medium
|
||||
INSERT INTO "conversion" VALUES('EPSG','19954','Suriname Old TM','Introduced in 1975. Replaced by Suriname TM in 1979.','Large and medium scale topographic mapping and engineering survey.','EPSG','1222','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-55.41,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19955','Suriname TM','Replaced Suriname Old TM in 1979 (scale factor changed).','Large and medium scale topographic mapping and engineering survey.','EPSG','1222','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-55.41,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19956','Rectified Skew Orthomorphic Borneo Grid (chains)','See 19957 and 19958 for feet and metres versions. If using Hotine Oblique Mercator (variant A) method (code 9812) FE = FN = 0 chSe. Being replaced by metric version (code 19958).','Large and medium scale topographic mapping and engineering survey.','EPSG','1362','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',4.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',115.0,'EPSG','9110','EPSG','8813','Azimuth of initial line',53.18569537,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',53.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.99984,'EPSG','9201','EPSG','8816','Easting at projection centre',29352.4763,'EPSG','9042','EPSG','8817','Northing at projection centre',22014.3572,'EPSG','9042',0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19957','Rectified Skew Orthomorphic Borneo Grid (feet)','See 19956 and 19958 for chains and metres versions. If using Hotine Oblique Mercator (variant A) method (code 9812) FE = FN = 0 ftSe. Being replaced by metric version (code 19958).','Large and medium scale topographic mapping and engineering survey.','EPSG','1851','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',4.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',115.0,'EPSG','9110','EPSG','8813','Azimuth of initial line',53.18569537,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',53.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.99984,'EPSG','9201','EPSG','8816','Easting at projection centre',1937263.44,'EPSG','9041','EPSG','8817','Northing at projection centre',1452947.58,'EPSG','9041',0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19957','Rectified Skew Orthomorphic Borneo Grid (feet)','See 19956 and 19958 for chains and metres versions. If using Hotine Oblique Mercator (variant A) method (code 9812) FE = FN = 0 ftSe. Being replaced by metric version (code 19958).','Large and medium scale topographic mapping and engineering survey.','EPSG','3977','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',4.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',115.0,'EPSG','9110','EPSG','8813','Azimuth of initial line',53.18569537,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',53.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.99984,'EPSG','9201','EPSG','8816','Easting at projection centre',1937263.44,'EPSG','9041','EPSG','8817','Northing at projection centre',1452947.58,'EPSG','9041',0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19958','Rectified Skew Orthomorphic Borneo Grid (metres)','See 19956 and 19957 for chains and feet versions. Uses Sear''s 1922 British yard-metre ratio as given by Bomford as 39.370147 inches per metre. If using Hotine Oblique Mercator (variant A) method (code 9812) FE = FN = 0 m.','Large and medium scale topographic mapping and engineering survey.','EPSG','1362','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',4.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',115.0,'EPSG','9110','EPSG','8813','Azimuth of initial line',53.18569537,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',53.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.99984,'EPSG','9201','EPSG','8816','Easting at projection centre',590476.87,'EPSG','9001','EPSG','8817','Northing at projection centre',442857.65,'EPSG','9001',0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19959','Ghana National Grid','Replaced by Ghana metric grid (code 19904).','Large and medium scale topographic mapping and engineering survey.','EPSG','1104','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-1.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99975,'EPSG','9201','EPSG','8806','False easting',900000.0,'EPSG','9094','EPSG','8807','False northing',0.0,'EPSG','9094',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19960','Prince Edward Isl. Stereographic (NAD83)','False Easting and False Northing changed from values used with ATS77 (which were FE=700000m; FN=400000m) to these new values when used with NAD83 (CSRS). New values are FE=400000m; FN=800000m; adopted in 2000.','Large and medium scale topographic mapping and engineering survey.','EPSG','1533','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',47.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-63.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999912,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
|
||||
@@ -463,3 +463,4 @@ INSERT INTO "deprecation" VALUES('projected_crs','EPSG','3410','EPSG','6933','EP
|
||||
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');
|
||||
|
||||
@@ -461,7 +461,7 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','4724','Diego Garcia 1969',NULL,NULL,'g
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4725','Johnston Island 1961',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6725','EPSG','3201',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4726','SIGD61',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6726','EPSG','3186',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4727','Midway 1961',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6727','EPSG','3202',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4728','Pico de las Nieves 1984',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6728','EPSG','3873',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4728','PN84',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6728','EPSG','4598',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4729','Pitcairn 1967',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6729','EPSG','3208',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4730','Santo 1965',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6730','EPSG','3194',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4731','Viti Levu 1916',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6731','EPSG','3195',NULL,1);
|
||||
@@ -1023,9 +1023,9 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','9148','SIRGAS-Chile 2013',NULL,NULL,'g
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9151','SIRGAS-Chile 2016',NULL,NULL,'geocentric','EPSG','6500','EPSG','1253','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9152','SIRGAS-Chile 2016',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1253','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9153','SIRGAS-Chile 2016',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1253','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9182','SIRGAS-Chile',NULL,NULL,'geocentric','EPSG','6500','EPSG','1254','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9183','SIRGAS-Chile',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1254','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9184','SIRGAS-Chile',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1254','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9182','SIRGAS-Chile',NULL,NULL,'geocentric','EPSG','6500','EPSG','1254','EPSG','1066',NULL,1);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9183','SIRGAS-Chile',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1254','EPSG','1066',NULL,1);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9184','SIRGAS-Chile',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1254','EPSG','1066',NULL,1);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9248','Tapi Aike',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1257','EPSG','4569',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9251','MMN',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1258','EPSG','2357',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9253','MMS',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1259','EPSG','2357',NULL,0);
|
||||
@@ -1034,6 +1034,7 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','9267','MGI',NULL,NULL,'geographic 3D',
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9292','ONGD17',NULL,NULL,'geocentric','EPSG','6500','EPSG','1263','EPSG','1183',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9293','ONGD17',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1263','EPSG','1183',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9294','ONGD17',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1263','EPSG','1183',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9299','HS2-IRF',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1264','EPSG','4582',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9331','KSA-GRF17',NULL,NULL,'geocentric','EPSG','6500','EPSG','1268','EPSG','1206',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9332','KSA-GRF17',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1268','EPSG','1206',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9333','KSA-GRF17',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1268','EPSG','1206',NULL,0);
|
||||
@@ -1042,3 +1043,5 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','9372','MML07-IRF',NULL,NULL,'geographi
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9378','IGb14',NULL,NULL,'geocentric','EPSG','6500','EPSG','1272','EPSG','2830',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9379','IGb14',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1272','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9380','IGb14',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1191','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9384','AbInvA96_2020-IRF',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1273','EPSG','4589',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9403','PN68',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1286','EPSG','3873',NULL,0);
|
||||
|
||||
@@ -137,7 +137,7 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','1239','SIRGAS Continuously Operating
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1240','SIRGAS Continuously Operating Network SIR14P01',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4530','2013-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1241','SIRGAS Continuously Operating Network SIR15P01',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4530','2013-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1242','SIRGAS Continuously Operating Network SIR17P01',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4530','2015-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1243','SIRGAS-Chile realization 2 epoch 2010.00',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066','2010-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1243','SIRGAS-Chile realization 2 epoch 2010',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066','2010-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1244','IGS97',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262','1997-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1245','IGS00',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262','1998-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1246','IGb00',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262','1998-01-01',0);
|
||||
@@ -145,17 +145,20 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','1247','IGS05',NULL,NULL,'EPSG','7019
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1248','IGb08',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262','2005-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1249','North American Datum of 1983 (PACP00)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4162','1993-08-15',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1251','Kosovo Reference System 2001',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4542','2001-04-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1252','SIRGAS-Chile realization 3 epoch 2013.00',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066','2013-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1253','SIRGAS-Chile realization 4 epoch 2016.00',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066','2016-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1254','SIRGAS-Chile',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1252','SIRGAS-Chile realization 3 epoch 2013',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066','2013-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1253','SIRGAS-Chile realization 4 epoch 2016',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066','2016-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1254','SIRGAS-Chile',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066',NULL,1);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1257','Tapi Aike',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','4569','1945-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1258','Ministerio de Marina Norte',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2357',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1259','Ministerio de Marina Sur',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2357',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1263','Oman National Geodetic Datum 2017',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1183','2017-11-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1264','HS2 Intermediate Reference Frame',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4582',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1266','TPEN11 Intermediate Reference Frame',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4583',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1268','Kingdom of Saudi Arabia Geodetic Reference Frame 2017',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1206','2019-07-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1271','MML07 Intermediate Reference Frame',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4588',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1272','IGb14',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262','2010-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1273','AbInvA96_2020 Intermediate Reference Frame',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4589',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1286','Pico de las Nieves 1968',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3873',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6001','Not specified (based on Airy 1830 ellipsoid)',NULL,NULL,'EPSG','7001','EPSG','8901','EPSG','1263',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6002','Not specified (based on Airy Modified 1849 ellipsoid)',NULL,NULL,'EPSG','7002','EPSG','8901','EPSG','1263',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6003','Not specified (based on Australian National Spheroid)',NULL,NULL,'EPSG','7003','EPSG','8901','EPSG','1263',NULL,0);
|
||||
@@ -521,7 +524,7 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','6724','Diego Garcia 1969',NULL,NULL,
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6725','Johnston Island 1961',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3201','1961-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6726','Sister Islands Geodetic Datum 1961',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3186','1961-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6727','Midway 1961',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3202','1961-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6728','Pico de las Nieves 1984',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3873',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6728','Pico de las Nieves 1984',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','4598',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6729','Pitcairn 1967',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3208','1967-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6730','Santo 1965',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3194','1965-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6731','Viti Levu 1916',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3195','1916-01-01',1);
|
||||
|
||||
@@ -140,7 +140,8 @@ VALUES
|
||||
-- Spain
|
||||
('100800401.gsb','es_cat_icgc_100800401.tif','100800401.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/es_cat_icgc_100800401.tif',1,1,NULL),
|
||||
('SPED2ETV2.gsb','es_ign_SPED2ETV2.tif',NULL,'GTiff','hgridshift',0,NULL,'https://cdn.proj.org/es_ign_SPED2ETV2.tif',1,1,NULL),
|
||||
('EGM08_REDNAP.asc','es_ign_egm08-rednap.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/es_ign_egm08-rednap.tif',1,1,NULL),
|
||||
('EGM08_REDNAP.txt','es_ign_egm08-rednap.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/es_ign_egm08-rednap.tif',1,1,NULL),
|
||||
('EGM08_REDNAP_Canarias.txt','es_ign_egm08-rednap-canarias.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/es_ign_egm08-rednap-canarias.tif',1,1,NULL),
|
||||
-- Portugal
|
||||
('DLx_ETRS89_geo.gsb','pt_dgt_DLx_ETRS89_geo.tif','DLx_ETRS89_geo.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/pt_dgt_DLx_ETRS89_geo.tif',1,1,NULL),
|
||||
('D73_ETRS89_geo.gsb','pt_dgt_D73_ETRS89_geo.tif','D73_ETRS89_geo.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/pt_dgt_D73_ETRS89_geo.tif',1,1,NULL),
|
||||
@@ -224,5 +225,10 @@ VALUES
|
||||
('nzgeoid2016.gtx','nz_linz_nzgeoid2016.tif','nzgeoid2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/nz_linz_nzgeoid2016.tif',1,1,NULL),
|
||||
-- Superseded
|
||||
('nzgeoid09.sid','nz_linz_nzgeoid2009.tif','nzgeoid2009.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/nz_linz_nzgeoid2009.tif',1,1,NULL),
|
||||
('nzgeoid2009.gtx','nz_linz_nzgeoid2009.tif','nzgeoid2009.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/nz_linz_nzgeoid2009.tif',1,1,NULL)
|
||||
('nzgeoid2009.gtx','nz_linz_nzgeoid2009.tif','nzgeoid2009.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/nz_linz_nzgeoid2009.tif',1,1,NULL),
|
||||
-- Brazil
|
||||
('CA61_003.gsb','br_ibge_CA61_003.tif',NULL,'GTiff','hgridshift',0,NULL,'https://cdn.proj.org/br_ibge_CA61_003.tif',1,1,NULL),
|
||||
('CA7072_003.gsb','br_ibge_CA7072_003.tif',NULL,'GTiff','hgridshift',0,NULL,'https://cdn.proj.org/br_ibge_CA7072_003.tif',1,1,NULL),
|
||||
('SAD69_003.gsb','br_ibge_SAD69_003.tif',NULL,'GTiff','hgridshift',0,NULL,'https://cdn.proj.org/br_ibge_SAD69_003.tif',1,1,NULL),
|
||||
('SAD96_003.gsb','br_ibge_SAD96_003.tif',NULL,'GTiff','hgridshift',0,NULL,'https://cdn.proj.org/br_ibge_SAD96_003.tif',1,1,NULL)
|
||||
;
|
||||
|
||||
@@ -349,6 +349,8 @@ INSERT INTO "grid_transformation" VALUES('EPSG','9278','ETRS89 to GHA height (1)
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9280','ITRF2005 to SA LLD height (1)','Hybrid geoid referenced to ITRF2005@2010.02. Accuracy 7cm at 1 sigma.','Derivation of gravity-related heights from GNSS observations.','EPSG','1082','Geographic3D to GravityRelatedHeight (SA 2010)','EPSG','7910','EPSG','9279','EPSG','3309',0.07,'EPSG','8666','Geoid (height correction) model file','SAGEOID2010.dat',NULL,NULL,NULL,NULL,NULL,NULL,'NGI-Zaf',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9282','Amersfoort to ETRS89 (9)','Consistent to within 1mm with official RNAPTRANS(TM)2018 at ground level onshore and at MSL offshore. The horizontal deviation using this NTv2 grid is approximately 1mm per 50m height difference from ground level or MSL.','Approximation of horizontal component of official 3D RDNAPTRANS(TM) transformation, which since 1st October 2000 has defined Amersfoort geodetic datum.','EPSG','9615','NTv2','EPSG','4289','EPSG','4258','EPSG','1275',0.001,'EPSG','8656','Latitude and longitude difference file','rdtrans2018.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'NSGI-Nld 2018',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9283','ETRS89 to NAP height (2)','Vertical component of official RDNAPTRANS(TM)2018 procedure. Replaces previous versions of RDNAPTRANS.','Derivation of gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4937','EPSG','5709','EPSG','1275',0.001,'EPSG','8666','Geoid (height correction) model file','nlgeo2018.gtx',NULL,NULL,NULL,NULL,NULL,NULL,'NSGI-Nld 2018',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9302','HS2-IRF to ETRS89 (1)','In conjunction with the HS2-TM projection (code 9301), emulates zero-distortion HS2P1+14 Snake projection. For use with OSNet v2009 CORS. Supersedes HS2TN02 used with OSNet v2001. Derived at 350000 locations, RMS 0.15 mm; this is considered errorless.','Engineering survey for HS2 project phases 1 and 2a.','EPSG','9615','NTv2','EPSG','9299','EPSG','4258','EPSG','4582',0.0,'EPSG','8656','Latitude and longitude difference file','HS2TN15_NTv2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'HS2-Gbr OSNet2009',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9304','ETRS89 to HS2-VRF height (1)','Defines HS2-VRF using OSNet v2009. Full grid also available in a single file in each of Leica, Topcon and Trimble formats.','Derivation of gravity-related heights from GNSS observations.','EPSG','9661','Geographic3D to GravityRelatedHeight (EGM)','EPSG','4937','EPSG','9303','EPSG','4582',0.001,'EPSG','8666','Geoid (height correction) model file','HS2GM15W.grd',NULL,NULL,NULL,NULL,NULL,NULL,'HS2-Gbr HS2GM15 W',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9310','DHDN to ETRS89 (10)','Replaces SeTa2009 from 2018-01-15. Derived using the 2016 implementation of ETRS89 / DREF91 and DHHN2016. Coincident with the transformation of cadastral data from DHDN to ETRS89 used by LVGL at a level of 1-2 mm.','Cadastre, engineering survey, topographic mapping (large scale).','EPSG','9615','NTv2','EPSG','4314','EPSG','4258','EPSG','4584',0.01,'EPSG','8656','Latitude and longitude difference file','SeTa2016.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'LVGL-Deu SL 2016',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9312','NZVD2016 height to Auckland 1946 height (2)','Derived at 260 control points. Mean offset 0.292m, standard deviation 0.029m, maximum difference from mean 0.075m. Supersedes NZVD2016 height to Auckland 1946 height (1) (code 7860) after change of grid file format.','Transformation between national and local height systems.','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','7839','EPSG','5759','EPSG','3764',0.02,'EPSG','8732','Vertical offset file','auckht1946-nzvd2016.gtx',NULL,NULL,NULL,NULL,'EPSG','4167','LINZ-NZ AUCK gtx',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9313','NZVD2016 height to Bluff 1955 height (2)','Derived at 71 control points. Mean offset 0.273m, standard deviation 0.034m, maximum difference from mean 0.079m. Supersedes NZVD2016 height to Bluff 1955 height (1) (code 7861) after change of grid file format.','Transformation between national and local height systems.','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','7839','EPSG','5760','EPSG','3801',0.02,'EPSG','8732','Vertical offset file','blufht1955-nzvd2016.gtx',NULL,NULL,NULL,NULL,'EPSG','4167','LINZ-NZ BLUF gtx',0);
|
||||
@@ -375,6 +377,36 @@ INSERT INTO "grid_transformation" VALUES('EPSG','9355','KSA-GRF17 to KSA-VRF14 h
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9363','Ain el Abd to KSA-GRF17 (2)','Accuracy 5-10 cm.','Geodesy.','EPSG','1087','Geocentric translation by Grid Interpolation (IGN)','EPSG','4204','EPSG','9333','EPSG','3303',0.1,'EPSG','8727','Geocentric translation file','ARAMCO_AAA-KSAGRF_6.tac',NULL,NULL,NULL,NULL,'EPSG','9333','GCS-Sau 0.1m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9365','ETRS89 to TPEN11-IRF (1)','In conjunction with the TPEN11-TM map projection (code 9366) applied to TPEN11-IRF (code 9364), emulates the TPEN11 Snake and TPEN11ext Snake projections. Applied to ETRS89 (as realized through the OSNet v2009 CORS) defines TPEN11-IRF hence is errorless.','Engineering survey and topographic mapping for railway applications.','EPSG','9615','NTv2','EPSG','4258','EPSG','9364','EPSG','4583',0.0,'EPSG','8656','Latitude and longitude difference file','TN15-ETRS89-to-TPEN11-IRF.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'NR-Gbr TPEN11 OSNet2009',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9369','ETRS89 to MML07-IRF (1)','In conjunction with the MML07-TM map projection (code 9370) applied to MML07-IRF (code 9372), emulates the MML07 Snake projection. Applied to ETRS89 (as realized through the OSNet v2009 CORS) defines MML07-IRF hence is errorless.','Engineering survey and topographic mapping for railway applications.','EPSG','9615','NTv2','EPSG','4258','EPSG','9372','EPSG','4588',0.0,'EPSG','8656','Latitude and longitude difference file','TN15-ETRS89-to-MML07-IRF.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'NR-Gbr MML07 OSNet2009',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9386','ETRS89 to AbInvA96_2020-IRF (1)','In conjunction with AbInvA96_2020-TM map projection (code 9385) applied to AbInvA96_2020-IRF (code 9384), emulates the AbInvA96_2020 Snake projection. Applied to ETRS89 (as realized through the OSNet v2009) defines AbInvA96_2020-IRF hence is errorless.','Highway engineering.','EPSG','9615','NTv2','EPSG','4258','EPSG','9384','EPSG','4589',0.0,'EPSG','8656','Latitude and longitude difference file','TN15-ETRS89-to-AbInvA96_2020-IRF.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'TS-Gbr A96 OSNet2009',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9408','ED50 to ETRS89 (16)','Replaces ED50 to ETRS89 (12) (code 15932).','Spatial referencing.','EPSG','9615','NTv2','EPSG','4230','EPSG','4258','EPSG','4605',0.2,'EPSG','8656','Latitude and longitude difference file','PENR2009.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp v3 pen',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9409','ED50 to ETRS89 (17)','Replaces ED50 to ETRS89 (12) (code 15932).','Spatial referencing.','EPSG','9615','NTv2','EPSG','4230','EPSG','4258','EPSG','2335',0.2,'EPSG','8656','Latitude and longitude difference file','BALR2009.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp v3 Bal',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9410','ETRS89 to Alicante height (1)','','Derivation of gravity-related heights from GPS observations.','EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4937','EPSG','5782','EPSG','2366',0.05,'EPSG','8666','Geoid (height correction) model file','EGM08_REDNAP.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9411','ETRS89 to Mallorca height (1)','','Derivation of gravity-related heights from GPS observations.','EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4937','EPSG','9392','EPSG','4602',0.05,'EPSG','8666','Geoid (height correction) model file','EGM08_REDNAP.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9412','ETRS89 to Menorca height (1)','','Derivation of gravity-related heights from GPS observations.','EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4937','EPSG','9393','EPSG','4603',0.05,'EPSG','8666','Geoid (height correction) model file','EGM08_REDNAP.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9413','ETRS89 to Ibiza height (1)','','Derivation of gravity-related heights from GPS observations.','EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4937','EPSG','9394','EPSG','4604',0.05,'EPSG','8666','Geoid (height correction) model file','EGM08_REDNAP.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9414','ETRS89 to Ceuta 2 height (1)','','Derivation of gravity-related heights from GPS observations.','EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4937','EPSG','9402','EPSG','4590',0.05,'EPSG','8666','Geoid (height correction) model file','EGM08_REDNAP.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9415','REGCAN95 to Lanzarote height (1)','','Derivation of gravity-related heights from GPS observations.','EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4080','EPSG','9395','EPSG','4591',0.05,'EPSG','8666','Geoid (height correction) model file','EGM08_REDNAP_Canarias.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9416','REGCAN95 to Fuerteventura height (1)','','Derivation of gravity-related heights from GPS observations.','EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4080','EPSG','9396','EPSG','4592',0.05,'EPSG','8666','Geoid (height correction) model file','EGM08_REDNAP_Canarias.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9417','REGCAN95 to Gran Canaria height (1)','','Derivation of gravity-related heights from GPS observations.','EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4080','EPSG','9397','EPSG','4593',0.05,'EPSG','8666','Geoid (height correction) model file','EGM08_REDNAP_Canarias.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9418','REGCAN95 to Tenerife height (1)','','Derivation of gravity-related heights from GPS observations.','EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4080','EPSG','9398','EPSG','4594',0.05,'EPSG','8666','Geoid (height correction) model file','EGM08_REDNAP_Canarias.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9419','REGCAN95 to La Gomera height (1)','','Derivation of gravity-related heights from GPS observations.','EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4080','EPSG','9399','EPSG','4595',0.05,'EPSG','8666','Geoid (height correction) model file','EGM08_REDNAP_Canarias.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9420','REGCAN95 to La Palma height (1)','','Derivation of gravity-related heights from GPS observations.','EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4080','EPSG','9400','EPSG','4596',0.05,'EPSG','8666','Geoid (height correction) model file','EGM08_REDNAP_Canarias.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9421','REGCAN95 to El Hierro height (1)','','Derivation of gravity-related heights from GPS observations.','EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4080','EPSG','9401','EPSG','4597',0.05,'EPSG','8666','Geoid (height correction) model file','EGM08_REDNAP_Canarias.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Esp 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9431','GHA height to EVRF2019 height (1)','Determined at 147 points, SD 0.060m. Offset: mean -0.306m, minimum -0.442m, maximum -0.219m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5778','EPSG','9389','EPSG','1037',0.12,'EPSG','8732','Vertical offset file','at_2019_z.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Aut 2019z',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9432','GHA height to EVRF2019 mean-tide height (1)','Determined at 147 points, SD 0.058m. Offset: mean -0.330m, minimum -0.463m, maximum -0.245m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5778','EPSG','9390','EPSG','1037',0.116,'EPSG','8732','Vertical offset file','at_2019_m.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Aut 2019m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9433','Ostend height to EVRF2019 mean-tide height (1)','Determined at 39 points, SD 0.016m. Offset: mean -2.323m, minimum -2.372m, maximum -2.290m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5710','EPSG','9390','EPSG','1347',0.032,'EPSG','8732','Vertical offset file','be_2019_m.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Bel 2019m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9434','Ostend height to EVRF2019 height (1)','Determined at 39 points, SD 0.017m. Offset: mean -2.315m, minimum -2.364m, maximum -2.279m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5710','EPSG','9389','EPSG','1347',0.034,'EPSG','8732','Vertical offset file','be_2019_z.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Bel 2019z',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9435','DHHN2016 height to EVRF2019 height (1)','Determined at 802 points, SD 0.010m. Offset: mean 0.013m, minimum -0.008m, maximum 0.039m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','7837','EPSG','9389','EPSG','3339',0.02,'EPSG','8732','Vertical offset file','de_2019_z.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Deu 2019z',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9436','DHHN2016 height to EVRF2019 mean-tide height (1)','Determined at 802 points, SD 0.003m. Offset: mean 0.007m, minimum -0.004m, maximum 0.018m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','7837','EPSG','9390','EPSG','3339',0.006,'EPSG','8732','Vertical offset file','de_2019_m.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Deu 2019m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9437','Trieste height to EVRF2019 height (1)','Determined at 46 points, SD 0.016m. Offset: mean -0.548m, minimum -0.595m, maximum -0.500m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5195','EPSG','9389','EPSG','1148',0.032,'EPSG','8732','Vertical offset file','mk_2019_z.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Mkd 2019z',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9438','Trieste height to EVRF2019 mean-tide height (1)','Determined at 46 points, SD 0.015m. Offset: mean -0.604m, minimum -0.650m, maximum -0.558m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5195','EPSG','9390','EPSG','1148',0.03,'EPSG','8732','Vertical offset file','mk_2019_m.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Mkd 2019m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9439','Cascais height to EVRF2019 height (1)','Determined at 18 points, SD 0.010m. Offset: mean -0.277m, minimum -0.323m, maximum -0.264m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5780','EPSG','9389','EPSG','1294',0.02,'EPSG','8732','Vertical offset file','pt_2019_z.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Prt 2019z',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9440','Cascais height to EVRF2019 mean-tide height (1)','Determined at 18 points, SD 0.007m. Offset: mean -0.343m, minimum -0.383m, maximum -0.332m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5780','EPSG','9390','EPSG','1294',0.014,'EPSG','8732','Vertical offset file','pt_2019_m.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Prt 2019m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9441','SVS2010 height to EVRF2019 height (1)','Determined at 66 points, SD 0.003m. Offset: mean -0.258m, minimum -0.264m, maximum -0.250m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','8690','EPSG','9389','EPSG','3307',0.006,'EPSG','8732','Vertical offset file','si_2019_z.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Svn 2019z',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9442','SVS2010 height to EVRF2019 mean-tide height (1)','Determined at 66 points, SD 0.004m. Offset: mean -0.290m, minimum -0.295m, maximum -0.280m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','8690','EPSG','9390','EPSG','3307',0.008,'EPSG','8732','Vertical offset file','si_2019_m.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Svn 2019m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9443','LHN95 height to EVRF2019 height (1)','Determined at 553 points, SD 0.075m. Offset: mean -0.204m, minimum -0.330m, maximum -0.130m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5729','EPSG','9389','EPSG','1286',0.15,'EPSG','8732','Vertical offset file','ch_2019_z.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Che 2019z',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9444','LHN95 height to EVRF2019 mean-tide height (1)','Determined at 553 points, SD 0.073m. Offset: mean -0.233m, minimum -0.353m, maximum -0.044m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5729','EPSG','9390','EPSG','1286',0.146,'EPSG','8732','Vertical offset file','ch_2019_m.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Che 2019m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9445','ODN height to EVRF2019 height (1)','Determined at 35 points, SD 0.011m. Offset: mean -0.181m, minimum -0.202m, maximum -0.161m.','Vertical datum change.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5701','EPSG','9389','EPSG','2792',0.022,'EPSG','8732','Vertical offset file','gb_2019_z.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Gbr 2019z',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10000','RGF93 to NGF-IGN69 height (1)','May be used for transformations from WGS 84 to NGF-IGN69. Accuracy at each 0.1 deg x 0.1 degree grid node is given within the geoid model file.','Derivation of gravity-related heights from GPS observations.','EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4965','EPSG','5720','EPSG','1326',0.5,'EPSG','8666','Geoid (height correction) model file','ggf97a.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Fra',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10001','ETRS89 to NGF-IGN69 height (1)','Parameter values taken from RGF93 to NGF-IGN69 (1) (code 10000) assuming that RGF93 is equivalent to ETRS89 within the accuracy of the transformation. Accuracy at each 0.1 deg x 0.1 degree grid node is given within the geoid model file.','Derivation of gravity-related heights from GPS observations.','EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4937','EPSG','5720','EPSG','1326',0.5,'EPSG','8666','Geoid (height correction) model file','ggf97a.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Fra',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10002','RGF93 to NGF-IGN78 height (1)','May be used for transformations from WGS 84 to NGF-IGN78. Accuracy at each 0.1 deg x 0.1 degree grid node is given within the geoid model file.','Derivation of gravity-related heights from GPS observations.','EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4965','EPSG','5721','EPSG','1327',0.5,'EPSG','8666','Geoid (height correction) model file','ggf97a_corse.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Fra Cor',0);
|
||||
|
||||
@@ -84,15 +84,3 @@ INSERT INTO "grid_transformation" VALUES(
|
||||
NULL,
|
||||
'EPSG','8666','Geoid (height correction) model file','Icegeoid_ISN2016.gtx',
|
||||
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
-- Spain
|
||||
|
||||
INSERT INTO "grid_transformation" VALUES(
|
||||
'PROJ','EPSG_4937_TO_EPSG_5782','ETRS89 to Alicante height',
|
||||
NULL,NULL,
|
||||
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
|
||||
'EPSG','4937', -- source CRS (ETRS89 geographic 3D)
|
||||
'EPSG','5782', -- target CRS (Alicante height)
|
||||
'EPSG','2366', -- area of use: Spain - mainland onshore
|
||||
NULL,
|
||||
'EPSG','8666','Geoid (height correction) model file','EGM08_REDNAP.asc',
|
||||
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
|
||||
@@ -763,7 +763,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','5333','ITRF2005 to ITRF2008
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5350','Campo Inchauspe to POSGAR 2007 (1)','Adopted from U.S. Defense Mapping Agency values for Campo Inchauspe to WGS 84 (tfm code 1127) assuming that POSGAR 2007 is equivalent to WGS 84.','Accuracy 5m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4221','EPSG','5340','EPSG','3215',5.0,-148.0,136.0,90.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,'IGM-Arg',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5351','POSGAR 2007 to WGS 84 (1)','','Approximation at the sub meter level.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5340','EPSG','4326','EPSG','1033',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Arg',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5374','MARGEN to WGS 84 (1)','','Accuracy 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5354','EPSG','4326','EPSG','1049',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Bol',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5375','SIRGAS-Chile to WGS 84 (1)','','Accuracy 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','9184','EPSG','4326','EPSG','1066',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Chl',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5375','SIRGAS-Chile to WGS 84 (1)','','Accuracy 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','9184','EPSG','4326','EPSG','1066',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Chl',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5376','CR05 to WGS 84 (1)','','Accuracy 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5365','EPSG','4326','EPSG','1074',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Cri',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5377','MACARIO SOLIS to WGS 84 (1)','','Accuracy 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5371','EPSG','4326','EPSG','1186',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Pan',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5378','Peru96 to WGS 84 (1)','','Accuracy 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5373','EPSG','4326','EPSG','1189',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Per',0);
|
||||
@@ -901,16 +901,16 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','6942','AGD66 to PNG94 (7)','
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6943','AGD66 to WGS 84 (21)','Parameter values taken from AGD66 to PNG94 (3) (code 6938). Approximation at the +/- 5m level assuming that PNG94 is equivalent to WGS 84 within the accuracy of the transformation.','Low accuracy transformation suitable for mapping and navigation purposes only.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','4214',5.0,-129.0,-58.0,152.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,'Qcl-Png Mainland',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6944','AGD66 to WGS 84 (22)','Parameter values taken from AGD66 to PNG94 (5) (code 6940). Approximation at the +/- 4m level assuming that PNG94 is equivalent to WGS 84 within the accuracy of the transformation.','Low accuracy transformation suitable for mapping and navigation purposes only.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','4013',4.0,-131.3,-55.3,151.8,'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,'Qcl-Png PFTB 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6945','AGD66 to WGS 84 (23)','Parameter values taken from AGD66 to PNG94 (7) (code 6942). Approximation at the +/- 4m level assuming that PNG94 is equivalent to WGS 84 within the accuracy of the transformation.','Low accuracy transformation suitable for mapping and navigation purposes only.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','4216',4.0,-137.4,-58.9,150.4,'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,'Qcl-Png North Fly',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6949','PSAD56 to SIRGAS-Chile (1)','Also used as a transformation from PSAD56 to WGS 84 - see code 6971.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','9184','EPSG','4231',5.0,-302.0,272.0,-360.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,'IGM-Chl A',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6950','PSAD56 to SIRGAS-Chile (2)','Also used as a transformation from PSAD56 to WGS 84 - see code 6972.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','9184','EPSG','4222',5.0,-328.0,340.0,-329.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,'IGM-Chl B',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6951','PSAD56 to SIRGAS-Chile (3)','Also used as a transformation from PSAD56 to WGS 84 - see code 6973.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','9184','EPSG','4221',5.0,-352.0,403.0,-287.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,'IGM-Chl C',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6949','PSAD56 to SIRGAS-Chile 2002 (1)','Also used as a transformation from PSAD56 to WGS 84 - see code 6971.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','5360','EPSG','4231',5.0,-302.0,272.0,-360.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,'IGM-Chl A',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6950','PSAD56 to SIRGAS-Chile 2002 (2)','Also used as a transformation from PSAD56 to WGS 84 - see code 6972.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','5360','EPSG','4222',5.0,-328.0,340.0,-329.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,'IGM-Chl B',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6951','PSAD56 to SIRGAS-Chile 2002 (3)','Also used as a transformation from PSAD56 to WGS 84 - see code 6973.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','5360','EPSG','4221',5.0,-352.0,403.0,-287.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,'IGM-Chl C',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6960','VN-2000 to WGS 84 (2)','','Academic research not officially adopted.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4756','EPSG','4326','EPSG','3328',1.0,-191.90441429,-39.30318279,-111.45032835,'EPSG','9001',-0.00928836,0.01975479,-0.00427372,'EPSG','9104',0.252906278,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DoSM-Vnm',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6963','Albanian 1987 to ETRS89 (1)','Derived using 90 stations, mse 18cm. May be taken as approximate transformation from Albanian 1987 to WGS 84 (see code 6964).','Use only for horizontal coordinates; geoid heights must be calculated with ALBGEO3 software.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4191','EPSG','4258','EPSG','3212',0.2,-44.183,-0.58,-38.489,'EPSG','9001',2.3867,2.7072,-3.5196,'EPSG','9104',-8.2703,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Alb 2D',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6964','Albanian 1987 to WGS 84 (1)','Parameter values from Albanian 1987 to ETRS89 (1) (code 6963). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.','Use only for horizontal coordinates; geoid heights must be calculated with ALBGEO3 software.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4191','EPSG','4326','EPSG','3212',1.0,-44.183,-0.58,-38.489,'EPSG','9001',2.3867,2.7072,-3.5196,'EPSG','9104',-8.2703,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-Alb 2D',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6967','SAD69 to SIRGAS-Chile (1)','Also used as a transformation from SAD69 to WGS 84 - see code 6974. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','4232',5.0,-59.0,-11.0,-52.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,'IGM-Chl A',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6968','SAD69 to SIRGAS-Chile (2)','Also used as a transformation from SAD69 to WGS 84 - see code 6975. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','9184','EPSG','4224',5.0,-64.0,0.0,-32.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,'IGM-Chl B',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6968','SAD69 to SIRGAS-Chile 2002 (2)','Also used as a transformation from SAD69 to WGS 84 - see code 6975. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','5360','EPSG','4224',5.0,-64.0,0.0,-32.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,'IGM-Chl B',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6969','SAD69 to SIRGAS-Chile (3)','Also used as a transformation from SAD69 to WGS 84 - see code 6976. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','4221',5.0,-72.0,10.0,-32.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,'IGM-Chl C',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6970','SAD69 to SIRGAS-Chile (4)','Also used as a transformation from SAD69 to WGS 84 - see code 6977.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','9184','EPSG','2805',5.0,-79.0,13.0,-14.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,'IGM-Chl D',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6970','SAD69 to SIRGAS-Chile 2002 (4)','Also used as a transformation from SAD69 to WGS 84 - see code 6977.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','5360','EPSG','2805',5.0,-79.0,13.0,-14.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,'IGM-Chl D',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6971','PSAD56 to WGS 84 (15)','Derived at 5 stations. Replaces PSAD56 to WGS 84 (3) (code 1203). Also used as a transformation from PSAD56 to SIRGAS-Chile - see code 6949.','For military purposes. Accuracy 10m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','4231',17.0,-302.0,272.0,-360.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,'NGA-Chl N 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6972','PSAD56 to WGS 84 (16)','Derived at 7 stations. Also used as a transformation from PSAD56 to SIRGAS-Chile - see code 6950.','For military purposes. Accuracy 10m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','4222',17.0,-328.0,340.0,-329.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,'NGA-Chl Cen 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6973','PSAD56 to WGS 84 (17)','Derived at 6 stations. Replaces PSAD56 to WGS 84 (4) (code 1204). Info source gives S limit as 44°S but Chilean IGM states that PSAD56 limit is 43°30''S. Also used as a transformation from PSAD56 to SIRGAS-Chile - see code 6951.','For military purposes. Accuracy 10m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','4221',17.0,-352.0,403.0,-287.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,'NGA-Chl S 2014',0);
|
||||
@@ -933,8 +933,8 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','7442','Nord Sahara 1959 to W
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7443','ONGD14 to WGS 84 (2)','Approximation at the +/- 1m level assuming that ONG14 is equivalent to WGS 84. See transformation code 7377 for authoritative values.','Geodesy.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','7373','EPSG','4326','EPSG','1183',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-Omn',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7444','CGRS93 to ETRS89 (1)','Derived at 6 points at epoch 1993.1. May be taken as approximate transformation CGRS93 to WGS 84 - see code 7445.','Small scale hydrographic and aviation mapping.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','6311','EPSG','4258','EPSG','3236',0.1,8.846,-4.394,-1.122,'EPSG','9001',0.00237,0.146528,-0.130428,'EPSG','9104',0.783926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DLS-Cyp',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7445','CGRS93 to WGS 84 (1)','Parameter values from CGRS93 to ETRS89 (1) (code 7444). Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','Small scale hydrographic and aviation mapping.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','6311','EPSG','4326','EPSG','3236',1.0,8.846,-4.394,-1.122,'EPSG','9001',0.00237,0.146528,-0.130428,'EPSG','9104',0.783926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-Cyp',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7448','SAD69 to SIRGAS-Chile (1)','Also used as a transformation from SAD69 to WGS 84 - see code 6974. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','9184','EPSG','4232',5.0,-59.0,-11.0,-52.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,'IGM-Chl A',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7449','SAD69 to SIRGAS-Chile (3)','Also used as a transformation from SAD69 to WGS 84 - see code 6976. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','9184','EPSG','4221',5.0,-72.0,10.0,-32.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,'IGM-Chl C',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7448','SAD69 to SIRGAS-Chile 2002 (1)','Also used as a transformation from SAD69 to WGS 84 - see code 6974. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','5360','EPSG','4232',5.0,-59.0,-11.0,-52.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,'IGM-Chl A',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7449','SAD69 to SIRGAS-Chile 2002 (3)','Also used as a transformation from SAD69 to WGS 84 - see code 6976. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','5360','EPSG','4221',5.0,-72.0,10.0,-32.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,'IGM-Chl C',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7666','WGS 84 (G1762) to ITRF2008 (1)','Defined at epoch 2005.0. Scale difference in ppb where 1/billion = 1E-9 or nm/m.','Geodesy.','EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7664','EPSG','5332','EPSG','1262',0.01,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NGA-Wld 2005.0',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7667','WGS 84 (G1674) to WGS 84 (G1762) (1)','Defined at epoch 2005.0. Scale difference in ppb where 1/billion = 1E-9 or nm/m.','Geodesy.','EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7662','EPSG','7664','EPSG','1262',0.01,-4.0,3.0,4.0,'EPSG','1025',0.27,-0.27,0.38,'EPSG','1031',-6.9,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NGA-Wld 2005.0',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7668','WGS 84 (G1150) to WGS 84 (G1762) (1)','Defined at epoch 2001.0. Scale difference in ppb where 1/billion = 1E-9 or nm/m.','Geodesy','EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7660','EPSG','7664','EPSG','1262',0.02,-6.0,5.0,20.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',-4.5,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NGA-Wld 2001.0',0);
|
||||
@@ -1180,6 +1180,18 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','9264','POSGAR 2007 to WGS 84
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9281','Amersfoort to ETRS89 (8)','Derived using ETRF2014. In RDNAPTRANS2018 software used assuming an ETRS89 ellipsoidal height of 43m and with an additional correction grid (corrections of up to 0.25m). Replaces Amersfoort to ETRS89 (5) and (6) (tfm codes 4830 and 4831).','Accuracy 0.25m','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4289','EPSG','4258','EPSG','1275',0.25,565.7381,50.4018,465.2904,'EPSG','9001',1.91514,-1.60363,9.09546,'EPSG','9109',4.07244,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-Nld 2018',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9298','ONGD17 to WGS 84 (1)','','Geodesy.','EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','9292','EPSG','4978','EPSG','1183',0.1,1.16835,-1.42001,-2.24431,'EPSG','9001',0.00822,0.05508,-0.01818,'EPSG','9104',0.23388,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NSA-Omn',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9334','ITRF2014 to KSA-GRF17 (1)','Arabian plate rotations derived from obs. at 41 sites with at least 2.5 years of continuous observations. May be approximated by position vector CT with rX=8.393", rY=-0.749", rZ=10.276" valid at 2017.00 and degrading by approximately 2.5cm per year.','Geodesy.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7789','EPSG','9331','EPSG','1206',0.001,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',-1.199,0.107,-1.468,'EPSG','1032',0.0,'EPSG','1030',2017.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'GCS-Sau',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9339','PSAD56 to SIRGAS-Chile 2010 (1)','Also used as a transformation from PSAD56 to other realizations of SIRGAS-Chile and to WGS 84 - see code 6971.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','8949','EPSG','4231',5.0,-302.0,272.0,-360.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,'IGM-Chl A',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9340','PSAD56 to SIRGAS-Chile 2010 (2)','Also used as a transformation from PSAD56 to other realizations of SIRGAS-Chile and to WGS 84 - see code 6972.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','8949','EPSG','4222',5.0,-328.0,340.0,-329.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,'IGM-Chl B',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9341','PSAD56 to SIRGAS-Chile 2010 (3)','Also used as a transformation from PSAD56 to other realizations of SIRGAS-Chile and to WGS 84 - see code 6973.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','8949','EPSG','4221',5.0,-352.0,403.0,-287.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,'IGM-Chl C',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9342','PSAD56 to SIRGAS-Chile 2013 (1)','Also used as a transformation from PSAD56 to other realizations of SIRGAS-Chile and to WGS 84 - see code 6971.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','9148','EPSG','4231',5.0,-302.0,272.0,-360.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,'IGM-Chl A',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9343','PSAD56 to SIRGAS-Chile 2013 (2)','Also used as a transformation from PSAD56 to other realizations of SIRGAS-Chile and to WGS 84 - see code 6972.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','9148','EPSG','4222',5.0,-328.0,340.0,-329.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,'IGM-Chl B',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9344','PSAD56 to SIRGAS-Chile 2013 (3)','Also used as a transformation from PSAD56 to other realizations of SIRGAS-Chile and to WGS 84 - see code 6973.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','9148','EPSG','4221',5.0,-352.0,403.0,-287.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,'IGM-Chl C',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9345','PSAD56 to SIRGAS-Chile 2016 (1)','Also used as a transformation from PSAD56 to other realizations of SIRGAS-Chile and to WGS 84 - see code 6971.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','9153','EPSG','4231',5.0,-302.0,272.0,-360.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,'IGM-Chl A',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9346','PSAD56 to SIRGAS-Chile 2016 (2)','Also used as a transformation from PSAD56 to other realizations of SIRGAS-Chile and to WGS 84 - see code 6972.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','9153','EPSG','4222',5.0,-328.0,340.0,-329.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,'IGM-Chl B',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9347','PSAD56 to SIRGAS-Chile 2016 (3)','Also used as a transformation from PSAD56 to other realizations of SIRGAS-Chile and to WGS 84 - see code 6973.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','9153','EPSG','4221',5.0,-352.0,403.0,-287.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,'IGM-Chl C',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9348','SAD69 to SIRGAS-Chile 2010 (4)','Also used as a transformation from SAD69 to other realizations of SIRGAS-Chile and to WGS 84 - see code 6977.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','8949','EPSG','2805',5.0,-79.0,13.0,-14.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,'IGM-Chl D',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9349','SAD69 to SIRGAS-Chile 2013 (4)','Also used as a transformation from SAD69 to other realizations of SIRGAS-Chile and to WGS 84 - see code 6977.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','9148','EPSG','2805',5.0,-79.0,13.0,-14.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,'IGM-Chl D',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9350','SAD69 to SIRGAS-Chile 2016 (4)','Also used as a transformation from SAD69 to other realizations of SIRGAS-Chile and to WGS 84 - see code 6977.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','9153','EPSG','2805',5.0,-79.0,13.0,-14.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,'IGM-Chl D',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9361','MTRF-2000 to KSA-GRF17 (1)','','Geodesy.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','8818','EPSG','9333','EPSG','1206',0.1,0.0469,-0.2827,0.0866,'EPSG','9001',0.00559,-0.004981,0.023108,'EPSG','9104',-0.008051,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'GCS-Sau',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9362','Ain el Abd to KSA-GRF17 (1)','For a more accurate transformation see Ain el Abd to KSA-GRF17 (2) (CT code 9363)','Geodesy.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4204','EPSG','9333','EPSG','3303',2.0,13.8714,-83.9721,101.674,'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,'GCS-Sau 2m',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9381','ITRF2014 to IGb14 (1)','Scale difference in ppb where 1/billion = 1E-9 or nm/m. IGb14 is aligned with IGS14 which by definition aligned with ITRF2014.','Geodesy','EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','7789','EPSG','9378','EPSG','1262',0.0,0.0,0.0,0.0,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IGS-Wld',0);
|
||||
@@ -1314,7 +1326,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','15811','Antigua 1943 to WGS
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15812','Deception Island to WGS 84 (1)','','Scientific mapping. Accuracy +/- 20m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4736','EPSG','4326','EPSG','3204',35.0,260.0,12.0,-147.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DMA-Ata Dec',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15813','South Georgia 1968 to WGS 84 (1)','Determined from 1 satellite station.','Military and topographic mapping. Accuracy +/- 25m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4722','EPSG','4326','EPSG','3529',44.0,-794.0,119.0,-298.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DMA-Sgs Sgeorg',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15814','SIGD61 to WGS 84 (1)','Determined from 1 satellite station.','Military mapping. Accuracy +/- 25m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4726','EPSG','4326','EPSG','3186',44.0,42.0,124.0,147.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DMA-Cym Little Brac',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15815','Pico de las Nieves 1984 to WGS 84 (1)','Determined at 1 satellite station.','Military and topographic mapping. Accuracy +/- 25m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4728','EPSG','4326','EPSG','3873',44.0,-307.0,-92.0,127.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DMA-Esp Canary',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15815','PN84 to WGS 84 (1)','Determined at 1 satellite station. Note: DMA gives extent as all Canary Islands but according to IGN Spain PN84 extent is only the four western islands.','Military and topographic mapping. Accuracy +/- 25m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4728','EPSG','4326','EPSG','4598',44.0,-307.0,-92.0,127.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DMA-Esp Canary',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15816','Tristan 1968 to WGS 84 (1)','Determined at 1 satellite station.','Military and topographic mapping. Accuracy +/- 25m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4734','EPSG','4326','EPSG','3184',44.0,-632.0,438.0,-609.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DMA-Shn Tris',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15817','Midway 1961 to WGS 84 (1)','Derived at 1 satellite station. Information source states "provided for historical purposes only. These parameter [values] should not be used". Replaced by Midway 1961 to WGS 84 (2) (tfm code 15818).','Military and topographic mapping. Accuracy +/- 25m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4727','EPSG','4326','EPSG','3202',44.0,912.0,-58.0,1227.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DMA-Umi Midway 1987',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15818','Midway 1961 to WGS 84 (2)','Derived at 1 satellite station. Replaces Midway 1961 to WGS 84 (1) (tfm code 15817).','Military and topographic mapping. Accuracy +/- 25m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4727','EPSG','4326','EPSG','3202',44.0,403.0,-81.0,277.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DMA-Umi Midway 2003',0);
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v9.8.12');
|
||||
INSERT INTO "metadata" VALUES('EPSG.DATE', '2020-06-19');
|
||||
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v9.8.15');
|
||||
INSERT INTO "metadata" VALUES('EPSG.DATE', '2020-08-02');
|
||||
|
||||
@@ -219,6 +219,9 @@ INSERT INTO "other_transformation" VALUES('EPSG','8355','AIOC95 height to AIOC95
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','8356','Caspian height to Caspian depth','Change of axis positive direction from up to down.','Change of axis positive direction to facilitate transformation of heights or depths through concatenated operations.','EPSG','1068','Height Depth Reversal','EPSG','5611','EPSG','5706','EPSG','1291',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,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 "other_transformation" VALUES('EPSG','8359','Baltic 1957 height to Baltic 1957 depth','Change of axis positive direction from up to down.','Change of axis positive direction to facilitate transformation of heights or depths through concatenated operations.','EPSG','1068','Height Depth Reversal','EPSG','8357','EPSG','8358','EPSG','1306',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,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 "other_transformation" VALUES('EPSG','9371','Vienna height to GHA height (1)','Defines Wiener Null surface. GHA vertical reference surface is 156.68m below Wiener Null surface.','Change of height to a different vertical reference surface.','EPSG','9616','Vertical Offset','EPSG','8881','EPSG','5778','EPSG','4585',0.0,'EPSG','8603','Vertical Offset',156.68,'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,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'BEV-Aut Wien',0);
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','9446','ODN height to EVRF2019 mean-tide height (1)','Determined at Channel Tunnel portal.','Vertical datum change.','EPSG','9616','Vertical Offset','EPSG','5701','EPSG','9390','EPSG','2792',0.02,'EPSG','8603','Vertical Offset',-0.173,'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,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EuG-Gbr 2019m',0);
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','9447','Antalya height to EVRF2019 mean-tide height (1)','Determined at two points. No accuracy figure available. Applicable for points up to a maximum height of about 1000 m.','Vertical datum change.','EPSG','9616','Vertical Offset','EPSG','5775','EPSG','9390','EPSG','3322',0.02,'EPSG','8603','Vertical Offset',-0.446,'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,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EuG-Tur 2019m',0);
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','9448','Antalya height to EVRF2019 height (1)','Determined at two points. No accuracy figure available. Applicable for points up to a maximum height of about 1000 m.','Vertical datum change.','EPSG','9616','Vertical Offset','EPSG','5775','EPSG','9389','EPSG','3322',0.02,'EPSG','8603','Vertical Offset',-0.392,'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,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EuG-Tur 2019z',0);
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','10087','Jamaica 1875 / Jamaica (Old Grid) to JAD69 / Jamaica National Grid (1)','Derived by least squares fit at primary triangulation stations. Accuracy will be less outside of this network due to extrapolation.','Topographic mapping.','EPSG','9624','Affine parametric transformation','EPSG','24100','EPSG','24200','EPSG','3342',1.5,'EPSG','8623','A0',82357.457,'EPSG','9001','EPSG','8624','A1',0.304794369,'EPSG','9203','EPSG','8625','A2',1.5417425e-05,'EPSG','9203','EPSG','8639','B0',28091.324,'EPSG','9001','EPSG','8640','B1',-1.5417425e-05,'EPSG','9203','EPSG','8641','B2',0.304794369,'EPSG','9203',NULL,NULL,NULL,NULL,NULL,NULL,'SD-Jam',0);
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','10088','JAD69 / Jamaica National Grid to Jamaica 1875 / Jamaica (Old Grid) (1)','Derived by least squares fit at primary triangulation stations. Accuracy will be less outside of this network due to extrapolation.','Topographic mapping.','EPSG','9624','Affine parametric transformation','EPSG','24200','EPSG','24100','EPSG','3342',1.5,'EPSG','8623','A0',-270201.96,'EPSG','9005','EPSG','8624','A1',0.00016595792,'EPSG','9203','EPSG','8625','A2',3.2809005,'EPSG','9203','EPSG','8639','B0',-92178.51,'EPSG','9005','EPSG','8640','B1',3.2809005,'EPSG','9203','EPSG','8641','B2',-0.00016595792,'EPSG','9203',NULL,NULL,NULL,NULL,NULL,NULL,'SD-Jam',1);
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','10095','Mauritania 1999 / UTM zone 28N to WGS 84 / UTM zone 28N (1)','Parameter values consistent with the OGP Affine parametric transformation method derived by OGP from the published Helmert 2D parameter values.','Minerals management.','EPSG','9624','Affine parametric transformation','EPSG','3103','EPSG','32628','EPSG','2971',40.0,'EPSG','8623','A0',NULL,'EPSG',NULL,'EPSG','8624','A1',NULL,'EPSG',NULL,'EPSG','8625','A2',NULL,'EPSG',NULL,'EPSG','8639','B0',NULL,'EPSG',NULL,'EPSG','8640','B1',NULL,'EPSG',NULL,'EPSG','8641','B2',NULL,'EPSG',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'MMI-Mau W',1);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -62,7 +62,7 @@ INSERT INTO "projected_crs" VALUES('EPSG','2058','ED50(ED77) / UTM zone 38N',NUL
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','2059','ED50(ED77) / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4154','EPSG','16039','EPSG','1465',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','2060','ED50(ED77) / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','4154','EPSG','16040','EPSG','1466',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','2061','ED50(ED77) / UTM zone 41N',NULL,NULL,'EPSG','4400','EPSG','4154','EPSG','16041','EPSG','1467',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','2062','Madrid 1870 (Madrid) / Spain',NULL,NULL,'EPSG','4499','EPSG','4903','EPSG','19921','EPSG','2366',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','2062','Madrid 1870 (Madrid) / Spain LCC',NULL,NULL,'EPSG','4499','EPSG','4903','EPSG','19921','EPSG','2366',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','2063','Dabola 1981 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4315','EPSG','16028','EPSG','1468',NULL,1);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','2064','Dabola 1981 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4315','EPSG','16029','EPSG','1469',NULL,1);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','2065','S-JTSK (Ferro) / Krovak',NULL,NULL,'EPSG','6501','EPSG','4818','EPSG','19952','EPSG','1306',NULL,0);
|
||||
@@ -3293,7 +3293,7 @@ INSERT INTO "projected_crs" VALUES('EPSG','7799','BGS2005 / UTM zone 34N (N-E)',
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','7800','BGS2005 / UTM zone 35N (N-E)',NULL,NULL,'EPSG','4531','EPSG','7798','EPSG','16035','EPSG','4427',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','7801','BGS2005 / CCS2005',NULL,NULL,'EPSG','4531','EPSG','7798','EPSG','7802','EPSG','3224',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','7803','BGS2005 / UTM zone 34N',NULL,NULL,'EPSG','4400','EPSG','7798','EPSG','16034','EPSG','4428',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','7804','BGS2005 / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','7798','EPSG','16034','EPSG','4427',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','7804','BGS2005 / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','7798','EPSG','16034','EPSG','4427',NULL,1);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','7805','BGS2005 / UTM zone 36N',NULL,NULL,'EPSG','4400','EPSG','7798','EPSG','16036','EPSG','4426',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','7825','Pulkovo 1942 / CS63 zone X1',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','7818','EPSG','4435',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','7826','Pulkovo 1942 / CS63 zone X2',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','7819','EPSG','4429',NULL,0);
|
||||
@@ -3614,6 +3614,7 @@ INSERT INTO "projected_crs" VALUES('EPSG','9285','Pampa del Castillo / Argentina
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9295','ONGD17 / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','9294','EPSG','16039','EPSG','4322',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9296','ONGD17 / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','9294','EPSG','16040','EPSG','4323',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9297','ONGD17 / UTM zone 41N',NULL,NULL,'EPSG','4400','EPSG','9294','EPSG','16041','EPSG','4324',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9300','HS2 Survey Grid',NULL,NULL,'EPSG','4400','EPSG','9299','EPSG','9301','EPSG','4582',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9311','NAD27 / US National Atlas Equal Area',NULL,NULL,'EPSG','4499','EPSG','4267','EPSG','3899','EPSG','1245',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9354','WGS 84 / IBCSO Polar Stereographic',NULL,NULL,'EPSG','4470','EPSG','4326','EPSG','9353','EPSG','4586',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9356','KSA-GRF17 / UTM zone 36N',NULL,NULL,'EPSG','4400','EPSG','9333','EPSG','16036','EPSG','4524',NULL,0);
|
||||
@@ -3623,7 +3624,13 @@ INSERT INTO "projected_crs" VALUES('EPSG','9359','KSA-GRF17 / UTM zone 39N',NULL
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9360','KSA-GRF17 / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','9333','EPSG','16040','EPSG','3106',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9367','TPEN11 Grid',NULL,NULL,'EPSG','4400','EPSG','9364','EPSG','9366','EPSG','4583',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9373','MML07 Grid',NULL,NULL,'EPSG','4400','EPSG','9372','EPSG','9370','EPSG','4588',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9377','MAGNA-SIRGAS / CTM12',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','9376','EPSG','1070',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9377','MAGNA-SIRGAS / Origen-Nacional',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','9376','EPSG','1070',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9387','AbInvA96_2020 Grid',NULL,NULL,'EPSG','4400','EPSG','9384','EPSG','9385','EPSG','4589',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9391','BGS2005 / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','7798','EPSG','16035','EPSG','4427',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9404','PN68 / UTM zone 27N',NULL,NULL,'EPSG','4400','EPSG','9403','EPSG','16027','EPSG','4599',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9405','PN68 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','9403','EPSG','16028','EPSG','4600',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9406','PN84 / UTM zone 27N',NULL,NULL,'EPSG','4400','EPSG','4728','EPSG','16027','EPSG','4599',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9407','PN84 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4728','EPSG','16028','EPSG','4601',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','20004','Pulkovo 1995 / Gauss-Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16204','EPSG','1763',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','20005','Pulkovo 1995 / Gauss-Kruger zone 5',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16205','EPSG','1764',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','20006','Pulkovo 1995 / Gauss-Kruger zone 6',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16206','EPSG','1765',NULL,0);
|
||||
@@ -4433,7 +4440,7 @@ INSERT INTO "projected_crs" VALUES('EPSG','29739','Tananarive / UTM zone 39S',NU
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','29849','Timbalai 1948 / UTM zone 49N',NULL,NULL,'EPSG','4400','EPSG','4298','EPSG','16049','EPSG','1852',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','29850','Timbalai 1948 / UTM zone 50N',NULL,NULL,'EPSG','4400','EPSG','4298','EPSG','16050','EPSG','1853',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','29871','Timbalai 1948 / RSO Borneo (ch)',NULL,NULL,'EPSG','4402','EPSG','4298','EPSG','19956','EPSG','1362',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','29872','Timbalai 1948 / RSO Borneo (ftSe)',NULL,NULL,'EPSG','4405','EPSG','4298','EPSG','19957','EPSG','1851',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','29872','Timbalai 1948 / RSO Borneo (ftSe)',NULL,NULL,'EPSG','4405','EPSG','4298','EPSG','19957','EPSG','3977',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','29873','Timbalai 1948 / RSO Borneo (m)',NULL,NULL,'EPSG','4400','EPSG','4298','EPSG','19958','EPSG','1362',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','29900','TM65 / Irish National Grid',NULL,NULL,'EPSG','4400','EPSG','4299','EPSG','19908','EPSG','1305',NULL,1);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','29901','OSNI 1952 / Irish National Grid',NULL,NULL,'EPSG','4400','EPSG','4188','EPSG','19973','EPSG','2530',NULL,0);
|
||||
|
||||
@@ -242,3 +242,5 @@ INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9176','grid_tran
|
||||
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);
|
||||
|
||||
@@ -221,5 +221,19 @@ INSERT INTO "vertical_crs" VALUES('EPSG','9245','CGVD2013(CGG2013a) height',NULL
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9255','SRVN16 height',NULL,NULL,'EPSG','6499','EPSG','1260','EPSG','4573',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9274','EVRF2000 Austria height',NULL,NULL,'EPSG','6499','EPSG','1261','EPSG','1037',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9279','SA LLD height',NULL,NULL,'EPSG','6499','EPSG','1262','EPSG','3309',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9303','HS2-VRF height',NULL,NULL,'EPSG','6499','EPSG','1265','EPSG','4582',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9335','KSA-VRF14 height',NULL,NULL,'EPSG','6499','EPSG','1269','EPSG','3303',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9351','NGNC08 height',NULL,NULL,'EPSG','6499','EPSG','1255','EPSG','3430',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9389','EVRF2019 height',NULL,NULL,'EPSG','6499','EPSG','1274','EPSG','4608',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9390','EVRF2019 mean-tide height',NULL,NULL,'EPSG','6499','EPSG','1287','EPSG','4608',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9392','Mallorca height',NULL,NULL,'EPSG','6499','EPSG','1275','EPSG','4602',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9393','Menorca height',NULL,NULL,'EPSG','6499','EPSG','1276','EPSG','4603',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9394','Ibiza height',NULL,NULL,'EPSG','6499','EPSG','1277','EPSG','4604',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9395','Lanzarote height',NULL,NULL,'EPSG','6499','EPSG','1278','EPSG','4591',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9396','Fuerteventura height',NULL,NULL,'EPSG','6499','EPSG','1279','EPSG','4592',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9397','Gran Canaria height',NULL,NULL,'EPSG','6499','EPSG','1280','EPSG','4593',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9398','Tenerife height',NULL,NULL,'EPSG','6499','EPSG','1281','EPSG','4594',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9399','La Gomera height',NULL,NULL,'EPSG','6499','EPSG','1282','EPSG','4595',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9400','La Palma height',NULL,NULL,'EPSG','6499','EPSG','1283','EPSG','4596',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9401','El Hierro height',NULL,NULL,'EPSG','6499','EPSG','1284','EPSG','4597',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9402','Ceuta 2 height',NULL,NULL,'EPSG','6499','EPSG','1285','EPSG','4590',0);
|
||||
|
||||
@@ -84,8 +84,22 @@ INSERT INTO "vertical_datum" VALUES('EPSG','1256','Canadian Geodetic Vertical Da
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1260','Sistema de Referencia Vertical Nacional 2016',NULL,NULL,'EPSG','4573','2013-01-01',0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1261','European Vertical Reference Frame 2000 Austria',NULL,NULL,'EPSG','1037',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1262','South Africa Land Levelling Datum',NULL,NULL,'EPSG','3309','2010-05-11',0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1265','HS2 Vertical Reference Frame',NULL,NULL,'EPSG','4582',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1267','Wiener Null',NULL,NULL,'EPSG','4585',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1269','Kingdom of Saudi Arabia Vertical Reference Frame Jeddah 2014',NULL,NULL,'EPSG','3303','2014-10-01',0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1274','European Vertical Reference Frame 2019',NULL,NULL,'EPSG','4608','2000-01-01',0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1275','Mallorca',NULL,NULL,'EPSG','4602',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1276','Menorca',NULL,NULL,'EPSG','4603',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1277','Ibiza',NULL,NULL,'EPSG','4604',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1278','Lanzarote',NULL,NULL,'EPSG','4591',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1279','Fuerteventura',NULL,NULL,'EPSG','4592',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1280','Gran Canaria',NULL,NULL,'EPSG','4593',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1281','Tenerife',NULL,NULL,'EPSG','4594',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1282','La Gomera',NULL,NULL,'EPSG','4595',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1283','La Palma',NULL,NULL,'EPSG','4596',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1284','El Hierro',NULL,NULL,'EPSG','4597',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1285','Ceuta 2',NULL,NULL,'EPSG','4590',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1287','European Vertical Reference Frame 2019 mean tide',NULL,NULL,'EPSG','4608','2000-01-01',0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','5100','Mean Sea Level',NULL,NULL,'EPSG','1262',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','5101','Ordnance Datum Newlyn',NULL,NULL,'EPSG','2792',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','5102','National Geodetic Vertical Datum 1929',NULL,NULL,'EPSG','1323','1929-01-01',0);
|
||||
@@ -192,7 +206,7 @@ INSERT INTO "vertical_datum" VALUES('EPSG','5203','EGM84 geoid',NULL,NULL,'EPSG'
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','5204','International Great Lakes Datum 1955',NULL,NULL,'EPSG','3468','1955-01-01',0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','5205','International Great Lakes Datum 1985',NULL,NULL,'EPSG','3468','1985-01-01',0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','5206','Dansk Vertikal Reference 1990',NULL,NULL,'EPSG','3237',NULL,0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','5207','Croatian Vertical Reference System 1971',NULL,NULL,'EPSG','3234','1971-01-01',0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','5207','Croatian Vertical Reference Datum 1971',NULL,NULL,'EPSG','3234','1971-01-01',0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','5208','Rikets hojdsystem 2000',NULL,NULL,'EPSG','3313','2000-01-01',0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','5209','Rikets hojdsystem 1900',NULL,NULL,'EPSG','3313','1900-01-01',0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','5210','IGN 1988 LS',NULL,NULL,'EPSG','2895','1988-01-01',0);
|
||||
|
||||
@@ -62,9 +62,6 @@ html: .doxygen_up_to_date
|
||||
# Undoes the hack done in scripts/doxygen.sh
|
||||
@sed "s/io::Convention_/io::Convention/g" < $(BUILDDIR)/html/development/reference/cpp/io.html | sed "s/>Convention_/>Convention/g" | sed "s/_WKT2/WKT2/g" | sed "s/_WKT1/WKT1/g" > $(BUILDDIR)/html/development/reference/cpp/io.html.tmp
|
||||
@mv $(BUILDDIR)/html/development/reference/cpp/io.html.tmp $(BUILDDIR)/html/development/reference/cpp/io.html
|
||||
# Undoes the hacks of scripts/generate_breathe_friendly_general_doc.py
|
||||
@sed "s/<em class=\"property\">namespace <\/em>//g" < $(BUILDDIR)/html/development/reference/cpp/cpp_general.html > $(BUILDDIR)/html/development/reference/cpp/cpp_general.html.tmp
|
||||
@mv $(BUILDDIR)/html/development/reference/cpp/cpp_general.html.tmp $(BUILDDIR)/html/development/reference/cpp/cpp_general.html
|
||||
@cp -r ../schemas $(BUILDDIR)/html/schemas
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
name: proj
|
||||
channels:
|
||||
- conda-forge
|
||||
dependencies:
|
||||
- descartes
|
||||
- doxygen < 1.9
|
||||
- geojson
|
||||
- matplotlib
|
||||
- shapely < 1.8
|
||||
- pip
|
||||
- pip:
|
||||
- breathe
|
||||
- pybtex
|
||||
- sphinx-rtd-theme
|
||||
- sphinxcontrib-bibtex
|
||||
@@ -1,86 +0,0 @@
|
||||
name: proj
|
||||
channels:
|
||||
- defaults
|
||||
dependencies:
|
||||
- blas=1.0=mkl
|
||||
- bzip2=1.0.6=h1de35cc_5
|
||||
- ca-certificates=2018.03.07=0
|
||||
- cairo=1.14.12=hc4e6be7_4
|
||||
- certifi=2018.8.24=py37_1
|
||||
- click=6.7=py37_0
|
||||
- click-plugins=1.0.3=py37_1
|
||||
- cligj=0.4.0=py37_1
|
||||
- curl=7.61.0=ha441bb4_0
|
||||
- cycler=0.10.0=py37_0
|
||||
- descartes=1.1.0=py37_0
|
||||
- expat=2.2.6=h0a44026_0
|
||||
- fiona=1.7.12=py37h0dff353_0
|
||||
- fontconfig=2.13.0=h5d5b041_1
|
||||
- freetype=2.9.1=hb4e5f40_0
|
||||
- freexl=1.0.5=h1de35cc_0
|
||||
- gdal=2.2.4=py37h6440ff4_1
|
||||
- geos=3.6.2=h5470d99_2
|
||||
- gettext=0.19.8.1=h15daf44_3
|
||||
- giflib=5.1.4=h1de35cc_1
|
||||
- glib=2.56.2=hd9629dc_0
|
||||
- hdf4=4.2.13=h39711bb_2
|
||||
- hdf5=1.10.2=hfa1e0ec_1
|
||||
- icu=58.2=h4b95b61_1
|
||||
- intel-openmp=2019.0=118
|
||||
- jpeg=9b=he5867d9_2
|
||||
- json-c=0.13.1=h3efe00b_0
|
||||
- kealib=1.4.7=h40e48e4_6
|
||||
- kiwisolver=1.0.1=py37h0a44026_0
|
||||
- krb5=1.16.1=h24a3359_6
|
||||
- libboost=1.67.0=hebc422b_4
|
||||
- libcurl=7.61.0=hf30b1f0_0
|
||||
- libcxx=4.0.1=h579ed51_0
|
||||
- libcxxabi=4.0.1=hebd6815_0
|
||||
- libdap4=3.19.1=h3d3e54a_0
|
||||
- libedit=3.1.20170329=hb402a30_2
|
||||
- libffi=3.2.1=h475c297_4
|
||||
- libgdal=2.2.4=h7b1ea53_1
|
||||
- libgfortran=3.0.1=h93005f0_2
|
||||
- libiconv=1.15=hdd342a3_7
|
||||
- libkml=1.3.0=hbe12b63_4
|
||||
- libnetcdf=4.6.1=h4e6abe9_1
|
||||
- libpng=1.6.34=he12f830_0
|
||||
- libpq=10.5=hf30b1f0_0
|
||||
- libspatialite=4.3.0a=ha12ebda_19
|
||||
- libssh2=1.8.0=h322a93b_4
|
||||
- libtiff=4.0.9=hcb84e12_2
|
||||
- libuuid=1.0.3=h6bb4b03_2
|
||||
- libxml2=2.9.8=hab757c2_1
|
||||
- matplotlib=2.2.3=py37h54f8f79_0
|
||||
- mkl=2019.0=118
|
||||
- mkl_fft=1.0.4=py37h5d10147_1
|
||||
- mkl_random=1.0.1=py37h5d10147_1
|
||||
- munch=2.3.2=py37_0
|
||||
- ncurses=6.1=h0a44026_0
|
||||
- numpy=1.15.1=py37h6a91979_0
|
||||
- numpy-base=1.15.1=py37h8a80b8c_0
|
||||
- openjpeg=2.3.0=hb95cd4c_1
|
||||
- openssl=1.0.2p=h1de35cc_0
|
||||
- pcre=8.42=h378b8a2_0
|
||||
- pip=10.0.1=py37_0
|
||||
- pixman=0.34.0=hca0a616_3
|
||||
- poppler=0.65.0=ha097c24_1
|
||||
- poppler-data=0.4.9=0
|
||||
- proj4=5.0.1=h1de35cc_0
|
||||
- pyparsing=2.2.0=py37_1
|
||||
- python=3.7.0=hc167b69_0
|
||||
- python-dateutil=2.7.3=py37_0
|
||||
- pytz=2018.5=py37_0
|
||||
- readline=7.0=h1de35cc_5
|
||||
- setuptools=40.2.0=py37_0
|
||||
- shapely=1.6.4=py37h20de77a_0
|
||||
- six=1.11.0=py37_1
|
||||
- sqlite=3.24.0=ha441bb4_0
|
||||
- tk=8.6.8=ha441bb4_0
|
||||
- tornado=5.1=py37h1de35cc_0
|
||||
- wheel=0.31.1=py37_0
|
||||
- xerces-c=3.2.1=h44e365a_0
|
||||
- xz=5.2.4=h1de35cc_4
|
||||
- zlib=1.2.11=hf3cbc9b_2
|
||||
prefix: /usr/local/miniconda3/envs/proj
|
||||
|
||||
Regular → Executable
+108
-60
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
'''
|
||||
Plot map data in different projections supported by PROJ.4
|
||||
Plot map data in different projections supported by PROJ.
|
||||
|
||||
Call with:
|
||||
|
||||
@@ -41,28 +42,31 @@ or "line". The rest of the inputs are fairly free form.
|
||||
Change PROJ to path on your local system before running the script.
|
||||
'''
|
||||
|
||||
from __future__ import print_function
|
||||
from __future__ import division
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import os.path
|
||||
import shutil
|
||||
import sys
|
||||
import json
|
||||
import subprocess
|
||||
import functools
|
||||
from pathlib import Path
|
||||
|
||||
import geojson
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib.patches import Polygon
|
||||
import fiona
|
||||
from shapely.geometry import Polygon
|
||||
from shapely.geometry import MultiPolygon
|
||||
from shapely.geometry import MultiPolygon, Polygon, box as Box
|
||||
from shapely.geometry import shape
|
||||
from shapely.ops import transform
|
||||
from descartes import PolygonPatch
|
||||
|
||||
PROJ = os.environ.get('PROJ_EXE', '../../src/proj')
|
||||
PROJ_LIB = '../../data'
|
||||
PROJ_COMMAND = os.environ.get('PROJ_EXE', '../../src/proj')
|
||||
if not os.path.exists(PROJ_COMMAND):
|
||||
PROJ = shutil.which('proj')
|
||||
if PROJ is None:
|
||||
raise ValueError("specify PROJ_EXE or modify PATH to find proj")
|
||||
else:
|
||||
PROJ = PROJ_COMMAND
|
||||
PROJ_LIB = os.environ.get('PROJ_LIB', '../../data')
|
||||
|
||||
LINE_LOW = 'data/coastline.geojson'
|
||||
LINE_MED = 'data/coastline50.geojson'
|
||||
@@ -160,9 +164,9 @@ def project(coordinates, proj_string, in_radians=False):
|
||||
try:
|
||||
proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
env={'PROJ_LIB': os.path.abspath(PROJ_LIB)})
|
||||
except FileNotFoundError:
|
||||
except FileNotFoundError as e:
|
||||
print("'proj' binary not found, set the PROJ_EXE environment variable "
|
||||
"to point to your local 'proj' binary")
|
||||
"to point to your local 'proj' binary --%s--" % e)
|
||||
exit(1)
|
||||
|
||||
stdout, _ = proc.communicate(coordinates.tobytes(order='C'))
|
||||
@@ -223,7 +227,10 @@ def resample_polygon(polygon):
|
||||
'''
|
||||
Use interp_coords() to resample (multi)polygons.
|
||||
'''
|
||||
xy = polygon.exterior.coords.xy
|
||||
try:
|
||||
xy = polygon.exterior.coords.xy
|
||||
except AttributeError: #no xy's
|
||||
return polygon
|
||||
ext = interp_coords(xy, 2)
|
||||
# interiors
|
||||
rings = []
|
||||
@@ -232,31 +239,46 @@ def resample_polygon(polygon):
|
||||
return Polygon(ext, rings)
|
||||
|
||||
|
||||
def plot_with_interruptions(axes, x, y, delta_cut=1e100, **kwargs):
|
||||
"""
|
||||
Plot x/y with proper splitting for interrupted projections.
|
||||
"""
|
||||
_x = np.atleast_1d(x)
|
||||
_y = np.atleast_1d(y)
|
||||
|
||||
dx = np.nan_to_num(_x[1: ]) - np.nan_to_num(_x[0: -1])
|
||||
dy = np.nan_to_num(_y[1: ]) - np.nan_to_num(_y[0: -1])
|
||||
split, = ((np.abs(dx) > delta_cut) | (np.abs(dy) > delta_cut)).nonzero()
|
||||
split = np.append(split, _x.size - 1)
|
||||
split += 1
|
||||
|
||||
last_part = 0
|
||||
for part in split:
|
||||
axes.plot(x[last_part: part],
|
||||
y[last_part: part],
|
||||
**kwargs)
|
||||
last_part = part
|
||||
|
||||
|
||||
def plotproj(plotdef, data, outdir):
|
||||
'''
|
||||
Plot map.
|
||||
'''
|
||||
axes = plt.axes()
|
||||
|
||||
bounds = (plotdef['lonmin'], plotdef['latmin'], plotdef['lonmax'], plotdef['latmax'])
|
||||
for geom in data.filter(bbox=bounds):
|
||||
temp_pol = shape(geom['geometry'])
|
||||
|
||||
box = Polygon([
|
||||
(plotdef['lonmin'], plotdef['latmin']),
|
||||
(plotdef['lonmin'], plotdef['latmax']),
|
||||
(plotdef['lonmax'], plotdef['latmax']),
|
||||
(plotdef['lonmax'], plotdef['latmin']),
|
||||
])
|
||||
try:
|
||||
temp_pol = temp_pol.intersection(box)
|
||||
except Exception as e:
|
||||
box = Box(
|
||||
plotdef['lonmin'], plotdef['latmin'],
|
||||
plotdef['lonmax'], plotdef['latmax'])
|
||||
for feat in data["features"]:
|
||||
geom = shape(feat["geometry"])
|
||||
if not geom.intersects(box):
|
||||
continue
|
||||
|
||||
temp_pol = geom.intersection(box)
|
||||
|
||||
if plotdef['type'] == 'poly':
|
||||
if isinstance(temp_pol, MultiPolygon):
|
||||
polys = [resample_polygon(polygon) for polygon in temp_pol]
|
||||
polys = [resample_polygon(polygon) for polygon in temp_pol.geoms]
|
||||
pol = MultiPolygon(polys)
|
||||
else:
|
||||
pol = resample_polygon(temp_pol)
|
||||
@@ -267,11 +289,15 @@ def plotproj(plotdef, data, outdir):
|
||||
proj_geom = transform(trans, pol)
|
||||
|
||||
if plotdef['type'] == 'poly':
|
||||
patch = PolygonPatch(proj_geom, fc=COLOR_LAND, zorder=0)
|
||||
axes.add_patch(patch)
|
||||
try:
|
||||
patch = PolygonPatch(proj_geom, fc=COLOR_LAND, zorder=0)
|
||||
axes.add_patch(patch)
|
||||
except TypeError:
|
||||
pass
|
||||
else:
|
||||
x, y = proj_geom.xy
|
||||
axes.plot(x, y, color=COLOR_COAST, linewidth=0.5)
|
||||
plot_with_interruptions(axes, x, y, color=COLOR_COAST, linewidth=0.5,
|
||||
delta_cut=plotdef.get('delta_cut', 1e100))
|
||||
|
||||
# Plot frame
|
||||
frame = [
|
||||
@@ -282,7 +308,8 @@ def plotproj(plotdef, data, outdir):
|
||||
line = project(line, plotdef['projstring'])
|
||||
x = line[:, 0]
|
||||
y = line[:, 1]
|
||||
axes.plot(x, y, '-k')
|
||||
plot_with_interruptions(axes, x, y, color='black', linestyle='-',
|
||||
delta_cut=plotdef.get('delta_cut', 1e6))
|
||||
|
||||
graticule = build_graticule(
|
||||
plotdef['lonmin'],
|
||||
@@ -296,7 +323,28 @@ def plotproj(plotdef, data, outdir):
|
||||
feature = project(feature, plotdef['projstring'])
|
||||
x = feature[:, 0]
|
||||
y = feature[:, 1]
|
||||
axes.plot(x, y, color=COLOR_GRAT, linewidth=0.4)
|
||||
plot_with_interruptions(axes, x, y, color=COLOR_GRAT, linewidth=0.4,
|
||||
delta_cut=plotdef.get('delta_cut', 1e6))
|
||||
|
||||
# Plot interrupted boundaries if necessary
|
||||
interrupted_lines = []
|
||||
if 'top_interrupted_lons' in plotdef:
|
||||
for lon in plotdef['top_interrupted_lons']:
|
||||
for delta in [-0.0001, 0.0001]:
|
||||
merid = meridian(lon + delta, 0.0, plotdef['latmax'])
|
||||
interrupted_lines.append(project(merid, plotdef['projstring']))
|
||||
|
||||
if 'bottom_interrupted_lons' in plotdef:
|
||||
for lon in plotdef['bottom_interrupted_lons']:
|
||||
for delta in [-0.0001, 0.0001]:
|
||||
merid = meridian(lon + delta, plotdef['latmin'], 0)
|
||||
interrupted_lines.append(project(merid, plotdef['projstring']))
|
||||
|
||||
for line in interrupted_lines:
|
||||
x = line[:, 0]
|
||||
y = line[:, 1]
|
||||
plot_with_interruptions(axes, x, y, color=COLOR_GRAT, linewidth=0.4,
|
||||
delta_cut=plotdef.get('delta_cut', 1e100))
|
||||
|
||||
# Switch off the axis lines...
|
||||
plt.axis('off')
|
||||
@@ -315,9 +363,12 @@ def plotproj(plotdef, data, outdir):
|
||||
# Make sure the plot is not stretched
|
||||
axes.set_aspect('equal')
|
||||
|
||||
if not os.path.exists(outdir):
|
||||
os.makedirs(outdir)
|
||||
plt.savefig(outdir + '/' + plotdef['filename'],
|
||||
outdir = Path(outdir)
|
||||
if not outdir.exists():
|
||||
outdir.mkdir(parents=True)
|
||||
if not outdir.is_dir():
|
||||
raise OSError("outdir is not a directory")
|
||||
plt.savefig(outdir / plotdef['filename'],
|
||||
dpi=400,
|
||||
bbox_inches='tight')
|
||||
|
||||
@@ -327,36 +378,22 @@ def plotproj(plotdef, data, outdir):
|
||||
plt.close()
|
||||
|
||||
|
||||
def main():
|
||||
def main(plotdefs, outdir, plots=[]):
|
||||
'''
|
||||
Main function of plotting script.
|
||||
|
||||
Parses json-file with plot setups and runs the plotting
|
||||
for each plot setup.
|
||||
'''
|
||||
plotdefs = json.loads(Path(plotdefs).read_text())
|
||||
|
||||
data = {
|
||||
('line', 'low'): fiona.open(LINE_LOW),
|
||||
('line', 'med'): fiona.open(LINE_MED),
|
||||
('poly', 'low'): fiona.open(POLY_LOW),
|
||||
('poly', 'med'): fiona.open(POLY_MED),
|
||||
('line', 'low'): geojson.loads(Path(LINE_LOW).read_text()),
|
||||
('line', 'med'): geojson.loads(Path(LINE_MED).read_text()),
|
||||
('poly', 'low'): geojson.loads(Path(POLY_LOW).read_text()),
|
||||
('poly', 'med'): geojson.loads(Path(POLY_MED).read_text()),
|
||||
}
|
||||
|
||||
if os.path.exists(sys.argv[1]):
|
||||
# first argument is the JSON plot definition setup file
|
||||
with open(sys.argv[1]) as plotsetup:
|
||||
plotdefs = json.load(plotsetup)
|
||||
else:
|
||||
raise ValueError('No plot definition file entered')
|
||||
|
||||
plots = []
|
||||
# second argument is the output dir
|
||||
outdir = sys.argv[2]
|
||||
|
||||
# subsecond arguments are (optional) names of plot in plotdef.json
|
||||
if len(sys.argv) > 3:
|
||||
plots = sys.argv[3:len(sys.argv)]
|
||||
|
||||
for i, plotdef in enumerate(plotdefs):
|
||||
if plots != [] and plotdef['name'] not in plots:
|
||||
continue
|
||||
@@ -368,9 +405,20 @@ def main():
|
||||
|
||||
plotproj(plotdef, data[(plotdef['type'], plotdef['res'])], outdir)
|
||||
|
||||
for key in data:
|
||||
data[key].close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
parser = argparse.ArgumentParser(
|
||||
description=__doc__,
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
parser.add_argument(
|
||||
'plotdefs',
|
||||
help='A JSON file with setup for each auto-generated plot')
|
||||
parser.add_argument(
|
||||
'outdir',
|
||||
help='Directory to put the plots in.')
|
||||
parser.add_argument(
|
||||
'plots', nargs='*',
|
||||
help='A list of plot names within the plotdefs file. '
|
||||
'More than one plotname can be given at once.')
|
||||
args = parser.parse_args()
|
||||
sys.exit(main(**vars(args)))
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
|
||||
python3 plot.py plotdefs.json images/
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
export PROJ_LIB="$HOME/.local/share/proj"
|
||||
|
||||
cd docs/plot
|
||||
python plot.py plotdefs.json images
|
||||
cd ../..
|
||||
|
||||
mkdir -p docs/source/operations/projections/images/
|
||||
cp -r docs/plot/images/* docs/source/operations/projections/images/
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# https://github.com/readthedocs/readthedocs.org/pull/9888
|
||||
READTHEDOCS_OUTPUT="_readthedocs"
|
||||
find ${READTHEDOCS_OUTPUT} -type d
|
||||
READTHEDOCS_OUTPUT_HTML="${READTHEDOCS_OUTPUT}/html"
|
||||
|
||||
# Undoes the hack done in scripts/doxygen.sh
|
||||
sed "s/io::Convention_/io::Convention/g" < ${READTHEDOCS_OUTPUT_HTML}/development/reference/cpp/io.html | sed "s/>Convention_/>Convention/g" | sed "s/_WKT2/WKT2/g" | sed "s/_WKT1/WKT1/g" > ${READTHEDOCS_OUTPUT_HTML}/development/reference/cpp/io.html.tmp
|
||||
mv ${READTHEDOCS_OUTPUT_HTML}/development/reference/cpp/io.html.tmp ${READTHEDOCS_OUTPUT_HTML}/development/reference/cpp/io.html
|
||||
|
||||
# Copy JSON schemas for public consumption
|
||||
READTHEDOCS_OUTPUT_SCHEMAS="${READTHEDOCS_OUTPUT_HTML}/schemas"
|
||||
cp -r schemas ${READTHEDOCS_OUTPUT_SCHEMAS}
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DCMAKE_INSTALL_PREFIX=$HOME/.local ..
|
||||
|
||||
ninja install
|
||||
@@ -34,7 +34,7 @@ The following control parameters can appear in any order:
|
||||
|
||||
.. option:: -d <n>
|
||||
|
||||
.. versionadded:: 5.2.0
|
||||
.. versionadded:: 5.2.0
|
||||
|
||||
Specify the number of decimals in the output.
|
||||
|
||||
|
||||
@@ -17,9 +17,26 @@ or
|
||||
|
||||
**cs2cs** [**-eEfIlrstvwW** [args]] {source_crs} {target_crs} file ...
|
||||
|
||||
where {source_crs} or {target_crs} is a PROJ string, a WKT string or a AUTHORITY:CODE
|
||||
(where AUTHORITY is the name of a CRS authority and CODE the code of a CRS
|
||||
found in the proj.db database), expressing a coordinate reference system.
|
||||
where {source_crs} or {target_crs} is one of the possibilities accepted
|
||||
by :c:func:`proj_create`, provided it expresses a CRS
|
||||
|
||||
- a proj-string,
|
||||
- a WKT string,
|
||||
- an object code (like "EPSG:4326", "urn:ogc:def:crs:EPSG::4326",
|
||||
"urn:ogc:def:coordinateOperation:EPSG::1671"),
|
||||
- an Object name. e.g "WGS 84", "WGS 84 / UTM zone 31N". In that case as
|
||||
uniqueness is not guaranteed, heuristics are applied to determine the appropriate best match.
|
||||
- a OGC URN combining references for compound coordinate reference systems
|
||||
(e.g "urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717" or custom abbreviated
|
||||
syntax "EPSG:2393+5717"),
|
||||
- a OGC URN combining references for references for projected or derived CRSs
|
||||
e.g. for Projected 3D CRS "UTM zone 31N / WGS 84 (3D)":
|
||||
"urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031"
|
||||
(*added in 6.2*)
|
||||
- a OGC URN combining references for concatenated operations
|
||||
(e.g. "urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618")
|
||||
- a PROJJSON string. The jsonschema is at https://proj.org/schemas/v0.2/projjson.schema.json (*added in 6.2*)
|
||||
- a compound CRS made from two object names separated with " + ". e.g. "WGS 84 + EGM96 height" (*added in 7.1*)
|
||||
|
||||
.. versionadded:: 6.0.0
|
||||
|
||||
@@ -51,7 +68,7 @@ The following control parameters can appear in any order:
|
||||
|
||||
.. option:: -d <n>
|
||||
|
||||
.. versionadded:: 5.2.0
|
||||
.. versionadded:: 5.2.0
|
||||
|
||||
Specify the number of decimals in the output.
|
||||
|
||||
@@ -210,8 +227,8 @@ The x-y output data will appear as three lines of:
|
||||
1402293.44 5076292.68 0.00
|
||||
|
||||
|
||||
Using EPSG codes
|
||||
----------------
|
||||
Using EPSG CRS codes
|
||||
--------------------
|
||||
|
||||
Transforming from WGS 84 latitude/longitude (in that order) to UTM Zone 31N/WGS 84
|
||||
|
||||
@@ -227,6 +244,23 @@ outputs
|
||||
|
||||
421184.70 4983436.77 0.00
|
||||
|
||||
Using EPSG CRS names
|
||||
--------------------
|
||||
|
||||
Transforming from WGS 84 latitude/longitude (in that order) with EGM96 height to
|
||||
UTM Zone 31N/WGS 84 with WGS84 ellipsoidal height
|
||||
|
||||
::
|
||||
|
||||
echo 45 2 0 | cs2cs "WGS 84 + EGM96 height" "WGS 84 / UTM zone 31N"
|
||||
|
||||
outputs
|
||||
|
||||
::
|
||||
|
||||
421184.70 4983436.77 50.69
|
||||
|
||||
|
||||
.. only:: man
|
||||
|
||||
See also
|
||||
|
||||
@@ -13,7 +13,8 @@ geodesic (great circle) computations. :program:`gie` is the program used for
|
||||
regression tests in PROJ. :program:`cct`, a 4D equivalent to the :program:`proj`
|
||||
program, performs transformation coordinate systems on a set of input points.
|
||||
:program:`projinfo` performs queries for geodetic objects and coordinate
|
||||
operations.
|
||||
operations. :program:`projsync` is a tool for synchronizing PROJ datum and
|
||||
transformation support data.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
@@ -31,7 +31,8 @@ Synopsis
|
||||
| {object_reference} | (-s {srs_def} -t {srs_def})
|
||||
|
|
||||
|
||||
where {object_definition} or {srs_def} is
|
||||
where {object_definition} or {srs_def} is one of the possibilities accepted
|
||||
by :c:func:`proj_create`
|
||||
|
||||
- a proj-string,
|
||||
- a WKT string,
|
||||
@@ -48,7 +49,7 @@ Synopsis
|
||||
(*added in 6.2*)
|
||||
- a OGC URN combining references for concatenated operations
|
||||
(e.g. "urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618")
|
||||
- a PROJJSON string. The jsonschema is at https://proj.org/schemas/v0.1/projjson.schema.json (*added in 6.2*)
|
||||
- a PROJJSON string. The jsonschema is at https://proj.org/schemas/v0.2/projjson.schema.json (*added in 6.2*)
|
||||
- a compound CRS made from two object names separated with " + ". e.g. "WGS 84 + EGM96 height" (*added in 7.1*)
|
||||
|
||||
{object_reference} is a filename preceded by the '@' character. The
|
||||
|
||||
+18
-17
@@ -14,7 +14,6 @@
|
||||
|
||||
import sys
|
||||
import os
|
||||
import datetime
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
@@ -42,6 +41,9 @@ extensions = [
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# BibTeX configuration
|
||||
bibtex_bibfiles = ['references.bib']
|
||||
|
||||
# The suffix(es) of source filenames.
|
||||
# You can specify multiple suffix as a list of string:
|
||||
# source_suffix = ['.rst', '.md']
|
||||
@@ -61,29 +63,25 @@ project = 'PROJ'
|
||||
# See CITATION file
|
||||
title = 'PROJ coordinate transformation software library'
|
||||
author = 'PROJ contributors'
|
||||
|
||||
now = datetime.datetime.now()
|
||||
copyright = u'1983-{0}'.format(now.year)
|
||||
copyright = u'1983-2020'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
version = '7.1.0'
|
||||
data_version = '1.0'
|
||||
|
||||
# use same |release| as |version|
|
||||
release = version
|
||||
version = '7.1'
|
||||
release = '7.1.1'
|
||||
data_version = '1.2'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
language = None
|
||||
# language = 'en'
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
#today = ''
|
||||
today = 'September 2020'
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
#today_fmt = '%B %d, %Y'
|
||||
|
||||
@@ -187,16 +185,16 @@ html_favicon = '../images/favicon.png'
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
|
||||
htm_css_files = [
|
||||
'theme_overrides.css', # override wide tables in RTD theme
|
||||
]
|
||||
|
||||
html_context = {
|
||||
'display_github': True,
|
||||
'theme_vcs_pageview_mode': 'edit',
|
||||
'github_user': 'OSGeo',
|
||||
'github_repo': 'PROJ',
|
||||
# TODO: edit when switching active branch
|
||||
'github_version': '/7.0/docs/source/',
|
||||
'css_files': [
|
||||
'_static/theme_overrides.css', # override wide tables in RTD theme
|
||||
],
|
||||
'github_version': '/7.1/docs/source/',
|
||||
}
|
||||
|
||||
# Add any extra paths that contain custom files (such as robots.txt or
|
||||
@@ -269,6 +267,8 @@ preamble = r"""
|
||||
\ifdefined\DeclareUnicodeCharacter
|
||||
\DeclareUnicodeCharacter{2032}{$'$}% prime
|
||||
\fi
|
||||
|
||||
\usepackage[notbib]{tocbibind}
|
||||
"""
|
||||
|
||||
latex_elements = {
|
||||
@@ -280,7 +280,8 @@ latex_elements = {
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
'preamble': preamble,
|
||||
'inputenc':'\\usepackage[utf8]{inputenc}'
|
||||
'inputenc': r'\usepackage[utf8]{inputenc}',
|
||||
'makeindex': r'\usepackage[columns=1]{idxlayout}\makeindex',
|
||||
|
||||
# Latex figure (float) alignment
|
||||
#'figure_align': 'htbp',
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
General documentation
|
||||
---------------------
|
||||
|
||||
.. doxygenfile:: general_doc.dox.reworked.h
|
||||
.. doxygenpage:: general_doc
|
||||
:project: doxygen_api
|
||||
|
||||
@@ -314,6 +314,48 @@ Ancillary types for geodetic computations
|
||||
|
||||
Third rotation angle, kappa.
|
||||
|
||||
.. c:type:: PJ_ENU
|
||||
|
||||
East, north and up components.
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
typedef struct { double e, n, u; } PJ_ENU;
|
||||
|
||||
.. c:member:: double PJ_ENU.e
|
||||
|
||||
East component.
|
||||
|
||||
.. c:member:: double PJ_ENU.n
|
||||
|
||||
North component.
|
||||
|
||||
.. c:member:: double PJ_ENU.u
|
||||
|
||||
Up component.
|
||||
|
||||
|
||||
.. c:type:: PJ_GEOD
|
||||
|
||||
Geodesic length, forward and reverse azimuths.
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
typedef struct { double s, a1, a2; } PJ_GEOD;
|
||||
|
||||
.. c:member:: double PJ_GEOD.s
|
||||
|
||||
Geodesic length.
|
||||
|
||||
.. c:member:: double PJ_GEOD.a1
|
||||
|
||||
Forward azimuth.
|
||||
|
||||
.. c:member:: double PJ_GEOD.a2
|
||||
|
||||
Reverse azimuth.
|
||||
|
||||
|
||||
|
||||
Complex coordinate types
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -331,6 +373,9 @@ Complex coordinate types
|
||||
PJ_XYZT xyzt;
|
||||
PJ_UVWT uvwt;
|
||||
PJ_LPZT lpzt;
|
||||
PJ_GEOD geod;
|
||||
PJ_OPK opk;
|
||||
PJ_ENU enu;
|
||||
PJ_XYZ xyz;
|
||||
PJ_UVW uvw;
|
||||
PJ_LPZ lpz;
|
||||
@@ -355,6 +400,18 @@ Complex coordinate types
|
||||
|
||||
Longitude, latitude, vertical and time components.
|
||||
|
||||
.. c:member:: PJ_GEOD PJ_COORD.geod
|
||||
|
||||
Geodesic length, forward and reverse azimuths.
|
||||
|
||||
.. c:member:: PJ_OPK PJ_COORD.opk
|
||||
|
||||
Rotations, for instance three euler angles.
|
||||
|
||||
.. c:member:: PJ_ENU PJ_COORD.enu
|
||||
|
||||
East, north and up components.
|
||||
|
||||
.. c:member:: PJ_XYZ PJ_COORD.xyz
|
||||
|
||||
3-dimensional cartesian coordinate.
|
||||
@@ -840,5 +897,6 @@ C API for ISO-19111 functionality
|
||||
.. doxygengroup:: iso19111_types
|
||||
:project: doxygen_api
|
||||
:content-only:
|
||||
:members:
|
||||
|
||||
|
||||
|
||||
@@ -37,11 +37,15 @@ paragraph for more details.
|
||||
- a WKT string,
|
||||
- an object code (like "EPSG:4326", "urn:ogc:def:crs:EPSG::4326",
|
||||
"urn:ogc:def:coordinateOperation:EPSG::1671"),
|
||||
- an Object name. e.g "WGS 84", "WGS 84 / UTM zone 31N". In that case as
|
||||
uniqueness is not guaranteed, heuristics are applied to determine the appropriate best match.
|
||||
- a OGC URN combining references for compound coordinate reference systems
|
||||
(e.g "urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717" or custom abbreviated
|
||||
syntax "EPSG:2393+5717"),
|
||||
- a OGC URN combining references for concatenated operations
|
||||
(e.g. "urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618")
|
||||
- a PROJJSON string. The jsonschema is at https://proj.org/schemas/v0.2/projjson.schema.json (*added in 6.2*)
|
||||
- a compound CRS made from two object names separated with " + ". e.g. "WGS 84 + EGM96 height" (*added in 7.1*)
|
||||
|
||||
Example call:
|
||||
|
||||
|
||||
@@ -13,20 +13,22 @@ distribution of the source code and various resource file archives. See
|
||||
Current Release
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
* **2020-05-01** `proj-7.0.1.tar.gz`_ (`md5`_)
|
||||
* **2020-09-01** `proj-7.1.1.tar.gz`_ (`md5`_)
|
||||
* **2020-07-01** `proj-7.1.0.tar.gz`_
|
||||
* **2020-05-01** `proj-6.3.2.tar.gz`_
|
||||
* **2020-09-01** `proj-data-1.2.tar.gz`_
|
||||
* **2020-05-01** `proj-data-1.1.tar.gz`_
|
||||
* **2020-03-01** `proj-data-1.0.tar.gz`_
|
||||
* **2018-09-15** `proj-datumgrid-1.8.zip`_
|
||||
* **2020-03-01** `proj-datumgrid-europe-1.6.zip`_
|
||||
* **2020-03-01** `proj-datumgrid-north-america-1.4.zip`_
|
||||
* **2020-03-01** `proj-datumgrid-oceania-1.2.zip`_
|
||||
* **2019-03-01** `proj-datumgrid-world-1.0.zip`_
|
||||
* **PDF Manual** `proj.pdf`_
|
||||
|
||||
.. note::
|
||||
|
||||
The proj-datumgrid packages have been deprecated with PROJ 7.0.0.
|
||||
The proj-data package should be used with PROJ 7.0.0
|
||||
The proj-data package should be used with PROJ 7.0.0 and newer
|
||||
|
||||
The proj-datumgrid packages should be used with PROJ releases from the 5.x
|
||||
and 6.x branches.
|
||||
@@ -34,6 +36,7 @@ Current Release
|
||||
Past Releases
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
* **2020-05-01** `proj-7.0.1.tar.gz`_
|
||||
* **2020-03-01** `proj-7.0.0.tar.gz`_
|
||||
* **2020-02-11** `proj-6.3.1.tar.gz`_
|
||||
* **2020-01-01** `proj-6.3.0.tar.gz`_
|
||||
@@ -50,6 +53,8 @@ Past Releases
|
||||
* **2015-09-13** `proj-4.9.2.tar.gz`_
|
||||
* **2015-03-04** `proj-4.9.1.tar.gz`_
|
||||
|
||||
* **2020-03-01** `proj-data-1.0.tar.gz`_
|
||||
|
||||
* **2018-03-01** `proj-datumgrid-1.7.zip`_
|
||||
* **2016-09-11** `proj-datumgrid-1.6.zip`_
|
||||
* **2019-09-01** `proj-datumgrid-europe-1.5.zip`_
|
||||
@@ -65,8 +70,10 @@ Past Releases
|
||||
* **2018-03-01** `proj-datumgrid-oceania-1.1.zip`_
|
||||
* **2018-03-01** `proj-datumgrid-oceania-1.0.zip`_
|
||||
|
||||
.. _`proj-7.1.1.tar.gz`: https://download.osgeo.org/proj/proj-7.1.1.tar.gz
|
||||
.. _`md5`: https://download.osgeo.org/proj/proj-7.1.1.tar.gz.md5
|
||||
.. _`proj-7.1.0.tar.gz`: https://download.osgeo.org/proj/proj-7.1.0.tar.gz
|
||||
.. _`proj-7.0.1.tar.gz`: https://download.osgeo.org/proj/proj-7.0.1.tar.gz
|
||||
.. _`md5`: https://download.osgeo.org/proj/proj-7.0.1.tar.gz.md5
|
||||
.. _`proj-7.0.0.tar.gz`: https://download.osgeo.org/proj/proj-7.0.0.tar.gz
|
||||
.. _`proj-6.3.2.tar.gz`: https://download.osgeo.org/proj/proj-6.3.2.tar.gz
|
||||
.. _`proj-6.3.1.tar.gz`: https://download.osgeo.org/proj/proj-6.3.1.tar.gz
|
||||
@@ -83,6 +90,8 @@ Past Releases
|
||||
.. _`proj-4.9.1.tar.gz`: https://download.osgeo.org/proj/proj-4.9.1.tar.gz
|
||||
.. _`proj-4.9.2.tar.gz`: https://download.osgeo.org/proj/proj-4.9.2.tar.gz
|
||||
.. _`proj-4.9.3.tar.gz`: https://download.osgeo.org/proj/proj-4.9.3.tar.gz
|
||||
.. _`proj-data-1.2.tar.gz`: https://download.osgeo.org/proj/proj-data-1.2.tar.gz
|
||||
.. _`proj-data-1.1.tar.gz`: https://download.osgeo.org/proj/proj-data-1.1.tar.gz
|
||||
.. _`proj-data-1.0.tar.gz`: https://download.osgeo.org/proj/proj-data-1.0.tar.gz
|
||||
.. _`proj-datumgrid-1.6.zip`: https://download.osgeo.org/proj/proj-datumgrid-1.6.zip
|
||||
.. _`proj-datumgrid-1.7.zip`: https://download.osgeo.org/proj/proj-datumgrid-1.7.zip
|
||||
@@ -103,4 +112,3 @@ Past Releases
|
||||
.. _`proj-datumgrid-oceania-1.1.zip`: https://download.osgeo.org/proj/proj-datumgrid-oceania-1.1.zip
|
||||
.. _`proj-datumgrid-oceania-1.2.zip`: https://download.osgeo.org/proj/proj-datumgrid-oceania-1.2.zip
|
||||
.. _`proj-datumgrid-world-1.0.zip`: https://download.osgeo.org/proj/proj-datumgrid-world-1.0.zip
|
||||
.. _`proj.pdf`: https://raw.githubusercontent.com/OSGeo/PROJ/gh-pages/proj.pdf
|
||||
|
||||
@@ -30,8 +30,3 @@ PROJ
|
||||
You can download the source code for PROJ on the :ref:`download section<download>`
|
||||
and find links to prepackaged executables in the
|
||||
:ref:`installation section<install>`.
|
||||
|
||||
In addition to this website the PROJ documentation is also available in `PDF`_
|
||||
form.
|
||||
|
||||
.. _`PDF`: https://raw.githubusercontent.com/OSGeo/proj.4/gh-pages/proj.pdf
|
||||
|
||||
@@ -266,10 +266,11 @@ Create a build directory and step into it::
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
From the build directory you can now configure CMake and build the binaries::
|
||||
From the build directory you can now configure CMake, build and install the binaries::
|
||||
|
||||
cmake ..
|
||||
cmake --build .
|
||||
cmake --build . --target install
|
||||
|
||||
On Windows, one may need to specify generator::
|
||||
|
||||
|
||||
@@ -3,6 +3,186 @@
|
||||
News
|
||||
###############################################################################
|
||||
|
||||
7.1.1 Release Notes
|
||||
++++++++++++++++++++++++++++++++++++++++
|
||||
*September 1st 2020*
|
||||
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
* Added various Brazillian grids to the database (`#2277 <https://github.com/OSGeo/issues/2277>`_)
|
||||
|
||||
* Added geoid file for Canary Islands to the database (`#2312 <https://github.com/OSGeo/issues/2312>`_)
|
||||
|
||||
* Updated EPSG database to version 9.8.15 (`#2310 <https://github.com/OSGeo/issues/2310>`_)
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
* WKT parser: do not raise warning when parsing a WKT2:2015 TIMECRS
|
||||
whose TIMEUNIT is at the CS level, and not inside (`#2281 <https://github.com/OSGeo/issues/2281>`_)
|
||||
|
||||
* Parse '+proj=something_not_latlong +vunits=' without +geoidgrids as a
|
||||
Projected3D CRS and not a compound CRS with a unknown datum (`#2289 <https://github.com/OSGeo/issues/2289>`_)
|
||||
|
||||
* C API: Avoid crashing due to missing SANITIZE_CTX() in entry points (`#2293 <https://github.com/OSGeo/issues/2293>`_)
|
||||
|
||||
* CMake build: Check "target_clones" before use (`#2297 <https://github.com/OSGeo/issues/2297>`_)
|
||||
|
||||
* PROJ string export of +proj=krovak +czech: make sure we export +czech… (`#2301 <https://github.com/OSGeo/issues/2301>`_)
|
||||
|
||||
* Helmert 2D: do not require a useless +convention= parameter (`#2305 <https://github.com/OSGeo/issues/2305>`_)
|
||||
|
||||
* Fix a few spelling errors ("vgridshit" vs. "vgridshift") (`#2307 <https://github.com/OSGeo/issues/2307>`_)
|
||||
|
||||
* Fix ability to identify EPSG:2154 as a candidate for 'RGF93_Lambert_93' (`#2316 <https://github.com/OSGeo/issues/2316>`_)
|
||||
|
||||
* WKT importer: tune for Oracle WKT and 'Lambert Conformal Conic' (`#2322 <https://github.com/OSGeo/issues/2322>`_)
|
||||
|
||||
* Revert compiler generated Fused Multiply Addition optimized routines (`#2328 <https://github.com/OSGeo/issues/2328>`_)
|
||||
|
||||
|
||||
|
||||
7.1.0 Release Notes
|
||||
++++++++++++++++++++++++++++++++++++++++
|
||||
*July 1st 2020*
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
+ **New transformations**
|
||||
|
||||
* Add a +proj=defmodel transformation for multi-component time-based deformation models (`#2206 <https://github.com/OSGeo/PROJ/pull/2206>`_):
|
||||
|
||||
+ **New projections**
|
||||
|
||||
* Add square conformal projections from libproject (`#2148 <https://github.com/OSGeo/issues/2148>`_):
|
||||
|
||||
- :ref:`adams_hemi`
|
||||
|
||||
- :ref:`adams_ws1`
|
||||
|
||||
- :ref:`adams_ws2`
|
||||
|
||||
- :ref:`guyou`
|
||||
|
||||
- :ref:`peirce_q`
|
||||
|
||||
* Adams Square II: map ESRI WKT to PROJ string, and implement iterative
|
||||
inverse method (`#2157 <https://github.com/OSGeo/issues/2157>`_)
|
||||
|
||||
* Added :ref:`igh_o` projection (`#2226 <https://github.com/OSGeo/issues/2226>`_)
|
||||
|
||||
* Add :ref:`wink2` inverse by generic inversion of forward method (`#2243 <https://github.com/OSGeo/issues/2243>`_)
|
||||
|
||||
+ **Database**
|
||||
|
||||
* Update to EPSG 9.8.12, ESRI 10.8.1 and import scope and remarks for
|
||||
conversion (`#2238 <https://github.com/OSGeo/issues/2238>`_) (#2267)
|
||||
|
||||
* Map the Behrman projection to ``cae`` when converting ESRI CRSes (`#1986 <https://github.com/OSGeo/issues/1986>`_)
|
||||
|
||||
* Support conversion of Flat_Polar_Quartic projection method (`#1987 <https://github.com/OSGeo/issues/1987>`_)
|
||||
|
||||
* Register 4 new Austrian height grids (see https://github.com/OSGeo/PROJ-data/pull/13)
|
||||
and handle 'Vertical Offset by Grid Interpolation (BEV AT)' method (`#1989 <https://github.com/OSGeo/issues/1989>`_)
|
||||
|
||||
* Add ESRI projection method mappings for Mercator_Variant_A, Mercator_Variant_B
|
||||
and Transverse_Cylindrical_Equal_Area and various grid mappings (`#2020 <https://github.com/OSGeo/issues/2020>`_) (#2195)
|
||||
|
||||
* Map ESRI Transverse_Mercator_Complex to Transverse Mercator (`#2040 <https://github.com/OSGeo/issues/2040>`_)
|
||||
|
||||
* Register grids for New Caledonia (see https://github.com/OSGeo/PROJ-data/pull/16) (`#2051 <https://github.com/OSGeo/issues/2051>`_) (#2239)
|
||||
|
||||
* Register NZGD2000 -> ITRF96 transformation for NZGD2000 database (`#2248 <https://github.com/OSGeo/issues/2248>`_)
|
||||
|
||||
* Register geoid file for UK added
|
||||
(see https://github.com/OSGeo//PROJ-data/pull/25() (`#2250 <https://github.com/OSGeo/issues/2250>`_)
|
||||
|
||||
* Register Slovakian geoid transformations with needed code changes (`#2259 <https://github.com/OSGeo/issues/2259>`_)
|
||||
|
||||
* Register Spanish SPED2ETV2 grid for ED50->ETRS89 (`#2261 <https://github.com/OSGeo/issues/2261>`_)
|
||||
|
||||
+ **API**
|
||||
|
||||
* Add API function :c:func:`proj_get_units_from_database()` (`#2065 <https://github.com/OSGeo/issues/2065>`_)
|
||||
|
||||
* Add API function :c:func:`proj_get_suggested_operation()` (`#2068 <https://github.com/OSGeo/issues/2068>`_)
|
||||
|
||||
* Add API functions :c:func:`proj_degree_input()` and :c:func:`proj_degree_output()` (`#2144 <https://github.com/OSGeo/issues/2144>`_)
|
||||
|
||||
* Moved :c:func:`proj_context_get_url_endpoint()` & :c:func:`proj_context_get_user_writable_directory()`
|
||||
from ``proj_experimental.h`` to ``proj.h`` (`#2162 <https://github.com/OSGeo/issues/2162>`_)
|
||||
|
||||
* :c:func:`createFromUserInput()`: allow compound CRS with the 2 parts given by names,
|
||||
e.g. 'WGS 84 + EGM96 height' (`#2126 <https://github.com/OSGeo/issues/2126>`_)
|
||||
|
||||
* :c:func:`createOperations()`: when converting CompoundCRS<-->Geographic3DCrs, do not
|
||||
use discard change of ellipsoidal height if a Helmert transformation is
|
||||
involved (`#2227 <https://github.com/OSGeo/issues/2227>`_)
|
||||
|
||||
+ **Optimizations**
|
||||
|
||||
* ``tmerc/utm``: add a +algo=auto/evenden_snyder/poder_engsager parameter (`#2030 <https://github.com/OSGeo/issues/2030>`_)
|
||||
|
||||
* Extended ``tmerc`` (Poder/Engsager): speed optimizations (`#2036 <https://github.com/OSGeo/issues/2036>`_)
|
||||
|
||||
* Approximate ``tmerc`` (Snyder): speed optimizations (`#2039 <https://github.com/OSGeo/issues/2039>`_)
|
||||
|
||||
* :c:func:`pj_phi2()`: speed-up computation (and thus inverse ellipsoidal Mercator and LCC) (`#2052 <https://github.com/OSGeo/issues/2052>`_)
|
||||
|
||||
* Inverse ``cart``: speed-up computation by 33% (`#2145 <https://github.com/OSGeo/issues/2145>`_)
|
||||
|
||||
* Extended ``tmerc``: speed-up forward path by ~5% (`#2147 <https://github.com/OSGeo/issues/2147>`_)
|
||||
|
||||
+ **Various**
|
||||
|
||||
* Follow PDAL's CMake RPATH strategy (`#2009 <https://github.com/OSGeo/issues/2009>`_)
|
||||
|
||||
* WKT import/export: add support for WKT1_ESRI VERTCS synta (`#2024 <https://github.com/OSGeo/issues/2024>`_)
|
||||
|
||||
* :program:`projinfo`: add a ``--hide-ballpark`` option (`#2127 <https://github.com/OSGeo/issues/2127>`_)
|
||||
|
||||
* :program:`gie`: implement a strict mode with ``<gie-strict> </gie-strict>`` (`#2168 <https://github.com/OSGeo/issues/2168>`_)
|
||||
|
||||
* Allow importing WKT1 COMPD_CS with a VERT_DATUM[Ellipsoid,2002] (`#2229 <https://github.com/OSGeo/issues/2229>`_)
|
||||
|
||||
* Add runtime checking that sqlite3 is >= 3.11 (`#2235 <https://github.com/OSGeo/issues/2235>`_)
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
* :cpp:func:`createOperations()`: do not remove ballpark transformation if there are only grid
|
||||
based operations, even if they cover the whole area of use (`#2155 <https://github.com/OSGeo/issues/2155>`_)
|
||||
|
||||
* :cpp:func:`createFromProjString()`: handle default parameters of '+krovak +type=crs', and
|
||||
handle ``+czech`` correctly (`#2200 <https://github.com/OSGeo/issues/2200>`_)
|
||||
|
||||
* :cpp:func:`ProjectedCRS::identify()`: fix identification of EPSG:3059 (`#2215 <https://github.com/OSGeo/issues/2215>`_)
|
||||
|
||||
* Database: add a 'WGS84' alias for the EPSG:4326 CRS (`#2218 <https://github.com/OSGeo/issues/2218>`_)
|
||||
|
||||
* Fixes related to CompoundCRS and BoundCRS (`#2222 <https://github.com/OSGeo/issues/2222>`_)
|
||||
|
||||
* Avoid 2 warnings about missing database indices (`#2223 <https://github.com/OSGeo/issues/2223>`_)
|
||||
|
||||
* Make ``projinfo --3d --boundcrs-to-wgs84`` work better (`#2224 <https://github.com/OSGeo/issues/2224>`_)
|
||||
|
||||
* Many fixes regarding BoundCRS, CompoundCRS, Geographic3D CRS with
|
||||
non-metre units (`#2234 <https://github.com/OSGeo/issues/2234>`_)
|
||||
|
||||
* Fix identification of (one of the) ESRI WKT formulations of EPSG:3035 (`#2240 <https://github.com/OSGeo/issues/2240>`_)
|
||||
|
||||
* Avoid using deprecated and removed Windows API function with Mingw32 (`#2246 <https://github.com/OSGeo/issues/2246>`_)
|
||||
|
||||
* :cpp:func:`normalizeForVisualization()`: make it switch axis for EPSG:5482
|
||||
(RSRGD2000 / RSPS2000) (`#2256 <https://github.com/OSGeo/issues/2256>`_)
|
||||
|
||||
* Fix access violation in :c:func:`proj_context_get_database_metadata()` (`#2260 <https://github.com/OSGeo/issues/2260>`_)
|
||||
|
||||
|
||||
7.0.1 Release Notes
|
||||
++++++++++++++++++++++++++++++++++++++++
|
||||
*May 1st 2020*
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 169 KiB |
@@ -11,7 +11,7 @@ The transverse Mercator projection in its various forms is the most widely used
|
||||
+---------------------+----------------------------------------------------------+
|
||||
| **Available forms** | Forward and inverse, spherical and ellipsoidal |
|
||||
+---------------------+----------------------------------------------------------+
|
||||
| **Defined area** | Global, but reasonably accurate only within 15 degrees |
|
||||
| **Defined area** | Global, with full accuracy within 3900 km |
|
||||
| | of the central meridian |
|
||||
+---------------------+----------------------------------------------------------+
|
||||
| **Alias** | tmerc |
|
||||
@@ -42,21 +42,21 @@ In the post-war years, these concepts were extended into the Universal Transvers
|
||||
|
||||
The following table gives special cases of the Transverse Mercator projection.
|
||||
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+------------------------------------------+--------------+
|
||||
| Projection Name | Areas | Central meridian | Zone width | Scale Factor |
|
||||
+=====================================+=====================================================+================================+==========================================+==============+
|
||||
| Transverse Mercator | World wide | Various | less than 6° | Various |
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+------------------------------------------+--------------+
|
||||
| Transverse Mercator south oriented | Southern Africa | 2° intervals E of 11°E | 2° | 1.000 |
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+------------------------------------------+--------------+
|
||||
| UTM North hemisphere | World wide equator to 84°N | 6° intervals E & W of 3° E & W | Always 6° | 0.9996 |
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+------------------------------------------+--------------+
|
||||
| UTM South hemisphere | World wide north of 80°S to equator | 6° intervals E & W of 3° E & W | Always 6° | 0.9996 |
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+------------------------------------------+--------------+
|
||||
| Gauss-Kruger | Former USSR, Yugoslavia, Germany, S. America, China | Various, according to area | Usually less than 6°, often less than 4° | 1.0000 |
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+------------------------------------------+--------------+
|
||||
| Gauss Boaga | Italy | Various, according to area | 6° | 0.9996 |
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+------------------------------------------+--------------+
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+-------------------------------------------+--------------+
|
||||
| Projection Name | Areas | Central meridian | Zone width | Scale Factor |
|
||||
+=====================================+=====================================================+================================+===========================================+==============+
|
||||
| Transverse Mercator | World wide | Various | less than 1000 km | Various |
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+-------------------------------------------+--------------+
|
||||
| Transverse Mercator south oriented | Southern Africa | 2° intervals E of 11°E | 2° | 1.000 |
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+-------------------------------------------+--------------+
|
||||
| UTM North hemisphere | World wide equator to 84°N | 6° intervals E & W of 3° E & W | Usually 6°, wider for Norway and Svalbard | 0.9996 |
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+-------------------------------------------+--------------+
|
||||
| UTM South hemisphere | World wide north of 80°S to equator | 6° intervals E & W of 3° E & W | Always 6° | 0.9996 |
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+-------------------------------------------+--------------+
|
||||
| Gauss-Kruger | Former USSR, Yugoslavia, Germany, S. America, China | Various, according to area | Usually less than 6°, often less than 4° | 1.0000 |
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+-------------------------------------------+--------------+
|
||||
| Gauss Boaga | Italy | Various, according to area | 6° | 0.9996 |
|
||||
+-------------------------------------+-----------------------------------------------------+--------------------------------+-------------------------------------------+--------------+
|
||||
|
||||
|
||||
|
||||
@@ -79,16 +79,16 @@ Parameters
|
||||
|
||||
.. versionadded:: 6.0.0
|
||||
|
||||
Use the algorithm described in section "Ellipsoidal Form" below.
|
||||
It is faster than the default algorithm, but also diverges faster
|
||||
as the distance from the central meridian increases.
|
||||
Use the Evenden-Snyder algorithm described below under "Legacy
|
||||
ellipsoidal form". It is faster than the default algorithm, but is
|
||||
less accurate and diverges beyond 3° from the central meridian.
|
||||
|
||||
.. option:: +algo=auto/evenden_snyder/poder_engsager
|
||||
|
||||
.. versionadded:: 7.1
|
||||
|
||||
Selects the algorithm to use. The hardcoded value and the one defined in
|
||||
:ref:`proj-ini` default to ``poder_engsager``, that is the most precise
|
||||
:ref:`proj-ini` default to ``poder_engsager``; that is the most precise
|
||||
one.
|
||||
|
||||
When using auto, a heuristics based on the input coordinate to transform
|
||||
@@ -115,31 +115,67 @@ Parameters
|
||||
Mathematical definition
|
||||
#######################
|
||||
|
||||
The formulas describing the Transverse Mercator below are quoted from Evenden's [Evenden2005]_.
|
||||
The formulation given here for the Transverse Mercator projection is due
|
||||
to Krüger :cite:`Krueger1912` who gave the series expansions accurate to
|
||||
:math:`n^4`, where :math:`n = (a-b)/(a+b)` is the third flattening.
|
||||
These series were extended to sixth order by Engsager and Poder in
|
||||
:cite:`Poder1998` and :cite:`Engsager2007`. This gives full
|
||||
double-precision accuracy withing 3900 km of the central meridian (about
|
||||
57% of the surface of the earth) :cite:`Karney2011tm`. The error is
|
||||
less than 0.1 mm within 7000 km of the central meridian (about 89% of
|
||||
the surface of the earth).
|
||||
|
||||
:math:`\phi_0` is the latitude of origin that match the center of the map. It can be set with ``+lat_0``.
|
||||
This formulation consists of three steps: a conformal projection from
|
||||
the ellipsoid to a sphere, the spherical transverse Mercator
|
||||
projection, rectifying this projection to give constant scale on the
|
||||
central meridian.
|
||||
|
||||
:math:`k_0` is the scale factor at the natural origin (on the central meridian). It can be set with ``+k_0``.
|
||||
The scale on the central meridian is :math:`k_0` and is set by ``+k_0``.
|
||||
|
||||
:math:`M(\phi)` is the meridional distance.
|
||||
Option :option:`+lon_0` sets the central meridian; in the formulation
|
||||
below :math:`\lambda` is the longitude relative to the central meridian.
|
||||
|
||||
Options :option:`+lat_0`, :option:`+x_0`, and :option:`+y_0` serve to
|
||||
translate the projected coordinates so that at :math:`(\phi, \lambda) =
|
||||
(\phi_0, \lambda_0)`, the projected coordinates are :math:`(x,y) =
|
||||
(x_0,y_0)`. To simplify the formulas below, these options are set to
|
||||
zero (their default values).
|
||||
|
||||
Because the projection is conformal, the formulation is most
|
||||
conveniently given in terms of complex numbers. In particular, the
|
||||
unscaled projected coordinates :math:`\eta` (proportional to the
|
||||
easting, :math:`x`) and :math:`\xi` (proportional to the northing,
|
||||
:math:`y`) are combined into the single complex quantity :math:`\zeta =
|
||||
\xi + i\eta`, where :math:`i=\sqrt{-1}`. Then any analytic function
|
||||
:math:`f(\zeta)` defines a conformal mapping (this follows from the
|
||||
Cauchy-Riemann conditions).
|
||||
|
||||
Spherical form
|
||||
**************
|
||||
|
||||
Because the full (ellipsoidal) projection includes the spherical
|
||||
projection as one of the components, we present the spherial form first
|
||||
with the coordinates tagged with primes, :math:`\phi'`,
|
||||
:math:`\lambda'`, :math:`\zeta' = \xi' + i\eta'`, :math:`x'`,
|
||||
:math:`y'`, so that they can be distinguished from the corresponding
|
||||
ellipsoidal coordinates (without the primes). The projected coordinates
|
||||
for the sphere are given by
|
||||
|
||||
.. math::
|
||||
|
||||
x' = k_0 R \eta';\qquad y' = k_0 R \xi'
|
||||
|
||||
Forward projection
|
||||
==================
|
||||
|
||||
.. math::
|
||||
|
||||
B = \cos \phi \sin \lambda
|
||||
\xi' = \tan^{-1}\biggl(\frac{\tan\phi'}{\cos\lambda'}\biggr)
|
||||
|
||||
.. math::
|
||||
|
||||
x = \frac{k_0}{2} \ln(\frac{1+B}{1-B})
|
||||
|
||||
.. math::
|
||||
|
||||
y = k_0 ( \arctan(\frac{\tan(\phi)}{\cos \lambda}) - \phi_0)
|
||||
\eta' = \sinh^{-1}\biggl(\frac{\sin\lambda'}
|
||||
{\sqrt{\tan^2\phi' + \cos^2\lambda'}}\biggr)
|
||||
|
||||
|
||||
Inverse projection
|
||||
@@ -147,28 +183,154 @@ Inverse projection
|
||||
|
||||
.. math::
|
||||
|
||||
D = \frac{y}{k_0} + \phi_0
|
||||
\phi' = \tan^{-1}\biggl(\frac{\sin\xi'}
|
||||
{\sqrt{\sinh^2\eta' + \cos^2\xi'}}\biggr)
|
||||
|
||||
.. math::
|
||||
|
||||
x' = \frac{x}{k_0}
|
||||
|
||||
.. math::
|
||||
|
||||
\phi = \arcsin(\frac{\sin D}{\cosh x'})
|
||||
|
||||
.. math::
|
||||
|
||||
\lambda = \arctan(\frac{\sinh x'}{\cos D})
|
||||
\lambda' = \tan^{-1}\biggl(\frac{\sinh\eta'}{\cos\xi'}\biggr)
|
||||
|
||||
|
||||
Ellipsoidal form
|
||||
****************
|
||||
|
||||
The projected coordinates are given by
|
||||
|
||||
.. math::
|
||||
|
||||
\zeta = \xi + i\eta;\qquad x = k_0 A \eta;\qquad y = k_0 A \xi
|
||||
|
||||
.. math::
|
||||
|
||||
A = \frac a{1+n}\biggl(1 + \frac14 n^2 + \frac1{64} n^4 +
|
||||
\frac1{256}n^6\biggr)
|
||||
|
||||
The series for conversion between ellipsoidal and spherical geographic
|
||||
coordinates and ellipsoidal and spherical projected coordinates are
|
||||
given in matrix notation where :math:`\mathbf S(\theta)` and
|
||||
:math:`\mathbf N` are the row and column vectors of length 6
|
||||
|
||||
.. math::
|
||||
|
||||
\mathbf S(\theta) = \begin{pmatrix}
|
||||
\sin 2\theta &
|
||||
\sin 4\theta &
|
||||
\sin 6\theta &
|
||||
\sin 8\theta &
|
||||
\sin 10\theta &
|
||||
\sin 12\theta
|
||||
\end{pmatrix}
|
||||
|
||||
.. math::
|
||||
|
||||
\mathbf N = \begin{pmatrix}
|
||||
n \\ n^2 \\ n^3\\ n^4 \\ n^5 \\ n^6
|
||||
\end{pmatrix}
|
||||
|
||||
and :math:`\mathsf C_{\alpha,\beta}` are upper triangular
|
||||
:math:`6\times6` matrices.
|
||||
|
||||
Relation between geographic coordinates
|
||||
=======================================
|
||||
|
||||
.. math::
|
||||
|
||||
\lambda' = \lambda
|
||||
|
||||
.. math::
|
||||
|
||||
\phi' = \tan^{-1}\sinh\bigl(\sinh^{-1}\tan\phi
|
||||
- e \tanh^{-1}(e\sin\phi)\bigr)
|
||||
|
||||
Instead of using this analytical formula for :math:`\phi'`, the
|
||||
conversions between :math:`\phi` and :math:`\phi'` use the series
|
||||
approximations:
|
||||
|
||||
.. math::
|
||||
|
||||
\phi' = \phi + \mathbf S(\phi) \cdot \mathsf C_{\chi,\phi} \cdot \mathbf N
|
||||
|
||||
.. math::
|
||||
|
||||
\phi = \phi' + \mathbf S(\phi') \cdot \mathsf C_{\phi,\chi} \cdot \mathbf N
|
||||
|
||||
.. math::
|
||||
|
||||
\mathsf C_{\chi,\phi} = \begin{pmatrix}
|
||||
-2& \frac{2}{3}& \frac{4}{3}& -\frac{82}{45}& \frac{32}{45}& \frac{4642}{4725} \\
|
||||
& \frac{5}{3}& -\frac{16}{15}& -\frac{13}{9}& \frac{904}{315}& -\frac{1522}{945} \\
|
||||
& & -\frac{26}{15}& \frac{34}{21}& \frac{8}{5}& -\frac{12686}{2835} \\
|
||||
& & & \frac{1237}{630}& -\frac{12}{5}& -\frac{24832}{14175} \\
|
||||
& & & & -\frac{734}{315}& \frac{109598}{31185} \\
|
||||
& & & & & \frac{444337}{155925} \\
|
||||
\end{pmatrix}
|
||||
|
||||
.. math::
|
||||
|
||||
\mathsf C_{\phi,\chi} = \begin{pmatrix}
|
||||
2& -\frac{2}{3}& -2& \frac{116}{45}& \frac{26}{45}& -\frac{2854}{675} \\
|
||||
& \frac{7}{3}& -\frac{8}{5}& -\frac{227}{45}& \frac{2704}{315}& \frac{2323}{945} \\
|
||||
& & \frac{56}{15}& -\frac{136}{35}& -\frac{1262}{105}& \frac{73814}{2835} \\
|
||||
& & & \frac{4279}{630}& -\frac{332}{35}& -\frac{399572}{14175} \\
|
||||
& & & & \frac{4174}{315}& -\frac{144838}{6237} \\
|
||||
& & & & & \frac{601676}{22275} \\
|
||||
\end{pmatrix}
|
||||
|
||||
Here :math:`\phi'` is the conformal latitude (sometimes denoted by
|
||||
:math:`\chi`) and :math:`\mathsf C_{\chi,\phi}` and :math:`\mathsf
|
||||
C_{\phi,\chi}` are the coefficients in the trigonometric series for
|
||||
converting between :math:`\phi` and :math:`\chi`.
|
||||
|
||||
Relation between projected coordinates
|
||||
======================================
|
||||
|
||||
.. math::
|
||||
|
||||
\zeta = \zeta' + \mathbf S(\zeta') \cdot \mathsf C_{\mu,\chi} \cdot \mathbf N
|
||||
|
||||
.. math::
|
||||
|
||||
\zeta' = \zeta + \mathbf S(\zeta) \cdot \mathsf C_{\chi,\mu} \cdot \mathbf N
|
||||
|
||||
.. math::
|
||||
|
||||
\mathsf C_{\mu,\chi} = \begin{pmatrix}
|
||||
\frac{1}{2}& -\frac{2}{3}& \frac{5}{16}& \frac{41}{180}& -\frac{127}{288}& \frac{7891}{37800} \\
|
||||
& \frac{13}{48}& -\frac{3}{5}& \frac{557}{1440}& \frac{281}{630}& -\frac{1983433}{1935360} \\
|
||||
& & \frac{61}{240}& -\frac{103}{140}& \frac{15061}{26880}& \frac{167603}{181440} \\
|
||||
& & & \frac{49561}{161280}& -\frac{179}{168}& \frac{6601661}{7257600} \\
|
||||
& & & & \frac{34729}{80640}& -\frac{3418889}{1995840} \\
|
||||
& & & & & \frac{212378941}{319334400} \\
|
||||
\end{pmatrix}
|
||||
|
||||
.. math::
|
||||
|
||||
\mathsf C_{\chi,\mu} = \begin{pmatrix}
|
||||
-\frac{1}{2}& \frac{2}{3}& -\frac{37}{96}& \frac{1}{360}& \frac{81}{512}& -\frac{96199}{604800} \\
|
||||
& -\frac{1}{48}& -\frac{1}{15}& \frac{437}{1440}& -\frac{46}{105}& \frac{1118711}{3870720} \\
|
||||
& & -\frac{17}{480}& \frac{37}{840}& \frac{209}{4480}& -\frac{5569}{90720} \\
|
||||
& & & -\frac{4397}{161280}& \frac{11}{504}& \frac{830251}{7257600} \\
|
||||
& & & & -\frac{4583}{161280}& \frac{108847}{3991680} \\
|
||||
& & & & & -\frac{20648693}{638668800} \\
|
||||
\end{pmatrix}
|
||||
|
||||
On the central meridian (:math:`\lambda = \lambda' = 0`), :math:`\zeta'
|
||||
= \phi'` is the conformal latitude :math:`\chi` and :math:`\zeta` plays
|
||||
the role of the rectifying latitude (sometimes denoted by :math:`\mu`).
|
||||
:math:`\mathsf C_{\mu,\chi}` and :math:`\mathsf C_{\chi,\mu}` are the
|
||||
coefficients in the trigonometric series for converting between
|
||||
:math:`\chi` and :math:`\mu`.
|
||||
|
||||
Legacy ellipsoidal form
|
||||
***********************
|
||||
|
||||
The formulas below describe the algorithm used when giving the
|
||||
:option:`+approx` option. They are originally from :cite:`Snyder1987`,
|
||||
but here quoted from :cite:`Evenden1995`.
|
||||
The default algorithm is given by Poder and Engsager in :cite:`Poder1998`
|
||||
but here quoted from :cite:`Evenden1995` and :cite:`Evenden2005`. These
|
||||
are less accurate that the formulation above and are only valid within
|
||||
about 5 degrees of the central meridian. Here :math:`M(\phi)` is the
|
||||
meridional distance.
|
||||
|
||||
|
||||
Forward projection
|
||||
==================
|
||||
@@ -209,7 +371,7 @@ Inverse projection
|
||||
|
||||
.. math::
|
||||
|
||||
\phi_1 = M^-1(y)
|
||||
\phi_1 = M^{-1}(y)
|
||||
|
||||
.. math::
|
||||
|
||||
@@ -245,5 +407,4 @@ Inverse projection
|
||||
Further reading
|
||||
###############
|
||||
|
||||
#. `Wikipedia <https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system>`_
|
||||
#. `EPSG, POSC literature pertaining to Coordinate Conversions and Transformations including Formulas <http://www.ihsenergy.com/epsg/guid7.pdf>`_
|
||||
#. `Wikipedia <https://en.wikipedia.org/wiki/Transverse_Mercator_projection>`_
|
||||
|
||||
@@ -37,7 +37,7 @@ to which specific parameters, such as central meridians, have been applied.
|
||||
The Earth is divided into 60 zones each generally 6° wide in longitude.
|
||||
Bounding meridians are evenly divisible by 6°, and zones are
|
||||
numbered from 1 to 60 proceeding east from the 180th meridian from Greenwich
|
||||
with minor exceptions [Snyder1987]_.
|
||||
with minor exceptions :cite:`Snyder1987`.
|
||||
|
||||
Usage
|
||||
#####
|
||||
|
||||
@@ -64,7 +64,7 @@ Parameters
|
||||
Mathematical definition
|
||||
#######################
|
||||
|
||||
The formulas describing the Mercator projection are all taken from G. Evenden's libproj manuals [Evenden2005]_.
|
||||
The formulas describing the Mercator projection are all taken from G. Evenden's libproj manuals :cite:`Evenden2005`.
|
||||
|
||||
Forward projection
|
||||
==================
|
||||
|
||||
@@ -6,6 +6,8 @@ Multi-component time-based deformation model
|
||||
|
||||
.. versionadded:: 7.1.0
|
||||
|
||||
+---------------------+--------------------------------------------------------------------+
|
||||
| **Alias** | defmodel |
|
||||
+---------------------+--------------------------------------------------------------------+
|
||||
| **Input type** | Geodetic or projected coordinates (horizontal), meters (vertical), |
|
||||
| | decimalyear (temporal) |
|
||||
|
||||
@@ -8,6 +8,8 @@ Kinematic datum shifting utilizing a deformation model
|
||||
|
||||
Perform datum shifts means of a deformation/velocity model.
|
||||
|
||||
+-----------------+--------------------------------------------------------------------+
|
||||
| **Alias** | deformation |
|
||||
+-----------------+--------------------------------------------------------------------+
|
||||
| **Input type** | Cartesian coordinates (spatial), decimalyears (temporal). |
|
||||
+-----------------+--------------------------------------------------------------------+
|
||||
|
||||
@@ -8,7 +8,8 @@ Horizontal grid shift
|
||||
|
||||
Change of horizontal datum by grid shift.
|
||||
|
||||
|
||||
+-----------------+--------------------------------------------------------------------+
|
||||
| **Alias** | hgridshift |
|
||||
+-----------------+--------------------------------------------------------------------+
|
||||
| **Domain** | 2D, 3D and 4D |
|
||||
+-----------------+--------------------------------------------------------------------+
|
||||
|
||||
@@ -8,6 +8,8 @@ Vertical grid shift
|
||||
|
||||
Change Vertical datum change by grid shift
|
||||
|
||||
+-----------------+--------------------------------------------------------------------+
|
||||
| **Alias** | vgridshift |
|
||||
+-----------------+--------------------------------------------------------------------+
|
||||
| **Domain** | 3D and 4D |
|
||||
+-----------------+--------------------------------------------------------------------+
|
||||
|
||||
@@ -8,6 +8,8 @@ Geocentric grid shift
|
||||
|
||||
Geocentric translation using a grid shift
|
||||
|
||||
+-----------------+-------------------------------------------------------------------+
|
||||
| **Alias** | xyzgridshift |
|
||||
+-----------------+-------------------------------------------------------------------+
|
||||
| **Domain** | 3D |
|
||||
+-----------------+-------------------------------------------------------------------+
|
||||
|
||||
@@ -84,6 +84,16 @@
|
||||
Url = {http://www.calcofi.org/publications/calcofireports/v20/Vol_20_Eber___Hewitt.pdf}
|
||||
}
|
||||
|
||||
@InProceedings{Engsager2007,
|
||||
author = {Karsten E. Engsager and Knud Poder},
|
||||
title = {A highly accurate world wide algorithm for the
|
||||
transverse {M}ercator mapping (almost)},
|
||||
booktitle = {Proc. XXIII Intl. Cartographic Conf. (ICC2007), Moscow},
|
||||
pages = {2.1.2},
|
||||
year = 2007,
|
||||
month = aug
|
||||
}
|
||||
|
||||
@Manual{Evenden2005,
|
||||
Title = {libproj4: A Comprehensive Library of Cartographic Projection Functions (Preliminary Draft)},
|
||||
Author = {Gerald I. Evenden},
|
||||
@@ -197,6 +207,20 @@
|
||||
Doi = {10.1007/s00190-012-0578-z}
|
||||
}
|
||||
|
||||
@Article{Karney2011tm,
|
||||
author = {Charles F. F. Karney},
|
||||
title = {Transverse {M}ercator with an accuracy of a few
|
||||
nanometers},
|
||||
journal = {J. Geod.},
|
||||
year = 2011,
|
||||
volume = 85,
|
||||
number = 8,
|
||||
pages = {475-485},
|
||||
month = aug,
|
||||
eprint = {1002.1417},
|
||||
doi = {10.1007/s00190-011-0445-3}
|
||||
}
|
||||
|
||||
@Article{Karney2011,
|
||||
Title = {Geodesics on an ellipsoid of revolution},
|
||||
Author = {Charles F. F. Karney},
|
||||
@@ -218,6 +242,17 @@
|
||||
Volume = {71}
|
||||
}
|
||||
|
||||
@TechReport{Krueger1912,
|
||||
author = {Johann Heinrich Louis Kr\"uger},
|
||||
title = {Konforme {A}bbildung des {E}rdellipsoids in der {E}bene},
|
||||
institution = {Royal Prussian Geodetic Institute},
|
||||
address = {Potsdam},
|
||||
year = 1912,
|
||||
number = 52,
|
||||
type = {New Series},
|
||||
doi = {10.2312/GFZ.b103-krueger28}
|
||||
}
|
||||
|
||||
@InProceedings{LambersKolb2012,
|
||||
Title = {Ellipsoidal Cube Maps for Accurate Rendering of Planetary-Scale Terrain Data},
|
||||
Author = {Lambers, Martin and Kolb, Andreas},
|
||||
|
||||
@@ -20,7 +20,7 @@ CDN of GeoTIFF grids
|
||||
Files are accessed by default through a CDN (Content Delivery Network),
|
||||
accessible through https://cdn.proj.org, that contains :ref:`geodetictiffgrids`
|
||||
datasets which are mirrored and managed by the
|
||||
https://github.com/OSGeo/proj-datumgrid-geotiff/ GitHub project.
|
||||
https://github.com/OSGeo/PROJ-data/ GitHub project.
|
||||
Files in the CDN are designed to be used by PROJ 7 or later, but any software
|
||||
project wishing to use the CDN for shifting support are encouraged to
|
||||
participate in the project and leverage the CDN.
|
||||
|
||||
@@ -560,6 +560,11 @@ static const MethodMapping projectionMethodMappings[] = {
|
||||
EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP,
|
||||
"Lambert_Conformal_Conic_2SP", "lcc", nullptr, paramsLCC2SP},
|
||||
|
||||
// Oracle WKT
|
||||
{EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP,
|
||||
EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP, "Lambert Conformal Conic",
|
||||
"lcc", nullptr, paramsLCC2SP},
|
||||
|
||||
{EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN,
|
||||
EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN,
|
||||
nullptr, // no mapping to WKT1_GDAL
|
||||
@@ -640,6 +645,9 @@ static const MethodMapping projectionMethodMappings[] = {
|
||||
{PROJ_WKT2_NAME_METHOD_INTERRUPTED_GOODE_HOMOLOSINE, 0,
|
||||
"Interrupted_Goode_Homolosine", "igh", nullptr, paramsLonNatOrigin},
|
||||
|
||||
{PROJ_WKT2_NAME_METHOD_INTERRUPTED_GOODE_HOMOLOSINE_OCEAN, 0, nullptr,
|
||||
"igh_o", nullptr, paramsLonNatOrigin},
|
||||
|
||||
// No proper WKT1 representation fr sweep=x
|
||||
{PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_X, 0, nullptr, "geos",
|
||||
"sweep=x", paramsGeos},
|
||||
|
||||
@@ -728,13 +728,23 @@ static const ESRIParamMapping paramsESRI_Rectified_Skew_Orthomorphic_Center[] =
|
||||
EPSG_CODE_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID, "0.0", false},
|
||||
{nullptr, nullptr, 0, "0.0", false}};
|
||||
|
||||
static const ESRIParamMapping paramsESRI_Goode_Homolosine[] = {
|
||||
static const ESRIParamMapping paramsESRI_Goode_Homolosine_alt1[] = {
|
||||
{"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING,
|
||||
EPSG_CODE_PARAMETER_FALSE_EASTING, "0.0", false},
|
||||
{"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING,
|
||||
EPSG_CODE_PARAMETER_FALSE_NORTHING, "0.0", false},
|
||||
{"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN,
|
||||
EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, "0.0", false},
|
||||
{"Option", nullptr, 0, "1.0", false},
|
||||
{nullptr, nullptr, 0, "0.0", false}};
|
||||
static const ESRIParamMapping paramsESRI_Goode_Homolosine_alt2[] = {
|
||||
{"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING,
|
||||
EPSG_CODE_PARAMETER_FALSE_EASTING, "0.0", false},
|
||||
{"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING,
|
||||
EPSG_CODE_PARAMETER_FALSE_NORTHING, "0.0", false},
|
||||
{"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN,
|
||||
EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, "0.0", false},
|
||||
{"Option", nullptr, 0, "2.0", false},
|
||||
{nullptr, nullptr, 0, "0.0", false}};
|
||||
|
||||
static const ESRIParamMapping paramsESRI_Equidistant_Cylindrical_Ellipsoidal[] =
|
||||
@@ -1020,7 +1030,11 @@ static const ESRIMethodMapping esriMappings[] = {
|
||||
EPSG_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B,
|
||||
EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B,
|
||||
paramsESRI_Rectified_Skew_Orthomorphic_Center},
|
||||
{"Goode_Homolosine", "Goode Homolosine", 0, paramsESRI_Goode_Homolosine},
|
||||
{"Goode_Homolosine", PROJ_WKT2_NAME_METHOD_INTERRUPTED_GOODE_HOMOLOSINE, 0,
|
||||
paramsESRI_Goode_Homolosine_alt1},
|
||||
{"Goode_Homolosine",
|
||||
PROJ_WKT2_NAME_METHOD_INTERRUPTED_GOODE_HOMOLOSINE_OCEAN, 0,
|
||||
paramsESRI_Goode_Homolosine_alt2},
|
||||
{"Equidistant_Cylindrical_Ellipsoidal",
|
||||
EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL,
|
||||
EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL,
|
||||
|
||||
+10
-9
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "CCT" "1" "Jul 1, 2020" "7.1.0" "PROJ"
|
||||
.TH "CCT" "1" "Sep 1, 2020" "7.1.1" "PROJ"
|
||||
.SH NAME
|
||||
cct \- Coordinate Conversion and Transformation
|
||||
.
|
||||
@@ -33,7 +33,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.SH SYNOPSIS
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
\fBcct\fP [\fB\-cIostvz\fP [args]] \fI+opt[=arg]\fP … file …
|
||||
\fBcct\fP [\fB\-cIostvz\fP [args]] \fI+opt[=arg]\fP ... file ...
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.SH DESCRIPTION
|
||||
@@ -52,10 +52,11 @@ Specify input columns for (up to) 4 input parameters. Defaults to 1,2,3,4.
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
.B \-d <n>
|
||||
.UNINDENT
|
||||
.sp
|
||||
New in version 5.2.0: Specify the number of decimals in the output.
|
||||
New in version 5.2.0.
|
||||
|
||||
.sp
|
||||
Specify the number of decimals in the output.
|
||||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
.B \-I
|
||||
@@ -103,7 +104,7 @@ Usage varies with operation.
|
||||
\fBcct\fP is an acronym meaning \fICoordinate Conversion and Transformation\fP\&.
|
||||
.sp
|
||||
The acronym refers to definitions given in the OGC 08\-015r2/ISO\-19111
|
||||
standard “Geographical Information – Spatial Referencing by Coordinates”,
|
||||
standard "Geographical Information \-\- Spatial Referencing by Coordinates",
|
||||
which defines two different classes of \fIcoordinate operations\fP:
|
||||
.sp
|
||||
\fICoordinate Conversions\fP, which are coordinate operations where input
|
||||
@@ -238,18 +239,18 @@ $ echo 12 56 100 2018.0 auxiliary data | cct +proj=merc
|
||||
.UNINDENT
|
||||
.SH BACKGROUND
|
||||
.sp
|
||||
\fBcct\fP also refers to Carl Christian Tscherning (1942–2014),
|
||||
\fBcct\fP also refers to Carl Christian Tscherning (1942\-\-2014),
|
||||
professor of Geodesy at the University of Copenhagen, mentor and advisor
|
||||
for a generation of Danish geodesists, colleague and collaborator for
|
||||
two generations of global geodesists, Secretary General for the
|
||||
International Association of Geodesy, IAG (1995–2007), fellow of the
|
||||
International Association of Geodesy, IAG (1995\-\-2007), fellow of the
|
||||
American Geophysical Union (1991), recipient of the IAG Levallois Medal
|
||||
(2007), the European Geosciences Union Vening Meinesz Medal (2008), and
|
||||
of numerous other honours.
|
||||
.sp
|
||||
\fIcct\fP, or Christian, as he was known to most of us, was recognized for his
|
||||
good mood, his sharp wit, his tireless work, and his great commitment to
|
||||
the development of geodesy – both through his scientific contributions,
|
||||
the development of geodesy \-\- both through his scientific contributions,
|
||||
comprising more than 250 publications, and by his mentoring and teaching
|
||||
of the next generations of geodesists.
|
||||
.sp
|
||||
|
||||
+64
-10
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "CS2CS" "1" "Jul 1, 2020" "7.1.0" "PROJ"
|
||||
.TH "CS2CS" "1" "Sep 1, 2020" "7.1.1" "PROJ"
|
||||
.SH NAME
|
||||
cs2cs \- Cartographic coordinate system filter
|
||||
.
|
||||
@@ -33,18 +33,45 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.SH SYNOPSIS
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
\fBcs2cs\fP [\fB\-eEfIlrstvwW\fP [args]] [\fI+opt[=arg]\fP …] [+to \fI+opt[=arg]\fP …] file …
|
||||
\fBcs2cs\fP [\fB\-eEfIlrstvwW\fP [args]] [\fI+opt[=arg]\fP ...] [+to \fI+opt[=arg]\fP ...] file ...
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
or
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
\fBcs2cs\fP [\fB\-eEfIlrstvwW\fP [args]] {source_crs} {target_crs} file …
|
||||
\fBcs2cs\fP [\fB\-eEfIlrstvwW\fP [args]] {source_crs} {target_crs} file ...
|
||||
.sp
|
||||
where {source_crs} or {target_crs} is a PROJ string, a WKT string or a AUTHORITY:CODE
|
||||
(where AUTHORITY is the name of a CRS authority and CODE the code of a CRS
|
||||
found in the proj.db database), expressing a coordinate reference system.
|
||||
where {source_crs} or {target_crs} is one of the possibilities accepted
|
||||
by \fBproj_create()\fP, provided it expresses a CRS
|
||||
.INDENT 0.0
|
||||
.IP \(bu 2
|
||||
a proj\-string,
|
||||
.IP \(bu 2
|
||||
a WKT string,
|
||||
.IP \(bu 2
|
||||
an object code (like "EPSG:4326", "urn:ogc:def:crs:EPSG::4326",
|
||||
"urn:ogc:def:coordinateOperation:EPSG::1671"),
|
||||
.IP \(bu 2
|
||||
an Object name. e.g "WGS 84", "WGS 84 / UTM zone 31N". In that case as
|
||||
uniqueness is not guaranteed, heuristics are applied to determine the appropriate best match.
|
||||
.IP \(bu 2
|
||||
a OGC URN combining references for compound coordinate reference systems
|
||||
(e.g "\fI\%urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717\fP" or custom abbreviated
|
||||
syntax "EPSG:2393+5717"),
|
||||
.IP \(bu 2
|
||||
a OGC URN combining references for references for projected or derived CRSs
|
||||
e.g. for Projected 3D CRS "UTM zone 31N / WGS 84 (3D)":
|
||||
"\fI\%urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031\fP"
|
||||
(\fIadded in 6.2\fP)
|
||||
.IP \(bu 2
|
||||
a OGC URN combining references for concatenated operations
|
||||
(e.g. "\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP")
|
||||
.IP \(bu 2
|
||||
a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.2/projjson.schema.json\fP (\fIadded in 6.2\fP)
|
||||
.IP \(bu 2
|
||||
a compound CRS made from two object names separated with " + ". e.g. "WGS 84 + EGM96 height" (\fIadded in 7.1\fP)
|
||||
.UNINDENT
|
||||
.sp
|
||||
New in version 6.0.0.
|
||||
|
||||
@@ -82,10 +109,11 @@ ASCII input only. (# is the default value).
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
.B \-d <n>
|
||||
.UNINDENT
|
||||
.sp
|
||||
New in version 5.2.0: Specify the number of decimals in the output.
|
||||
New in version 5.2.0.
|
||||
|
||||
.sp
|
||||
Specify the number of decimals in the output.
|
||||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
.B \-e <string>
|
||||
@@ -250,7 +278,7 @@ The x\-y output data will appear as three lines of:
|
||||
.fi
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.SS Using EPSG codes
|
||||
.SS Using EPSG CRS codes
|
||||
.sp
|
||||
Transforming from WGS 84 latitude/longitude (in that order) to UTM Zone 31N/WGS 84
|
||||
.INDENT 0.0
|
||||
@@ -277,6 +305,32 @@ outputs
|
||||
.fi
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.SS Using EPSG CRS names
|
||||
.sp
|
||||
Transforming from WGS 84 latitude/longitude (in that order) with EGM96 height to
|
||||
UTM Zone 31N/WGS 84 with WGS84 ellipsoidal height
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
.sp
|
||||
.nf
|
||||
.ft C
|
||||
echo 45 2 0 | cs2cs "WGS 84 + EGM96 height" "WGS 84 / UTM zone 31N"
|
||||
.ft P
|
||||
.fi
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
outputs
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
.sp
|
||||
.nf
|
||||
.ft C
|
||||
421184.70 4983436.77 50.69
|
||||
.ft P
|
||||
.fi
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.SH SEE ALSO
|
||||
.sp
|
||||
\fBproj(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP, \fBprojinfo(1)\fP, \fBprojsync(1)\fP
|
||||
|
||||
+6
-6
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "GEOD" "1" "Jul 1, 2020" "7.1.0" "PROJ"
|
||||
.TH "GEOD" "1" "Sep 1, 2020" "7.1.1" "PROJ"
|
||||
.SH NAME
|
||||
geod \- Geodesic computations
|
||||
.
|
||||
@@ -33,9 +33,9 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.SH SYNOPSIS
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
\fBgeod\fP \fI+ellps=<ellipse>\fP [\fB\-afFIlptwW\fP [args]] [\fI+opt[=arg]\fP …] file …
|
||||
\fBgeod\fP \fI+ellps=<ellipse>\fP [\fB\-afFIlptwW\fP [args]] [\fI+opt[=arg]\fP ...] file ...
|
||||
.sp
|
||||
\fBinvgeod\fP \fI+ellps=<ellipse>\fP [\fB\-afFIlptwW\fP [args]] [\fI+opt[=arg]\fP …] file …
|
||||
\fBinvgeod\fP \fI+ellps=<ellipse>\fP [\fB\-afFIlptwW\fP [args]] [\fI+opt[=arg]\fP ...] file ...
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.SH DESCRIPTION
|
||||
@@ -143,12 +143,12 @@ azimuthal data must be in decimal degrees or DMS format and
|
||||
input distance data must be in units consistent with the ellipsoid
|
||||
major axis or sphere radius units. The latitude must lie
|
||||
in the range [\-90d,90d]. Output geographic coordinates will be
|
||||
in DMS (if the \fI\%\-f\fP switch is not employed) to 0.001” with trailing,
|
||||
in DMS (if the \fI\%\-f\fP switch is not employed) to 0.001" with trailing,
|
||||
zero\-valued minute\-second fields deleted. Output distance
|
||||
data will be in the same units as the ellipsoid or sphere
|
||||
radius.
|
||||
.sp
|
||||
The Earth’s ellipsoidal figure may be selected in the same manner
|
||||
The Earth\(aqs ellipsoidal figure may be selected in the same manner
|
||||
as program \fBproj\fP by using \fI+ellps=\fP, \fI+a=\fP, \fI+es=\fP, etc.
|
||||
.sp
|
||||
\fBgeod\fP may also be used to determine intermediate points along
|
||||
@@ -201,7 +201,7 @@ where the first two values are the azimuth from Boston to Portland,
|
||||
the back azimuth from Portland to Boston followed by the distance.
|
||||
.sp
|
||||
An example of forward geodesic use is to use the Boston location
|
||||
and determine Portland’s location by azimuth and distance:
|
||||
and determine Portland\(aqs location by azimuth and distance:
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
.sp
|
||||
|
||||
+14
-14
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "GIE" "1" "Jul 1, 2020" "7.1.0" "PROJ"
|
||||
.TH "GIE" "1" "Sep 1, 2020" "7.1.1" "PROJ"
|
||||
.SH NAME
|
||||
gie \- The Geospatial Integrity Investigation Environment
|
||||
.
|
||||
@@ -209,7 +209,7 @@ Many coordinates can be expected for one \fI\%operation\fP\&. For each
|
||||
See \fI\%operation\fP for an example.
|
||||
.sp
|
||||
In addition to expecting a coordinate it is also possible to expect a
|
||||
PROJ error code in case an operation can’t be created. This is useful when
|
||||
PROJ error code in case an operation can\(aqt be created. This is useful when
|
||||
testing that errors are caught and handled correctly. Below is an example of
|
||||
that tests that the pipeline operator fails correctly when a non\-invertible
|
||||
pipeline is constructed.
|
||||
@@ -267,7 +267,7 @@ units.
|
||||
Do a roundtrip test of an operation. \fI\%roundtrip\fP needs a
|
||||
\fI\%operation\fP and a \fI\%accept\fP command
|
||||
to function. The accepted coordinate is passed to the operation first in
|
||||
it’s forward mode, then the output from the forward operation is passed
|
||||
it\(aqs forward mode, then the output from the forward operation is passed
|
||||
back to the inverse operation. This procedure is done \fBn\fP times. If the
|
||||
resulting coordinate is within the set tolerance of the initial coordinate,
|
||||
the test is passed.
|
||||
@@ -343,7 +343,7 @@ expect 12 55 0 0
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
The default direction is “forward”.
|
||||
The default direction is "forward".
|
||||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
@@ -474,21 +474,21 @@ expect 173 \-45
|
||||
.UNINDENT
|
||||
.SH BACKGROUND
|
||||
.sp
|
||||
More importantly than being an acronym for “Geospatial Integrity Investigation
|
||||
Environment”, gie were also the initials, user id, and USGS email address of
|
||||
Gerald Ian Evenden (1935–2016), the geospatial visionary, who, already in the
|
||||
More importantly than being an acronym for "Geospatial Integrity Investigation
|
||||
Environment", gie were also the initials, user id, and USGS email address of
|
||||
Gerald Ian Evenden (1935\-\-2016), the geospatial visionary, who, already in the
|
||||
1980s, started what was to become the PROJ of today.
|
||||
.sp
|
||||
Gerald’s clear vision was that map projections are \fIjust special functions\fP\&.
|
||||
Gerald\(aqs clear vision was that map projections are \fIjust special functions\fP\&.
|
||||
Some of them rather complex, most of them of two variables, but all of them
|
||||
\fIjust special functions\fP, and not particularly more special than the \fBsin()\fP,
|
||||
\fBcos()\fP, \fBtan()\fP, and \fBhypot()\fP already available in the C standard library.
|
||||
.sp
|
||||
And hence, according to Gerald, \fIthey should not be particularly much harder
|
||||
to use\fP, for a programmer, than the \fBsin()\fP’s, \fBtan()\fP’s and
|
||||
\fBhypot()\fP’s so readily available.
|
||||
to use\fP, for a programmer, than the \fBsin()\fP\(aqs, \fBtan()\fP\(aqs and
|
||||
\fBhypot()\fP\(aqs so readily available.
|
||||
.sp
|
||||
Gerald’s ingenuity also showed in the implementation of the vision, where
|
||||
Gerald\(aqs ingenuity also showed in the implementation of the vision, where
|
||||
he devised a comprehensive, yet simple, system of key\-value pairs for
|
||||
parameterising a map projection, and the highly flexible \fBPJ\fP struct, storing
|
||||
run\-time compiled versions of those key\-value pairs, hence making a map
|
||||
@@ -497,15 +497,15 @@ call like \fBhypot(x,y)\fP\&.
|
||||
.sp
|
||||
While today, we may have more formally well defined metadata systems (most
|
||||
prominent the OGC WKT2 representation), nothing comes close being as easily
|
||||
readable (“human compatible”) as Gerald’s key\-value system. This system in
|
||||
particular, and the PROJ system in general, was Gerald’s great gift to anyone
|
||||
readable ("human compatible") as Gerald\(aqs key\-value system. This system in
|
||||
particular, and the PROJ system in general, was Gerald\(aqs great gift to anyone
|
||||
using and/or communicating about geodata.
|
||||
.sp
|
||||
It is only reasonable to name a program, keeping an eye on the
|
||||
integrity of the PROJ system, in honour of Gerald.
|
||||
.sp
|
||||
So in honour, and hopefully also in the spirit, of Gerald Ian Evenden
|
||||
(1935–2016), this is the Geospatial Integrity Investigation Environment.
|
||||
(1935\-\-2016), this is the Geospatial Integrity Investigation Environment.
|
||||
.SH SEE ALSO
|
||||
.sp
|
||||
\fBproj(1)\fP, \fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBprojinfo(1)\fP, \fBprojsync(1)\fP
|
||||
|
||||
+4
-4
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "PROJ" "1" "Jul 1, 2020" "7.1.0" "PROJ"
|
||||
.TH "PROJ" "1" "Sep 1, 2020" "7.1.1" "PROJ"
|
||||
.SH NAME
|
||||
proj \- Cartographic projection filter
|
||||
.
|
||||
@@ -33,9 +33,9 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.SH SYNOPSIS
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
\fBproj\fP [\fB\-beEfiIlmorsStTvVwW\fP] [args]] [\fI+opt[=arg]\fP …] file …
|
||||
\fBproj\fP [\fB\-beEfiIlmorsStTvVwW\fP] [args]] [\fI+opt[=arg]\fP ...] file ...
|
||||
.sp
|
||||
\fBinvproj\fP [\fB\-beEfiIlmorsStTvVwW\fP] [args]] [\fI+opt[=arg]\fP …] file …
|
||||
\fBinvproj\fP [\fB\-beEfiIlmorsStTvVwW\fP] [args]] [\fI+opt[=arg]\fP ...] file ...
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.SH DESCRIPTION
|
||||
@@ -211,7 +211,7 @@ portions of the input line are appended to the output line.
|
||||
Input geographic data (longitude and latitude) must be in DMS or decimal degrees format and input
|
||||
cartesian data must be in units consistent with the ellipsoid major axis or
|
||||
sphere radius units. Output geographic coordinates will be in DMS (if the
|
||||
\fB\-w\fP switch is not employed) and precise to 0.001” with trailing, zero\-valued
|
||||
\fB\-w\fP switch is not employed) and precise to 0.001" with trailing, zero\-valued
|
||||
minute\-second fields deleted.
|
||||
.SH EXAMPLE
|
||||
.sp
|
||||
|
||||
+29
-28
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "PROJINFO" "1" "Jul 1, 2020" "7.1.0" "PROJ"
|
||||
.TH "PROJINFO" "1" "Sep 1, 2020" "7.1.1" "PROJ"
|
||||
.SH NAME
|
||||
projinfo \- Geodetic object and coordinate operation queries
|
||||
.
|
||||
@@ -36,55 +36,56 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.nf
|
||||
\fBprojinfo\fP
|
||||
.in +2
|
||||
[\-o formats] [\-k crs|operation|datum|ellipsoid] [–summary] [\-q]
|
||||
[[–area name_or_code] | [–bbox west_long,south_lat,east_long,north_lat]]
|
||||
[–spatial\-test contains|intersects]
|
||||
[–crs\-extent\-use none|both|intersection|smallest]
|
||||
[–grid\-check none|discard_missing|sort|known_available]
|
||||
[–pivot\-crs always|if_no_direct_transformation|never|{auth:code[,auth:code]*}]
|
||||
[–show\-superseded] [–hide\-ballpark]
|
||||
[–boundcrs\-to\-wgs84]
|
||||
[–main\-db\-path path] [–aux\-db\-path path]*
|
||||
[–identify] [–3d]
|
||||
[–c\-ify] [–single\-line]
|
||||
–searchpaths | –remote\-data | {object_definition} |
|
||||
[\-o formats] [\-k crs|operation|datum|ellipsoid] [\-\-summary] [\-q]
|
||||
[[\-\-area name_or_code] | [\-\-bbox west_long,south_lat,east_long,north_lat]]
|
||||
[\-\-spatial\-test contains|intersects]
|
||||
[\-\-crs\-extent\-use none|both|intersection|smallest]
|
||||
[\-\-grid\-check none|discard_missing|sort|known_available]
|
||||
[\-\-pivot\-crs always|if_no_direct_transformation|never|{auth:code[,auth:code]*}]
|
||||
[\-\-show\-superseded] [\-\-hide\-ballpark]
|
||||
[\-\-boundcrs\-to\-wgs84]
|
||||
[\-\-main\-db\-path path] [\-\-aux\-db\-path path]*
|
||||
[\-\-identify] [\-\-3d]
|
||||
[\-\-c\-ify] [\-\-single\-line]
|
||||
\-\-searchpaths | \-\-remote\-data | {object_definition} |
|
||||
{object_reference} | (\-s {srs_def} \-t {srs_def})
|
||||
|
||||
.in -2
|
||||
.fi
|
||||
.sp
|
||||
.sp
|
||||
where {object_definition} or {srs_def} is
|
||||
where {object_definition} or {srs_def} is one of the possibilities accepted
|
||||
by \fBproj_create()\fP
|
||||
.INDENT 0.0
|
||||
.IP \(bu 2
|
||||
a proj\-string,
|
||||
.IP \(bu 2
|
||||
a WKT string,
|
||||
.IP \(bu 2
|
||||
an object code (like “EPSG:4326”, “urn:ogc:def:crs:EPSG::4326”,
|
||||
“urn:ogc:def:coordinateOperation:EPSG::1671”),
|
||||
an object code (like "EPSG:4326", "urn:ogc:def:crs:EPSG::4326",
|
||||
"urn:ogc:def:coordinateOperation:EPSG::1671"),
|
||||
.IP \(bu 2
|
||||
an Object name. e.g “WGS 84”, “WGS 84 / UTM zone 31N”. In that case as
|
||||
an Object name. e.g "WGS 84", "WGS 84 / UTM zone 31N". In that case as
|
||||
uniqueness is not guaranteed, heuristics are applied to determine the appropriate best match.
|
||||
.IP \(bu 2
|
||||
a OGC URN combining references for compound coordinate reference systems
|
||||
(e.g “\fI\%urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717\fP” or custom abbreviated
|
||||
syntax “EPSG:2393+5717”),
|
||||
(e.g "\fI\%urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717\fP" or custom abbreviated
|
||||
syntax "EPSG:2393+5717"),
|
||||
.IP \(bu 2
|
||||
a OGC URN combining references for references for projected or derived CRSs
|
||||
e.g. for Projected 3D CRS “UTM zone 31N / WGS 84 (3D)”:
|
||||
“\fI\%urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031\fP”
|
||||
e.g. for Projected 3D CRS "UTM zone 31N / WGS 84 (3D)":
|
||||
"\fI\%urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031\fP"
|
||||
(\fIadded in 6.2\fP)
|
||||
.IP \(bu 2
|
||||
a OGC URN combining references for concatenated operations
|
||||
(e.g. “\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP”)
|
||||
(e.g. "\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP")
|
||||
.IP \(bu 2
|
||||
a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.1/projjson.schema.json\fP (\fIadded in 6.2\fP)
|
||||
a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.2/projjson.schema.json\fP (\fIadded in 6.2\fP)
|
||||
.IP \(bu 2
|
||||
a compound CRS made from two object names separated with ” + “. e.g. “WGS 84 + EGM96 height” (\fIadded in 7.1\fP)
|
||||
a compound CRS made from two object names separated with " + ". e.g. "WGS 84 + EGM96 height" (\fIadded in 7.1\fP)
|
||||
.UNINDENT
|
||||
.sp
|
||||
{object_reference} is a filename preceded by the ‘@’ character. The
|
||||
{object_reference} is a filename preceded by the \(aq@\(aq character. The
|
||||
file referenced by the {object_reference} must contain a valid
|
||||
{object_definition}.
|
||||
.UNINDENT
|
||||
@@ -120,7 +121,7 @@ WKT2_2019 was previously called WKT2_2018.
|
||||
\fBNOTE:\fP
|
||||
.INDENT 7.0
|
||||
.INDENT 3.5
|
||||
Before PROJ 6.3.0, WKT1:GDAL was implicitly calling –boundcrs\-to\-wgs84.
|
||||
Before PROJ 6.3.0, WKT1:GDAL was implicitly calling \-\-boundcrs\-to\-wgs84.
|
||||
This is no longer the case.
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
@@ -159,7 +160,7 @@ potentially compatible of being piped in other utilities.
|
||||
.B \-\-area name_or_code
|
||||
Specify an area of interest to restrict the results when researching
|
||||
coordinate operations between 2 CRS. The area of interest can be specified either
|
||||
as a name (e.g “Denmark \- onshore”) or a AUTHORITY:CODE (EPSG:3237)
|
||||
as a name (e.g "Denmark \- onshore") or a AUTHORITY:CODE (EPSG:3237)
|
||||
This option is exclusive of \fI\%\-\-bbox\fP\&.
|
||||
.sp
|
||||
\fBNOTE:\fP
|
||||
@@ -348,7 +349,7 @@ with a likelihood of 70% to EPSG:32631
|
||||
New in version 6.3.
|
||||
|
||||
.sp
|
||||
“Promote” the CRS(s) to their 3D version. In the context of researching
|
||||
"Promote" the CRS(s) to their 3D version. In the context of researching
|
||||
available coordinate transformations, explicitly specifying this option is
|
||||
not necessary, because when one of the source or target CRS has a vertical
|
||||
component but not the other one, the one that has no vertical component is
|
||||
|
||||
+10
-10
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "PROJSYNC" "1" "Ju1 1, 2020" "7.1.0" "PROJ"
|
||||
.TH "PROJSYNC" "1" "Sep 1, 2020" "7.1.1" "PROJ"
|
||||
.SH NAME
|
||||
projsync \- Downloading tool of resource files
|
||||
.
|
||||
@@ -36,15 +36,15 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.nf
|
||||
\fBprojsync\fP
|
||||
.in +2
|
||||
[–endpoint URL]
|
||||
[–local\-geojson\-file FILENAME]
|
||||
([–user\-writable\-directory] | [–system\-directory] | [–target\-dir DIRNAME])
|
||||
[–bbox west_long,south_lat,east_long,north_lat]
|
||||
[–spatial\-test contains|intersects]
|
||||
[–source\-id ID] [–area\-of\-use NAME]
|
||||
[–file NAME]
|
||||
[–all] [–exclude\-world\-coverage]
|
||||
[–quiet] [–dry\-run] [–list\-files]
|
||||
[\-\-endpoint URL]
|
||||
[\-\-local\-geojson\-file FILENAME]
|
||||
([\-\-user\-writable\-directory] | [\-\-system\-directory] | [\-\-target\-dir DIRNAME])
|
||||
[\-\-bbox west_long,south_lat,east_long,north_lat]
|
||||
[\-\-spatial\-test contains|intersects]
|
||||
[\-\-source\-id ID] [\-\-area\-of\-use NAME]
|
||||
[\-\-file NAME]
|
||||
[\-\-all] [\-\-exclude\-world\-coverage]
|
||||
[\-\-quiet] [\-\-dry\-run] [\-\-list\-files]
|
||||
.in -2
|
||||
.fi
|
||||
.sp
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$id": "https://proj.org/schemas/v0.2/projjson.schema.json",
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"description": "Schema for PROJJSON",
|
||||
"description": "Schema for PROJJSON (v0.2.1)",
|
||||
"$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": [
|
||||
@@ -756,7 +756,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 +912,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" },
|
||||
|
||||
@@ -407,6 +407,10 @@ def fill_grid_transformation(proj_db_cursor):
|
||||
assert param_code[1] == 1048, (code, method_code, param_code[1])
|
||||
interpolation_crs_auth_name = EPSG_AUTHORITY
|
||||
interpolation_crs_code = str(int(param_value[1])) # needed to avoid codes like XXXX.0
|
||||
elif method_code == 1085: # Vertical Offset by Grid Interpolation (asc)
|
||||
assert param_code[1] == 1048, (code, method_code, param_code[1])
|
||||
interpolation_crs_auth_name = EPSG_AUTHORITY
|
||||
interpolation_crs_code = str(int(param_value[1])) # needed to avoid codes like XXXX.0
|
||||
else:
|
||||
assert n_params == 1, (code, method_code)
|
||||
|
||||
@@ -827,6 +831,7 @@ for (name, sql) in proj_db_cursor.fetchall():
|
||||
proj_db_cursor.execute("DROP VIEW " + name)
|
||||
proj_db_cursor.execute(sql.replace('helmert_transformation_table', 'helmert_transformation'))
|
||||
|
||||
proj_db_cursor = proj_db_conn.cursor()
|
||||
proj_db_cursor.execute("ATTACH DATABASE '%s' AS epsg;" % epsg_tmp_db_filename)
|
||||
|
||||
|
||||
|
||||
@@ -541,11 +541,19 @@ config_str = """
|
||||
- XY_Plane_Rotation: EPSG_NAME_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID
|
||||
|
||||
- Goode_Homolosine:
|
||||
WKT2_name: "Goode Homolosine"
|
||||
Params:
|
||||
- WKT2_name: PROJ_WKT2_NAME_METHOD_INTERRUPTED_GOODE_HOMOLOSINE
|
||||
Params:
|
||||
- False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING
|
||||
- False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING
|
||||
- Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN
|
||||
- Option: 1.0
|
||||
|
||||
- WKT2_name: PROJ_WKT2_NAME_METHOD_INTERRUPTED_GOODE_HOMOLOSINE_OCEAN
|
||||
Params:
|
||||
- False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING
|
||||
- False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING
|
||||
- Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN
|
||||
- Option: 2.0
|
||||
|
||||
- Equidistant_Cylindrical_Ellipsoidal:
|
||||
WKT2_name: EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL
|
||||
|
||||
+12
-24
@@ -18,6 +18,15 @@ TOPDIR="$SCRIPT_DIR/.."
|
||||
|
||||
pushd "${TOPDIR}" > /dev/null || exit
|
||||
|
||||
doxygen_version_cmd=$(doxygen --version)
|
||||
# remove extra info after space
|
||||
doxygen_version=${doxygen_version_cmd%% *}
|
||||
|
||||
echo "Doxygen version $doxygen_version"
|
||||
if test $doxygen_version = "1.8.17" ; then
|
||||
echo "Doxygen 1.8.17 is incompatible" && /bin/false;
|
||||
fi
|
||||
|
||||
# HTML generation
|
||||
# Check that doxygen runs warning free
|
||||
rm -rf docs/build/html/
|
||||
@@ -30,40 +39,19 @@ else
|
||||
fi
|
||||
|
||||
|
||||
# XML generation (for Breathe)
|
||||
mkdir -p docs/build/tmp_breathe
|
||||
python scripts/generate_breathe_friendly_general_doc.py
|
||||
rm -rf docs/build/xml/
|
||||
|
||||
# Ugly hack to workaround a bug of Doxygen 1.8.17 that erroneously detect proj_network_get_header_value_cbk_type/ as a variable
|
||||
sed "s/const char\* (\*proj_network_get_header_value_cbk_type/CONST_CHAR\* (\*proj_network_get_header_value_cbk_type/" < src/proj.h > docs/build/tmp_breathe/proj.h
|
||||
|
||||
(cat Doxyfile; printf "GENERATE_HTML=NO\nGENERATE_XML=YES\nINPUT= src/iso19111 include/proj docs/build/tmp_breathe/proj.h src/filemanager.cpp src/networkfilemanager.cpp docs/build/tmp_breathe/general_doc.dox.reworked.h") | doxygen - > docs/build/tmp_breathe/docs_log.txt 2>&1
|
||||
if grep -i warning docs/build/tmp_breathe/docs_log.txt; then
|
||||
echo "Doxygen warnings found" && cat docs/build/tmp_breathe/docs_log.txt && /bin/false;
|
||||
(cat Doxyfile; printf "GENERATE_HTML=NO\nGENERATE_XML=YES\nINPUT= src/iso19111 include/proj src/proj.h src/filemanager.cpp src/networkfilemanager.cpp src/general_doc.dox") | doxygen - > docs/build/docs_log.txt 2>&1
|
||||
if grep -i warning docs/build/docs_log.txt; then
|
||||
echo "Doxygen warnings found" && cat docs/build/docs_log.txt && /bin/false;
|
||||
else
|
||||
echo "No Doxygen warnings found";
|
||||
fi
|
||||
|
||||
for i in ${TOPDIR}/docs/build/xml/*; do
|
||||
|
||||
# Fix Breathe error on Doxygen XML
|
||||
# Type must be either just a name or a typedef-like declaration.
|
||||
# If just a name:
|
||||
# Invalid definition: Expected end of definition. [error at 32]
|
||||
# osgeo::proj::common::MeasurePtr = typedef std::shared_ptr<Measure>
|
||||
sed "s/ = typedef /=/g" < $i > $i.tmp;
|
||||
mv $i.tmp $i
|
||||
done
|
||||
|
||||
# There is a confusion for Breathe between PROJStringFormatter::Convention and WKTFormatter:Convention
|
||||
sed "s/Convention/Convention_/g" < ${TOPDIR}/docs/build/xml/classosgeo_1_1proj_1_1io_1_1WKTFormatter.xml | sed "s/WKT2_2018/_WKT2_2018/g" | sed "s/WKT2_2019/_WKT2_2019/g" | sed "s/WKT2_2015/_WKT2_2015/g" | sed "s/WKT1_GDAL/_WKT1_GDAL/g" | sed "s/WKT1_ESRI/_WKT1_ESRI/g" > ${TOPDIR}/docs/build/xml/classosgeo_1_1proj_1_1io_1_1WKTFormatter.xml.tmp
|
||||
mv ${TOPDIR}/docs/build/xml/classosgeo_1_1proj_1_1io_1_1WKTFormatter.xml.tmp ${TOPDIR}/docs/build/xml/classosgeo_1_1proj_1_1io_1_1WKTFormatter.xml
|
||||
|
||||
# Ugly hack to workaround a bug of Doxygen 1.8.17 that erroneously detect proj_network_get_header_value_cbk_type/ as a variable
|
||||
sed "s/CONST_CHAR/const char/" < ${TOPDIR}/docs/build/xml/proj_8h.xml > ${TOPDIR}/docs/build/xml/proj_8h.xml.tmp
|
||||
mv ${TOPDIR}/docs/build/xml/proj_8h.xml.tmp ${TOPDIR}/docs/build/xml/proj_8h.xml
|
||||
|
||||
# Hack for Breathe 4.17.0 issue that is confused by osgeo::proj::common::UnitOfMeasure::Type::NONE (enumeration value of Type) and osgeo::proj::common::UnitOfMeasure::NONE (member value), whereas 4.16.0 works fine.
|
||||
# Filed as https://github.com/michaeljones/breathe/issues/518
|
||||
sed "s/ <name>NONE<\/name>/ <name>Type::NONE<\/name>/" < ${TOPDIR}/docs/build/xml/classosgeo_1_1proj_1_1common_1_1UnitOfMeasure.xml > ${TOPDIR}/docs/build/xml/classosgeo_1_1proj_1_1common_1_1UnitOfMeasure.xml.tmp
|
||||
|
||||
@@ -1,130 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
###############################################################################
|
||||
# $Id$
|
||||
#
|
||||
# Project: PROJ
|
||||
# Purpose: Rework general_doc.dox in a Breathe friendly (hacky) way
|
||||
# Author: Even Rouault <even.rouault at spatialys.com>
|
||||
#
|
||||
###############################################################################
|
||||
# Copyright (c) 2018, Even Rouault <even.rouault at spatialys.com>
|
||||
#
|
||||
# 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
|
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
# and/or sell copies of the Software, and to permit persons to whom the
|
||||
# Software is furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# 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.
|
||||
###############################################################################
|
||||
|
||||
import os
|
||||
|
||||
# HACK HACK HACK
|
||||
# Transform a .dox with section, subsection, etc.. in fake namespaces
|
||||
# since Breathe cannot handle such sections and references to them
|
||||
|
||||
script_dir_name = os.path.dirname(os.path.realpath(__file__))
|
||||
general_doc_dox = os.path.join(os.path.dirname(
|
||||
script_dir_name), 'src', 'general_doc.dox')
|
||||
general_doc_dox_reworked_h = os.path.join(os.path.dirname(
|
||||
script_dir_name), 'docs/build/tmp_breathe', 'general_doc.dox.reworked.h')
|
||||
|
||||
out = open(general_doc_dox_reworked_h, 'wt')
|
||||
|
||||
|
||||
class Section:
|
||||
|
||||
def __init__(self):
|
||||
self.name = None
|
||||
self.title = None
|
||||
self.content = ''
|
||||
self.children = []
|
||||
pass
|
||||
|
||||
def serialize(self, out):
|
||||
out.write("/** \\brief %s\n" % self.title)
|
||||
out.write("\n")
|
||||
out.write("%s\n" % self.content)
|
||||
out.write("*/\n")
|
||||
out.write("namespace %s {\n" % self.name)
|
||||
out.write("}\n")
|
||||
for child in self.children:
|
||||
child.serialize(out)
|
||||
|
||||
|
||||
stack = []
|
||||
current = None
|
||||
|
||||
for line in open(general_doc_dox, 'rt').readlines():
|
||||
line = line.strip()
|
||||
if line == '/*!' or line == '*/':
|
||||
continue
|
||||
|
||||
if line.startswith('\page'):
|
||||
|
||||
tokens = line.split(' ')
|
||||
new = Section()
|
||||
new.name = tokens[1]
|
||||
new.title = ' '.join(tokens[2:])
|
||||
current = new
|
||||
stack.append(new)
|
||||
continue
|
||||
|
||||
if line.startswith('\section'):
|
||||
|
||||
stack = stack[0:1]
|
||||
current = stack[-1]
|
||||
|
||||
tokens = line.split(' ')
|
||||
new = Section()
|
||||
new.name = tokens[1]
|
||||
new.title = ' '.join(tokens[2:])
|
||||
current.children.append(new)
|
||||
current = new
|
||||
stack.append(new)
|
||||
continue
|
||||
|
||||
if line.startswith('\subsection'):
|
||||
|
||||
stack = stack[0:2]
|
||||
current = stack[-1]
|
||||
|
||||
tokens = line.split(' ')
|
||||
new = Section()
|
||||
new.name = tokens[1]
|
||||
new.title = ' '.join(tokens[2:])
|
||||
current.children.append(new)
|
||||
current = new
|
||||
stack.append(new)
|
||||
continue
|
||||
|
||||
if line.startswith('\subsubsection'):
|
||||
|
||||
stack = stack[0:3]
|
||||
current = stack[-1]
|
||||
|
||||
tokens = line.split(' ')
|
||||
new = Section()
|
||||
new.name = tokens[1]
|
||||
new.title = ' '.join(tokens[2:])
|
||||
current.children.append(new)
|
||||
current = new
|
||||
stack.append(new)
|
||||
continue
|
||||
|
||||
if current:
|
||||
current.content += line + '\n'
|
||||
|
||||
for child in stack[0].children:
|
||||
child.serialize(out)
|
||||
+2
-2
@@ -7,7 +7,7 @@ check_PROGRAMS = geodtest
|
||||
|
||||
AM_CPPFLAGS = -DPROJ_LIB=\"$(pkgdatadir)\" \
|
||||
-DMUTEX_@MUTEX_SETTING@ -I$(top_srcdir)/include @SQLITE3_CFLAGS@ @TIFF_CFLAGS@ @TIFF_ENABLED_FLAGS@ @CURL_CFLAGS@ @CURL_ENABLED_FLAGS@
|
||||
AM_CXXFLAGS = @CXX_WFLAGS@ @FLTO_FLAG@ @TARGET_CLONES_FMA_FLAGS@
|
||||
AM_CXXFLAGS = @CXX_WFLAGS@ @FLTO_FLAG@
|
||||
|
||||
include_HEADERS = proj.h proj_experimental.h proj_constants.h proj_api.h geodesic.h \
|
||||
proj_symbol_rename.h
|
||||
@@ -52,7 +52,7 @@ geodtest_LDADD = libproj.la
|
||||
|
||||
lib_LTLIBRARIES = libproj.la
|
||||
|
||||
libproj_la_LDFLAGS = -no-undefined -version-info 20:0:1
|
||||
libproj_la_LDFLAGS = -no-undefined -version-info 20:1:1
|
||||
libproj_la_LIBADD = @SQLITE3_LIBS@ @TIFF_LIBS@ @CURL_LIBS@
|
||||
|
||||
libproj_la_SOURCES = \
|
||||
|
||||
+300
-99
@@ -344,6 +344,10 @@ const char *proj_context_get_database_path(PJ_CONTEXT *ctx) {
|
||||
const char *proj_context_get_database_metadata(PJ_CONTEXT *ctx,
|
||||
const char *key) {
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!key) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
try {
|
||||
// temporary variable must be used as getDBcontext() might create
|
||||
// ctx->cpp_context
|
||||
@@ -371,7 +375,10 @@ const char *proj_context_get_database_metadata(PJ_CONTEXT *ctx,
|
||||
PJ_GUESSED_WKT_DIALECT proj_context_guess_wkt_dialect(PJ_CONTEXT *ctx,
|
||||
const char *wkt) {
|
||||
(void)ctx;
|
||||
assert(wkt);
|
||||
if (!wkt) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return PJ_GUESSED_NOT_WKT;
|
||||
}
|
||||
switch (WKTParser().guessDialect(wkt)) {
|
||||
case WKTParser::WKTGuessedDialect::WKT2_2019:
|
||||
return PJ_GUESSED_WKT2_2019;
|
||||
@@ -416,6 +423,10 @@ static const char *getOptionValue(const char *option,
|
||||
*/
|
||||
PJ *proj_clone(PJ_CONTEXT *ctx, const PJ *obj) {
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!obj) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
if (!obj->iso_obj) {
|
||||
return nullptr;
|
||||
}
|
||||
@@ -447,7 +458,10 @@ PJ *proj_clone(PJ_CONTEXT *ctx, const PJ *obj) {
|
||||
*/
|
||||
PJ *proj_create(PJ_CONTEXT *ctx, const char *text) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(text);
|
||||
if (!text) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Only connect to proj.db if needed
|
||||
if (strstr(text, "proj=") == nullptr || strstr(text, "init=") != nullptr) {
|
||||
@@ -522,7 +536,10 @@ PJ *proj_create_from_wkt(PJ_CONTEXT *ctx, const char *wkt,
|
||||
PROJ_STRING_LIST *out_warnings,
|
||||
PROJ_STRING_LIST *out_grammar_errors) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(wkt);
|
||||
if (!wkt) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (out_warnings) {
|
||||
*out_warnings = nullptr;
|
||||
@@ -633,10 +650,12 @@ PJ *proj_create_from_database(PJ_CONTEXT *ctx, const char *auth_name,
|
||||
const char *code, PJ_CATEGORY category,
|
||||
int usePROJAlternativeGridNames,
|
||||
const char *const *options) {
|
||||
assert(auth_name);
|
||||
assert(code);
|
||||
(void)options;
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!auth_name || !code) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
(void)options;
|
||||
try {
|
||||
const std::string codeStr(code);
|
||||
auto factory = AuthorityFactory::create(getDBcontext(ctx), auth_name);
|
||||
@@ -732,9 +751,12 @@ int proj_uom_get_info_from_database(PJ_CONTEXT *ctx, const char *auth_name,
|
||||
const char *code, const char **out_name,
|
||||
double *out_conv_factor,
|
||||
const char **out_category) {
|
||||
assert(auth_name);
|
||||
assert(code);
|
||||
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!auth_name || !code) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
auto factory = AuthorityFactory::create(getDBcontext(ctx), auth_name);
|
||||
auto obj = factory->createUnitOfMeasure(code);
|
||||
@@ -782,8 +804,11 @@ int PROJ_DLL proj_grid_get_info_from_database(
|
||||
PJ_CONTEXT *ctx, const char *grid_name, const char **out_full_name,
|
||||
const char **out_package_name, const char **out_url,
|
||||
int *out_direct_download, int *out_open_license, int *out_available) {
|
||||
assert(grid_name);
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!grid_name) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
auto db_context = getDBcontext(ctx);
|
||||
bool direct_download;
|
||||
@@ -837,9 +862,11 @@ PJ_OBJ_LIST *proj_query_geodetic_crs_from_datum(PJ_CONTEXT *ctx,
|
||||
const char *datum_auth_name,
|
||||
const char *datum_code,
|
||||
const char *crs_type) {
|
||||
assert(datum_auth_name);
|
||||
assert(datum_code);
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!datum_auth_name || !datum_code) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
try {
|
||||
auto factory = AuthorityFactory::create(
|
||||
getDBcontext(ctx), crs_auth_name ? crs_auth_name : "");
|
||||
@@ -988,11 +1015,13 @@ PJ_OBJ_LIST *proj_create_from_name(PJ_CONTEXT *ctx, const char *auth_name,
|
||||
int approximateMatch,
|
||||
size_t limitResultCount,
|
||||
const char *const *options) {
|
||||
assert(searchedName);
|
||||
assert((types != nullptr && typesCount > 0) ||
|
||||
(types == nullptr && typesCount == 0));
|
||||
(void)options;
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!searchedName || (types != nullptr && typesCount <= 0) ||
|
||||
(types == nullptr && typesCount > 0)) {
|
||||
proj_log_error(ctx, __FUNCTION__, "invalid input");
|
||||
return nullptr;
|
||||
}
|
||||
(void)options;
|
||||
try {
|
||||
auto factory = AuthorityFactory::create(getDBcontext(ctx),
|
||||
auth_name ? auth_name : "");
|
||||
@@ -1028,8 +1057,7 @@ PJ_OBJ_LIST *proj_create_from_name(PJ_CONTEXT *ctx, const char *auth_name,
|
||||
* @return its type.
|
||||
*/
|
||||
PJ_TYPE proj_get_type(const PJ *obj) {
|
||||
assert(obj);
|
||||
if (!obj->iso_obj) {
|
||||
if (!obj || !obj->iso_obj) {
|
||||
return PJ_TYPE_UNKNOWN;
|
||||
}
|
||||
auto ptr = obj->iso_obj.get();
|
||||
@@ -1125,8 +1153,7 @@ PJ_TYPE proj_get_type(const PJ *obj) {
|
||||
* @return TRUE if it is deprecated, FALSE otherwise
|
||||
*/
|
||||
int proj_is_deprecated(const PJ *obj) {
|
||||
assert(obj);
|
||||
if (!obj->iso_obj) {
|
||||
if (!obj || !obj->iso_obj) {
|
||||
return false;
|
||||
}
|
||||
return obj->iso_obj->isDeprecated();
|
||||
@@ -1143,8 +1170,11 @@ int proj_is_deprecated(const PJ *obj) {
|
||||
* proj_list_destroy(), or NULL in case of error.
|
||||
*/
|
||||
PJ_OBJ_LIST *proj_get_non_deprecated(PJ_CONTEXT *ctx, const PJ *obj) {
|
||||
assert(obj);
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!obj) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto crs = dynamic_cast<const CRS *>(obj->iso_obj.get());
|
||||
if (!crs) {
|
||||
return nullptr;
|
||||
@@ -1169,15 +1199,16 @@ PJ_OBJ_LIST *proj_get_non_deprecated(PJ_CONTEXT *ctx, const PJ *obj) {
|
||||
static int proj_is_equivalent_to_internal(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
const PJ *other,
|
||||
PJ_COMPARISON_CRITERION criterion) {
|
||||
assert(obj);
|
||||
assert(other);
|
||||
if (!obj->iso_obj) {
|
||||
return false;
|
||||
}
|
||||
if (!other->iso_obj) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!obj || !other) {
|
||||
if (ctx) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (!obj->iso_obj || !other->iso_obj) {
|
||||
return false;
|
||||
}
|
||||
const auto cppCriterion = ([](PJ_COMPARISON_CRITERION l_criterion) {
|
||||
switch (l_criterion) {
|
||||
case PJ_COMP_STRICT:
|
||||
@@ -1243,7 +1274,9 @@ int proj_is_equivalent_to_with_ctx(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
* @param obj Object (must not be NULL)
|
||||
*/
|
||||
int proj_is_crs(const PJ *obj) {
|
||||
assert(obj);
|
||||
if (!obj) {
|
||||
return false;
|
||||
}
|
||||
return dynamic_cast<CRS *>(obj->iso_obj.get()) != nullptr;
|
||||
}
|
||||
|
||||
@@ -1257,8 +1290,7 @@ int proj_is_crs(const PJ *obj) {
|
||||
* @return a string, or NULL in case of error or missing name.
|
||||
*/
|
||||
const char *proj_get_name(const PJ *obj) {
|
||||
assert(obj);
|
||||
if (!obj->iso_obj) {
|
||||
if (!obj || !obj->iso_obj) {
|
||||
return nullptr;
|
||||
}
|
||||
const auto &desc = obj->iso_obj->name()->description();
|
||||
@@ -1280,8 +1312,7 @@ const char *proj_get_name(const PJ *obj) {
|
||||
* @return a string, or NULL in case of error.
|
||||
*/
|
||||
const char *proj_get_remarks(const PJ *obj) {
|
||||
assert(obj);
|
||||
if (!obj->iso_obj) {
|
||||
if (!obj || !obj->iso_obj) {
|
||||
return nullptr;
|
||||
}
|
||||
// The object will still be alive after the function call.
|
||||
@@ -1300,8 +1331,7 @@ const char *proj_get_remarks(const PJ *obj) {
|
||||
* @return a string, or NULL in case of error or missing name.
|
||||
*/
|
||||
const char *proj_get_id_auth_name(const PJ *obj, int index) {
|
||||
assert(obj);
|
||||
if (!obj->iso_obj) {
|
||||
if (!obj || !obj->iso_obj) {
|
||||
return nullptr;
|
||||
}
|
||||
const auto &ids = obj->iso_obj->identifiers();
|
||||
@@ -1328,8 +1358,7 @@ const char *proj_get_id_auth_name(const PJ *obj, int index) {
|
||||
* @return a string, or NULL in case of error or missing name.
|
||||
*/
|
||||
const char *proj_get_id_code(const PJ *obj, int index) {
|
||||
assert(obj);
|
||||
if (!obj->iso_obj) {
|
||||
if (!obj || !obj->iso_obj) {
|
||||
return nullptr;
|
||||
}
|
||||
const auto &ids = obj->iso_obj->identifiers();
|
||||
@@ -1370,7 +1399,10 @@ const char *proj_get_id_code(const PJ *obj, int index) {
|
||||
const char *proj_as_wkt(PJ_CONTEXT *ctx, const PJ *obj, PJ_WKT_TYPE type,
|
||||
const char *const *options) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(obj);
|
||||
if (!obj) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
if (!obj->iso_obj) {
|
||||
return nullptr;
|
||||
}
|
||||
@@ -1462,7 +1494,10 @@ const char *proj_as_proj_string(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
PJ_PROJ_STRING_TYPE type,
|
||||
const char *const *options) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(obj);
|
||||
if (!obj) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto exportable =
|
||||
dynamic_cast<const IPROJStringExportable *>(obj->iso_obj.get());
|
||||
if (!exportable) {
|
||||
@@ -1540,7 +1575,10 @@ const char *proj_as_proj_string(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
const char *proj_as_projjson(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
const char *const *options) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(obj);
|
||||
if (!obj) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto exportable = dynamic_cast<const IJSONExportable *>(obj->iso_obj.get());
|
||||
if (!exportable) {
|
||||
proj_log_error(ctx, __FUNCTION__, "Object type not exportable to JSON");
|
||||
@@ -1585,8 +1623,7 @@ const char *proj_as_projjson(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
* @return a string, or NULL in case of error or missing scope.
|
||||
*/
|
||||
const char *proj_get_scope(const PJ *obj) {
|
||||
assert(obj);
|
||||
if (!obj->iso_obj) {
|
||||
if (!obj || !obj->iso_obj) {
|
||||
return nullptr;
|
||||
}
|
||||
auto objectUsage = dynamic_cast<const ObjectUsage *>(obj->iso_obj.get());
|
||||
@@ -1697,7 +1734,10 @@ int proj_get_area_of_use(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
|
||||
static const GeodeticCRS *extractGeodeticCRS(PJ_CONTEXT *ctx, const PJ *crs,
|
||||
const char *fname) {
|
||||
assert(crs);
|
||||
if (!crs) {
|
||||
proj_log_error(ctx, fname, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto l_crs = dynamic_cast<const CRS *>(crs->iso_obj.get());
|
||||
if (!l_crs) {
|
||||
proj_log_error(ctx, fname, "Object is not a CRS");
|
||||
@@ -1751,7 +1791,10 @@ PJ *proj_crs_get_geodetic_crs(PJ_CONTEXT *ctx, const PJ *crs) {
|
||||
*/
|
||||
PJ *proj_crs_get_sub_crs(PJ_CONTEXT *ctx, const PJ *crs, int index) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(crs);
|
||||
if (!crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto l_crs = dynamic_cast<CompoundCRS *>(crs->iso_obj.get());
|
||||
if (!l_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "Object is not a CompoundCRS");
|
||||
@@ -1782,9 +1825,10 @@ PJ *proj_crs_get_sub_crs(PJ_CONTEXT *ctx, const PJ *crs, int index) {
|
||||
PJ *proj_crs_create_bound_crs(PJ_CONTEXT *ctx, const PJ *base_crs,
|
||||
const PJ *hub_crs, const PJ *transformation) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(base_crs);
|
||||
assert(hub_crs);
|
||||
assert(transformation);
|
||||
if (!base_crs || !hub_crs || !transformation) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto l_base_crs = std::dynamic_pointer_cast<CRS>(base_crs->iso_obj);
|
||||
if (!l_base_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "base_crs is not a CRS");
|
||||
@@ -1840,7 +1884,10 @@ PJ *proj_crs_create_bound_crs(PJ_CONTEXT *ctx, const PJ *base_crs,
|
||||
PJ *proj_crs_create_bound_crs_to_WGS84(PJ_CONTEXT *ctx, const PJ *crs,
|
||||
const char *const *options) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(crs);
|
||||
if (!crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto l_crs = dynamic_cast<const CRS *>(crs->iso_obj.get());
|
||||
if (!l_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "Object is not a CRS");
|
||||
@@ -1903,9 +1950,10 @@ PJ *proj_crs_create_bound_vertical_crs(PJ_CONTEXT *ctx, const PJ *vert_crs,
|
||||
const PJ *hub_geographic_3D_crs,
|
||||
const char *grid_name) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(vert_crs);
|
||||
assert(hub_geographic_3D_crs);
|
||||
assert(grid_name);
|
||||
if (!vert_crs || !hub_geographic_3D_crs || !grid_name) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto l_crs = std::dynamic_pointer_cast<VerticalCRS>(vert_crs->iso_obj);
|
||||
if (!l_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "vert_crs is not a VerticalCRS");
|
||||
@@ -2028,7 +2076,10 @@ int proj_ellipsoid_get_parameters(PJ_CONTEXT *ctx, const PJ *ellipsoid,
|
||||
int *out_is_semi_minor_computed,
|
||||
double *out_inv_flattening) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(ellipsoid);
|
||||
if (!ellipsoid) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return FALSE;
|
||||
}
|
||||
auto l_ellipsoid =
|
||||
dynamic_cast<const Ellipsoid *>(ellipsoid->iso_obj.get());
|
||||
if (!l_ellipsoid) {
|
||||
@@ -2106,7 +2157,10 @@ int proj_prime_meridian_get_parameters(PJ_CONTEXT *ctx,
|
||||
double *out_unit_conv_factor,
|
||||
const char **out_unit_name) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(prime_meridian);
|
||||
if (!prime_meridian) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return false;
|
||||
}
|
||||
auto l_pm =
|
||||
dynamic_cast<const PrimeMeridian *>(prime_meridian->iso_obj.get());
|
||||
if (!l_pm) {
|
||||
@@ -2143,7 +2197,9 @@ int proj_prime_meridian_get_parameters(PJ_CONTEXT *ctx,
|
||||
*/
|
||||
PJ *proj_get_source_crs(PJ_CONTEXT *ctx, const PJ *obj) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(obj);
|
||||
if (!obj) {
|
||||
return nullptr;
|
||||
}
|
||||
auto ptr = obj->iso_obj.get();
|
||||
auto boundCRS = dynamic_cast<const BoundCRS *>(ptr);
|
||||
if (boundCRS) {
|
||||
@@ -2186,7 +2242,10 @@ PJ *proj_get_source_crs(PJ_CONTEXT *ctx, const PJ *obj) {
|
||||
*/
|
||||
PJ *proj_get_target_crs(PJ_CONTEXT *ctx, const PJ *obj) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(obj);
|
||||
if (!obj) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto ptr = obj->iso_obj.get();
|
||||
auto boundCRS = dynamic_cast<const BoundCRS *>(ptr);
|
||||
if (boundCRS) {
|
||||
@@ -2267,7 +2326,10 @@ PJ_OBJ_LIST *proj_identify(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
const char *auth_name, const char *const *options,
|
||||
int **out_confidence) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(obj);
|
||||
if (!obj) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
(void)options;
|
||||
if (out_confidence) {
|
||||
*out_confidence = nullptr;
|
||||
@@ -2359,8 +2421,11 @@ PROJ_STRING_LIST proj_get_codes_from_database(PJ_CONTEXT *ctx,
|
||||
const char *auth_name,
|
||||
PJ_TYPE type,
|
||||
int allow_deprecated) {
|
||||
assert(auth_name);
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!auth_name) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
try {
|
||||
auto factory = AuthorityFactory::create(getDBcontext(ctx), auth_name);
|
||||
bool valid = false;
|
||||
@@ -2431,9 +2496,9 @@ void proj_get_crs_list_parameters_destroy(PROJ_CRS_LIST_PARAMETERS *params) {
|
||||
* entry is NULL. This array should be freed with proj_crs_info_list_destroy()
|
||||
*
|
||||
* When no filter parameters are set, this is functionnaly equivalent to
|
||||
* proj_get_crs_info_list_from_database(), instantiating a PJ* object for each
|
||||
* of the proj_create_from_database() and retrieving information with the
|
||||
* various getters. However this function will be much faster.
|
||||
* proj_get_codes_from_database(), instantiating a PJ* object for each
|
||||
* of the codes with proj_create_from_database() and retrieving information
|
||||
* with the various getters. However this function will be much faster.
|
||||
*
|
||||
* @param ctx PROJ context, or NULL for default context
|
||||
* @param auth_name Authority name, used to restrict the search.
|
||||
@@ -2713,7 +2778,10 @@ void proj_unit_list_destroy(PROJ_UNIT_INFO **list) {
|
||||
*/
|
||||
PJ *proj_crs_get_coordoperation(PJ_CONTEXT *ctx, const PJ *crs) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(crs);
|
||||
if (!crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
SingleOperationPtr co;
|
||||
|
||||
auto derivedCRS = dynamic_cast<const DerivedCRS *>(crs->iso_obj.get());
|
||||
@@ -2754,8 +2822,10 @@ int proj_coordoperation_get_method_info(PJ_CONTEXT *ctx,
|
||||
const char **out_method_auth_name,
|
||||
const char **out_method_code) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(coordoperation);
|
||||
|
||||
if (!coordoperation) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return false;
|
||||
}
|
||||
auto singleOp =
|
||||
dynamic_cast<const SingleOperation *>(coordoperation->iso_obj.get());
|
||||
if (!singleOp) {
|
||||
@@ -3286,9 +3356,11 @@ PJ *proj_create_vertical_crs_ex(
|
||||
PJ *proj_create_compound_crs(PJ_CONTEXT *ctx, const char *crs_name,
|
||||
PJ *horiz_crs, PJ *vert_crs) {
|
||||
|
||||
assert(horiz_crs);
|
||||
assert(vert_crs);
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!horiz_crs || !vert_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto l_horiz_crs = std::dynamic_pointer_cast<CRS>(horiz_crs->iso_obj);
|
||||
if (!l_horiz_crs) {
|
||||
return nullptr;
|
||||
@@ -3327,6 +3399,10 @@ PJ *proj_create_compound_crs(PJ_CONTEXT *ctx, const char *crs_name,
|
||||
*/
|
||||
PJ PROJ_DLL *proj_alter_name(PJ_CONTEXT *ctx, const PJ *obj, const char *name) {
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!obj || !name) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto crs = dynamic_cast<const CRS *>(obj->iso_obj.get());
|
||||
if (!crs) {
|
||||
return nullptr;
|
||||
@@ -3360,6 +3436,10 @@ PJ PROJ_DLL *proj_alter_name(PJ_CONTEXT *ctx, const PJ *obj, const char *name) {
|
||||
PJ PROJ_DLL *proj_alter_id(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
const char *auth_name, const char *code) {
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!obj || !auth_name || !code) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto crs = dynamic_cast<const CRS *>(obj->iso_obj.get());
|
||||
if (!crs) {
|
||||
return nullptr;
|
||||
@@ -3396,6 +3476,10 @@ PJ PROJ_DLL *proj_alter_id(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
PJ *proj_crs_alter_geodetic_crs(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
const PJ *new_geod_crs) {
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!obj || !new_geod_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto l_new_geod_crs =
|
||||
std::dynamic_pointer_cast<GeodeticCRS>(new_geod_crs->iso_obj);
|
||||
if (!l_new_geod_crs) {
|
||||
@@ -3505,6 +3589,10 @@ PJ *proj_crs_alter_cs_linear_unit(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
const char *unit_auth_name,
|
||||
const char *unit_code) {
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!obj) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto crs = dynamic_cast<const CRS *>(obj->iso_obj.get());
|
||||
if (!crs) {
|
||||
return nullptr;
|
||||
@@ -3553,6 +3641,10 @@ PJ *proj_crs_alter_parameters_linear_unit(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
const char *unit_code,
|
||||
int convert_to_new_unit) {
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!obj) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto crs = dynamic_cast<const ProjectedCRS *>(obj->iso_obj.get());
|
||||
if (!crs) {
|
||||
return nullptr;
|
||||
@@ -3594,6 +3686,10 @@ PJ *proj_crs_alter_parameters_linear_unit(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
PJ *proj_crs_promote_to_3D(PJ_CONTEXT *ctx, const char *crs_3D_name,
|
||||
const PJ *crs_2D) {
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!crs_2D) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto cpp_2D_crs = dynamic_cast<const CRS *>(crs_2D->iso_obj.get());
|
||||
if (!cpp_2D_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "crs_2D is not a CRS");
|
||||
@@ -3651,6 +3747,10 @@ PJ *proj_crs_create_projected_3D_crs_from_2D(PJ_CONTEXT *ctx,
|
||||
const PJ *projected_2D_crs,
|
||||
const PJ *geog_3D_crs) {
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!projected_2D_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto cpp_projected_2D_crs =
|
||||
dynamic_cast<const ProjectedCRS *>(projected_2D_crs->iso_obj.get());
|
||||
if (!cpp_projected_2D_crs) {
|
||||
@@ -3736,6 +3836,10 @@ PJ *proj_crs_create_projected_3D_crs_from_2D(PJ_CONTEXT *ctx,
|
||||
PJ *proj_crs_demote_to_2D(PJ_CONTEXT *ctx, const char *crs_2D_name,
|
||||
const PJ *crs_3D) {
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!crs_3D) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto cpp_3D_crs = dynamic_cast<const CRS *>(crs_3D->iso_obj.get());
|
||||
if (!cpp_3D_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "crs_3D is not a CRS");
|
||||
@@ -3942,8 +4046,10 @@ PJ *proj_create_transformation(PJ_CONTEXT *ctx, const char *name,
|
||||
const PJ_PARAM_DESCRIPTION *params,
|
||||
double accuracy) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(source_crs);
|
||||
assert(target_crs);
|
||||
if (!source_crs || !target_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
auto l_sourceCRS = std::dynamic_pointer_cast<CRS>(source_crs->iso_obj);
|
||||
if (!l_sourceCRS) {
|
||||
@@ -4025,6 +4131,10 @@ PJ *proj_convert_conversion_to_other_method(PJ_CONTEXT *ctx,
|
||||
int new_method_epsg_code,
|
||||
const char *new_method_name) {
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!conversion) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto conv = dynamic_cast<const Conversion *>(conversion->iso_obj.get());
|
||||
if (!conv) {
|
||||
proj_log_error(ctx, __FUNCTION__, "not a Conversion");
|
||||
@@ -4122,6 +4232,7 @@ static CoordinateSystemAxisNNPtr createAxis(const PJ_AXIS_DESCRIPTION &axis) {
|
||||
|
||||
PJ *proj_create_cs(PJ_CONTEXT *ctx, PJ_COORDINATE_SYSTEM_TYPE type,
|
||||
int axis_count, const PJ_AXIS_DESCRIPTION *axis) {
|
||||
SANITIZE_CTX(ctx);
|
||||
try {
|
||||
switch (type) {
|
||||
case PJ_CS_TYPE_UNKNOWN:
|
||||
@@ -4250,6 +4361,7 @@ PJ *proj_create_cs(PJ_CONTEXT *ctx, PJ_COORDINATE_SYSTEM_TYPE type,
|
||||
PJ *proj_create_cartesian_2D_cs(PJ_CONTEXT *ctx, PJ_CARTESIAN_CS_2D_TYPE type,
|
||||
const char *unit_name,
|
||||
double unit_conv_factor) {
|
||||
SANITIZE_CTX(ctx);
|
||||
try {
|
||||
switch (type) {
|
||||
case PJ_CART2D_EASTING_NORTHING:
|
||||
@@ -4304,6 +4416,7 @@ PJ *proj_create_ellipsoidal_2D_cs(PJ_CONTEXT *ctx,
|
||||
PJ_ELLIPSOIDAL_CS_2D_TYPE type,
|
||||
const char *unit_name,
|
||||
double unit_conv_factor) {
|
||||
SANITIZE_CTX(ctx);
|
||||
try {
|
||||
switch (type) {
|
||||
case PJ_ELLPS2D_LONGITUDE_LATITUDE:
|
||||
@@ -4350,6 +4463,7 @@ PJ *proj_create_ellipsoidal_3D_cs(PJ_CONTEXT *ctx,
|
||||
double horizontal_angular_unit_conv_factor,
|
||||
const char *vertical_linear_unit_name,
|
||||
double vertical_linear_unit_conv_factor) {
|
||||
SANITIZE_CTX(ctx);
|
||||
try {
|
||||
switch (type) {
|
||||
case PJ_ELLPS3D_LONGITUDE_LATITUDE_HEIGHT:
|
||||
@@ -4396,6 +4510,10 @@ PJ *proj_create_projected_crs(PJ_CONTEXT *ctx, const char *crs_name,
|
||||
const PJ *geodetic_crs, const PJ *conversion,
|
||||
const PJ *coordinate_system) {
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!geodetic_crs || !conversion || !coordinate_system) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto geodCRS =
|
||||
std::dynamic_pointer_cast<GeodeticCRS>(geodetic_crs->iso_obj);
|
||||
if (!geodCRS) {
|
||||
@@ -6723,7 +6841,10 @@ PJ *proj_create_conversion_pole_rotation_grib_convention(
|
||||
int proj_coordoperation_is_instantiable(PJ_CONTEXT *ctx,
|
||||
const PJ *coordoperation) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(coordoperation);
|
||||
if (!coordoperation) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return false;
|
||||
}
|
||||
auto op = dynamic_cast<const CoordinateOperation *>(
|
||||
coordoperation->iso_obj.get());
|
||||
if (!op) {
|
||||
@@ -6769,7 +6890,10 @@ int proj_coordoperation_is_instantiable(PJ_CONTEXT *ctx,
|
||||
int proj_coordoperation_has_ballpark_transformation(PJ_CONTEXT *ctx,
|
||||
const PJ *coordoperation) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(coordoperation);
|
||||
if (!coordoperation) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return false;
|
||||
}
|
||||
auto op = dynamic_cast<const CoordinateOperation *>(
|
||||
coordoperation->iso_obj.get());
|
||||
if (!op) {
|
||||
@@ -6792,7 +6916,10 @@ int proj_coordoperation_has_ballpark_transformation(PJ_CONTEXT *ctx,
|
||||
int proj_coordoperation_get_param_count(PJ_CONTEXT *ctx,
|
||||
const PJ *coordoperation) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(coordoperation);
|
||||
if (!coordoperation) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return false;
|
||||
}
|
||||
auto op =
|
||||
dynamic_cast<const SingleOperation *>(coordoperation->iso_obj.get());
|
||||
if (!op) {
|
||||
@@ -6817,8 +6944,10 @@ int proj_coordoperation_get_param_index(PJ_CONTEXT *ctx,
|
||||
const PJ *coordoperation,
|
||||
const char *name) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(coordoperation);
|
||||
assert(name);
|
||||
if (!coordoperation || !name) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return -1;
|
||||
}
|
||||
auto op =
|
||||
dynamic_cast<const SingleOperation *>(coordoperation->iso_obj.get());
|
||||
if (!op) {
|
||||
@@ -6876,7 +7005,10 @@ int proj_coordoperation_get_param(
|
||||
const char **out_unit_name, const char **out_unit_auth_name,
|
||||
const char **out_unit_code, const char **out_unit_category) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(coordoperation);
|
||||
if (!coordoperation) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return false;
|
||||
}
|
||||
auto op =
|
||||
dynamic_cast<const SingleOperation *>(coordoperation->iso_obj.get());
|
||||
if (!op) {
|
||||
@@ -7002,7 +7134,10 @@ int proj_coordoperation_get_towgs84_values(PJ_CONTEXT *ctx,
|
||||
double *out_values, int value_count,
|
||||
int emit_error_if_incompatible) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(coordoperation);
|
||||
if (!coordoperation) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return false;
|
||||
}
|
||||
auto transf =
|
||||
dynamic_cast<const Transformation *>(coordoperation->iso_obj.get());
|
||||
if (!transf) {
|
||||
@@ -7038,7 +7173,10 @@ int proj_coordoperation_get_towgs84_values(PJ_CONTEXT *ctx,
|
||||
int proj_coordoperation_get_grid_used_count(PJ_CONTEXT *ctx,
|
||||
const PJ *coordoperation) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(coordoperation);
|
||||
if (!coordoperation) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return false;
|
||||
}
|
||||
auto co = dynamic_cast<const CoordinateOperation *>(
|
||||
coordoperation->iso_obj.get());
|
||||
if (!co) {
|
||||
@@ -7234,7 +7372,10 @@ void proj_operation_factory_context_set_desired_accuracy(
|
||||
PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx,
|
||||
double accuracy) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(factory_ctx);
|
||||
if (!factory_ctx) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
factory_ctx->operationContext->setDesiredAccuracy(accuracy);
|
||||
} catch (const std::exception &e) {
|
||||
@@ -7262,7 +7403,10 @@ void proj_operation_factory_context_set_area_of_interest(
|
||||
double west_lon_degree, double south_lat_degree, double east_lon_degree,
|
||||
double north_lat_degree) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(factory_ctx);
|
||||
if (!factory_ctx) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
factory_ctx->operationContext->setAreaOfInterest(
|
||||
Extent::createFromBBOX(west_lon_degree, south_lat_degree,
|
||||
@@ -7288,7 +7432,10 @@ void proj_operation_factory_context_set_crs_extent_use(
|
||||
PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx,
|
||||
PROJ_CRS_EXTENT_USE use) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(factory_ctx);
|
||||
if (!factory_ctx) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
switch (use) {
|
||||
case PJ_CRS_EXTENT_NONE:
|
||||
@@ -7334,7 +7481,10 @@ void PROJ_DLL proj_operation_factory_context_set_spatial_criterion(
|
||||
PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx,
|
||||
PROJ_SPATIAL_CRITERION criterion) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(factory_ctx);
|
||||
if (!factory_ctx) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
switch (criterion) {
|
||||
case PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT:
|
||||
@@ -7368,7 +7518,10 @@ void PROJ_DLL proj_operation_factory_context_set_grid_availability_use(
|
||||
PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx,
|
||||
PROJ_GRID_AVAILABILITY_USE use) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(factory_ctx);
|
||||
if (!factory_ctx) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
switch (use) {
|
||||
case PROJ_GRID_AVAILABILITY_USED_FOR_SORTING:
|
||||
@@ -7415,7 +7568,10 @@ void proj_operation_factory_context_set_use_proj_alternative_grid_names(
|
||||
PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx,
|
||||
int usePROJNames) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(factory_ctx);
|
||||
if (!factory_ctx) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
factory_ctx->operationContext->setUsePROJAlternativeGridNames(
|
||||
usePROJNames != 0);
|
||||
@@ -7448,7 +7604,10 @@ void proj_operation_factory_context_set_allow_use_intermediate_crs(
|
||||
PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx,
|
||||
PROJ_INTERMEDIATE_CRS_USE use) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(factory_ctx);
|
||||
if (!factory_ctx) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
switch (use) {
|
||||
case PROJ_INTERMEDIATE_CRS_USE_ALWAYS:
|
||||
@@ -7486,7 +7645,10 @@ void proj_operation_factory_context_set_allowed_intermediate_crs(
|
||||
PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx,
|
||||
const char *const *list_of_auth_name_codes) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(factory_ctx);
|
||||
if (!factory_ctx) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
std::vector<std::pair<std::string, std::string>> pivots;
|
||||
for (auto iter = list_of_auth_name_codes; iter && iter[0] && iter[1];
|
||||
@@ -7512,7 +7674,10 @@ void proj_operation_factory_context_set_allowed_intermediate_crs(
|
||||
void PROJ_DLL proj_operation_factory_context_set_discard_superseded(
|
||||
PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, int discard) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(factory_ctx);
|
||||
if (!factory_ctx) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
factory_ctx->operationContext->setDiscardSuperseded(discard != 0);
|
||||
} catch (const std::exception &e) {
|
||||
@@ -7532,7 +7697,10 @@ void PROJ_DLL proj_operation_factory_context_set_discard_superseded(
|
||||
void PROJ_DLL proj_operation_factory_context_set_allow_ballpark_transformations(
|
||||
PJ_CONTEXT *ctx, PJ_OPERATION_FACTORY_CONTEXT *factory_ctx, int allow) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(factory_ctx);
|
||||
if (!factory_ctx) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
factory_ctx->operationContext->setAllowBallparkTransformations(allow !=
|
||||
0);
|
||||
@@ -7626,10 +7794,10 @@ proj_create_operations(PJ_CONTEXT *ctx, const PJ *source_crs,
|
||||
const PJ *target_crs,
|
||||
const PJ_OPERATION_FACTORY_CONTEXT *operationContext) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(source_crs);
|
||||
assert(target_crs);
|
||||
assert(operationContext);
|
||||
|
||||
if (!source_crs || !target_crs || !operationContext) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto sourceCRS = std::dynamic_pointer_cast<CRS>(source_crs->iso_obj);
|
||||
if (!sourceCRS) {
|
||||
proj_log_error(ctx, __FUNCTION__, "source_crs is not a CRS");
|
||||
@@ -7713,7 +7881,9 @@ int proj_get_suggested_operation(PJ_CONTEXT *ctx, PJ_OBJ_LIST *operations,
|
||||
* @param result Object of type PJ_OBJ_LIST (must not be NULL)
|
||||
*/
|
||||
int proj_list_get_count(const PJ_OBJ_LIST *result) {
|
||||
assert(result);
|
||||
if (!result) {
|
||||
return 0;
|
||||
}
|
||||
return static_cast<int>(result->objects.size());
|
||||
}
|
||||
|
||||
@@ -7734,7 +7904,10 @@ int proj_list_get_count(const PJ_OBJ_LIST *result) {
|
||||
|
||||
PJ *proj_list_get(PJ_CONTEXT *ctx, const PJ_OBJ_LIST *result, int index) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(result);
|
||||
if (!result) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
if (index < 0 || index >= proj_list_get_count(result)) {
|
||||
proj_log_error(ctx, __FUNCTION__, "Invalid index");
|
||||
return nullptr;
|
||||
@@ -7764,7 +7937,10 @@ void proj_list_destroy(PJ_OBJ_LIST *result) { delete result; }
|
||||
double proj_coordoperation_get_accuracy(PJ_CONTEXT *ctx,
|
||||
const PJ *coordoperation) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(coordoperation);
|
||||
if (!coordoperation) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return -1;
|
||||
}
|
||||
auto co = dynamic_cast<const CoordinateOperation *>(
|
||||
coordoperation->iso_obj.get());
|
||||
if (!co) {
|
||||
@@ -7798,7 +7974,10 @@ double proj_coordoperation_get_accuracy(PJ_CONTEXT *ctx,
|
||||
*/
|
||||
PJ *proj_crs_get_datum(PJ_CONTEXT *ctx, const PJ *crs) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(crs);
|
||||
if (!crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto l_crs = dynamic_cast<const SingleCRS *>(crs->iso_obj.get());
|
||||
if (!l_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "Object is not a SingleCRS");
|
||||
@@ -7826,7 +8005,10 @@ PJ *proj_crs_get_datum(PJ_CONTEXT *ctx, const PJ *crs) {
|
||||
*/
|
||||
PJ *proj_crs_get_coordinate_system(PJ_CONTEXT *ctx, const PJ *crs) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(crs);
|
||||
if (!crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto l_crs = dynamic_cast<const SingleCRS *>(crs->iso_obj.get());
|
||||
if (!l_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "Object is not a SingleCRS");
|
||||
@@ -7845,7 +8027,10 @@ PJ *proj_crs_get_coordinate_system(PJ_CONTEXT *ctx, const PJ *crs) {
|
||||
*/
|
||||
PJ_COORDINATE_SYSTEM_TYPE proj_cs_get_type(PJ_CONTEXT *ctx, const PJ *cs) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(cs);
|
||||
if (!cs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return PJ_CS_TYPE_UNKNOWN;
|
||||
}
|
||||
auto l_cs = dynamic_cast<const CoordinateSystem *>(cs->iso_obj.get());
|
||||
if (!l_cs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "Object is not a CoordinateSystem");
|
||||
@@ -7891,7 +8076,10 @@ PJ_COORDINATE_SYSTEM_TYPE proj_cs_get_type(PJ_CONTEXT *ctx, const PJ *cs) {
|
||||
*/
|
||||
int proj_cs_get_axis_count(PJ_CONTEXT *ctx, const PJ *cs) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(cs);
|
||||
if (!cs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return -1;
|
||||
}
|
||||
auto l_cs = dynamic_cast<const CoordinateSystem *>(cs->iso_obj.get());
|
||||
if (!l_cs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "Object is not a CoordinateSystem");
|
||||
@@ -7931,7 +8119,10 @@ int proj_cs_get_axis_info(PJ_CONTEXT *ctx, const PJ *cs, int index,
|
||||
const char **out_unit_auth_name,
|
||||
const char **out_unit_code) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(cs);
|
||||
if (!cs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return false;
|
||||
}
|
||||
auto l_cs = dynamic_cast<const CoordinateSystem *>(cs->iso_obj.get());
|
||||
if (!l_cs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "Object is not a CoordinateSystem");
|
||||
@@ -8081,6 +8272,10 @@ PJ *proj_normalize_for_visualization(PJ_CONTEXT *ctx, const PJ *obj) {
|
||||
PJ *proj_coordoperation_create_inverse(PJ_CONTEXT *ctx, const PJ *obj) {
|
||||
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!obj) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto co = dynamic_cast<const CoordinateOperation *>(obj->iso_obj.get());
|
||||
if (!co) {
|
||||
proj_log_error(ctx, __FUNCTION__,
|
||||
@@ -8108,7 +8303,10 @@ PJ *proj_coordoperation_create_inverse(PJ_CONTEXT *ctx, const PJ *obj) {
|
||||
int proj_concatoperation_get_step_count(PJ_CONTEXT *ctx,
|
||||
const PJ *concatoperation) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(concatoperation);
|
||||
if (!concatoperation) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return false;
|
||||
}
|
||||
auto l_co = dynamic_cast<const ConcatenatedOperation *>(
|
||||
concatoperation->iso_obj.get());
|
||||
if (!l_co) {
|
||||
@@ -8138,7 +8336,10 @@ int proj_concatoperation_get_step_count(PJ_CONTEXT *ctx,
|
||||
PJ *proj_concatoperation_get_step(PJ_CONTEXT *ctx, const PJ *concatoperation,
|
||||
int i_step) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(concatoperation);
|
||||
if (!concatoperation) {
|
||||
proj_log_error(ctx, __FUNCTION__, "missing required input");
|
||||
return nullptr;
|
||||
}
|
||||
auto l_co = dynamic_cast<const ConcatenatedOperation *>(
|
||||
concatoperation->iso_obj.get());
|
||||
if (!l_co) {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5642,7 +5642,7 @@ AuthorityFactory::createObjectsFromNameEx(
|
||||
sql += "AND deprecated = 1 ";
|
||||
}
|
||||
if (!approximateMatch) {
|
||||
sql += "AND name LIKE ? ";
|
||||
sql += "AND name = ? COLLATE NOCASE ";
|
||||
params.push_back(searchedNameWithoutDeprecated);
|
||||
}
|
||||
if (d->hasAuthorityRestriction()) {
|
||||
@@ -5672,7 +5672,7 @@ AuthorityFactory::createObjectsFromNameEx(
|
||||
sql += "AND ov.deprecated = 1 ";
|
||||
}
|
||||
if (!approximateMatch) {
|
||||
sql += "AND a.alt_name LIKE ? ";
|
||||
sql += "AND a.alt_name = ? COLLATE NOCASE ";
|
||||
params.push_back(searchedNameWithoutDeprecated);
|
||||
}
|
||||
if (d->hasAuthorityRestriction()) {
|
||||
|
||||
+75
-54
@@ -1535,6 +1535,19 @@ PropertyMap &WKTParser::Private::buildProperties(const WKTNodeNNPtr &node,
|
||||
std::string codeFromAlias;
|
||||
const auto *nodeP = node->GP();
|
||||
const auto &nodeChildren = nodeP->children();
|
||||
|
||||
auto identifiers = ArrayOfBaseObject::create();
|
||||
for (const auto &subNode : nodeChildren) {
|
||||
const auto &subNodeName(subNode->GP()->value());
|
||||
if (ci_equal(subNodeName, WKTConstants::ID) ||
|
||||
ci_equal(subNodeName, WKTConstants::AUTHORITY)) {
|
||||
auto id = buildId(subNode, true, removeInverseOf);
|
||||
if (id) {
|
||||
identifiers->add(NN_NO_CHECK(id));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!nodeChildren.empty()) {
|
||||
const auto &nodeName(nodeP->value());
|
||||
auto name(stripQuotes(nodeChildren[0]));
|
||||
@@ -1547,6 +1560,26 @@ PropertyMap &WKTParser::Private::buildProperties(const WKTNodeNNPtr &node,
|
||||
properties->set(common::IdentifiedObject::DEPRECATED_KEY, true);
|
||||
}
|
||||
|
||||
// Oracle WKT can contain names like
|
||||
// "Reseau Geodesique Francais 1993 (EPSG ID 6171)"
|
||||
// for WKT attributes to the auth_name = "IGN - Paris"
|
||||
// Strip that suffix from the name and assign a true EPSG code to the
|
||||
// object
|
||||
if (identifiers->empty()) {
|
||||
const auto pos = name.find(" (EPSG ID ");
|
||||
if (pos != std::string::npos && name.back() == ')') {
|
||||
const auto code =
|
||||
name.substr(pos + strlen(" (EPSG ID "),
|
||||
name.size() - 1 - pos - strlen(" (EPSG ID "));
|
||||
name.resize(pos);
|
||||
|
||||
PropertyMap propertiesId;
|
||||
propertiesId.set(Identifier::CODESPACE_KEY, Identifier::EPSG);
|
||||
propertiesId.set(Identifier::AUTHORITY_KEY, Identifier::EPSG);
|
||||
identifiers->add(Identifier::create(code, propertiesId));
|
||||
}
|
||||
}
|
||||
|
||||
const char *tableNameForAlias = nullptr;
|
||||
if (ci_equal(nodeName, WKTConstants::GEOGCS)) {
|
||||
if (starts_with(name, "GCS_")) {
|
||||
@@ -1589,17 +1622,6 @@ PropertyMap &WKTParser::Private::buildProperties(const WKTNodeNNPtr &node,
|
||||
properties->set(IdentifiedObject::NAME_KEY, name);
|
||||
}
|
||||
|
||||
auto identifiers = ArrayOfBaseObject::create();
|
||||
for (const auto &subNode : nodeChildren) {
|
||||
const auto &subNodeName(subNode->GP()->value());
|
||||
if (ci_equal(subNodeName, WKTConstants::ID) ||
|
||||
ci_equal(subNodeName, WKTConstants::AUTHORITY)) {
|
||||
auto id = buildId(subNode, true, removeInverseOf);
|
||||
if (id) {
|
||||
identifiers->add(NN_NO_CHECK(id));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (identifiers->empty() && !authNameFromAlias.empty()) {
|
||||
identifiers->add(Identifier::create(
|
||||
codeFromAlias,
|
||||
@@ -2054,7 +2076,7 @@ GeodeticReferenceFrameNNPtr WKTParser::Private::buildGeodeticReferenceFrame(
|
||||
auto &idNode = nodeP->lookForChild(WKTConstants::AUTHORITY);
|
||||
if (!isNull(idNode)) {
|
||||
try {
|
||||
auto id = buildId(idNode, true, false);
|
||||
auto id = buildId(idNode, false, false);
|
||||
auto authFactory2 = AuthorityFactory::create(
|
||||
NN_NO_CHECK(dbContext_), *id->codeSpace());
|
||||
auto dbDatum =
|
||||
@@ -2642,10 +2664,15 @@ WKTParser::Private::buildCS(const WKTNodeNNPtr &node, /* maybe null */
|
||||
}
|
||||
} else if (ci_equal(csType, "temporal")) { // WKT2-2015
|
||||
if (axisCount == 1) {
|
||||
return DateTimeTemporalCS::create(
|
||||
csMap,
|
||||
axisList[0]); // FIXME: there are 3 possible subtypes of
|
||||
// TemporalCS
|
||||
if (isNull(
|
||||
parentNode->GP()->lookForChild(WKTConstants::TIMEUNIT)) &&
|
||||
isNull(parentNode->GP()->lookForChild(WKTConstants::UNIT))) {
|
||||
return DateTimeTemporalCS::create(csMap, axisList[0]);
|
||||
} else {
|
||||
// Default to TemporalMeasureCS
|
||||
// TemporalCount could also be possible
|
||||
return TemporalMeasureCS::create(csMap, axisList[0]);
|
||||
}
|
||||
}
|
||||
} else if (ci_equal(csType, "TemporalDateTime")) { // WKT2-2019
|
||||
if (axisCount == 1) {
|
||||
@@ -3601,6 +3628,7 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard(
|
||||
}
|
||||
foundParameters.resize(countParams);
|
||||
}
|
||||
bool found2ndStdParallel = false;
|
||||
for (const auto &childNode : projCRSNode->GP()->children()) {
|
||||
if (ci_equal(childNode->GP()->value(), WKTConstants::PARAMETER)) {
|
||||
const auto &childNodeChildren = childNode->GP()->children();
|
||||
@@ -3653,6 +3681,10 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard(
|
||||
propertiesParameter.set(Identifier::CODESPACE_KEY,
|
||||
Identifier::EPSG);
|
||||
}
|
||||
if (paramMapping->epsg_code ==
|
||||
EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL) {
|
||||
found2ndStdParallel = true;
|
||||
}
|
||||
}
|
||||
propertiesParameter.set(IdentifiedObject::NAME_KEY, parameterName);
|
||||
parameters.push_back(
|
||||
@@ -3669,6 +3701,14 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard(
|
||||
}
|
||||
}
|
||||
|
||||
// Oracle WKT: make sure that the 2nd std parallel parameter is found to
|
||||
// select the LCC_2SP mapping
|
||||
if (metadata::Identifier::isEquivalentName(wkt1ProjectionName.c_str(),
|
||||
"Lambert Conformal Conic") &&
|
||||
!found2ndStdParallel) {
|
||||
propertiesMethod.set(IdentifiedObject::NAME_KEY, wkt1ProjectionName);
|
||||
}
|
||||
|
||||
// Add back important parameters that should normally be present, but
|
||||
// are sometimes missing. Currently we only deal with Scale factor at
|
||||
// natural origin. This is to avoid a default value of 0 to slip in later.
|
||||
@@ -7872,8 +7912,7 @@ struct PROJStringParser::Private {
|
||||
GeodeticReferenceFrameNNPtr buildDatum(Step &step,
|
||||
const std::string &title);
|
||||
GeographicCRSNNPtr buildGeographicCRS(int iStep, int iUnitConvert,
|
||||
int iAxisSwap, bool ignoreVUnits,
|
||||
bool ignorePROJAxis);
|
||||
int iAxisSwap, bool ignorePROJAxis);
|
||||
GeodeticCRSNNPtr buildGeocentricCRS(int iStep, int iUnitConvert);
|
||||
CRSNNPtr buildProjectedCRS(int iStep, GeographicCRSNNPtr geogCRS,
|
||||
int iUnitConvert, int iAxisSwap);
|
||||
@@ -7888,8 +7927,7 @@ struct PROJStringParser::Private {
|
||||
AxisType axisType, bool ignorePROJAxis);
|
||||
|
||||
EllipsoidalCSNNPtr buildEllipsoidalCS(int iStep, int iUnitConvert,
|
||||
int iAxisSwap, bool ignoreVUnits,
|
||||
bool ignorePROJAxis);
|
||||
int iAxisSwap, bool ignorePROJAxis);
|
||||
};
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -8119,7 +8157,7 @@ static bool isProjectedStep(const std::string &name) {
|
||||
// transformations.
|
||||
if (name == "pipeline" || name == "geoc" || name == "deformation" ||
|
||||
name == "helmert" || name == "hgridshift" || name == "molodensky" ||
|
||||
name == "vgridshit") {
|
||||
name == "vgridshift") {
|
||||
return false;
|
||||
}
|
||||
const auto *operations = proj_list_operations();
|
||||
@@ -8618,10 +8656,8 @@ PROJStringParser::Private::processAxisSwap(Step &step,
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
EllipsoidalCSNNPtr
|
||||
PROJStringParser::Private::buildEllipsoidalCS(int iStep, int iUnitConvert,
|
||||
int iAxisSwap, bool ignoreVUnits,
|
||||
bool ignorePROJAxis) {
|
||||
EllipsoidalCSNNPtr PROJStringParser::Private::buildEllipsoidalCS(
|
||||
int iStep, int iUnitConvert, int iAxisSwap, bool ignorePROJAxis) {
|
||||
auto &step = steps_[iStep];
|
||||
assert(iUnitConvert < 0 ||
|
||||
ci_equal(steps_[iUnitConvert].name, "unitconvert"));
|
||||
@@ -8656,7 +8692,7 @@ PROJStringParser::Private::buildEllipsoidalCS(int iStep, int iUnitConvert,
|
||||
AxisAbbreviation::h, AxisDirection::UP,
|
||||
buildUnit(step, "vunits", "vto_meter"));
|
||||
|
||||
return (!ignoreVUnits && !hasParamValue(step, "geoidgrids") &&
|
||||
return (!hasParamValue(step, "geoidgrids") &&
|
||||
(hasParamValue(step, "vunits") || hasParamValue(step, "vto_meter")))
|
||||
? EllipsoidalCS::create(emptyPropertyMap, axis[0], axis[1], up)
|
||||
: EllipsoidalCS::create(emptyPropertyMap, axis[0], axis[1]);
|
||||
@@ -8683,10 +8719,8 @@ namespace {
|
||||
template <class T> inline void ignoreRetVal(T) {}
|
||||
}
|
||||
|
||||
GeographicCRSNNPtr
|
||||
PROJStringParser::Private::buildGeographicCRS(int iStep, int iUnitConvert,
|
||||
int iAxisSwap, bool ignoreVUnits,
|
||||
bool ignorePROJAxis) {
|
||||
GeographicCRSNNPtr PROJStringParser::Private::buildGeographicCRS(
|
||||
int iStep, int iUnitConvert, int iAxisSwap, bool ignorePROJAxis) {
|
||||
auto &step = steps_[iStep];
|
||||
|
||||
const bool l_isGeographicStep = isGeographicStep(step.name);
|
||||
@@ -8700,8 +8734,8 @@ PROJStringParser::Private::buildGeographicCRS(int iStep, int iUnitConvert,
|
||||
|
||||
auto props = PropertyMap().set(IdentifiedObject::NAME_KEY,
|
||||
title.empty() ? "unknown" : title);
|
||||
auto cs = buildEllipsoidalCS(iStep, iUnitConvert, iAxisSwap, ignoreVUnits,
|
||||
ignorePROJAxis);
|
||||
auto cs =
|
||||
buildEllipsoidalCS(iStep, iUnitConvert, iAxisSwap, ignorePROJAxis);
|
||||
|
||||
if (l_isGeographicStep &&
|
||||
(hasUnusedParameters(step) ||
|
||||
@@ -9257,15 +9291,18 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
return DerivedGeographicCRS::create(
|
||||
PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"),
|
||||
geogCRS, NN_NO_CHECK(conv),
|
||||
buildEllipsoidalCS(iStep, iUnitConvert, iAxisSwap, false,
|
||||
false));
|
||||
buildEllipsoidalCS(iStep, iUnitConvert, iAxisSwap, false));
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<CoordinateSystemAxisNNPtr> axis =
|
||||
processAxisSwap(step, unit, iAxisSwap, axisType, false);
|
||||
|
||||
auto cs = CartesianCS::create(emptyPropertyMap, axis[0], axis[1]);
|
||||
auto csGeogCRS = geogCRS->coordinateSystem();
|
||||
auto cs = csGeogCRS->axisList().size() == 2
|
||||
? CartesianCS::create(emptyPropertyMap, axis[0], axis[1])
|
||||
: CartesianCS::create(emptyPropertyMap, axis[0], axis[1],
|
||||
csGeogCRS->axisList()[2]);
|
||||
|
||||
auto props = PropertyMap().set(IdentifiedObject::NAME_KEY,
|
||||
title.empty() ? "unknown" : title);
|
||||
@@ -9281,19 +9318,6 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
props.set(IdentifiedObject::NAME_KEY, webMercatorName), cs)
|
||||
: ProjectedCRS::create(props, geogCRS, NN_NO_CHECK(conv), cs);
|
||||
|
||||
if (!hasParamValue(step, "geoidgrids") &&
|
||||
(hasParamValue(step, "vunits") || hasParamValue(step, "vto_meter"))) {
|
||||
auto vdatum = VerticalReferenceFrame::create(mapWithUnknownName);
|
||||
|
||||
const UnitOfMeasure vunit = buildUnit(step, "vunits", "vto_meter");
|
||||
|
||||
auto vcrs =
|
||||
VerticalCRS::create(mapWithUnknownName, vdatum,
|
||||
VerticalCS::createGravityRelatedHeight(vunit));
|
||||
|
||||
crs = CompoundCRS::create(mapWithUnknownName,
|
||||
std::vector<CRSNNPtr>{crs, vcrs});
|
||||
}
|
||||
return crs;
|
||||
}
|
||||
|
||||
@@ -9761,13 +9785,11 @@ PROJStringParser::createFromPROJString(const std::string &projString) {
|
||||
iSecondGeogStep < 0 && iProjStep < 0 &&
|
||||
(iFirstUnitConvert < 0 || iSecondUnitConvert < 0) &&
|
||||
(iFirstAxisSwap < 0 || iSecondAxisSwap < 0)) {
|
||||
const bool ignoreVUnits = false;
|
||||
// First run is dry run to mark all recognized/unrecognized tokens
|
||||
for (int iter = 0; iter < 2; iter++) {
|
||||
auto obj = d->buildBoundOrCompoundCRSIfNeeded(
|
||||
0,
|
||||
d->buildGeographicCRS(iFirstGeogStep, iFirstUnitConvert,
|
||||
iFirstAxisSwap, ignoreVUnits, false));
|
||||
0, d->buildGeographicCRS(iFirstGeogStep, iFirstUnitConvert,
|
||||
iFirstAxisSwap, false));
|
||||
if (iter == 1) {
|
||||
return nn_static_pointer_cast<BaseObject>(obj);
|
||||
}
|
||||
@@ -9778,7 +9800,6 @@ PROJStringParser::createFromPROJString(const std::string &projString) {
|
||||
iSecondGeogStep < 0) {
|
||||
if (iFirstGeogStep < 0)
|
||||
iFirstGeogStep = iProjStep;
|
||||
const bool ignoreVUnits = true;
|
||||
// First run is dry run to mark all recognized/unrecognized tokens
|
||||
for (int iter = 0; iter < 2; iter++) {
|
||||
auto obj = d->buildBoundOrCompoundCRSIfNeeded(
|
||||
@@ -9791,7 +9812,7 @@ PROJStringParser::createFromPROJString(const std::string &projString) {
|
||||
: -1,
|
||||
iFirstAxisSwap < iFirstGeogStep ? iFirstAxisSwap
|
||||
: -1,
|
||||
ignoreVUnits, true),
|
||||
true),
|
||||
iFirstUnitConvert < iFirstGeogStep ? iSecondUnitConvert
|
||||
: iFirstUnitConvert,
|
||||
iFirstAxisSwap < iFirstGeogStep ? iSecondAxisSwap
|
||||
|
||||
@@ -303,8 +303,6 @@ source_group("CMake Files" FILES CMakeLists.txt)
|
||||
# Embed PROJ_LIB data files location
|
||||
add_definitions(-DPROJ_LIB="${CMAKE_INSTALL_PREFIX}/${DATADIR}")
|
||||
|
||||
add_definitions(-DTARGET_CLONES_FMA_ALLOWED)
|
||||
|
||||
#################################################
|
||||
## targets: libproj and proj_config.h
|
||||
#################################################
|
||||
|
||||
+1
-1
@@ -172,7 +172,7 @@ extern "C" {
|
||||
/* The version numbers should be updated with every release! **/
|
||||
#define PROJ_VERSION_MAJOR 7
|
||||
#define PROJ_VERSION_MINOR 1
|
||||
#define PROJ_VERSION_PATCH 0
|
||||
#define PROJ_VERSION_PATCH 1
|
||||
|
||||
extern char const PROJ_DLL pj_release[]; /* global release id string */
|
||||
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef PJ_VERSION
|
||||
#define PJ_VERSION 710
|
||||
#define PJ_VERSION 711
|
||||
#endif
|
||||
|
||||
#ifdef PROJ_RENAME_SYMBOLS
|
||||
|
||||
@@ -118,6 +118,9 @@
|
||||
#define PROJ_WKT2_NAME_METHOD_INTERRUPTED_GOODE_HOMOLOSINE \
|
||||
"Interrupted Goode Homolosine"
|
||||
|
||||
#define PROJ_WKT2_NAME_METHOD_INTERRUPTED_GOODE_HOMOLOSINE_OCEAN \
|
||||
"Interrupted Goode Homolosine Ocean"
|
||||
|
||||
#define PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_X \
|
||||
"Geostationary Satellite (Sweep X)"
|
||||
|
||||
|
||||
@@ -66,15 +66,6 @@ struct tmerc_data {
|
||||
/* Constant for "exact" transverse mercator */
|
||||
#define PROJ_ETMERC_ORDER 6
|
||||
|
||||
// Determine if we should try to provide optimized versions for the Fused Multiply Addition
|
||||
// Intel instruction set. We use GCC 6 __attribute__((target_clones("fma","default")))
|
||||
// mechanism for that, where the compiler builds a default version, and one that
|
||||
// uses FMA. And at runtimes it figures out automatically which version can be used
|
||||
// by the current CPU. This allows to create general purpose binaries.
|
||||
#if defined(TARGET_CLONES_FMA_ALLOWED) && defined(__GNUC__) && __GNUC__ >= 6 && defined(__x86_64__) && !defined(__FMA__)
|
||||
#define BUILD_FMA_OPTIMIZED_VERSION
|
||||
#endif
|
||||
|
||||
/*****************************************************************************/
|
||||
//
|
||||
// Approximate Transverse Mercator functions
|
||||
@@ -82,10 +73,7 @@ struct tmerc_data {
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
#ifdef BUILD_FMA_OPTIMIZED_VERSION
|
||||
__attribute__((target_clones("fma","default")))
|
||||
#endif
|
||||
inline static PJ_XY approx_e_fwd_internal (PJ_LP lp, PJ *P)
|
||||
static PJ_XY approx_e_fwd (PJ_LP lp, PJ *P)
|
||||
{
|
||||
PJ_XY xy = {0.0, 0.0};
|
||||
const auto *Q = &(static_cast<struct tmerc_data*>(P->opaque)->approx);
|
||||
@@ -127,11 +115,6 @@ inline static PJ_XY approx_e_fwd_internal (PJ_LP lp, PJ *P)
|
||||
return (xy);
|
||||
}
|
||||
|
||||
static PJ_XY approx_e_fwd (PJ_LP lp, PJ *P)
|
||||
{
|
||||
return approx_e_fwd_internal(lp, P);
|
||||
}
|
||||
|
||||
static PJ_XY approx_s_fwd (PJ_LP lp, PJ *P) {
|
||||
PJ_XY xy = {0.0,0.0};
|
||||
double b, cosphi;
|
||||
@@ -177,10 +160,7 @@ static PJ_XY approx_s_fwd (PJ_LP lp, PJ *P) {
|
||||
return xy;
|
||||
}
|
||||
|
||||
#ifdef BUILD_FMA_OPTIMIZED_VERSION
|
||||
__attribute__((target_clones("fma","default")))
|
||||
#endif
|
||||
inline static PJ_LP approx_e_inv_internal (PJ_XY xy, PJ *P) {
|
||||
static PJ_LP approx_e_inv (PJ_XY xy, PJ *P) {
|
||||
PJ_LP lp = {0.0,0.0};
|
||||
const auto *Q = &(static_cast<struct tmerc_data*>(P->opaque)->approx);
|
||||
|
||||
@@ -212,10 +192,6 @@ inline static PJ_LP approx_e_inv_internal (PJ_XY xy, PJ *P) {
|
||||
return lp;
|
||||
}
|
||||
|
||||
static PJ_LP approx_e_inv (PJ_XY xy, PJ *P) {
|
||||
return approx_e_inv_internal(xy, P);
|
||||
}
|
||||
|
||||
static PJ_LP approx_s_inv (PJ_XY xy, PJ *P) {
|
||||
PJ_LP lp = {0.0, 0.0};
|
||||
double h, g;
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ char const pj_release[] =
|
||||
STR(PROJ_VERSION_MAJOR)"."
|
||||
STR(PROJ_VERSION_MINOR)"."
|
||||
STR(PROJ_VERSION_PATCH)", "
|
||||
"August 1st, 2020";
|
||||
"September 1st, 2020";
|
||||
|
||||
const char *pj_get_release() {
|
||||
return pj_release;
|
||||
|
||||
@@ -373,7 +373,7 @@ static PJ_XYZ helmert_forward_3d (PJ_LPZ lpz, PJ *P) {
|
||||
return point.xyz;
|
||||
}
|
||||
|
||||
if (Q->no_rotation) {
|
||||
if (Q->no_rotation && Q->scale == 0) {
|
||||
point.xyz.x = lpz.lam + Q->xyz.x;
|
||||
point.xyz.y = lpz.phi + Q->xyz.y;
|
||||
point.xyz.z = lpz.z + Q->xyz.z;
|
||||
@@ -413,7 +413,7 @@ static PJ_LPZ helmert_reverse_3d (PJ_XYZ xyz, PJ *P) {
|
||||
return point.lpz;
|
||||
}
|
||||
|
||||
if (Q->no_rotation) {
|
||||
if (Q->no_rotation && Q->scale == 0) {
|
||||
point.xyz.x = xyz.x - Q->xyz.x;
|
||||
point.xyz.y = xyz.y - Q->xyz.y;
|
||||
point.xyz.z = xyz.z - Q->xyz.z;
|
||||
@@ -654,7 +654,7 @@ PJ *TRANSFORMATION(helmert, 0) {
|
||||
Q->scale = Q->scale_0;
|
||||
Q->theta = Q->theta_0;
|
||||
|
||||
if ((Q->opk.o==0) && (Q->opk.p==0) && (Q->opk.k==0) && (Q->scale==0) &&
|
||||
if ((Q->opk.o==0) && (Q->opk.p==0) && (Q->opk.k==0) &&
|
||||
(Q->dopk.o==0) && (Q->dopk.p==0) && (Q->dopk.k==0)) {
|
||||
Q->no_rotation = 1;
|
||||
}
|
||||
@@ -678,10 +678,6 @@ PJ *TRANSFORMATION(helmert, 0) {
|
||||
proj_log_trace(P, "ds= %8.5f t_epoch=%8.5f", Q->dscale, Q->t_epoch);
|
||||
}
|
||||
|
||||
if (Q->no_rotation) {
|
||||
return P;
|
||||
}
|
||||
|
||||
update_parameters(P);
|
||||
build_rot_matrix(P);
|
||||
|
||||
|
||||
+1230
-1218
File diff suppressed because it is too large
Load Diff
+14
-3
@@ -561,7 +561,7 @@ conversion_factor: unsigned_numeric_literal
|
||||
|
||||
// coordinate_system: spatial_cs | temporalcountmeasure_cs | ordinatedatetime_cs
|
||||
|
||||
coordinate_system_scope_extent_identifier_remark: spatial_cs_scope_extent_identifier_remark | temporalcountmeasure_cs_scope_extent_identifier_remark | ordinaldatetime_cs_scope_extent_identifier_remark
|
||||
coordinate_system_scope_extent_identifier_remark: spatial_cs_scope_extent_identifier_remark | wkt2015temporal_cs_scope_extent_identifier_remark | temporalcountmeasure_cs_scope_extent_identifier_remark | ordinaldatetime_cs_scope_extent_identifier_remark
|
||||
|
||||
spatial_cs_scope_extent_identifier_remark: cs_keyword left_delimiter spatial_cs_type
|
||||
wkt_separator dimension
|
||||
@@ -575,6 +575,18 @@ opt_separator_spatial_axis_list_opt_separator_cs_unit_scope_extent_identifier_re
|
||||
| wkt_separator spatial_axis opt_separator_spatial_axis_list_opt_separator_cs_unit_scope_extent_identifier_remark
|
||||
| wkt_separator no_opt_separator_scope_extent_identifier_remark
|
||||
|
||||
wkt2015temporal_cs_scope_extent_identifier_remark: cs_keyword left_delimiter T_TEMPORAL
|
||||
wkt_separator dimension
|
||||
opt_separator_identifier_list
|
||||
right_delimiter
|
||||
wkt_separator temporalcountmeasure_axis
|
||||
opt_separator_cs_unit_scope_extent_identifier_remark
|
||||
|
||||
opt_separator_cs_unit_scope_extent_identifier_remark:
|
||||
| wkt_separator cs_unit
|
||||
| wkt_separator cs_unit wkt_separator no_opt_separator_scope_extent_identifier_remark
|
||||
| wkt_separator no_opt_separator_scope_extent_identifier_remark
|
||||
|
||||
temporalcountmeasure_cs_scope_extent_identifier_remark: cs_keyword left_delimiter temporalcountmeasure_cs_type
|
||||
wkt_separator dimension
|
||||
opt_separator_identifier_list
|
||||
@@ -597,8 +609,7 @@ cs_keyword: T_CS
|
||||
|
||||
spatial_cs_type: T_AFFINE | T_CARTESIAN | T_CYLINDRICAL | T_ELLIPSOIDAL | T_LINEAR | T_PARAMETRIC | T_POLAR | T_SPHERICAL | T_VERTICAL
|
||||
|
||||
// T_TEMPORAL: WKT2_2015
|
||||
temporalcountmeasure_cs_type: T_TEMPORAL | T_TEMPORALCOUNT | T_TEMPORALMEASURE
|
||||
temporalcountmeasure_cs_type: T_TEMPORALCOUNT | T_TEMPORALMEASURE
|
||||
|
||||
ordinaldatetime_cs_type: T_ORDINAL | T_TEMPORALDATETIME
|
||||
|
||||
|
||||
@@ -386,7 +386,7 @@ expect 3370658.18890 711877.42370 5349787.12430 2017.0 # ITRF93@2017.0
|
||||
# from NAD27 (ft) -> NAD83 (m). The paper reports a difference of 0.0014 m from
|
||||
# measured to computed coordinates, hence the test tolerance is set accordingly.
|
||||
-------------------------------------------------------------------------------
|
||||
operation proj=helmert convention=coordinate_frame \
|
||||
operation proj=helmert \
|
||||
x=-9597.3572 y=.6112 \
|
||||
s=0.304794780637 theta=-1.244048
|
||||
-------------------------------------------------------------------------------
|
||||
@@ -416,6 +416,19 @@ accept 3370658.378 711877.314 5349787.086 2018.0
|
||||
expect 3370658.18087 711877.42750 5349787.12648 2018.0
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
# Test case of https://github.com/OSGeo/PROJ/issues/2333
|
||||
-------------------------------------------------------------------------------
|
||||
operation +proj=helmert +x=-0.0019 +y=-0.0017 +z=-0.0105 +s=0.00134 \
|
||||
+dx=0.0001 +dy=0.0001 +dz=-0.0018 +ds=0.00008 +t_epoch=2000.0 \
|
||||
+convention=position_vector
|
||||
-------------------------------------------------------------------------------
|
||||
tolerance 0.1 mm
|
||||
accept 3513638.1938 778956.4525 5248216.4690 2008.75
|
||||
expect 3513638.1999 778956.4533 5248216.4535 2008.75
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
# Test error cases of helmert
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
@@ -2672,6 +2672,28 @@ TEST(crs, projectedCRS_identify_db) {
|
||||
EXPECT_EQ(res.front().first->getEPSGCode(), 3035);
|
||||
EXPECT_EQ(res.front().second, 90);
|
||||
}
|
||||
{
|
||||
// Test case of https://github.com/qgis/QGIS/issues/32255
|
||||
auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT(
|
||||
"PROJCS[\"RGF93_Lambert_93\",GEOGCS[\"GCS_RGF_1993\","
|
||||
"DATUM[\"D_RGF_1993\","
|
||||
"SPHEROID[\"GRS_1980\",6378137.0,298.257222101]],"
|
||||
"PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],"
|
||||
"PROJECTION[\"Lambert_Conformal_Conic\"],"
|
||||
"PARAMETER[\"False_Easting\",700000.0],"
|
||||
"PARAMETER[\"False_Northing\",6600000.0],"
|
||||
"PARAMETER[\"Central_Meridian\",3.0],"
|
||||
"PARAMETER[\"Standard_Parallel_1\",44.0],"
|
||||
"PARAMETER[\"Standard_Parallel_2\",49.0],"
|
||||
"PARAMETER[\"Latitude_Of_Origin\",46.5],UNIT[\"Meter\",1.0]]");
|
||||
auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
|
||||
ASSERT_TRUE(crs != nullptr);
|
||||
auto factoryAll = AuthorityFactory::create(dbContext, std::string());
|
||||
auto res = crs->identify(factoryAll);
|
||||
ASSERT_GE(res.size(), 1U);
|
||||
EXPECT_EQ(res.front().first->getEPSGCode(), 2154);
|
||||
EXPECT_EQ(res.front().second, 90);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
@@ -2782,6 +2782,12 @@ TEST(factory, createObjectsFromName) {
|
||||
}
|
||||
}
|
||||
|
||||
// Exact name, but just not the official case ==> should match with exact
|
||||
// match
|
||||
EXPECT_EQ(factory->createObjectsFromName("WGS 84 / utm zone 31n", {}, false)
|
||||
.size(),
|
||||
1U);
|
||||
|
||||
// Prime meridian
|
||||
EXPECT_EQ(factoryEPSG->createObjectsFromName("Paris", {}, false, 2).size(),
|
||||
1U);
|
||||
|
||||
+113
-21
@@ -1305,13 +1305,6 @@ TEST(wkt_parse, wkt1_krovak_south_west) {
|
||||
EXPECT_EQ(crs2->exportToPROJString(PROJStringFormatter::create().get()),
|
||||
expectedPROJString);
|
||||
|
||||
obj = PROJStringParser().createFromPROJString(
|
||||
"+proj=krovak +czech +type=crs");
|
||||
crs2 = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
|
||||
ASSERT_TRUE(crs2 != nullptr);
|
||||
EXPECT_EQ(crs2->exportToPROJString(PROJStringFormatter::create().get()),
|
||||
expectedPROJString);
|
||||
|
||||
obj = PROJStringParser().createFromPROJString(
|
||||
"+type=crs +proj=pipeline +step +proj=unitconvert +xy_in=deg "
|
||||
"+xy_out=rad "
|
||||
@@ -4013,7 +4006,7 @@ TEST(wkt_parse, TemporalDatum_no_calendar) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(wkt_parse, dateTimeTemporalCRS_WKT2) {
|
||||
TEST(wkt_parse, dateTimeTemporalCRS_WKT2_2015) {
|
||||
auto wkt = "TIMECRS[\"Temporal CRS\",\n"
|
||||
" TDATUM[\"Gregorian calendar\",\n"
|
||||
" TIMEORIGIN[0000-01-01]],\n"
|
||||
@@ -4121,6 +4114,34 @@ TEST(wkt_parse, temporalCountCRSWithoutConvFactor_WKT2_2019) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(wkt_parse, temporalMeasureCRS_WKT2_2015) {
|
||||
auto wkt = "TIMECRS[\"GPS Time\",\n"
|
||||
" TDATUM[\"Time origin\",\n"
|
||||
" TIMEORIGIN[1980-01-01T00:00:00.0Z]],\n"
|
||||
" CS[temporal,1],\n"
|
||||
" AXIS[\"time\",future],\n"
|
||||
" TIMEUNIT[\"day\",86400.0]]";
|
||||
|
||||
auto obj = WKTParser().createFromWKT(wkt);
|
||||
auto crs = nn_dynamic_pointer_cast<TemporalCRS>(obj);
|
||||
ASSERT_TRUE(crs != nullptr);
|
||||
|
||||
EXPECT_EQ(crs->nameStr(), "GPS Time");
|
||||
auto tdatum = crs->datum();
|
||||
EXPECT_EQ(tdatum->nameStr(), "Time origin");
|
||||
EXPECT_EQ(tdatum->temporalOrigin().toString(), "1980-01-01T00:00:00.0Z");
|
||||
EXPECT_TRUE(nn_dynamic_pointer_cast<TemporalMeasureCS>(
|
||||
crs->coordinateSystem()) != nullptr);
|
||||
auto cs = crs->coordinateSystem();
|
||||
ASSERT_EQ(cs->axisList().size(), 1U);
|
||||
auto axis = cs->axisList()[0];
|
||||
EXPECT_EQ(axis->nameStr(), "Time");
|
||||
EXPECT_EQ(axis->unit().name(), "day");
|
||||
EXPECT_EQ(axis->unit().conversionToSI(), 86400.0);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(wkt_parse, temporalMeasureCRSWithoutConvFactor_WKT2_2019) {
|
||||
auto wkt = "TIMECRS[\"Decimal Years CE\",\n"
|
||||
" TIMEDATUM[\"Common Era\",\n"
|
||||
@@ -5326,8 +5347,23 @@ static const struct {
|
||||
}},
|
||||
|
||||
{"Goode_Homolosine",
|
||||
{{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}},
|
||||
"Goode Homolosine",
|
||||
{{"False_Easting", 1},
|
||||
{"False_Northing", 2},
|
||||
{"Central_Meridian", 3},
|
||||
{"Option", 1.0}},
|
||||
"Interrupted Goode Homolosine",
|
||||
{
|
||||
{"Longitude of natural origin", 3},
|
||||
{"False easting", 1},
|
||||
{"False northing", 2},
|
||||
}},
|
||||
|
||||
{"Goode_Homolosine",
|
||||
{{"False_Easting", 1},
|
||||
{"False_Northing", 2},
|
||||
{"Central_Meridian", 3},
|
||||
{"Option", 2.0}},
|
||||
"Interrupted Goode Homolosine Ocean",
|
||||
{
|
||||
{"Longitude of natural origin", 3},
|
||||
{"False easting", 1},
|
||||
@@ -5874,6 +5910,42 @@ TEST(wkt_parse, wkt1_esri_gauss_kruger) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(wkt_parse, wkt1_oracle) {
|
||||
// WKT from mdsys.cs_srs Oracle table
|
||||
auto wkt = "PROJCS[\"RGF93 / Lambert-93\", GEOGCS [ \"RGF93\", "
|
||||
"DATUM [\"Reseau Geodesique Francais 1993 (EPSG ID 6171)\", "
|
||||
"SPHEROID [\"GRS 1980 (EPSG ID 7019)\", 6378137.0, "
|
||||
"298.257222101]], PRIMEM [ \"Greenwich\", 0.000000000 ], "
|
||||
"UNIT [\"Decimal Degree\", 0.0174532925199433]], "
|
||||
"PROJECTION [\"Lambert Conformal Conic\"], "
|
||||
"PARAMETER [\"Latitude_Of_Origin\", 46.5], "
|
||||
"PARAMETER [\"Central_Meridian\", 3.0], "
|
||||
"PARAMETER [\"Standard_Parallel_1\", 49.0], "
|
||||
"PARAMETER [\"Standard_Parallel_2\", 44.0], "
|
||||
"PARAMETER [\"False_Easting\", 700000.0], "
|
||||
"PARAMETER [\"False_Northing\", 6600000.0], "
|
||||
"UNIT [\"Meter\", 1.0]]";
|
||||
|
||||
auto dbContext = DatabaseContext::create();
|
||||
auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT(wkt);
|
||||
auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
|
||||
ASSERT_TRUE(crs != nullptr);
|
||||
|
||||
EXPECT_EQ(crs->baseCRS()->datum()->nameStr(),
|
||||
"Reseau Geodesique Francais 1993");
|
||||
EXPECT_EQ(crs->baseCRS()->datum()->getEPSGCode(), 6171);
|
||||
EXPECT_EQ(crs->derivingConversion()->method()->nameStr(),
|
||||
"Lambert Conic Conformal (2SP)");
|
||||
|
||||
auto factoryAll = AuthorityFactory::create(dbContext, std::string());
|
||||
auto res = crs->identify(factoryAll);
|
||||
ASSERT_GE(res.size(), 1U);
|
||||
EXPECT_EQ(res.front().first->getEPSGCode(), 2154);
|
||||
EXPECT_EQ(res.front().second, 100);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(wkt_parse, invalid) {
|
||||
EXPECT_THROW(WKTParser().createFromWKT(""), ParsingException);
|
||||
EXPECT_THROW(WKTParser().createFromWKT("A"), ParsingException);
|
||||
@@ -8666,6 +8738,33 @@ TEST(io, projparse_krovak_axis_swu) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(io, projparse_krovak_czech) {
|
||||
auto obj = PROJStringParser().createFromPROJString(
|
||||
"+proj=krovak +czech +type=crs");
|
||||
auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
|
||||
ASSERT_TRUE(crs != nullptr);
|
||||
EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()),
|
||||
"+proj=krovak +czech +lat_0=49.5 +lon_0=24.8333333333333 "
|
||||
"+alpha=30.2881397527778 +k=0.9999 +x_0=0 +y_0=0 "
|
||||
"+ellps=bessel +units=m +no_defs +type=crs");
|
||||
WKTFormatterNNPtr f(WKTFormatter::create());
|
||||
f->simulCurNodeHasId();
|
||||
f->setMultiLine(false);
|
||||
crs->exportToWKT(f.get());
|
||||
auto wkt = f->toString();
|
||||
EXPECT_TRUE(wkt.find("METHOD[\"Krovak\",ID[\"EPSG\",9819]]") !=
|
||||
std::string::npos)
|
||||
<< wkt;
|
||||
EXPECT_TRUE(wkt.find(",AXIS[\"westing\",west,ORDER[1]") !=
|
||||
std::string::npos)
|
||||
<< wkt;
|
||||
EXPECT_TRUE(wkt.find(",AXIS[\"southing\",south,ORDER[2]") !=
|
||||
std::string::npos)
|
||||
<< wkt;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(io, projparse_etmerc) {
|
||||
auto obj =
|
||||
PROJStringParser().createFromPROJString("+proj=etmerc +type=crs");
|
||||
@@ -9253,18 +9352,11 @@ TEST(io, projparse_projected_to_meter_unknown) {
|
||||
TEST(io, projparse_projected_vunits) {
|
||||
auto obj = PROJStringParser().createFromPROJString(
|
||||
"+proj=tmerc +vunits=ft +type=crs");
|
||||
auto crs = nn_dynamic_pointer_cast<CompoundCRS>(obj);
|
||||
auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
|
||||
ASSERT_TRUE(crs != nullptr);
|
||||
WKTFormatterNNPtr f(WKTFormatter::create());
|
||||
f->simulCurNodeHasId();
|
||||
f->setMultiLine(false);
|
||||
crs->exportToWKT(f.get());
|
||||
auto wkt = f->toString();
|
||||
EXPECT_TRUE(wkt.find("CS[Cartesian,2]") != std::string::npos) << wkt;
|
||||
EXPECT_TRUE(wkt.find("CS[vertical,1],AXIS[\"gravity-related height "
|
||||
"(H)\",up,LENGTHUNIT[\"foot\",0.3048]") !=
|
||||
std::string::npos)
|
||||
<< wkt;
|
||||
auto cs = crs->coordinateSystem();
|
||||
ASSERT_EQ(cs->axisList().size(), 3U);
|
||||
EXPECT_EQ(cs->axisList()[2]->unit().name(), "foot");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
@@ -8406,10 +8406,97 @@ TEST(operation, vertCRS_to_vertCRS_New_Zealand_context) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(operation, compoundCRS_to_geogCRS_3D) {
|
||||
TEST(operation, projCRS_3D_to_geogCRS_3D) {
|
||||
|
||||
auto compoundcrs_ft_obj = PROJStringParser().createFromPROJString(
|
||||
"+proj=merc +vunits=ft +type=crs");
|
||||
auto proj3DCRS_ft = nn_dynamic_pointer_cast<CRS>(compoundcrs_ft_obj);
|
||||
ASSERT_TRUE(proj3DCRS_ft != nullptr);
|
||||
|
||||
auto geogcrs_m_obj = PROJStringParser().createFromPROJString(
|
||||
"+proj=longlat +vunits=m +type=crs");
|
||||
auto geogcrs_m = nn_dynamic_pointer_cast<CRS>(geogcrs_m_obj);
|
||||
ASSERT_TRUE(geogcrs_m != nullptr);
|
||||
|
||||
{
|
||||
auto op = CoordinateOperationFactory::create()->createOperation(
|
||||
NN_CHECK_ASSERT(proj3DCRS_ft), NN_CHECK_ASSERT(geogcrs_m));
|
||||
ASSERT_TRUE(op != nullptr);
|
||||
EXPECT_FALSE(op->hasBallparkTransformation());
|
||||
EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()),
|
||||
"+proj=pipeline "
|
||||
"+step +proj=unitconvert +xy_in=m +z_in=ft "
|
||||
"+xy_out=m +z_out=m "
|
||||
"+step +inv +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 "
|
||||
"+ellps=WGS84 "
|
||||
"+step +proj=unitconvert +xy_in=rad +z_in=m "
|
||||
"+xy_out=deg +z_out=m");
|
||||
}
|
||||
|
||||
{
|
||||
auto op = CoordinateOperationFactory::create()->createOperation(
|
||||
NN_CHECK_ASSERT(geogcrs_m), NN_CHECK_ASSERT(proj3DCRS_ft));
|
||||
ASSERT_TRUE(op != nullptr);
|
||||
EXPECT_FALSE(op->hasBallparkTransformation());
|
||||
EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()),
|
||||
"+proj=pipeline "
|
||||
"+step +proj=unitconvert +z_in=m +z_out=ft "
|
||||
"+step +proj=unitconvert +xy_in=deg +z_in=ft "
|
||||
"+xy_out=rad +z_out=m "
|
||||
"+step +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 "
|
||||
"+step +proj=unitconvert +xy_in=m +z_in=m "
|
||||
"+xy_out=m +z_out=ft");
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(operation, compoundCRS_to_geogCRS_3D) {
|
||||
|
||||
auto compoundcrs_ft_obj = WKTParser().createFromWKT(
|
||||
"COMPOUNDCRS[\"unknown\",\n"
|
||||
" PROJCRS[\"unknown\",\n"
|
||||
" BASEGEOGCRS[\"unknown\",\n"
|
||||
" DATUM[\"World Geodetic System 1984\",\n"
|
||||
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n"
|
||||
" LENGTHUNIT[\"metre\",1]],\n"
|
||||
" ID[\"EPSG\",6326]],\n"
|
||||
" PRIMEM[\"Greenwich\",0,\n"
|
||||
" ANGLEUNIT[\"degree\",0.0174532925199433],\n"
|
||||
" ID[\"EPSG\",8901]]],\n"
|
||||
" CONVERSION[\"unknown\",\n"
|
||||
" METHOD[\"Mercator (variant A)\",\n"
|
||||
" ID[\"EPSG\",9804]],\n"
|
||||
" PARAMETER[\"Latitude of natural origin\",0,\n"
|
||||
" ANGLEUNIT[\"degree\",0.0174532925199433],\n"
|
||||
" ID[\"EPSG\",8801]],\n"
|
||||
" PARAMETER[\"Longitude of natural origin\",0,\n"
|
||||
" ANGLEUNIT[\"degree\",0.0174532925199433],\n"
|
||||
" ID[\"EPSG\",8802]],\n"
|
||||
" PARAMETER[\"Scale factor at natural origin\",1,\n"
|
||||
" SCALEUNIT[\"unity\",1],\n"
|
||||
" ID[\"EPSG\",8805]],\n"
|
||||
" PARAMETER[\"False easting\",0,\n"
|
||||
" LENGTHUNIT[\"metre\",1],\n"
|
||||
" ID[\"EPSG\",8806]],\n"
|
||||
" PARAMETER[\"False northing\",0,\n"
|
||||
" LENGTHUNIT[\"metre\",1],\n"
|
||||
" ID[\"EPSG\",8807]]],\n"
|
||||
" CS[Cartesian,2],\n"
|
||||
" AXIS[\"(E)\",east,\n"
|
||||
" ORDER[1],\n"
|
||||
" LENGTHUNIT[\"metre\",1,\n"
|
||||
" ID[\"EPSG\",9001]]],\n"
|
||||
" AXIS[\"(N)\",north,\n"
|
||||
" ORDER[2],\n"
|
||||
" LENGTHUNIT[\"metre\",1,\n"
|
||||
" ID[\"EPSG\",9001]]]],\n"
|
||||
" VERTCRS[\"unknown\",\n"
|
||||
" VDATUM[\"unknown\"],\n"
|
||||
" CS[vertical,1],\n"
|
||||
" AXIS[\"gravity-related height (H)\",up,\n"
|
||||
" LENGTHUNIT[\"foot\",0.3048,\n"
|
||||
" ID[\"EPSG\",9002]]]]]");
|
||||
auto compoundcrs_ft = nn_dynamic_pointer_cast<CRS>(compoundcrs_ft_obj);
|
||||
ASSERT_TRUE(compoundcrs_ft != nullptr);
|
||||
|
||||
@@ -9307,7 +9394,7 @@ TEST(operation, compoundCRS_from_WKT2_no_id_to_geogCRS_3D_context) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(operation, compoundCRS_with_non_meter_horiz_and_vertical_to_geog) {
|
||||
TEST(operation, proj3DCRS_with_non_meter_horiz_and_vertical_to_geog) {
|
||||
auto objSrc = PROJStringParser().createFromPROJString(
|
||||
"+proj=utm +zone=31 +datum=WGS84 +units=us-ft +vunits=us-ft +type=crs");
|
||||
auto src = nn_dynamic_pointer_cast<CRS>(objSrc);
|
||||
@@ -9320,6 +9407,75 @@ TEST(operation, compoundCRS_with_non_meter_horiz_and_vertical_to_geog) {
|
||||
ctxt);
|
||||
ASSERT_EQ(list.size(), 1U);
|
||||
// Check that vertical unit conversion is done just once
|
||||
EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()),
|
||||
"+proj=pipeline "
|
||||
"+step +proj=unitconvert +xy_in=us-ft +z_in=us-ft "
|
||||
"+xy_out=m +z_out=m "
|
||||
"+step +inv +proj=utm +zone=31 +ellps=WGS84 "
|
||||
"+step +proj=unitconvert +xy_in=rad +xy_out=deg "
|
||||
"+step +proj=axisswap +order=2,1");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(operation, compoundCRS_with_non_meter_horiz_and_vertical_to_geog) {
|
||||
auto objSrc = WKTParser().createFromWKT(
|
||||
"COMPOUNDCRS[\"unknown\",\n"
|
||||
" PROJCRS[\"unknown\",\n"
|
||||
" BASEGEOGCRS[\"unknown\",\n"
|
||||
" DATUM[\"World Geodetic System 1984\",\n"
|
||||
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n"
|
||||
" LENGTHUNIT[\"metre\",1]],\n"
|
||||
" ID[\"EPSG\",6326]],\n"
|
||||
" PRIMEM[\"Greenwich\",0,\n"
|
||||
" ANGLEUNIT[\"degree\",0.0174532925199433],\n"
|
||||
" ID[\"EPSG\",8901]]],\n"
|
||||
" CONVERSION[\"UTM zone 31N\",\n"
|
||||
" METHOD[\"Transverse Mercator\",\n"
|
||||
" ID[\"EPSG\",9807]],\n"
|
||||
" PARAMETER[\"Latitude of natural origin\",0,\n"
|
||||
" ANGLEUNIT[\"degree\",0.0174532925199433],\n"
|
||||
" ID[\"EPSG\",8801]],\n"
|
||||
" PARAMETER[\"Longitude of natural origin\",3,\n"
|
||||
" ANGLEUNIT[\"degree\",0.0174532925199433],\n"
|
||||
" ID[\"EPSG\",8802]],\n"
|
||||
" PARAMETER[\"Scale factor at natural origin\",0.9996,\n"
|
||||
" SCALEUNIT[\"unity\",1],\n"
|
||||
" ID[\"EPSG\",8805]],\n"
|
||||
" PARAMETER[\"False easting\",500000,\n"
|
||||
" LENGTHUNIT[\"metre\",1],\n"
|
||||
" ID[\"EPSG\",8806]],\n"
|
||||
" PARAMETER[\"False northing\",0,\n"
|
||||
" LENGTHUNIT[\"metre\",1],\n"
|
||||
" ID[\"EPSG\",8807]],\n"
|
||||
" ID[\"EPSG\",16031]],\n"
|
||||
" CS[Cartesian,2],\n"
|
||||
" AXIS[\"(E)\",east,\n"
|
||||
" ORDER[1],\n"
|
||||
" LENGTHUNIT[\"US survey foot\",0.304800609601219,\n"
|
||||
" ID[\"EPSG\",9003]]],\n"
|
||||
" AXIS[\"(N)\",north,\n"
|
||||
" ORDER[2],\n"
|
||||
" LENGTHUNIT[\"US survey foot\",0.304800609601219,\n"
|
||||
" ID[\"EPSG\",9003]]]],\n"
|
||||
" VERTCRS[\"unknown\",\n"
|
||||
" VDATUM[\"unknown\"],\n"
|
||||
" CS[vertical,1],\n"
|
||||
" AXIS[\"gravity-related height (H)\",up,\n"
|
||||
" LENGTHUNIT[\"US survey foot\",0.304800609601219,\n"
|
||||
" ID[\"EPSG\",9003]]]]]"
|
||||
|
||||
);
|
||||
auto src = nn_dynamic_pointer_cast<CRS>(objSrc);
|
||||
ASSERT_TRUE(src != nullptr);
|
||||
auto authFactory =
|
||||
AuthorityFactory::create(DatabaseContext::create(), "EPSG");
|
||||
auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0);
|
||||
auto list = CoordinateOperationFactory::create()->createOperations(
|
||||
NN_NO_CHECK(src), authFactory->createCoordinateReferenceSystem("4326"),
|
||||
ctxt);
|
||||
ASSERT_EQ(list.size(), 1U);
|
||||
// Check that vertical unit conversion is done just once
|
||||
EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()),
|
||||
"+proj=pipeline "
|
||||
"+step +proj=unitconvert +xy_in=us-ft +xy_out=m "
|
||||
|
||||
@@ -12,10 +12,10 @@ fi
|
||||
echo "$TRAVIS_SECURE_ENV_VARS"
|
||||
./travis/build_docs.sh
|
||||
# Only build and publish docs when changes are made on most recent maintenance branch
|
||||
if test "$TRAVIS_SECURE_ENV_VARS" = "true" -a "$TRAVIS_BRANCH" = "7.0"; then
|
||||
if test "$TRAVIS_SECURE_ENV_VARS" = "true" -a "$TRAVIS_BRANCH" = "7.1"; then
|
||||
echo "publish website";
|
||||
./travis/add_deploy_key.sh;
|
||||
./travis/deploy_website.sh $TRAVIS_BUILD_DIR/docs/build /tmp;
|
||||
#./travis/add_deploy_key.sh;
|
||||
#./travis/deploy_website.sh $TRAVIS_BUILD_DIR/docs/build /tmp;
|
||||
|
||||
# Disabled: see discussion of https://github.com/OSGeo/proj.4/pull/1035
|
||||
# if test "$BUILD_NAME" = "linux_gcc"; then
|
||||
|
||||
@@ -4,18 +4,19 @@ set -e
|
||||
|
||||
export PATH=$HOME/Library/Python/3.7/bin:$PATH
|
||||
|
||||
brew update
|
||||
#brew unlink python@2
|
||||
#brew update
|
||||
brew install ccache
|
||||
#brew upgrade sqlite3
|
||||
#brew upgrade libtiff
|
||||
brew install doxygen graphviz
|
||||
#brew install doxygen graphviz
|
||||
#brew install md5sha1sum
|
||||
#brew reinstall python
|
||||
brew reinstall wget
|
||||
#brew reinstall wget
|
||||
|
||||
./travis/before_install_pip.sh
|
||||
|
||||
pip3 install --user sphinx sphinx-rtd-theme sphinxcontrib-bibtex breathe
|
||||
which sphinx-build
|
||||
# pip3 install --user sphinx sphinx-rtd-theme sphinxcontrib-bibtex breathe
|
||||
# which sphinx-build
|
||||
|
||||
(cd docs; make html)
|
||||
# (cd docs; make html)
|
||||
|
||||
Reference in New Issue
Block a user