Compare commits
108
Commits
rouault-patch-1
...
6.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
766bc9f56d | ||
|
|
59c5e47141 | ||
|
|
48fc4f3ed6 | ||
|
|
df59a7047e | ||
|
|
274948f792 | ||
|
|
0ea51a6a2b | ||
|
|
60b47101b7 | ||
|
|
2058fffadb | ||
|
|
5732970a48 | ||
|
|
3f348c9da4 | ||
|
|
c07974f92b | ||
|
|
83ca01b4ea | ||
|
|
0fc46e9175 | ||
|
|
d328c1c85c | ||
|
|
dd2dd6cd2e | ||
|
|
34fde0b4a4 | ||
|
|
d53437f0f8 | ||
|
|
3d2a627e49 | ||
|
|
34a6fef7de | ||
|
|
d9934eb07f | ||
|
|
d032e0d957 | ||
|
|
678fa3e2a1 | ||
|
|
df1e73fc6e | ||
|
|
2af259f649 | ||
|
|
adc9c9976b | ||
|
|
c04b2274c3 | ||
|
|
4d9e3c07cd | ||
|
|
799963acba | ||
|
|
09a936a29c | ||
|
|
5bb88a1d8c | ||
|
|
9c8dc7e59d | ||
|
|
977305e82a | ||
|
|
2b91a50729 | ||
|
|
9d596034ce | ||
|
|
b3fe4a04ed | ||
|
|
2eb726f0e1 | ||
|
|
60ed38a248 | ||
|
|
e89734162c | ||
|
|
3a8a9f7a00 | ||
|
|
f49b248a9f | ||
|
|
f830121a2f | ||
|
|
04f74f5396 | ||
|
|
0fce24abcb | ||
|
|
e8fbfa59a9 | ||
|
|
73be5b1e68 | ||
|
|
b0d27b2cc3 | ||
|
|
df73b75b3d | ||
|
|
0224644ae6 | ||
|
|
4dbb80b693 | ||
|
|
8a1f24dd37 | ||
|
|
b07d8d8077 | ||
|
|
9e0148f844 | ||
|
|
c9d4b0efb9 | ||
|
|
50fc420386 | ||
|
|
b33b2d8ac0 | ||
|
|
078eb3e601 | ||
|
|
a6425535db | ||
|
|
0e993d9744 | ||
|
|
fd9c81b60a | ||
|
|
e379c1116f | ||
|
|
83d02d0d17 | ||
|
|
98f38e4b57 | ||
|
|
a5d856771e | ||
|
|
0fc56e02e5 | ||
|
|
0019962137 | ||
|
|
20e9bdea53 | ||
|
|
7fb3ebbf37 | ||
|
|
589c44aa12 | ||
|
|
d7cd77244e | ||
|
|
4d0b2e91c5 | ||
|
|
e7450dd3ac | ||
|
|
471822610b | ||
|
|
bd500d9a7e | ||
|
|
18569b7f30 | ||
|
|
28121d1688 | ||
|
|
9a4b8a6c21 | ||
|
|
79eed0da28 | ||
|
|
ba37cd70b2 | ||
|
|
ae1a0324fb | ||
|
|
0bd886d8b2 | ||
|
|
a217239fa5 | ||
|
|
9b00240f4b | ||
|
|
1d4654847d | ||
|
|
31060c33c9 | ||
|
|
46d97de5bb | ||
|
|
673c60b140 | ||
|
|
c28701eea5 | ||
|
|
28ff9563e4 | ||
|
|
e311d508b5 | ||
|
|
d6330021e8 | ||
|
|
4915321e19 | ||
|
|
3889496c8e | ||
|
|
8583e33bad | ||
|
|
33a29c833f | ||
|
|
1302fc0463 | ||
|
|
e18e4823ac | ||
|
|
6a2ee6fbc8 | ||
|
|
7d46771382 | ||
|
|
91e360027b | ||
|
|
d65f44248a | ||
|
|
6358877b2a | ||
|
|
b391fbc78b | ||
|
|
6baadad43b | ||
|
|
77ae7cadbe | ||
|
|
40e8677bf5 | ||
|
|
6d64ff8817 | ||
|
|
5bd8446ef4 | ||
|
|
737e71f3b2 |
@@ -0,0 +1,2 @@
|
||||
.git
|
||||
build
|
||||
@@ -98,6 +98,8 @@ install_manifest.txt
|
||||
tmp_breathe
|
||||
/docs/.doxygen_up_to_date
|
||||
/docs/build
|
||||
/docs/plot/images
|
||||
/latex
|
||||
|
||||
# m4
|
||||
m4/libtool.m4
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
# .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/6.3 -- 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
|
||||
|
||||
formats:
|
||||
- pdf
|
||||
- epub
|
||||
|
||||
conda:
|
||||
environment: docs/environment.yml
|
||||
|
||||
sphinx:
|
||||
configuration: docs/source/conf.py
|
||||
fail_on_warning: true
|
||||
@@ -1,6 +1,6 @@
|
||||
To cite PROJ in publications use:
|
||||
|
||||
PROJ contributors (2019). PROJ coordinate transformation software
|
||||
PROJ contributors (2020). PROJ coordinate transformation software
|
||||
library. Open Source Geospatial Foundation. URL https://proj.org/.
|
||||
|
||||
A BibTeX entry for LaTeX users is
|
||||
|
||||
+2
-2
@@ -103,9 +103,9 @@ colormsg(_HIBLUE_ "Configuring PROJ:")
|
||||
#PROJ version information
|
||||
################################################################################
|
||||
include(ProjVersion)
|
||||
proj_version(MAJOR 6 MINOR 3 PATCH 0)
|
||||
proj_version(MAJOR 6 MINOR 3 PATCH 3)
|
||||
set(PROJ_API_VERSION "18")
|
||||
set(PROJ_BUILD_VERSION "18.0.3")
|
||||
set(PROJ_BUILD_VERSION "18.2.3")
|
||||
|
||||
################################################################################
|
||||
# Build features and variants
|
||||
|
||||
+8
-8
@@ -5,21 +5,21 @@ FROM ubuntu:18.04 as builder
|
||||
|
||||
MAINTAINER Howard Butler <howard@hobu.co>
|
||||
|
||||
ARG PROJ_VERSION=master
|
||||
ARG DESTDIR="/build"
|
||||
|
||||
# Setup build env
|
||||
RUN apt-get update -y \
|
||||
&& apt-get install -y --fix-missing --no-install-recommends \
|
||||
software-properties-common build-essential ca-certificates \
|
||||
git make cmake wget unzip libtool automake \
|
||||
make cmake wget unzip libtool automake \
|
||||
zlib1g-dev libsqlite3-dev pkg-config sqlite3
|
||||
|
||||
RUN git clone https://github.com/OSGeo/PROJ.git \
|
||||
&& cd PROJ \
|
||||
COPY . /PROJ
|
||||
|
||||
RUN cd /PROJ \
|
||||
&& ./autogen.sh \
|
||||
&& ./configure --prefix=/usr \
|
||||
&& make \
|
||||
&& make -j$(nproc) \
|
||||
&& make install
|
||||
|
||||
|
||||
@@ -38,10 +38,10 @@ RUN apt-get update; \
|
||||
RUN \
|
||||
mkdir -p /usr/share/proj; \
|
||||
curl -LOs https://download.osgeo.org/proj/proj-datumgrid-1.8.zip && unzip -j -u -o proj-datumgrid-1.8.zip -d /usr/share/proj; \
|
||||
curl -LOs https://download.osgeo.org/proj/proj-datumgrid-europe-1.2.zip && unzip -j -u -o proj-datumgrid-europe-1.2.zip -d /usr/share/proj; \
|
||||
curl -LOs https://download.osgeo.org/proj/proj-datumgrid-oceania-1.0.zip && unzip -j -u -o proj-datumgrid-oceania-1.0.zip -d /usr/share/proj; \
|
||||
curl -LOs https://download.osgeo.org/proj/proj-datumgrid-europe-1.5.zip && unzip -j -u -o proj-datumgrid-europe-1.5.zip -d /usr/share/proj; \
|
||||
curl -LOs https://download.osgeo.org/proj/proj-datumgrid-oceania-1.1.zip && unzip -j -u -o proj-datumgrid-oceania-1.1.zip -d /usr/share/proj; \
|
||||
curl -LOs https://download.osgeo.org/proj/proj-datumgrid-world-1.0.zip && unzip -j -u -o proj-datumgrid-world-1.0.zip -d /usr/share/proj; \
|
||||
curl -LOs https://download.osgeo.org/proj/proj-datumgrid-north-america-1.2.zip && unzip -j -u -o proj-datumgrid-north-america-1.2.zip -d /usr/share/proj; \
|
||||
curl -LOs https://download.osgeo.org/proj/proj-datumgrid-north-america-1.3.zip && unzip -j -u -o proj-datumgrid-north-america-1.3.zip -d /usr/share/proj; \
|
||||
rm *.zip
|
||||
|
||||
COPY --from=builder /build/usr/share/proj/ /usr/share/proj/
|
||||
|
||||
@@ -230,12 +230,6 @@ TAB_SIZE = 4
|
||||
|
||||
ALIASES =
|
||||
|
||||
# This tag can be used to specify a number of word-keyword mappings (TCL only).
|
||||
# A mapping has the form "name=value". For example adding "class=itcl::class"
|
||||
# will allow you to use the command class in the itcl::class meaning.
|
||||
|
||||
TCL_SUBST =
|
||||
|
||||
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
|
||||
# only. Doxygen will then generate output that is more tailored for C. For
|
||||
# instance, some of the names that are used will be different. The list of all
|
||||
|
||||
@@ -12,6 +12,7 @@ ACLOCAL_AMFLAGS = -I m4
|
||||
check-local:
|
||||
cd test; $(MAKE) check
|
||||
|
||||
all-local: README
|
||||
|
||||
README: README.md
|
||||
fgrep -v "[![" $< > $@
|
||||
|
||||
@@ -1,3 +1,123 @@
|
||||
6.3.2 Release Notes
|
||||
-------------------
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
o validateParameters(): fix false-positive warning on
|
||||
Equidistant Cylindrical (#1947)
|
||||
|
||||
o proj_create_crs_to_crs(): avoid potential reprojection failures when
|
||||
reprojecting area of use to source and target CRS (#1993)
|
||||
|
||||
o createOperations(): fix wrong pipeline generation with CRS that has +nadgrids=
|
||||
and +pm= (#2003)
|
||||
|
||||
o Fix bad copy&replace pattern on HEALPix and rHEALPix projection names (#2006)
|
||||
|
||||
o createUnitOfMeasure(): use full double resolution for the conversion
|
||||
factor (#2013)
|
||||
|
||||
o data/Makefile.am: remove bashism (#2047)
|
||||
|
||||
o ProjectedCRS::identify(): tune it to better work with ESRI WKT representation
|
||||
of EPSG:2193 (#2058)
|
||||
|
||||
o EngineeringCRS: when exporting to WKT1_GDAL, output unit and axis (#2091)
|
||||
|
||||
o Add missing entries in grid_alternatives for Portugal grids coming from
|
||||
ESRI entries (#2103)
|
||||
|
||||
o Fix working of Helmert transform between the horizontal part of 2
|
||||
compoundCRS (#2110)
|
||||
|
||||
o ESRI_WKT ingestion: make sure to identify to non-deprecated EPSG entry when
|
||||
possible (#2118)
|
||||
|
||||
o Make sure that importing a Projected 3D CRS from WKT:2019 keeps the base
|
||||
geographic CRS as 3D (#2124)
|
||||
|
||||
o createOperations(): improve results of compoundCRS to compoundCRS case (#2130)
|
||||
|
||||
o PROJ4 string import: take into correctly non-metre unit when the string looks
|
||||
like the one for WGS 84 / Pseudo Mercator (#2178)
|
||||
|
||||
o Fix support of WKT1_GDAL with netCDF rotated pole formulation (#2187)
|
||||
|
||||
o io.hpp: avoid dependency to proj_json_streaming_writer.hpp (#2188)
|
||||
|
||||
|
||||
THANKS TO
|
||||
---------
|
||||
|
||||
Pedro Venancio
|
||||
Bas Couwenberg
|
||||
Martin Dobias
|
||||
Kristian Evers
|
||||
Even Rouault
|
||||
|
||||
6.3.1 Release Notes
|
||||
-------------------
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
o Update the EPSG database to version 9.8.6
|
||||
|
||||
o Database: add mapping for gg10_smv2.mnt and gg10_sbv2.mnt French grids
|
||||
|
||||
o Database: add mapping for TOR27CSv1.GSB
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
o Fix wrong use of derivingConversionRef() that caused issues with use of
|
||||
+init=epsg:XXXX by GDAL (affecting R spatial libraries) or in MapServer
|
||||
|
||||
o fix exporting CoordinateSystem to PROJ JSON with ID
|
||||
|
||||
o projinfo: use No. abbreviation instead of UTF-8 character (#1828)
|
||||
|
||||
o CompoundCRS::identify(): avoid exception when horiz/vertical part is a
|
||||
BoundCRS
|
||||
|
||||
o createOperations(): fix dealing with projected 3D CRS whose Z units != metre
|
||||
|
||||
o WKT1_GDAL export: limit datum name massaging to names matching EPSG (#1835)
|
||||
|
||||
o unitconvert with mjd time format: avoid potential integer overflow
|
||||
(ossfuzz 20072)
|
||||
|
||||
o ProjectedCRS::identify(): fix wrong identification of some ESRI WKT linked
|
||||
to units
|
||||
|
||||
o Database: add a geoid_like value for proj_method column of grid_alternatives,
|
||||
fix related entries and simplify/robustify logic to deal with EPSG
|
||||
'Geographic3D to GravityRelatedHeight' methods
|
||||
|
||||
o Fix ingestion of +proj=cea with +k_0 (#1881)
|
||||
|
||||
o Fix performance issue, affecting PROJ.4 string generation of EPSG:7842
|
||||
(#1913)
|
||||
|
||||
o Fix identification of ESRI-style datum names starting with D_ but without
|
||||
alias (#1911)
|
||||
|
||||
o cart: Avoid discontinuity at poles in the inverse case (#1906)
|
||||
|
||||
o Various updates to make regression test suite pass with gcc on i386 (#1906)
|
||||
|
||||
THANKS TO
|
||||
---------
|
||||
|
||||
Alan D. Snow
|
||||
GitHub user @russkel
|
||||
Gerrit Holl
|
||||
Anshul Singhvi
|
||||
Raven Kopelman
|
||||
Kristian Evers
|
||||
Even Rouault
|
||||
|
||||
6.3.0 Release Notes
|
||||
-------------------
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ function(proj_add_test_script_sh SH_NAME BIN_USE)
|
||||
if(${TEST_OK})
|
||||
add_test(NAME "${testname}"
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/data
|
||||
COMMAND ${PROJECT_SOURCE_DIR}/test/cli/${SH_NAME}
|
||||
COMMAND bash ${PROJECT_SOURCE_DIR}/test/cli/${SH_NAME}
|
||||
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${${BIN_USE}}
|
||||
)
|
||||
set_tests_properties( ${testname}
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT([PROJ], [6.3.0],
|
||||
AC_INIT([PROJ], [6.3.3],
|
||||
[https://github.com/OSGeo/PROJ/issues], proj, [https://proj.org])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_LANG(C)
|
||||
|
||||
+1
-1
@@ -82,7 +82,7 @@ proj.db: $(DATAPATH)/sql/*.sql
|
||||
echo "" | head -c1; \
|
||||
if [ $$? -eq 0 ] ; then \
|
||||
echo "Running foreign_key_check"; \
|
||||
if [[ $$(echo "pragma foreign_key_check;" | sqlite3 proj.db | head -c1 | wc -c) -ne 0 ]]; then \
|
||||
if [ $$(echo "pragma foreign_key_check;" | sqlite3 proj.db | head -c1 | wc -c) -ne 0 ]; then \
|
||||
echo "Foreign key check failed"; \
|
||||
$(RM) proj.db; \
|
||||
exit 1; \
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+20
-10
@@ -261,14 +261,14 @@ INSERT INTO "area" VALUES('EPSG','1281','Australia - mainland','Australia - Aust
|
||||
INSERT INTO "area" VALUES('EPSG','1282','Australia - Tasmania','Australia - Tasmania including islands - onshore.',-43.7,-39.52,143.77,148.55,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1283','Canada - Maritime Provinces','Canada - New Brunswick; Nova Scotia; Prince Edward Island.',43.41,48.07,-69.05,-59.73,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1284','Europe - FSU, Czechoslovakia - onshore','Armenia; Azerbaijan; Belarus; Czechia; Estonia - onshore; Georgia - onshore; Kazakhstan; Kyrgyzstan; Latvia - onshore; Lithuania - onshore; Moldova; Russian Federation - onshore; Slovakia; Tajikistan; Turkmenistan; Ukraine - onshore; Uzbekistan.',35.14,77.79,12.09,-169.57,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1285','Indonesia - Java and Bali onshore','Indonesia - onshore Java and Bali.',-8.91,-5.83,105.06,115.77,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1285','Indonesia - Bali, Java and western Sumatra onshore','Indonesia - onshore - Bali, Java and western Sumatra.',-8.91,5.97,95.16,115.77,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1286','Europe - Liechtenstein and Switzerland','Liechtenstein; Switzerland.',45.82,47.81,5.96,10.49,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1287','Indonesia - Banga & Belitung Islands','Indonesia - Banga and Belitung Islands.',-3.3,-1.44,105.07,108.35,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1288','Angola - Angola proper','Angola - Angola proper - onshore and offshore.',-18.02,-5.82,8.2,24.09,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1289','Canada - CGVD28','Canada - onshore - Alberta; British Columbia; Manitoba south of 57°N; New Brunswick; Northwest Territories south west of a line between 60°N, 110°W and the coast at 132°W; Nova Scotia; Ontario south of 52°N; Prince Edward Island; Quebec - mainland west of 66°W and south of 55°N; Saskatchewan south of 55°N; Yukon.',41.67,69.8,-141.01,-59.73,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1290','Africa - Botswana, Eswatini, Lesotho and South Africa','Botswana; Eswatini (Swaziland); Lesotho; South Africa - mainland.',-34.88,-17.78,16.45,32.95,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1291','Asia - FSU - Caspian Sea','Azerbaijan - offshore; Kazakhstan - offshore; Russian Federation - Caspian Sea; Turkmenistan - offshore.',37.35,46.97,46.95,53.93,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1292','Argentina - Neuquen province','Argentina - Neuquen province.',-41.1,-36.14,-71.96,-68.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1292','Argentina - Neuquen basin','Argentina – Mendoza and Neuquen provinces - Neuquen basin.',-40.17,-34.26,-71.19,-66.52,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1293','Brazil - Corrego Alegre 1970-1972','Brazil - onshore - west of 54°W and south of 18°S; also south of 15°S between 54°W and 42°W; also east of 42°W.',-33.78,-2.68,-58.16,-34.74,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1294','Portugal - mainland - onshore','Portugal - mainland - onshore.',36.95,42.16,-9.56,-6.19,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1295','Germany - DHDN','Germany - onshore - Baden-Wurtemberg, Bayern, Hessen, Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Schleswig-Holstein. Also former DDR states of Sachsen and Thuringen by transformation.',47.27,55.06,5.87,15.03,1);
|
||||
@@ -279,7 +279,7 @@ INSERT INTO "area" VALUES('EPSG','1299','Europe - EVRF2000','Europe - onshore -
|
||||
INSERT INTO "area" VALUES('EPSG','1300','Iran - FD58','Iran - Arwaz area and onshore Gulf coast west of 54°E, Lavan Island, offshore Balal field and South Pars blocks 2 and 3.',26.21,33.22,47.13,53.61,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1301','Portugal - Azores C - onshore','Portugal - central Azores onshore - Faial, Graciosa, Pico, Sao Jorge, Terceira.',38.32,39.14,-28.9,-26.97,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1302','Asia - Cambodia and Vietnam - mainland','Cambodia - mainland onshore; Vietnam - mainland onshore.',8.33,23.4,102.14,109.53,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1303','South America - Tierra del Fuego','Argentina and Chile - Tierra del Fuego, onshore.',-55.96,-51.99,-74.83,-63.73,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1303','South America - Tierra del Fuego','Chile - Tierra del Fuego, onshore; Argentina - Tierra del Fuego, onshore and offshore Atlantic west of 66°W.',-55.96,-51.65,-74.83,-63.73,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1304','Asia - Myanmar and Thailand onshore','Myanmar (Burma) - onshore; Thailand - onshore.',5.63,28.55,92.2,105.64,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1305','Europe - Ireland (Republic and Ulster) - onshore','Ireland - onshore. United Kingdom (UK) - Northern Ireland (Ulster) - onshore.',51.39,55.43,-10.56,-5.34,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1306','Europe - Czechoslovakia','Czechia; Slovakia.',47.73,51.06,12.09,22.56,0);
|
||||
@@ -459,8 +459,8 @@ 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 - Neuquen province east of 70.5°W','Argentina - Neuquen province east of 70°30''W.',-40.54,-36.14,-70.51,-68.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1484','Argentina - Comodoro Rivadavia - west of 67.5°W','Argentina - Comodoro Rivadavia area west of 67°30''W.',-46.7,-45.19,-69.5,-67.5,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);
|
||||
INSERT INTO "area" VALUES('EPSG','1487','Cuba - onshore north of 21°30''N','Cuba - onshore north of 21°30''N but also including all of Isla de la Juventud.',21.38,23.25,-85.01,-76.91,0);
|
||||
@@ -1301,7 +1301,7 @@ INSERT INTO "area" VALUES('EPSG','2321','Angola - offshore blocks 1 and 16','Ang
|
||||
INSERT INTO "area" VALUES('EPSG','2322','Angola - offshore blocks 3 7 15 and 17','Angola - offshore blocks 3, 7,15 and 17.',-10.09,-6.03,10.83,13.39,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2323','Angola - offshore blocks 1 16 and 18','Angola - offshore blocks 1, 16 and 18.',-8.34,-6.03,11.08,12.75,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2324','Angola - offshore blocks 2 3 17-18 and 31-33','Angola - offshore blocks 2, 3, 17, 18, 31, 32 and 33.',-8.59,-6.01,10.41,12.84,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2325','Argentina - Neuquen province Chos Malal area','Argentina - Neuquen province - Chos Malal area.',-37.5,-36.14,-70.5,-70.03,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2325','Argentina - Neuquen province Auca Mahuida area','Argentina - Neuquen province - Auca Mahuida area.',-38.75,-37.5,-69.5,-68.25,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2326','Germany - West Germany all states','Germany - states of former West Germany onshore - Baden-Wurtemberg, Bayern, Bremen, Hamburg, Hessen, Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Schleswig-Holstein.',47.27,55.09,5.87,13.84,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2327','Syria - Al Whaleed area','Syria - Al Whaleed area',35.33,35.9,39.15,40.41,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2328','Syria - Shaddadeh area','Syria - Shaddadeh area (36°N, 41°E)',35.79,36.5,40.5,41.39,0);
|
||||
@@ -2642,7 +2642,7 @@ INSERT INTO "area" VALUES('EPSG','3662','Norway - onshore - 20ºE to 21ºE','Nor
|
||||
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','3666','Indonesia - Java and Java Sea','Indonesia - Java and Bali onshore, offshore southern Java Sea, Madura Strait and western Bali Sea.',-8.91,-4.07,105.06,117.01,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);
|
||||
@@ -3181,7 +3181,7 @@ INSERT INTO "area" VALUES('EPSG','4201','USA - Oregon - Gresham-Warm Springs','U
|
||||
INSERT INTO "area" VALUES('EPSG','4202','USA - Oregon - Columbia River West','United States (USA) - Oregon - Columbia River area west of approximately 121°30''W.',45.17,46.56,-124.33,-121.47,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4203','USA - Oregon - Cottage Grove-Canyonville','United States (USA) - Oregon - Cottage Grove-Canyonville area.',42.82,43.88,-123.96,-122.4,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4204','USA - Oregon - Dufur-Madras','United States (USA) - Oregon - Dufur-Madras area.',44.63,45.55,-121.95,-120.46,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4205','[enter here applicable extent]','[enter here applicable extent]',89.99,90.0,179.99,180.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4205','enter here applicable extent','enter here applicable extent',89.99,90.0,179.99,180.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4206','USA - Oregon - La Grande','United States (USA) - Oregon - La Grande area.',45.13,45.8,-118.17,-117.14,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4207','USA - Oregon - Ontario','United States (USA) - Oregon - Ontario area.',43.41,44.65,-117.9,-116.7,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4208','USA - Oregon - Oregon Coast','United States (USA) - Oregon - coastal area.',41.89,46.4,-124.84,-123.35,0);
|
||||
@@ -3496,10 +3496,10 @@ INSERT INTO "area" VALUES('EPSG','4516','USA - CONUS and GoM','United States (US
|
||||
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);
|
||||
INSERT INTO "area" VALUES('EPSG','4519','Algeria - 32°N to 34°39''N','Algeria - 35.6 grads to 38.5 grads North (32°N to 34°39''N).',31.99,34.66,-2.95,9.09,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4520','World centred on 90°W','World centred on the Americas.',-90.0,90.0,-180.0,180.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4520','World centred on 90°W','World centred on the Americas.',-90.0,90.0,90.01,89.99,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4521','Northern Mariana Islands - onshore','Northern Mariana Islands - onshore.',14.06,20.61,144.83,146.12,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4522','Finland - mainland south of 66°N','Finland - onshore mainland south of approximately 66°N.',59.75,66.73,20.95,31.59,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4523','World centred on 150°E','World centred on Asia-Pacific.',-90.0,90.0,-180.0,180.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4523','World centred on 150°E','World centred on Asia-Pacific.',-90.0,90.0,-29.99,-30.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4524','Saudi Arabia - west of 36°E','Saudi Arabia - onshore and offshore - west of 36°E.',24.92,29.38,34.44,36.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4525','Pacific - Guam and NMI - onshore','Guam - onshore. Northern Mariana Islands - onshore.',13.18,20.61,144.58,146.12,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4526','Saudi Arabia - 36°E to 42°E','Saudi Arabia - onshore and offshore - between 36°E and 42°E.',16.29,32.16,36.0,42.0,0);
|
||||
@@ -3536,6 +3536,16 @@ INSERT INTO "area" VALUES('EPSG','4557','Vietnam - Kon Tum','Vietnam - Kon Tum p
|
||||
INSERT INTO "area" VALUES('EPSG','4558','Vietnam - Quang Ngai','Vietnam - Quang Ngai province.',14.53,15.49,108.23,109.2,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4559','Vietnam - Binh Dinh, Khanh Hoa, Ninh Thuan','Vietnam - Binh Dinh, Khanh Hoa and Ninh Thuan provinces.',11.25,14.71,108.55,109.53,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4560','Vietnam - Binh Thuan, Dak Lak, Dak Nong, Gia Lai, Phu Yen','Vietnam - Binh Thuan, Dak Lak, Dak Nong, Gia Lai and Phu Yen provinces.',10.43,14.61,107.2,109.52,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4561','Argentina - Mendoza - Cuyo basin','Argentina - Mendoza province - Cuyo basin.',-36.37,-31.96,-69.4,-66.42,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4562','Argentina - Mendoza and Neuquen','Argentina - Mendoza province, Neuquen province, western La Pampa province and western Rio Negro province.',-43.41,-31.91,-72.14,-65.86,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4563','Argentina - 42.5°S to 50.3°S','Argentina - Chibut province south of approximately 42°30''S and Santa Cruz province north of approximately 50°20''S.',-50.34,-42.49,-73.59,-65.47,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4564','Argentina - 42.5°S to 50.3°S and west of 70.5°W','Argentina - Chibut province west of 70°30''W and south of approximately 44°55''S and Santa Cruz province west of 70°30''W and north of approximately 50°20''S.',-50.34,-44.94,-73.59,-70.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4565','Argentina - 42.5°S to 50.3°S and east of 67.5°W','Argentina - Chibut province east of 67°30''W and south of approximately 43°35''S and Santa Cruz province east of 67°30''W and north of approximately 49°23''S.',-49.05,-43.58,-67.5,-65.47,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4566','Europe - offshore North Sea - Germany and Netherlands east of 5°E','Germany - offshore North Sea. Netherlands - offshore east of 5E.',53.49,55.92,3.34,8.88,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4567','South Africa - mainland - onshore and offshore','South Africa - mainland - onshore and offshore.',-38.17,-22.13,13.33,36.54,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4568','South Africa - Prince Edward islands - onshore and offshore','South Africa - Marion Island and Prince Edward Island - onshore and offshore.',-50.32,-43.26,32.71,42.85,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4569','Argentina - south Santa Cruz','Argentina - Santa Cruz province south of approximately 50°20''S.',-52.43,-50.33,-73.28,-68.3,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4570','Argentina - south Santa Cruz west of 70.5°W','Argentina - Santa Cruz province south of approximately 50°20''S and west of 70°30''W.',-52.0,-50.33,-73.28,-70.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4571','Argentina - south Santa Cruz east of 70.5°W','Argentina - Santa Cruz province south of approximately 50°20''S and east of 70°30''W.',-52.43,-50.33,-70.5,-68.3,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4572','Argentina - 44°S to 47.5°S','Argentina - Chubut province south of approximately 44°S and Santa Cruz province north of approximately 47°30''S - Golfo San Jorge basin onshore and offshore.',-47.5,-43.99,-72.36,-63.24,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4573','Argentina - onshore','Argentina - onshore.',-55.11,-21.78,-73.59,-53.65,0);
|
||||
|
||||
+2
-2
@@ -18,9 +18,9 @@ INSERT INTO "axis" VALUES('EPSG','1102','Westing','X','west','EPSG','1031',2,'EP
|
||||
INSERT INTO "axis" VALUES('EPSG','1110','Plant East','x','east','EPSG','1032',1,'EPSG','9001');
|
||||
INSERT INTO "axis" VALUES('EPSG','1111','Plant North','y','north','EPSG','1032',2,'EPSG','9001');
|
||||
INSERT INTO "axis" VALUES('EPSG','1112','Gravity-related height','z','up','EPSG','1032',3,'EPSG','9001');
|
||||
INSERT INTO "axis" VALUES('EPSG','1428','Bin grid I','I','J-axis plus 90°','EPSG','1033',1,'EPSG','1024');
|
||||
INSERT INTO "axis" VALUES('EPSG','1428','Bin grid I','I','J-axis plus 90 degrees','EPSG','1033',1,'EPSG','1024');
|
||||
INSERT INTO "axis" VALUES('EPSG','1429','Bin grid J','J','See associated operation','EPSG','1033',2,'EPSG','1024');
|
||||
INSERT INTO "axis" VALUES('EPSG','1431','Bin grid I','I','J-axis minus 90°','EPSG','1034',1,'EPSG','1024');
|
||||
INSERT INTO "axis" VALUES('EPSG','1431','Bin grid I','I','J-axis minus 90 degrees','EPSG','1034',1,'EPSG','1024');
|
||||
INSERT INTO "axis" VALUES('EPSG','1432','Bin grid J','J','See associated operation','EPSG','1034',2,'EPSG','1024');
|
||||
INSERT INTO "axis" VALUES('EPSG','1466','Easting','X','South along 180°E','EPSG','1035',1,'EPSG','9001');
|
||||
INSERT INTO "axis" VALUES('EPSG','1467','Northing','Y','South along 90°W','EPSG','1035',2,'EPSG','9001');
|
||||
|
||||
@@ -132,6 +132,11 @@ FOR EACH ROW BEGIN
|
||||
WHERE NOT EXISTS(SELECT 1 FROM geoid_model WHERE name = 'GEOID12B');
|
||||
SELECT RAISE(ABORT, 'missing GEOID18 in geoid_model')
|
||||
WHERE NOT EXISTS(SELECT 1 FROM geoid_model WHERE name = 'GEOID18');
|
||||
|
||||
-- check presence of NZ height shift grids
|
||||
SELECT RAISE(ABORT, 'missing NZ height shift grids')
|
||||
WHERE NOT EXISTS(SELECT 1 FROM grid_alternatives WHERE original_grid_name = 'auckht1946-nzvd2016.gtx');
|
||||
|
||||
END;
|
||||
INSERT INTO dummy DEFAULT VALUES;
|
||||
DROP TRIGGER final_checks;
|
||||
|
||||
@@ -27,7 +27,7 @@ INSERT INTO "concatenated_operation" VALUES('EPSG','8094','NTF (Paris) to WGS 84
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8174','Bogota 1975 (Bogota) to WGS 84 (1)','','For military purposes. Accuracy 6m, 5m and 6m in X, Y and Z axes.','EPSG','4802','EPSG','4326','EPSG','3229',NULL,'DMA-Col',0);
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8175','Monte Mario (Rome) to WGS 84 (1)','','For military purposes. Accuracy 25m in each axis.','EPSG','4806','EPSG','4326','EPSG','2339',NULL,'EPSG-Ita',0);
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8176','Tananarive (Paris) to WGS 84 (1)','','For military purposes. Accuracy not available.','EPSG','4810','EPSG','4326','EPSG','3273',NULL,'EPSG-Mdg',0);
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8178','Batavia (Jakarta) to WGS 84 (1)','','For military purposes. Accuracy 3m in each axis.','EPSG','4813','EPSG','4326','EPSG','1355',NULL,'EPSG-Idn Sumatra',0);
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8178','Batavia (Jakarta) to WGS 84 (1)','','For military purposes. Accuracy 3m in each axis.','EPSG','4813','EPSG','4326','EPSG','1285',NULL,'EPSG-Idn Sumatra',0);
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8183','HD72 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4237','EPSG','4326','EPSG','1119',NULL,'EPSG-Hun',1);
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8186','NTF (Paris) to ED50 (1)','','Not known.','EPSG','4807','EPSG','4230','EPSG','3694',NULL,'EPSG-Fra',0);
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8188','NTF (Paris) to WGS 72 (1)','','Not known.','EPSG','4807','EPSG','4322','EPSG','3694',NULL,'EPSG-Fra',0);
|
||||
|
||||
@@ -837,8 +837,8 @@ INSERT INTO "conversion" VALUES('EPSG','8515','Kansas regional zone 19 Coffeyvil
|
||||
INSERT INTO "conversion" VALUES('EPSG','8516','Kansas regional zone 20 Pittsburg (ftUS)',NULL,NULL,'EPSG','4513','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-95.05,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000031,'EPSG','9201','EPSG','8806','False easting',20500000.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','8825','Idaho Transverse Mercator',NULL,NULL,'EPSG','1381','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-114.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',2500000.0,'EPSG','9001','EPSG','8807','False northing',1200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','8854','Equal Earth Greenwich',NULL,NULL,'EPSG','1262','EPSG','1078','Equal Earth','EPSG','8802','Longitude of natural 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,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','8855','Equal Earth Americas',NULL,NULL,'EPSG','1262','EPSG','1078','Equal Earth','EPSG','8802','Longitude of natural origin',-90.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,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','8856','Equal Earth Asia-Pacific',NULL,NULL,'EPSG','1262','EPSG','1078','Equal Earth','EPSG','8802','Longitude of natural origin',150.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,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','8855','Equal Earth Americas',NULL,NULL,'EPSG','4520','EPSG','1078','Equal Earth','EPSG','8802','Longitude of natural origin',-90.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,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','8856','Equal Earth Asia-Pacific',NULL,NULL,'EPSG','4523','EPSG','1078','Equal Earth','EPSG','8802','Longitude of natural origin',150.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,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9058','Vietnam TM-3 103-00',NULL,NULL,'EPSG','4541','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',103.0,'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','9190','NIWA Albers',NULL,NULL,'EPSG','3508','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',-40.0,'EPSG','9102','EPSG','8822','Longitude of false origin',175.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-30.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-50.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9192','Vietnam TM-3 104-00',NULL,NULL,'EPSG','4538','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',104.0,'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);
|
||||
@@ -856,6 +856,9 @@ INSERT INTO "conversion" VALUES('EPSG','9203','Vietnam TM-3 108-15',NULL,NULL,'E
|
||||
INSERT INTO "conversion" VALUES('EPSG','9204','Vietnam TM-3 108-30',NULL,NULL,'EPSG','4560','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',108.3,'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','9219','South Africa Basic Survey Unit Albers 25E',NULL,NULL,'EPSG','4567','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',-30.0,'EPSG','9102','EPSG','8822','Longitude of false origin',25.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-22.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-38.0,'EPSG','9102','EPSG','8826','Easting at false origin',1400000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9220','South Africa Basic Survey Unit Albers 44E',NULL,NULL,'EPSG','4568','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',-42.0,'EPSG','9102','EPSG','8822','Longitude of false origin',44.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-34.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-50.0,'EPSG','9102','EPSG','8826','Easting at false origin',1200000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9268','Austria West',NULL,NULL,'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',NULL,NULL,'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',NULL,NULL,'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','10101','Alabama CS27 East zone',NULL,NULL,'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',NULL,NULL,'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)',NULL,NULL,'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);
|
||||
|
||||
@@ -454,3 +454,5 @@ INSERT INTO "deprecation" VALUES('projected_crs','EPSG','7082','EPSG','8456','EP
|
||||
INSERT INTO "deprecation" VALUES('projected_crs','EPSG','7082','EPSG','8455','EPSG');
|
||||
INSERT INTO "deprecation" VALUES('projected_crs','EPSG','3911','EPSG','8686','EPSG');
|
||||
INSERT INTO "deprecation" VALUES('geodetic_crs','EPSG','8449','EPSG','8860','EPSG');
|
||||
INSERT INTO "deprecation" VALUES('geodetic_crs','EPSG','4280','EPSG','4211','EPSG');
|
||||
INSERT INTO "deprecation" VALUES('geodetic_crs','EPSG','4808','EPSG','4813','EPSG');
|
||||
|
||||
@@ -104,8 +104,8 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','4156','S-JTSK',NULL,NULL,'geographic 2
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4157','Mount Dillon',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6157','EPSG','1322',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4158','Naparima 1955',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6158','EPSG','3143',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4159','ELD79',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6159','EPSG','1143',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4160','Chos Malal 1914',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6160','EPSG','1292',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4161','Pampa del Castillo',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6161','EPSG','1265',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4160','Chos Malal 1914',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6160','EPSG','4562',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4161','Pampa del Castillo',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6161','EPSG','4563',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4162','Korean 1985',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6162','EPSG','3266',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4163','Yemen NGN96',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6163','EPSG','1257',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4164','South Yemen',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6164','EPSG','1340',NULL,0);
|
||||
@@ -220,7 +220,7 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','4276','NSWC 9Z-2',NULL,NULL,'geographi
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4277','OSGB 1936',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6277','EPSG','4390',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4278','OSGB70',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6278','EPSG','1264',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4279','OS(SN)80',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6279','EPSG','1354',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4280','Padang',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6280','EPSG','1355',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4280','Padang',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6280','EPSG','1355',NULL,1);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4281','Palestine 1923',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6281','EPSG','1356',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4282','Pointe Noire',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6282','EPSG','1072',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4283','GDA94',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6283','EPSG','4177',NULL,0);
|
||||
@@ -506,7 +506,7 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','4804','Makassar (Jakarta)',NULL,NULL,'
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4805','MGI (Ferro)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6805','EPSG','1321',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4806','Monte Mario (Rome)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6806','EPSG','3343',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4807','NTF (Paris)',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6807','EPSG','3694',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4808','Padang (Jakarta)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6808','EPSG','1355',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4808','Padang (Jakarta)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6808','EPSG','1355',NULL,1);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4809','Belge 1950 (Brussels)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6809','EPSG','1347',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4810','Tananarive (Paris)',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6810','EPSG','3273',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4811','Voirol 1875 (Paris)',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6811','EPSG','1365',NULL,0);
|
||||
@@ -1026,3 +1026,11 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','9153','SIRGAS-Chile 2016',NULL,NULL,'g
|
||||
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','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);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9266','MGI',NULL,NULL,'geocentric','EPSG','6500','EPSG','6312','EPSG','1037',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9267','MGI',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6312','EPSG','1037',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);
|
||||
|
||||
@@ -28,7 +28,7 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','1057','Turkish National Reference Fr
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1058','Bhutan National Geodetic Datum',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1048','2003-11-14',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1060','Islands Net 2004',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1120','2004-08-07',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1061','International Terrestrial Reference Frame 2008',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262','2005-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1062','Posiciones Geodesicas Argentinas 2007',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1033','2006-08-07',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1062','Posiciones Geodesicas Argentinas 2007',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1033','2006-08-19',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1063','Marco Geodesico Nacional de Bolivia',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1049','2010-03-14',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1064','SIRGAS-Chile realization 1 epoch 2002',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066','2002-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1065','Costa Rica 2005',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1074','2005-10-30',0);
|
||||
@@ -148,6 +148,10 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','1251','Kosovo Reference System 2001'
|
||||
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','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','1268','Kingdom of Saudi Arabia Geodetic Reference Frame 2017',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1206','2017-12-01',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);
|
||||
@@ -231,8 +235,8 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','6156','System of the Unified Trigono
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6157','Mount Dillon',NULL,NULL,'EPSG','7007','EPSG','8901','EPSG','1322',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6158','Naparima 1955',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3143','1955-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6159','European Libyan Datum 1979',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1143','1979-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6160','Chos Malal 1914',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1292','1914-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6161','Pampa del Castillo',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1265',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6160','Chos Malal 1914',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','4562','1914-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6161','Pampa del Castillo',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','4563',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6162','Korean Datum 1985',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','3266','1985-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6163','Yemen National Geodetic Network 1996',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1257','1996-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6164','South Yemen',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','1340',NULL,0);
|
||||
@@ -347,7 +351,7 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','6276','NSWC 9Z-2',NULL,NULL,'EPSG','
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6277','OSGB 1936',NULL,NULL,'EPSG','7001','EPSG','8901','EPSG','4390','1936-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6278','OSGB 1970 (SN)',NULL,NULL,'EPSG','7001','EPSG','8901','EPSG','1264','1970-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6279','OS (SN) 1980',NULL,NULL,'EPSG','7001','EPSG','8901','EPSG','1354','1980-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6280','Padang 1884',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1355','1884-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6280','Padang 1884',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1355','1884-01-01',1);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6281','Palestine 1923',NULL,NULL,'EPSG','7010','EPSG','8901','EPSG','1356','1923-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6282','Congo 1960 Pointe Noire',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1072','1960-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6283','Geocentric Datum of Australia 1994',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4177','1994-01-01',0);
|
||||
@@ -558,7 +562,7 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','6804','Makassar (Jakarta)',NULL,NULL
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6805','Militar-Geographische Institut (Ferro)',NULL,NULL,'EPSG','7004','EPSG','8909','EPSG','1321','1901-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6806','Monte Mario (Rome)',NULL,NULL,'EPSG','7022','EPSG','8906','EPSG','3343',NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6807','Nouvelle Triangulation Francaise (Paris)',NULL,NULL,'EPSG','7011','EPSG','8903','EPSG','3694','1895-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6808','Padang 1884 (Jakarta)',NULL,NULL,'EPSG','7004','EPSG','8908','EPSG','1355','1884-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6808','Padang 1884 (Jakarta)',NULL,NULL,'EPSG','7004','EPSG','8908','EPSG','1355','1884-01-01',1);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6809','Reseau National Belge 1950 (Brussels)',NULL,NULL,'EPSG','7022','EPSG','8910','EPSG','1347','1950-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6810','Tananarive 1925 (Paris)',NULL,NULL,'EPSG','7022','EPSG','8903','EPSG','3273','1925-01-01',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6811','Voirol 1875 (Paris)',NULL,NULL,'EPSG','7011','EPSG','8903','EPSG','1365','1875-01-01',0);
|
||||
|
||||
+275
-127
@@ -282,8 +282,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('WW15MGH.GRD',
|
||||
'egm96_15.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -297,8 +297,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('Und_min2.5x2.5_egm2008_isw=82_WGS84_TideFree.gz',
|
||||
'egm08_25.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-world',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -314,8 +314,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('gr2000g.gri',
|
||||
'gvr2000.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -329,8 +329,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('ggeoid16.gri',
|
||||
'gvr2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -346,8 +346,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('dvr90.gtx',
|
||||
'dvr90.gtx', -- no change. Just document the package
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
0, -- do not reverse here as grid_transformation_custom does reference from VerticalCRS height to Geographic height
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -362,8 +362,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('dnn.gtx',
|
||||
'dnn.gtx', -- no change. Just document the package
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
0, -- do not reverse here as grid_transformation_custom does reference from VerticalCRS height to Geographic height
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -379,8 +379,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('fvr09.gtx',
|
||||
'fvr09.gtx', -- no change. Just document the package
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
0, -- do not reverse here as grid_transformation_custom does reference from VerticalCRS height to Geographic height
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -396,8 +396,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('SWEN17_RH2000.gtx',
|
||||
'SWEN17_RH2000.gtx', -- no change. Just document the package
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
0, -- do not reverse here as grid_transformation_custom does reference from VerticalCRS height to Geographic height
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -413,8 +413,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('OSGM15_Malin.gri',
|
||||
'OSGM15_Malin.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -430,8 +430,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('OSGM15_Belfast.gri',
|
||||
'OSGM15_Belfast.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -440,28 +440,28 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
----------------------------
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('g1999u01.bin', 'g1999u01.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('g1999u01.bin', 'g1999u01.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('g1999u02.bin', 'g1999u02.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('g1999u02.bin', 'g1999u02.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('g1999u03.bin', 'g1999u03.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('g1999u03.bin', 'g1999u03.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('g1999u04.bin', 'g1999u04.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('g1999u04.bin', 'g1999u04.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('g1999u05.bin', 'g1999u05.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('g1999u05.bin', 'g1999u05.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('g1999u06.bin', 'g1999u06.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('g1999u06.bin', 'g1999u06.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('g1999u07.bin', 'g1999u07.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('g1999u07.bin', 'g1999u07.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('g1999u08.bin', 'g1999u08.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('g1999u08.bin', 'g1999u08.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
-- Not mapped:
|
||||
-- g1999a01.gtx to g1999a04.gtx : Alaska
|
||||
@@ -473,7 +473,7 @@ INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_form
|
||||
----------------------------
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('geoid03_conus.bin', 'geoid03_conus.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('geoid03_conus.bin', 'geoid03_conus.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
-- Not mapped:
|
||||
-- g2003a01.gtx to g2003a04.gtx : Alaska
|
||||
@@ -485,26 +485,26 @@ INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_form
|
||||
----------------------------
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('geoid06_ak.bin', 'geoid06_ak.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('geoid06_ak.bin', 'geoid06_ak.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
----------------------------
|
||||
-- US GEOID09 height models
|
||||
----------------------------
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('geoid09_ak.bin', 'geoid09_ak.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('geoid09_ak.bin', 'geoid09_ak.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('geoid09_conus.bin', 'geoid09_conus.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('geoid09_conus.bin', 'geoid09_conus.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('g2009g01.bin', 'g2009g01.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('g2009g01.bin', 'g2009g01.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('g2009s01.bin', 'g2009s01.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('g2009s01.bin', 'g2009s01.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('g2009p01.bin', 'g2009p01.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('g2009p01.bin', 'g2009p01.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
-- Not mapped:
|
||||
-- g2009h01.gtx : Hawaii
|
||||
@@ -524,8 +524,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('g2012bu0.bin',
|
||||
'g2012bu0.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -540,8 +540,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('g2012ba0.bin',
|
||||
'g2012ba0.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -556,8 +556,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('g2012bp0.bin',
|
||||
'g2012bp0.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -572,8 +572,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('g2012bg0.bin',
|
||||
'g2012bg0.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -588,8 +588,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('g2012bs0.bin',
|
||||
'g2012bs0.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -598,10 +598,10 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
----------------------------
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('g2018u0.bin', 'g2018u0.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('g2018u0.bin', 'g2018u0.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory)
|
||||
VALUES ('g2018p0.bin', 'g2018p0.gtx', 'GTX', 'vgridshift', 1, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
VALUES ('g2018p0.bin', 'g2018p0.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);
|
||||
|
||||
----------------------------
|
||||
-- French vertical grids
|
||||
@@ -617,8 +617,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('RAF09.mnt',
|
||||
'RAF09.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -632,8 +632,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('RAF18.tac',
|
||||
'RAF18.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -647,8 +647,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('RAC09.mnt',
|
||||
'RAC09.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -662,8 +662,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('ggm00.txt',
|
||||
'ggm00v2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -677,8 +677,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('ggg00.txt',
|
||||
'ggg00v2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -692,8 +692,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('ggg00_mg.txt',
|
||||
'ggg00_mgv2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -707,8 +707,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('ggg00_sm.txt',
|
||||
'ggg00_smv2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -722,8 +722,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('ggg00_ls.txt',
|
||||
'ggg00_lsv2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -737,8 +737,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('ggg00_ld.txt',
|
||||
'RALDW842016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -752,8 +752,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('RALDW842016.mnt',
|
||||
'RALDW842016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -767,8 +767,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('ggg00_sb.txt',
|
||||
'ggg00_sbv2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -782,8 +782,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('gg10_mart.txt',
|
||||
'RAMART2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -797,8 +797,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('RAMART2016.mnt',
|
||||
'RAMART2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -812,8 +812,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('gg10_gtbt.txt',
|
||||
'RAGTBT2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -827,8 +827,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('RAGTBT2016.mnt',
|
||||
'RAGTBT2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -842,8 +842,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('gg10_mg.txt',
|
||||
'RAMG2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -857,8 +857,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('RAMG2016.mnt',
|
||||
'RAMG2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -872,8 +872,23 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('gg10_sm.txt',
|
||||
'gg10_smv2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
proj_method,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('gg10_smv2.mnt',
|
||||
'gg10_smv2.gtx',
|
||||
'GTX',
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -887,8 +902,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('gg10_ls.txt',
|
||||
'RALS2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -902,8 +917,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('RALS2016.mnt',
|
||||
'RALS2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -917,8 +932,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('gg10_ld.txt',
|
||||
'RALD2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -932,8 +947,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('RALD2016.mnt',
|
||||
'RALD2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -947,8 +962,23 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('gg10_sb.txt',
|
||||
'gg10_sbv2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
proj_method,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('gg10_sbv2.mnt',
|
||||
'gg10_sbv2.gtx',
|
||||
'GTX',
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -962,8 +992,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('ggguy00.txt',
|
||||
'ggguy15.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -977,8 +1007,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('ggr99.txt',
|
||||
'RAR07_bl.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -992,8 +1022,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('GGSPM06v1.mnt',
|
||||
'ggspm06v1.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -1007,8 +1037,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('RASPM2018.mnt',
|
||||
'RASPM2018.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -1116,8 +1146,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('AUSGeoid09_GDA94_V1.01_DOV_windows.gsb', -- source file contains undulation in first band, and deflection in 2nd and 3d band
|
||||
'AUSGeoid09_V1.01.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-oceania',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -1131,8 +1161,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('AUSGeoid2020_windows_binary.gsb', -- source file contains undulation in first band, and deflection in 2nd and 3d band
|
||||
'AUSGeoid2020_20180201.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-oceania',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -1146,8 +1176,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
SELECT grid_name,
|
||||
'AUSGeoid98.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-oceania',
|
||||
NULL, NULL, NULL, NULL FROM grid_transformation WHERE
|
||||
grid_name LIKE '%DAT.htm' AND name LIKE 'GDA94 to AHD height%';
|
||||
@@ -1164,7 +1194,7 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('naptrans2008.gtx',
|
||||
'naptrans2008.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
'geoid_like',
|
||||
0,
|
||||
NULL, -- package name
|
||||
'https://salsa.debian.org/debian-gis-team/proj-rdnap/raw/upstream/2008/naptrans2008.gtx',
|
||||
@@ -1288,6 +1318,36 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
proj_method,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('portugal/DLX_ETRS89_geo',
|
||||
'DLx_ETRS89_geo.gsb',
|
||||
'NTv2',
|
||||
'hgridshift',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
proj_method,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('portugal/D73_ETRS89_geo',
|
||||
'D73_ETRS89_geo.gsb',
|
||||
'NTv2',
|
||||
'hgridshift',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
-- Canada provincial grids
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -1485,6 +1545,21 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
proj_method,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('TOR27CSv1.GSB',
|
||||
'TO27CSv1.GSB',
|
||||
'NTv2',
|
||||
'hgridshift',
|
||||
0,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
@@ -1647,8 +1722,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('HT2_0.byn',
|
||||
'HT2_2010v70.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -1662,8 +1737,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('CGG2013i08a.byn',
|
||||
'CGG2013ai08.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -1677,8 +1752,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('CGG2013n83a.byn',
|
||||
'CGG2013an83.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -1692,8 +1767,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('CGG2013i83.byn',
|
||||
'CGG2013i08.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -1707,8 +1782,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('CGG2013n83.byn',
|
||||
'CGG2013n83.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-north-america',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -1754,7 +1829,7 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('Icegeoid_ISN2004.gtx',
|
||||
'Icegeoid_ISN2004.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
@@ -1769,7 +1844,7 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('Icegeoid_ISN93.gtx',
|
||||
'Icegeoid_ISN93.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
@@ -1784,7 +1859,7 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('Icegeoid_ISN2016.gtx',
|
||||
'Icegeoid_ISN2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
@@ -1985,6 +2060,26 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
'proj-datumgrid-oceania',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
-- WARNING: this builds the new entries from the above deprecated ones
|
||||
-- A check has been added in commit.sql to verify that a mapping from
|
||||
-- auckht1946-nzvd2016.gtx exists in this table, due to the below insert
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
proj_method,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
SELECT proj_grid_name,
|
||||
proj_grid_name, 'GTX',
|
||||
'vgridshift',
|
||||
0,
|
||||
'proj-datumgrid-oceania',
|
||||
NULL, NULL, NULL, NULL
|
||||
FROM grid_alternatives
|
||||
WHERE proj_grid_name LIKE '%-nzvd2016.gtx';
|
||||
|
||||
-- Superseded
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
@@ -1995,8 +2090,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('New_Zealand_Quasigeoid_2016.csv',
|
||||
'nzgeoid2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-oceania',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -2007,12 +2102,65 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('nzgeoid09.sid',
|
||||
'nzgeoid2009.gtx',
|
||||
VALUES ('nzgeoid2016.gtx',
|
||||
'nzgeoid2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-oceania',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
-- Superseded
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
proj_method,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('nzgeoid09.sid',
|
||||
'nzgeoid2009.gtx',
|
||||
'GTX',
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-oceania',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
proj_method,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('nzgeoid2009.gtx',
|
||||
'nzgeoid2009.gtx',
|
||||
'GTX',
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-oceania',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
-- Slovakia
|
||||
--
|
||||
-- The definition of EPSG:8364 (JTSK03 to JTSK) uses NADCON method which is not supported by PROJ.
|
||||
-- UGKK (Slovak Geodetic and Cartographic Institute) provides also NTv2 grid file in addition
|
||||
-- to NADCON .las/.los files, so we define the NTv2 file here as an alternative.
|
||||
-- The file is available online but it does not have a confirmed open license yet,
|
||||
-- so it is not available in proj-datumgrid-europe for now
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
proj_method,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url,
|
||||
direct_download, open_license, directory)
|
||||
VALUES ('Slovakia_JTSK03_to_JTSK.LAS',
|
||||
'Slovakia_JTSK03_to_JTSK.gsb',
|
||||
'NTv2',
|
||||
'hgridshift',
|
||||
0,
|
||||
NULL,
|
||||
'https://www.geoportal.sk/files/gz/slovakia_jtsk03_to_jtsk_ntv2.zip',
|
||||
0, 0, NULL);
|
||||
|
||||
@@ -4,7 +4,7 @@ INSERT INTO "grid_transformation" VALUES('EPSG','1068','Guam 1963 to NAD83(HARN)
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1069','Guam 1963 to WGS 84 (2)','Parameter files are from Guam 1963 to NAD83(HARN) (1) (code 1068), but for many purposes NAD83(HARN) can be considered to be coincident with WGS 84 within the accuracy of the transformation.','Accuracy 5m.','EPSG','9613','NADCON','EPSG','4675','EPSG','4326','EPSG','3255',5.0,'EPSG','8657','Latitude difference file','guhpgn.las','EPSG','8658','Longitude difference file','guhpgn.los',NULL,NULL,'EPSG-Gum',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1241','NAD27 to NAD83 (1)','Uses NADCON method which expects longitudes positive west; EPSG GeogCRS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.','Accuracy at 67% confidence level is 0.15m onshore, 5m nearshore and undetermined farther offshore.','EPSG','9613','NADCON','EPSG','4267','EPSG','4269','EPSG','2374',0.15,'EPSG','8657','Latitude difference file','conus.las','EPSG','8658','Longitude difference file','conus.los',NULL,NULL,'NGS-Usa Conus',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1243','NAD27 to NAD83 (2)','Uses NADCON method which expects longitudes positive west; EPSG GeogCRS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east. May be used as transformation to WGS 84 - see NAD27 to WGS 84 (85) (code 15864).','Accuracy at 67% confidence level is 0.5m onshore, 5m nearshore and undetermined farther offshore.','EPSG','9613','NADCON','EPSG','4267','EPSG','4269','EPSG','2373',0.5,'EPSG','8657','Latitude difference file','alaska.las','EPSG','8658','Longitude difference file','alaska.los',NULL,NULL,'NGS-Usa AK',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1295','RGNC91-93 to NEA74 Noumea (4)','Emulation using NTv2 method of tfm NEA74 Noumea to RGNC91-93 (3) (code 15943). Note reversal of sign of parameter values in grid file.','Accuracy 5-10cm.','EPSG','9615','NTv2','EPSG','4749','EPSG','4644','EPSG','2823',0.05,'EPSG','8656','Latitude and longitude difference file','RGNC1991_NEA74Noumea.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ESRI-Ncl 0.05m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1295','RGNC91-93 to NEA74 Noumea (4)','Emulation using NTv2 method of tfm NEA74 Noumea to RGNC91-93 (3) (code 9328). Note reversal of sign of parameter values in grid file.','Accuracy 5-10cm.','EPSG','9615','NTv2','EPSG','4749','EPSG','4644','EPSG','2823',0.05,'EPSG','8656','Latitude and longitude difference file','RGNC1991_NEA74Noumea.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ESRI-Ncl 0.05m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1312','NAD27 to NAD83 (3)','Uses NTv1 method. Replaced in Quebec by code 1462 and elsewhere in 1997 by NTv2 (transformation code 1313). Input expects longitudes to be positive west; EPSG GeogCRS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.','Historic record only - now superseded - see remarks.','EPSG','9614','NTv1','EPSG','4267','EPSG','4269','EPSG','1061',1.0,'EPSG','8656','Latitude and longitude difference file','NTv1_0.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'GC-Can NT1',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1313','NAD27 to NAD83 (4)','Uses NTv2 data files. Replaces NTv1 (transformation code 1312) except in Quebec. Input expects longitudes to be positive west; EPSG GeogCRS NAD27 (code 4267) and (code 4269) have longitudes positive east. May be used as tfm to WGS 84 - see code 1693.','Accuracy 1-2 metres.','EPSG','9615','NTv2','EPSG','4267','EPSG','4269','EPSG','4517',1.5,'EPSG','8656','Latitude and longitude difference file','NTv2_0.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'GC-Can NT2',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1451','NAD27(CGQ77) to NAD83 (1)','Replaced by NAD27(CGQ77) to NAD83 (2) (code 1575). Uses NT method which expects longitudes positive west; EPSG GeogCRSs CGQ77 (code 4609) and NAD83 (code 4269) have longitudes positive east.','Historic record only - now superseded - see remarks.','EPSG','9614','NTv1','EPSG','4609','EPSG','4269','EPSG','1368',1.0,'EPSG','8656','Latitude and longitude difference file','PQV4.DAC',NULL,NULL,NULL,NULL,NULL,NULL,'SGQ-Can QC NT1',0);
|
||||
@@ -163,9 +163,9 @@ INSERT INTO "grid_transformation" VALUES('EPSG','5334','ETRS89 to Belfast height
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','5335','ETRS89 to Malin Head height (1)','May be used for transformations from WGS 84 to Malin Head. Replaced by ETRS89 to Malin Head height (2) (code 7959).','Derivation of gravity-related heights from GPS observations.','EPSG','1045','Geographic3D to GravityRelatedHeight (OSGM02-Ire)','EPSG','4937','EPSG','5731','EPSG','1305',0.04,'EPSG','8666','Geoid (height correction) model file','OSGM02_RoI.txt',NULL,NULL,NULL,NULL,NULL,NULL,'OS-Ire',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','5338','OSGB 1936 to ETRS89 (1)','Approximate alternative to official OSTN02 method (tfm code 7952). May be taken as approximate transformation OSGB 1936 to WGS 84 - see code 5339.','Accuracy at 2000 test points compared to official OSTN02 (tfm code 1039): latitude 0.5mm average, 17mm maximum; longitude 0.8mm average, 23mm maximum.','EPSG','9615','NTv2','EPSG','4277','EPSG','4258','EPSG','1264',0.03,'EPSG','8656','Latitude and longitude difference file','OSTN02_NTv2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'OSGB-UK Gbr02 NT',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','5339','OSGB 1936 to WGS 84 (7)','Parameter values taken from OSGB 1936 to ETRS89 (1) (tfm code 5338) assuming that ETRS89 is coincident with WGS 84 within the accuracy of the tfm. Within accuracy of the tfm equivalent to OSGB 1936 / British National Grid to WGS 84 (2) (tfm code 15956).','Accuracy 1m.','EPSG','9615','NTv2','EPSG','4277','EPSG','4326','EPSG','1264',1.0,'EPSG','8656','Latitude and longitude difference file','OSTN02_NTv2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'OGP-UK Gbr02 NT',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','5409','NGVD29 height to NAVD88 height (1)','Interpolation within the gridded data file may be made using any of the horizontal CRSs NAD27, NAD83 or NAD83(HARN).','Accuracy 2cm','EPSG','9658','VERTCON','EPSG','5702','EPSG','5703','EPSG','2950',0.02,'EPSG','8732','Vertical offset file','vertconw.94',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus W',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','5410','NGVD29 height to NAVD88 height (2)','Interpolation within the gridded data file may be made using any of the horizontal CRSs NAD27, NAD83 or NAD83(HARN).','Accuracy 2cm','EPSG','9658','VERTCON','EPSG','5702','EPSG','5703','EPSG','2949',0.02,'EPSG','8732','Vertical offset file','vertconc.94',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus C',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','5411','NGVD29 height to NAVD88 height (3)','Interpolation within the gridded data file may be made using any of the horizontal CRSs NAD27, NAD83 or NAD83(HARN).','Accuracy 2cm','EPSG','9658','VERTCON','EPSG','5702','EPSG','5703','EPSG','2948',0.02,'EPSG','8732','Vertical offset file','vertcone.94',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus E',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','5409','NGVD29 height to NAVD88 height (1)','Interpolation within the gridded data file may be made using any of the horizontal CRSs NAD27, NAD83 or NAD83(HARN).','Accuracy 2cm','EPSG','9658','Vertical Offset by Grid Interpolation (VERTCON)','EPSG','5702','EPSG','5703','EPSG','2950',0.02,'EPSG','8732','Vertical offset file','vertconw.94',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus W',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','5410','NGVD29 height to NAVD88 height (2)','Interpolation within the gridded data file may be made using any of the horizontal CRSs NAD27, NAD83 or NAD83(HARN).','Accuracy 2cm','EPSG','9658','Vertical Offset by Grid Interpolation (VERTCON)','EPSG','5702','EPSG','5703','EPSG','2949',0.02,'EPSG','8732','Vertical offset file','vertconc.94',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus C',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','5411','NGVD29 height to NAVD88 height (3)','Interpolation within the gridded data file may be made using any of the horizontal CRSs NAD27, NAD83 or NAD83(HARN).','Accuracy 2cm','EPSG','9658','Vertical Offset by Grid Interpolation (VERTCON)','EPSG','5702','EPSG','5703','EPSG','2948',0.02,'EPSG','8732','Vertical offset file','vertcone.94',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus E',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','5502','RGAF09 to Martinique 1987 height (1)','Replaces tfm from RRAF 1991, code 4561. May be used for transformations from WGS 84 to IGN 1987. Accuracy at each 0.025 deg x 0.025 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','5488','EPSG','5756','EPSG','3276',998.0,'EPSG','8666','Geoid (height correction) model file','gg10_mart.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Mtq',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','5503','RGAF09 to Guadeloupe 1988 height (1)','Replaces tfm from RRAF 1991, code 4562. May be used for transformations from WGS 84 to IGN 1988. Accuracy at each 0.025 deg x 0.025 degree grid node is given within the geoid model file.','Derivation of gravity-related heights from GPS observations. Accuracy 0.2m within onshore areas.','EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','5488','EPSG','5757','EPSG','2892',0.2,'EPSG','8666','Geoid (height correction) model file','gg10_gtbt.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Glp GT',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','5504','RGAF09 to IGN 1988 MG height (1)','Replaces tfm from RRAF 1991, code 4563. May be used for transformations from WGS 84 to IGN 1988 MG. Accuracy at each 0.025 deg x 0.025 degree grid node is given within the geoid model file.','Derivation of gravity-related heights from GPS observations. Accuracy 0.2m within onshore area.','EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','5488','EPSG','5617','EPSG','2894',0.2,'EPSG','8666','Geoid (height correction) model file','gg10_mg.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Glp MG',0);
|
||||
@@ -193,8 +193,8 @@ INSERT INTO "grid_transformation" VALUES('EPSG','6140','CIGD11 to CBVD61 height
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','6188','Lisbon to ETRS89 (4)','Derived from 1129 common stations in the national geodetic network. Residuals at 130 further test points average 0.09m, maximum 0.30m.','Decimetre accuracy.','EPSG','9615','NTv2','EPSG','4207','EPSG','4258','EPSG','1294',0.1,'EPSG','8656','Latitude and longitude difference file','DLx_ETRS89_geo.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'IGP-Prt 0.1m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','6189','Datum 73 to ETRS89 (6)','Derived from 1129 common stations in the national geodetic network. Residuals at 130 further test points average 0.06m, maximum 0.16m.','Decimetre accuracy.','EPSG','9615','NTv2','EPSG','4274','EPSG','4258','EPSG','1294',0.1,'EPSG','8656','Latitude and longitude difference file','D73_ETRS89_geo.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'IGP-Prt 0.1m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','6209','NAD27 to NAD83(CSRS) (4)','Introduced in 2011. Precision of 20 cm in area covered by the input data set and 40 cm anywhere else, with the exception of the northwest area of the province (near the border with Quebec) where the precision deteriorates to 80 cm.','Used in the GeoNB Coordinate Transformation Service.','EPSG','9615','NTv2','EPSG','4267','EPSG','4617','EPSG','1447',0.8,'EPSG','8656','Latitude and longitude difference file','NB2783v2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'SNB-Can NB',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','6326','NAD83(2011) to NAVD88 height (1)','Uses Geoid12B hybrid model. Renamed from Geoid12A but with no data changes. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6319','EPSG','5703','EPSG','1323',0.02,'EPSG','8666','Geoid (height correction) model file','g2012bu0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','6327','NAD83(2011) to NAVD88 height (2)','Uses Geoid12B hybrid model. Renamed from Geoid12A but with no data changes. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6319','EPSG','5703','EPSG','1330',0.02,'EPSG','8666','Geoid (height correction) model file','g2012ba0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US AK',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','6326','NAD83(2011) to NAVD88 height (1)','Uses Geoid12B hybrid model. Renamed from Geoid12A but with no data changes. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','6319','EPSG','5703','EPSG','1323',0.02,'EPSG','8666','Geoid (height correction) model file','g2012bu0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','6327','NAD83(2011) to NAVD88 height (2)','Uses Geoid12B hybrid model. Renamed from Geoid12A but with no data changes. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','6319','EPSG','5703','EPSG','1330',0.02,'EPSG','8666','Geoid (height correction) model file','g2012ba0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US AK',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','6648','NAD83(CSRS) to CGVD2013 height (1)','Uses CGG2013 model which uses bi-quadratic interpolation; bi-linear interpolation of the grid file will give results agreeing to within 1cm 99.97% of the time.','Derivation of gravity-related heights from GPS observations.','EPSG','1060','Geographic3D to GravityRelatedHeight (CGG2013)','EPSG','4955','EPSG','6647','EPSG','1061',0.03,'EPSG','8666','Geoid (height correction) model file','CGG2013n83.byn',NULL,NULL,NULL,NULL,NULL,NULL,'NRC Can CGG2013',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','6712','Tokyo to JGD2000 (2)','NTv2 grid derived by ESRI from that supplied by GSI in application tky2jgd. After Tohoku earthquake of 2011 accuracy in northern Honshu reduced to 1-5m and in this area replaced by Tokyo to JGD2011 (tfm code 6714).','Surveying, mapping and civil engineering.','EPSG','9615','NTv2','EPSG','4301','EPSG','4612','EPSG','3957',0.2,'EPSG','8656','Latitude and longitude difference file','tky2jgd.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Jpn',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','6713','JGD2000 to JGD2011 (1)','NTv2 grid derived by ESRI from that supplied by GSI in application patchjgd.','Surveying, mapping and civil engineering purposes','EPSG','9615','NTv2','EPSG','4612','EPSG','6668','EPSG','4170',0.2,'EPSG','8656','Latitude and longitude difference file','touhokutaiheiyouoki2011.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Jpn N Honshu',0);
|
||||
@@ -203,12 +203,12 @@ INSERT INTO "grid_transformation" VALUES('EPSG','6946','TM75 to ETRS89 (3)','App
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','6947','TM75 to WGS 84 (4)','Parameter values taken from TM75 to ETRS89 (3) (tfm code 6946) assuming that ETRS89 is coincident with WGS 84 within the accuracy of the tfm. Within accuracy of the tfm equivalent to TM75 to WGS 84 (1) (tfm code 1042).','Emulation of polynomial (tfm code 1042). Accuracy 1m.','EPSG','9615','NTv2','EPSG','4300','EPSG','4326','EPSG','1305',1.0,'EPSG','8656','Latitude and longitude difference file','tm75_etrs89.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Ire NT',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','6948','RD/83 to ETRS89 (2)','Recommended by Saxony State Spatial Data and Land Survey Corporation for transformations based on official geospatial data of Saxony. See www.landesvermessung.sachsen.de/inhalt/etrs/method/method.html#ntv2.','Cadastre. Accuracy 3mm within Saxony; within the rest of RD/83 definition area results at least coincide with EPSG transformation code15868.','EPSG','9615','NTv2','EPSG','4745','EPSG','4258','EPSG','2545',0.03,'EPSG','8656','Latitude and longitude difference file','NTv2_SN.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'GeoSN-Deu SN',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7000','Amersfoort to ETRS89 (7)','Consistent to within 1mm with official RNAPTRANS(TM)2008 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','rdtrans2008.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'RDNAP-Nld 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7001','ETRS89 to NAP height (1)','Alternative to vertical component of official 3D RDNAPTRANS(TM)2008. The naptrans2008 correction grid incorporates the NLGEO2004 geoid model plus a fixed offset.','Derivation of gravity-related heights from GPS observations. When used in conjunction with transformation Amersfoort to ETRS89 (7) (code 7000), this transformation is reversible.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4937','EPSG','5709','EPSG','1275',0.01,'EPSG','8666','Geoid (height correction) model file','naptrans2008.gtx',NULL,NULL,NULL,NULL,NULL,NULL,'RDNAP-Nld 2008',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7646','NAD83(2011) to PRVD02 height (1)','Uses Geoid12B hybrid model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6319','EPSG','6641','EPSG','3294',0.02,'EPSG','8666','Geoid (height correction) model file','g2012bp0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Pri 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7647','NAD83(2011) to VIVD09 height (1)','Uses Geoid12B hybrid model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6319','EPSG','6642','EPSG','3330',0.02,'EPSG','8666','Geoid (height correction) model file','g2012bp0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Vir 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7648','NAD83(MA11) to GUVD04 height (1)','Uses Geoid12B hybrid model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6323','EPSG','6644','EPSG','3255',0.02,'EPSG','8666','Geoid (height correction) model file','g2012bg0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Gum 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7649','NAD83(MA11) to NMVD03 height (1)','Uses Geoid12B hybrid model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6323','EPSG','6640','EPSG','4171',0.02,'EPSG','8666','Geoid (height correction) model file','g2012bg0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Mnp 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7650','NAD83(PA11) to ASVD02 height (1)','Uses Geoid12B hybrid model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6320','EPSG','6643','EPSG','2288',0.02,'EPSG','8666','Geoid (height correction) model file','g2012bs0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Asm 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7001','ETRS89 to NAP height (1)','Alternative to vertical component of official 3D RDNAPTRANS(TM)2008. The naptrans2008 correction grid incorporates the NLGEO2004 geoid model plus a fixed offset.','Derivation of gravity-related heights from GPS observations. When used in conjunction with transformation Amersfoort to ETRS89 (7) (code 7000), this transformation is reversible.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4937','EPSG','5709','EPSG','1275',0.01,'EPSG','8666','Geoid (height correction) model file','naptrans2008.gtx',NULL,NULL,NULL,NULL,NULL,NULL,'RDNAP-Nld 2008',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7646','NAD83(2011) to PRVD02 height (1)','Uses Geoid12B hybrid model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','6319','EPSG','6641','EPSG','3294',0.02,'EPSG','8666','Geoid (height correction) model file','g2012bp0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Pri 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7647','NAD83(2011) to VIVD09 height (1)','Uses Geoid12B hybrid model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','6319','EPSG','6642','EPSG','3330',0.02,'EPSG','8666','Geoid (height correction) model file','g2012bp0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Vir 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7648','NAD83(MA11) to GUVD04 height (1)','Uses Geoid12B hybrid model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','6324','EPSG','6644','EPSG','3255',0.02,'EPSG','8666','Geoid (height correction) model file','g2012bg0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Gum 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7649','NAD83(MA11) to NMVD03 height (1)','Uses Geoid12B hybrid model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','6324','EPSG','6640','EPSG','4171',0.02,'EPSG','8666','Geoid (height correction) model file','g2012bg0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Mnp 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7650','NAD83(PA11) to ASVD02 height (1)','Uses Geoid12B hybrid model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','6321','EPSG','6643','EPSG','2288',0.02,'EPSG','8666','Geoid (height correction) model file','g2012bs0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Asm 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7655','PNG94 to PNG08 height (1)','','Derivation of gravity-related heights from GPS observations.','EPSG','1059','Geographic3D to GravityRelatedHeight (PNG)','EPSG','5545','EPSG','7447','EPSG','4384',0.2,'EPSG','8666','Geoid (height correction) model file','PNG08.DAT',NULL,NULL,NULL,NULL,NULL,NULL,'QC-Png',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7673','CH1903 to CHTRF95 (1)','Equivalent to concatenation of transformations 15486 and 1509 to within 2cm. Also used as transformation between CH1903 and ETRS89 (see code 7674).','Approximation (to better than 2m) using NTv2 method of results of FINELTRA programme concatenated with LV-95 parameters.','EPSG','9615','NTv2','EPSG','4149','EPSG','4151','EPSG','1286',0.25,'EPSG','8656','Latitude and longitude difference file','CHENyx06_ETRS.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'BfL-Che NTv2',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7674','CH1903 to ETRS89 (2)','Replaces tfm code 1646. Equivalent to concatenation of transformations 15486 and 1647 to within 2cm. Also used as transformation between CH1903 and CHTRF95 (see code 7673). May be used as approximate tfm CH1903 to WGS 84 - see code 7788.','Approximation (to better than 2cm) using NTv2 method of results of FINELTRA programme concatenated with LV-95 parameters.','EPSG','9615','NTv2','EPSG','4149','EPSG','4258','EPSG','1286',0.25,'EPSG','8656','Latitude and longitude difference file','CHENyx06_ETRS.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'BfL-Che NTv2',0);
|
||||
@@ -242,9 +242,9 @@ INSERT INTO "grid_transformation" VALUES('EPSG','7891','SHGD2015 to SHVD2015 hei
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7957','Canada velocity grid v6','NOTE: Before being deprecated this record had a second parameter (code 1048, value 8251) which has been removed due to being non-compliant with the data model.','Change of coordinate epoch for points referenced to NAD83(CSRS)v6.','EPSG','1070','Point motion by grid (Canada NTv2_Vel)','EPSG','8251','EPSG','8251','EPSG','1061',0.01,'EPSG','1050','Point motion velocity grid file','cvg60.cvb',NULL,NULL,NULL,NULL,NULL,NULL,'NRC-Can cvg6.0',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7958','ETRS89 to Belfast height (2)','OSGM15 supersedes OSGM02 geoid model. Replaces ETRS89 to Belfast height (1) (tfm code 5334).','Derivation of gravity-related heights from OSGM15 geoid model.','EPSG','1072','Geographic3D to GravityRelatedHeight (OSGM15-Ire)','EPSG','4937','EPSG','5732','EPSG','2530',0.014,'EPSG','8666','Geoid (height correction) model file','OSGM15_Belfast.gri',NULL,NULL,NULL,NULL,NULL,NULL,'OS-UK NI 2015',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7959','ETRS89 to Malin Head height (2)','OSGM15 supersedes OSGM02 geoid model. Replaces ETRS89 to Malin Head height (1) (tfm code 5335).','Derivation of gravity-related heights from OSGM15 geoid model.','EPSG','1072','Geographic3D to GravityRelatedHeight (OSGM15-Ire)','EPSG','4937','EPSG','5731','EPSG','1305',0.023,'EPSG','8666','Geoid (height correction) model file','OSGM15_Malin.gri',NULL,NULL,NULL,NULL,NULL,NULL,'OS-Ire 2015',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7969','NGVD29 height (m) to NAVD88 height (1)','In this area the NGVD29 vertical reference surface is approximately 0.6 to 1.6m below the NAVD88 datum surface. Interpolation within the gridded data file may be made using either NAD27 or any of the realizations of NAD83 applicable to US conus.','Change of height to a different vertical reference surface.','EPSG','9658','VERTCON','EPSG','7968','EPSG','5703','EPSG','2950',0.02,'EPSG','8732','Vertical offset file','vertconw.94',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus W',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7970','NGVD29 height (m) to NAVD88 height (2)','In the SE of this area the NGVD29 surface is 0 to 0.1m above the NAVD88 surface; in the W it is 0.6 to 0.9m below the NAVD88 surface. Interpolation in the data file may be made using either NAD27 or any of the NAD83 realizations applicable to US conus.','Change of height to a different vertical reference surface.','EPSG','9658','VERTCON','EPSG','7968','EPSG','5703','EPSG','2949',0.02,'EPSG','8732','Vertical offset file','vertconc.94',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus C',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7971','NGVD29 height (m) to NAVD88 height (3)','In this area the NGVD29 vertical reference surface is approximately 0 to 0.5m above the NAVD88 surface. Interpolation within the gridded data file may be made using either NAD27 or any of the realisations of NAD83 applicable to US conus.','Change of height to a different vertical reference surface.','EPSG','9658','VERTCON','EPSG','7968','EPSG','5703','EPSG','2948',0.02,'EPSG','8732','Vertical offset file','vertcone.94',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus E',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7969','NGVD29 height (m) to NAVD88 height (1)','In this area the NGVD29 vertical reference surface is approximately 0.6 to 1.6m below the NAVD88 datum surface. Interpolation within the gridded data file may be made using either NAD27 or any of the realizations of NAD83 applicable to US conus.','Change of height to a different vertical reference surface.','EPSG','9658','Vertical Offset by Grid Interpolation (VERTCON)','EPSG','7968','EPSG','5703','EPSG','2950',0.02,'EPSG','8732','Vertical offset file','vertconw.94',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus W',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7970','NGVD29 height (m) to NAVD88 height (2)','In the SE of this area the NGVD29 surface is 0 to 0.1m above the NAVD88 surface; in the W it is 0.6 to 0.9m below the NAVD88 surface. Interpolation in the data file may be made using either NAD27 or any of the NAD83 realizations applicable to US conus.','Change of height to a different vertical reference surface.','EPSG','9658','Vertical Offset by Grid Interpolation (VERTCON)','EPSG','7968','EPSG','5703','EPSG','2949',0.02,'EPSG','8732','Vertical offset file','vertconc.94',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus C',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','7971','NGVD29 height (m) to NAVD88 height (3)','In this area the NGVD29 vertical reference surface is approximately 0 to 0.5m above the NAVD88 surface. Interpolation within the gridded data file may be made using either NAD27 or any of the realisations of NAD83 applicable to US conus.','Change of height to a different vertical reference surface.','EPSG','9658','Vertical Offset by Grid Interpolation (VERTCON)','EPSG','7968','EPSG','5703','EPSG','2948',0.02,'EPSG','8732','Vertical offset file','vertcone.94',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus E',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8037','WGS 84 to MSL height (1)','Parameter values are from WGS 84 to EGM2008 height (2) (tfm code 3859) assuming that the EGM2008 height surface approximates to MSL height within the accuracy of the transformation.','Derivation of gravity-related heights referenced to an unspecified mean sea level from GPS observations.','EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4979','EPSG','5714','EPSG','1262',0.5,'EPSG','8666','Geoid (height correction) model file','Und_min1x1_egm2008_isw=82_WGS84_TideFree.gz',NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-World',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8268','GR96 to GVR2000 height (1)','Defines GVR2000. File is also available in NOAA VDatum format (ggeoid2000.gtx) and GeoTIFF format (ggeoid2000.tif).','Derivation of gravity-related heights from GNSS observations.','EPSG','1047','Geographic3D to GravityRelatedHeight (Gravsoft)','EPSG','4909','EPSG','8266','EPSG','4461',0.1,'EPSG','8666','Geoid (height correction) model file','gr2000g.gri',NULL,NULL,NULL,NULL,NULL,NULL,'SDFE-Grl',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8269','GR96 to GVR2016 height (1)','Defines GVR2016. File is also available in NOAA VDatum format (ggeoid2016.gtx) and GeoTIFF format (ggeoid2016.tif).','Derivation of gravity-related heights from GNSS observations.','EPSG','1047','Geographic3D to GravityRelatedHeight (Gravsoft)','EPSG','4909','EPSG','8267','EPSG','4454',0.1,'EPSG','8666','Geoid (height correction) model file','ggeoid16.gri',NULL,NULL,NULL,NULL,NULL,NULL,'SDFE-Grl',0);
|
||||
@@ -304,29 +304,29 @@ INSERT INTO "grid_transformation" VALUES('EPSG','9134','RGAF09 to IGN 1988 LS he
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9135','RGAF09 to IGN 1988 MG height (2)','Replaces RGAF09 to IGN 1988 MG height (1), CT code 5504. Accuracy 0.0.5-0.1m within onshore area.','Derivation of gravity-related heights from GPS observations.','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','5488','EPSG','5617','EPSG','2894',0.1,'EPSG','8666','Geoid (height correction) model file','RAMG2016.mnt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Glp MG 2016',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9136','RGAF09 to Martinique 1987 height (2)','Replaces RGAF09 to Martinique 1987 height (1) (CT code 5502). Accuracy 0.01m to 0.05m within onshore area.','Derivation of gravity-related heights from GPS observations.','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','5488','EPSG','5756','EPSG','3276',0.05,'EPSG','8666','Geoid (height correction) model file','RAMART2016.mnt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Mtq 2016',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9137','RGSPM06 to Danger 1950 height (1)','Accuracy 0.10m to 0.20m within onshore area.','Derivation of gravity-related heights from GPS observations.','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','4466','EPSG','5792','EPSG','1220',0.2,'EPSG','8666','Geoid (height correction) model file','GGSPM06v1.mnt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-SPM',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9160','NAD83(HARN) to NAVD88 height (1)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4957','EPSG','5703','EPSG','2977',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus NW',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9161','NAD83(HARN) to NAVD88 height (2)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4957','EPSG','5703','EPSG','2978',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u02.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CNW',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9162','NAD83(HARN) to NAVD88 height (3)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4957','EPSG','5703','EPSG','2979',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u03.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CNE',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9163','NAD83(HARN) to NAVD88 height (4)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4957','EPSG','5703','EPSG','2980',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u04.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus NE',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9164','NAD83(HARN) to NAVD88 height (5)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4957','EPSG','5703','EPSG','2973',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u05.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus SW',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9165','NAD83(HARN) to NAVD88 height (6)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4957','EPSG','5703','EPSG','2974',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u06.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CSW',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9166','NAD83(HARN) to NAVD88 height (7)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4957','EPSG','5703','EPSG','2975',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u07.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CSE',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9167','NAD83(HARN) to NAVD88 height (8)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4957','EPSG','5703','EPSG','2976',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u08.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus SE',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9168','NAD83(FBN) to NAVD88 height (1)','Uses Geoid03 hybrid model. Replaced by 2009 model (CT code 9173).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','8542','EPSG','5703','EPSG','1323',0.02,'EPSG','8666','Geoid (height correction) model file','geoid03_conus.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9169','NAD83(HARN) to NAVD88 height (9)','Uses Geoid06 hybrid model. Replaced by Geoid09 model (CT code 9174).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4957','EPSG','5703','EPSG','1330',0.02,'EPSG','8666','Geoid (height correction) model file','geoid06_ak.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US AK',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9170','NAD83(FBN) to ASVD02 height (1)','Uses Geoid09 hybrid model. Replaced by Geoid12 model (CT code 7650).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','8542','EPSG','6643','EPSG','2288',0.05,'EPSG','8666','Geoid (height correction) model file','g2009s01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Asm 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9171','NAD83(FBN) to GUVD04 height (1)','Uses Geoid09 hybrid model. Replaced by Geoid12 model (CT code 7648).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','8542','EPSG','6644','EPSG','3255',0.05,'EPSG','8666','Geoid (height correction) model file','g2009g01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Gum 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9172','NAD83(FBN) to NMVD03 height (1)','Uses Geoid09 hybrid model. Replaced by Geoid12 model (CT code 7649).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','8542','EPSG','6640','EPSG','4171',0.05,'EPSG','8666','Geoid (height correction) model file','g2009g01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Mnp 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9173','NAD83(NSRS2007) to NAVD88 height (1)','Uses Geoid09 hybrid model. Replaced by 2012 model (CT code 6326).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4893','EPSG','5703','EPSG','1323',0.05,'EPSG','8666','Geoid (height correction) model file','geoid09_conus.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9174','NAD83(NSRS2007) to NAVD88 height (2)','Uses Geoid09 hybrid model. Replaced by Geoid12 model (CT code 6327).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4893','EPSG','5703','EPSG','1330',0.05,'EPSG','8666','Geoid (height correction) model file','geoid09_ak.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US AK 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9175','NAD83(NSRS2007) to PRVD02 height (1)','Uses Geoid09 hybrid model. Replaced by Geoid12 model (CT code 7646).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4893','EPSG','6641','EPSG','3294',0.05,'EPSG','8666','Geoid (height correction) model file','g2009p01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Pri 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9176','NAD83(NSRS2007) to VIVD09 height (1)','Uses Geoid09 hybrid model. Replaced by Geoid12 model (CT code 7647).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4893','EPSG','6642','EPSG','3330',0.05,'EPSG','8666','Geoid (height correction) model file','g2009p01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Vir 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9160','NAD83(HARN) to NAVD88 height (1)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4957','EPSG','5703','EPSG','2977',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus NW',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9161','NAD83(HARN) to NAVD88 height (2)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4957','EPSG','5703','EPSG','2978',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u02.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CNW',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9162','NAD83(HARN) to NAVD88 height (3)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4957','EPSG','5703','EPSG','2979',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u03.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CNE',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9163','NAD83(HARN) to NAVD88 height (4)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4957','EPSG','5703','EPSG','2980',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u04.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus NE',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9164','NAD83(HARN) to NAVD88 height (5)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4957','EPSG','5703','EPSG','2973',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u05.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus SW',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9165','NAD83(HARN) to NAVD88 height (6)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4957','EPSG','5703','EPSG','2974',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u06.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CSW',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9166','NAD83(HARN) to NAVD88 height (7)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4957','EPSG','5703','EPSG','2975',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u07.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CSE',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9167','NAD83(HARN) to NAVD88 height (8)','Uses Geoid99 hybrid model. Replaced by 2003 model (CT code 9168).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4957','EPSG','5703','EPSG','2976',0.05,'EPSG','8666','Geoid (height correction) model file','g1999u08.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus SE',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9168','NAD83(FBN) to NAVD88 height (1)','Uses Geoid03 hybrid model. Replaced by 2009 model (CT code 9173).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','8542','EPSG','5703','EPSG','1323',0.02,'EPSG','8666','Geoid (height correction) model file','geoid03_conus.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9169','NAD83(HARN) to NAVD88 height (9)','Uses Geoid06 hybrid model. Replaced by Geoid09 model (CT code 9174).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4957','EPSG','5703','EPSG','1330',0.02,'EPSG','8666','Geoid (height correction) model file','geoid06_ak.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US AK',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9170','NAD83(FBN) to ASVD02 height (1)','Uses Geoid09 hybrid model. Replaced by Geoid12 model (CT code 7650).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','8542','EPSG','6643','EPSG','2288',0.05,'EPSG','8666','Geoid (height correction) model file','g2009s01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Asm 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9171','NAD83(FBN) to GUVD04 height (1)','Uses Geoid09 hybrid model. Replaced by Geoid12 model (CT code 7648).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','8542','EPSG','6644','EPSG','3255',0.05,'EPSG','8666','Geoid (height correction) model file','g2009g01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Gum 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9172','NAD83(FBN) to NMVD03 height (1)','Uses Geoid09 hybrid model. Replaced by Geoid12 model (CT code 7649).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','8542','EPSG','6640','EPSG','4171',0.05,'EPSG','8666','Geoid (height correction) model file','g2009g01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Mnp 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9173','NAD83(NSRS2007) to NAVD88 height (1)','Uses Geoid09 hybrid model. Replaced by 2012 model (CT code 6326).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4893','EPSG','5703','EPSG','1323',0.05,'EPSG','8666','Geoid (height correction) model file','geoid09_conus.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9174','NAD83(NSRS2007) to NAVD88 height (2)','Uses Geoid09 hybrid model. Replaced by Geoid12 model (CT code 6327).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4893','EPSG','5703','EPSG','1330',0.05,'EPSG','8666','Geoid (height correction) model file','geoid09_ak.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US AK 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9175','NAD83(NSRS2007) to PRVD02 height (1)','Uses Geoid09 hybrid model. Replaced by Geoid12 model (CT code 7646).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4893','EPSG','6641','EPSG','3294',0.05,'EPSG','8666','Geoid (height correction) model file','g2009p01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Pri 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9176','NAD83(NSRS2007) to VIVD09 height (1)','Uses Geoid09 hybrid model. Replaced by Geoid12 model (CT code 7647).','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4893','EPSG','6642','EPSG','3330',0.05,'EPSG','8666','Geoid (height correction) model file','g2009p01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Vir 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9187','RGAF09 to IGN 1988 SB height (2)','Accuracy 0.05m to 0.1m. Replaces RGAF09 to IGN 1988 SB height (1), transformation code 5508.','Derivation of gravity-related heights from GPS observations.','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','5488','EPSG','5619','EPSG','2891',0.1,'EPSG','8666','Geoid (height correction) model file','gg10_sbv2.mnt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Glp StB',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9188','RGAF09 to IGN 1988 SM height (2)','Accuracy 0.05m to 0.1m. Replaces RGAF09 to IGN 1988 SM height (1), transformation code 5505.','Derivation of gravity-related heights from GPS observations.','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','5488','EPSG','5620','EPSG','2890',0.1,'EPSG','8666','Geoid (height correction) model file','gg10_smv2.mnt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Glp StM',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9228','RGSPM06 to Danger 1950 height (2)','Accuracy 0.01m to 0.05m within onshore area. Replaces RGSPM06 to Danger 1950 height (1), CT code 9137.','Derivation of gravity-related heights from GPS observations.','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','4466','EPSG','5792','EPSG','1220',0.05,'EPSG','8666','Geoid (height correction) model file','RASPM2018.mnt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-SPM',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9229','NAD83(2011) to NAVD88 height (3)','Uses Geoid18 hybrid model. Replaces 12B model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6319','EPSG','5703','EPSG','1323',0.015,'EPSG','8666','Geoid (height correction) model file','g2018u0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus 18',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9230','NAD83(2011) to PRVD02 height (2)','Uses Geoid18 hybrid model. Replaces 12B model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6319','EPSG','6641','EPSG','3294',0.015,'EPSG','8666','Geoid (height correction) model file','g2018p0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Pri 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9231','NAD83(2011) to VIVD09 height (2)','Uses Geoid18 hybrid model. Replaces 12B model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6319','EPSG','6642','EPSG','3330',0.015,'EPSG','8666','Geoid (height correction) model file','g2018p0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Vir 18',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9229','NAD83(2011) to NAVD88 height (3)','Uses Geoid18 hybrid model. Replaces 12B model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','6319','EPSG','5703','EPSG','1323',0.015,'EPSG','8666','Geoid (height correction) model file','g2018u0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus 18',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9230','NAD83(2011) to PRVD02 height (2)','Uses Geoid18 hybrid model. Replaces 12B model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','6319','EPSG','6641','EPSG','3294',0.015,'EPSG','8666','Geoid (height correction) model file','g2018p0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Pri 12B',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9231','NAD83(2011) to VIVD09 height (2)','Uses Geoid18 hybrid model. Replaces 12B model. See information source for further information.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','6319','EPSG','6642','EPSG','3330',0.015,'EPSG','8666','Geoid (height correction) model file','g2018p0.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-Vir 18',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9232','ISN93 to ISN2016 (1)','Grid transformation based on Kriging between ISN93 and ISN2016. Accuracy is better than 5 cm in stable areas but can be around 25 cm in areas that have suffered deformation due to earthquake or volcanic eruption.','Spatial referencing.','EPSG','9615','NTv2','EPSG','4659','EPSG','8086','EPSG','1120',0.05,'EPSG','8656','Latitude and longitude difference file','ISN93_ISN2016.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'LMI-Isl',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9233','ISN2004 to ISN2016 (1)','Grid transformation based on Kriging between ISN2004 and ISN2016. Accuracy is better than 5 cm in stable areas but can be around 25 cm in areas that have suffered deformation due to earthquake or volcanic eruption.','Spatial referencing.','EPSG','9615','NTv2','EPSG','5324','EPSG','8086','EPSG','1120',0.05,'EPSG','8656','Latitude and longitude difference file','ISN2004_ISN2016.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'LMI-Isl',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9235','ATS77 to NAD83(CSRS)v3 (3)','Can be taken as an approximate transformation ATS77 to WGS 84 - see code 1851. Replaced by ATS77 to NAD83(CSRS)v6 (4) (transformation code 9106).','Accuracy 1-2 metres.','EPSG','9615','NTv2','EPSG','4122','EPSG','8240','EPSG','2313',1.5,'EPSG','8656','Latitude and longitude difference file','NS778301.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'NSGC-Can NS',0);
|
||||
@@ -341,6 +341,29 @@ INSERT INTO "grid_transformation" VALUES('EPSG','9243','NAD83 to NAD83(CSRS)v3 (
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9244','NAD83 to NAD83(CSRS)v4 (3)','This gridded difference file AB_CSRS.DAC will need to be renamed to AB_CSRS.gsb to run in some software suites. Formats identical, but AB file is provincial fit only. Can be taken as an approximate transformation NAD83 to WGS 84 - see code 1702.','Accuracy 1-2 metres.','EPSG','9615','NTv2','EPSG','4269','EPSG','8246','EPSG','2376',1.5,'EPSG','8656','Latitude and longitude difference file','AB_CSRS.DAC',NULL,NULL,NULL,NULL,NULL,NULL,'AB Env-Can AB',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9246','NAD83(CSRS)v6 to CGVD2013(CGG2013) height (1)','Uses CGG2013 model which uses bi-quadratic interpolation; bi-linear interpolation of the grid file will give results agreeing to within 1cm 99.97% of the time. Replaced by CGG2013a model (CT code 9247).','Derivation of gravity-related heights from GPS observations.','EPSG','1060','Geographic3D to GravityRelatedHeight (CGG2013)','EPSG','8251','EPSG','6647','EPSG','1061',0.03,'EPSG','8666','Geoid (height correction) model file','CGG2013n83.byn',NULL,NULL,NULL,NULL,NULL,NULL,'NRC Can CGG2013',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9247','NAD83(CSRS)v6 to CGVD2013(CGG2013a) height (1)','Uses CGG2013a model which uses bi-quadratic interpolation; bi-linear interpolation of the grid file will give results agreeing to within 1cm 99.97% of the time. Replaces CGG2013 model (CT code 9246).','Derivation of gravity-related heights from GPS observations.','EPSG','1060','Geographic3D to GravityRelatedHeight (CGG2013)','EPSG','8251','EPSG','9245','EPSG','1061',0.03,'EPSG','8666','Geoid (height correction) model file','CGG2013n83a.byn',NULL,NULL,NULL,NULL,NULL,NULL,'NRC Can CGG2013a',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9256','POSGAR 2007 to SRVN16 height (1)','Uses Geoid-AR16. See information source for more information.','Derivation of gravity-related heights from GNSS observations.','EPSG','1047','Geographic3D to GravityRelatedHeight (Gravsoft)','EPSG','5342','EPSG','9255','EPSG','4573',0.05,'EPSG','8666','Geoid (height correction) model file','GEOIDE-Ar16.gri',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Arg',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9275','GHA height to EVRF2000 Austria height (1)','Care! Austrian literature describes this transformation in direction EVRF2000 Austria height to GHA height with offset subtracted. EPSG method has offset as an addition. See method formula and example. The grid is implemented in BEV-Transformator.','Change of height to a different vertical reference surface.','EPSG','1080','Vertical Offset by Grid Interpolation (BEV AT)','EPSG','5778','EPSG','9274','EPSG','1037',0.05,'EPSG','8732','Vertical offset file','GV_HoehenGrid_V1.csv',NULL,NULL,NULL,NULL,'EPSG','4312','BEV-Aut',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9276','ETRS89 to EVRF2000 Austria height (1)','Austrian Geoid 2008. Accuracy 5cm (1 sigma). The transformation is implemented in BEV-Transformator.','Derivation of gravity-related heights from GNSS observations.','EPSG','1081','Geographic3D to GravityRelatedHeight (BEV AT)','EPSG','4937','EPSG','9274','EPSG','1037',0.05,'EPSG','8666','Geoid (height correction) model file','GEOID_GRS80_Oesterreich.csv',NULL,NULL,NULL,NULL,'EPSG','4167','BEV-Aut',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9277','MGI to EVRF2000 Austria height (1)','Austrian Geoid 2008 (Bessel ellipsoid). Accuracy 5cm (1 sigma). The transformation is implemented in BEV-Transformator.','Derivation of gravity-related heights from GNSS observations.','EPSG','1081','Geographic3D to GravityRelatedHeight (BEV AT)','EPSG','9267','EPSG','9274','EPSG','1037',0.05,'EPSG','8666','Geoid (height correction) model file','GEOID_BESSEL_Oesterreich.csv',NULL,NULL,NULL,NULL,'EPSG','4312','BEV-Aut',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9278','ETRS89 to GHA Austria height (1)','This transformation gives same result as concatenation of ETRS89 to EVRF2000 Austria height and EVRF2000 Austria height to GHA height transformations, CTs code 9276 and 9275. Accuracy 5cm (1 sigma). The transformation is implemented in BEV-Transformator.','Derivation of gravity-related heights from GNSS observations.','EPSG','1081','Geographic3D to GravityRelatedHeight (BEV AT)','EPSG','4937','EPSG','5778','EPSG','1037',0.05,'EPSG','8666','Geoid (height correction) model file','GV_Hoehengrid_plus_Geoid_V3.csv',NULL,NULL,NULL,NULL,NULL,NULL,'BEV-Aut',0);
|
||||
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','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);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9314','NZVD2016 height to Dunedin 1958 height (2)','Derived at 197 control points. Mean offset 0.326m, standard deviation 0.043m, maximum difference from mean 0.152m. Supersedes NZVD2016 height to Dunedin 1958 height (1) (code 7862) after change of grid file format.','Transformation between national and local height systems.','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','7839','EPSG','5761','EPSG','3803',0.02,'EPSG','8732','Vertical offset file','duneht1958-nzvd2016.gtx',NULL,NULL,NULL,NULL,'EPSG','4167','LINZ-NZ DUNE gtx',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9315','NZVD2016 height to Dunedin-Bluff 1960 height (2)','Derived at 205 control points. Mean offset 0.254m, standard deviation 0.039m, maximum difference from mean 0.11m. Supersedes NZVD2016 height to Dunedin-Bluff 1960 height (1) (code 7863) after change of grid file format.','Transformation between national and local height systems.','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','7839','EPSG','4458','EPSG','3806',0.02,'EPSG','8732','Vertical offset file','dublht1960-nzvd2016.gtx',NULL,NULL,NULL,NULL,'EPSG','4167','LINZ-NZ DUBL gtx',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9316','NZVD2016 height to Gisborne 1926 height (2)','Derived at 274 control points. Mean offset 0.343m, standard deviation 0.025m, maximum difference from mean 0.09m. Supersedes NZVD2016 height to Gisborne 1926 height (1) (code 7864) after change of grid file format.','Transformation between national and local height systems.','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','7839','EPSG','5762','EPSG','3771',0.02,'EPSG','8732','Vertical offset file','gisbht1926-nzvd2016.gtx',NULL,NULL,NULL,NULL,'EPSG','4167','LINZ-NZ GISB gtx',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9317','NZVD2016 height to Lyttelton 1937 height (2)','Derived at 923 control points. Mean offset 0.34m, standard deviation 0.041m, maximum difference from mean 0.149m. Supersedes NZVD2016 height to Lyttelton 1937 height (1) (code 7865) after change of grid file format.','Transformation between national and local height systems.','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','7839','EPSG','5763','EPSG','3804',0.01,'EPSG','8732','Vertical offset file','lyttht1937-nzvd2016.gtx',NULL,NULL,NULL,NULL,'EPSG','4167','LINZ-NZ LYTT gtx',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9318','NZVD2016 height to Moturiki 1953 height (2)','Derived at 519 control points. Mean offset 0.309m, standard deviation 0.071m, maximum difference from mean 0.231m. Supersedes NZVD2016 height to Moturiki 1953 height (1) (code 7866) after change of grid file format.','Transformation between national and local height systems.','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','7839','EPSG','5764','EPSG','3768',0.02,'EPSG','8732','Vertical offset file','motuht1953-nzvd2016.gtx',NULL,NULL,NULL,NULL,'EPSG','4167','LINZ-NZ MOTU gtx',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9319','NZVD2016 height to Napier 1962 height (2)','Derived at 207 control points. Mean offset 0.203m, standard deviation 0.034m, maximum difference from mean 0.096m. Supersedes NZVD2016 height to Napier 1962 height (1) (code 7867) after change of grid file format.','Transformation between national and local height systems.','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','7839','EPSG','5765','EPSG','3772',0.02,'EPSG','8732','Vertical offset file','napiht1962-nzvd2016.gtx',NULL,NULL,NULL,NULL,'EPSG','4167','LINZ-NZ NAPI gtx',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9320','NZVD2016 height to Nelson 1955 height (2)','Derived at 256 control points. Mean offset 0.329m, standard deviation 0.039m, maximum difference from mean 0.114m. Supersedes NZVD2016 height to Nelson 1955 height (1) (code 7868) after change of grid file format.','Transformation between national and local height systems.','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','7839','EPSG','5766','EPSG','3802',0.02,'EPSG','8732','Vertical offset file','nelsht1955-nzvd2016.gtx',NULL,NULL,NULL,NULL,'EPSG','4167','LINZ-NZ NELS gtx',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9321','NZVD2016 height to One Tree Point 1964 height (2)','Derived at 137 control points. Mean offset 0.077m, standard deviation 0.042m, maximum difference from mean 0.107m. Supersedes NZVD2016 height to One Tree Point 1964 height (1) (code 7869) after change of grid file format.','Transformation between national and local height systems.','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','7839','EPSG','5767','EPSG','3762',0.01,'EPSG','8732','Vertical offset file','ontpht1964-nzvd2016.gtx',NULL,NULL,NULL,NULL,'EPSG','4167','LINZ-NZ ONTP gtx',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9322','NZVD2016 height to Stewart Island 1977 height (2)','Derived at 4 control points. Mean offset 0.299m, standard deviation 0.025m, maximum difference from mean 0.039m. Supersedes NZVD2016 height to Stewart Island 1977 height (1) (code 7870) after change of grid file format.','Transformation between national and local height systems.','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','7839','EPSG','5772','EPSG','3338',0.18,'EPSG','8732','Vertical offset file','stisht1977-nzvd2016.gtx',NULL,NULL,NULL,NULL,'EPSG','4167','LINZ-NZ STWT gtx',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9323','NZVD2016 height to Taranaki 1970 height (2)','Derived at 125 control points. Mean offset 0.286m, standard deviation 0.026m, maximum difference from mean 0.07m. Supersedes NZVD2016 height to Taranaki 1970 height (1) (code 7871) after change of grid file format.','Transformation between national and local height systems.','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','7839','EPSG','5769','EPSG','3769',0.02,'EPSG','8732','Vertical offset file','taraht1970-nzvd2016.gtx',NULL,NULL,NULL,NULL,'EPSG','4167','LINZ-NZ TARA gtx',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9324','NZVD2016 height to Wellington 1953 height (2)','Derived at 137 control points. Mean offset 0.408m, standard deviation 0.054m, maximum difference from mean 0.112m. Supersedes NZVD2016 height to Wellington 1953 height (1) (code 7872) after change of grid file format.','Transformation between national and local height systems.','EPSG','1084','Vertical Offset by Grid Interpolation (gtx)','EPSG','7839','EPSG','5770','EPSG','3773',0.02,'EPSG','8732','Vertical offset file','wellht1953-nzvd2016.gtx',NULL,NULL,NULL,NULL,'EPSG','4167','LINZ-NZ WGTN gtx',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9325','NZGD2000 to NZVD2009 height (2)','Defines NZVD2009 vertical datum (datum code 1039, CRS code 4440). Supersedes NZGD2000 to NZVD2009 height (1) (code 4459) after change of grid file format.','Derivation of gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4959','EPSG','4440','EPSG','1175',0.1,'EPSG','8666','Geoid (height correction) model file','nzgeoid2009.gtx',NULL,NULL,NULL,NULL,NULL,NULL,'LINZ-NZ 2009 gtx',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9326','NZGD2000 to NZVD2016 height (2)','Defines NZVD2016 vertical datum (datum code 1169, CRS code 7839). Supersedes NZGD2000 to NZVD2016 height (1) (code 7840) after change of grid file format.','Derivation of gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4959','EPSG','7839','EPSG','1175',0.1,'EPSG','8666','Geoid (height correction) model file','nzgeoid2016.gtx',NULL,NULL,NULL,NULL,NULL,NULL,'LINZ-NZ 2016 gtx',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 IGN78 Corsica height (1)','May be used for transformations from WGS 84 to IGN78 Corsica. 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);
|
||||
@@ -354,14 +377,14 @@ INSERT INTO "grid_transformation" VALUES('EPSG','10009','RRAF 1991 to Guadeloupe
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10010','RRAF 1991 to Guadeloupe 1988 height (6)','May be used for transformations from WGS 84 to IGN 1988. Accuracy at each 0.025 deg x 0.025 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','4973','EPSG','5757','EPSG','2890',998.0,'EPSG','8666','Geoid (height correction) model file','ggg00_sm.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Glp StM',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10011','RGFG95 to NGG1977 height (1)','May be used for transformations from WGS 84 to NGG1977. Accuracy at each 0.025 deg x 0.025 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','4967','EPSG','5755','EPSG','3146',998.0,'EPSG','8666','Geoid (height correction) model file','ggguy00.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Guf',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10012','RGR92 to Reunion 1989 height (1)','May be used for transformations from WGS 84 to IGN 1989. Accuracy at each 0.02 deg x 0.02 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','4971','EPSG','5758','EPSG','3337',0.1,'EPSG','8666','Geoid (height correction) model file','ggr99.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Reu',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10013','NAD83 to NAVD88 height (1)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2977',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus NW',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10014','NAD83 to NAVD88 height (2)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2978',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u02.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CNW',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10015','NAD83 to NAVD88 height (3)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2979',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u03.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CNE',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10016','NAD83 to NAVD88 height (4)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2980',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u04.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus NE',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10017','NAD83 to NAVD88 height (5)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2973',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u05.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus SW',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10018','NAD83 to NAVD88 height (6)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2974',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u06.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CSW',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10019','NAD83 to NAVD88 height (7)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2975',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u07.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CSE',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10020','NAD83 to NAVD88 height (8)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2976',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u08.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus SE',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10013','NAD83 to NAVD88 height (1)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4269','EPSG','5703','EPSG','2977',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u01.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus NW',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10014','NAD83 to NAVD88 height (2)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4269','EPSG','5703','EPSG','2978',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u02.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CNW',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10015','NAD83 to NAVD88 height (3)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4269','EPSG','5703','EPSG','2979',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u03.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CNE',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10016','NAD83 to NAVD88 height (4)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4269','EPSG','5703','EPSG','2980',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u04.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus NE',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10017','NAD83 to NAVD88 height (5)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4269','EPSG','5703','EPSG','2973',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u05.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus SW',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10018','NAD83 to NAVD88 height (6)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4269','EPSG','5703','EPSG','2974',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u06.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CSW',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10019','NAD83 to NAVD88 height (7)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4269','EPSG','5703','EPSG','2975',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u07.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus CSE',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10020','NAD83 to NAVD88 height (8)','Uses Geoid03 hybrid model. See information source for further information. Note: Source CRS is 2D, used in this application of the method as a pseudo-3D CRS.','Derivation of approximate gravity-related heights from GPS observations.','EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)','EPSG','4269','EPSG','5703','EPSG','2976',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u08.bin',NULL,NULL,NULL,NULL,NULL,NULL,'NGS-US Conus SE',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10021','ETRS89 to Newlyn height (1)','May be used for transformations from WGS 84 to Newlyn.','Derivation of gravity-related heights from GPS observations.','EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5701','EPSG','2792',0.02,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,'OS-UK Gbr',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10022','ETRS89 to Belfast height (1)','May be used for transformations from WGS 84 to Belfast.','Derivation of gravity-related heights from GPS observations.','EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5732','EPSG','2530',0.03,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,'OS-UK NI',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10023','ETRS89 to Douglas height (1)','May be used for transformations from WGS 84 to Douglas.','Derivation of gravity-related heights from GPS observations.','EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5750','EPSG','2803',0.02,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,'OS-UK Man',0);
|
||||
@@ -458,8 +481,8 @@ INSERT INTO "grid_transformation" VALUES('EPSG','15948','DHDN to ETRS89 (8)','De
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15949','DHDN to WGS 84 (4)','These parameter values are taken from DHDN to ETRS89 (8) (code 15948) as ETRS89 may be considered equivalent to WGS 84 within the accuracy of the transformation.','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4314','EPSG','4326','EPSG','3339',1.0,'EPSG','8656','Latitude and longitude difference file','BETA2007.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Deu BeTA2007',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15954','RD/83 to WGS 84 (1)','These parameter values are taken from DHDN to ETRS89 (8) (code 15948) as RD/83 and ETRS89 may be considered equivalent to DHDN and WGS 84 respectively within the accuracy of the transformation.','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4745','EPSG','4326','EPSG','2545',1.0,'EPSG','8656','Latitude and longitude difference file','BETA2007.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Deu BeTA2007',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15955','PD/83 to WGS 84 (1)','These parameter values are taken from DHDN to ETRS89 (8) (code 15948) as PD/83 and ETRS89 may be considered equivalent to DHDN and WGS 84 respectively within the accuracy of the transformation.','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4746','EPSG','4326','EPSG','2544',1.0,'EPSG','8656','Latitude and longitude difference file','BETA2007.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Deu BeTA2007',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15958','RGF93 to NTF (2)','Emulation using NTv2 method of France Geocentric Interpolation method tfm NTF to RGF93 (1), code 1053. Note that grid file parameters are of opposite sign. May be taken as approximate transformation to ETRS89 or WGS 84 - see tfm codes 15959 and 15960.','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4171','EPSG','4275','EPSG','3694',1.0,'EPSG','8656','Latitude and longitude difference file','rgf93_ntf.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ESRI-Fra 1m emulation',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15959','ETRS89 to NTF (3)','These parameter values are taken from RGF93 to NTF (2) (code 15958) as RGF93 may be considered equivalent to ETRS89 within the accuracy of the transformation. Emulation of France Geocentric Interpolation method tfm code 1054: note reversal of sign.','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4258','EPSG','4275','EPSG','3694',1.0,'EPSG','8656','Latitude and longitude difference file','rgf93_ntf.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Fra 1m emulation',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15960','WGS 84 to NTF (3)','These parameter values are taken from RGF93 to NTF (2) (code 15958) as RGF93 may be considered equivalent to WGS 84 within the accuracy of the transformation. Emulation of France Geocentric Interpolation method tfm code 15939: note reversal of sign.','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4326','EPSG','4275','EPSG','3694',1.0,'EPSG','8656','Latitude and longitude difference file','rgf93_ntf.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Fra 1m emulation',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15958','RGF93 to NTF (2)','Emulation using NTv2 method of transformation NTF to RGF93 (1), code 9327. Note that grid file parameters are of opposite sign. May be taken as approximate transformation to ETRS89 or WGS 84 - see tfm codes 15959 and 15960.','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4171','EPSG','4275','EPSG','3694',1.0,'EPSG','8656','Latitude and longitude difference file','rgf93_ntf.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ESRI-Fra 1m emulation',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15959','ETRS89 to NTF (3)','These parameter values are taken from RGF93 to NTF (2) (code 15958) as RGF93 may be considered equivalent to ETRS89 within the accuracy of the transformation.','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4258','EPSG','4275','EPSG','3694',1.0,'EPSG','8656','Latitude and longitude difference file','rgf93_ntf.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Fra 1m emulation',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15960','WGS 84 to NTF (3)','These parameter values are taken from RGF93 to NTF (2) (code 15958) as RGF93 may be considered equivalent to WGS 84 within the accuracy of the transformation.','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4326','EPSG','4275','EPSG','3694',1.0,'EPSG','8656','Latitude and longitude difference file','rgf93_ntf.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Fra 1m emulation',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15961','RGNC91-93 to NEA74 Noumea (4)','Emulation using NTv2 method of tfm NEA74 Noumea to RGNC91-93 (3) (code 15943). Note reversal of sign of parameter values in grid file.','Accuracy 5-10cm.','EPSG','9615','NTv2','EPSG','4749','EPSG','4644','EPSG','2823',0.05,'EPSG','8656','Latitude and longitude difference file','RGNC1991_IGN72GrandeTerre.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ESRI-Ncl 0.05m',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15962','RGNC91-93 to IGN72 Grande Terre (6)','Emulation using NTv2 method of tfm IGN72 Grande Terre to RGNC91-93 (4) (code 15945). Note reversal sign of of parameter values in grid file.','Accuracy better than +/- 0.1 metre.','EPSG','9615','NTv2','EPSG','4749','EPSG','4662','EPSG','2822',0.1,'EPSG','8656','Latitude and longitude difference file','RGNC1991_IGN72GrandeTerre.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ESRI-Ncl 0.1m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15962','RGNC91-93 to IGN72 Grande Terre (6)','Emulation using NTv2 method of tfm IGN72 Grande Terre to RGNC91-93 (4) (code 9329). Note reversal sign of of parameter values in grid file.','Accuracy better than +/- 0.1 metre.','EPSG','9615','NTv2','EPSG','4749','EPSG','4662','EPSG','2822',0.1,'EPSG','8656','Latitude and longitude difference file','RGNC1991_IGN72GrandeTerre.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ESRI-Ncl 0.1m',0);
|
||||
|
||||
@@ -293,7 +293,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','1517','Conakry 1905 to WGS 8
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1518','Dabola 1981 to WGS 84 (1)','','Accuracy 25m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4155','EPSG','4326','EPSG','3257',25.0,-83.0,37.0,124.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,'IGN-Gin',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1527','Campo Inchauspe to WGS 84 (2)','Derived through ties at 2 stations (Cerro Colorado and Chihuido Sur) to 4 IGS stations in February 1995','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4221','EPSG','4326','EPSG','2325',0.5,-154.5,150.7,100.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,'TOT-Arg Neu',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1528','Chos Malal 1914 to Campo Inchauspe (1)','Derived through common coordinates at 5 stations.','Oil exploration. Accuracy 10 metres.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4160','EPSG','4221','EPSG','2325',10.0,160.0,26.0,41.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,'TOT-Arg Neu',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1529','Hito XVIII to WGS 84 (1)','Derived through ties at 3 stations (RC03, TOTAL11 and MP12) to 3 IGS stations in November 1995','Oil exploration.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4254','EPSG','4326','EPSG','2357',0.5,18.38,192.45,96.82,'EPSG','9001',0.056,-0.142,-0.2,'EPSG','9104',-0.0013,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'TOT-Arg TdF',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1529','Hito XVIII to WGS 84 (1)','Derived through ties at 3 stations (RC03, TOTAL11 and MP12) to 3 IGS stations in November 1995','Oil exploration.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4254','EPSG','4326','EPSG','1486',0.5,18.38,192.45,96.82,'EPSG','9001',0.056,-0.142,-0.2,'EPSG','9104',-0.0013,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'TOT-Arg TdF',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1530','NAD27 to WGS 84 (30)','','Accuracy 3m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','1077',3.0,-4.2,135.4,181.9,'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,'ICH-Cub',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1531','Nahrwan 1967 to WGS 84 (4)','Parameter values adopted by Total are mean of those derived by Oceonics and Geoid through ties at platform AK1 to 4 IGS stations in March 1995.','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','2392',0.5,-245.0,-153.9,382.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,'TOT-UAE Abk',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1532','M''poraloko to WGS 84 (2)','Derived as mean of Doris determinations at 3 stations in Port Gentil area in 1994.','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4266','EPSG','4326','EPSG','1100',0.5,-80.7,-132.5,41.1,'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,'Elf-Gab94',0);
|
||||
@@ -1040,7 +1040,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','8438','Macao 1920 to WGS 84
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8439','Hong Kong Geodetic CS to WGS 84 (1)','Approximation at the +/- 1m level assuming that Hong Kong Geodetic CS is equivalent to WGS 84.','Accuracy +/- 1 metre.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','8427','EPSG','4326','EPSG','1118',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-Hkg',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8448','GDA2020 to WGS 84 (G1762) (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. Parameter values taken from ITRF2014 to GDA2020 (1) (code 8049), assuming WGS 84 (G1762) is equivalent to ITRF2014 within the accuracy of the transformation.','Spatial referencing.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','7842','EPSG','7664','EPSG','4177',0.2,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.50379,-1.18346,-1.20716,'EPSG','1032',0.0,'EPSG','1030',2020.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'GA-Aus 0.2m',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8450','GDA2020 to WGS 84 (2)','Approximation at the 3m level assuming WGS 84 is equivalent to ITRF2014 within the accuracy of the transformation. See GDA2020 to WGS 84 (G1762) (1) (code 8448) for a better approximation and ITRF2014 to GDA2020 (1) (code 8049) for actual relationship.','Spatial referencing with 3-metre accuracy.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','7844','EPSG','4326','EPSG','4177',3.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,'GA-Aus 3m',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8452','Padang to WGS 84 (1)','Note: U.S. Defense Mapping Agency TR8350.2 September 1987 gives source CRS as Batavia and area as Sumatra. The Batavia (Genuk) CRS applies to Java, not Sumatra. EPSG presumes the source CRS should be Padang. Derived at 5 stations.','For military purposes. Accuracy 3m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4280','EPSG','4326','EPSG','1355',6.0,-377.0,681.0,-50.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-Idn Sumatra',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8452','Batavia to WGS 84 (1)','Derived at 5 stations. Note: U.S. DMA TR8350.2 September 1987 gives source CRS as Batavia and area as Sumatra. The Batavia (Genuk) CRS applies to Java and western Sumatra. EPSG presumes this CT applies to both. Sometimes found applied to all Sumatra.','For military purposes. Accuracy 3m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4211','EPSG','4326','EPSG','1285',6.0,-377.0,681.0,-50.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-Idn Sumatra',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8674','La Canoa to PSAD56 (1)','In Venezuela PSAD56 is coincident with La Canoa.','Spatial referencing.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4247','EPSG','4248','EPSG','3327',0.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,'LAG-Ven E',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8680','MGI 1901 to ETRS89 (7)','Derived at 1385 points across the area of Bosnia and Herzegovina. May be taken as approximate transformation MGI 1901 to WGS 84 (see code 8823).','For applications to an accuracy of 1 metre.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','3906','EPSG','4258','EPSG','1050',1.0,489.88,183.912,533.711,'EPSG','9001',5.76545,4.69994,-12.58211,'EPSG','9104',1.00646,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'FGA-Bih',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8681','MGI 1901 to WGS 84 (12)','Parameter values from MGI 1901 to ETRS89 (7) (code 8680). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.','For applications to an accuracy of 1 metre.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','3906','EPSG','4258','EPSG','1050',1.0,489.88,183.912,533.711,'EPSG','9001',5.76545,4.69994,-12.58211,'EPSG','9104',1.00646,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'FGA-Bih',1);
|
||||
@@ -1168,6 +1168,17 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','9224','ED50 to ETRS89 (15)',
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9225','WGS 84 to ETRS89 (2)','Parameter values derived from ITRF2008 to ETRF2000 (1), code 7951, as a time-specific transformation @2014.81, assuming ITRF2008 = WGS 84 (G1762) = WGS 84 and ETRF2000 = ETRS89.','Oil and gas exploration and production.','EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','4978','EPSG','4936','EPSG','4566',0.1,0.054,0.051,-0.085,'EPSG','9001',0.0021,0.0126,-0.0204,'EPSG','9104',0.0025,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2014.81,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'ONE-Deu/Nld 2014.81',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9226','SHGD2015 to Astro DOS 71 (2)','Derived at 19 stations, RMS = 6cm. Note: Because of the large rotations about the Y- and Z-axes this transformation is not reversible. For the reverse transformation use Astro DOS 71 to SHGD2015 (2) (code 7895).','High Accuracy transformation from St Helena Geodetic Datum 2015. Not reversible - see remarks.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','7886','EPSG','4710','EPSG','3183',0.1,112.771,-12.282,18.935,'EPSG','9001',-2.1692,-16.8896,-17.1961,'EPSG','9104',19.54517,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'ENRD-Shn Hel 0.1m Rev',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9227','ITRF2005 to NAD83(CSRS)v5 (1)','Concatenation of joint Canada-US NAD83>ITRF96 transformation (code 8259) with IGS value for ITRF96>ITRF97 and IERS transformations ITRF97>ITRF2005. Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m.','Geodesy. Defines NAD83(CSRS)v5 and is therefore treated as errorless.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4896','EPSG','8247','EPSG','1061',0.0,0.9963,-1.9024,-0.5219,'EPSG','9001',-25.915,-9.426,-11.599,'EPSG','1031',0.775,'EPSG','1028',0.0005,-0.0006,-0.0013,'EPSG','1042',-0.067,0.757,0.051,'EPSG','1032',-0.102,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'NRC-Can CSRSv5',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9234','Kalianpur 1962 to WGS 84 (5)','Derived by Western Geophysical for UTP 1996 East Sind 2D survey. Very similar parameter values (higher resolution but no better accuracy) were used by BGP for the ENI 2006 East Sind 2D survey.','Oil exploration.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4145','EPSG','4326','EPSG','2983',3.0,230.25,632.76,161.03,'EPSG','9001',-1.114,1.115,1.212,'EPSG','9104',12.584,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'utp-Pak E Sind',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9257','Chos Malal 1914 to WGS 84 (2)','Derived through common coordinates at 13 stations.','Oil and gas exploration and production.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4160','EPSG','4326','EPSG','4561',2.5,8.88,184.86,106.69,'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,'YPF-Arg Cuyo',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9258','Chos Malal 1914 to WGS 84 (3)','Derived through common coordinates at 43 stations.','Oil and gas exploration and production.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4160','EPSG','4326','EPSG','1292',2.5,15.75,164.93,126.18,'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,'YPF-Arg Neuq',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9259','Pampa del Castillo to WGS 84 (2)','Derived through common coordinates at 22 stations. Used by YPF throughout the Golfo San Jorge basin.','Oil and gas exploration and production.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4161','EPSG','4326','EPSG','4572',2.5,-233.43,6.65,173.64,'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,'YPF-Arg GSJB',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9260','Tapi Aike to WGS 84 (1)','Used by YPF throughout the Tapi Aike basin.','Oil and gas exploration and production.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','9248','EPSG','4326','EPSG','4569',5.0,-192.26,65.72,132.08,'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,'YPF-Arg TapiAike',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9261','MMN to WGS 84 (1)','','Oil and gas exploration and production.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','9251','EPSG','4326','EPSG','2357',2.5,-9.5,122.9,138.2,'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,'YPF-Arg MMN',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9262','MMS to WGS 84 (1)','','Oil and gas exploration and production.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','9253','EPSG','4326','EPSG','2357',2.5,-78.1,101.6,133.3,'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,'YPF-Arg MMS',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9263','Hito XVIII 1963 to WGS 84 (3)','','Oil and gas exploration and production.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4254','EPSG','4326','EPSG','2357',2.5,18.2,190.7,100.9,'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,'YPF-Arg TdF Hito',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9264','POSGAR 2007 to WGS 84 (2)','Derived as average at all points common between the POSGAR 94 and POSGAR 2007 networks. POSGAR 94 was adjusted to the WGS 84 coordinates of 20 stations in March to May 1994. Accuracy 0.1m in 1994 + 1.5cm per year.','Oil and gas exploration and production.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5340','EPSG','4326','EPSG','1033',0.5,-0.41,0.46,-0.35,'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,'YPF-Arg',0);
|
||||
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','9334','ITRF2014 to KSA-GRF17 (1)','Arabian plate rotations derived during KSA-GRF17 adjustment from observations at 41 sites with at least 2.5 years of continuous observations.','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','10085','Trinidad 1903 to WGS 84 (2)','Parameter values provided to EOG by Trinidad Ministry of Energy and Energy Industries. Used by EOG offshore Trinidad (including Pelican, Kiskadee and Ibis fields) since 1996.','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4302','EPSG','4326','EPSG','1339',3.0,-61.0,285.2,471.6,'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,'EOG-Tto Trin',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10086','JAD69 to WGS 72 (1)','Derived in 1977 through Transit observations at 2 stations by US DMA.','For military mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4242','EPSG','4322','EPSG','3342',15.0,48.0,208.0,382.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,'SD-Jam',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10089','Aratu to WGS 84 (5)','Used by ExxonMobil for block BMS1. See WGS 84 (13) (tfm code 5051) which Petrobras now recommends for the area.','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2962',7.0,-163.466,317.396,-147.538,'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,'EXM-Bra Santos',0);
|
||||
@@ -1192,7 +1203,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','15700','Gulshan 303 to WGS 8
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15701','Kalianpur 1962 to WGS 84 (2)','Derived at Geodetic Survey office in Karachi in 1997.','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4145','EPSG','4326','EPSG','2985',1.0,275.57,676.78,229.6,'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,'TFE-Pak Indus',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15702','Kalianpur 1962 to WGS 84 (3)','Derived at station S0001, an approximate offset to Survey of India primary station Kat Baman, in 1992 from 180 single point Transit passes observed in 1991 by Fugro-Geodetic for UTP.','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4145','EPSG','4326','EPSG','2984',3.0,278.9,684.39,226.05,'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,'utp-Pak Badin',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15703','Kalianpur 1962 to WGS 84 (4)','Derived at Chitrawala triangulation station by Fugro-Geodetic for UTP.','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4145','EPSG','4326','EPSG','2982',3.0,271.905,669.593,231.495,'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,'utp-Pak Karachi',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15704','Kalianpur 1962 to WGS 84 (5)','Derived by Western Geophysical for UTP 1996 East Sind 2D survey.','Oil exploration.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4145','EPSG','4326','EPSG','2983',3.0,230.25,632.76,161.03,'EPSG','9001',-1.114,1.115,1.212,'EPSG','9104',12.584,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'utp-Pak E Sind',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15704','Kalianpur 1962 to WGS 84 (5)','Derived by Western Geophysical for UTP 1996 East Sind 2D survey.','Oil exploration.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4145','EPSG','4326','EPSG','2983',3.0,230.25,632.76,161.03,'EPSG','9001',-1.114,1.115,1.212,'EPSG','9104',12.584,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'utp-Pak E Sind',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15705','Minna to WGS 84 (12)','Derived via WGS 72(BE). Minna to WGS 72(BE) transformation derived in 1981 for Mobil E&P Nigeria (MEPCON) by Geodetic Survey through Transit translocation at six stations in southern Nigeria. Used by MEPCON in blocks OPL 215 and 221.','Oil industry exploration.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','3819',8.0,-83.13,-104.95,114.63,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'WGC-Nga 211',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15706','Minna to WGS 84 (13)','Used by Elf in Blocks OPL 222 and OPL 223 and by Mobil in 1994.','Oil industry exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','1717',7.0,-93.6,-83.7,113.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,'Elf-Nga',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15707','ELD79 to WGS 84 (6)','Used by Petrocanada and previous licence holders in Amal field, concession 12.','Oil exploration and production','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4159','EPSG','4326','EPSG','2987',10.0,-118.996,-111.177,-198.687,'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,'PCan-Lby Amal',0);
|
||||
@@ -1319,7 +1330,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','15833','RGPF to WGS 84 (2)',
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15842','Hong Kong 1963(67) to WGS 84 (1)','Derived at 2 satellite stations. Care: does not use Hong Kong 1963 (code 4838) as the source CRS.','Military mapping. Accuracy +/- 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4739','EPSG','4326','EPSG','1118',1.0,-156.0,-271.0,-189.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,'UKHO-Hkg',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15843','PZ-90 to WGS 84 (1)','Derived through Glonass and GPS at 30 stations throughout USSR - Former Soviet Union (FSU).','Geodetic applications. Accuracy better than 1.5 metres.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4740','EPSG','4326','EPSG','1262',1.5,0.0,0.0,1.5,'EPSG','9001',0.0,0.0,-0.076,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'GiK-World',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15844','Pulkovo 1942 to PZ-90 (1)','Derived through Glonass at 30 stations throughout USSR - Former Soviet Union (FSU). Mandated for use in Russia by GosStandard of Russia Decree #327 of August 9, 2001.','Accuracy within area of primary CS42 control = 1 to 2m; accuracy at distant points 3 to 4 m.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4284','EPSG','4740','EPSG','2423',4.0,25.0,-141.0,-80.0,'EPSG','9001',0.0,-0.35,-0.66,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'GiK-Rus',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15845','Pampa del Castillo to WGS 84 (1)','Transformation parameter precision given to millimetres in information source but due to accuracy rounded to nearest decimetre for EPSG database.','Geodetic surveying within the oil industry. Accuracy 25 m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4161','EPSG','4326','EPSG','1265',25.0,27.5,14.0,186.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,'UNO-Arg ComRiv',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15845','Pampa del Castillo to WGS 84 (1)','Transformation parameter precision given to millimetres in information source but due to accuracy rounded to nearest decimetre for EPSG database.','Geodetic surveying within the oil industry. Accuracy 25 m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4161','EPSG','4326','EPSG','1265',25.0,27.5,14.0,186.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,'UNO-Arg ComRiv',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15846','Egypt Gulf of Suez S-650 TL to WGS 84 (2)','Sometime referred to as "Egypt 1907 to WGS 84". However, application to WGS 84 coordinates of the reverse of this tfm results in Gulf of Suez S-650 TL, not Egypt 1907, position. Gulf of Suez S-650 TL and Egypt 1907 CRSs differ by some 20 metres.','Used for oil exploration by GUPCO.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4706','EPSG','4326','EPSG','2341',5.0,-146.21,112.63,4.05,'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,'Racal-Egy GoS',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15847','MOP78 to WGS 84 (2)','Replaces information from 2001 (tfm code 1925).','Accuracy +/- 10 metres.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4639','EPSG','4326','EPSG','2815',10.0,253.0,-132.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,'IGN-Wlf Wallis',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15848','ST84 Ile des Pins to WGS 84 (2)','','Accuracy +/- 10 metres.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4642','EPSG','4326','EPSG','2820',10.0,-13.0,-348.0,292.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,'IGN-Ncl Pins',0);
|
||||
|
||||
+59
-59
@@ -1,4 +1,4 @@
|
||||
--- This file has been generated by scripts/build_db_create_ignf_from_xml.py from the https://geodesie.ign.fr/contenu/fichiers/IGNF.v3.1.0.xml definition file. DO NOT EDIT !
|
||||
--- This file has been generated by scripts/build_db_create_ignf_from_xml.py from the http://librairies.ign.fr/geoportail/resources/IGNF.xml definition file. DO NOT EDIT !
|
||||
|
||||
INSERT INTO "metadata" VALUES('IGNF.SOURCE', 'https://geodesie.ign.fr/contenu/fichiers/IGNF.v3.1.0.xml');
|
||||
INSERT INTO "metadata" VALUES('IGNF.VERSION', '3.1.0');
|
||||
@@ -2696,8 +2696,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf02-Huahine.mnt', -- as referenced by the IGNF registry
|
||||
'ggpf02-Huahine.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2710,8 +2710,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00v2.mnt', -- as referenced by the IGNF registry
|
||||
'ggg00v2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2724,8 +2724,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf10-Tahiti.mnt', -- as referenced by the IGNF registry
|
||||
'ggpf10-Tahiti.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2738,8 +2738,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf02-Raiatea.mnt', -- as referenced by the IGNF registry
|
||||
'ggpf02-Raiatea.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2752,8 +2752,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_sbv2.mnt', -- as referenced by the IGNF registry
|
||||
'ggg00_sbv2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2766,8 +2766,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_smv2.mnt', -- as referenced by the IGNF registry
|
||||
'gg10_smv2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2780,8 +2780,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAMG2016.mnt', -- as referenced by the IGNF registry
|
||||
'RAMG2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2794,8 +2794,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggker08v2.mnt', -- as referenced by the IGNF registry
|
||||
'ggker08v2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2808,8 +2808,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggspm06v1.mnt', -- as referenced by the IGNF registry
|
||||
'ggspm06v1.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2822,8 +2822,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_sbv2.mnt', -- as referenced by the IGNF registry
|
||||
'gg10_sbv2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2836,8 +2836,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggguy15.mnt', -- as referenced by the IGNF registry
|
||||
'ggguy15.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2850,8 +2850,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/metropole/RAF09.mnt', -- as referenced by the IGNF registry
|
||||
'RAF09.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2864,8 +2864,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf08-Fakarava.mnt', -- as referenced by the IGNF registry
|
||||
'ggpf08-Fakarava.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2878,8 +2878,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggm00v2.mnt', -- as referenced by the IGNF registry
|
||||
'ggm00v2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2892,8 +2892,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf10-Moorea.mnt', -- as referenced by the IGNF registry
|
||||
'ggpf10-Moorea.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2906,8 +2906,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf02-Maupiti.mnt', -- as referenced by the IGNF registry
|
||||
'ggpf02-Maupiti.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2920,8 +2920,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_lsv2.mnt', -- as referenced by the IGNF registry
|
||||
'ggg00_lsv2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2934,8 +2934,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggm04v1.mnt', -- as referenced by the IGNF registry
|
||||
'ggm04v1.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2948,8 +2948,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_smv2.mnt', -- as referenced by the IGNF registry
|
||||
'ggg00_smv2.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2962,8 +2962,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RALD2016.mnt', -- as referenced by the IGNF registry
|
||||
'RALD2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2976,8 +2976,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAR07_bl.gra', -- as referenced by the IGNF registry
|
||||
'RAR07_bl.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -2990,8 +2990,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RALS2016.mnt', -- as referenced by the IGNF registry
|
||||
'RALS2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -3004,8 +3004,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RALDW842016.mnt', -- as referenced by the IGNF registry
|
||||
'RALDW842016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -3018,8 +3018,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf02-Tahaa.mnt', -- as referenced by the IGNF registry
|
||||
'ggpf02-Tahaa.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -3032,8 +3032,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAGTBT2016.mnt', -- as referenced by the IGNF registry
|
||||
'RAGTBT2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -3046,8 +3046,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/metropole/RAC09.mnt', -- as referenced by the IGNF registry
|
||||
'RAC09.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -3060,8 +3060,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAMART2016.mnt', -- as referenced by the IGNF registry
|
||||
'RAMART2016.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -3074,8 +3074,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('https://geodesie.ign.fr/contenu/fichiers/documentation/grilles/metropole/RAF18.mnt', -- as referenced by the IGNF registry
|
||||
'RAF18.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
@@ -3088,8 +3088,8 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf02-Bora.mnt', -- as referenced by the IGNF registry
|
||||
'ggpf02-Bora.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v9.8.4');
|
||||
INSERT INTO "metadata" VALUES('EPSG.DATE', '2019-11-12');
|
||||
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v9.8.6');
|
||||
INSERT INTO "metadata" VALUES('EPSG.DATE', '2020-01-22');
|
||||
|
||||
@@ -122,7 +122,7 @@ INSERT INTO "other_transformation" VALUES('EPSG','1519','Bern 1898 (Bern) to CH1
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','1755','Bogota 1975 (Bogota) to Bogota 1975 (1)','','Change of prime meridian.','EPSG','9601','Longitude rotation','EPSG','4802','EPSG','4218','EPSG','3229',0.0,'EPSG','8602','Longitude offset',-74.04513,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGAC-Col',0);
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','1756','Lisbon (Lisbon) to Lisbon (1)','','Change of prime meridian.','EPSG','9601','Longitude rotation','EPSG','4803','EPSG','4207','EPSG','1294',0.0,'EPSG','8602','Longitude offset',-9.0754862,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGC-Prt',0);
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','1757','MGI (Ferro) to MGI (1)','','Change of prime meridian.','EPSG','9601','Longitude rotation','EPSG','4805','EPSG','4312','EPSG','1321',0.0,'EPSG','8602','Longitude offset',-17.4,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,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 balk',1);
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','1758','Padang (Jakarta) to Padang (1)','','Change of prime meridian.','EPSG','9601','Longitude rotation','EPSG','4808','EPSG','4280','EPSG','1355',0.0,'EPSG','8602','Longitude offset',106.482779,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,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-Idn Sumatra',0);
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','1758','Padang (Jakarta) to Padang (1)','','Change of prime meridian.','EPSG','9601','Longitude rotation','EPSG','4808','EPSG','4280','EPSG','1355',0.0,'EPSG','8602','Longitude offset',106.482779,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,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-Idn Sumatra',1);
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','1759','Batavia (Jakarta) to Batavia (1)','','Change of prime meridian.','EPSG','9601','Longitude rotation','EPSG','4813','EPSG','4211','EPSG','1285',0.0,'EPSG','8602','Longitude offset',106.482779,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,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-Idn Java',0);
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','1760','RT38 (Stockholm) to RT38 (1)','','Change of prime meridian.','EPSG','9601','Longitude rotation','EPSG','4814','EPSG','4308','EPSG','3313',0.0,'EPSG','8602','Longitude offset',18.03298,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NLS-Swe',0);
|
||||
INSERT INTO "other_transformation" VALUES('EPSG','1761','Greek (Athens) to Greek (1)','','Change of prime meridian.','EPSG','9601','Longitude rotation','EPSG','4815','EPSG','4120','EPSG','3254',0.0,'EPSG','8602','Longitude offset',23.4258815,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NTU-Grc',0);
|
||||
|
||||
@@ -65,8 +65,7 @@ CREATE TABLE area(
|
||||
east_lon FLOAT CHECK (east_lon BETWEEN -180 AND 180),
|
||||
deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)),
|
||||
CONSTRAINT pk_area PRIMARY KEY (auth_name, code),
|
||||
CONSTRAINT check_area_lat CHECK (south_lat <= north_lat),
|
||||
CONSTRAINT check_area_lon CHECK (west_lon <= east_lon OR (east_lon + 360 - west_lon <= 200))
|
||||
CONSTRAINT check_area_lat CHECK (south_lat <= north_lat)
|
||||
);
|
||||
|
||||
CREATE TABLE prime_meridian(
|
||||
@@ -1093,7 +1092,7 @@ CREATE TABLE grid_alternatives(
|
||||
original_grid_name TEXT NOT NULL PRIMARY KEY, -- original grid name (e.g. Und_min2.5x2.5_egm2008_isw=82_WGS84_TideFree.gz). For LOS/LAS format, the .las files
|
||||
proj_grid_name TEXT NOT NULL, -- PROJ grid name (e.g egm08_25.gtx)
|
||||
proj_grid_format TEXT NOT NULL, -- one of 'CTable2', 'NTv1', 'NTv2', 'GTX'
|
||||
proj_method TEXT NOT NULL, -- hgridshift or vgridshift
|
||||
proj_method TEXT NOT NULL, -- hgridshift, vgridshift or geoid_like
|
||||
inverse_direction BOOLEAN NOT NULL CHECK (inverse_direction IN (0, 1)), -- whether the PROJ grid direction is reversed w.r.t to the authority one (TRUE in that case)
|
||||
package_name TEXT, -- package name that contains the file
|
||||
url TEXT, -- optional URL where to download the PROJ grid
|
||||
@@ -1103,10 +1102,10 @@ CREATE TABLE grid_alternatives(
|
||||
|
||||
CONSTRAINT fk_grid_alternatives_grid_packages FOREIGN KEY (package_name) REFERENCES grid_packages(package_name),
|
||||
CONSTRAINT check_grid_alternatives_grid_fromat CHECK (proj_grid_format IN ('CTable2', 'NTv1', 'NTv2', 'GTX')),
|
||||
CONSTRAINT check_grid_alternatives_proj_method CHECK (proj_method IN ('hgridshift', 'vgridshift')),
|
||||
CONSTRAINT check_grid_alternatives_proj_method CHECK (proj_method IN ('hgridshift', 'vgridshift', 'geoid_like')),
|
||||
CONSTRAINT check_grid_alternatives_not_hgridshift CHECK (NOT(proj_method != 'hgridshift' AND proj_grid_format IN ('CTable2', 'NTv1', 'NTv2'))),
|
||||
CONSTRAINT check_grid_alternatives_not_vgridshift CHECK (NOT(proj_method != 'vgridshift' AND proj_grid_format IN ('GTX'))),
|
||||
CONSTRAINT check_grid_alternatives_original_grid_name CHECK (NOT(original_grid_name = proj_grid_name AND inverse_direction != 0)),
|
||||
CONSTRAINT check_grid_alternatives_not_vgridshift CHECK (NOT(proj_method = 'hgridshift' AND proj_grid_format IN ('GTX'))),
|
||||
CONSTRAINT check_grid_alternatives_inverse_direction CHECK (NOT(proj_method = 'geoid_like' AND inverse_direction = 1)),
|
||||
CONSTRAINT check_grid_alternatives_package_name_url CHECK (NOT(package_name IS NOT NULL AND url IS NOT NULL)),
|
||||
CONSTRAINT check_grid_alternatives_direct_download_url CHECK (NOT(direct_download IS NULL AND url IS NOT NULL)),
|
||||
CONSTRAINT check_grid_alternatives_open_license_url CHECK (NOT(open_license IS NULL AND url IS NOT NULL))
|
||||
@@ -1365,6 +1364,8 @@ CREATE TABLE supersession(
|
||||
source TEXT
|
||||
);
|
||||
|
||||
CREATE INDEX idx_supersession ON supersession(superseded_table_name, superseded_auth_name, superseded_code);
|
||||
|
||||
CREATE TRIGGER supersession_insert_trigger
|
||||
BEFORE INSERT ON supersession
|
||||
FOR EACH ROW BEGIN
|
||||
|
||||
@@ -3565,8 +3565,8 @@ INSERT INTO "projected_crs" VALUES('EPSG','8838','MTRF-2000 / UTM zone 38N',NULL
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','8839','MTRF-2000 / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','8818','EPSG','16039','EPSG','4528',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','8840','MTRF-2000 / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','8818','EPSG','16040','EPSG','3106',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','8857','WGS 84 / Equal Earth Greenwich',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','8854','EPSG','1262',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','8858','WGS 84 / Equal Earth Americas',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','8855','EPSG','1262',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','8859','WGS 84 / Equal Earth Asia-Pacific',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','8856','EPSG','1262',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','8858','WGS 84 / Equal Earth Americas',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','8855','EPSG','4520',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','8859','WGS 84 / Equal Earth Asia-Pacific',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','8856','EPSG','4523',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','8903','RGWF96 / UTM zone 1S',NULL,NULL,'EPSG','4400','EPSG','8900','EPSG','16101','EPSG','1255',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','8908','CR-SIRGAS / CRTM05',NULL,NULL,'EPSG','4400','EPSG','8907','EPSG','5366','EPSG','3232',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','8909','CR-SIRGAS / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','8907','EPSG','16016','EPSG','4532',NULL,0);
|
||||
@@ -3601,6 +3601,16 @@ INSERT INTO "projected_crs" VALUES('EPSG','9217','VN-2000 / TM-3 108-15',NULL,NU
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9218','VN-2000 / TM-3 108-30',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9204','EPSG','4560',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9221','Hartebeesthoek94 / ZAF BSU Albers 25E',NULL,NULL,'EPSG','4500','EPSG','4148','EPSG','9219','EPSG','4567',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9222','Hartebeesthoek94 / ZAF BSU Albers 44E',NULL,NULL,'EPSG','4500','EPSG','4148','EPSG','9220','EPSG','4568',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9249','Tapi Aike / Argentina 1',NULL,NULL,'EPSG','4530','EPSG','9248','EPSG','18031','EPSG','4570',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9250','Tapi Aike / Argentina 2',NULL,NULL,'EPSG','4530','EPSG','9248','EPSG','18032','EPSG','4571',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9252','MMN / Argentina 2',NULL,NULL,'EPSG','4530','EPSG','9251','EPSG','18032','EPSG','2357',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9254','MMS / Argentina 2',NULL,NULL,'EPSG','4530','EPSG','9253','EPSG','18032','EPSG','2357',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9265','POSGAR 2007 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','5340','EPSG','16119','EPSG','2596',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9271','MGI / Austria West',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','9268','EPSG','1706',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9272','MGI / Austria Central',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','9269','EPSG','1707',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9273','MGI / Austria East',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','9270','EPSG','1708',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9284','Pampa del Castillo / Argentina 1',NULL,NULL,'EPSG','4530','EPSG','4161','EPSG','18031','EPSG','4564',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9285','Pampa del Castillo / Argentina 3',NULL,NULL,'EPSG','4530','EPSG','4161','EPSG','18033','EPSG','4565',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);
|
||||
@@ -4479,9 +4489,9 @@ INSERT INTO "projected_crs" VALUES('EPSG','31284','MGI / Austria M28',NULL,NULL,
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','31285','MGI / Austria M31',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18045','EPSG','1707',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','31286','MGI / Austria M34',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18046','EPSG','1708',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','31287','MGI / Austria Lambert',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','19947','EPSG','1037',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','31288','MGI (Ferro) / M28',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18047','EPSG','1706',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','31289','MGI (Ferro) / M31',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18048','EPSG','1707',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','31290','MGI (Ferro) / M34',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18049','EPSG','1708',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','31288','MGI (Ferro) / Austria zone M28',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18047','EPSG','1706',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','31289','MGI (Ferro) / Austria zone M31',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18048','EPSG','1707',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','31290','MGI (Ferro) / Austria zone M34',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18049','EPSG','1708',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','31291','MGI (Ferro) / Austria West Zone',NULL,NULL,'EPSG','4499','EPSG','4805','EPSG','18041','EPSG','1706',NULL,1);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','31292','MGI (Ferro) / Austria Central Zone',NULL,NULL,'EPSG','4499','EPSG','4805','EPSG','18042','EPSG','1708',NULL,1);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','31293','MGI (Ferro) / Austria East Zone',NULL,NULL,'EPSG','4499','EPSG','4805','EPSG','18043','EPSG','1707',NULL,1);
|
||||
|
||||
@@ -200,3 +200,21 @@ INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9137','grid_tran
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','6326','grid_transformation','EPSG','9229','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7646','grid_transformation','EPSG','9230','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7647','grid_transformation','EPSG','9231','EPSG');
|
||||
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','4831','helmert_transformation','EPSG','9281','EPSG');
|
||||
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','4830','helmert_transformation','EPSG','9281','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7000','grid_transformation','EPSG','9282','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7860','grid_transformation','EPSG','9312','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','4459','grid_transformation','EPSG','9325','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7840','grid_transformation','EPSG','9326','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7861','grid_transformation','EPSG','9313','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7872','grid_transformation','EPSG','9324','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7871','grid_transformation','EPSG','9323','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7870','grid_transformation','EPSG','9322','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7869','grid_transformation','EPSG','9321','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7868','grid_transformation','EPSG','9320','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7867','grid_transformation','EPSG','9319','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7866','grid_transformation','EPSG','9318','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7865','grid_transformation','EPSG','9317','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7864','grid_transformation','EPSG','9316','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7863','grid_transformation','EPSG','9315','EPSG');
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7862','grid_transformation','EPSG','9314','EPSG');
|
||||
|
||||
@@ -217,3 +217,7 @@ INSERT INTO "vertical_crs" VALUES('EPSG','8904','TWVD 2001 height',NULL,NULL,'EP
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','8911','DACR52 height',NULL,NULL,'EPSG','6499','EPSG','1226','EPSG','3232',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9130','IGN 2008 LD height',NULL,NULL,'EPSG','6499','EPSG','1250','EPSG','2893',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','9245','CGVD2013(CGG2013a) height',NULL,NULL,'EPSG','6499','EPSG','1256','EPSG','1061',0);
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','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','9335','KSA-VRF14 height',NULL,NULL,'EPSG','6499','EPSG','1269','EPSG','3303',0);
|
||||
|
||||
@@ -80,6 +80,10 @@ INSERT INTO "vertical_datum" VALUES('EPSG','1224','Taiwan Vertical Datum 2001',N
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1226','Datum Altimetrico de Costa Rica 1952',NULL,NULL,'EPSG','3232','1952-01-01',0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1250','IGN 2008 LD',NULL,NULL,'EPSG','2893','2008-01-01',0);
|
||||
INSERT INTO "vertical_datum" VALUES('EPSG','1256','Canadian Geodetic Vertical Datum of 2013 (CGG2013a)',NULL,NULL,'EPSG','1061','2015-12-05',0);
|
||||
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','1269','Kingdom of Saudi Arabia Vertical Reference Frame Jeddah 2014',NULL,NULL,'EPSG','3303','2014-10-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);
|
||||
|
||||
@@ -3,17 +3,19 @@
|
||||
task:
|
||||
name: FreeBSD
|
||||
freebsd_instance:
|
||||
cpu: 4
|
||||
matrix:
|
||||
image: freebsd-12-0-release-amd64
|
||||
image: freebsd-12-1-release-amd64
|
||||
# image: freebsd-11-2-release-amd64
|
||||
# image: freebsd-10-4-release-amd64
|
||||
|
||||
env:
|
||||
CIRRUS_CLONE_DEPTH: 1
|
||||
MAKE_FLAGS: -j 2
|
||||
MAKE_FLAGS: -j 4
|
||||
|
||||
cache:
|
||||
folder: $HOME/.ccache
|
||||
# Disable cache: its upload can take up to 30 minutes!
|
||||
#cache:
|
||||
# folder: $HOME/.ccache
|
||||
|
||||
pkginstall_script:
|
||||
- pkg install -y autoconf automake libtool pkgconf sqlite3 wget unzip ccache gmake
|
||||
@@ -22,7 +24,7 @@ task:
|
||||
- (cd data && unzip -o ../proj-datumgrid-1.8.zip)
|
||||
configure_script:
|
||||
- ./autogen.sh
|
||||
- CC="ccache cc" CXX="ccache c++" ./configure --disable-static
|
||||
- ./configure --disable-static
|
||||
compile_script:
|
||||
- gmake $(MAKE_FLAGS)
|
||||
test_script:
|
||||
@@ -37,7 +37,7 @@ matrix:
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- sourceline: 'ppa:ubuntu-toolchain-r/test'
|
||||
packages:
|
||||
- g++-7
|
||||
- make
|
||||
@@ -34,7 +34,7 @@ build_script:
|
||||
appveyor DownloadFile https://sqlite.org/2018/sqlite-tools-win32-x86-3250100.zip
|
||||
7z x sqlite-tools-win32-x86-3250100.zip
|
||||
- copy "%APPVEYOR_BUILD_FOLDER%"\sqlite-tools-win32-x86-3250100\sqlite3.exe %SQLITE3_BIN%
|
||||
- set PATH=%PATH%;%SQLITE3_BIN%
|
||||
- set PATH=%SQLITE3_BIN%;%PATH%
|
||||
- if "%platform%" == "x64" SET VS_FULL=%VS_VERSION% Win64
|
||||
- if "%platform%" == "x64" SET BUILD_LIBPROJ_SHARED=ON
|
||||
- if "%platform%" == "x86" SET VS_FULL=%VS_VERSION%
|
||||
@@ -56,7 +56,7 @@ test_script:
|
||||
- 7z e -aoa -y proj-datumgrid-1.8.zip
|
||||
- cd %PROJ_BUILD%
|
||||
- ctest -V -C Release
|
||||
- set PATH=%PATH%;%PROJ_DIR%\bin
|
||||
- set PATH=%PROJ_DIR%\bin;%PATH%
|
||||
- proj
|
||||
|
||||
deploy: off
|
||||
@@ -0,0 +1,17 @@
|
||||
name: proj
|
||||
channels:
|
||||
- conda-forge
|
||||
dependencies:
|
||||
- descartes
|
||||
- doxygen < 1.9
|
||||
- geojson
|
||||
- matplotlib
|
||||
- shapely < 1.8
|
||||
- pip
|
||||
- pip:
|
||||
- breathe < 4.15
|
||||
- Jinja2 < 3.1
|
||||
- pybtex
|
||||
- sphinx < 3
|
||||
- sphinx-rtd-theme < 1.0
|
||||
- sphinxcontrib-bibtex
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
@@ -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
+110
-58
@@ -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 = '../../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:
|
||||
print("'proj' binary not found, please update PROJ constant in plot.py "
|
||||
"to point to your local 'proj' binary")
|
||||
except FileNotFoundError as e:
|
||||
print("'proj' binary not found, set the PROJ_EXE environment variable "
|
||||
"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,27 +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 = Box(
|
||||
plotdef['lonmin'], plotdef['latmin'],
|
||||
plotdef['lonmax'], plotdef['latmax'])
|
||||
for feat in data["features"]:
|
||||
geom = shape(feat["geometry"])
|
||||
if not geom.intersects(box):
|
||||
continue
|
||||
|
||||
box = Polygon([
|
||||
(plotdef['lonmin'], plotdef['latmin']),
|
||||
(plotdef['lonmin'], plotdef['latmax']),
|
||||
(plotdef['lonmax'], plotdef['latmax']),
|
||||
(plotdef['lonmax'], plotdef['latmin']),
|
||||
])
|
||||
temp_pol = temp_pol.intersection(box)
|
||||
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)
|
||||
@@ -263,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 = [
|
||||
@@ -278,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'],
|
||||
@@ -292,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')
|
||||
@@ -311,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')
|
||||
|
||||
@@ -323,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
|
||||
@@ -364,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
+19
@@ -0,0 +1,19 @@
|
||||
#!/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
|
||||
|
||||
# Undoes the hacks of scripts/generate_breathe_friendly_general_doc.py
|
||||
sed "s/<em class=\"property\">namespace <\/em>//g" < ${READTHEDOCS_OUTPUT_HTML}/development/reference/cpp/cpp_general.html > ${READTHEDOCS_OUTPUT_HTML}/development/reference/cpp/cpp_general.html.tmp
|
||||
mv ${READTHEDOCS_OUTPUT_HTML}/development/reference/cpp/cpp_general.html.tmp ${READTHEDOCS_OUTPUT_HTML}/development/reference/cpp/cpp_general.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 -DPROJ_TESTS=OFF -DCMAKE_INSTALL_PREFIX=$HOME/.local ..
|
||||
|
||||
ninja install
|
||||
@@ -97,13 +97,18 @@ The following control parameters can appear in any order:
|
||||
|
||||
.. option:: -r
|
||||
|
||||
This options reverses the order of the expected input from
|
||||
longitude-latitude or x-y to latitude-longitude or y-x.
|
||||
This options reverses the order of the first two expected
|
||||
inputs from that specified by the CRS to the opposite
|
||||
order. The third coordinate, typically height, remains
|
||||
third.
|
||||
|
||||
.. option:: -s
|
||||
|
||||
This options reverses the order of the output from x-y or longitude-latitude
|
||||
to y-x or latitude-longitude.
|
||||
This options reverses the order of the first two expected
|
||||
outputs from that specified by the CRS to the opposite
|
||||
order. The third coordinate, typically height, remains
|
||||
third.
|
||||
|
||||
|
||||
.. option:: -f <format>
|
||||
|
||||
|
||||
@@ -16,3 +16,17 @@ contributor the community is always very welcoming.
|
||||
code_contributions
|
||||
code_of_conduct
|
||||
rfc/index
|
||||
|
||||
Conference
|
||||
----------
|
||||
|
||||
.. image:: ../../images/foss4g2020.png
|
||||
:alt: FOSS4G 2020
|
||||
:target: https://2020.foss4g.org/
|
||||
|
||||
`FOSS4G 2020 <https://2020.foss4g.org/>`_ is the leading annual conference for
|
||||
free and open source geospatial software. It will include presentations related
|
||||
to PROJ, and some of the PROJ development community will be attending. It is the
|
||||
event for those interested in PROJ, other FOSS geospatial technologies and the
|
||||
community around them. The conference will be held in Calgary, Canada,
|
||||
August 24th - August 29th, 2020.
|
||||
|
||||
@@ -14,3 +14,4 @@ the project.
|
||||
rfc-1
|
||||
rfc-2
|
||||
rfc-3
|
||||
rfc-4
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+17
-16
@@ -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,28 +63,24 @@ 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 = '6.3.0'
|
||||
|
||||
# use same |release| as |version|
|
||||
release = version
|
||||
version = '6.3'
|
||||
release = '6.3.1'
|
||||
|
||||
# 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 = 'February 2020'
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
#today_fmt = '%B %d, %Y'
|
||||
|
||||
@@ -170,16 +168,16 @@ html_logo = '../images/logo.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': '/6.2/docs/source/',
|
||||
'css_files': [
|
||||
'_static/theme_overrides.css', # override wide tables in RTD theme
|
||||
],
|
||||
'github_version': '/6.3/docs/source/',
|
||||
}
|
||||
|
||||
# Add any extra paths that contain custom files (such as robots.txt or
|
||||
@@ -252,6 +250,8 @@ preamble = r"""
|
||||
\ifdefined\DeclareUnicodeCharacter
|
||||
\DeclareUnicodeCharacter{2032}{$'$}% prime
|
||||
\fi
|
||||
|
||||
\usepackage[notbib]{tocbibind}
|
||||
"""
|
||||
|
||||
latex_elements = {
|
||||
@@ -263,7 +263,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',
|
||||
|
||||
@@ -28,6 +28,11 @@ Go (Golang)
|
||||
`go-proj <https://github.com/everystreet/go-proj>`_:
|
||||
Go bindings and idiomatic wrapper for PROJ
|
||||
|
||||
Julia
|
||||
=====
|
||||
`Proj4.jl <https://github.com/JuliaGeo/Proj4.jl>`_"
|
||||
Low-level bindings and a Julian API over PROJ.
|
||||
|
||||
TCL
|
||||
========
|
||||
`proj4tcl <http://wiki.tcl.tk/41270>`_:
|
||||
|
||||
@@ -20,23 +20,27 @@ PROJ project or using the library in their own software.
|
||||
bindings
|
||||
migration
|
||||
|
||||
The source code for PROJ is maintained in a
|
||||
`git repository on GitHub <https://github.com/OSGeo/PROJ>`_.
|
||||
Additionally, a collection of PROJ-compatible transformation grids
|
||||
are maintained in a `separate git repository <https://github.com/OSGeo/proj-datumgrid>`_.
|
||||
|
||||
.. attention::
|
||||
|
||||
The ``projects.h`` header and the functions related to it is considered
|
||||
deprecated from version 5.0.0 and onwards. The header will be removed
|
||||
from PROJ in version 6.0.0 scheduled for release February 1st 2019.
|
||||
deprecated from version 5.0.0 and onwards. The header has been removed
|
||||
PROJ in version 6.0.0 released February 1st 2019.
|
||||
|
||||
.. attention::
|
||||
|
||||
The nmake build system on Windows will not be supported from
|
||||
The nmake build system on Windows is on longer supported in
|
||||
version 6.0.0 on onwards. Use CMake instead.
|
||||
|
||||
.. attention::
|
||||
|
||||
The ``proj_api.h`` header and the functions related to it is
|
||||
considered deprecated from version 5.0.0 and onwards. The header will be
|
||||
removed from PROJ in version 7.0.0 scheduled for release February 1st
|
||||
removed from PROJ in version 7.0.0 scheduled for release March 1st
|
||||
2020.
|
||||
|
||||
.. attention::
|
||||
|
||||
@@ -181,6 +181,14 @@ will be used (that is trying to find as much as possible the most direct
|
||||
transformation between the source and target datum), whereas PROJ 4 or PROJ 5
|
||||
used an "early-binding" approach consisting in always going to EPSG:4326 / WGS 84.
|
||||
|
||||
|
||||
Feedback from downstream projects on the PROJ 6 migration
|
||||
###############################################################################
|
||||
|
||||
* `PROJ 6 adoption by Spatialite <https://www.gaia-gis.it/fossil/libspatialite/wiki?name=PROJ.6>`_
|
||||
|
||||
* `On GDA2020, PROJ 6 and QGIS: Lessons learnt and recommendations for handling GDA2020 within geospatial software development <https://www.icsm.gov.au/sites/default/files/North%20Road%20Handling%20GDA2020%20within%20Geospatial%20Software%20Development.pdf>`_
|
||||
|
||||
================================================================================
|
||||
Version 4 to 5 API Migration
|
||||
================================================================================
|
||||
|
||||
@@ -13,17 +13,18 @@ distribution of the source code and various resource file archives. See
|
||||
Current Release
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
* **2019-11-01** `proj-6.2.1.tar.gz`_ (`md5`_)
|
||||
* **2020-02-11** `proj-6.3.1.tar.gz`_ (`md5`_)
|
||||
* **2018-09-15** `proj-datumgrid-1.8.zip`_
|
||||
* **2019-09-01** `proj-datumgrid-europe-1.4.zip`_
|
||||
* **2019-03-01** `proj-datumgrid-north-america-1.2.zip`_
|
||||
* **2018-03-01** `proj-datumgrid-oceania-1.0.zip`_
|
||||
* **2019-09-01** `proj-datumgrid-europe-1.5.zip`_
|
||||
* **2019-03-01** `proj-datumgrid-north-america-1.3.zip`_
|
||||
* **2018-03-01** `proj-datumgrid-oceania-1.1.zip`_
|
||||
* **2019-03-01** `proj-datumgrid-world-1.0.zip`_
|
||||
* **PDF Manual** `proj.pdf`_
|
||||
|
||||
Past Releases
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
* **2020-01-01** `proj-6.3.0.tar.gz`_
|
||||
* **2019-11-01** `proj-6.2.1.tar.gz`_
|
||||
* **2019-09-01** `proj-6.2.0.tar.gz`_
|
||||
* **2019-07-01** `proj-6.1.1.tar.gz`_
|
||||
* **2019-05-15** `proj-6.1.0.tar.gz`_
|
||||
@@ -38,13 +39,19 @@ Past Releases
|
||||
|
||||
* **2018-03-01** `proj-datumgrid-1.7.zip`_
|
||||
* **2016-09-11** `proj-datumgrid-1.6.zip`_
|
||||
* **2019-09-01** `proj-datumgrid-europe-1.4.zip`_
|
||||
* **2019-07-01** `proj-datumgrid-europe-1.3.zip`_
|
||||
* **2019-03-01** `proj-datumgrid-europe-1.2.zip`_
|
||||
* **2018-09-15** `proj-datumgrid-europe-1.1.zip`_
|
||||
* **2018-09-15** `proj-datumgrid-north-america-1.1.zip`_
|
||||
* **2018-03-01** `proj-datumgrid-europe-1.0.zip`_
|
||||
* **2019-03-01** `proj-datumgrid-north-america-1.2.zip`_
|
||||
* **2018-09-15** `proj-datumgrid-north-america-1.1.zip`_
|
||||
* **2018-03-01** `proj-datumgrid-north-america-1.0.zip`_
|
||||
* **2018-03-01** `proj-datumgrid-oceania-1.0.zip`_
|
||||
|
||||
.. _`proj-6.3.1.tar.gz`: https://download.osgeo.org/proj/proj-6.3.1.tar.gz
|
||||
.. _`md5`: https://download.osgeo.org/proj/proj-6.3.1.tar.gz.md5
|
||||
.. _`proj-6.3.0.tar.gz`: https://download.osgeo.org/proj/proj-6.3.0.tar.gz
|
||||
.. _`proj-6.2.1.tar.gz`: https://download.osgeo.org/proj/proj-6.2.1.tar.gz
|
||||
.. _`proj-6.2.0.tar.gz`: https://download.osgeo.org/proj/proj-6.2.0.tar.gz
|
||||
.. _`proj-6.1.1.tar.gz`: https://download.osgeo.org/proj/proj-6.1.1.tar.gz
|
||||
@@ -65,10 +72,11 @@ Past Releases
|
||||
.. _`proj-datumgrid-europe-1.2.zip`: https://download.osgeo.org/proj/proj-datumgrid-europe-1.2.zip
|
||||
.. _`proj-datumgrid-europe-1.3.zip`: https://download.osgeo.org/proj/proj-datumgrid-europe-1.3.zip
|
||||
.. _`proj-datumgrid-europe-1.4.zip`: https://download.osgeo.org/proj/proj-datumgrid-europe-1.4.zip
|
||||
.. _`proj-datumgrid-europe-1.5.zip`: https://download.osgeo.org/proj/proj-datumgrid-europe-1.5.zip
|
||||
.. _`proj-datumgrid-north-america-1.0.zip`: https://download.osgeo.org/proj/proj-datumgrid-north-america-1.0.zip
|
||||
.. _`proj-datumgrid-north-america-1.1.zip`: https://download.osgeo.org/proj/proj-datumgrid-north-america-1.1.zip
|
||||
.. _`proj-datumgrid-north-america-1.2.zip`: https://download.osgeo.org/proj/proj-datumgrid-north-america-1.2.zip
|
||||
.. _`proj-datumgrid-north-america-1.3.zip`: https://download.osgeo.org/proj/proj-datumgrid-north-america-1.3.zip
|
||||
.. _`proj-datumgrid-oceania-1.0.zip`: https://download.osgeo.org/proj/proj-datumgrid-oceania-1.0.zip
|
||||
.. _`proj-datumgrid-oceania-1.1.zip`: https://download.osgeo.org/proj/proj-datumgrid-oceania-1.1.zip
|
||||
.. _`proj-datumgrid-world-1.0.zip`: https://download.osgeo.org/proj/proj-datumgrid-world-1.0.zip
|
||||
.. _`md5`: https://download.osgeo.org/proj/proj-6.2.1.tar.gz.md5
|
||||
.. _`proj.pdf`: https://raw.githubusercontent.com/OSGeo/PROJ/gh-pages/proj.pdf
|
||||
|
||||
@@ -172,3 +172,22 @@ paths. In most cases, the following paths are checked in order:
|
||||
Note that if you're using conda, activating an environment sets
|
||||
:envvar:`PROJ_LIB` to a resource directory located in that environment.
|
||||
|
||||
|
||||
What happend to PROJ.4?
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
The first incarnation of PROJ saw the light of day in 1983. Back then it
|
||||
was simply known as PROJ. Eventually a new version was released, known
|
||||
as PROJ.2 in order to distinguish between the two versions. Later on both
|
||||
PROJ.3 and PROJ.4 was released. By the time PROJ.4 was released the
|
||||
software had matured enough that a new major version release wasn't an
|
||||
immediate necesity. PROJ.4 was around for more than 25 years before it
|
||||
again became time for an update. This left the project in a bit of a
|
||||
conundrum regarding the name. For the majority of the life-time of the product it was known as PROJ.4, but with the release of version 5 the name
|
||||
was no longer aligned with the version number. As a consequence, it was
|
||||
decided to decouple the name from the version number and once again simply
|
||||
call the software PROJ.
|
||||
|
||||
Use of name PROJ.4 is now strictly reserved for describing legacy behaviour
|
||||
of the software, e.g. "PROJ.4 strings" as seen in :program:`projinfo`
|
||||
output.
|
||||
|
||||
@@ -29,8 +29,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
|
||||
|
||||
@@ -167,6 +167,12 @@ If another path prefix is required, then execute::
|
||||
In either case, the directory of the prefix path must exist and be writable by
|
||||
the installer.
|
||||
|
||||
If you are building from the git repository you have to first run::
|
||||
|
||||
./autogen.sh
|
||||
|
||||
which will generate a configure script that can be used as described above.
|
||||
|
||||
Before proceeding with the installation we need to add the datum grids. Unzip
|
||||
the contents of the *proj-datumgrid* package into ``data/``::
|
||||
|
||||
|
||||
@@ -3,6 +3,135 @@
|
||||
News
|
||||
###############################################################################
|
||||
|
||||
6.3.1 Release Notes
|
||||
++++++++++++++++++++++++++++++++++++++++
|
||||
*February 11th 2020*
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
* Update the EPSG database to version 9.8.6
|
||||
|
||||
* Database: add mapping for gg10_smv2.mnt and gg10_sbv2.mnt French grids
|
||||
|
||||
* Database: add mapping for TOR27CSv1.GSB
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
* Fix wrong use of derivingConversionRef() that caused issues with use of
|
||||
+init=epsg:XXXX by GDAL (affecting R spatial libraries) or in MapServer
|
||||
|
||||
* fix exporting CoordinateSystem to PROJ JSON with ID
|
||||
|
||||
* projinfo: use No. abbreviation instead of UTF-8 character
|
||||
(`#1828 <https://github.com/OSGeo/PROJ/issues/1828>`_)
|
||||
|
||||
* CompoundCRS::identify(): avoid exception when horiz/vertical part is a
|
||||
BoundCRS
|
||||
|
||||
* createOperations(): fix dealing with projected 3D CRS whose Z units != metre
|
||||
|
||||
* WKT1_GDAL export: limit datum name massaging to names matching EPSG
|
||||
(`#1835 <https://github.com/OSGeo/PROJ/issues/1835>`_)
|
||||
|
||||
* unitconvert with mjd time format: avoid potential integer overflow
|
||||
(ossfuzz 20072)
|
||||
|
||||
* ProjectedCRS::identify(): fix wrong identification of some ESRI WKT linked
|
||||
to units
|
||||
|
||||
* Database: add a geoid_like value for proj_method column of grid_alternatives,
|
||||
fix related entries and simplify/robustify logic to deal with EPSG
|
||||
'Geographic3D to GravityRelatedHeight' methods
|
||||
|
||||
* Fix ingestion of +proj=cea with +k_0 (`#1881 <https://github.com/OSGeo/PROJ/issues/1881>`_)
|
||||
|
||||
* Fix performance issue, affecting PROJ.4 string generation of EPSG:7842
|
||||
(`#1913 <https://github.com/OSGeo/PROJ/issues/1913>`_)
|
||||
|
||||
* Fix identification of ESRI-style datum names starting with D\_ but without
|
||||
alias (`#1911 <https://github.com/OSGeo/PROJ/issues/1911>`_)
|
||||
|
||||
* cart: Avoid discontinuity at poles in the inverse case
|
||||
(`#1906 <https://github.com/OSGeo/PROJ/issues/1906>`_)
|
||||
|
||||
* Various updates to make regression test suite pass with gcc on i386
|
||||
(`#1906 <https://github.com/OSGeo/PROJ/issues/1906>`_)
|
||||
|
||||
|
||||
6.3.0 Release Notes
|
||||
++++++++++++++++++++++++++++++++++++++++
|
||||
*January 1st 2020*
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
* Database: tune accuracy of Canadian NTv1 file w.r.t NTv2 (`#1812 <https://github.com/OSGeo/PROJ/issues/1812>`_)
|
||||
|
||||
* Modify verbosity level of some debug/trace messages (`#1811 <https://github.com/OSGeo/PROJ/issues/1811>`_)
|
||||
|
||||
* :program:`projinfo`: no longer call createBoundCRSToWGS84IfPossible() for WKT1:GDAL
|
||||
(`#1810 <https://github.com/OSGeo/PROJ/issues/1810>`_)
|
||||
|
||||
* :c:func:`proj_trans`: add retry logic to select other transformation if the best one
|
||||
fails. (`#1809 <https://github.com/OSGeo/PROJ/issues/1809>`_)
|
||||
|
||||
* :c:func:`BoundCRS::identify()`: improvements to discard CRS that aren't relevant
|
||||
(`#1802 <https://github.com/OSGeo/PROJ/issues/1802>`_)
|
||||
|
||||
* Database: update to IGNF v3.1.0 (`#1785 <https://github.com/OSGeo/PROJ/issues/1785>`_)
|
||||
|
||||
* Build: Only export symbols if building DLL (`#1773 <https://github.com/OSGeo/PROJ/issues/1773>`_)
|
||||
|
||||
* Database: update ESRI entries with ArcGIS Desktop version 10.8.0 database
|
||||
(`#1762 <https://github.com/OSGeo/PROJ/issues/1762>`_)
|
||||
|
||||
* :c:func:`createOperations()`: chain operations whose middle CRSs are not identical but
|
||||
have the same datum (`#1734 <https://github.com/OSGeo/PROJ/issues/1734>`_)
|
||||
|
||||
* import/export PROJJSON: support a interpolation_crs key to geoid_model
|
||||
(`#1732 <https://github.com/OSGeo/PROJ/issues/1732>`_)
|
||||
|
||||
* Database: update to EPSG v9.8.4 (`#1725 <https://github.com/OSGeo/PROJ/issues/1725>`_)
|
||||
|
||||
* Build: require SQLite 3.11 (`#1721 <https://github.com/OSGeo/PROJ/issues/1721>`_)
|
||||
|
||||
* Add support for GEOIDMODEL (`#1710 <https://github.com/OSGeo/PROJ/issues/1710>`_)
|
||||
|
||||
* Better filtering based on extent and performance improvements (`#1709 <https://github.com/OSGeo/PROJ/issues/1709>`_)
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
* Horizontal grid shift: fix issue on iterative inverse computation when
|
||||
switching between (sub)grids (`#1797 <https://github.com/OSGeo/PROJ/issues/1797>`_)
|
||||
|
||||
* :c:func:`createOperations()`: make filtering out of 'uninteresting' operations less
|
||||
aggressive (`#1788 <https://github.com/OSGeo/PROJ/issues/1788>`_)
|
||||
|
||||
* Make EPSG:102100 resolve to ESRI:102100 (`#1786 <https://github.com/OSGeo/PROJ/issues/1786>`_)
|
||||
|
||||
* ``ob_tran``: restore traditional handling of ``+to_meter`` with :c:func:`pj_transform()` and
|
||||
:program:`proj` utility (`#1783 <https://github.com/OSGeo/PROJ/issues/1783>`_)
|
||||
|
||||
* CRS identification: use case insensitive comparison for authority name
|
||||
(`#1780 <https://github.com/OSGeo/PROJ/issues/1780>`_)
|
||||
|
||||
* :c:func:`normalizeForVisualization()` and other methods applying on a ProjectedCRS: do
|
||||
not mess the derivingConversion object of the original object (`#1746 <https://github.com/OSGeo/PROJ/issues/1746>`_)
|
||||
|
||||
* :c:func:`createOperations()`: fix transformation computation from/to a CRS with
|
||||
``+geoidgrids`` and ``+vunits`` != m (`#1731 <https://github.com/OSGeo/PROJ/issues/1731>`_)
|
||||
|
||||
* Fix :c:func:`proj_assign_context()`/:c:func:`pj_set_ctx()` with pipelines and alternative coord
|
||||
operations (`#1726 <https://github.com/OSGeo/PROJ/issues/1726>`_)
|
||||
|
||||
* Database: add an auxiliary concatenated_operation_step table to allow
|
||||
arbitrary number of steps (`#1696 <https://github.com/OSGeo/PROJ/issues/1696>`_)
|
||||
|
||||
* Fix errors running gie-based tests in Debug mode on Windo (`#1688 <https://github.com/OSGeo/PROJ/issues/1688>`_)
|
||||
|
||||
6.2.1 Release Notes
|
||||
++++++++++++++++++++++++++++++++++++++++
|
||||
*November 1st 2019*
|
||||
|
||||
@@ -5,7 +5,7 @@ Computation of coordinate operations between two CRS
|
||||
================================================================================
|
||||
|
||||
:Author: Even Rouault
|
||||
:Last Updated: 2019-11-28
|
||||
:Last Updated: 2020-01-02
|
||||
|
||||
Introduction
|
||||
------------
|
||||
@@ -41,8 +41,8 @@ geographic CRS:
|
||||
DERIVED_FROM(EPSG):1313, NAD27 to NAD83 (4), 1.5 m, Canada - NAD27, at least one grid missing
|
||||
DERIVED_FROM(EPSG):1241, NAD27 to NAD83 (1), 0.15 m, USA - CONUS including EEZ
|
||||
DERIVED_FROM(EPSG):1243, NAD27 to NAD83 (2), 0.5 m, USA - Alaska including EEZ
|
||||
DERIVED_FROM(EPSG):1573, NAD27 to NAD83 (6), 1.5 m, Canada - Quebec, at least one grid missing
|
||||
EPSG:1462, NAD27 to NAD83 (5), 1.0 m, Canada - Quebec, at least one grid missing
|
||||
EPSG:1573, NAD27 to NAD83 (6), 1.5 m, Canada - Quebec, at least one grid missing
|
||||
EPSG:9111, NAD27 to NAD83 (9), 1.5 m, Canada - Saskatchewan, at least one grid missing
|
||||
unknown id, Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, World, has ballpark transformation
|
||||
EPSG:8555, NAD27 to NAD83 (7), 0.15 m, USA - CONUS and GoM, at least one grid missing
|
||||
@@ -236,7 +236,7 @@ are equivalent for most purposes.
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
$ projinfo projinfo -s EPSG:7042 -t EPSG:4936
|
||||
$ projinfo -s EPSG:7042 -t EPSG:4936
|
||||
|
||||
Candidate operations found: 1
|
||||
-------------------------------------
|
||||
@@ -304,12 +304,12 @@ the source and target CRS, and inverting the resulting operation(s):
|
||||
$ projinfo -s NAD83 -t NAD27 --spatial-test intersects --summary
|
||||
|
||||
Candidate operations found: 10
|
||||
INVERSE(DERIVED_FROM(EPSG)):1312, Inverse of NAD27 to NAD83 (3), 1.0 m, Canada
|
||||
INVERSE(DERIVED_FROM(EPSG)):1312, Inverse of NAD27 to NAD83 (3), 2.0 m, Canada
|
||||
INVERSE(DERIVED_FROM(EPSG)):1313, Inverse of NAD27 to NAD83 (4), 1.5 m, Canada - NAD27
|
||||
INVERSE(DERIVED_FROM(EPSG)):1241, Inverse of NAD27 to NAD83 (1), 0.15 m, USA - CONUS including EEZ
|
||||
INVERSE(DERIVED_FROM(EPSG)):1243, Inverse of NAD27 to NAD83 (2), 0.5 m, USA - Alaska including EEZ
|
||||
INVERSE(DERIVED_FROM(EPSG)):1313, Inverse of NAD27 to NAD83 (4), 1.5 m, Canada - NAD27, at least one grid missing
|
||||
INVERSE(EPSG):1462, Inverse of NAD27 to NAD83 (5), 1.0 m, Canada - Quebec, at least one grid missing
|
||||
INVERSE(EPSG):1573, Inverse of NAD27 to NAD83 (6), 1.5 m, Canada - Quebec, at least one grid missing
|
||||
INVERSE(DERIVED_FROM(EPSG)):1573, Inverse of NAD27 to NAD83 (6), 1.5 m, Canada - Quebec, at least one grid missing
|
||||
INVERSE(EPSG):1462, Inverse of NAD27 to NAD83 (5), 2.0 m, Canada - Quebec, at least one grid missing
|
||||
INVERSE(EPSG):9111, Inverse of NAD27 to NAD83 (9), 1.5 m, Canada - Saskatchewan, at least one grid missing
|
||||
unknown id, Ballpark geographic offset from NAD83 to NAD27, unknown accuracy, World, has ballpark transformation
|
||||
INVERSE(EPSG):8555, Inverse of NAD27 to NAD83 (7), 0.15 m, USA - CONUS and GoM, at least one grid missing
|
||||
@@ -660,47 +660,74 @@ CompoundCRS to CompoundCRS
|
||||
---------------------------------------------------------------------------------
|
||||
|
||||
There is some similarity with the previous paragraph. We first research the
|
||||
vertical transformations between the vertical CRS. If such tranformation has
|
||||
a registered interpolation geographic CRS, then it is used. Otherwise we fallback
|
||||
to the geographic CRS of the source CRS.
|
||||
vertical transformations between the two vertical CRS.
|
||||
|
||||
Finally, a 3-level loop to create the final set of operations chaining together:
|
||||
1. If there is such a tranformation, be it direct, or if both vertical CRS
|
||||
relate to a common intermediate CRS.
|
||||
If it has a registered interpolation geographic CRS, then it is used.
|
||||
Otherwise we fallback to the geographic CRS of the source CRS.
|
||||
|
||||
- the horizontal transformation from the source CRS to the interpolation CRS
|
||||
- the vertical transformation
|
||||
- the horizontal transformation from the interpolation CRS to the target CRS.
|
||||
Finally, a 3-level loop to create the final set of operations chaining together:
|
||||
|
||||
This is implemented by the ``createOperationsCompoundToGeog`` method
|
||||
- the horizontal transformation from the source CRS to the interpolation CRS
|
||||
- the vertical transformation
|
||||
- the horizontal transformation from the interpolation CRS to the target CRS.
|
||||
|
||||
Example:
|
||||
Example:
|
||||
|
||||
.. code-block:: shell
|
||||
.. code-block:: shell
|
||||
|
||||
$ projinfo -s "NAD27 + NGVD29 height (ftUS)" -t "NAD83 + NAVD88 height" --spatial-test intersects --summary
|
||||
$ projinfo -s "NAD27 + NGVD29 height (ftUS)" -t "NAD83 + NAVD88 height" --spatial-test intersects --summary
|
||||
|
||||
Candidate operations found: 20
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (3) + NAD27 to NAD83 (1), 0.17 m, USA - CONUS east of 89°W - onshore
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (2) + NAD27 to NAD83 (1), 0.17 m, USA - CONUS 89°W-107°W - onshore
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (1) + NAD27 to NAD83 (1), 0.17 m, USA - CONUS west of 107°W - onshore
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (3) + NAD27 to NAD83 (3), 1.02 m, unknown domain of validity
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (2) + NAD27 to NAD83 (3), 1.02 m, unknown domain of validity
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (1) + NAD27 to NAD83 (3), 1.02 m, unknown domain of validity
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (3) + NAD27 to NAD83 (5), 1.02 m, unknown domain of validity, at least one grid missing
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (3) + NAD27 to NAD83 (6), 1.52 m, unknown domain of validity, at least one grid missing
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (2) + NAD27 to NAD83 (9), 1.52 m, unknown domain of validity, at least one grid missing
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (1) + NAD27 to NAD83 (9), 1.52 m, unknown domain of validity, at least one grid missing
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (3) + Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, USA - CONUS east of 89°W - onshore, has ballpark transformation
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (2) + Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, USA - CONUS 89°W-107°W - onshore, has ballpark transformation
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (1) + Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, USA - CONUS west of 107°W - onshore, has ballpark transformation
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + NAD27 to NAD83 (1), unknown accuracy, USA - CONUS including EEZ, has ballpark transformation
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + NAD27 to NAD83 (3), unknown accuracy, Canada, has ballpark transformation
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + NAD27 to NAD83 (4), unknown accuracy, Canada - NAD27, has ballpark transformation
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + NAD27 to NAD83 (5), unknown accuracy, Canada - Quebec, has ballpark transformation, at least one grid missing
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + NAD27 to NAD83 (6), unknown accuracy, Canada - Quebec, has ballpark transformation, at least one grid missing
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + NAD27 to NAD83 (9), unknown accuracy, Canada - Saskatchewan, has ballpark transformation, at least one grid missing
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, World, has ballpark transformation
|
||||
Candidate operations found: 20
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (3) + NAD27 to NAD83 (1), 0.17 m, USA - CONUS east of 89°W - onshore
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (2) + NAD27 to NAD83 (1), 0.17 m, USA - CONUS 89°W-107°W - onshore
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (1) + NAD27 to NAD83 (1), 0.17 m, USA - CONUS west of 107°W - onshore
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (3) + NAD27 to NAD83 (3), 1.02 m, unknown domain of validity
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (2) + NAD27 to NAD83 (3), 1.02 m, unknown domain of validity
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (1) + NAD27 to NAD83 (3), 1.02 m, unknown domain of validity
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (3) + NAD27 to NAD83 (5), 1.02 m, unknown domain of validity, at least one grid missing
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (3) + NAD27 to NAD83 (6), 1.52 m, unknown domain of validity, at least one grid missing
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (2) + NAD27 to NAD83 (9), 1.52 m, unknown domain of validity, at least one grid missing
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (1) + NAD27 to NAD83 (9), 1.52 m, unknown domain of validity, at least one grid missing
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (3) + Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, USA - CONUS east of 89°W - onshore, has ballpark transformation
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (2) + Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, USA - CONUS 89°W-107°W - onshore, has ballpark transformation
|
||||
unknown id, NGVD29 height (ftUS) to NAVD88 height (1) + Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, USA - CONUS west of 107°W - onshore, has ballpark transformation
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + NAD27 to NAD83 (1), unknown accuracy, USA - CONUS including EEZ, has ballpark transformation
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + NAD27 to NAD83 (3), unknown accuracy, Canada, has ballpark transformation
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + NAD27 to NAD83 (4), unknown accuracy, Canada - NAD27, has ballpark transformation
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + NAD27 to NAD83 (5), unknown accuracy, Canada - Quebec, has ballpark transformation, at least one grid missing
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + NAD27 to NAD83 (6), unknown accuracy, Canada - Quebec, has ballpark transformation, at least one grid missing
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + NAD27 to NAD83 (9), unknown accuracy, Canada - Saskatchewan, has ballpark transformation, at least one grid missing
|
||||
unknown id, Transformation from NGVD29 height (ftUS) to NAVD88 height (ballpark vertical transformation) + Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, World, has ballpark transformation
|
||||
|
||||
|
||||
2. Otherwise, when there is no such transformation, we decompose into 3 steps:
|
||||
|
||||
- transform from the source CRS to the geographic 3D CRS corresponding to it
|
||||
- transform from the geographic 3D CRS corresponding to the source CRS to the
|
||||
geographic 3D CRS corresponding to the target CRS
|
||||
- transform from the geographic 3D CRS corresponding to the target CRS to the
|
||||
target CRS.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
$ projinfo -s "WGS 84 + EGM96 height" -t "ETRS89 + Belfast height" --spatial-test intersects --summary
|
||||
|
||||
Candidate operations found: 7
|
||||
unknown id, Inverse of WGS 84 to EGM96 height (1) + Inverse of ETRS89 to WGS 84 (1) + ETRS89 to Belfast height (2), 2.014 m, UK - Northern Ireland - onshore
|
||||
unknown id, Inverse of WGS 84 to EGM96 height (1) + Inverse of ETRS89 to WGS 84 (1) + ETRS89 to Belfast height (1), 2.03 m, UK - Northern Ireland - onshore, at least one grid missing
|
||||
unknown id, Inverse of WGS 84 to EGM96 height (1) + Null geographic offset from WGS 84 (geog3D) to WGS 84 (geog2D) + Inverse of OSGB 1936 to WGS 84 (4) + OSGB 1936 to ETRS89 (2) + Null geographic offset from ETRS89 (geog2D) to ETRS89 (geog3D) + ETRS89 to Belfast height (2), 19.044 m, unknown domain of validity
|
||||
unknown id, Inverse of WGS 84 to EGM96 height (1) + Null geographic offset from WGS 84 (geog3D) to WGS 84 (geog2D) + Inverse of OSGB 1936 to WGS 84 (2) + OSGB 1936 to ETRS89 (2) + Null geographic offset from ETRS89 (geog2D) to ETRS89 (geog3D) + ETRS89 to Belfast height (2), 11.044 m, unknown domain of validity
|
||||
unknown id, Inverse of WGS 84 to EGM96 height (1) + Null geographic offset from WGS 84 (geog3D) to WGS 84 (geog2D) + Inverse of TM75 to WGS 84 (2) + TM75 to ETRS89 (3) + Null geographic offset from ETRS89 (geog2D) to ETRS89 (geog3D) + ETRS89 to Belfast height (2), 2.424 m, UK - Northern Ireland - onshore, at least one grid missing
|
||||
unknown id, Inverse of WGS 84 to EGM96 height (1) + Null geographic offset from WGS 84 (geog3D) to WGS 84 (geog2D) + Inverse of TM75 to WGS 84 (2) + TM75 to ETRS89 (3) + Null geographic offset from ETRS89 (geog2D) to ETRS89 (geog3D) + ETRS89 to Belfast height (1), 2.44 m, UK - Northern Ireland - onshore, at least one grid missing
|
||||
unknown id, Inverse of WGS 84 to EGM96 height (1) + Null geographic offset from WGS 84 (geog3D) to WGS 84 (geog2D) + Inverse of OSGB 1936 to WGS 84 (4) + OSGB 1936 to ETRS89 (2) + Null geographic offset from ETRS89 (geog2D) to ETRS89 (geog3D) + ETRS89 to Belfast height (1), 19.06 m, unknown domain of validity, at least one grid missing
|
||||
|
||||
|
||||
This is implemented by the ``createOperationsCompoundToCompound`` method
|
||||
|
||||
When the source or target CRS is a BoundCRS
|
||||
---------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -29,3 +29,9 @@ Parameters
|
||||
.. include:: ../options/x_0.rst
|
||||
|
||||
.. include:: ../options/y_0.rst
|
||||
|
||||
.. note::
|
||||
|
||||
``lat_ts`` and ``k_0`` are mutually exclusive. If ``lat_ts``
|
||||
is specified, it is equivalent to setting ``k_0`` to
|
||||
:math:`\frac{\cos \phi_{ts}}{\sqrt{1 - e^2 \sin^2 \phi_{ts}}}`
|
||||
@@ -72,6 +72,9 @@ is rotating. The possible values are x or y, y being the default. Thus, the
|
||||
scanning geometry of the Meteosat series satellite should take sweep as y, and
|
||||
GOES should take sweep as x.
|
||||
|
||||
The resulting position is different because
|
||||
`rotation in three dimensions is not commutative <https://math.stackexchange.com/q/2016937/31408>`_.
|
||||
|
||||
Parameters
|
||||
################################################################################
|
||||
|
||||
|
||||
@@ -44,6 +44,8 @@ Optional
|
||||
|
||||
.. include:: ../options/lon_0.rst
|
||||
|
||||
.. include:: ../options/lat_0.rst
|
||||
|
||||
.. include:: ../options/R.rst
|
||||
|
||||
.. include:: ../options/x_0.rst
|
||||
|
||||
@@ -100,7 +100,7 @@ Parameters
|
||||
Mathematical definition
|
||||
#######################
|
||||
|
||||
The formulas describing the Transverse Mercator below are quoted from Evenden's [Evenden2005]_.
|
||||
The formulas describing the Transverse Mercator below are quoted from :cite:`Evenden2005`.
|
||||
|
||||
:math:`\phi_0` is the latitude of origin that match the center of the map. It can be set with ``+lat_0``.
|
||||
|
||||
|
||||
@@ -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
|
||||
==================
|
||||
|
||||
@@ -93,7 +93,10 @@ Parameters
|
||||
grid is considered optional and PROJ will the not complain if the grid is
|
||||
not available.
|
||||
|
||||
Grids for the horizontla component of a deformation model is expected to be
|
||||
If a grid is specified with a path that contains spaces, the value should
|
||||
be quoted. e.g. `+xy_grids="/my path/has/spaces.ct2"`
|
||||
|
||||
Grids for the horizontal component of a deformation model are expected to be
|
||||
in CTable2 format.
|
||||
|
||||
.. option:: +z_grids=<list>
|
||||
@@ -102,8 +105,11 @@ Parameters
|
||||
grid is considered optional and PROJ will the not complain if the grid is
|
||||
not available.
|
||||
|
||||
Grids for the vertical component of a deformation model is expected to be
|
||||
in either GTX format.
|
||||
If a grid is specified with a path that contains spaces, the value should
|
||||
be quoted. e.g. `+z_grids="/my path/has/spaces.gtx"`
|
||||
|
||||
Grids for the vertical component of a deformation model are expected to be
|
||||
in GTX format.
|
||||
|
||||
.. option:: +t_epoch=<value>
|
||||
|
||||
@@ -191,4 +197,4 @@ that is searched for in the grid. :math:`(E, N, U)` are the grid values in ENU-s
|
||||
See also
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
#. :ref:`Behavioural changes from version 5 to 6<differences_deformation>`
|
||||
#. :ref:`Behavioural changes from version 5 to 6<differences_deformation>`
|
||||
|
||||
@@ -104,6 +104,9 @@ Required
|
||||
Comma-separated list of grids to load. If a grid is prefixed by an `@` the
|
||||
grid is considered optional and PROJ will the not complain if the grid is
|
||||
not available.
|
||||
|
||||
If a grid is specified with a path that contains spaces, the value should
|
||||
be quoted. e.g. `+grids="/my path/has/spaces.gsb"`
|
||||
|
||||
Grids are expected to be in CTable2, NTv1 or NTv2 format.
|
||||
|
||||
|
||||
@@ -103,6 +103,9 @@ Required
|
||||
grid is considered optional and PROJ will the not complain if the grid is
|
||||
not available.
|
||||
|
||||
If a grid is specified with a path that contains spaces, the value should
|
||||
be quoted. e.g. `+grids="/my path/has/spaces.gtx"`
|
||||
|
||||
Grids are expected to be in GTX format.
|
||||
|
||||
Optional
|
||||
|
||||
@@ -1293,6 +1293,8 @@ static const MethodMapping otherMethodMappings[] = {
|
||||
|
||||
{EPSG_NAME_METHOD_VERTCON, EPSG_CODE_METHOD_VERTCON, nullptr, nullptr,
|
||||
nullptr, paramsVERTCON},
|
||||
{EPSG_NAME_METHOD_VERTCON_OLDNAME, EPSG_CODE_METHOD_VERTCON, nullptr,
|
||||
nullptr, nullptr, paramsVERTCON},
|
||||
};
|
||||
|
||||
// end of anonymous namespace
|
||||
|
||||
@@ -840,9 +840,8 @@ static const ESRIMethodMapping esriMappings[] = {
|
||||
EPSG_NAME_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA,
|
||||
EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA,
|
||||
paramsESRI_Lambert_Azimuthal_Equal_Area},
|
||||
{"Cylindrical_Equal_Area",
|
||||
EPSG_NAME_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL,
|
||||
EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL,
|
||||
{"Cylindrical_Equal_Area", EPSG_NAME_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA,
|
||||
EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA,
|
||||
paramsESRI_Cylindrical_Equal_Area},
|
||||
{"Hotine_Oblique_Mercator_Two_Point_Center",
|
||||
PROJ_WKT2_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN, 0,
|
||||
|
||||
+3
-2
@@ -38,11 +38,12 @@
|
||||
|
||||
#include "proj.h"
|
||||
|
||||
#include "proj_json_streaming_writer.hpp"
|
||||
#include "util.hpp"
|
||||
|
||||
NS_PROJ_START
|
||||
|
||||
class CPLJSonStreamingWriter;
|
||||
|
||||
namespace common {
|
||||
class UnitOfMeasure;
|
||||
using UnitOfMeasurePtr = std::shared_ptr<UnitOfMeasure>;
|
||||
@@ -490,7 +491,7 @@ class PROJ_GCC_DLL JSONFormatter {
|
||||
PROJ_PRIVATE :
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
PROJ_INTERNAL CPLJSonStreamingWriter &
|
||||
PROJ_INTERNAL CPLJSonStreamingWriter *
|
||||
writer() const;
|
||||
|
||||
struct ObjectContext {
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "CCT" "1" "Dec 28, 2019" "6.3.0" "PROJ"
|
||||
.TH "CCT" "1" "Apr 27, 2020" "6.3.2" "PROJ"
|
||||
.SH NAME
|
||||
cct \- Coordinate Conversion and Transformation
|
||||
.
|
||||
@@ -263,6 +263,6 @@ where new bug reports can be submitted to.
|
||||
.SH AUTHOR
|
||||
Thomas Knudsen
|
||||
.SH COPYRIGHT
|
||||
1983-2019
|
||||
1983-2020
|
||||
.\" Generated by docutils manpage writer.
|
||||
.
|
||||
|
||||
+10
-6
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "CS2CS" "1" "Dec 28, 2019" "6.3.0" "PROJ"
|
||||
.TH "CS2CS" "1" "Apr 27, 2020" "6.3.2" "PROJ"
|
||||
.SH NAME
|
||||
cs2cs \- Cartographic coordinate system filter
|
||||
.
|
||||
@@ -136,14 +136,18 @@ List of datums that can be selected with the \fI+datum\fP parameter.
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
.B \-r
|
||||
This options reverses the order of the expected input from
|
||||
longitude\-latitude or x\-y to latitude\-longitude or y\-x.
|
||||
This options reverses the order of the first two expected
|
||||
inputs from that specified by the CRS to the opposite
|
||||
order. The third coordinate, typically height, remains
|
||||
third.
|
||||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
.B \-s
|
||||
This options reverses the order of the output from x\-y or longitude\-latitude
|
||||
to y\-x or latitude\-longitude.
|
||||
This options reverses the order of the first two expected
|
||||
outputs from that specified by the CRS to the opposite
|
||||
order. The third coordinate, typically height, remains
|
||||
third.
|
||||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
@@ -283,6 +287,6 @@ where new bug reports can be submitted to.
|
||||
.SH AUTHOR
|
||||
Frank Warmerdam
|
||||
.SH COPYRIGHT
|
||||
1983-2019
|
||||
1983-2020
|
||||
.\" Generated by docutils manpage writer.
|
||||
.
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "GEOD" "1" "Dec 28, 2019" "6.3.0" "PROJ"
|
||||
.TH "GEOD" "1" "Apr 27, 2020" "6.3.2" "PROJ"
|
||||
.SH NAME
|
||||
geod \- Geodesic computations
|
||||
.
|
||||
@@ -257,6 +257,6 @@ where new bug reports can be submitted to.
|
||||
.SH AUTHOR
|
||||
Charles Karney
|
||||
.SH COPYRIGHT
|
||||
1983-2019
|
||||
1983-2020
|
||||
.\" Generated by docutils manpage writer.
|
||||
.
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "GIE" "1" "Dec 28, 2019" "6.3.0" "PROJ"
|
||||
.TH "GIE" "1" "Apr 27, 2020" "6.3.2" "PROJ"
|
||||
.SH NAME
|
||||
gie \- The Geospatial Integrity Investigation Environment
|
||||
.
|
||||
@@ -485,6 +485,6 @@ where new bug reports can be submitted to.
|
||||
.SH AUTHOR
|
||||
Thomas Knudsen
|
||||
.SH COPYRIGHT
|
||||
1983-2019
|
||||
1983-2020
|
||||
.\" Generated by docutils manpage writer.
|
||||
.
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "PROJ" "1" "Dec 28, 2019" "6.3.0" "PROJ"
|
||||
.TH "PROJ" "1" "Apr 27, 2020" "6.3.2" "PROJ"
|
||||
.SH NAME
|
||||
proj \- Cartographic projection filter
|
||||
.
|
||||
@@ -271,6 +271,6 @@ where new bug reports can be submitted to.
|
||||
.SH AUTHOR
|
||||
Gerald I. Evenden
|
||||
.SH COPYRIGHT
|
||||
1983-2019
|
||||
1983-2020
|
||||
.\" Generated by docutils manpage writer.
|
||||
.
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "PROJINFO" "1" "Dec 28, 2019" "6.3.0" "PROJ"
|
||||
.TH "PROJINFO" "1" "Apr 27, 2020" "6.3.2" "PROJ"
|
||||
.SH NAME
|
||||
projinfo \- Geodetic object and coordinate operation queries
|
||||
.
|
||||
@@ -538,6 +538,6 @@ where new bug reports can be submitted to.
|
||||
.SH AUTHOR
|
||||
Even Rouault
|
||||
.SH COPYRIGHT
|
||||
1983-2019
|
||||
1983-2020
|
||||
.\" Generated by docutils manpage writer.
|
||||
.
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
.\" @(#)geodesic.3
|
||||
.\"
|
||||
.TH GEODESIC 3 "2020/01/01 Rel. 6.3.0"
|
||||
.TH GEODESIC 3 "2020/02/10 Rel. 6.3.1"
|
||||
.ad b
|
||||
.hy 1
|
||||
.SH NAME
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
.\" @(#)pj_init.3 - 6.3.0
|
||||
.\" @(#)pj_init.3 - 6.3.1
|
||||
.\"
|
||||
.TH PJ_INIT 3 "2020/01/1 Rel. 6.3.0"
|
||||
.TH PJ_INIT 3 "2020/02/10 Rel. 6.3.1"
|
||||
.ad b
|
||||
.hy 1
|
||||
.SH NAME
|
||||
|
||||
+6
-2
@@ -395,8 +395,12 @@ def fill_grid_transformation(proj_db_cursor):
|
||||
grid2_param_code = param_code[1]
|
||||
grid2_param_name = param_name[1]
|
||||
grid2_value = param_value[1]
|
||||
elif method_code == 1071: # Vertical Offset by Grid Interpolation (NZLVD)
|
||||
assert param_code[1] == 1048, param_code[1]
|
||||
# 1071: Vertical Offset by Grid Interpolation (NZLVD)
|
||||
# 1080: Vertical Offset by Grid Interpolation (BEV AT)
|
||||
# 1081: Geographic3D to GravityRelatedHeight (BEV AT)
|
||||
# 1084: Vertical Offset by Grid Interpolation (gtx)
|
||||
elif method_code in (1071, 1080, 1081, 1084) and n_params == 2:
|
||||
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:
|
||||
|
||||
@@ -1096,8 +1096,8 @@ for grid in setVerticalGrids:
|
||||
VALUES ('%s', -- as referenced by the IGNF registry
|
||||
'%s',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
1,
|
||||
'geoid_like',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);""" % (original_grid_name, proj_grid_name))
|
||||
|
||||
|
||||
@@ -330,7 +330,7 @@ config_str = """
|
||||
- Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN
|
||||
|
||||
- Cylindrical_Equal_Area:
|
||||
WKT2_name: EPSG_NAME_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL
|
||||
WKT2_name: EPSG_NAME_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA
|
||||
Params:
|
||||
- False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING
|
||||
- False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING
|
||||
|
||||
@@ -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/
|
||||
|
||||
+24
-5
@@ -1053,20 +1053,39 @@ static PJ* create_operation_to_geog_crs(PJ_CONTEXT* ctx, const PJ* crs) {
|
||||
ctx, operation_ctx, PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION);
|
||||
proj_operation_factory_context_set_grid_availability_use(
|
||||
ctx, operation_ctx, PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID);
|
||||
auto target_crs_2D = proj_crs_demote_to_2D(ctx, nullptr, crs);
|
||||
auto op_list_to_geodetic = proj_create_operations(
|
||||
ctx, geodetic_crs, crs, operation_ctx);
|
||||
ctx, geodetic_crs, target_crs_2D, operation_ctx);
|
||||
proj_destroy(target_crs_2D);
|
||||
proj_operation_factory_context_destroy(operation_ctx);
|
||||
proj_destroy(geodetic_crs);
|
||||
|
||||
if( op_list_to_geodetic == nullptr ||
|
||||
proj_list_get_count(op_list_to_geodetic) == 0 )
|
||||
const int nOpCount = op_list_to_geodetic == nullptr ? 0 :
|
||||
proj_list_get_count(op_list_to_geodetic);
|
||||
if( nOpCount == 0 )
|
||||
{
|
||||
proj_context_log_debug(ctx, "Cannot compute transformation from geographic CRS to CRS");
|
||||
proj_list_destroy(op_list_to_geodetic);
|
||||
return nullptr;
|
||||
}
|
||||
auto opGeogToCrs = proj_list_get(ctx, op_list_to_geodetic, 0);
|
||||
assert(opGeogToCrs);
|
||||
PJ* opGeogToCrs = nullptr;
|
||||
// Use in priority operations *without* grids
|
||||
for(int i = 0; i < nOpCount; i++ )
|
||||
{
|
||||
auto op = proj_list_get(ctx, op_list_to_geodetic, i);
|
||||
assert(op);
|
||||
if( proj_coordoperation_get_grid_used_count(ctx, op) == 0 )
|
||||
{
|
||||
opGeogToCrs = op;
|
||||
break;
|
||||
}
|
||||
proj_destroy(op);
|
||||
}
|
||||
if( opGeogToCrs == nullptr )
|
||||
{
|
||||
opGeogToCrs = proj_list_get(ctx, op_list_to_geodetic, 0);
|
||||
assert(opGeogToCrs);
|
||||
}
|
||||
proj_list_destroy(op_list_to_geodetic);
|
||||
return opGeogToCrs;
|
||||
}
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ geodtest_LDADD = libproj.la
|
||||
|
||||
lib_LTLIBRARIES = libproj.la
|
||||
|
||||
libproj_la_LDFLAGS = -no-undefined -version-info 18:0:3
|
||||
libproj_la_LDFLAGS = -no-undefined -version-info 18:2:3
|
||||
libproj_la_LIBADD = @SQLITE3_LIBS@
|
||||
|
||||
libproj_la_SOURCES = \
|
||||
|
||||
@@ -496,7 +496,8 @@ static void outputObject(
|
||||
}
|
||||
|
||||
auto op = dynamic_cast<CoordinateOperation *>(obj.get());
|
||||
if (op && dbContext && getenv("PROJINFO_NO_GRID_CHECK") == nullptr) {
|
||||
if (!outputOpt.quiet && op && dbContext &&
|
||||
getenv("PROJINFO_NO_GRID_CHECK") == nullptr) {
|
||||
try {
|
||||
auto setGrids = op->gridsNeeded(dbContext);
|
||||
bool firstWarning = true;
|
||||
@@ -686,9 +687,7 @@ static void outputOperations(
|
||||
}
|
||||
first = false;
|
||||
std::cout << "-------------------------------------" << std::endl;
|
||||
std::cout << "Operation n"
|
||||
"\xC2\xB0"
|
||||
<< (i + 1) << ":" << std::endl
|
||||
std::cout << "Operation No. " << (i + 1) << ":" << std::endl
|
||||
<< std::endl;
|
||||
outputOperationSummary(op, dbContext);
|
||||
std::cout << std::endl;
|
||||
|
||||
@@ -165,8 +165,9 @@ static PJ_LPZ geodetic (PJ_XYZ cart, PJ *P) {
|
||||
if( fabs(lpz.phi) > M_HALFPI ) {
|
||||
// this happen on non-sphere ellipsoid when x,y,z is very close to 0
|
||||
// there is no single solution to the cart->geodetic conversion in
|
||||
// that case, so arbitrarily pickup phi = 0.
|
||||
lpz.phi = 0;
|
||||
// that case, clamp to -90/90 deg and avoid a discontinuous boundary
|
||||
// near the poles
|
||||
lpz.phi = copysign(M_HALFPI, lpz.phi);
|
||||
}
|
||||
lpz.lam = atan2 (cart.y, cart.x);
|
||||
N = normal_radius_of_curvature (P->a, P->es, lpz.phi);
|
||||
|
||||
@@ -164,7 +164,8 @@ static double decimalyear_to_mjd(double decimalyear) {
|
||||
double fractional_year;
|
||||
double mjd;
|
||||
|
||||
if( decimalyear < -10000 || decimalyear > 10000 )
|
||||
// Written this way to deal with NaN input
|
||||
if( !(decimalyear >= -10000 && decimalyear <= 10000) )
|
||||
return 0;
|
||||
|
||||
year = lround(floor(decimalyear));
|
||||
|
||||
@@ -3563,7 +3563,7 @@ PJ *proj_crs_create_projected_3D_crs_from_2D(PJ_CONTEXT *ctx,
|
||||
crs_name ? crs_name
|
||||
: cpp_projected_2D_crs->nameStr().c_str()),
|
||||
NN_NO_CHECK(cpp_geog_3D_CRS),
|
||||
cpp_projected_2D_crs->derivingConversionRef(), newCS));
|
||||
cpp_projected_2D_crs->derivingConversion(), newCS));
|
||||
} catch (const std::exception &e) {
|
||||
proj_log_error(ctx, __FUNCTION__, e.what());
|
||||
if (ctx->cpp_context) {
|
||||
|
||||
+46
-44
@@ -40,6 +40,8 @@
|
||||
|
||||
#include "proj.h"
|
||||
|
||||
#include "proj_json_streaming_writer.hpp"
|
||||
|
||||
#include <cmath> // M_PI
|
||||
#include <cstdlib>
|
||||
#include <memory>
|
||||
@@ -242,45 +244,45 @@ void UnitOfMeasure::_exportToWKT(
|
||||
void UnitOfMeasure::_exportToJSON(
|
||||
JSONFormatter *formatter) const // throw(FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
const auto &l_codeSpace = codeSpace();
|
||||
auto objContext(
|
||||
formatter->MakeObjectContext(nullptr, !l_codeSpace.empty()));
|
||||
writer.AddObjKey("type");
|
||||
writer->AddObjKey("type");
|
||||
const auto l_type = type();
|
||||
if (l_type == Type::LINEAR) {
|
||||
writer.Add("LinearUnit");
|
||||
writer->Add("LinearUnit");
|
||||
} else if (l_type == Type::ANGULAR) {
|
||||
writer.Add("AngularUnit");
|
||||
writer->Add("AngularUnit");
|
||||
} else if (l_type == Type::SCALE) {
|
||||
writer.Add("ScaleUnit");
|
||||
writer->Add("ScaleUnit");
|
||||
} else if (l_type == Type::TIME) {
|
||||
writer.Add("TimeUnit");
|
||||
writer->Add("TimeUnit");
|
||||
} else if (l_type == Type::PARAMETRIC) {
|
||||
writer.Add("ParametricUnit");
|
||||
writer->Add("ParametricUnit");
|
||||
} else {
|
||||
writer.Add("Unit");
|
||||
writer->Add("Unit");
|
||||
}
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
const auto &l_name = name();
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
|
||||
const auto &factor = conversionToSI();
|
||||
writer.AddObjKey("conversion_factor");
|
||||
writer.Add(factor, 15);
|
||||
writer->AddObjKey("conversion_factor");
|
||||
writer->Add(factor, 15);
|
||||
|
||||
if (!l_codeSpace.empty() && formatter->outputId()) {
|
||||
writer.AddObjKey("id");
|
||||
writer->AddObjKey("id");
|
||||
auto idContext(formatter->MakeObjectContext(nullptr, false));
|
||||
writer.AddObjKey("authority");
|
||||
writer.Add(l_codeSpace);
|
||||
writer.AddObjKey("code");
|
||||
writer->AddObjKey("authority");
|
||||
writer->Add(l_codeSpace);
|
||||
writer->AddObjKey("code");
|
||||
const auto &l_code = code();
|
||||
try {
|
||||
writer.Add(std::stoi(l_code));
|
||||
writer->Add(std::stoi(l_code));
|
||||
} catch (const std::exception &) {
|
||||
writer.Add(l_code);
|
||||
writer->Add(l_code);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -875,13 +877,13 @@ void IdentifiedObject::formatRemarks(WKTFormatter *formatter) const {
|
||||
|
||||
void IdentifiedObject::formatID(JSONFormatter *formatter) const {
|
||||
const auto &ids(identifiers());
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
if (ids.size() == 1) {
|
||||
writer.AddObjKey("id");
|
||||
writer->AddObjKey("id");
|
||||
ids.front()->_exportToJSON(formatter);
|
||||
} else if (!ids.empty()) {
|
||||
writer.AddObjKey("ids");
|
||||
auto arrayContext(writer.MakeArrayContext());
|
||||
writer->AddObjKey("ids");
|
||||
auto arrayContext(writer->MakeArrayContext());
|
||||
for (const auto &id : ids) {
|
||||
id->_exportToJSON(formatter);
|
||||
}
|
||||
@@ -892,9 +894,9 @@ void IdentifiedObject::formatID(JSONFormatter *formatter) const {
|
||||
|
||||
void IdentifiedObject::formatRemarks(JSONFormatter *formatter) const {
|
||||
if (!remarks().empty()) {
|
||||
auto &writer = formatter->writer();
|
||||
writer.AddObjKey("remarks");
|
||||
writer.Add(remarks());
|
||||
auto writer = formatter->writer();
|
||||
writer->AddObjKey("remarks");
|
||||
writer->Add(remarks());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1059,30 +1061,30 @@ void ObjectDomain::_exportToWKT(WKTFormatter *formatter) const {
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
void ObjectDomain::_exportToJSON(JSONFormatter *formatter) const {
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
if (d->scope_.has_value()) {
|
||||
writer.AddObjKey("scope");
|
||||
writer.Add(*(d->scope_));
|
||||
writer->AddObjKey("scope");
|
||||
writer->Add(*(d->scope_));
|
||||
}
|
||||
if (d->domainOfValidity_) {
|
||||
if (d->domainOfValidity_->description().has_value()) {
|
||||
writer.AddObjKey("area");
|
||||
writer.Add(*(d->domainOfValidity_->description()));
|
||||
writer->AddObjKey("area");
|
||||
writer->Add(*(d->domainOfValidity_->description()));
|
||||
}
|
||||
if (d->domainOfValidity_->geographicElements().size() == 1) {
|
||||
const auto bbox = dynamic_cast<const GeographicBoundingBox *>(
|
||||
d->domainOfValidity_->geographicElements()[0].get());
|
||||
if (bbox) {
|
||||
writer.AddObjKey("bbox");
|
||||
auto bboxContext(writer.MakeObjectContext());
|
||||
writer.AddObjKey("south_latitude");
|
||||
writer.Add(bbox->southBoundLatitude(), 15);
|
||||
writer.AddObjKey("west_longitude");
|
||||
writer.Add(bbox->westBoundLongitude(), 15);
|
||||
writer.AddObjKey("north_latitude");
|
||||
writer.Add(bbox->northBoundLatitude(), 15);
|
||||
writer.AddObjKey("east_longitude");
|
||||
writer.Add(bbox->eastBoundLongitude(), 15);
|
||||
writer->AddObjKey("bbox");
|
||||
auto bboxContext(writer->MakeObjectContext());
|
||||
writer->AddObjKey("south_latitude");
|
||||
writer->Add(bbox->southBoundLatitude(), 15);
|
||||
writer->AddObjKey("west_longitude");
|
||||
writer->Add(bbox->westBoundLongitude(), 15);
|
||||
writer->AddObjKey("north_latitude");
|
||||
writer->Add(bbox->northBoundLatitude(), 15);
|
||||
writer->AddObjKey("east_longitude");
|
||||
writer->Add(bbox->eastBoundLongitude(), 15);
|
||||
}
|
||||
}
|
||||
if (d->domainOfValidity_->verticalElements().size() == 1) {
|
||||
@@ -1231,16 +1233,16 @@ void ObjectUsage::baseExportToWKT(WKTFormatter *formatter) const {
|
||||
|
||||
void ObjectUsage::baseExportToJSON(JSONFormatter *formatter) const {
|
||||
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
if (formatter->outputUsage()) {
|
||||
const auto &l_domains = domains();
|
||||
if (l_domains.size() == 1) {
|
||||
l_domains[0]->_exportToJSON(formatter);
|
||||
} else if (!l_domains.empty()) {
|
||||
writer.AddObjKey("usages");
|
||||
auto arrayContext(writer.MakeArrayContext(false));
|
||||
writer->AddObjKey("usages");
|
||||
auto arrayContext(writer->MakeArrayContext(false));
|
||||
for (const auto &domain : l_domains) {
|
||||
auto objContext(writer.MakeObjectContext());
|
||||
auto objContext(writer->MakeObjectContext());
|
||||
domain->_exportToJSON(formatter);
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -40,6 +40,8 @@
|
||||
#include "proj/internal/internal.hpp"
|
||||
#include "proj/internal/io_internal.hpp"
|
||||
|
||||
#include "proj_json_streaming_writer.hpp"
|
||||
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <set>
|
||||
@@ -396,26 +398,26 @@ void CoordinateSystemAxis::_exportToWKT(io::WKTFormatter *formatter, int order,
|
||||
void CoordinateSystemAxis::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("Axis", !identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer.Add(nameStr());
|
||||
writer->AddObjKey("name");
|
||||
writer->Add(nameStr());
|
||||
|
||||
writer.AddObjKey("abbreviation");
|
||||
writer.Add(abbreviation());
|
||||
writer->AddObjKey("abbreviation");
|
||||
writer->Add(abbreviation());
|
||||
|
||||
writer.AddObjKey("direction");
|
||||
writer.Add(direction().toString());
|
||||
writer->AddObjKey("direction");
|
||||
writer->Add(direction().toString());
|
||||
|
||||
const auto &l_unit(unit());
|
||||
if (l_unit == common::UnitOfMeasure::METRE ||
|
||||
l_unit == common::UnitOfMeasure::DEGREE) {
|
||||
writer.AddObjKey("unit");
|
||||
writer.Add(l_unit.name());
|
||||
writer->AddObjKey("unit");
|
||||
writer->Add(l_unit.name());
|
||||
} else if (l_unit.type() != common::UnitOfMeasure::Type::NONE) {
|
||||
writer.AddObjKey("unit");
|
||||
writer->AddObjKey("unit");
|
||||
l_unit._exportToJSON(formatter);
|
||||
}
|
||||
|
||||
@@ -573,19 +575,21 @@ void CoordinateSystem::_exportToWKT(
|
||||
void CoordinateSystem::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(formatter->MakeObjectContext("CoordinateSystem",
|
||||
!identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("subtype");
|
||||
writer.Add(getWKT2Type(true));
|
||||
writer->AddObjKey("subtype");
|
||||
writer->Add(getWKT2Type(true));
|
||||
|
||||
writer.AddObjKey("axis");
|
||||
auto axisContext(writer.MakeArrayContext(false));
|
||||
const auto &l_axisList = axisList();
|
||||
for (auto &axis : l_axisList) {
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
axis->_exportToJSON(formatter);
|
||||
writer->AddObjKey("axis");
|
||||
{
|
||||
auto axisContext(writer->MakeArrayContext(false));
|
||||
const auto &l_axisList = axisList();
|
||||
for (auto &axis : l_axisList) {
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
axis->_exportToJSON(formatter);
|
||||
}
|
||||
}
|
||||
|
||||
if (formatter->outputId()) {
|
||||
|
||||
+130
-102
@@ -46,6 +46,7 @@
|
||||
#include "proj/internal/io_internal.hpp"
|
||||
|
||||
#include "proj_constants.h"
|
||||
#include "proj_json_streaming_writer.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
@@ -310,17 +311,15 @@ CRSNNPtr CRS::alterCSLinearUnit(const common::UnitOfMeasure &unit) const {
|
||||
auto cartCS = util::nn_dynamic_pointer_cast<cs::CartesianCS>(
|
||||
engCRS->coordinateSystem());
|
||||
if (cartCS) {
|
||||
auto props = createPropertyMap(this);
|
||||
props.set("FORCE_OUTPUT_CS", true);
|
||||
return EngineeringCRS::create(props, engCRS->datum(),
|
||||
return EngineeringCRS::create(createPropertyMap(this),
|
||||
engCRS->datum(),
|
||||
cartCS->alterUnit(unit));
|
||||
} else {
|
||||
auto vertCS = util::nn_dynamic_pointer_cast<cs::VerticalCS>(
|
||||
engCRS->coordinateSystem());
|
||||
if (vertCS) {
|
||||
auto props = createPropertyMap(this);
|
||||
props.set("FORCE_OUTPUT_CS", true);
|
||||
return EngineeringCRS::create(props, engCRS->datum(),
|
||||
return EngineeringCRS::create(createPropertyMap(this),
|
||||
engCRS->datum(),
|
||||
vertCS->alterUnit(unit));
|
||||
}
|
||||
}
|
||||
@@ -1535,29 +1534,29 @@ void GeodeticCRS::addDatumInfoToPROJString(
|
||||
void GeodeticCRS::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(io::FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("GeodeticCRS", !identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
} else {
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
}
|
||||
|
||||
const auto &l_datum(datum());
|
||||
if (l_datum) {
|
||||
writer.AddObjKey("datum");
|
||||
writer->AddObjKey("datum");
|
||||
l_datum->_exportToJSON(formatter);
|
||||
} else {
|
||||
writer.AddObjKey("datum_ensemble");
|
||||
writer->AddObjKey("datum_ensemble");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
datumEnsemble()->_exportToJSON(formatter);
|
||||
}
|
||||
|
||||
writer.AddObjKey("coordinate_system");
|
||||
writer->AddObjKey("coordinate_system");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
coordinateSystem()->_exportToJSON(formatter);
|
||||
|
||||
@@ -2394,29 +2393,29 @@ void GeographicCRS::_exportToPROJString(
|
||||
void GeographicCRS::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(io::FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("GeographicCRS", !identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
} else {
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
}
|
||||
|
||||
const auto &l_datum(datum());
|
||||
if (l_datum) {
|
||||
writer.AddObjKey("datum");
|
||||
writer->AddObjKey("datum");
|
||||
l_datum->_exportToJSON(formatter);
|
||||
} else {
|
||||
writer.AddObjKey("datum_ensemble");
|
||||
writer->AddObjKey("datum_ensemble");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
datumEnsemble()->_exportToJSON(formatter);
|
||||
}
|
||||
|
||||
writer.AddObjKey("coordinate_system");
|
||||
writer->AddObjKey("coordinate_system");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
coordinateSystem()->_exportToJSON(formatter);
|
||||
|
||||
@@ -2601,43 +2600,43 @@ void VerticalCRS::_exportToPROJString(
|
||||
void VerticalCRS::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(io::FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("VerticalCRS", !identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
} else {
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
}
|
||||
|
||||
const auto &l_datum(datum());
|
||||
if (l_datum) {
|
||||
writer.AddObjKey("datum");
|
||||
writer->AddObjKey("datum");
|
||||
l_datum->_exportToJSON(formatter);
|
||||
} else {
|
||||
writer.AddObjKey("datum_ensemble");
|
||||
writer->AddObjKey("datum_ensemble");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
datumEnsemble()->_exportToJSON(formatter);
|
||||
}
|
||||
|
||||
writer.AddObjKey("coordinate_system");
|
||||
writer->AddObjKey("coordinate_system");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
coordinateSystem()->_exportToJSON(formatter);
|
||||
|
||||
if (!d->geoidModel.empty()) {
|
||||
const auto &model = d->geoidModel[0];
|
||||
writer.AddObjKey("geoid_model");
|
||||
writer->AddObjKey("geoid_model");
|
||||
auto objectContext2(formatter->MakeObjectContext(nullptr, false));
|
||||
writer.AddObjKey("name");
|
||||
writer.Add(model->nameStr());
|
||||
writer->AddObjKey("name");
|
||||
writer->Add(model->nameStr());
|
||||
|
||||
if (model->identifiers().empty()) {
|
||||
const auto &interpCRS = model->interpolationCRS();
|
||||
if (interpCRS) {
|
||||
writer.AddObjKey("interpolation_crs");
|
||||
writer->AddObjKey("interpolation_crs");
|
||||
interpCRS->_exportToJSON(formatter);
|
||||
}
|
||||
}
|
||||
@@ -3029,26 +3028,26 @@ void DerivedCRS::baseExportToWKT(io::WKTFormatter *formatter,
|
||||
void DerivedCRS::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(io::FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext(className(), !identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
} else {
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
}
|
||||
|
||||
writer.AddObjKey("base_crs");
|
||||
writer->AddObjKey("base_crs");
|
||||
baseCRS()->_exportToJSON(formatter);
|
||||
|
||||
writer.AddObjKey("conversion");
|
||||
writer->AddObjKey("conversion");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
derivingConversionRef()->_exportToJSON(formatter);
|
||||
|
||||
writer.AddObjKey("coordinate_system");
|
||||
writer->AddObjKey("coordinate_system");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
coordinateSystem()->_exportToJSON(formatter);
|
||||
|
||||
@@ -3337,28 +3336,28 @@ void ProjectedCRS::_exportToWKT(io::WKTFormatter *formatter) const {
|
||||
void ProjectedCRS::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(io::FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("ProjectedCRS", !identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
} else {
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
}
|
||||
|
||||
writer.AddObjKey("base_crs");
|
||||
writer->AddObjKey("base_crs");
|
||||
formatter->setAllowIDInImmediateChild();
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
baseCRS()->_exportToJSON(formatter);
|
||||
|
||||
writer.AddObjKey("conversion");
|
||||
writer->AddObjKey("conversion");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
derivingConversionRef()->_exportToJSON(formatter);
|
||||
|
||||
writer.AddObjKey("coordinate_system");
|
||||
writer->AddObjKey("coordinate_system");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
coordinateSystem()->_exportToJSON(formatter);
|
||||
|
||||
@@ -3444,23 +3443,33 @@ void ProjectedCRS::addUnitConvertAndAxisSwap(io::PROJStringFormatter *formatter,
|
||||
bool axisSpecFound) const {
|
||||
const auto &axisList = d->coordinateSystem()->axisList();
|
||||
const auto &unit = axisList[0]->unit();
|
||||
const auto *zUnit = axisList.size() == 3 ? &(axisList[2]->unit()) : nullptr;
|
||||
if (!unit._isEquivalentTo(common::UnitOfMeasure::METRE,
|
||||
util::IComparable::Criterion::EQUIVALENT)) {
|
||||
util::IComparable::Criterion::EQUIVALENT) ||
|
||||
(zUnit &&
|
||||
!zUnit->_isEquivalentTo(common::UnitOfMeasure::METRE,
|
||||
util::IComparable::Criterion::EQUIVALENT))) {
|
||||
auto projUnit = unit.exportToPROJString();
|
||||
const double toSI = unit.conversionToSI();
|
||||
if (!formatter->getCRSExport()) {
|
||||
formatter->addStep("unitconvert");
|
||||
formatter->addParam("xy_in", "m");
|
||||
if (!formatter->omitZUnitConversion())
|
||||
if (zUnit)
|
||||
formatter->addParam("z_in", "m");
|
||||
|
||||
if (projUnit.empty()) {
|
||||
formatter->addParam("xy_out", toSI);
|
||||
if (!formatter->omitZUnitConversion())
|
||||
formatter->addParam("z_out", toSI);
|
||||
} else {
|
||||
formatter->addParam("xy_out", projUnit);
|
||||
if (!formatter->omitZUnitConversion())
|
||||
formatter->addParam("z_out", projUnit);
|
||||
}
|
||||
if (zUnit) {
|
||||
auto projZUnit = zUnit->exportToPROJString();
|
||||
const double zToSI = zUnit->conversionToSI();
|
||||
if (projZUnit.empty()) {
|
||||
formatter->addParam("z_out", zToSI);
|
||||
} else {
|
||||
formatter->addParam("z_out", projZUnit);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (projUnit.empty()) {
|
||||
@@ -3700,8 +3709,16 @@ ProjectedCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const {
|
||||
return res;
|
||||
}
|
||||
res.emplace_back(crsNN, eqName ? 90 : 70);
|
||||
} else if (crs->nameStr() == thisName &&
|
||||
CRS::getPrivate()->implicitCS_ &&
|
||||
} else if (eqName && CRS::getPrivate()->implicitCS_ &&
|
||||
coordinateSystem()
|
||||
->axisList()[0]
|
||||
->unit()
|
||||
._isEquivalentTo(
|
||||
crs->coordinateSystem()
|
||||
->axisList()[0]
|
||||
->unit(),
|
||||
util::IComparable::Criterion::
|
||||
EQUIVALENT) &&
|
||||
l_baseCRS->_isEquivalentTo(
|
||||
crs->baseCRS().get(),
|
||||
util::IComparable::Criterion::
|
||||
@@ -3713,7 +3730,8 @@ ProjectedCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const {
|
||||
dbContext) &&
|
||||
objects.size() == 1) {
|
||||
res.clear();
|
||||
res.emplace_back(crsNN, 100);
|
||||
res.emplace_back(crsNN,
|
||||
crs->nameStr() == thisName ? 100 : 90);
|
||||
return res;
|
||||
} else {
|
||||
res.emplace_back(crsNN, 25);
|
||||
@@ -3980,21 +3998,21 @@ void CompoundCRS::_exportToWKT(io::WKTFormatter *formatter) const {
|
||||
void CompoundCRS::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(io::FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("CompoundCRS", !identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
} else {
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
}
|
||||
|
||||
writer.AddObjKey("components");
|
||||
writer->AddObjKey("components");
|
||||
{
|
||||
auto componentsContext(writer.MakeArrayContext(false));
|
||||
auto componentsContext(writer->MakeArrayContext(false));
|
||||
for (const auto &crs : componentReferenceSystems()) {
|
||||
crs->_exportToJSON(formatter);
|
||||
}
|
||||
@@ -4406,9 +4424,27 @@ BoundCRS::createFromTOWGS84(const CRSNNPtr &baseCRSIn,
|
||||
*/
|
||||
BoundCRSNNPtr BoundCRS::createFromNadgrids(const CRSNNPtr &baseCRSIn,
|
||||
const std::string &filename) {
|
||||
const CRSPtr sourceGeographicCRS = baseCRSIn->extractGeographicCRS();
|
||||
const auto sourceGeographicCRS = baseCRSIn->extractGeographicCRS();
|
||||
auto transformationSourceCRS =
|
||||
sourceGeographicCRS ? sourceGeographicCRS : baseCRSIn.as_nullable();
|
||||
sourceGeographicCRS
|
||||
? NN_NO_CHECK(std::static_pointer_cast<CRS>(sourceGeographicCRS))
|
||||
: baseCRSIn;
|
||||
if (sourceGeographicCRS != nullptr &&
|
||||
sourceGeographicCRS->datum() != nullptr &&
|
||||
sourceGeographicCRS->primeMeridian()->longitude().getSIValue() != 0.0) {
|
||||
transformationSourceCRS = GeographicCRS::create(
|
||||
util::PropertyMap().set(common::IdentifiedObject::NAME_KEY,
|
||||
sourceGeographicCRS->nameStr() +
|
||||
" (with Greenwich prime meridian)"),
|
||||
datum::GeodeticReferenceFrame::create(
|
||||
util::PropertyMap().set(
|
||||
common::IdentifiedObject::NAME_KEY,
|
||||
sourceGeographicCRS->datum()->nameStr() +
|
||||
" (with Greenwich prime meridian)"),
|
||||
sourceGeographicCRS->datum()->ellipsoid(),
|
||||
util::optional<std::string>(), datum::PrimeMeridian::GREENWICH),
|
||||
sourceGeographicCRS->coordinateSystem());
|
||||
}
|
||||
std::string transformationName = transformationSourceCRS->nameStr();
|
||||
transformationName += " to WGS84";
|
||||
|
||||
@@ -4417,8 +4453,8 @@ BoundCRSNNPtr BoundCRS::createFromNadgrids(const CRSNNPtr &baseCRSIn,
|
||||
operation::Transformation::createNTv2(
|
||||
util::PropertyMap().set(common::IdentifiedObject::NAME_KEY,
|
||||
transformationName),
|
||||
NN_NO_CHECK(transformationSourceCRS), GeographicCRS::EPSG_4326,
|
||||
filename, std::vector<metadata::PositionalAccuracyNNPtr>()));
|
||||
transformationSourceCRS, GeographicCRS::EPSG_4326, filename,
|
||||
std::vector<metadata::PositionalAccuracyNNPtr>()));
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -4502,17 +4538,17 @@ void BoundCRS::_exportToWKT(io::WKTFormatter *formatter) const {
|
||||
void BoundCRS::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(io::FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("BoundCRS", !identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("source_crs");
|
||||
writer->AddObjKey("source_crs");
|
||||
d->baseCRS()->_exportToJSON(formatter);
|
||||
|
||||
writer.AddObjKey("target_crs");
|
||||
writer->AddObjKey("target_crs");
|
||||
d->hubCRS()->_exportToJSON(formatter);
|
||||
|
||||
writer.AddObjKey("transformation");
|
||||
writer->AddObjKey("transformation");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
formatter->setAbridgedTransformation(true);
|
||||
d->transformation()->_exportToJSON(formatter);
|
||||
@@ -5242,23 +5278,23 @@ void TemporalCRS::_exportToWKT(io::WKTFormatter *formatter) const {
|
||||
void TemporalCRS::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(io::FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("TemporalCRS", !identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
} else {
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
}
|
||||
|
||||
writer.AddObjKey("datum");
|
||||
writer->AddObjKey("datum");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
datum()->_exportToJSON(formatter);
|
||||
|
||||
writer.AddObjKey("coordinate_system");
|
||||
writer->AddObjKey("coordinate_system");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
coordinateSystem()->_exportToJSON(formatter);
|
||||
|
||||
@@ -5279,9 +5315,7 @@ bool TemporalCRS::_isEquivalentTo(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
struct EngineeringCRS::Private {
|
||||
bool forceOutputCS_ = false;
|
||||
};
|
||||
struct EngineeringCRS::Private {};
|
||||
//! @endcond
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -5339,17 +5373,6 @@ EngineeringCRS::create(const util::PropertyMap &properties,
|
||||
crs->assignSelf(crs);
|
||||
crs->setProperties(properties);
|
||||
|
||||
const auto pVal = properties.get("FORCE_OUTPUT_CS");
|
||||
if (pVal) {
|
||||
if (const auto genVal =
|
||||
dynamic_cast<const util::BoxedValue *>(pVal->get())) {
|
||||
if (genVal->type() == util::BoxedValue::Type::BOOLEAN &&
|
||||
genVal->booleanValue()) {
|
||||
crs->d->forceOutputCS_ = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return crs;
|
||||
}
|
||||
|
||||
@@ -5364,11 +5387,16 @@ void EngineeringCRS::_exportToWKT(io::WKTFormatter *formatter) const {
|
||||
formatter->addQuotedString(nameStr());
|
||||
if (isWKT2 || !datum()->nameStr().empty()) {
|
||||
datum()->_exportToWKT(formatter);
|
||||
coordinateSystem()->_exportToWKT(formatter);
|
||||
}
|
||||
if (!isWKT2 && d->forceOutputCS_) {
|
||||
if (!isWKT2) {
|
||||
coordinateSystem()->axisList()[0]->unit()._exportToWKT(formatter);
|
||||
}
|
||||
|
||||
const auto oldAxisOutputRule = formatter->outputAxis();
|
||||
formatter->setOutputAxis(io::WKTFormatter::OutputAxisRule::YES);
|
||||
coordinateSystem()->_exportToWKT(formatter);
|
||||
formatter->setOutputAxis(oldAxisOutputRule);
|
||||
|
||||
ObjectUsage::baseExportToWKT(formatter);
|
||||
formatter->endNode();
|
||||
}
|
||||
@@ -5380,23 +5408,23 @@ void EngineeringCRS::_exportToWKT(io::WKTFormatter *formatter) const {
|
||||
void EngineeringCRS::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(io::FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("EngineeringCRS", !identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
} else {
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
}
|
||||
|
||||
writer.AddObjKey("datum");
|
||||
writer->AddObjKey("datum");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
datum()->_exportToJSON(formatter);
|
||||
|
||||
writer.AddObjKey("coordinate_system");
|
||||
writer->AddObjKey("coordinate_system");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
coordinateSystem()->_exportToJSON(formatter);
|
||||
|
||||
@@ -5512,23 +5540,23 @@ void ParametricCRS::_exportToWKT(io::WKTFormatter *formatter) const {
|
||||
void ParametricCRS::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(io::FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("ParametricCRS", !identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
} else {
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
}
|
||||
|
||||
writer.AddObjKey("datum");
|
||||
writer->AddObjKey("datum");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
datum()->_exportToJSON(formatter);
|
||||
|
||||
writer.AddObjKey("coordinate_system");
|
||||
writer->AddObjKey("coordinate_system");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
coordinateSystem()->_exportToJSON(formatter);
|
||||
|
||||
|
||||
+104
-76
@@ -46,6 +46,8 @@
|
||||
#include "proj_api.h"
|
||||
// clang-format on
|
||||
|
||||
#include "proj_json_streaming_writer.hpp"
|
||||
|
||||
#include <cmath>
|
||||
#include <cstdlib>
|
||||
#include <memory>
|
||||
@@ -113,9 +115,9 @@ void Datum::Private::exportAnchorDefinition(io::WKTFormatter *formatter) const {
|
||||
void Datum::Private::exportAnchorDefinition(
|
||||
io::JSONFormatter *formatter) const {
|
||||
if (anchorDefinition) {
|
||||
auto &writer = formatter->writer();
|
||||
writer.AddObjKey("anchor");
|
||||
writer.Add(*anchorDefinition);
|
||||
auto writer = formatter->writer();
|
||||
writer->AddObjKey("anchor");
|
||||
writer->Add(*anchorDefinition);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -381,25 +383,25 @@ void PrimeMeridian::_exportToWKT(
|
||||
void PrimeMeridian::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("PrimeMeridian", !identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
std::string l_name =
|
||||
name()->description().has_value() ? nameStr() : "Greenwich";
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
|
||||
const auto &l_long = longitude();
|
||||
writer.AddObjKey("longitude");
|
||||
writer->AddObjKey("longitude");
|
||||
const auto &unit = l_long.unit();
|
||||
if (unit == common::UnitOfMeasure::DEGREE) {
|
||||
writer.Add(l_long.value(), 15);
|
||||
writer->Add(l_long.value(), 15);
|
||||
} else {
|
||||
auto longitudeContext(formatter->MakeObjectContext(nullptr, false));
|
||||
writer.AddObjKey("value");
|
||||
writer.Add(l_long.value(), 15);
|
||||
writer.AddObjKey("unit");
|
||||
writer->AddObjKey("value");
|
||||
writer->Add(l_long.value(), 15);
|
||||
writer->AddObjKey("unit");
|
||||
unit._exportToJSON(formatter);
|
||||
}
|
||||
|
||||
@@ -836,49 +838,49 @@ void Ellipsoid::_exportToWKT(
|
||||
void Ellipsoid::_exportToJSON(
|
||||
io::JSONFormatter *formatter) const // throw(FormattingException)
|
||||
{
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("Ellipsoid", !identifiers().empty()));
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
} else {
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
}
|
||||
|
||||
const auto &semiMajor = semiMajorAxis();
|
||||
const auto &semiMajorUnit = semiMajor.unit();
|
||||
writer.AddObjKey(isSphere() ? "radius" : "semi_major_axis");
|
||||
writer->AddObjKey(isSphere() ? "radius" : "semi_major_axis");
|
||||
if (semiMajorUnit == common::UnitOfMeasure::METRE) {
|
||||
writer.Add(semiMajor.value(), 15);
|
||||
writer->Add(semiMajor.value(), 15);
|
||||
} else {
|
||||
auto objContext(formatter->MakeObjectContext(nullptr, false));
|
||||
writer.AddObjKey("value");
|
||||
writer.Add(semiMajor.value(), 15);
|
||||
writer->AddObjKey("value");
|
||||
writer->Add(semiMajor.value(), 15);
|
||||
|
||||
writer.AddObjKey("unit");
|
||||
writer->AddObjKey("unit");
|
||||
semiMajorUnit._exportToJSON(formatter);
|
||||
}
|
||||
|
||||
if (!isSphere()) {
|
||||
const auto &l_inverseFlattening = inverseFlattening();
|
||||
if (l_inverseFlattening.has_value()) {
|
||||
writer.AddObjKey("inverse_flattening");
|
||||
writer.Add(l_inverseFlattening->getSIValue(), 15);
|
||||
writer->AddObjKey("inverse_flattening");
|
||||
writer->Add(l_inverseFlattening->getSIValue(), 15);
|
||||
} else {
|
||||
writer.AddObjKey("semi_minor_axis");
|
||||
writer->AddObjKey("semi_minor_axis");
|
||||
const auto &l_semiMinorAxis(semiMinorAxis());
|
||||
const auto &semiMinorAxisUnit(l_semiMinorAxis->unit());
|
||||
if (semiMinorAxisUnit == common::UnitOfMeasure::METRE) {
|
||||
writer.Add(l_semiMinorAxis->value(), 15);
|
||||
writer->Add(l_semiMinorAxis->value(), 15);
|
||||
} else {
|
||||
auto objContext(formatter->MakeObjectContext(nullptr, false));
|
||||
writer.AddObjKey("value");
|
||||
writer.Add(l_semiMinorAxis->value(), 15);
|
||||
writer->AddObjKey("value");
|
||||
writer->Add(l_semiMinorAxis->value(), 15);
|
||||
|
||||
writer.AddObjKey("unit");
|
||||
writer->AddObjKey("unit");
|
||||
semiMinorAxisUnit._exportToJSON(formatter);
|
||||
}
|
||||
}
|
||||
@@ -1201,7 +1203,8 @@ void GeodeticReferenceFrame::_exportToWKT(
|
||||
io::WKTFormatter *formatter) const // throw(FormattingException)
|
||||
{
|
||||
const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2;
|
||||
formatter->startNode(io::WKTConstants::DATUM, !identifiers().empty());
|
||||
const auto &ids = identifiers();
|
||||
formatter->startNode(io::WKTConstants::DATUM, !ids.empty());
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
l_name = "unnamed";
|
||||
@@ -1236,10 +1239,35 @@ void GeodeticReferenceFrame::_exportToWKT(
|
||||
}
|
||||
}
|
||||
}
|
||||
// Replace spaces by underscore, except if it is a special MapInfo
|
||||
// datum name
|
||||
} else if (!starts_with(l_name, "MIF ")) {
|
||||
l_name = io::WKTFormatter::morphNameToESRI(l_name);
|
||||
} else {
|
||||
// Replace spaces by underscore for datum names coming from EPSG
|
||||
// so as to emulate GDAL < 3 importFromEPSG()
|
||||
if (ids.size() == 1 && *(ids.front()->codeSpace()) == "EPSG") {
|
||||
l_name = io::WKTFormatter::morphNameToESRI(l_name);
|
||||
} else if (ids.empty()) {
|
||||
const auto &dbContext = formatter->databaseContext();
|
||||
if (dbContext) {
|
||||
auto factory = io::AuthorityFactory::create(
|
||||
NN_NO_CHECK(dbContext), std::string());
|
||||
// We use anonymous autority and approximate matching, so
|
||||
// as to trigger the caching done in createObjectsFromName()
|
||||
// in that case.
|
||||
auto matches = factory->createObjectsFromName(
|
||||
l_name, {io::AuthorityFactory::ObjectType::
|
||||
GEODETIC_REFERENCE_FRAME},
|
||||
true, 2);
|
||||
if (matches.size() == 1) {
|
||||
const auto &match = matches.front();
|
||||
const auto &matchId = match->identifiers();
|
||||
if (matchId.size() == 1 &&
|
||||
*(matchId.front()->codeSpace()) == "EPSG" &&
|
||||
metadata::Identifier::isEquivalentName(
|
||||
l_name.c_str(), match->nameStr().c_str())) {
|
||||
l_name = io::WKTFormatter::morphNameToESRI(l_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (l_name == "World_Geodetic_System_1984") {
|
||||
l_name = "WGS_1984";
|
||||
}
|
||||
@@ -1286,36 +1314,36 @@ void GeodeticReferenceFrame::_exportToJSON(
|
||||
auto objectContext(formatter->MakeObjectContext(
|
||||
dynamicGRF ? "DynamicGeodeticReferenceFrame" : "GeodeticReferenceFrame",
|
||||
!identifiers().empty()));
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
} else {
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
}
|
||||
|
||||
Datum::getPrivate()->exportAnchorDefinition(formatter);
|
||||
|
||||
if (dynamicGRF) {
|
||||
writer.AddObjKey("frame_reference_epoch");
|
||||
writer.Add(dynamicGRF->frameReferenceEpoch().value());
|
||||
writer->AddObjKey("frame_reference_epoch");
|
||||
writer->Add(dynamicGRF->frameReferenceEpoch().value());
|
||||
|
||||
const auto &deformationModel = dynamicGRF->deformationModelName();
|
||||
if (deformationModel.has_value()) {
|
||||
writer.AddObjKey("deformation_model");
|
||||
writer.Add(*deformationModel);
|
||||
writer->AddObjKey("deformation_model");
|
||||
writer->Add(*deformationModel);
|
||||
}
|
||||
}
|
||||
|
||||
writer.AddObjKey("ellipsoid");
|
||||
writer->AddObjKey("ellipsoid");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
ellipsoid()->_exportToJSON(formatter);
|
||||
|
||||
const auto &l_primeMeridian(primeMeridian());
|
||||
if (l_primeMeridian->nameStr() != "Greenwich") {
|
||||
writer.AddObjKey("prime_meridian");
|
||||
writer->AddObjKey("prime_meridian");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
primeMeridian()->_exportToJSON(formatter);
|
||||
}
|
||||
@@ -1642,28 +1670,28 @@ void DatumEnsemble::_exportToJSON(
|
||||
{
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("DatumEnsemble", !identifiers().empty()));
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
} else {
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
}
|
||||
|
||||
auto l_datums = datums();
|
||||
writer.AddObjKey("members");
|
||||
writer->AddObjKey("members");
|
||||
{
|
||||
auto membersContext(writer.MakeArrayContext(false));
|
||||
auto membersContext(writer->MakeArrayContext(false));
|
||||
for (const auto &datum : l_datums) {
|
||||
auto memberContext(writer.MakeObjectContext());
|
||||
writer.AddObjKey("name");
|
||||
auto memberContext(writer->MakeObjectContext());
|
||||
writer->AddObjKey("name");
|
||||
const auto &l_datum_name = datum->nameStr();
|
||||
if (!l_datum_name.empty()) {
|
||||
writer.Add(l_datum_name);
|
||||
writer->Add(l_datum_name);
|
||||
} else {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
}
|
||||
datum->formatID(formatter);
|
||||
}
|
||||
@@ -1672,13 +1700,13 @@ void DatumEnsemble::_exportToJSON(
|
||||
auto grfFirst = std::dynamic_pointer_cast<GeodeticReferenceFrame>(
|
||||
l_datums[0].as_nullable());
|
||||
if (grfFirst) {
|
||||
writer.AddObjKey("ellipsoid");
|
||||
writer->AddObjKey("ellipsoid");
|
||||
formatter->setOmitTypeInImmediateChild();
|
||||
grfFirst->ellipsoid()->_exportToJSON(formatter);
|
||||
}
|
||||
|
||||
writer.AddObjKey("accuracy");
|
||||
writer.Add(positionalAccuracy()->value());
|
||||
writer->AddObjKey("accuracy");
|
||||
writer->Add(positionalAccuracy()->value());
|
||||
|
||||
formatID(formatter);
|
||||
}
|
||||
@@ -1858,26 +1886,26 @@ void VerticalReferenceFrame::_exportToJSON(
|
||||
auto objectContext(formatter->MakeObjectContext(
|
||||
dynamicGRF ? "DynamicVerticalReferenceFrame" : "VerticalReferenceFrame",
|
||||
!identifiers().empty()));
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer->AddObjKey("name");
|
||||
auto l_name = nameStr();
|
||||
if (l_name.empty()) {
|
||||
writer.Add("unnamed");
|
||||
writer->Add("unnamed");
|
||||
} else {
|
||||
writer.Add(l_name);
|
||||
writer->Add(l_name);
|
||||
}
|
||||
|
||||
Datum::getPrivate()->exportAnchorDefinition(formatter);
|
||||
|
||||
if (dynamicGRF) {
|
||||
writer.AddObjKey("frame_reference_epoch");
|
||||
writer.Add(dynamicGRF->frameReferenceEpoch().value());
|
||||
writer->AddObjKey("frame_reference_epoch");
|
||||
writer->Add(dynamicGRF->frameReferenceEpoch().value());
|
||||
|
||||
const auto &deformationModel = dynamicGRF->deformationModelName();
|
||||
if (deformationModel.has_value()) {
|
||||
writer.AddObjKey("deformation_model");
|
||||
writer.Add(*deformationModel);
|
||||
writer->AddObjKey("deformation_model");
|
||||
writer->Add(*deformationModel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2157,18 +2185,18 @@ void TemporalDatum::_exportToJSON(
|
||||
{
|
||||
auto objectContext(
|
||||
formatter->MakeObjectContext("TemporalDatum", !identifiers().empty()));
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer.Add(nameStr());
|
||||
writer->AddObjKey("name");
|
||||
writer->Add(nameStr());
|
||||
|
||||
writer.AddObjKey("calendar");
|
||||
writer.Add(calendar());
|
||||
writer->AddObjKey("calendar");
|
||||
writer->Add(calendar());
|
||||
|
||||
const auto &timeOriginStr = temporalOrigin().toString();
|
||||
if (!timeOriginStr.empty()) {
|
||||
writer.AddObjKey("time_origin");
|
||||
writer.Add(timeOriginStr);
|
||||
writer->AddObjKey("time_origin");
|
||||
writer->Add(timeOriginStr);
|
||||
}
|
||||
|
||||
ObjectUsage::baseExportToJSON(formatter);
|
||||
@@ -2257,10 +2285,10 @@ void EngineeringDatum::_exportToJSON(
|
||||
{
|
||||
auto objectContext(formatter->MakeObjectContext("EngineeringDatum",
|
||||
!identifiers().empty()));
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer.Add(nameStr());
|
||||
writer->AddObjKey("name");
|
||||
writer->Add(nameStr());
|
||||
|
||||
Datum::getPrivate()->exportAnchorDefinition(formatter);
|
||||
|
||||
@@ -2343,10 +2371,10 @@ void ParametricDatum::_exportToJSON(
|
||||
{
|
||||
auto objectContext(formatter->MakeObjectContext("ParametricDatum",
|
||||
!identifiers().empty()));
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
|
||||
writer.AddObjKey("name");
|
||||
writer.Add(nameStr());
|
||||
writer->AddObjKey("name");
|
||||
writer->Add(nameStr());
|
||||
|
||||
Datum::getPrivate()->exportAnchorDefinition(formatter);
|
||||
|
||||
|
||||
+272
-129
@@ -50,6 +50,7 @@
|
||||
#include <cstring>
|
||||
#include <iomanip>
|
||||
#include <limits>
|
||||
#include <locale>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <sstream> // std::ostringstream
|
||||
@@ -136,7 +137,8 @@ struct DatabaseContext::Private {
|
||||
void setPjCtxt(PJ_CONTEXT *ctxt) { pjCtxt_ = ctxt; }
|
||||
|
||||
SQLResultSet run(const std::string &sql,
|
||||
const ListOfParams ¶meters = ListOfParams());
|
||||
const ListOfParams ¶meters = ListOfParams(),
|
||||
bool useMaxFloatPrecision = false);
|
||||
|
||||
std::vector<std::string> getDatabaseStructure();
|
||||
|
||||
@@ -827,7 +829,8 @@ void DatabaseContext::Private::registerFunctions() {
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
SQLResultSet DatabaseContext::Private::run(const std::string &sql,
|
||||
const ListOfParams ¶meters) {
|
||||
const ListOfParams ¶meters,
|
||||
bool useMaxFloatPrecision) {
|
||||
|
||||
sqlite3_stmt *stmt = nullptr;
|
||||
auto iter = mapSqlToStatement_.find(sql);
|
||||
@@ -885,10 +888,20 @@ SQLResultSet DatabaseContext::Private::run(const std::string &sql,
|
||||
if (ret == SQLITE_ROW) {
|
||||
SQLRow row(column_count);
|
||||
for (int i = 0; i < column_count; i++) {
|
||||
const char *txt = reinterpret_cast<const char *>(
|
||||
sqlite3_column_text(stmt, i));
|
||||
if (txt) {
|
||||
row[i] = txt;
|
||||
if (useMaxFloatPrecision &&
|
||||
sqlite3_column_type(stmt, i) == SQLITE_FLOAT) {
|
||||
// sqlite3_column_text() does not use maximum precision
|
||||
std::ostringstream buffer;
|
||||
buffer.imbue(std::locale::classic());
|
||||
buffer << std::setprecision(18);
|
||||
buffer << sqlite3_column_double(stmt, i);
|
||||
row[i] = buffer.str();
|
||||
} else {
|
||||
const char *txt = reinterpret_cast<const char *>(
|
||||
sqlite3_column_text(stmt, i));
|
||||
if (txt) {
|
||||
row[i] = txt;
|
||||
}
|
||||
}
|
||||
}
|
||||
result.emplace_back(std::move(row));
|
||||
@@ -1705,10 +1718,10 @@ AuthorityFactory::createUnitOfMeasure(const std::string &code) const {
|
||||
return NN_NO_CHECK(uom);
|
||||
}
|
||||
}
|
||||
auto res = d->runWithCodeParam(
|
||||
auto res = d->context()->d->run(
|
||||
"SELECT name, conv_factor, type, deprecated FROM unit_of_measure WHERE "
|
||||
"auth_name = ? AND code = ?",
|
||||
code);
|
||||
{d->authority(), code}, true);
|
||||
if (res.empty()) {
|
||||
throw NoSuchAuthorityCodeException("unit of measure not found",
|
||||
d->authority(), code);
|
||||
@@ -2581,7 +2594,7 @@ AuthorityFactory::createProjectedCRS(const std::string &code) const {
|
||||
pj_add_type_crs_if_needed(text_definition), d->context());
|
||||
auto projCRS = dynamic_cast<const crs::ProjectedCRS *>(obj.get());
|
||||
if (projCRS) {
|
||||
const auto &conv = projCRS->derivingConversionRef();
|
||||
const auto conv = projCRS->derivingConversion();
|
||||
auto newConv =
|
||||
(conv->nameStr() == "unnamed")
|
||||
? operation::Conversion::create(
|
||||
@@ -2602,10 +2615,9 @@ AuthorityFactory::createProjectedCRS(const std::string &code) const {
|
||||
boundCRS->baseCRS().get());
|
||||
if (projCRS) {
|
||||
auto newBoundCRS = crs::BoundCRS::create(
|
||||
crs::ProjectedCRS::create(
|
||||
props, projCRS->baseCRS(),
|
||||
projCRS->derivingConversionRef(),
|
||||
projCRS->coordinateSystem()),
|
||||
crs::ProjectedCRS::create(props, projCRS->baseCRS(),
|
||||
projCRS->derivingConversion(),
|
||||
projCRS->coordinateSystem()),
|
||||
boundCRS->hubCRS(), boundCRS->transformation());
|
||||
return NN_NO_CHECK(
|
||||
util::nn_dynamic_pointer_cast<crs::ProjectedCRS>(
|
||||
@@ -4332,56 +4344,29 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
|
||||
// For some reason, filtering on v1.deprecated and v2.deprecated kills
|
||||
// performance
|
||||
std::string sqlProlog("SELECT v1.table_name as table1, "
|
||||
"v1.auth_name AS auth_name1, v1.code AS code1, "
|
||||
"v1.deprecated AS deprecated1, "
|
||||
"v2.table_name as table2, "
|
||||
"v2.auth_name AS auth_name2, v2.code AS code2, "
|
||||
"v2.deprecated AS deprecated2, "
|
||||
"a1.south_lat AS south_lat1, "
|
||||
"a1.west_lon AS west_lon1, "
|
||||
"a1.north_lat AS north_lat1, "
|
||||
"a1.east_lon AS east_lon1, "
|
||||
"a2.south_lat AS south_lat2, "
|
||||
"a2.west_lon AS west_lon2, "
|
||||
"a2.north_lat AS north_lat2, "
|
||||
"a2.east_lon AS east_lon2 ");
|
||||
if (discardSuperseded) {
|
||||
sqlProlog += ", ss1.replacement_auth_name AS replacement_auth_name1, "
|
||||
"ss1.replacement_code AS replacement_code1, "
|
||||
"ss2.replacement_auth_name AS replacement_auth_name2, "
|
||||
"ss2.replacement_code AS replacement_code2 ";
|
||||
}
|
||||
sqlProlog += "FROM coordinate_operation_view v1 "
|
||||
"JOIN coordinate_operation_view v2 "
|
||||
"JOIN geodetic_crs g_source "
|
||||
"JOIN geodetic_crs g_v1s "
|
||||
"JOIN geodetic_crs g_v1t "
|
||||
"JOIN geodetic_crs g_v2s "
|
||||
"JOIN geodetic_crs g_v2t "
|
||||
"JOIN geodetic_crs g_target "
|
||||
"ON g_v1s.auth_name = v1.source_crs_auth_name "
|
||||
"AND g_v1s.code = v1.source_crs_code "
|
||||
"AND g_v1t.auth_name = v1.target_crs_auth_name "
|
||||
"AND g_v1t.code = v1.target_crs_code "
|
||||
"AND g_v2s.auth_name = v2.source_crs_auth_name "
|
||||
"AND g_v2s.code = v2.source_crs_code "
|
||||
"AND g_v2t.auth_name = v2.target_crs_auth_name "
|
||||
"AND g_v2t.code = v2.target_crs_code ";
|
||||
|
||||
const std::string joinSupersession(
|
||||
"LEFT JOIN supersession ss1 ON "
|
||||
"ss1.superseded_table_name = v1.table_name AND "
|
||||
"ss1.superseded_auth_name = v1.auth_name AND "
|
||||
"ss1.superseded_code = v1.code AND "
|
||||
"ss1.superseded_table_name = ss1.replacement_table_name "
|
||||
"LEFT JOIN supersession ss2 ON "
|
||||
"ss2.superseded_table_name = v2.table_name AND "
|
||||
"ss2.superseded_auth_name = v2.auth_name AND "
|
||||
"ss2.superseded_code = v2.code AND "
|
||||
"ss2.superseded_table_name = ss2.replacement_table_name ");
|
||||
const std::string sqlProlog("SELECT v1.table_name as table1, "
|
||||
"v1.auth_name AS auth_name1, v1.code AS code1, "
|
||||
"v1.deprecated AS deprecated1, "
|
||||
"v2.table_name as table2, "
|
||||
"v2.auth_name AS auth_name2, v2.code AS code2, "
|
||||
"v2.deprecated AS deprecated2 "
|
||||
"FROM coordinate_operation_view v1 "
|
||||
"JOIN coordinate_operation_view v2 "
|
||||
"JOIN geodetic_crs g_source "
|
||||
"JOIN geodetic_crs g_v1s "
|
||||
"JOIN geodetic_crs g_v1t "
|
||||
"JOIN geodetic_crs g_v2s "
|
||||
"JOIN geodetic_crs g_v2t "
|
||||
"JOIN geodetic_crs g_target "
|
||||
"ON g_v1s.auth_name = v1.source_crs_auth_name "
|
||||
"AND g_v1s.code = v1.source_crs_code "
|
||||
"AND g_v1t.auth_name = v1.target_crs_auth_name "
|
||||
"AND g_v1t.code = v1.target_crs_code "
|
||||
"AND g_v2s.auth_name = v2.source_crs_auth_name "
|
||||
"AND g_v2s.code = v2.source_crs_code "
|
||||
"AND g_v2t.auth_name = v2.target_crs_auth_name "
|
||||
"AND g_v2t.code = v2.target_crs_code ");
|
||||
const std::string joinArea(
|
||||
(discardSuperseded ? joinSupersession : std::string()) +
|
||||
"JOIN area a1 ON v1.area_of_use_auth_name = a1.auth_name "
|
||||
"AND v1.area_of_use_code = a1.code "
|
||||
"JOIN area a2 ON v2.area_of_use_auth_name = a2.auth_name "
|
||||
@@ -4394,8 +4379,13 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
additionalWhere +=
|
||||
"WHERE g_source.auth_name = ? AND g_source.code = ? "
|
||||
"AND g_target.auth_name = ? AND g_target.code = ? "
|
||||
"AND intersects_bbox(south_lat1, west_lon1, north_lat1, east_lon1, "
|
||||
"south_lat2, west_lon2, north_lat2, east_lon2) = 1 ";
|
||||
"AND intersects_bbox("
|
||||
"a1.south_lat, a1.west_lon, a1.north_lat, a1.east_lon, "
|
||||
"a2.south_lat, a2.west_lon, a2.north_lat, a2.east_lon) = 1 ";
|
||||
|
||||
#if 0
|
||||
// While those additonal constraints are correct, they are found to
|
||||
// kill performance. So enforce them as post-processing
|
||||
|
||||
if (!allowedAuthorities.empty()) {
|
||||
additionalWhere += "AND v1.auth_name IN (";
|
||||
@@ -4410,7 +4400,7 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
additionalWhere += ',';
|
||||
additionalWhere += '?';
|
||||
}
|
||||
additionalWhere += ')';
|
||||
additionalWhere += ") ";
|
||||
for (const auto &allowedAuthority : allowedAuthorities) {
|
||||
params.emplace_back(allowedAuthority);
|
||||
}
|
||||
@@ -4423,6 +4413,8 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
params.emplace_back(d->authority());
|
||||
params.emplace_back(d->authority());
|
||||
}
|
||||
#endif
|
||||
|
||||
for (const auto &extent : {intersectingExtent1, intersectingExtent2}) {
|
||||
if (extent) {
|
||||
const auto &geogExtent = extent->geographicElements();
|
||||
@@ -4438,10 +4430,10 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
if (south_lat != -90.0 || west_lon != -180.0 ||
|
||||
north_lat != 90.0 || east_lon != 180.0) {
|
||||
additionalWhere +=
|
||||
"AND intersects_bbox(south_lat1, "
|
||||
"west_lon1, north_lat1, east_lon1, ?, ?, ?, ?) AND "
|
||||
"intersects_bbox(south_lat2, west_lon2, "
|
||||
"north_lat2, east_lon2, ?, ?, ?, ?) ";
|
||||
"AND intersects_bbox(a1.south_lat, a1.west_lon, "
|
||||
"a1.north_lat, a1.east_lon, ?, ?, ?, ?) AND "
|
||||
"intersects_bbox(a2.south_lat, a2.west_lon, "
|
||||
"a2.north_lat, a2.east_lon, ?, ?, ?, ?) ";
|
||||
params.emplace_back(south_lat);
|
||||
params.emplace_back(west_lon);
|
||||
params.emplace_back(north_lat);
|
||||
@@ -4479,53 +4471,192 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
auto res = d->run(sql + additionalWhere, params);
|
||||
// fprintf(stderr, "after\n");
|
||||
|
||||
const auto filterOutSuperseded = [](SQLResultSet &&resultSet) {
|
||||
std::set<std::pair<std::string, std::string>> setTransf1;
|
||||
std::set<std::pair<std::string, std::string>> setTransf2;
|
||||
const auto filterDeprecatedAndNotMatchingAuth =
|
||||
[&](SQLResultSet &&resultSet) {
|
||||
|
||||
SQLResultSet filteredResultSet;
|
||||
for (const auto &row : resultSet) {
|
||||
const auto &deprecated1 = row[3];
|
||||
const auto &deprecated2 = row[7];
|
||||
if (deprecated1 == "1" || deprecated2 == "1") {
|
||||
continue;
|
||||
}
|
||||
const auto &auth_name1 = row[1];
|
||||
const auto &auth_name2 = row[5];
|
||||
if (d->hasAuthorityRestriction()) {
|
||||
if (auth_name1 != d->authority() ||
|
||||
auth_name2 != d->authority()) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (!allowedAuthorities.empty()) {
|
||||
{
|
||||
bool found = false;
|
||||
for (const auto &auth : allowedAuthorities) {
|
||||
if (auth_name1 == auth) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
{
|
||||
bool found = false;
|
||||
for (const auto &auth : allowedAuthorities) {
|
||||
if (auth_name2 == auth) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
filteredResultSet.emplace_back(row);
|
||||
}
|
||||
return filteredResultSet;
|
||||
};
|
||||
|
||||
const auto filterOutSuperseded = [&](SQLResultSet &&resultSet) {
|
||||
std::set<std::pair<std::string, std::string>> setTransf;
|
||||
std::string findSupersededSql("SELECT superseded_table_name, "
|
||||
"superseded_auth_name, superseded_code, "
|
||||
"replacement_auth_name, replacement_code "
|
||||
"FROM supersession WHERE ");
|
||||
bool findSupersededFirstWhere = true;
|
||||
ListOfParams findSupersededParams;
|
||||
|
||||
std::set<std::string> setAlreadyAsked;
|
||||
const auto keyMapSupersession = [](
|
||||
const std::string &table_name, const std::string &auth_name,
|
||||
const std::string &code) { return table_name + auth_name + code; };
|
||||
|
||||
for (const auto &row : resultSet) {
|
||||
// table1
|
||||
const auto &table1 = row[0];
|
||||
const auto &auth_name1 = row[1];
|
||||
const auto &code1 = row[2];
|
||||
const auto &deprecated1 = row[3];
|
||||
// table2
|
||||
const auto key1 = keyMapSupersession(table1, auth_name1, code1);
|
||||
if (setAlreadyAsked.find(key1) == setAlreadyAsked.end()) {
|
||||
setAlreadyAsked.insert(key1);
|
||||
if (!findSupersededFirstWhere)
|
||||
findSupersededSql += " OR ";
|
||||
findSupersededFirstWhere = false;
|
||||
findSupersededSql +=
|
||||
"(superseded_table_name = ? AND replacement_table_name = "
|
||||
"superseded_table_name AND superseded_auth_name = ? AND "
|
||||
"superseded_code = ?)";
|
||||
findSupersededParams.push_back(table1);
|
||||
findSupersededParams.push_back(auth_name1);
|
||||
findSupersededParams.push_back(code1);
|
||||
}
|
||||
|
||||
const auto &table2 = row[4];
|
||||
const auto &auth_name2 = row[5];
|
||||
const auto &code2 = row[6];
|
||||
const auto &deprecated2 = row[7];
|
||||
if (deprecated1 == "1" || deprecated2 == "1") {
|
||||
continue;
|
||||
const auto key2 = keyMapSupersession(table2, auth_name2, code2);
|
||||
if (setAlreadyAsked.find(key2) == setAlreadyAsked.end()) {
|
||||
setAlreadyAsked.insert(key2);
|
||||
if (!findSupersededFirstWhere)
|
||||
findSupersededSql += " OR ";
|
||||
findSupersededFirstWhere = false;
|
||||
findSupersededSql +=
|
||||
"(superseded_table_name = ? AND replacement_table_name = "
|
||||
"superseded_table_name AND superseded_auth_name = ? AND "
|
||||
"superseded_code = ?)";
|
||||
findSupersededParams.push_back(table2);
|
||||
findSupersededParams.push_back(auth_name2);
|
||||
findSupersededParams.push_back(code2);
|
||||
}
|
||||
setTransf1.insert(
|
||||
|
||||
setTransf.insert(
|
||||
std::pair<std::string, std::string>(auth_name1, code1));
|
||||
setTransf2.insert(
|
||||
setTransf.insert(
|
||||
std::pair<std::string, std::string>(auth_name2, code2));
|
||||
}
|
||||
|
||||
std::map<std::string, std::vector<std::pair<std::string, std::string>>>
|
||||
mapSupersession;
|
||||
|
||||
if (!findSupersededParams.empty()) {
|
||||
const auto resSuperseded =
|
||||
d->run(findSupersededSql, findSupersededParams);
|
||||
for (const auto &row : resSuperseded) {
|
||||
const auto &superseded_table_name = row[0];
|
||||
const auto &superseded_auth_name = row[1];
|
||||
const auto &superseded_code = row[2];
|
||||
const auto &replacement_auth_name = row[3];
|
||||
const auto &replacement_code = row[4];
|
||||
mapSupersession[keyMapSupersession(superseded_table_name,
|
||||
superseded_auth_name,
|
||||
superseded_code)]
|
||||
.push_back(std::pair<std::string, std::string>(
|
||||
replacement_auth_name, replacement_code));
|
||||
}
|
||||
}
|
||||
|
||||
SQLResultSet filteredResultSet;
|
||||
for (const auto &row : resultSet) {
|
||||
const auto &replacement_auth_name1 = row[16];
|
||||
const auto &replacement_code1 = row[17];
|
||||
const auto &replacement_auth_name2 = row[18];
|
||||
const auto &replacement_code2 = row[19];
|
||||
if (!replacement_auth_name1.empty() &&
|
||||
setTransf1.find(std::pair<std::string, std::string>(
|
||||
replacement_auth_name1, replacement_code1)) !=
|
||||
setTransf1.end()) {
|
||||
// Skip transformations that are superseded by others that got
|
||||
// returned in the result set.
|
||||
continue;
|
||||
const auto &table1 = row[0];
|
||||
const auto &auth_name1 = row[1];
|
||||
const auto &code1 = row[2];
|
||||
const auto &table2 = row[4];
|
||||
const auto &auth_name2 = row[5];
|
||||
const auto &code2 = row[6];
|
||||
|
||||
auto iter1 = mapSupersession.find(
|
||||
keyMapSupersession(table1, auth_name1, code1));
|
||||
if (iter1 != mapSupersession.end()) {
|
||||
bool foundReplacement = false;
|
||||
for (const auto &replacement : iter1->second) {
|
||||
const auto &replacement_auth_name = replacement.first;
|
||||
const auto &replacement_code = replacement.second;
|
||||
if (setTransf.find(std::pair<std::string, std::string>(
|
||||
replacement_auth_name, replacement_code)) !=
|
||||
setTransf.end()) {
|
||||
// Skip transformations that are superseded by others
|
||||
// that got
|
||||
// returned in the result set.
|
||||
foundReplacement = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (foundReplacement) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (!replacement_auth_name2.empty() &&
|
||||
setTransf2.find(std::pair<std::string, std::string>(
|
||||
replacement_auth_name2, replacement_code2)) !=
|
||||
setTransf2.end()) {
|
||||
// Skip transformations that are superseded by others that got
|
||||
// returned in the result set.
|
||||
continue;
|
||||
|
||||
auto iter2 = mapSupersession.find(
|
||||
keyMapSupersession(table2, auth_name2, code2));
|
||||
if (iter2 != mapSupersession.end()) {
|
||||
bool foundReplacement = false;
|
||||
for (const auto &replacement : iter2->second) {
|
||||
const auto &replacement_auth_name = replacement.first;
|
||||
const auto &replacement_code = replacement.second;
|
||||
if (setTransf.find(std::pair<std::string, std::string>(
|
||||
replacement_auth_name, replacement_code)) !=
|
||||
setTransf.end()) {
|
||||
// Skip transformations that are superseded by others
|
||||
// that got
|
||||
// returned in the result set.
|
||||
foundReplacement = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (foundReplacement) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
filteredResultSet.emplace_back(row);
|
||||
}
|
||||
return filteredResultSet;
|
||||
};
|
||||
|
||||
res = filterDeprecatedAndNotMatchingAuth(std::move(res));
|
||||
if (discardSuperseded) {
|
||||
res = filterOutSuperseded(std::move(res));
|
||||
}
|
||||
@@ -4536,14 +4667,10 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
const auto &table1 = row[0];
|
||||
const auto &auth_name1 = row[1];
|
||||
const auto &code1 = row[2];
|
||||
const auto &deprecated1 = row[3];
|
||||
const auto &table2 = row[4];
|
||||
const auto &auth_name2 = row[5];
|
||||
const auto &code2 = row[6];
|
||||
const auto &deprecated2 = row[7];
|
||||
if (deprecated1 == "1" || deprecated2 == "1") {
|
||||
continue;
|
||||
}
|
||||
|
||||
auto op1 = d->createFactory(auth_name1)
|
||||
->createCoordinateOperation(
|
||||
code1, true, usePROJAlternativeGridNames, table1);
|
||||
@@ -4624,6 +4751,8 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
// fprintf(stderr, "before %s\n", (sql + additionalWhere).c_str());
|
||||
res = d->run(sql + additionalWhere, params);
|
||||
// fprintf(stderr, "after\n");
|
||||
|
||||
res = filterDeprecatedAndNotMatchingAuth(std::move(res));
|
||||
if (discardSuperseded) {
|
||||
res = filterOutSuperseded(std::move(res));
|
||||
}
|
||||
@@ -4631,14 +4760,10 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
const auto &table1 = row[0];
|
||||
const auto &auth_name1 = row[1];
|
||||
const auto &code1 = row[2];
|
||||
const auto &deprecated1 = row[3];
|
||||
const auto &table2 = row[4];
|
||||
const auto &auth_name2 = row[5];
|
||||
const auto &code2 = row[6];
|
||||
const auto &deprecated2 = row[7];
|
||||
if (deprecated1 == "1" || deprecated2 == "1") {
|
||||
continue;
|
||||
}
|
||||
|
||||
auto op1 = d->createFactory(auth_name1)
|
||||
->createCoordinateOperation(
|
||||
code1, true, usePROJAlternativeGridNames, table1);
|
||||
@@ -4719,6 +4844,8 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
// fprintf(stderr, "before %s\n", (sql + additionalWhere).c_str());
|
||||
res = d->run(sql + additionalWhere, params);
|
||||
// fprintf(stderr, "after\n");
|
||||
|
||||
res = filterDeprecatedAndNotMatchingAuth(std::move(res));
|
||||
if (discardSuperseded) {
|
||||
res = filterOutSuperseded(std::move(res));
|
||||
}
|
||||
@@ -4726,14 +4853,10 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
const auto &table1 = row[0];
|
||||
const auto &auth_name1 = row[1];
|
||||
const auto &code1 = row[2];
|
||||
const auto &deprecated1 = row[3];
|
||||
const auto &table2 = row[4];
|
||||
const auto &auth_name2 = row[5];
|
||||
const auto &code2 = row[6];
|
||||
const auto &deprecated2 = row[7];
|
||||
if (deprecated1 == "1" || deprecated2 == "1") {
|
||||
continue;
|
||||
}
|
||||
|
||||
auto op1 = d->createFactory(auth_name1)
|
||||
->createCoordinateOperation(
|
||||
code1, true, usePROJAlternativeGridNames, table1);
|
||||
@@ -4814,6 +4937,8 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
// fprintf(stderr, "before %s\n", (sql + additionalWhere).c_str());
|
||||
res = d->run(sql + additionalWhere, params);
|
||||
// fprintf(stderr, "after\n");
|
||||
|
||||
res = filterDeprecatedAndNotMatchingAuth(std::move(res));
|
||||
if (discardSuperseded) {
|
||||
res = filterOutSuperseded(std::move(res));
|
||||
}
|
||||
@@ -4821,14 +4946,10 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
const auto &table1 = row[0];
|
||||
const auto &auth_name1 = row[1];
|
||||
const auto &code1 = row[2];
|
||||
const auto &deprecated1 = row[3];
|
||||
const auto &table2 = row[4];
|
||||
const auto &auth_name2 = row[5];
|
||||
const auto &code2 = row[6];
|
||||
const auto &deprecated2 = row[7];
|
||||
if (deprecated1 == "1" || deprecated2 == "1") {
|
||||
continue;
|
||||
}
|
||||
|
||||
auto op1 = d->createFactory(auth_name1)
|
||||
->createCoordinateOperation(
|
||||
code1, true, usePROJAlternativeGridNames, table1);
|
||||
@@ -5222,18 +5343,36 @@ std::string AuthorityFactory::getOfficialNameFromAlias(
|
||||
if (res.empty()) {
|
||||
return std::string();
|
||||
}
|
||||
const auto &row = res.front();
|
||||
outTableName = row[0];
|
||||
outAuthName = row[1];
|
||||
outCode = row[2];
|
||||
sql = "SELECT name FROM \"";
|
||||
sql += replaceAll(outTableName, "\"", "\"\"");
|
||||
sql += "\" WHERE auth_name = ? AND code = ?";
|
||||
res = d->run(sql, {outAuthName, outCode});
|
||||
|
||||
params.clear();
|
||||
sql.clear();
|
||||
bool first = true;
|
||||
for (const auto &row : res) {
|
||||
if (!first)
|
||||
sql += " UNION ALL ";
|
||||
first = false;
|
||||
outTableName = row[0];
|
||||
outAuthName = row[1];
|
||||
outCode = row[2];
|
||||
sql += "SELECT name, ? AS table_name, auth_name, code, deprecated "
|
||||
"FROM \"";
|
||||
sql += replaceAll(outTableName, "\"", "\"\"");
|
||||
sql += "\" WHERE auth_name = ? AND code = ?";
|
||||
params.emplace_back(outTableName);
|
||||
params.emplace_back(outAuthName);
|
||||
params.emplace_back(outCode);
|
||||
}
|
||||
sql = "SELECT name, table_name, auth_name, code FROM (" + sql +
|
||||
") x ORDER BY deprecated LIMIT 1";
|
||||
res = d->run(sql, params);
|
||||
if (res.empty()) { // shouldn't happen normally
|
||||
return std::string();
|
||||
}
|
||||
return res.front()[0];
|
||||
const auto &row = res.front();
|
||||
outTableName = row[1];
|
||||
outAuthName = row[2];
|
||||
outCode = row[3];
|
||||
return row[0];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5751,7 +5890,9 @@ static std::string buildSqlLookForAuthNameCode(
|
||||
|
||||
std::set<std::string> authorities;
|
||||
for (const auto &crs : list) {
|
||||
const auto &ids = crs.first->identifiers();
|
||||
auto boundCRS = dynamic_cast<crs::BoundCRS *>(crs.first.get());
|
||||
const auto &ids = boundCRS ? boundCRS->baseCRS()->identifiers()
|
||||
: crs.first->identifiers();
|
||||
if (!ids.empty()) {
|
||||
authorities.insert(*(ids[0]->codeSpace()));
|
||||
}
|
||||
@@ -5770,7 +5911,9 @@ static std::string buildSqlLookForAuthNameCode(
|
||||
params.emplace_back(auth_name);
|
||||
bool firstGeodCRSForAuth = true;
|
||||
for (const auto &crs : list) {
|
||||
const auto &ids = crs.first->identifiers();
|
||||
auto boundCRS = dynamic_cast<crs::BoundCRS *>(crs.first.get());
|
||||
const auto &ids = boundCRS ? boundCRS->baseCRS()->identifiers()
|
||||
: crs.first->identifiers();
|
||||
if (!ids.empty() && *(ids[0]->codeSpace()) == auth_name) {
|
||||
if (!firstGeodCRSForAuth) {
|
||||
sql += ',';
|
||||
|
||||
+293
-160
@@ -1298,19 +1298,22 @@ struct WKTParser::Private {
|
||||
static std::string projectionGetParameter(const WKTNodeNNPtr &projCRSNode,
|
||||
const char *paramName);
|
||||
|
||||
ConversionNNPtr buildProjection(const WKTNodeNNPtr &projCRSNode,
|
||||
ConversionNNPtr buildProjection(const GeodeticCRSNNPtr &baseGeodCRS,
|
||||
const WKTNodeNNPtr &projCRSNode,
|
||||
const WKTNodeNNPtr &projectionNode,
|
||||
const UnitOfMeasure &defaultLinearUnit,
|
||||
const UnitOfMeasure &defaultAngularUnit);
|
||||
|
||||
ConversionNNPtr
|
||||
buildProjectionStandard(const WKTNodeNNPtr &projCRSNode,
|
||||
buildProjectionStandard(const GeodeticCRSNNPtr &baseGeodCRS,
|
||||
const WKTNodeNNPtr &projCRSNode,
|
||||
const WKTNodeNNPtr &projectionNode,
|
||||
const UnitOfMeasure &defaultLinearUnit,
|
||||
const UnitOfMeasure &defaultAngularUnit);
|
||||
|
||||
ConversionNNPtr
|
||||
buildProjectionFromESRI(const WKTNodeNNPtr &projCRSNode,
|
||||
buildProjectionFromESRI(const GeodeticCRSNNPtr &baseGeodCRS,
|
||||
const WKTNodeNNPtr &projCRSNode,
|
||||
const WKTNodeNNPtr &projectionNode,
|
||||
const UnitOfMeasure &defaultLinearUnit,
|
||||
const UnitOfMeasure &defaultAngularUnit);
|
||||
@@ -1997,65 +2000,20 @@ GeodeticReferenceFrameNNPtr WKTParser::Private::buildGeodeticReferenceFrame(
|
||||
|
||||
// do that before buildEllipsoid() so that esriStyle_ can be set
|
||||
auto name = stripQuotes(nodeP->children()[0]);
|
||||
if (name == "WGS_1984") {
|
||||
properties.set(IdentifiedObject::NAME_KEY,
|
||||
GeodeticReferenceFrame::EPSG_6326->nameStr());
|
||||
} else if (starts_with(name, "D_")) {
|
||||
esriStyle_ = true;
|
||||
const char *tableNameForAlias = nullptr;
|
||||
std::string authNameFromAlias;
|
||||
std::string codeFromAlias;
|
||||
if (name == "D_WGS_1984") {
|
||||
name = "World Geodetic System 1984";
|
||||
authNameFromAlias = Identifier::EPSG;
|
||||
codeFromAlias = "6326";
|
||||
} else {
|
||||
tableNameForAlias = "geodetic_datum";
|
||||
}
|
||||
|
||||
if (dbContext_ && tableNameForAlias) {
|
||||
std::string outTableName;
|
||||
auto authFactory = AuthorityFactory::create(NN_NO_CHECK(dbContext_),
|
||||
std::string());
|
||||
auto officialName = authFactory->getOfficialNameFromAlias(
|
||||
name, tableNameForAlias, "ESRI", false, outTableName,
|
||||
authNameFromAlias, codeFromAlias);
|
||||
if (!officialName.empty()) {
|
||||
if (primeMeridian->nameStr() !=
|
||||
PrimeMeridian::GREENWICH->nameStr()) {
|
||||
auto nameWithPM =
|
||||
officialName + " (" + primeMeridian->nameStr() + ")";
|
||||
if (dbContext_->isKnownName(nameWithPM, "geodetic_datum")) {
|
||||
officialName = nameWithPM;
|
||||
}
|
||||
}
|
||||
name = officialName;
|
||||
}
|
||||
}
|
||||
|
||||
properties.set(IdentifiedObject::NAME_KEY, name);
|
||||
if (!authNameFromAlias.empty()) {
|
||||
auto identifiers = ArrayOfBaseObject::create();
|
||||
identifiers->add(Identifier::create(
|
||||
codeFromAlias,
|
||||
PropertyMap()
|
||||
.set(Identifier::CODESPACE_KEY, authNameFromAlias)
|
||||
.set(Identifier::AUTHORITY_KEY, authNameFromAlias)));
|
||||
properties.set(IdentifiedObject::IDENTIFIERS_KEY, identifiers);
|
||||
}
|
||||
} else if (name.find('_') != std::string::npos) {
|
||||
// Likely coming from WKT1
|
||||
const auto identifyFromName = [&](const std::string &l_name) {
|
||||
bool foundDatumName = false;
|
||||
if (dbContext_) {
|
||||
auto authFactory = AuthorityFactory::create(NN_NO_CHECK(dbContext_),
|
||||
std::string());
|
||||
auto res = authFactory->createObjectsFromName(
|
||||
name, {AuthorityFactory::ObjectType::GEODETIC_REFERENCE_FRAME},
|
||||
true, 1);
|
||||
bool foundDatumName = false;
|
||||
l_name,
|
||||
{AuthorityFactory::ObjectType::GEODETIC_REFERENCE_FRAME}, true,
|
||||
1);
|
||||
if (!res.empty()) {
|
||||
const auto &refDatum = res.front();
|
||||
if (metadata::Identifier::isEquivalentName(
|
||||
name.c_str(), refDatum->nameStr().c_str())) {
|
||||
l_name.c_str(), refDatum->nameStr().c_str())) {
|
||||
foundDatumName = true;
|
||||
properties.set(IdentifiedObject::NAME_KEY,
|
||||
refDatum->nameStr());
|
||||
@@ -2096,13 +2054,76 @@ GeodeticReferenceFrameNNPtr WKTParser::Private::buildGeodeticReferenceFrame(
|
||||
std::string authNameFromAlias;
|
||||
std::string codeFromAlias;
|
||||
auto officialName = authFactory->getOfficialNameFromAlias(
|
||||
name, "geodetic_datum", std::string(), true, outTableName,
|
||||
l_name, "geodetic_datum", std::string(), true, outTableName,
|
||||
authNameFromAlias, codeFromAlias);
|
||||
if (!officialName.empty()) {
|
||||
foundDatumName = true;
|
||||
properties.set(IdentifiedObject::NAME_KEY, officialName);
|
||||
}
|
||||
}
|
||||
}
|
||||
return foundDatumName;
|
||||
};
|
||||
|
||||
if (name == "WGS_1984") {
|
||||
properties.set(IdentifiedObject::NAME_KEY,
|
||||
GeodeticReferenceFrame::EPSG_6326->nameStr());
|
||||
} else if (starts_with(name, "D_")) {
|
||||
esriStyle_ = true;
|
||||
const char *tableNameForAlias = nullptr;
|
||||
std::string authNameFromAlias;
|
||||
std::string codeFromAlias;
|
||||
if (name == "D_WGS_1984") {
|
||||
name = "World Geodetic System 1984";
|
||||
authNameFromAlias = Identifier::EPSG;
|
||||
codeFromAlias = "6326";
|
||||
} else {
|
||||
tableNameForAlias = "geodetic_datum";
|
||||
}
|
||||
|
||||
bool setNameAndId = true;
|
||||
if (dbContext_ && tableNameForAlias) {
|
||||
std::string outTableName;
|
||||
auto authFactory = AuthorityFactory::create(NN_NO_CHECK(dbContext_),
|
||||
std::string());
|
||||
auto officialName = authFactory->getOfficialNameFromAlias(
|
||||
name, tableNameForAlias, "ESRI", false, outTableName,
|
||||
authNameFromAlias, codeFromAlias);
|
||||
if (officialName.empty()) {
|
||||
// For the case of "D_GDA2020" where there is no D_GDA2020 ESRI
|
||||
// alias, so just try without the D_ prefix.
|
||||
const auto nameWithoutDPrefix = name.substr(2);
|
||||
if (identifyFromName(nameWithoutDPrefix)) {
|
||||
setNameAndId = false; // already done in identifyFromName()
|
||||
}
|
||||
} else {
|
||||
if (primeMeridian->nameStr() !=
|
||||
PrimeMeridian::GREENWICH->nameStr()) {
|
||||
auto nameWithPM =
|
||||
officialName + " (" + primeMeridian->nameStr() + ")";
|
||||
if (dbContext_->isKnownName(nameWithPM, "geodetic_datum")) {
|
||||
officialName = nameWithPM;
|
||||
}
|
||||
}
|
||||
name = officialName;
|
||||
}
|
||||
}
|
||||
|
||||
if (setNameAndId) {
|
||||
properties.set(IdentifiedObject::NAME_KEY, name);
|
||||
if (!authNameFromAlias.empty()) {
|
||||
auto identifiers = ArrayOfBaseObject::create();
|
||||
identifiers->add(Identifier::create(
|
||||
codeFromAlias,
|
||||
PropertyMap()
|
||||
.set(Identifier::CODESPACE_KEY, authNameFromAlias)
|
||||
.set(Identifier::AUTHORITY_KEY, authNameFromAlias)));
|
||||
properties.set(IdentifiedObject::IDENTIFIERS_KEY, identifiers);
|
||||
}
|
||||
}
|
||||
} else if (name.find('_') != std::string::npos) {
|
||||
// Likely coming from WKT1
|
||||
identifyFromName(name);
|
||||
}
|
||||
|
||||
auto ellipsoid = buildEllipsoid(ellipsoidNode);
|
||||
@@ -3117,9 +3138,40 @@ bool WKTParser::Private::hasWebMercPROJ4String(
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
static const MethodMapping *
|
||||
selectSphericalOrEllipsoidal(const MethodMapping *mapping,
|
||||
const GeodeticCRSNNPtr &baseGeodCRS) {
|
||||
if (mapping->epsg_code ==
|
||||
EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL ||
|
||||
mapping->epsg_code == EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA) {
|
||||
mapping = getMapping(
|
||||
baseGeodCRS->ellipsoid()->isSphere()
|
||||
? EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL
|
||||
: EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA);
|
||||
} else if (mapping->epsg_code ==
|
||||
EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA_SPHERICAL ||
|
||||
mapping->epsg_code ==
|
||||
EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA) {
|
||||
mapping = getMapping(
|
||||
baseGeodCRS->ellipsoid()->isSphere()
|
||||
? EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA_SPHERICAL
|
||||
: EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA);
|
||||
} else if (mapping->epsg_code ==
|
||||
EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL_SPHERICAL ||
|
||||
mapping->epsg_code == EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL) {
|
||||
mapping =
|
||||
getMapping(baseGeodCRS->ellipsoid()->isSphere()
|
||||
? EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL_SPHERICAL
|
||||
: EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL);
|
||||
}
|
||||
return mapping;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
ConversionNNPtr WKTParser::Private::buildProjectionFromESRI(
|
||||
const WKTNodeNNPtr &projCRSNode, const WKTNodeNNPtr &projectionNode,
|
||||
const UnitOfMeasure &defaultLinearUnit,
|
||||
const GeodeticCRSNNPtr &baseGeodCRS, const WKTNodeNNPtr &projCRSNode,
|
||||
const WKTNodeNNPtr &projectionNode, const UnitOfMeasure &defaultLinearUnit,
|
||||
const UnitOfMeasure &defaultAngularUnit) {
|
||||
const std::string esriProjectionName =
|
||||
stripQuotes(projectionNode->GP()->children()[0]);
|
||||
@@ -3129,7 +3181,7 @@ ConversionNNPtr WKTParser::Private::buildProjectionFromESRI(
|
||||
// on the parameters / their values
|
||||
const auto esriMappings = getMappingsFromESRI(esriProjectionName);
|
||||
if (esriMappings.empty()) {
|
||||
return buildProjectionStandard(projCRSNode, projectionNode,
|
||||
return buildProjectionStandard(baseGeodCRS, projCRSNode, projectionNode,
|
||||
defaultLinearUnit, defaultAngularUnit);
|
||||
}
|
||||
|
||||
@@ -3209,6 +3261,8 @@ ConversionNNPtr WKTParser::Private::buildProjectionFromESRI(
|
||||
}
|
||||
assert(wkt2_mapping);
|
||||
|
||||
wkt2_mapping = selectSphericalOrEllipsoidal(wkt2_mapping, baseGeodCRS);
|
||||
|
||||
PropertyMap propertiesMethod;
|
||||
propertiesMethod.set(IdentifiedObject::NAME_KEY, wkt2_mapping->wkt2_name);
|
||||
if (wkt2_mapping->epsg_code != 0) {
|
||||
@@ -3296,19 +3350,18 @@ ConversionNNPtr WKTParser::Private::buildProjectionFromESRI(
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
ConversionNNPtr
|
||||
WKTParser::Private::buildProjection(const WKTNodeNNPtr &projCRSNode,
|
||||
const WKTNodeNNPtr &projectionNode,
|
||||
const UnitOfMeasure &defaultLinearUnit,
|
||||
const UnitOfMeasure &defaultAngularUnit) {
|
||||
ConversionNNPtr WKTParser::Private::buildProjection(
|
||||
const GeodeticCRSNNPtr &baseGeodCRS, const WKTNodeNNPtr &projCRSNode,
|
||||
const WKTNodeNNPtr &projectionNode, const UnitOfMeasure &defaultLinearUnit,
|
||||
const UnitOfMeasure &defaultAngularUnit) {
|
||||
if (projectionNode->GP()->childrenSize() == 0) {
|
||||
ThrowNotEnoughChildren(WKTConstants::PROJECTION);
|
||||
}
|
||||
if (esriStyle_) {
|
||||
return buildProjectionFromESRI(projCRSNode, projectionNode,
|
||||
return buildProjectionFromESRI(baseGeodCRS, projCRSNode, projectionNode,
|
||||
defaultLinearUnit, defaultAngularUnit);
|
||||
}
|
||||
return buildProjectionStandard(projCRSNode, projectionNode,
|
||||
return buildProjectionStandard(baseGeodCRS, projCRSNode, projectionNode,
|
||||
defaultLinearUnit, defaultAngularUnit);
|
||||
}
|
||||
|
||||
@@ -3333,8 +3386,8 @@ WKTParser::Private::projectionGetParameter(const WKTNodeNNPtr &projCRSNode,
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
ConversionNNPtr WKTParser::Private::buildProjectionStandard(
|
||||
const WKTNodeNNPtr &projCRSNode, const WKTNodeNNPtr &projectionNode,
|
||||
const UnitOfMeasure &defaultLinearUnit,
|
||||
const GeodeticCRSNNPtr &baseGeodCRS, const WKTNodeNNPtr &projCRSNode,
|
||||
const WKTNodeNNPtr &projectionNode, const UnitOfMeasure &defaultLinearUnit,
|
||||
const UnitOfMeasure &defaultAngularUnit) {
|
||||
std::string wkt1ProjectionName =
|
||||
stripQuotes(projectionNode->GP()->children()[0]);
|
||||
@@ -3452,6 +3505,9 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard(
|
||||
std::string projectionName(wkt1ProjectionName);
|
||||
const MethodMapping *mapping =
|
||||
tryToIdentifyWKT1Method ? getMappingFromWKT1(projectionName) : nullptr;
|
||||
if (mapping) {
|
||||
mapping = selectSphericalOrEllipsoidal(mapping, baseGeodCRS);
|
||||
}
|
||||
|
||||
// For Krovak, we need to look at axis to decide between the Krovak and
|
||||
// Krovak East-North Oriented methods
|
||||
@@ -3594,13 +3650,13 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard(
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
static ProjectedCRSNNPtr createPseudoMercator(const PropertyMap &props) {
|
||||
static ProjectedCRSNNPtr createPseudoMercator(const PropertyMap &props,
|
||||
const cs::CartesianCSNNPtr &cs) {
|
||||
auto conversion = Conversion::createPopularVisualisationPseudoMercator(
|
||||
PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), Angle(0),
|
||||
Angle(0), Length(0), Length(0));
|
||||
return ProjectedCRS::create(
|
||||
props, GeographicCRS::EPSG_4326, conversion,
|
||||
CartesianCS::createEastingNorthing(UnitOfMeasure::METRE));
|
||||
return ProjectedCRS::create(props, GeographicCRS::EPSG_4326, conversion,
|
||||
cs);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -3626,6 +3682,15 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) {
|
||||
|
||||
auto props = buildProperties(node);
|
||||
|
||||
auto &csNode = nodeP->lookForChild(WKTConstants::CS_);
|
||||
const auto &nodeValue = nodeP->value();
|
||||
if (isNull(csNode) && !ci_equal(nodeValue, WKTConstants::PROJCS) &&
|
||||
!ci_equal(nodeValue, WKTConstants::BASEPROJCRS)) {
|
||||
ThrowMissing(WKTConstants::CS_);
|
||||
}
|
||||
auto cs = buildCS(csNode, node, UnitOfMeasure::NONE);
|
||||
auto cartesianCS = nn_dynamic_pointer_cast<CartesianCS>(cs);
|
||||
|
||||
const std::string projCRSName = stripQuotes(nodeP->children()[0]);
|
||||
if (esriStyle_ && dbContext_) {
|
||||
// It is likely that the ESRI definition of EPSG:32661 (UPS North) &
|
||||
@@ -3651,21 +3716,22 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) {
|
||||
}
|
||||
}
|
||||
|
||||
if (isNull(conversionNode) && hasWebMercPROJ4String(node, projectionNode)) {
|
||||
if (isNull(conversionNode) && hasWebMercPROJ4String(node, projectionNode) &&
|
||||
cartesianCS) {
|
||||
toWGS84Parameters_.clear();
|
||||
return createPseudoMercator(props);
|
||||
return createPseudoMercator(props, NN_NO_CHECK(cartesianCS));
|
||||
}
|
||||
|
||||
// WGS_84_Pseudo_Mercator: Particular case for corrupted ESRI WKT generated
|
||||
// by older GDAL versions
|
||||
// https://trac.osgeo.org/gdal/changeset/30732
|
||||
// WGS_1984_Web_Mercator: deprecated ESRI:102113
|
||||
if (metadata::Identifier::isEquivalentName(projCRSName.c_str(),
|
||||
"WGS_84_Pseudo_Mercator") ||
|
||||
metadata::Identifier::isEquivalentName(projCRSName.c_str(),
|
||||
"WGS_1984_Web_Mercator")) {
|
||||
if (cartesianCS && (metadata::Identifier::isEquivalentName(
|
||||
projCRSName.c_str(), "WGS_84_Pseudo_Mercator") ||
|
||||
metadata::Identifier::isEquivalentName(
|
||||
projCRSName.c_str(), "WGS_1984_Web_Mercator"))) {
|
||||
toWGS84Parameters_.clear();
|
||||
return createPseudoMercator(props);
|
||||
return createPseudoMercator(props, NN_NO_CHECK(cartesianCS));
|
||||
}
|
||||
|
||||
auto linearUnit = buildUnitInSubNode(node, UnitOfMeasure::Type::LINEAR);
|
||||
@@ -3674,16 +3740,8 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) {
|
||||
auto conversion =
|
||||
!isNull(conversionNode)
|
||||
? buildConversion(conversionNode, linearUnit, angularUnit)
|
||||
: buildProjection(node, projectionNode, linearUnit, angularUnit);
|
||||
|
||||
auto &csNode = nodeP->lookForChild(WKTConstants::CS_);
|
||||
const auto &nodeValue = nodeP->value();
|
||||
if (isNull(csNode) && !ci_equal(nodeValue, WKTConstants::PROJCS) &&
|
||||
!ci_equal(nodeValue, WKTConstants::BASEPROJCRS)) {
|
||||
ThrowMissing(WKTConstants::CS_);
|
||||
}
|
||||
auto cs = buildCS(csNode, node, UnitOfMeasure::NONE);
|
||||
auto cartesianCS = nn_dynamic_pointer_cast<CartesianCS>(cs);
|
||||
: buildProjection(baseGeodCRS, node, projectionNode, linearUnit,
|
||||
angularUnit);
|
||||
|
||||
// No explicit AXIS node ? (WKT1)
|
||||
if (isNull(nodeP->lookForChild(WKTConstants::AXIS))) {
|
||||
@@ -3755,6 +3813,12 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) {
|
||||
ThrowNotExpectedCSType("Cartesian");
|
||||
}
|
||||
|
||||
if (cartesianCS->axisList().size() == 3 &&
|
||||
baseGeodCRS->coordinateSystem()->axisList().size() == 2) {
|
||||
baseGeodCRS = NN_NO_CHECK(util::nn_dynamic_pointer_cast<GeodeticCRS>(
|
||||
baseGeodCRS->promoteTo3D(std::string(), dbContext_)));
|
||||
}
|
||||
|
||||
addExtensionProj4ToProp(nodeP, props);
|
||||
|
||||
return ProjectedCRS::create(props, baseGeodCRS, conversion,
|
||||
@@ -4039,6 +4103,52 @@ WKTParser::Private::buildCompoundCRS(const WKTNodeNNPtr &node) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
static CRSNNPtr
|
||||
createBoundCRSSourceTransformationCRS(const crs::CRSPtr &sourceCRS,
|
||||
const crs::CRSPtr &targetCRS) {
|
||||
CRSPtr sourceTransformationCRS;
|
||||
if (dynamic_cast<GeographicCRS *>(targetCRS.get())) {
|
||||
GeographicCRSPtr sourceGeographicCRS =
|
||||
sourceCRS->extractGeographicCRS();
|
||||
sourceTransformationCRS = sourceGeographicCRS;
|
||||
if (sourceGeographicCRS) {
|
||||
if (sourceGeographicCRS->datum() != nullptr &&
|
||||
sourceGeographicCRS->primeMeridian()
|
||||
->longitude()
|
||||
.getSIValue() != 0.0) {
|
||||
sourceTransformationCRS =
|
||||
GeographicCRS::create(
|
||||
util::PropertyMap().set(
|
||||
common::IdentifiedObject::NAME_KEY,
|
||||
sourceGeographicCRS->nameStr() +
|
||||
" (with Greenwich prime meridian)"),
|
||||
datum::GeodeticReferenceFrame::create(
|
||||
util::PropertyMap().set(
|
||||
common::IdentifiedObject::NAME_KEY,
|
||||
sourceGeographicCRS->datum()->nameStr() +
|
||||
" (with Greenwich prime meridian)"),
|
||||
sourceGeographicCRS->datum()->ellipsoid(),
|
||||
util::optional<std::string>(),
|
||||
datum::PrimeMeridian::GREENWICH),
|
||||
sourceGeographicCRS->coordinateSystem())
|
||||
.as_nullable();
|
||||
}
|
||||
} else {
|
||||
sourceTransformationCRS =
|
||||
std::dynamic_pointer_cast<VerticalCRS>(sourceCRS);
|
||||
if (!sourceTransformationCRS) {
|
||||
throw ParsingException(
|
||||
"Cannot find GeographicCRS or VerticalCRS in sourceCRS");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sourceTransformationCRS = sourceCRS;
|
||||
}
|
||||
return NN_NO_CHECK(sourceTransformationCRS);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
BoundCRSNNPtr WKTParser::Private::buildBoundCRS(const WKTNodeNNPtr &node) {
|
||||
const auto *nodeP = node->GP();
|
||||
auto &abridgedNode =
|
||||
@@ -4082,23 +4192,10 @@ BoundCRSNNPtr WKTParser::Private::buildBoundCRS(const WKTNodeNNPtr &node) {
|
||||
consumeParameters(abridgedNode, true, parameters, values, defaultLinearUnit,
|
||||
defaultAngularUnit);
|
||||
|
||||
CRSPtr sourceTransformationCRS;
|
||||
if (dynamic_cast<GeographicCRS *>(targetCRS.get())) {
|
||||
sourceTransformationCRS = sourceCRS->extractGeographicCRS();
|
||||
if (!sourceTransformationCRS) {
|
||||
sourceTransformationCRS =
|
||||
std::dynamic_pointer_cast<VerticalCRS>(sourceCRS);
|
||||
if (!sourceTransformationCRS) {
|
||||
throw ParsingException(
|
||||
"Cannot find GeographicCRS or VerticalCRS in sourceCRS");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sourceTransformationCRS = sourceCRS;
|
||||
}
|
||||
|
||||
const auto sourceTransformationCRS(
|
||||
createBoundCRSSourceTransformationCRS(sourceCRS, targetCRS));
|
||||
auto transformation = Transformation::create(
|
||||
buildProperties(abridgedNode), NN_NO_CHECK(sourceTransformationCRS),
|
||||
buildProperties(abridgedNode), sourceTransformationCRS,
|
||||
NN_NO_CHECK(targetCRS), nullptr, buildProperties(methodNode),
|
||||
parameters, values, std::vector<PositionalAccuracyNNPtr>());
|
||||
|
||||
@@ -4343,7 +4440,28 @@ CRSPtr WKTParser::Private::buildCRS(const WKTNodeNNPtr &node) {
|
||||
if (ci_equal(name, WKTConstants::PROJCS) ||
|
||||
ci_equal(name, WKTConstants::PROJCRS) ||
|
||||
ci_equal(name, WKTConstants::PROJECTEDCRS)) {
|
||||
return util::nn_static_pointer_cast<CRS>(buildProjectedCRS(node));
|
||||
auto projCRS =
|
||||
util::nn_static_pointer_cast<CRS>(buildProjectedCRS(node));
|
||||
auto projString = projCRS->getExtensionProj4();
|
||||
if (starts_with(projString, "+proj=ob_tran +o_proj=longlat") ||
|
||||
starts_with(projString, "+proj=ob_tran +o_proj=lonlat") ||
|
||||
starts_with(projString, "+proj=ob_tran +o_proj=latlong") ||
|
||||
starts_with(projString, "+proj=ob_tran +o_proj=latlon")) {
|
||||
// Those are not a projected CRS, but a DerivedGeographic one...
|
||||
if (projString.find(" +type=crs") == std::string::npos) {
|
||||
projString += " +type=crs";
|
||||
}
|
||||
try {
|
||||
auto projObj =
|
||||
PROJStringParser().createFromPROJString(projString);
|
||||
auto crs = nn_dynamic_pointer_cast<CRS>(projObj);
|
||||
if (crs) {
|
||||
return crs;
|
||||
}
|
||||
} catch (const io::ParsingException &) {
|
||||
}
|
||||
}
|
||||
return projCRS.as_nullable();
|
||||
}
|
||||
|
||||
if (ci_equal(name, WKTConstants::VERT_CS) ||
|
||||
@@ -5244,24 +5362,11 @@ BoundCRSNNPtr JSONParser::buildBoundCRS(const json &j) {
|
||||
values.emplace_back(ParameterValue::create(getMeasure(param)));
|
||||
}
|
||||
|
||||
CRSPtr sourceTransformationCRS;
|
||||
if (dynamic_cast<GeographicCRS *>(targetCRS.get())) {
|
||||
sourceTransformationCRS = sourceCRS->extractGeographicCRS();
|
||||
if (!sourceTransformationCRS) {
|
||||
sourceTransformationCRS =
|
||||
std::dynamic_pointer_cast<VerticalCRS>(sourceCRS.as_nullable());
|
||||
if (!sourceTransformationCRS) {
|
||||
throw ParsingException(
|
||||
"Cannot find GeographicCRS or VerticalCRS in sourceCRS");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sourceTransformationCRS = sourceCRS;
|
||||
}
|
||||
|
||||
const auto sourceTransformationCRS(
|
||||
createBoundCRSSourceTransformationCRS(sourceCRS, targetCRS));
|
||||
auto transformation = Transformation::create(
|
||||
buildProperties(transformationJ), NN_NO_CHECK(sourceTransformationCRS),
|
||||
targetCRS, nullptr, buildProperties(methodJ), parameters, values,
|
||||
buildProperties(transformationJ), sourceTransformationCRS, targetCRS,
|
||||
nullptr, buildProperties(methodJ), parameters, values,
|
||||
std::vector<PositionalAccuracyNNPtr>());
|
||||
|
||||
return BoundCRS::create(sourceCRS, targetCRS, transformation);
|
||||
@@ -8495,6 +8600,9 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
auto &step = steps_[iStep];
|
||||
auto mappings = getMappingsFromPROJName(step.name);
|
||||
const MethodMapping *mapping = mappings.empty() ? nullptr : mappings[0];
|
||||
if (mapping) {
|
||||
mapping = selectSphericalOrEllipsoidal(mapping, geogCRS);
|
||||
}
|
||||
|
||||
assert(isProjectedStep(step.name));
|
||||
assert(iUnitConvert < 0 ||
|
||||
@@ -8511,6 +8619,7 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
|
||||
auto axisType = AxisType::REGULAR;
|
||||
bool bWebMercator = false;
|
||||
std::string webMercatorName("WGS 84 / Pseudo-Mercator");
|
||||
|
||||
if (step.name == "tmerc" &&
|
||||
((getParamValue(step, "axis") == "wsu" && iAxisSwap < 0) ||
|
||||
@@ -8540,8 +8649,6 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
}
|
||||
} else if (step.name == "aeqd" && hasParamValue(step, "guam")) {
|
||||
mapping = getMapping(EPSG_CODE_METHOD_GUAM_PROJECTION);
|
||||
} else if (step.name == "cea" && !geogCRS->ellipsoid()->isSphere()) {
|
||||
mapping = getMapping(EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA);
|
||||
} else if (step.name == "geos" && getParamValue(step, "sweep") == "x") {
|
||||
mapping =
|
||||
getMapping(PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_X);
|
||||
@@ -8601,6 +8708,11 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
getAngularValue(getParamValue(step, "x_0")) == 0.0 &&
|
||||
getAngularValue(getParamValue(step, "y_0")) == 0.0) {
|
||||
bWebMercator = true;
|
||||
if (hasParamValue(step, "units") &&
|
||||
getParamValue(step, "units") != "m") {
|
||||
webMercatorName +=
|
||||
" (unit " + getParamValue(step, "units") + ')';
|
||||
}
|
||||
}
|
||||
} else if (hasParamValue(step, "lat_ts")) {
|
||||
mapping = getMapping(EPSG_CODE_METHOD_MERCATOR_VARIANT_B);
|
||||
@@ -8647,15 +8759,6 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
axisType = AxisType::SOUTH_POLE;
|
||||
}
|
||||
}
|
||||
if (geogCRS->ellipsoid()->isSphere()) {
|
||||
mapping = getMapping(
|
||||
EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA_SPHERICAL);
|
||||
}
|
||||
} else if (step.name == "eqc") {
|
||||
if (geogCRS->ellipsoid()->isSphere()) {
|
||||
mapping =
|
||||
getMapping(EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL_SPHERICAL);
|
||||
}
|
||||
}
|
||||
|
||||
UnitOfMeasure unit = buildUnit(step, "units", "to_meter");
|
||||
@@ -8734,22 +8837,43 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
|
||||
} else if (param->unit_type == UnitOfMeasure::Type::SCALE) {
|
||||
value = 1;
|
||||
} else {
|
||||
// For omerc, if gamma is missing, the default value is
|
||||
// alpha
|
||||
if (step.name == "omerc" && proj_name == "gamma") {
|
||||
paramValue = &getParamValue(step, "alpha");
|
||||
if (!paramValue->empty()) {
|
||||
value = getAngularValue(*paramValue);
|
||||
}
|
||||
// For omerc, if gamma is missing, the default value is
|
||||
// alpha
|
||||
else if (step.name == "omerc" && proj_name == "gamma") {
|
||||
paramValue = &getParamValue(step, "alpha");
|
||||
if (!paramValue->empty()) {
|
||||
value = getAngularValue(*paramValue);
|
||||
}
|
||||
} else if (step.name == "krovak") {
|
||||
if (param->epsg_code ==
|
||||
EPSG_CODE_PARAMETER_COLATITUDE_CONE_AXIS) {
|
||||
value = 30.28813975277777776;
|
||||
} else if (
|
||||
param->epsg_code ==
|
||||
EPSG_CODE_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL) {
|
||||
value = 78.5;
|
||||
}
|
||||
} else if (step.name == "cea" && proj_name == "lat_ts") {
|
||||
paramValue = &getParamValueK(step);
|
||||
if (!paramValue->empty()) {
|
||||
bool hasError = false;
|
||||
const double k = getNumericValue(*paramValue, &hasError);
|
||||
if (hasError) {
|
||||
throw ParsingException("invalid value for k/k_0");
|
||||
}
|
||||
} else if (step.name == "krovak") {
|
||||
if (param->epsg_code ==
|
||||
EPSG_CODE_PARAMETER_COLATITUDE_CONE_AXIS) {
|
||||
value = 30.28813975277777776;
|
||||
} else if (
|
||||
param->epsg_code ==
|
||||
EPSG_CODE_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL) {
|
||||
value = 78.5;
|
||||
if (k >= 0 && k <= 1) {
|
||||
const double es =
|
||||
geogCRS->ellipsoid()->squaredEccentricity();
|
||||
if (es < 0) {
|
||||
throw ParsingException("Invalid flattening");
|
||||
}
|
||||
value =
|
||||
Angle(acos(k * sqrt((1 - es) / (1 - k * k * es))),
|
||||
UnitOfMeasure::RADIAN)
|
||||
.convertToUnit(UnitOfMeasure::DEGREE);
|
||||
} else {
|
||||
throw ParsingException("k/k_0 should be in [0,1]");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8872,8 +8996,8 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
|
||||
CRSNNPtr crs =
|
||||
bWebMercator
|
||||
? createPseudoMercator(props.set(IdentifiedObject::NAME_KEY,
|
||||
"WGS 84 / Pseudo-Mercator"))
|
||||
? createPseudoMercator(
|
||||
props.set(IdentifiedObject::NAME_KEY, webMercatorName), cs)
|
||||
: ProjectedCRS::create(props, geogCRS, NN_NO_CHECK(conv), cs);
|
||||
|
||||
if (!hasParamValue(step, "geoidgrids") &&
|
||||
@@ -9028,7 +9152,7 @@ PROJStringParser::createFromPROJString(const std::string &projString) {
|
||||
bool hasSignificantParamValues = false;
|
||||
for (const auto &kv : d->steps_[0].paramValues) {
|
||||
if (!((kv.key == "type" && kv.value == "crs") ||
|
||||
kv.key == "no_defs")) {
|
||||
kv.key == "wktext" || kv.key == "no_defs")) {
|
||||
hasSignificantParamValues = true;
|
||||
break;
|
||||
}
|
||||
@@ -9057,7 +9181,7 @@ PROJStringParser::createFromPROJString(const std::string &projString) {
|
||||
auto projCRS = dynamic_cast<ProjectedCRS *>(crs);
|
||||
if (projCRS) {
|
||||
// Override with easting northing order
|
||||
const auto &conv = projCRS->derivingConversionRef();
|
||||
const auto conv = projCRS->derivingConversion();
|
||||
if (conv->method()->getEPSGCode() !=
|
||||
EPSG_CODE_METHOD_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED) {
|
||||
return ProjectedCRS::create(
|
||||
@@ -9235,12 +9359,17 @@ PROJStringParser::createFromPROJString(const std::string &projString) {
|
||||
if (!pj_context) {
|
||||
throw ParsingException("out of memory");
|
||||
}
|
||||
|
||||
// Backup error logger and level, and install temporary handler
|
||||
auto old_logger = pj_context->logger;
|
||||
auto old_logger_app_data = pj_context->logger_app_data;
|
||||
auto log_level = proj_log_level(pj_context, PJ_LOG_ERROR);
|
||||
proj_log_func(pj_context, &logger, Logger::log);
|
||||
|
||||
if (pj_context != d->ctx_) {
|
||||
proj_log_func(pj_context, &logger, Logger::log);
|
||||
proj_context_use_proj4_init_rules(pj_context, d->usePROJ4InitRules_);
|
||||
}
|
||||
pj_context->projStringParserCreateFromPROJStringRecursionCounter++;
|
||||
auto log_level = proj_log_level(pj_context, PJ_LOG_NONE);
|
||||
auto pj = pj_create_internal(
|
||||
pj_context, (projString.find("type=crs") != std::string::npos
|
||||
? projString + " +disable_grid_presence_check"
|
||||
@@ -9248,7 +9377,11 @@ PROJStringParser::createFromPROJString(const std::string &projString) {
|
||||
.c_str());
|
||||
pj_context->projStringParserCreateFromPROJStringRecursionCounter--;
|
||||
valid = pj != nullptr;
|
||||
|
||||
// Restore initial error logger and level
|
||||
proj_log_level(pj_context, log_level);
|
||||
pj_context->logger = old_logger;
|
||||
pj_context->logger_app_data = old_logger_app_data;
|
||||
|
||||
// Remove parameters not understood by PROJ.
|
||||
if (valid && d->steps_.size() == 1) {
|
||||
@@ -9310,13 +9443,13 @@ PROJStringParser::createFromPROJString(const std::string &projString) {
|
||||
proj_destroy(pj);
|
||||
|
||||
if (!valid) {
|
||||
std::string prefix("Error " + toString(proj_context_errno(pj_context)) +
|
||||
": ");
|
||||
const int l_errno = proj_context_errno(pj_context);
|
||||
std::string prefix("Error " + toString(l_errno) + " (" +
|
||||
proj_errno_string(l_errno) + ")");
|
||||
if (logger.msg.empty()) {
|
||||
logger.msg =
|
||||
prefix + proj_errno_string(proj_context_errno(pj_context));
|
||||
logger.msg = prefix;
|
||||
} else {
|
||||
logger.msg = prefix + logger.msg;
|
||||
logger.msg = prefix + ": " + logger.msg;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9476,7 +9609,7 @@ JSONFormatter::~JSONFormatter() = default;
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
CPLJSonStreamingWriter &JSONFormatter::writer() const { return d->writer_; }
|
||||
CPLJSonStreamingWriter *JSONFormatter::writer() const { return &(d->writer_); }
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -38,6 +38,8 @@
|
||||
#include "proj/internal/internal.hpp"
|
||||
#include "proj/internal/io_internal.hpp"
|
||||
|
||||
#include "proj_json_streaming_writer.hpp"
|
||||
|
||||
#include <algorithm>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
@@ -1102,15 +1104,15 @@ void Identifier::_exportToJSON(JSONFormatter *formatter) const {
|
||||
const std::string &l_code = code();
|
||||
const std::string &l_codeSpace = *codeSpace();
|
||||
if (!l_codeSpace.empty() && !l_code.empty()) {
|
||||
auto &writer = formatter->writer();
|
||||
auto writer = formatter->writer();
|
||||
auto objContext(formatter->MakeObjectContext(nullptr, false));
|
||||
writer.AddObjKey("authority");
|
||||
writer.Add(l_codeSpace);
|
||||
writer.AddObjKey("code");
|
||||
writer->AddObjKey("authority");
|
||||
writer->Add(l_codeSpace);
|
||||
writer->AddObjKey("code");
|
||||
try {
|
||||
writer.Add(std::stoi(l_code));
|
||||
writer->Add(std::stoi(l_code));
|
||||
} catch (const std::exception &) {
|
||||
writer.Add(l_code);
|
||||
writer->Add(l_code);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -406,6 +406,16 @@ PJ *OPERATION(pipeline,0) {
|
||||
int i_pipeline = -1, i_first_step = -1, i_current_step;
|
||||
char **argv, **current_argv;
|
||||
|
||||
if( P->ctx->pipelineInitRecursiongCounter == 5 )
|
||||
{
|
||||
// Can happen for a string like:
|
||||
// proj=pipeline step "x="""," u=" proj=pipeline step ste=""[" u=" proj=pipeline step ste="[" u=" proj=pipeline step ste="[" u=" proj=pipeline step ste="[" u=" proj=pipeline step ste="[" u=" proj=pipeline step ste="[" u=" proj=pipeline step ste="[" u=" proj=pipeline step ste="[" u=" proj=pipeline p step ste="[" u=" proj=pipeline step ste="[" u=" proj=pipeline step ste="[" u=" proj=pipeline step ste="[" u=" proj=pipeline step ""x="""""""""""
|
||||
// Probably an issue with the quoting handling code
|
||||
// But doesn't hurt to add an extra safety check
|
||||
proj_log_error (P, "Pipeline: too deep recursion");
|
||||
return destructor (P, PJD_ERR_MALFORMED_PIPELINE); /* ERROR: nested pipelines */
|
||||
}
|
||||
|
||||
P->fwd4d = pipeline_forward_4d;
|
||||
P->inv4d = pipeline_reverse_4d;
|
||||
P->fwd3d = pipeline_forward_3d;
|
||||
@@ -495,7 +505,9 @@ PJ *OPERATION(pipeline,0) {
|
||||
|
||||
err = proj_errno_reset (P);
|
||||
|
||||
P->ctx->pipelineInitRecursiongCounter ++;
|
||||
next_step = pj_create_argv_internal (P->ctx, current_argc, current_argv);
|
||||
P->ctx->pipelineInitRecursiongCounter --;
|
||||
proj_log_trace (P, "Pipeline: Step %d (%s) at %p", i, current_argv[0], next_step);
|
||||
|
||||
if (nullptr==next_step) {
|
||||
|
||||
+1
-1
@@ -154,7 +154,7 @@ extern "C" {
|
||||
/* The version numbers should be updated with every release! **/
|
||||
#define PROJ_VERSION_MAJOR 6
|
||||
#define PROJ_VERSION_MINOR 3
|
||||
#define PROJ_VERSION_PATCH 0
|
||||
#define PROJ_VERSION_PATCH 3
|
||||
|
||||
extern char const PROJ_DLL pj_release[]; /* global release id string */
|
||||
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef PJ_VERSION
|
||||
#define PJ_VERSION 630
|
||||
#define PJ_VERSION 633
|
||||
#endif
|
||||
|
||||
#ifdef PROJ_RENAME_SYMBOLS
|
||||
|
||||
@@ -511,11 +511,15 @@
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
#define EPSG_CODE_METHOD_VERTCON 9658
|
||||
#define EPSG_NAME_METHOD_VERTCON "VERTCON"
|
||||
#define EPSG_NAME_METHOD_VERTCON_OLDNAME "VERTCON"
|
||||
#define EPSG_NAME_METHOD_VERTCON "Vertical Offset by Grid Interpolation (VERTCON)"
|
||||
|
||||
#define EPSG_CODE_METHOD_VERTICALGRID_NZLVD 1071
|
||||
#define EPSG_NAME_METHOD_VERTICALGRID_NZLVD "Vertical Offset by Grid Interpolation (NZLVD)"
|
||||
|
||||
#define EPSG_CODE_METHOD_VERTICALGRID_GTX 1084
|
||||
#define EPSG_NAME_METHOD_VERTICALGRID_GTX "Vertical Offset by Grid Interpolation (gtx)"
|
||||
|
||||
#define EPSG_NAME_PARAMETER_VERTICAL_OFFSET_FILE "Vertical offset file"
|
||||
#define EPSG_CODE_PARAMETER_VERTICAL_OFFSET_FILE 8732
|
||||
|
||||
|
||||
@@ -711,6 +711,7 @@ struct projCtx_t {
|
||||
void* file_finder_user_data = nullptr;
|
||||
|
||||
int projStringParserCreateFromPROJStringRecursionCounter = 0; // to avoid potential infinite recursion in PROJStringParser::createFromPROJString()
|
||||
int pipelineInitRecursiongCounter = 0; // to avoid potential infinite recursion in pipeline.cpp
|
||||
|
||||
projCtx_t() = default;
|
||||
projCtx_t(const projCtx_t&);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user