Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1da380dc0c | ||
|
|
01321f61c4 | ||
|
|
3475c76fc6 | ||
|
|
da953c042e | ||
|
|
5113b00d01 | ||
|
|
4c39aa63fd | ||
|
|
4e356ecad6 | ||
|
|
90189a594d | ||
|
|
a049985cac | ||
|
|
8d0b84bd72 | ||
|
|
e8d2f811b4 | ||
|
|
fb9c269f4f | ||
|
|
ac2762b581 | ||
|
|
bce4b158ab | ||
|
|
6b067b1190 | ||
|
|
8fd8024518 | ||
|
|
e4045d66ec | ||
|
|
6ed02f5a84 | ||
|
|
5d87ea0e97 | ||
|
|
2ab603d262 | ||
|
|
d0b5e070b9 | ||
|
|
a13e7646a9 | ||
|
|
d5e5c96b46 | ||
|
|
f970636daa | ||
|
|
67ee557a66 | ||
|
|
8fdd512ea8 | ||
|
|
6e58a6f906 | ||
|
|
564d0a9fcc | ||
|
|
f0e9f1e2f0 | ||
|
|
da5bd4b704 | ||
|
|
86c24e0bcd | ||
|
|
2b96d78884 | ||
|
|
2637f3c52c | ||
|
|
29c2c5cfbd | ||
|
|
97a468bbbe | ||
|
|
f95d199570 | ||
|
|
1e6d233d05 | ||
|
|
c89abf2873 | ||
|
|
72dd7b0fbb | ||
|
|
970946b566 | ||
|
|
1acb10c65f | ||
|
|
0d96216201 | ||
|
|
45b2d5ff3b | ||
|
|
45b36ca276 | ||
|
|
0ff8ccf939 | ||
|
|
d6bacb9197 | ||
|
|
c206d14f68 | ||
|
|
e53e4c761c | ||
|
|
9e1e248cbb | ||
|
|
e5b6a41f19 | ||
|
|
f96f8ef4ff | ||
|
|
6976050e23 | ||
|
|
f94f1ddeaa | ||
|
|
00bac075a1 | ||
|
|
117ddfdc7f | ||
|
|
9d29cd4901 | ||
|
|
5a641f872b | ||
|
|
c9c72da7a8 | ||
|
|
572433ec4d | ||
|
|
ad2ae23edc | ||
|
|
2bc1e2e1a9 | ||
|
|
0edea5f44f | ||
|
|
dca0125b0d | ||
|
|
02f0500dbf | ||
|
|
91bcfd3e00 | ||
|
|
29b17b5e38 | ||
|
|
c1ef192087 | ||
|
|
168e5d4b53 | ||
|
|
07bbf14615 | ||
|
|
43ee3c7f54 | ||
|
|
8238b66c07 | ||
|
|
8e461c373a | ||
|
|
f0c148abf3 | ||
|
|
9ddf2d4ced | ||
|
|
1f66818745 | ||
|
|
b0b21db45f | ||
|
|
668d882938 | ||
|
|
36fb1cb5d7 | ||
|
|
be819a1340 | ||
|
|
7806af71e8 | ||
|
|
3854668626 | ||
|
|
3671063a1c | ||
|
|
ae22375bb4 | ||
|
|
a2a098dd9d | ||
|
|
02919fb712 | ||
|
|
39ed5dda17 | ||
|
|
b66081ceef | ||
|
|
f38eb52f1f | ||
|
|
2d783ecc18 | ||
|
|
bf53610d87 | ||
|
|
374f934014 | ||
|
|
9fc5330398 | ||
|
|
d2ba2915ed | ||
|
|
ae6f1a1760 | ||
|
|
03a01adf6c | ||
|
|
bc662fef4c | ||
|
|
355f43ca41 | ||
|
|
1aaca77c2a | ||
|
|
83a14b87ae | ||
|
|
e35aa372af | ||
|
|
73042b0139 | ||
|
|
e5a1ea29ca | ||
|
|
9e5807499c | ||
|
|
b7e7a3bd4a | ||
|
|
eb5906bb14 | ||
|
|
bb1cac55e3 | ||
|
|
f168e2397e | ||
|
|
29a5cae676 | ||
|
|
0316dc2b42 | ||
|
|
8fb0f77ca5 | ||
|
|
db6fdacc11 | ||
|
|
ea185460fa | ||
|
|
f2d44f3a2e | ||
|
|
947b4ae116 | ||
|
|
c87d0016e4 | ||
|
|
3f07b9e0fa | ||
|
|
9e1e008830 | ||
|
|
5172637ea7 | ||
|
|
8d914ab177 | ||
|
|
3eb5780832 | ||
|
|
99a32f5734 | ||
|
|
03bb6478e4 | ||
|
|
cbb4a78920 | ||
|
|
b0c17a4075 | ||
|
|
04cd73cab9 | ||
|
|
87c90fcaa8 | ||
|
|
75aa2e9d03 | ||
|
|
ba0c3c3bf8 | ||
|
|
8db35665e0 | ||
|
|
1098a06c48 | ||
|
|
31509e8ceb | ||
|
|
6ef8650a60 | ||
|
|
973190a95a | ||
|
|
89d9cc6aa9 | ||
|
|
38119a4f2b | ||
|
|
9e4088ac96 |
@@ -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.2 -- 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
|
||||
@@ -95,9 +95,9 @@ colormsg(_HIBLUE_ "Configuring PROJ:")
|
||||
#PROJ version information
|
||||
################################################################################
|
||||
include(ProjVersion)
|
||||
proj_version(MAJOR 6 MINOR 2 PATCH 0)
|
||||
proj_version(MAJOR 6 MINOR 2 PATCH 1)
|
||||
set(PROJ_API_VERSION "17")
|
||||
set(PROJ_BUILD_VERSION "17.0.2")
|
||||
set(PROJ_BUILD_VERSION "17.1.2")
|
||||
|
||||
################################################################################
|
||||
# Build features and variants
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to make participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
||||
level of experience, education, socio-economic status, nationality, personal
|
||||
appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all project spaces, and it also applies when
|
||||
an individual is representing the project or its community in public spaces.
|
||||
Examples of representing a project or community include using an official
|
||||
project e-mail address, posting via an official social media account, or acting
|
||||
as an appointed representative at an online or offline event. Representation of
|
||||
a project may be further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting the project team at [kristianevers@gmail.com](mailto:kristianevers@gmail.com). All
|
||||
complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. The project team is
|
||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||
Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see
|
||||
https://www.contributor-covenant.org/faq
|
||||
|
||||
@@ -243,3 +243,6 @@ If the previous active version was, let's say, 6.1 and the new version is, let's
|
||||
then checkout 6.1 branch, and in travis/after_success.sh, remove the code
|
||||
that causes commits to 6.1 to cause a website refresh, that is remove the
|
||||
code under `if test "$TRAVIS_SECURE_ENV_VARS" = "true" -a "$TRAVIS_BRANCH" = "6.1"; then`.
|
||||
|
||||
Also edit docs/source/conf.py to change the active branch for documentation
|
||||
in the `github_version` variable.
|
||||
|
||||
@@ -1,3 +1,83 @@
|
||||
6.2.1 Release Notes
|
||||
-------------------
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
o Update the EPSG database to version 9.8.2
|
||||
|
||||
Bug fixes
|
||||
-------
|
||||
|
||||
o Fixed erroneous spelling of "Potsdam" (#1573)
|
||||
|
||||
o Calculate y-coordinate correctly in bertin1953 in all cases (#1579)
|
||||
|
||||
o proj_create_crs_to_crs_from_pj(): make the PJ* arguments const PJ* (#1583)
|
||||
|
||||
o PROJStringParser::createFromPROJString(): avoid potential infinite
|
||||
recursion (#1574)
|
||||
|
||||
o Avoid core dump when setting ctx==NULL in functions
|
||||
proj_coordoperation_is_instantiable and
|
||||
proj_coordoperation_has_ballpark_transformation (#1590)
|
||||
|
||||
o createOperations(): fix conversion from/to PROJ.4 CRS strings with
|
||||
non-ISO-kosher options and +towgs84/+nadgrids (#1602)
|
||||
|
||||
o proj_trans_generic(): properly set coordinate time to HUGE_VAL when no
|
||||
value is passed to the function (#1604)
|
||||
|
||||
o Fix support for +proj=ob_tran +o_proj=lonlat/latlong/latlon instead of only
|
||||
only allowing +o_proj=longlat (#1601)
|
||||
|
||||
o Improve backwards compatibility of vertical transforms (#1613)
|
||||
|
||||
o Improve emulation of deprecated +init style initialization (#1614)
|
||||
|
||||
o cs2cs: autopromote CRS to 3D when there's a mix of 2D and 3D (#1563)
|
||||
|
||||
o Avoid divisions by zero in odd situations (#1620)
|
||||
|
||||
o Avoid compile error on Solaris (#1639)
|
||||
|
||||
o proj_create_crs_to_crs(): fix when there are only transformations with
|
||||
ballpark steps (#1643)
|
||||
|
||||
o PROJ string CRS ingester: recognize more unit-less parameters, and general
|
||||
handling of +key=string_value parameters (#1645)
|
||||
|
||||
o Only call pkg-config in configure when necessary (#1652)
|
||||
|
||||
o aeqd: for spherical forward path, go to higher precision ellipsoidal
|
||||
case when the point coordinates are super close to the origin (#1654)
|
||||
|
||||
o proj_create_crs_to_crs(): remove elimination of Ballpark operations
|
||||
that caused transformation failures in some cases (#1665)
|
||||
|
||||
o createOperations(): allow transforming from a compoundCRS of a bound
|
||||
verticalCRS to a 2D CRS (#1667)
|
||||
|
||||
o Avoid segfaults in case of out-of-memory situations (#1679)
|
||||
|
||||
o createOperations(): fix double vertical unit conversion from CompoundCRS
|
||||
to other CRS when the horizontal part of the projected CRS uses non-metre
|
||||
unit (#1683)
|
||||
|
||||
o importFromWkt(): fix axis orientation for non-standard ESRI WKT (#1690)
|
||||
|
||||
|
||||
THANKS TO
|
||||
---------
|
||||
|
||||
R. Schmunk
|
||||
Jakob Egger
|
||||
Alan D. Snow
|
||||
Stephan Hügel
|
||||
Kai Pastor
|
||||
Kristian Evers
|
||||
Even Rouault
|
||||
|
||||
6.2.0 Release Notes
|
||||
-------------------
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
# PROJ
|
||||
|
||||
[](https://travis-ci.com/OSGeo/PROJ)
|
||||
[](https://ci.appveyor.com/project/OSGeo/PROJ)
|
||||
[](https://coveralls.io/github/OSGeo/PROJ?branch=master)
|
||||
[](https://travis-ci.com/OSGeo/PROJ)
|
||||
[](https://ci.appveyor.com/project/OSGeo/PROJ?branch=6.2)
|
||||
[](https://coveralls.io/github/OSGeo/PROJ?branch=6.2)
|
||||
[](https://gitter.im/OSGeo/proj.4)
|
||||
[](http://lists.osgeo.org/mailman/listinfo/proj)
|
||||
[](code-of-conduct.md)
|
||||
|
||||
PROJ is a generic coordinate transformation software, that transforms
|
||||
coordinates from one coordinate reference system (CRS) to another.
|
||||
@@ -22,18 +23,21 @@ See the NEWS file for changes between versions.
|
||||
|
||||
The following command line utilities are included in the PROJ package:
|
||||
|
||||
- proj, for cartographic projection of geodetic coordinates
|
||||
- cs2cs, for transformation from one CRS to another CRS.
|
||||
- geod, for geodesic (great circle) computations.
|
||||
- cct, for generic Coordinate Conversions and Transformations.
|
||||
- gie, the Geospatial Integrity Investigation Environment.
|
||||
- projinfo, for geodetic object and coordinate operation queries
|
||||
- `proj`: for cartographic projection of geodetic coordinates
|
||||
- `cs2cs`: for transformation from one CRS to another CRS.
|
||||
- `geod`: for geodesic (great circle) computations.
|
||||
- `cct`: for generic Coordinate Conversions and Transformations.
|
||||
- `gie`: the Geospatial Integrity Investigation Environment.
|
||||
- `projinfo`: for geodetic object and coordinate operation queries
|
||||
|
||||
> More information on the utilities can be found on the [PROJ website](https://proj.org/apps).
|
||||
|
||||
## Installation
|
||||
### Build dependencies
|
||||
|
||||
PROJ requires C and C++11 compilers.
|
||||
It also requires SQLite3 (headers, library and executable).
|
||||
It also requires SQLite3 (headers, library and executable). The minimum
|
||||
version of SQLite3 required is 3.11
|
||||
|
||||
### Building with CMake
|
||||
|
||||
@@ -104,14 +108,14 @@ which will generate a configure script that can be used as described above.
|
||||
### Distribution files and format
|
||||
|
||||
Sources are distributed in one or more files. The principle elements
|
||||
of the system are in a compress tar file named `proj-x.y.z.tar.gz` where
|
||||
"x" will indicate major release number, "y" indicates minor release
|
||||
number and "z" indicates the patch number of the release.
|
||||
of the system are stored in a compressed tar file named `proj-x.y.z.tar.gz` where
|
||||
"x" will indicate the major release number, "y" indicates the minor release
|
||||
number, and "z" indicates the patch number of the release.
|
||||
|
||||
In addition to the PROJ software package, distributions of datum
|
||||
conversion grid files and PROJ parameter files are also available.
|
||||
The grid package is distributed under the name `proj-datumgrid-x.y.zip`,
|
||||
where "x" is the major release version and "y" the minor release
|
||||
where "x" is the major release version and "y" is the minor release
|
||||
version numbers. Similarly regional packages are distributed. The
|
||||
regional packages contain resources that are not essential to the
|
||||
functionality of PROJ but still of value to users in the region
|
||||
@@ -119,7 +123,7 @@ specific to the package. All grids that were in proj-datumgrids-1.6
|
||||
remain in proj-datumgrids-1.7; the regional datumgrid files contain
|
||||
grids for datums not previously supported (prior to PROJ 5.0.0).
|
||||
|
||||
The resource packages can be downloaded from the PROJ.4 website.
|
||||
The resource packages can be downloaded from the [PROJ website](https://proj.org/download.html).
|
||||
|
||||
More info on the contents of the various resource packages can be
|
||||
found at the
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT([PROJ], [6.2.0],
|
||||
AC_INIT([PROJ], [6.2.1],
|
||||
[https://github.com/OSGeo/PROJ/issues], proj, [https://proj.org])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_LANG(C)
|
||||
@@ -307,7 +307,9 @@ dnl ---------------------------------------------------------------------------
|
||||
dnl Check for sqlite3 library and binary
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= 3.7])
|
||||
if test "x$SQLITE3_CFLAGS$SQLITE3_LIBS" = "x" ; then
|
||||
PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= 3.7])
|
||||
fi
|
||||
AC_SUBST(SQLITE3_CFLAGS,$SQLITE3_CFLAGS)
|
||||
AC_SUBST(SQLITE3_LIBS,$SQLITE3_LIBS)
|
||||
|
||||
|
||||
@@ -32,24 +32,24 @@
|
||||
# Z. Altamimi et al, 2017, ITRF2014 plate motion model,
|
||||
# doi: 10.1093/gji/ggx136
|
||||
|
||||
<ANTA> +proj=helmert +drx=−0.000248 +dry=−0.000324 +drz=0.000675 +convention=position_vector
|
||||
<ANTA> +proj=helmert +drx=-0.000248 +dry=-0.000324 +drz=0.000675 +convention=position_vector
|
||||
|
||||
<ARAB> +proj=helmert +drx=0.001154 +dry=−0.000136 +drz=0.001444 +convention=position_vector
|
||||
<ARAB> +proj=helmert +drx=0.001154 +dry=-0.000136 +drz=0.001444 +convention=position_vector
|
||||
|
||||
<AUST> +proj=helmert +drx=0.001510 +dry=0.001182 +drz=0.001215 +convention=position_vector
|
||||
|
||||
<EURA> +proj=helmert +drx=−0.000085 +dry=−0.000531 +drz=0.000770 +convention=position_vector
|
||||
<EURA> +proj=helmert +drx=-0.000085 +dry=-0.000531 +drz=0.000770 +convention=position_vector
|
||||
|
||||
<INDI> +proj=helmert +drx=0.001154 +dry=−0.000005 +drz=0.001454 +convention=position_vector
|
||||
<INDI> +proj=helmert +drx=0.001154 +dry=-0.000005 +drz=0.001454 +convention=position_vector
|
||||
|
||||
<NAZC> +proj=helmert +drx=−0.000333 +dry=−0.001544 +drz=0.001623 +convention=position_vector
|
||||
<NAZC> +proj=helmert +drx=-0.000333 +dry=-0.001544 +drz=0.001623 +convention=position_vector
|
||||
|
||||
<NOAM> +proj=helmert +drx=0.000024 +dry=-0.000694 +drz=-0.000063 +convention=position_vector
|
||||
|
||||
<NUBI> +proj=helmert +drx=0.000099 +dry=−0.000614 +drz=0.000733 +convention=position_vector
|
||||
<NUBI> +proj=helmert +drx=0.000099 +dry=-0.000614 +drz=0.000733 +convention=position_vector
|
||||
|
||||
<PCFC> +proj=helmert +drx=−0.000409 +dry=0.001047 +drz=-0.002169 +convention=position_vector
|
||||
<PCFC> +proj=helmert +drx=-0.000409 +dry=0.001047 +drz=-0.002169 +convention=position_vector
|
||||
|
||||
<SOAM> +proj=helmert +drx=−0.000270 +dry=−0.000301 +drz=−0.000140 +convention=position_vector
|
||||
<SOAM> +proj=helmert +drx=-0.000270 +dry=-0.000301 +drz=-0.000140 +convention=position_vector
|
||||
|
||||
<SOMA> +proj=helmert +drx=−0.000121 +dry=−0.000794 +drz=0.000884 +convention=position_vector
|
||||
<SOMA> +proj=helmert +drx=-0.000121 +dry=-0.000794 +drz=0.000884 +convention=position_vector
|
||||
|
||||
@@ -8,7 +8,7 @@ INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6211','Genuk','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6218','Bogota','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6222','South Africa','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6227','Levant','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6269','NAD83 (1986)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6269','NAD83(1986)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6272','GD49','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6308','Rikets koordinatsystem 1938','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5100','MSL','EPSG');
|
||||
@@ -418,9 +418,13 @@ INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1215','SVS2010','EPSG')
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1036','RGM04','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1038','RGSPM06','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1216','SRB_VRS12','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6220','Camacupa','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1219','MVGC','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1218','MGD-2000','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1218','MTRF-2000','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1220','Rede Permanentes de Estaciones GNSS de Angola','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1220','RSAO13','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1220','REPANGOL','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1205','Zero Depth Point (ZDP)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1223','RGWF96','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1224','TWVD 2001','EPSG');
|
||||
@@ -463,8 +467,14 @@ INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1035','REGCAN95','EPSG'
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6761','HTRS96','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1047','RRAF91','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1251','KOSOVAREF12','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6269','NAD83(Original)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1221','NAD83(MARP00)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1249','NAD83(PACP00)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1064','SIRGAS-Chile 2002','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1251','KOSOVAREF01','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1251','KOSOVAREF01 (2012)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1252','SIRGAS-Chile 2013','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1253','SIRGAS-Chile 2016','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1042','Red Geodesica Nacional 1992','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1046','Morro do Papagaio','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1046','Island of Principe datum','EPSG');
|
||||
|
||||
@@ -299,7 +299,7 @@ INSERT INTO "area" VALUES('EPSG','1319','Venezuela - Maracaibo area','Venezuela
|
||||
INSERT INTO "area" VALUES('EPSG','1320','Venezuela - Maturin','Venezuela - Maturin area.',9.1,10.13,-64.3,-63.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1321','Europe - Austria and former Yugoslavia onshore','Austria. Bosnia and Herzegovina. Croatia - onshore. Kosovo. Montenegro - onshore. North Macedonia. Serbia. Slovenia - onshore.',40.85,49.02,9.53,23.04,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1322','Trinidad and Tobago - Tobago - onshore','Trinidad and Tobago - Tobago - onshore.',11.08,11.41,-60.9,-60.44,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1323','USA - CONUS - onshore','United States (USA) - onshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming.',24.41,49.38,-124.79,-66.91,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1323','USA - CONUS - onshore','United States (USA) - CONUS onshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming.',24.41,49.38,-124.79,-66.91,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1324','USA (all states)','United States (USA) - onshore and offshore - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Hawaii; 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.',15.56,74.71,167.65,-65.69,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1325','North America - Canada and USA (CONUS, Alaska mainland)','North America - onshore and offshore: Canada - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon. United States (USA) - 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.',23.81,86.46,-172.54,-47.74,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1326','France - mainland onshore','France - mainland onshore.',42.33,51.14,-4.87,8.23,0);
|
||||
@@ -583,7 +583,7 @@ INSERT INTO "area" VALUES('EPSG','1603','Colombia - offshore Caribbean west of 7
|
||||
INSERT INTO "area" VALUES('EPSG','1604','Angola - Angola proper - offshore','Angola - Angola proper - offshore.',-17.26,-6.01,8.2,13.86,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1605','Angola - offshore block 15','Angola - offshore block 15.',-6.59,-6.03,10.83,11.67,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1606','Angola - Angola proper - offshore - west of 12°E','Angola - Angola proper - offshore - west of 12°E.',-17.26,-6.03,8.2,12.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1607','Angola - 12°E to 18°E','Angola - Angola proper between 12°E and 18°E.',-17.44,-5.82,12.0,18.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1607','Angola - Angola proper - 12°E to 18°E','Angola - Angola proper between 12°E and 18°E.',-17.44,-5.82,12.0,18.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1608','Argentina - west of 70.5°W','Argentina - west of 70°30''W.',-52.0,-36.16,-73.59,-70.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1609','Argentina - 70.5°W to 67.5°W onshore','Argentina - between 70°30''W and 67°30''W, onshore.',-54.9,-24.08,-70.5,-67.49,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1610','Argentina - 67.5°W to 64.5°W onshore','Argentina - between 67°30''W and 64°30''W, onshore.',-55.11,-21.78,-67.5,-64.49,0);
|
||||
@@ -1949,14 +1949,14 @@ INSERT INTO "area" VALUES('EPSG','2969','Mauritania - east of 6°W','Mauritania
|
||||
INSERT INTO "area" VALUES('EPSG','2970','Mauritania - 12°W to 6°W','Mauritania - between 12°W and 6°W.',14.75,27.3,-12.0,-6.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2971','Mauritania - west of 12°W onshore','Mauritania - onshore west of 12°W.',14.72,23.46,-17.08,-12.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2972','Mauritania - Nouakchutt','Mauritania - Nouakchutt.',17.89,18.25,-16.11,-15.83,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2973','USA - CONUS south of 41°N, west of 112°W - onshore','United States (USA) - CONUS south of 41°N and west of 112°W - onshore - Arizona; California; Nevada; Utah.',31.64,41.0,-124.45,-112.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2974','USA - CONUS south of 41°N, 112°W to 95°W - onshore','United States (USA) - CONUS south of 41°N and between 112°W and 95°W - onshore - Arizona; Colorado; Iowa; Kansas; Missouri; Nebraska; New Mexico; Oklahoma; Texas; Utah.',25.83,41.01,-112.0,-94.99,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2975','USA - CONUS south of 41°N, 95°W to 78°W - onshore','United States (USA) - CONUS south of 41°N and between 95°W and 78°W - onshore - Alabama; Arkansas; Florida; Georgia; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maryland; Mississippi; Missouri; North Carolina; Ohio; Oklahoma; Pennsylvania; South Carolina; Tennessee; Texas; Virginia; West Virginia.',24.41,41.01,-95.0,-77.99,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2976','USA - CONUS south of 41°N, east of 78°W - onshore','United States (USA) - CONUS south of 41°N and east of 78°W - onshore - Delaware; Maryland; New Jersey; New York; North Carolina; Pennsylvania; Virginia; West Virginia.',33.84,41.01,-78.0,-71.9,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2977','USA - CONUS north of 41°N, west of 112°W - onshore','United States (USA) - CONUS north of 41°N and west of 112°W - onshore - California; Idaho; Montana; Nevada; Oregon; Utah; Washington.',41.0,49.05,-124.79,-112.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2978','USA - CONUS north of 41°N, 112°W to 95°W','United States (USA) - CONUS north of 41°N and between 112°W and 95°W. Idaho; Iowa; Minnesota; Montana; Nebraska; North Dakota; South Dakota; Utah; Wyoming.',41.0,49.38,-112.0,-95.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2979','USA - CONUS north of 41°N, 95°W to 78°W','United States (USA) - CONUS north of 41°N and between 95°W and 78°W. Illinois; Indiana; Iowa; Michigan; Minnesota; New York; Ohio; Pennsylvania; Wisconsin.',41.0,49.37,-95.0,-77.99,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2980','USA - CONUS north of 41°N, east of 78°W - onshore','United States (USA) - CONUS north of 41°N and east of 78°W - onshore - Connecticut; Maine; Massachusetts; New Hampshire; New Jersey; New York; Pennsylvania; Rhode Island; Vermont.',41.0,47.47,-78.0,-66.91,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2973','USA - CONUS south of 41°N, west of 112°W - onshore','United States (USA) - CONUS onshore south of 41°N and west of 112°W - Arizona west of 112°W; California and Nevada south of 41°N; Utah south of 41°N and west of 112°W.',31.64,41.0,-124.45,-112.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2974','USA - CONUS south of 41°N, 112°W to 95°W - onshore','United States (USA) - CONUS onshore south of 41°N and between 112°W and 95°W - Colorado and New Mexico; Arizona east of 112°W; Utah south of 41°N and east of 112°W; Nebraska south of 41°N; Iowa south of 41°N and west of 95°W; Kansas, Missouri, Oklahoma and Texas west of 95°W.',25.83,41.01,-112.0,-94.99,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2975','USA - CONUS south of 41°N, 95°W to 78°W - onshore','United States (USA) - CONUS onshore south of 41°N and between 95°W and 78°W - Alabama, Arkansas, Florida, Georgia, Kentucky, Louisiana, Mississippi, South Carolina and Tennessee; Kansas, Missouri, Oklahoma and Texas east of 95°W; Iowa south of 41°N and east of 95°W; Illinois, Indiana and Ohio south of 41°N; Pennsylvania south of 41°N and west of 78°W; Maryland, North Carolina, Virginia and West Virginia west of 78°W.',24.41,41.01,-95.0,-77.99,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2976','USA - CONUS south of 41°N, east of 78°W - onshore','United States (USA) - CONUS onshore - south of 41°N and east of 78°W - Delaware; Maryland, North Carolina, Virginia and West Virginia east of 78°W; Pennsylvania south of 41°N and east of 78°W; New Jersey and New York south of 41°N.',33.84,41.01,-78.0,-71.9,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2977','USA - CONUS north of 41°N, west of 112°W - onshore','United States (USA) - CONUS onshore north of 41°N and west of 112°W - Oregon and Washington; California and Nevada north of 41°N; Utah north of 41°N and west of 112°W; Idaho and Montana west of 112°W.',41.0,49.05,-124.79,-112.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2978','USA - CONUS north of 41°N, 112°W to 95°W','United States (USA) - CONUS north of 41°N and between 112°W and 95°W - North Dakota, South Dakota and Wyoming; Idaho and Montana east of 112°W; Utah north of 41°N and east of 112°W; Nebraska north of 41°N; Iowa north of 41°N and west of 95°W; Minnesota west of 95°W.',41.0,49.38,-112.0,-95.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2979','USA - CONUS north of 41°N, 95°W to 78°W','United States (USA) - CONUS north of 41°N and between 95°W and 78°W - Michigan and Wisconsin; Minnesota east of 95°W; Iowa north of 41°N and east of 95°W; Illinois, Indiana and Ohio north of 41°N; Pennsylvania north of 41°N and west of 78°W; New York west of 78°W.',41.0,49.37,-95.0,-77.99,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2980','USA - CONUS north of 41°N, east of 78°W - onshore','United States (USA) - CONUS onshore north of 41°N and east of 78°W - Connecticut, Maine, Massachusetts, New Hampshire, Rhode Island and Vermont; New Jersey north of 41°N; New York and Pennsylvania north of 41°N and east of 78°W.',41.0,47.47,-78.0,-66.91,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2981','Nigeria - offshore','Nigeria - offshore.',1.92,6.38,2.66,8.49,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2982','Pakistan - Karachi','Pakistan - Karachi licence area.',24.69,25.76,66.83,68.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2983','Pakistan - East Sind','Pakistan - East Sind.',24.16,28.61,68.27,71.14,0);
|
||||
@@ -3194,7 +3194,7 @@ INSERT INTO "area" VALUES('EPSG','4214','Papua New Guinea - mainland onshore','P
|
||||
INSERT INTO "area" VALUES('EPSG','4215','Vietnam - 103.5°E to 106.5°E onshore','Vietnam - between 103°30''E and 106°30''E, onshore.',8.5,23.33,103.5,106.51,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4216','Papua New Guinea - North Fly','Papua New Guinea - North Fly area (between 5°04''S and 6°36''S and west of 141°32''E).',-6.6,-5.05,140.89,141.54,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4217','Vietnam - east of 106.5°E onshore','Vietnam - onshore east of 106°30''E.',8.58,22.94,106.5,109.52,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4218','Vietnam - Da Nang','Vietnam - Da Nang municipality.',15.9,16.25,107.81,108.4,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4218','Vietnam - Quang Ninh; Da Nang, Quang Nam; Ba Ria-Vung Tau, Dong Nai, Lam Dong','Vietnam - Quang Ninh province; Da Nang municipality and Quang Nam province; Ba Ria-Vung Tau, Dong Nai and Lam Dong provinces.',8.57,21.67,106.43,108.76,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4219','USA - Iowa - Mason City','United States (USA) - Iowa - counties of Cerro Gordo; Chickasaw; Floyd; Hancock; Howard; Mitchell; Winnebago; Winneshiek; Worth.',42.9,43.51,-93.98,-91.6,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4220','Equatorial Guinea - Bioko','Equatorial Guinea - Bioko onshore.',3.14,3.82,8.37,9.02,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4221','Chile - onshore 36°S to 43.5°S','Chile - onshore between 36°S and 43°30''S.',-43.5,-35.99,-74.48,-70.39,0);
|
||||
@@ -3492,7 +3492,7 @@ INSERT INTO "area" VALUES('EPSG','4512','USA - Kansas - Coffeyville','United Sta
|
||||
INSERT INTO "area" VALUES('EPSG','4513','USA - Kansas - Pittsburg','United States (USA) - Kansas - counties of Allen; Anderson; Bourbon; Cherokee; Crawford; Franklin; Labette; Linn; Miami; Neosho.',36.99,38.74,-95.53,-94.6,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4514','Pacific - Guam and NMI west of 144°E','Guam and Northern Mariana Islands; offshore west of 144°E.',10.95,23.9,141.19,144.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4515','USA - FBN','American Samoa - Tutuila, Aunu''u, Ofu, Olesega, Ta''u and Rose islands - onshore. Guam - onshore. Northern Mariana Islands - onshore. Puerto Rico - onshore. United States (USA) – CONUS - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming - onshore plus Gulf of Mexico offshore continental shelf (GoM OCS). US Virgin Islands - onshore.',-14.59,49.38,144.58,-64.51,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4516','USA - CONUS and GoM','United States (USA) – CONUS - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming - onshore plus Gulf of Mexico offshore continental shelf (GoM OCS).',23.82,49.38,-124.79,-66.91,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4516','USA - CONUS and GoM','United States (USA) - CONUS onshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico offshore continental shelf (GoM OCS).',23.82,49.38,-124.79,-66.91,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4517','Canada - NAD27','Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast.',40.04,83.17,-141.01,-47.74,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4518','Pacific - Guam and NMI east of 144°E','Guam and Northern Mariana Islands; onshore and offshore east of 144°E.',11.05,23.9,144.0,149.55,0);
|
||||
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);
|
||||
@@ -3508,6 +3508,34 @@ INSERT INTO "area" VALUES('EPSG','4528','Saudi Arabia - 48°E to 54°E','Saudi A
|
||||
INSERT INTO "area" VALUES('EPSG','4530','Latin America - Central America and South America','Latin America - Central America and South America, onshore and offshore.',-59.87,32.72,-122.19,-25.28,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4531','Costa Rica - offshore Caribbean','Costa Rica - offshore - Caribbean sea.',9.6,11.77,-83.6,-81.43,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4532','Costa Rica - offshore Pacific','Costa Rica - offshore Pacific ocean and onshore Coco Island.',2.15,11.11,-90.45,-82.92,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4533','Canada - British Columbia - CRD','Canada - British Columbia - Vancouver Island - Capital Regional District.',48.25,49.06,-124.52,-123.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4534','Canada - British Columbia - north Vancouver Is','Canada - British Columbia - north Vancouver Island.',48.48,50.93,-128.5,-123.49,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4535','Canada - British Columbia - mainland','Canada - British Columbia - mainland and Graham Island.',48.99,60.01,-139.04,-114.08,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4536','Canada - Ontario - Toronto','Canada - Ontario - Toronto.',43.58,43.86,-79.64,-79.11,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4537','Canada - Ontario ex. Toronto','Canada - Ontario excluding Toronto.',41.67,56.9,-95.16,-74.35,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4538','Vietnam - Son La','Vietnam - Son La province.',20.57,22.04,103.21,105.03,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4539','Angola - east of 18°E','Angola - east of 18°E.',-18.02,-6.91,17.99,24.09,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4540','Africa - South Africa, Lesotho and Eswatini.','Eswatini (Swaziland); Lesotho; South Africa - onshore and offshore.',-50.32,-22.13,13.33,42.85,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4541','Vietnam - Dien Bien and Lai Chau','Vietnam - Dien Bien and Lai Chau provinces.',20.89,22.82,102.14,103.99,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4542','Kosovo','Kosovo.',41.85,43.25,19.97,21.8,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4543','Serbia','Serbia including Vojvodinja.',42.23,46.19,18.81,23.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4544','North America - Canada, US (Conus+AK), PRVI','North America - onshore and offshore: Canada - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon. Puerto Rico. United States (USA) - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Virgin Islands.',14.92,86.46,167.65,-47.74,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4545','Vietnam - Ca Mau and Kien Giang','Vietnam - Ca Mau and Kien Giang provinces.',8.33,10.55,103.4,105.54,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4546','Vietnam - An Giang, Lao Cai, Nghe An, Phu Tho, Yen Bai','Vietnam - An Giang, Lao Cai, Nghe An, Phu Tho and Yen Bai provinces.',10.18,22.85,103.53,105.86,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4547','Vietnam - 104°20''E to 106°10''E by province - Hanoi','Vietnam - Ha Noi city, Ha Nam, Ha Tay, Ninh Binh, Thanh Hoa and Vinh Phuc provinces; Can Tho city, Bac Lieu, Dong Thap and Hau Giang provinces.',8.97,21.58,104.37,106.19,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4548','Vietnam - 104°20''E to 106°40''E by province','Vietnam - Bac Ninh, Ha Giang, Ha Tinh, Hai Duong, Hung Yen, Nam Dinh, Soc Trang, Tay Ninh, Thai Binh, Tra Vinh and Vinh Long provinces.',9.19,23.4,104.33,106.69,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4549','Vietnam - 105°15''E to 107°50''E by province - HCMC','Vietnam - Hai Phong and Ho Chi Minh cities; Ben Tre, Binh Duong, Cao Bang, Long An and Tien Giang provinces.',9.75,23.12,105.26,107.8,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4550','Vietnam - Hoa Binh, Quang Binh and Tuyen Quang','Vietnam - Hoa Binh, Quang Binh and Tuyen Quang provinces.',16.92,22.7,104.83,107.03,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4551','Angola - west of 12°E','Angola - west of 12°E, onshore and offshore.',-17.28,-5.03,8.2,12.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4552','Vietnam - Binh Phuoc and Quang Tri','Vietnam - Binh Phuoc and Quang Tri provinces.',11.3,17.22,106.41,107.43,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4553','Vietnam - Bac Kan and Thai Nguyen','Vietnam - Bac Kan and Thai Nguyen provinces.',21.32,22.75,105.43,106.25,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4554','Vietnam - Bac Giang and Thua Thien-Hue','Vietnam - Bac Giang and Thua Thien-Hue provinces.',15.99,21.63,105.88,108.24,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4555','Angola - 12°E to 18°E','Angola - between 12°E and 18°E, onshore and offshore.',-17.44,-4.38,12.0,18.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4556','Vietnam - Lang Son','Vietnam - Lang Son province.',21.32,22.47,106.09,107.37,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4557','Vietnam - Kon Tum','Vietnam - Kon Tum province.',13.92,15.42,107.33,108.55,0);
|
||||
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','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);
|
||||
|
||||
@@ -207,7 +207,7 @@ INSERT INTO "conversion" VALUES('EPSG','5889','JAXA Snow Depth Polar Stereograph
|
||||
INSERT INTO "conversion" VALUES('EPSG','5892','Vietnam TM-3 zone 481',NULL,NULL,'EPSG','4193','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',102.0,'EPSG','9102','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','5893','Vietnam TM-3 zone 482',NULL,NULL,'EPSG','4215','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.0,'EPSG','9102','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','5894','Vietnam TM-3 zone 491',NULL,NULL,'EPSG','4217','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',108.0,'EPSG','9102','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','5895','Vietnam TM-3 Da Nang zone',NULL,NULL,'EPSG','4218','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',107.45,'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','5895','Vietnam TM-3 107-45',NULL,NULL,'EPSG','4218','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',107.45,'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','5901','EPSG Alaska Polar Stereographic',NULL,NULL,'EPSG','1996','EPSG','9810','Polar Stereographic (variant A)','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-150.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.994,'EPSG','9201','EPSG','8806','False easting',2000000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','5902','EPSG Canada Polar Stereographic',NULL,NULL,'EPSG','1996','EPSG','9810','Polar Stereographic (variant A)','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-100.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.994,'EPSG','9201','EPSG','8806','False easting',2000000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','5903','EPSG Greenland Polar Stereographic',NULL,NULL,'EPSG','1996','EPSG','9810','Polar Stereographic (variant A)','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.994,'EPSG','9201','EPSG','8806','False easting',2000000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
@@ -860,6 +860,23 @@ INSERT INTO "conversion" VALUES('EPSG','8825','Idaho Transverse Mercator',NULL,N
|
||||
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','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);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9193','Vietnam TM-3 104-30',NULL,NULL,'EPSG','4545','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',104.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','9194','Vietnam TM-3 104-45',NULL,NULL,'EPSG','4546','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',104.45,'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','9195','Vietnam TM-3 105-30',NULL,NULL,'EPSG','4548','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',105.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','9196','Vietnam TM-3 105-45',NULL,NULL,'EPSG','4549','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',105.45,'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','9197','Vietnam TM-3 106-00',NULL,NULL,'EPSG','4550','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',106.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','9198','Vietnam TM-3 106-15',NULL,NULL,'EPSG','4552','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',106.15,'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','9199','Vietnam TM-3 106-30',NULL,NULL,'EPSG','4553','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',106.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','9200','Vietnam TM-3 107-00',NULL,NULL,'EPSG','4554','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',107.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','9201','Vietnam TM-3 107-15',NULL,NULL,'EPSG','4556','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',107.15,'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','9202','Vietnam TM-3 107-30',NULL,NULL,'EPSG','4557','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',107.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','9203','Vietnam TM-3 108-15',NULL,NULL,'EPSG','4559','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',108.15,'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','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','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);
|
||||
|
||||
@@ -160,7 +160,7 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','4215','Belge 1950',NULL,NULL,'geograph
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4216','Bermuda 1957',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6216','EPSG','3221',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4218','Bogota 1975',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6218','EPSG','3686',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4219','Bukit Rimpah',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6219','EPSG','1287',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4220','Camacupa',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6220','EPSG','1288',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4220','Camacupa 1948',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6220','EPSG','1029',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4221','Campo Inchauspe',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6221','EPSG','3843',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4222','Cape',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6222','EPSG','1290',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','4223','Carthage',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6223','EPSG','1236',NULL,0);
|
||||
@@ -664,9 +664,9 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','5342','POSGAR 2007',NULL,NULL,'geograp
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','5352','MARGEN',NULL,NULL,'geocentric','EPSG','6500','EPSG','1063','EPSG','1049',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','5353','MARGEN',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1063','EPSG','1049',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','5354','MARGEN',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1063','EPSG','1049',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','5358','SIRGAS-Chile',NULL,NULL,'geocentric','EPSG','6500','EPSG','1064','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','5359','SIRGAS-Chile',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1064','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','5360','SIRGAS-Chile',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1064','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','5358','SIRGAS-Chile 2002',NULL,NULL,'geocentric','EPSG','6500','EPSG','1064','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','5359','SIRGAS-Chile 2002',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1064','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','5360','SIRGAS-Chile 2002',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1064','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','5363','CR05',NULL,NULL,'geocentric','EPSG','6500','EPSG','1065','EPSG','1074',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','5364','CR05',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1065','EPSG','1074',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','5365','CR05',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1065','EPSG','1074',NULL,0);
|
||||
@@ -892,6 +892,10 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','8545','NAD83(HARN Corrected)',NULL,NUL
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8683','SRB_ETRS89',NULL,NULL,'geocentric','EPSG','6500','EPSG','1214','EPSG','4543',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8684','SRB_ETRS89',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1214','EPSG','4543',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8685','SRB_ETRS89',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1214','EPSG','4543',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8694','Camacupa 2015',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1217','EPSG','1029',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8697','RSAO13',NULL,NULL,'geocentric','EPSG','6500','EPSG','1220','EPSG','1029',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8698','RSAO13',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1220','EPSG','1029',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8699','RSAO13',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1220','EPSG','1029',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8816','MTRF-2000',NULL,NULL,'geocentric','EPSG','6500','EPSG','1218','EPSG','1206',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8817','MTRF-2000',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1218','EPSG','1206',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8818','MTRF-2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1218','EPSG','1206',NULL,0);
|
||||
@@ -937,6 +941,9 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','8943','SIRGAS-CON SIR15P01',NULL,NULL,
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8944','SIRGAS-CON SIR15P01',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1241','EPSG','4530',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8945','SIRGAS-CON SIR17P01',NULL,NULL,'geocentric','EPSG','6500','EPSG','1242','EPSG','4530',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8946','SIRGAS-CON SIR17P01',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1242','EPSG','4530',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8947','SIRGAS-Chile 2010',NULL,NULL,'geocentric','EPSG','6500','EPSG','1243','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8948','SIRGAS-Chile 2010',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1243','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8949','SIRGAS-Chile 2010',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1243','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8972','SIRGAS-CON DGF00P01',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1227','EPSG','4530',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8973','SIRGAS-CON DGF01P01',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1228','EPSG','4530',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8974','SIRGAS-CON DGF01P02',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1229','EPSG','4530',NULL,0);
|
||||
@@ -1001,6 +1008,21 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','9066','ETRF97',NULL,NULL,'geographic 2
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9067','ETRF2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1186','EPSG','1298',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9068','ETRF2005',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1204','EPSG','1298',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9069','ETRF2014',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1206','EPSG','1298',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9070','NAD83(MARP00)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1221','EPSG','4167',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9071','NAD83(MARP00)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1221','EPSG','4167',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9072','NAD83(MARP00)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1221','EPSG','4167',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9073','NAD83(PACP00)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1249','EPSG','4162',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9074','NAD83(PACP00)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1249','EPSG','4162',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9075','NAD83(PACP00)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1249','EPSG','4162',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9138','KOSOVAREF01',NULL,NULL,'geocentric','EPSG','6500','EPSG','1251','EPSG','4542',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9139','KOSOVAREF01',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1251','EPSG','4542',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9140','KOSOVAREF01',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1251','EPSG','4542',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9146','SIRGAS-Chile 2013',NULL,NULL,'geocentric','EPSG','6500','EPSG','1252','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9147','SIRGAS-Chile 2013',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1252','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9148','SIRGAS-Chile 2013',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1252','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9151','SIRGAS-Chile 2016',NULL,NULL,'geocentric','EPSG','6500','EPSG','1253','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9152','SIRGAS-Chile 2016',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1253','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9153','SIRGAS-Chile 2016',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1253','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9182','SIRGAS-Chile',NULL,NULL,'geocentric','EPSG','6500','EPSG','1254','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9183','SIRGAS-Chile',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1254','EPSG','1066',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9184','SIRGAS-Chile',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1254','EPSG','1066',NULL,0);
|
||||
|
||||
@@ -30,7 +30,7 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','1060','Islands Net 2004',NULL,NULL,'
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1061','International Terrestrial Reference Frame 2008',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1062','Posiciones Geodesicas Argentinas 2007',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1033',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1063','Marco Geodesico Nacional de Bolivia',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1049',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1064','SIRGAS-Chile',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1064','SIRGAS-Chile realization 1 epoch 2002',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1065','Costa Rica 2005',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1074',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1066','Sistema Geodesico Nacional de Panama MACARIO SOLIS',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1186',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1067','Peru96',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1189',0);
|
||||
@@ -115,7 +115,10 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','1209','Hong Kong Geodetic',NULL,NULL
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1211','NAD83 (Federal Base Network)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4515',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1212','NAD83 (High Accuracy Reference Network - Corrected)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3634',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1214','Serbian Spatial Reference System 2000',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4543',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1217','Camacupa 2015',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1029',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1218','MOMRA Terrestrial Reference Frame 2000',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1206',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1220','Reference System de Angola 2013',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1029',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1221','North American Datum of 1983 (MARP00)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4167',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1223','Reseau Geodesique de Wallis et Futuna 1996',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1255',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1225','CR-SIRGAS',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1074',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1227','SIRGAS Continuously Operating Network DGF00P01',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4530',0);
|
||||
@@ -134,12 +137,17 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','1239','SIRGAS Continuously Operating
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1240','SIRGAS Continuously Operating Network SIR14P01',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4530',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1241','SIRGAS Continuously Operating Network SIR15P01',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4530',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1242','SIRGAS Continuously Operating Network SIR17P01',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4530',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1243','SIRGAS-Chile realization 2 epoch 2010.00',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1244','IGS97',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1245','IGS00',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1246','IGb00',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1247','IGS05',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1248','IGb08',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1249','North American Datum of 1983 (PACP00)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4162',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1251','Kosovo Reference System 2001',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4542',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1252','SIRGAS-Chile realization 3 epoch 2013.00',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1253','SIRGAS-Chile realization 4 epoch 2016.00',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1254','SIRGAS-Chile',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6001','Not specified (based on Airy 1830 ellipsoid)',NULL,NULL,'EPSG','7001','EPSG','8901','EPSG','1263',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6002','Not specified (based on Airy Modified 1849 ellipsoid)',NULL,NULL,'EPSG','7002','EPSG','8901','EPSG','1263',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6003','Not specified (based on Australian National Spheroid)',NULL,NULL,'EPSG','7003','EPSG','8901','EPSG','1263',0);
|
||||
@@ -279,7 +287,7 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','6215','Reseau National Belge 1950',N
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6216','Bermuda 1957',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3221',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6218','Bogota 1975',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3686',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6219','Bukit Rimpah',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1287',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6220','Camacupa',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1288',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6220','Camacupa 1948',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1288',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6221','Campo Inchauspe',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3843',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6222','Cape',NULL,NULL,'EPSG','7013','EPSG','8901','EPSG','1290',0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6223','Carthage',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1236',0);
|
||||
|
||||
@@ -372,7 +372,7 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('g2012Bu0.bin',
|
||||
VALUES ('g2012bu0.bin',
|
||||
'g2012bu0.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
@@ -388,7 +388,7 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('g2012Ba0.bin',
|
||||
VALUES ('g2012ba0.bin',
|
||||
'g2012ba0.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
@@ -404,7 +404,7 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('g2012Bp0.bin',
|
||||
VALUES ('g2012bp0.bin',
|
||||
'g2012bp0.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
@@ -420,7 +420,7 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('g2012Bg0.bin',
|
||||
VALUES ('g2012bg0.bin',
|
||||
'g2012bg0.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
@@ -436,7 +436,7 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('g2012Bs0.bin',
|
||||
VALUES ('g2012bs0.bin',
|
||||
'g2012bs0.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
|
||||
@@ -61,9 +61,9 @@ INSERT INTO "grid_transformation" VALUES('EPSG','1554','NAD83 to NAD83(HARN) (39
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1559','AGD84 to GDA94 (3)','Withdrawn and replaced by AGD84 to GDA94 (4) (code 1593) due to binary file format error. Input expects longitudes to be positive west; EPSG GeogCRS AGD84 (code 4203) and GDA94 (code 4283) have longitudes positive east.','0.1m accuracy.','EPSG','9615','NTv2','EPSG','4203','EPSG','4283','EPSG','1280',0.1,'EPSG','8656','Latitude and longitude difference file','wa_0400.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'DOLA-Aus WA 0.1m old',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1568','NZGD49 to NZGD2000 (3)','These same parameter values may be used to transform to WGS 84 - see NZGD49 to WGS 84 (4) (code 1670).','0.2m accuracy.','EPSG','9615','NTv2','EPSG','4272','EPSG','4167','EPSG','3285',0.2,'EPSG','8656','Latitude and longitude difference file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'OSG-Nzl 1m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1572','NAD83 to NAD83(CSRS98) (1)','Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD83 (code 4269) and NAD83(CSRS98) (code 4140) have longitudes positive east. Can be taken as an approximate transformation NAD83 to WGS 84 - see code 1696.','Accuracy 1-2 metres.','EPSG','9615','NTv2','EPSG','4269','EPSG','4140','EPSG','1368',NULL,'EPSG','8656','Latitude and longitude difference file','NAD83-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'SGQ-Can QC',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1573','NAD27 to NAD83 (6)','Replaces NAD27 to NAD83 (5) (code 1462). Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.','Accuracy 1-2 metres.','EPSG','9615','NTv2','EPSG','4267','EPSG','4269','EPSG','1368',1.5,'EPSG','8656','Latitude and longitude difference file','QUE27-83.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'SGQ-Can QC NT2',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1573','NAD27 to NAD83 (6)','Also distributed with file name QUE27-83.gsb. Replaces NAD27 to NAD83 (5) (code 1462). Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east.','Accuracy 1-2 metres.','EPSG','9615','NTv2','EPSG','4267','EPSG','4269','EPSG','1368',1.5,'EPSG','8656','Latitude and longitude difference file','NA27NA83.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'SGQ-Can QC NT2',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1574','NAD27 to NAD83(CSRS98) (1)','Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27 (code 4267) and NAD83(CSRS98) (code 4140) have longitudes positive east. Can be taken as an approximate transformation NAD27 to WGS 84 - see code 1692.','Accuracy 1-2 metres.','EPSG','9615','NTv2','EPSG','4267','EPSG','4140','EPSG','1368',NULL,'EPSG','8656','Latitude and longitude difference file','QUE27-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'SGQ-Can QC',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1575','NAD27(CGQ77) to NAD83 (2)','Replaces NAD27(CGQ77) to NAD83 (1) (code 1451). Uses NT method which expects longitudes positive west; EPSG GeogCRSs CGQ77 and NAD83 (codes 4609 and 4269) have longitudes positive east. Can be taken as approx transformation to WGS 84 - see code 1691.','Accuracy 1-2 metres.','EPSG','9615','NTv2','EPSG','4609','EPSG','4269','EPSG','1368',1.5,'EPSG','8656','Latitude and longitude difference file','CGQ77-83.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'SGQ-Can QC NT2',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1575','NAD27(CGQ77) to NAD83 (2)','Also distributed with file name CGQ77-83.gsb. Replaces NAD27(CGQ77) to NAD83 (1) (code 1451). Can be taken as approx transformation to WGS 84 - see code 1691.','Spatial referencing.','EPSG','9615','NTv2','EPSG','4609','EPSG','4269','EPSG','1368',1.5,'EPSG','8656','Latitude and longitude difference file','CQ77NA83.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'SGQ-Can QC NT2',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1576','NAD27(CGQ77) to NAD83(CSRS98) (1)','Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27(CGQ77) (code 4609) and NAD83(CSRS98) (code 4140) have 1691longitudes positive east. Can be taken as an approximate transformation NAD27(CGQ77) to WGS 84 - see code 1691.','Accuracy 1-2 metres.','EPSG','9615','NTv2','EPSG','4609','EPSG','4140','EPSG','1368',NULL,'EPSG','8656','Latitude and longitude difference file','CGQ77-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'SGQ-Can QC',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1578','American Samoa 1962 to NAD83(HARN) (1)','NADCON method which expects longitudes positive west; EPSG GeogCRSs American Samoa 1962 and NAD83(HARN) (codes 4169 and 4152) have longitudes positive east. NADCON expects latitudes in northern hemisphere and values must be made positive prior to input.','Geodetic survey. No accuracy stated.','EPSG','9613','NADCON','EPSG','4169','EPSG','4152','EPSG','2288',5.0,'EPSG','8657','Latitude difference file','wshpgn.las','EPSG','8658','Longitude difference file','wshpgn.los',NULL,NULL,'NGS-Asm W',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1579','American Samoa 1962 to NAD83(HARN) (2)','NADCON method which expects longitudes positive west; EPSG GeogCRSs American Samoa 1962 and NAD83(HARN) (codes 4169 and 4152) have longitudes positive east. NADCON expects latitudes in northern hemisphere and values must be made positive prior to input.','Geodetic survey. No accuracy stated.','EPSG','9613','NADCON','EPSG','4169','EPSG','4152','EPSG','2289',5.0,'EPSG','8657','Latitude difference file','eshpgn.las','EPSG','8658','Longitude difference file','eshpgn.los',NULL,NULL,'NGS-Asm E',0);
|
||||
@@ -77,12 +77,12 @@ INSERT INTO "grid_transformation" VALUES('EPSG','1670','NZGD49 to WGS 84 (3)','P
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1688','ATS77 to WGS 84 (1)','Parameter file is from ATS77 to NAD83(CSRS) (1) (code 1841) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','9615','NTv2','EPSG','4122','EPSG','4326','EPSG','1447',1.0,'EPSG','8656','Latitude and longitude difference file','NB7783v2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Can NB',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1689','ATS77 to WGS 84 (2)','Parameter file is from ATS77 to NAD83(CSRS) (2) (code 1846) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','9615','NTv2','EPSG','4122','EPSG','4326','EPSG','1533',1.0,'EPSG','8656','Latitude and longitude difference file','PE7783V2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Can PEI',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1690','NAD27(76) to WGS 84 (1)','Parameter file is from NAD27(76) to NAD83 (1) (code 1463) assuming that NAD83 is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','9615','NTv2','EPSG','4608','EPSG','4326','EPSG','1367',1.0,'EPSG','8656','Latitude and longitude difference file','May76v20.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Can On',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1691','NAD27(CGQ77) to WGS 84 (3)','Parameter file is from NAD27(CGQ77) to NAD83(CSRS) (1) (code 1845) assuming that NAD83(CSRS98) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','9615','NTv2','EPSG','4609','EPSG','4326','EPSG','1368',1.0,'EPSG','8656','Latitude and longitude difference file','CGQ77-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Can Qc NT2',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1692','NAD27 to WGS 84 (34)','Parameter file is from NAD27 to NAD83(CSRS) (1) (code 1844) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','9615','NTv2','EPSG','4267','EPSG','4326','EPSG','1368',1.0,'EPSG','8656','Latitude and longitude difference file','QUE27-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Can QC',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1691','NAD27(CGQ77) to WGS 84 (3)','Parameter file is from NAD27(CGQ77) to NAD83(CSRS) (1) (code 1845) assuming that NAD83(CSRS98) is equivalent to WGS 84 within the accuracy of the transformation. Also distributed with file name CGQ77-98.gsb.','Approximation at the +/- 1m level.','EPSG','9615','NTv2','EPSG','4609','EPSG','4326','EPSG','1368',1.0,'EPSG','8656','Latitude and longitude difference file','CQ77NA83.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Can Qc NT2',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1692','NAD27 to WGS 84 (34)','Parameter file is from NAD27 to NAD83(CSRS) (1) (code 1844) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation. Also distributed as QUE27-98.gsb.','Approximation at the +/- 1m level.','EPSG','9615','NTv2','EPSG','4267','EPSG','4326','EPSG','1368',1.0,'EPSG','8656','Latitude and longitude difference file','NA27SCRS.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Can QC',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1693','NAD27 to WGS 84 (33)','Parameter file is from NAD27 to NAD83 (4) (code 1313) assuming that NAD83 is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','9615','NTv2','EPSG','4267','EPSG','4326','EPSG','4517',1.0,'EPSG','8656','Latitude and longitude difference file','NTv2_0.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Can',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1694','American Samoa 1962 to WGS 84 (2)','Parameter files are from American Samoa 1962 to NAD83(HARN) (1) (code 1578), but for many purposes NAD83(HARN) can be considered to be coincident with WGS 84 within the accuracy of the transformation.','No accuracy stated for source transformation.','EPSG','9613','NADCON','EPSG','4169','EPSG','4326','EPSG','2288',5.0,'EPSG','8657','Latitude difference file','wshpgn.las','EPSG','8658','Longitude difference file','wshpgn.los',NULL,NULL,'EPSG-Asm W',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1695','American Samoa 1962 to WGS 84 (3)','Parameter files are from American Samoa 1962 to NAD83(HARN) (2) (code 1579), but for many purposes NAD83(HARN) can be considered to be coincident with WGS 84 within the accuracy of the transformation.','No accuracy stated for source transformation.','EPSG','9613','NADCON','EPSG','4169','EPSG','4326','EPSG','2289',5.0,'EPSG','8657','Latitude difference file','eshpgn.las','EPSG','8658','Longitude difference file','eshpgn.los',NULL,NULL,'EPSG-Asm E',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1696','NAD83 to WGS 84 (6)','Parameter file is from NAD83 to NAD83(CSRS) (1) (code 1843) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','9615','NTv2','EPSG','4269','EPSG','4326','EPSG','1368',1.0,'EPSG','8656','Latitude and longitude difference file','NAD83-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Can QC',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1696','NAD83 to WGS 84 (6)','Parameter file is from NAD83 to NAD83(CSRS) (1) (code 1843) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation. Also distributed with file name NAD83-98.gsb.','Approximation at the +/- 1m level.','EPSG','9615','NTv2','EPSG','4269','EPSG','4326','EPSG','1368',1.0,'EPSG','8656','Latitude and longitude difference file','NA83SCRS.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Can QC',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1697','NAD83 to WGS 84 (7)','Parameter file is from NAD83 to NAD83(CSRS8) (2) (code 1848) assuming that NAD83(CSRS) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','9615','NTv2','EPSG','4269','EPSG','4326','EPSG','2375',1.0,'EPSG','8656','Latitude and longitude difference file','SK83-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Can SK',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1698','St. George Island to WGS 84 (1)','Parameter files are from St. George Island to NAD83 (1) (code 1457) assuming that NAD83 is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1 to 2m level.','EPSG','9613','NADCON','EPSG','4138','EPSG','4326','EPSG','1331',1.5,'EPSG','8657','Latitude difference file','stgeorge.las','EPSG','8658','Longitude difference file','stgeorge.los',NULL,NULL,'EPSG-Usa AK StG',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','1699','St. Lawrence Island to WGS 84 (1)','Parameter files are from St. Lawrence Island to NAD83 (1) (code 1455) assuming that NAD83 is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1 to 2m level.','EPSG','9613','NADCON','EPSG','4136','EPSG','4326','EPSG','1332',1.5,'EPSG','8657','Latitude difference file','stlrnc.las','EPSG','8658','Longitude difference file','stlrnc.los',NULL,NULL,'EPSG-Usa AK StL',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',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 (US .gtx)','EPSG','6319','EPSG','5703','EPSG','1323',0.1,'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.2,'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 (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','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',0);
|
||||
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);
|
||||
@@ -204,11 +204,11 @@ INSERT INTO "grid_transformation" VALUES('EPSG','6947','TM75 to WGS 84 (4)','Par
|
||||
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.1,'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.1,'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.1,'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.1,'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.1,'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','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','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, accuracy 2cm.','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, accuracy 2cm.','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, accuracy 2cm.','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','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','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);
|
||||
@@ -263,6 +263,27 @@ INSERT INTO "grid_transformation" VALUES('EPSG','8447','GDA94 to GDA2020 (2)','S
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8451','GDA2020 to AHD height (1)','Uncertainties given in accompanying file AUSGeoid2020_windows_binary_uncertainty.gsb','Derivation of gravity-related heights from GNSS observations.','EPSG','1048','Geographic3D to GravityRelatedHeight (Ausgeoid v2)','EPSG','7843','EPSG','5711','EPSG','4493',0.03,'EPSG','8666','Geoid (height correction) model file','AUSGeoid2020_windows_binary.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'GA-Aus 2020',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8676','Canada velocity grid v6','','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',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8885','RGF93 to NGF IGN69 height (3)','Replaces RGF93 to NGF IGN69 height (2) (code 8371). Accuracy at each 0.0333333333333° in longitude and 0.025° in latitude grid node is given within the geoid model file. Recommended interpolation method is bilinear.','Derivation of gravity-related heights from GPS observations.','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','4965','EPSG','5720','EPSG','1326',0.01,'EPSG','8666','Geoid (height correction) model file','RAF18.tac',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Fra 18',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9105','ATS77 to NAD83 (1)','','Spatial referencing.','EPSG','9615','NTv2','EPSG','4122','EPSG','4269','EPSG','2313',0.5,'EPSG','8656','Latitude and longitude difference file','GS7783.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'NSGC-Can NS',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9106','ATS77 to NAD83(CSRS)v6 (4)','Derived through NAD83(CSRS)v6 but within accuracy of transformation may be assumed to apply to any version.','Spatial referencing.','EPSG','9615','NTv2','EPSG','4122','EPSG','8252','EPSG','2313',0.06,'EPSG','8656','Latitude and longitude difference file','NS778302.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'NSGC-Can NS v2',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9107','NAD27 to NAD83(CSRS)v3 (5)','Derived through NAD83(CSRS)v3 but within accuracy of transformation may be assumed to apply to any version. For Toronto use NAD27 to NAD83(CSRS) (6) (CT code 9108).','Spatial referencing.','EPSG','9615','NTv2','EPSG','4267','EPSG','8240','EPSG','4537',1.5,'EPSG','8656','Latitude and longitude difference file','ON27CSv1.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'LIO-Can Ont ex Tor',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9108','NAD27 to NAD83(CSRS)v3 (6)','Derived through NAD83(CSRS)v3 but within accuracy of transformation may be assumed to apply to any version. For Ontario excluding Toronto use NAD27 to NAD83(CSRS) (5) (CT code 9107).','Spatial referencing.','EPSG','9615','NTv2','EPSG','4267','EPSG','8240','EPSG','4536',1.0,'EPSG','8656','Latitude and longitude difference file','TOR27CSv1.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'LIO-Can Ont Tor',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9109','NAD27(76) to NAD83(CSRS)v3 (1)','Derived through NAD83(CSRS)v3 but within accuracy of transformation may be assumed to apply to any version.','Spatial referencing.','EPSG','9615','NTv2','EPSG','4608','EPSG','8240','EPSG','1367',1.0,'EPSG','8656','Latitude and longitude difference file','ON76CSv1.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'LIO-Can Ont',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9110','NAD83 to NAD83(CSRS)v3 (5)','Derived through NAD83(CSRS)v3 but within accuracy of transformation may be assumed to apply to any version.','Spatial referencing.','EPSG','9615','NTv2','EPSG','4269','EPSG','8240','EPSG','1367',0.1,'EPSG','8656','Latitude and longitude difference file','ON83CSv1.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'LIO-Can Ont',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9111','NAD27 to NAD83 (9)','','Spatial referencing.','EPSG','9615','NTv2','EPSG','4267','EPSG','4269','EPSG','2375',1.5,'EPSG','8656','Latitude and longitude difference file','SK27-83.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ISC-Can SK',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9112','NAD27 to NAD83(CSRS)v2 (7)','Derived through NAD83(CSRS)v2. Replaced by NAD27 to NAD83(CSRS) (8) (CT code 9113) for CRD, NAD27 to NAD83(CSRS) (9) (CT code 9114) forn north Vancouver Island and NAD27 to NAD83(CSRS) (10) (CT code 9115) for mainland.','Spatial referencing.','EPSG','9615','NTv2','EPSG','4267','EPSG','8237','EPSG','2832',1.5,'EPSG','8656','Latitude and longitude difference file','BC_27_98.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'GeoBC-Can BC CSRSv2',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9113','NAD27 to NAD83(CSRS)v3 (8)','Derived through NAD83(CSRS)v3.','Spatial referencing.','EPSG','9615','NTv2','EPSG','4267','EPSG','8240','EPSG','4533',1.5,'EPSG','8656','Latitude and longitude difference file','CRD27_00.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'GeoBC-Can BC CRD',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9114','NAD27 to NAD83(CSRS)v3 (9)','Derived through NAD83(CSRS)v3.','Spatial referencing.','EPSG','9615','NTv2','EPSG','4267','EPSG','8240','EPSG','4534',1.5,'EPSG','8656','Latitude and longitude difference file','NVI27_05.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'GeoBC-Can BC NVI',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9115','NAD27 to NAD83(CSRS)v4 (10)','Derived through NAD83(CSRS)v4.','Spatial referencing.','EPSG','9615','NTv2','EPSG','4267','EPSG','8246','EPSG','4535',1.5,'EPSG','8656','Latitude and longitude difference file','BC_27_05.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'GeoBC-Can BC mainland',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9116','NAD83 to NAD83(CSRS)v2 (6)','Derived through NAD83(CSRS)v2. Replaced by NAD83 to NAD83(CSRS) (7) (CT code 9117) for CRD, NAD83 to NAD83(CSRS) (8) (CT code 9118) for north Vancouver Island and NAD83 to NAD83(CSRS) (9) (CT code 9119) for mainland.','Spatial referencing.','EPSG','9615','NTv2','EPSG','4269','EPSG','8237','EPSG','2832',0.1,'EPSG','8656','Latitude and longitude difference file','BC_93_98.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'GeoBC-Can BC CSRSv2',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9117','NAD83 to NAD83(CSRS)v3 (7)','Derived through NAD83(CSRS)v3.','Spatial referencing.','EPSG','9615','NTv2','EPSG','4269','EPSG','8240','EPSG','4533',0.1,'EPSG','8656','Latitude and longitude difference file','CRD93_00.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'GeoBC-Can BC CRD',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9118','NAD27 to NAD83(CSRS)v3 (8)','Derived through NAD83(CSRS)v3.','Spatial referencing.','EPSG','9615','NTv2','EPSG','4269','EPSG','8240','EPSG','4534',0.1,'EPSG','8656','Latitude and longitude difference file','NVI93_05.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'GeoBC-Can BC NVI',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9119','NAD83 to NAD83(CSRS)v4 (9)','Derived through NAD83(CSRS)v4.','Spatial referencing.','EPSG','9615','NTv2','EPSG','4269','EPSG','8246','EPSG','4535',0.1,'EPSG','8656','Latitude and longitude difference file','BC_93_05.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'GeoBC-Can BC mainland',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9120','NAD83(CSRS)v2 to NAD83(CSRS)v3 (1)','','Spatial referencing.','EPSG','9615','NTv2','EPSG','8237','EPSG','8240','EPSG','4533',0.1,'EPSG','8656','Latitude and longitude difference file','CRD98_00.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'GeoBC-Can BC CRD',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9121','NAD83(CSRS)v2 to NAD83(CSRS)v3 (2)','','Spatial referencing.','EPSG','9615','NTv2','EPSG','8237','EPSG','8240','EPSG','4534',0.1,'EPSG','8656','Latitude and longitude difference file','NVI98_05.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'GeoBC-Can BC NVI',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9122','NAD83(CSRS)v2 to NAD83(CSRS)v4 (1)','','Spatial referencing.','EPSG','9615','NTv2','EPSG','8237','EPSG','8240','EPSG','4535',0.1,'EPSG','8656','Latitude and longitude difference file','BC_98_05.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'GeoBC-Can BC mainland',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9123','NAD83(CSRS) to CGVD28 height (1)','Derived through NAD83(CSRS)v3.','Derivation of gravity-related heights from GPS observations.','EPSG','1060','Geographic3D to GravityRelatedHeight (CGG2013)','EPSG','4955','EPSG','5713','EPSG','1061',0.05,'EPSG','8666','Geoid (height correction) model file','HT2_0.byn',NULL,NULL,NULL,NULL,NULL,NULL,'NRC Can CGG2000',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9124','ITRF2008 to CGVD2013 height (1)','Uses CGG2013 model derived through NAD83(CSRS)v6 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 model CGG2013a (CT code 9125).','Derivation of gravity-related heights from GPS observations.','EPSG','1060','Geographic3D to GravityRelatedHeight (CGG2013)','EPSG','7911','EPSG','6647','EPSG','1061',0.03,'EPSG','8666','Geoid (height correction) model file','CGG2013i83.byn',NULL,NULL,NULL,NULL,NULL,NULL,'NRC Can CGG2013',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9125','ITRF2008 to CGVD2013 height (2)','Uses CGG2013a model derived through NAD83(CSRS)v6 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 model CGG2013 (CT code 9124).','Derivation of gravity-related heights from GPS observations.','EPSG','1060','Geographic3D to GravityRelatedHeight (CGG2013)','EPSG','7911','EPSG','6647','EPSG','1061',0.03,'EPSG','8666','Geoid (height correction) model file','CGG2013i08a.byn',NULL,NULL,NULL,NULL,NULL,NULL,'NRC Can CGG2013a',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9131','RGAF09 to IGN 2008 LD height (1)','Replaces RGAF09 to IGN 1992 LD height (1) (CT code 5507). Accuracy 0.1-0.2m within onshore area.','Derivation of gravity-related heights from GPS observations.','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','5488','EPSG','9130','EPSG','2893',0.2,'EPSG','8666','Geoid (height correction) model file','RALD2016.mnt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Glp Des',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9132','RRAF 1991 to IGN 2008 LD height (1)','Replaces RRAF 1991 to IGN 1992 LD height (1) (CT code 4566). Accuracy 0.1-0.2m within onshore area.','Derivation of gravity-related heights from GPS observations.','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','4557','EPSG','9130','EPSG','2893',0.2,'EPSG','8666','Geoid (height correction) model file','RALDW842016.mnt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Glp Des',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9133','RGAF09 to Guadeloupe 1988 height (2)','Replaces RGAF09 to Guadeloupe 1988 height (1) (CT code 5503). Accuracy 0.01-0.05m within onshore areas.','Derivation of gravity-related heights from GPS observations.','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','5488','EPSG','5757','EPSG','2892',0.05,'EPSG','8666','Geoid (height correction) model file','RAGTBT2016.mnt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Glp GT 2016',0);
|
||||
@@ -270,6 +291,23 @@ 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','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','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);
|
||||
@@ -285,14 +323,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',0);
|
||||
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',0);
|
||||
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',0);
|
||||
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',0);
|
||||
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',0);
|
||||
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',0);
|
||||
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',0);
|
||||
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',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','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);
|
||||
@@ -385,7 +423,7 @@ INSERT INTO "grid_transformation" VALUES('EPSG','15941','NTF to ETRS89 (3)','The
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15942','NTF to WGS 84 (3)','These parameter values are taken from NTF to RGR93 (2) (code 15940) as RGR93 may be considered equivalent to WGS 84 within the accuracy of the transformation. Emulation of France Geocentric Interpolation method tfm code 15939.','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4275','EPSG','4326','EPSG','1326',1.0,'EPSG','8656','Latitude and longitude difference file','rgf93_ntf.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Fra 1m emulation',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15944','NEA74 Noumea to RGNC91-93 (4)','Emulation using NTv2 method of tfm NEA74 Noumea to RGNC91-93 (3) (code 15943).','Accuracy 5-10cm.','EPSG','9615','NTv2','EPSG','4644','EPSG','4749','EPSG','2823',0.05,'EPSG','8656','Latitude and longitude difference file','RGNC1991_NEA74Noumea.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ESRI-Ncl 0.05m',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15947','IGN72 Grande Terre to RGNC91-93 (6)','Emulation using NTv2 method of tfm IGN72 Grande Terre to RGNC91-93 (4) (code 15945).','Accuracy better than +/- 0.1 metre.','EPSG','9615','NTv2','EPSG','4662','EPSG','4749','EPSG','2822',0.1,'EPSG','8656','Latitude and longitude difference file','RGNC1991_IGN72GrandeTerre.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ESRI-Ncl 0.1m',1);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15948','DHDN to ETRS89 (8)','Developed for ATKIS (Amtliches Topographisch-Kartographisches Informationssystem [Official Topographic and Cartographic Information System]). Provides a uniform transformation across the whole country. May be used as tfm to WGS84 - see tfm code 15949.','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4314','EPSG','4258','EPSG','3339',1.0,'EPSG','8656','Latitude and longitude difference file','BETA2007.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'BKG-Deu BeTA2007',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15948','DHDN to ETRS89 (8)','Developed for ATKIS (Amtliches Topographisch-Kartographisches Informationssystem [Official Topographic and Cartographic Information System]). Provides a uniform transformation across the whole country. May be used as tfm to WGS84 - see tfm code 15949.','For applications requiring an accuracy of better than 1 metre.','EPSG','9615','NTv2','EPSG','4314','EPSG','4258','EPSG','3339',0.9,'EPSG','8656','Latitude and longitude difference file','BETA2007.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'BKG-Deu BeTA2007',0);
|
||||
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);
|
||||
|
||||
@@ -241,17 +241,17 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','1311','ED50 to WGS 84 (18)',
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1314','OSGB 1936 to WGS 84 (6)','For a more accurate transformation see OSGB 1936 / British National Grid to ETRS89 (2) (code 1039): contact the Ordnance Survey of Great Britain (http://www.gps.gov.uk/gpssurveying.asp) for details.','Oil exploration. Accuracy better than 4m and generally better than 2m.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4277','EPSG','4326','EPSG','1264',2.0,446.448,-125.157,542.06,'EPSG','9001',0.15,0.247,0.842,'EPSG','9104',-20.489,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'UKOOA-Pet',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1315','OSGB 1936 to ED50 (UKOOA)','This transformation is concatenated from OSGB36 to WGS 84 (Petroleum) (code 1314) minus ED50 to WGS 84 (Common Offshore) (code 1311).','For oil exploration. Accuracy better than 4m and generally better than 2m.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4277','EPSG','4230','EPSG','1264',2.0,535.948,-31.357,665.16,'EPSG','9001',0.15,0.247,0.998,'EPSG','9104',-21.689,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'UKOOA-UKCS',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1316','Manoca to WGS 84 (1)','','?','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4260','EPSG','4326','EPSG','1060',999.0,-70.9,-151.8,-41.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,'SCS-Cmr',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1317','Camacupa to WGS 72BE (1)','Derived by Geophysical Services Inc. in 1979 from mean of Transit results at 7 stations.','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4324','EPSG','1604',10.0,-37.2,-370.6,-228.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'GSI-Ago',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1318','Camacupa to WGS 84 (1)','','Used for oil exploration by Conoco.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2316',10.0,-42.01,-332.21,-229.75,'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,'CON-Ago B5',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1319','Camacupa to WGS 84 (2)','','Used for oil exploration by Texaco.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2317',25.0,-40.0,-354.0,-224.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,'TEX-Ago B2',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1320','Camacupa to WGS 84 (3)','Replaced by Camacupa to WGS 84 (9). Used by Shell prior to 1994.','Oil exploration prior to 1994.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2321',10.0,-37.2,-370.6,-224.0,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.219,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SHL-Ago old',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1321','Camacupa to WGS 84 (4)','Derived as mean of 123 Transit passes at station Cabo Ledo NE base in November 1990. Used by Elf for block 7 up to December 1992 then replaced by Camacupa to WGS 84 (7). Used by Total in block 8, ExxonMobil block 24, Western Geophysical for spec. data.','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2320',10.0,-41.8,-342.2,-228.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,'GSI-Ago',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1322','Camacupa to WGS 84 (5)','Derived at station Djeno during coordination of platform PAL F2 in February 1992. Used by Elf for block 3 up to December 1992 then replaced by Camacupa to WGS 84 (7).','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2318',3.0,-55.5,-348.0,-229.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,'ELF-Ago B3 old',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1323','Camacupa to WGS 84 (6)','Derived at Luanda observatory December 1992.','Used for oil exploration by Elf for 1993 block 7 shallow water survey.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2319',8.0,-43.0,-337.0,-233.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,'ELF-Ago B7 old',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1324','Camacupa to WGS 84 (7)','Derived at platform PAL F2 in December 1992. For use in blocks 3, 7 and 17, replaced by Camacupa to WGS 84 (10) (code 1327).','Used for oil exploration by Elf for blocks 3, 7 and 17 between December 1992 and 1994 then superseded by Camacupa to WGS 84 (10). Used by Exxon for block 15 since 1993.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2322',3.0,-48.0,-345.0,-231.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,'ELF-Ago B15',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1325','Camacupa to WGS 84 (8)','Derived at platform PAL F2 in December 1992. Used by Total for block 2 between December 1992 and 1994 then replaced by Camacupa to WGS 84 (10).','Oil exploration between December 1992 and 1994.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2317',3.0,-48.6,-345.1,-230.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-Ago B2 old',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1326','Camacupa to WGS 84 (9)','Derived by GPS on two Topnav DGPS reference stations at Djeno and Luanda. Replaces Camacupa to WGS 84 (3). In block 18 replaced by BP from 1999 by Camacupa to WGS 84 (10).','Used by Shell since 1994.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2323',10.0,-41.057,-374.564,-226.287,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.219,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SHL-Ago B16',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1327','Camacupa to WGS 84 (10)','Derived at platform PAL F2 in 1994 by Topnav using Doris.','Used for oil exploration by Elf in blocks 3 and 17 since 1994. Used by Total in block 2 since 1994. Adopted by BP-Amoco Elf and Exxon for blocks 18 and 31-33 in 1999.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2324',5.0,-50.9,-347.6,-231.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,'ELF-Ago N',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1317','Camacupa 1948 to WGS 72BE (1)','Derived by Geophysical Services Inc. in 1979 from mean of Transit results at 7 stations.','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4324','EPSG','1604',10.0,-37.2,-370.6,-228.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'GSI-Ago',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1318','Camacupa 1948 to WGS 84 (1)','','Used for oil exploration by Conoco.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2316',10.0,-42.01,-332.21,-229.75,'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,'CON-Ago B5',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1319','Camacupa 1948 to WGS 84 (2)','','Used for oil exploration by Texaco.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2317',25.0,-40.0,-354.0,-224.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,'TEX-Ago B2',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1320','Camacupa 1948 to WGS 84 (3)','Replaced by Camacupa 1948 to WGS 84 (9). Used by Shell prior to 1994.','Oil exploration prior to 1994.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2321',10.0,-37.2,-370.6,-224.0,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.219,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SHL-Ago old',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1321','Camacupa 1948 to WGS 84 (4)','Mean of 123 Transit passes at station Cabo Ledo NE base in November 1990. Used by Elf for block 7 up to December 1992 then replaced by Camacupa 1948 to WGS 84 (7). Used by Total in block 8, ExxonMobil block 24, Western Geophysical for spec. data.','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2320',10.0,-41.8,-342.2,-228.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,'GSI-Ago',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1322','Camacupa 1948 to WGS 84 (5)','Derived at station Djeno during coordination of platform PAL F2 in February 1992. Used by Elf for block 3 up to December 1992 then replaced by Camacupa 1948 to WGS 84 (7).','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2318',3.0,-55.5,-348.0,-229.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,'ELF-Ago B3 old',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1323','Camacupa 1948 to WGS 84 (6)','Derived at Luanda observatory December 1992.','Used for oil exploration by Elf for 1993 block 7 shallow water survey.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2319',8.0,-43.0,-337.0,-233.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,'ELF-Ago B7 old',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1324','Camacupa 1948 to WGS 84 (7)','Derived at platform PAL F2 in December 1992. For use in blocks 3, 7 and 17, replaced by Camacupa 1948 to WGS 84 (10) (code 1327).','Used for oil exploration by Elf for blocks 3, 7 and 17 between December 1992 and 1994 then superseded by Camacupa (offshore) to WGS 84 (10). Used by Exxon for block 15 since 1993.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2322',3.0,-48.0,-345.0,-231.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,'ELF-Ago B15',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1325','Camacupa 1948 to WGS 84 (8)','Derived at platform PAL F2 in December 1992. Used by Total for block 2 between December 1992 and 1994 then replaced by Camacupa 1948 to WGS 84 (10).','Oil exploration between December 1992 and 1994.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2317',3.0,-48.6,-345.1,-230.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-Ago B2 old',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1326','Camacupa 1948 to WGS 84 (9)','Derived by GPS on two Topnav DGPS reference stations at Djeno and Luanda. Replaces Camacupa 1948 to WGS 84 (3). In block 18 replaced by BP from 1999 by Camacupa 1948 to WGS 84 (10).','Used by Shell since 1994.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2323',10.0,-41.057,-374.564,-226.287,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.219,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SHL-Ago B16',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1327','Camacupa 1948 to WGS 84 (10)','Derived at platform PAL F2 in 1994 by Topnav using Doris.','Used for oil exploration by Elf in blocks 3 and 17 since 1994. Used by Total in block 2 since 1994. Adopted by BP-Amoco Elf and Exxon for blocks 18 and 31-33 in 1999.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2324',5.0,-50.9,-347.6,-231.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,'ELF-Ago N',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1328','Malongo 1987 to Mhast (1)','Malongo 1987 is an offshore extension of Mhast adopted by Chevron in 1987.','Used for oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4259','EPSG','4264','EPSG','1317',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,'CHV-Ago Cab',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1329','Mhast to WGS 84 (1)','Superseded in 1990 by trf Malongo 1987 to WGS 84 (2), code 1557. Malongo 1987 is an offshore extension of the Mhast cooordinate system.','Used for oil exploration by Chevron until superseded in 1990 by trf Malongo 1987 to WGS 84 (2), code 1557.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4264','EPSG','4326','EPSG','1317',10.0,-252.95,-4.11,-96.38,'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,'CHV-Ago Cab',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1330','Malongo 1987 to WGS 84 (1)','Derived at Station Y in April 1989 using 572 transit satellite passes. Computed value for dZ was -96.42 but -96.38 has been utilised. Replaced Malongo 1987 to WGS 84 (3) (code 15791) in 1989. Replaced by Malongo 1987 to WGS 84 (2) (code 1557) in 1990.','Offshore oil exploration and production between April 1989 and June 1990.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4259','EPSG','4326','EPSG','3180',10.0,-252.95,-4.11,-96.38,'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,'CHV-Ago Cab89',0);
|
||||
@@ -438,9 +438,9 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','1774','POSGAR 98 to SIRGAS 1
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1775','Pulkovo 1942(83) to ETRS89 (2)','Derived at 35 points of the German GPS Network DREF. From 2001 replaces Pulkovo 1942(83) to ETRS89 (1) (code 1674) within Mecklenburg-Vorpommern and Sachsen-Anhalt. From 2009 replaces tfm 1674 in all other states of former East Germany.','For applications with an accuracy at 0.1m level','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4178','EPSG','4258','EPSG','1343',0.1,24.9,-126.4,-93.2,'EPSG','9001',-0.063,-0.247,-0.041,'EPSG','9104',1.01,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IfAG-Deu E 0.1m',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1776','DHDN to ETRS89 (2)','Mean of 109 stations. Replaces DHDN to ETRS89 (1) (tfm code 1309). May be taken as approximate transformation DHDN to WGS 84 - see code 1777.','For applications with an accuracy at 3 m level','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2326',3.0,598.1,73.7,418.2,'EPSG','9001',0.202,0.045,-2.455,'EPSG','9104',6.7,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IfAG-Deu W 3m',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1777','DHDN to WGS 84 (2)','Parameter values from DHDN to ETRS89 (2) (code 1776) assuming that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Replaces DHDN to WGS 84 (1) (tfm code 1673).','For applications with an accuracy at 3 m level','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4326','EPSG','2326',3.0,598.1,73.7,418.2,'EPSG','9001',0.202,0.045,-2.455,'EPSG','9104',6.7,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Deu W 3m',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1778','DHDN to ETRS89 (3)','Derived in 2001 at 41 points of the German GPS Network DREF.','For applications with an accuracy at 0.1m level','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2543',0.1,597.1,71.4,412.1,'EPSG','9001',0.894,0.068,-1.563,'EPSG','9104',7.58,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IfAG-Deu W-S',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1779','DHDN to ETRS89 (4)','Derived at 27 points of the German GPS Network DREF.','For applications with an accuracy at 0.1m level','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2542',0.1,584.8,67.0,400.3,'EPSG','9001',0.105,0.013,-2.378,'EPSG','9104',10.29,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IfAG-Deu W-cen',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1780','DHDN to ETRS89 (5)','Derived at 21 points of the German GPS Network DREF.','For applications with an accuracy at 0.1m level','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2541',0.1,590.5,69.5,411.6,'EPSG','9001',-0.796,-0.052,-3.601,'EPSG','9104',8.3,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IfAG-Deu W-N',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1778','DHDN to ETRS89 (3)','Derived in 2001 at 41 points of the German GPS Network DREF.','For applications with an accuracy at sub-metre level.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2543',1.0,597.1,71.4,412.1,'EPSG','9001',0.894,0.068,-1.563,'EPSG','9104',7.58,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IfAG-Deu W-S',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1779','DHDN to ETRS89 (4)','Derived at 27 points of the German GPS Network DREF.','For applications with an accuracy at sub-metre level.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2542',1.0,584.8,67.0,400.3,'EPSG','9001',0.105,0.013,-2.378,'EPSG','9104',10.29,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IfAG-Deu W-cen',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1780','DHDN to ETRS89 (5)','Derived at 21 points of the German GPS Network DREF.','For applications with an accuracy at sub-metre level','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2541',1.0,590.5,69.5,411.6,'EPSG','9001',-0.796,-0.052,-3.601,'EPSG','9104',8.3,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IfAG-Deu W-N',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1781','DHDN to ETRS89 (6)','Derived at 10 points of the German GPS Network DREF.','For applications with an accuracy at 0.1m level','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2544',0.1,599.4,72.4,419.2,'EPSG','9001',-0.062,-0.022,-2.723,'EPSG','9104',6.46,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IfAG-Deu Thur',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1782','DHDN to ETRS89 (7)','Derived at 35 points of the German GPS Network DREF.','For applications with an accuracy at 0.1m level','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2545',0.1,612.4,77.0,440.2,'EPSG','9001',-0.054,0.057,-2.797,'EPSG','9104',2.55,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IfAG-Deu Sach',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1783','ED50 to ETRS89 (9)','May be taken as approximate transformation ED50 to WGS 84 - see code 1784. Note: the ETRS89 CRS is not used in Turkey.','For applications to an accuracy of 2 metres.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4258','EPSG','1237',2.0,-84.1,-101.8,-129.7,'EPSG','9001',0.0,0.0,0.468,'EPSG','9104',1.05,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'HGK-Tur',0);
|
||||
@@ -763,7 +763,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','5333','ITRF2005 to ITRF2008
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5350','Campo Inchauspe to POSGAR 2007 (1)','Adopted from U.S. Defense Mapping Agency values for Campo Inchauspe to WGS 84 (tfm code 1127) assuming that POSGAR 2007 is equivalent to WGS 84.','Accuracy 5m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4221','EPSG','5340','EPSG','3215',5.0,-148.0,136.0,90.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Arg',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5351','POSGAR 2007 to WGS 84 (1)','','Approximation at the sub meter level.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5340','EPSG','4326','EPSG','1033',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Arg',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5374','MARGEN to WGS 84 (1)','','Accuracy 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5354','EPSG','4326','EPSG','1049',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Bol',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5375','SIRGAS-Chile to WGS 84 (1)','','Accuracy 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5360','EPSG','4326','EPSG','1066',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Chl',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5375','SIRGAS-Chile to WGS 84 (1)','','Accuracy 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','9184','EPSG','4326','EPSG','1066',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Chl',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5376','CR05 to WGS 84 (1)','','Accuracy 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5365','EPSG','4326','EPSG','1074',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Cri',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5377','MACARIO SOLIS to WGS 84 (1)','','Accuracy 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5371','EPSG','4326','EPSG','1186',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Pan',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5378','Peru96 to WGS 84 (1)','','Accuracy 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5373','EPSG','4326','EPSG','1189',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Per',0);
|
||||
@@ -861,7 +861,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','6701','GDBD2009 to WGS 84 (1
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6710','RDN2008 to ETRS89 (1)','May be taken as approximate transformation RDN2008 to WGS 84 - see code 6711.','RDN2008 is a national realization of ETRS89.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6706','EPSG','4258','EPSG','1127',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,'OGP-Ita',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6711','RDN2008 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84. RDN2008 is a regional realisation of ETRS89.','Accuracy +/- 1 metre.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6706','EPSG','4326','EPSG','1127',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Ita',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6864','ITRF96 to NAD83(CORS96) (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. Jointly derived by Canada and US at 12 North American VLBI stations. Replaced by tfm code 6865 from 2000-01-01. See tfm code 8259 for Canadian equivalent.','Geodesy. Definition of NAD83(CORS96) from 1st January 1997 through 31st December 1999 and is therefore treated as errorless.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4917','EPSG','6781','EPSG','1511',0.0,0.991,-1.9072,-0.5129,'EPSG','9001',25.79,9.65,11.66,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1042',0.0532,-0.7423,-0.0316,'EPSG','1032',0.0,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'NGS-US CORS96',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6865','ITRF97 to NAD83(CORS96) (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. 1996 derivation (see tfm 6864) concatenated with IGS value of ITRF96>ITRF97. Replaced by tfm code 6865 from 2000-01-01. See tfm code 8260 for Canadian equivalent.','Geodesy. Redefinition of NAD83(CORS96) from January 2000 through December 2001.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4918','EPSG','6781','EPSG','1511',0.06,0.9889,-1.9074,-0.503,'EPSG','9001',25.915,9.426,11.599,'EPSG','1031',-0.93,'EPSG','1028',0.0007,-0.0001,0.0019,'EPSG','1042',0.067,-0.757,-0.031,'EPSG','1032',-0.19,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'NGS-US CORS96',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6865','ITRF97 to NAD83(CORS96) (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. 1996 derivation (see tfm 6864) concatenated with IGS value of ITRF96>ITRF97. Replaced by tfm code 6865 from 2000-01-01. See tfm code 8260 for Canadian equivalent.','Geodesy. Redefinition of NAD83(CORS96) from January 2000 through December 2001.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4918','EPSG','6781','EPSG','1511',0.0,0.9889,-1.9074,-0.503,'EPSG','9001',25.915,9.426,11.599,'EPSG','1031',-0.93,'EPSG','1028',0.0007,-0.0001,0.0019,'EPSG','1042',0.067,-0.757,-0.031,'EPSG','1032',-0.19,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'NGS-US CORS96',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6866','ITRF2000 to NAD83(CORS96) (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. Joint derivation by Canada and US (tfm 6864) concatenated with IGS value for ITRF96>97 and IERS ITRF97>2000 transformations. See tfm 8261 for Canadian equivalent.','Geodesy. Definition of NAD83(CORS96) from 1st January 2002 through 6th September 2011 and is therefore treated as errorless.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4919','EPSG','6781','EPSG','1511',0.0,0.9956,-1.9013,-0.5215,'EPSG','9001',25.915,9.426,11.599,'EPSG','1031',0.62,'EPSG','1028',0.0007,-0.0007,0.0005,'EPSG','1042',0.067,-0.757,-0.051,'EPSG','1032',-0.18,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'NGS-US CORS96',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6872','Abidjan 1987 to WGS 84 (2)','Derived and used by Western Geophysical for offshore surveys in the 1990s, but exact provenance uncertain. Used by OMV.','Accuracy uncertain but there is some evidence of unknown reliability that suggests accuracy of better than 2m throughout offshore.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4143','EPSG','4326','EPSG','2296',2.0,-123.1,53.2,465.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,'WGC-Civ',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6873','Tananarive to WGS 84 (2)','Derived at 9 points throughout Madagascar. Adopted by OMV.','For applications with an accuracy of 3m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4297','EPSG','4326','EPSG','1149',3.0,-198.383,-240.517,-107.909,'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,'ROG-Mdg',0);
|
||||
@@ -901,16 +901,16 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','6942','AGD66 to PNG94 (7)','
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6943','AGD66 to WGS 84 (21)','Parameter values taken from AGD66 to PNG94 (3) (code 6938). Approximation at the +/- 5m level assuming that PNG94 is equivalent to WGS 84 within the accuracy of the transformation.','Low accuracy transformation suitable for mapping and navigation purposes only.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','4214',5.0,-129.0,-58.0,152.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Qcl-Png Mainland',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6944','AGD66 to WGS 84 (22)','Parameter values taken from AGD66 to PNG94 (5) (code 6940). Approximation at the +/- 4m level assuming that PNG94 is equivalent to WGS 84 within the accuracy of the transformation.','Low accuracy transformation suitable for mapping and navigation purposes only.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','4013',4.0,-131.3,-55.3,151.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Qcl-Png PFTB 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6945','AGD66 to WGS 84 (23)','Parameter values taken from AGD66 to PNG94 (7) (code 6942). Approximation at the +/- 4m level assuming that PNG94 is equivalent to WGS 84 within the accuracy of the transformation.','Low accuracy transformation suitable for mapping and navigation purposes only.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','4216',4.0,-137.4,-58.9,150.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Qcl-Png North Fly',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6949','PSAD56 to SIRGAS-Chile (1)','Also used as a transformation from PSAD56 to WGS 84 - see code 6971.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','5360','EPSG','4231',5.0,-302.0,272.0,-360.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl A',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6950','PSAD56 to SIRGAS-Chile (2)','Also used as a transformation from PSAD56 to WGS 84 - see code 6972.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','5360','EPSG','4222',5.0,-328.0,340.0,-329.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl B',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6951','PSAD56 to SIRGAS-Chile (3)','Also used as a transformation from PSAD56 to WGS 84 - see code 6973.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','5360','EPSG','4221',5.0,-352.0,403.0,-287.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl C',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6949','PSAD56 to SIRGAS-Chile (1)','Also used as a transformation from PSAD56 to WGS 84 - see code 6971.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','9184','EPSG','4231',5.0,-302.0,272.0,-360.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl A',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6950','PSAD56 to SIRGAS-Chile (2)','Also used as a transformation from PSAD56 to WGS 84 - see code 6972.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','9184','EPSG','4222',5.0,-328.0,340.0,-329.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl B',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6951','PSAD56 to SIRGAS-Chile (3)','Also used as a transformation from PSAD56 to WGS 84 - see code 6973.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','9184','EPSG','4221',5.0,-352.0,403.0,-287.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl C',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6960','VN-2000 to WGS 84 (2)','','Academic research not officially adopted.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4756','EPSG','4326','EPSG','3328',1.0,-191.90441429,-39.30318279,-111.45032835,'EPSG','9001',-0.00928836,0.01975479,-0.00427372,'EPSG','9104',0.252906278,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DoSM-Vnm',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6963','Albanian 1987 to ETRS89 (1)','Derived using 90 stations, mse 18cm. May be taken as approximate transformation from Albanian 1987 to WGS 84 (see code 6964).','Use only for horizontal coordinates; geoid heights must be calculated with ALBGEO3 software.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4191','EPSG','4258','EPSG','3212',0.2,-44.183,-0.58,-38.489,'EPSG','9001',2.3867,2.7072,-3.5196,'EPSG','9104',-8.2703,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Alb 2D',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6964','Albanian 1987 to WGS 84 (1)','Parameter values from Albanian 1987 to ETRS89 (1) (code 6963). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.','Use only for horizontal coordinates; geoid heights must be calculated with ALBGEO3 software.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4191','EPSG','4326','EPSG','3212',1.0,-44.183,-0.58,-38.489,'EPSG','9001',2.3867,2.7072,-3.5196,'EPSG','9104',-8.2703,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-Alb 2D',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6967','SAD69 to SIRGAS-Chile (1)','Also used as a transformation from SAD69 to WGS 84 - see code 6974. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','4232',5.0,-59.0,-11.0,-52.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl A',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6968','SAD69 to SIRGAS-Chile (2)','Also used as a transformation from SAD69 to WGS 84 - see code 6975. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','5360','EPSG','4224',5.0,-64.0,0.0,-32.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl B',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6968','SAD69 to SIRGAS-Chile (2)','Also used as a transformation from SAD69 to WGS 84 - see code 6975. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','9184','EPSG','4224',5.0,-64.0,0.0,-32.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl B',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6969','SAD69 to SIRGAS-Chile (3)','Also used as a transformation from SAD69 to WGS 84 - see code 6976. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','4221',5.0,-72.0,10.0,-32.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl C',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6970','SAD69 to SIRGAS-Chile (4)','Also used as a transformation from SAD69 to WGS 84 - see code 6977.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','5360','EPSG','2805',5.0,-79.0,13.0,-14.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl D',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6970','SAD69 to SIRGAS-Chile (4)','Also used as a transformation from SAD69 to WGS 84 - see code 6977.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','9184','EPSG','2805',5.0,-79.0,13.0,-14.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl D',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6971','PSAD56 to WGS 84 (15)','Derived at 5 stations. Replaces PSAD56 to WGS 84 (3) (code 1203). Also used as a transformation from PSAD56 to SIRGAS-Chile - see code 6949.','For military purposes. Accuracy 10m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','4231',17.0,-302.0,272.0,-360.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NGA-Chl N 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6972','PSAD56 to WGS 84 (16)','Derived at 7 stations. Also used as a transformation from PSAD56 to SIRGAS-Chile - see code 6950.','For military purposes. Accuracy 10m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','4222',17.0,-328.0,340.0,-329.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NGA-Chl Cen 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','6973','PSAD56 to WGS 84 (17)','Derived at 6 stations. Replaces PSAD56 to WGS 84 (4) (code 1204). Info source gives S limit as 44°S but Chilean IGM states that PSAD56 limit is 43°30''S. Also used as a transformation from PSAD56 to SIRGAS-Chile - see code 6951.','For military purposes. Accuracy 10m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','4221',17.0,-352.0,403.0,-287.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NGA-Chl S 2014',0);
|
||||
@@ -933,8 +933,8 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','7442','Nord Sahara 1959 to W
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7443','ONGD14 to WGS 84 (2)','Approximation at the +/- 1m level assuming that ONG14 is equivalent to WGS 84. See transformation code 7377 for authoritative values.','Geodesy.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','7373','EPSG','4326','EPSG','1183',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-Omn',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7444','CGRS93 to ETRS89 (1)','Derived at 6 points at epoch 1993.1. May be taken as approximate transformation CGRS93 to WGS 84 - see code 7445.','Small scale hydrographic and aviation mapping.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','6311','EPSG','4258','EPSG','3236',0.1,8.846,-4.394,-1.122,'EPSG','9001',0.00237,0.146528,-0.130428,'EPSG','9104',0.783926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DLS-Cyp',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7445','CGRS93 to WGS 84 (1)','Parameter values from CGRS93 to ETRS89 (1) (code 7444). Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','Small scale hydrographic and aviation mapping.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','6311','EPSG','4326','EPSG','3236',1.0,8.846,-4.394,-1.122,'EPSG','9001',0.00237,0.146528,-0.130428,'EPSG','9104',0.783926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-Cyp',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7448','SAD69 to SIRGAS-Chile (1)','Also used as a transformation from SAD69 to WGS 84 - see code 6974. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','5360','EPSG','4232',5.0,-59.0,-11.0,-52.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl A',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7449','SAD69 to SIRGAS-Chile (3)','Also used as a transformation from SAD69 to WGS 84 - see code 6976. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','5360','EPSG','4221',5.0,-72.0,10.0,-32.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl C',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7448','SAD69 to SIRGAS-Chile (1)','Also used as a transformation from SAD69 to WGS 84 - see code 6974. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','9184','EPSG','4232',5.0,-59.0,-11.0,-52.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl A',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7449','SAD69 to SIRGAS-Chile (3)','Also used as a transformation from SAD69 to WGS 84 - see code 6976. Note: SAD69 adopted in Chile only south of 43°30''S.','Small and medium scale cartographic mapping.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','9184','EPSG','4221',5.0,-72.0,10.0,-32.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Chl C',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7666','WGS 84 (G1762) to ITRF2008 (1)','Defined at epoch 2005.0. Scale difference in ppb where 1/billion = 1E-9 or nm/m.','Geodesy.','EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7664','EPSG','5332','EPSG','1262',0.01,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NGA-Wld 2005.0',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7667','WGS 84 (G1674) to WGS 84 (G1762) (1)','Defined at epoch 2005.0. Scale difference in ppb where 1/billion = 1E-9 or nm/m.','Geodesy.','EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7662','EPSG','7664','EPSG','1262',0.01,-4.0,3.0,4.0,'EPSG','1025',0.27,-0.27,0.38,'EPSG','1031',-6.9,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NGA-Wld 2005.0',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7668','WGS 84 (G1150) to WGS 84 (G1762) (1)','Defined at epoch 2001.0. Scale difference in ppb where 1/billion = 1E-9 or nm/m.','Geodesy','EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7660','EPSG','7664','EPSG','1262',0.02,-6.0,5.0,20.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',-4.5,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NGA-Wld 2001.0',0);
|
||||
@@ -954,9 +954,9 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','7720','CGRS93 to ETRS89 (1)'
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7721','CGRS93 to WGS 84 (1)','Parameter values from CGRS93 to ETRS89 (1) (code 7720). Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','Small scale hydrographic and aviation mapping.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','6311','EPSG','4326','EPSG','3236',1.0,8.846,-4.394,-1.122,'EPSG','9001',0.00237,0.146528,-0.130428,'EPSG','9104',0.783926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-Cyp',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7790','ITRF2008 to ITRF2014 (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. Estimated using 127 stations at 125 sites.','Geodesy','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','5332','EPSG','7789','EPSG','1262',0.01,-1.6,-1.9,-2.4,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.02,'EPSG','1028',0.0,0.0,0.1,'EPSG','1027',0.0,0.0,0.0,'EPSG','1032',-0.03,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IERS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7806','Pulkovo 1942(83) to BGS2005 (1)','Older CRSs (CS30, CS50, CS70) must first be transformed to Pulkovo 1942(83) before this transformation is applied.','Official transformation for converting existing geodetic and cartographic materials to BGS2005.','EPSG','1063','Molodensky-Badekas (PV geog2D domain)','EPSG','4178','EPSG','7798','EPSG','3224',5.0,5.0,-133.0,-104.0,'EPSG','9001',-1.4,-2.0,3.4,'EPSG','9104',-3.9901,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4223032.0,2032778.0,4309209.0,'EPSG','9001','RD-Bul',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7807','ITRF2008 to NAD83(2011) (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. Joint derivation by Canada and US (tfm 6864) concatenated with IGS value for ITRF96>97 and IERS ITRF97>2008 transformations. See tfm 8264 for Canadian equivalent.','Geodesy.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','5332','EPSG','6317','EPSG','1511',0.1,0.99343,-1.90331,-0.52655,'EPSG','9001',25.91467,9.42645,11.59935,'EPSG','1031',1.71504,'EPSG','1028',0.00079,-0.0006,-0.00134,'EPSG','1042',0.06667,-0.75744,-0.05133,'EPSG','1032',-0.10201,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'NGS-NA',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7808','ITRF2008 to NAD83(PA11) (1)','Information source gives IGS08 as source CRS: for most practical purposes IGS08 is equivalent to ITRF2008.','Geodesy.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','5332','EPSG','6320','EPSG','4162',0.1,0.908,-2.0161,-0.5653,'EPSG','9001',27.741,13.469,2.712,'EPSG','1031',1.1,'EPSG','1028',0.0001,0.0001,-0.0018,'EPSG','1042',-0.384,1.007,-2.186,'EPSG','1032',0.08,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'NGS-PA',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7809','ITRF2008 to NAD83(MA11) (1)','Information source gives IGS08 as source CRS: for most practical purposes IGS08 is equivalent to ITRF2008.','Geodesy.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','5332','EPSG','6323','EPSG','4167',0.1,0.908,-2.0161,-0.5653,'EPSG','9001',28.971,10.42,8.928,'EPSG','1031',1.1,'EPSG','1028',0.0001,0.0001,-0.0018,'EPSG','1042',-0.02,0.105,-0.347,'EPSG','1032',0.08,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'NGS-MA',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7807','ITRF2008 to NAD83(2011) (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. Joint derivation by Canada and US (tfm 6864) concatenated with IGS value for ITRF96>97 and IERS ITRF97>2008 transformations. See tfm 8264 for Canadian equivalent.','Geodesy.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','5332','EPSG','6317','EPSG','1511',0.0,0.99343,-1.90331,-0.52655,'EPSG','9001',25.91467,9.42645,11.59935,'EPSG','1031',1.71504,'EPSG','1028',0.00079,-0.0006,-0.00134,'EPSG','1042',0.06667,-0.75744,-0.05133,'EPSG','1032',-0.10201,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'NGS-NA',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7808','ITRF2008 to NAD83(PA11) (1)','Information source gives IGS08 as source CRS: for most practical purposes IGS08 is equivalent to ITRF2008.','Geodesy.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','5332','EPSG','6320','EPSG','4162',0.0,0.908,-2.0161,-0.5653,'EPSG','9001',27.741,13.469,2.712,'EPSG','1031',1.1,'EPSG','1028',0.0001,0.0001,-0.0018,'EPSG','1042',-0.384,1.007,-2.186,'EPSG','1032',0.08,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'NGS-PA',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7809','ITRF2008 to NAD83(MA11) (1)','Information source gives IGS08 as source CRS: for most practical purposes IGS08 is equivalent to ITRF2008.','Geodesy.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','5332','EPSG','6323','EPSG','4167',0.0,0.908,-2.0161,-0.5653,'EPSG','9001',28.971,10.42,8.928,'EPSG','1031',1.1,'EPSG','1028',0.0001,0.0001,-0.0018,'EPSG','1042',-0.02,0.105,-0.347,'EPSG','1032',0.08,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'NGS-MA',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7814','ITRF89 to ITRF2000 (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m.','Geodesy','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4911','EPSG','4919','EPSG','1262',0.01,-2.97,-4.75,7.39,'EPSG','1033',0.0,0.0,0.18,'EPSG','1031',-5.85,'EPSG','1028',0.0,0.06,0.14,'EPSG','1034',0.0,0.0,-0.02,'EPSG','1032',-0.01,'EPSG','1030',1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IERS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7817','UCS-2000 to ITRF2000 (1)','Derived for epoch 2005.0 at which time it defines UCS-2000 and is therefore exact (accuracy = 0) at this epoch. May be taken as approximate transformation UCS-2000 to WGS 84 - see code 5840.','For applications to an accuracy of 1 metre.','EPSG','1031','Geocentric translations (geocentric domain)','EPSG','5558','EPSG','4919','EPSG','1242',0.0,24.322,-121.372,-75.847,'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,'SSGC-Ukr',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7833','Albanian 1987 to ETRS89 (1)','Derived using 90 stations by Military Geographical Institute of Italy (IGM) on behalf of ASIG. mse = 18cm. May be taken as approximate transformation from Albanian 1987 to WGS 84 (see code 7834).','Use only for horizontal coordinates; geoid heights must be calculated with ALBGEO3 software.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4191','EPSG','4258','EPSG','3212',0.2,-44.183,-0.58,-38.489,'EPSG','9001',-2.3867,-2.7072,3.5196,'EPSG','9104',-8.2703,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Alb 2D',0);
|
||||
@@ -1046,9 +1046,13 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','8680','MGI 1901 to ETRS89 (7
|
||||
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);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8688','MGI 1901 to WGS 84 (12)','Parameter values from MGI to Slovenia 1996 (12) (tfm code 8689) assuming Slovenia 1996 and WGS 84 can be considered the same to within the accuracy of the transformation.','1m accuracy.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','3307',1.0,476.08,125.947,417.81,'EPSG','9001',-4.610862,-2.388137,11.942335,'EPSG','9104',9.896638,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'GuRS-Svn 2010',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8689','MGI 1901 to Slovenia 1996 (12)','Derived at 479 nodes of Delauney triangulation generated from 1958 control points. Replaces MGI 1901 to Slovenia 1996 (1) (code 3916). May be taken as approximate transformation MGI 1901 to WGS 84 (see code 8688).','1m accuracy.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3307',1.0,476.08,125.947,417.81,'EPSG','9001',-4.610862,-2.388137,11.942335,'EPSG','9104',9.896638,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'GuRS-Svn 2010',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8695','Camacupa 1948 to Camacupa 2015 (1)','Concatenation of transformations 1327 and 8882.','Geodesy.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4220','EPSG','8694','EPSG','2324',5.8,42.899,-214.863,-11.927,'EPSG','9001',-1.844,0.648,-6.37,'EPSG','9104',0.169,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-Ago',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8696','Camacupa 1948 to Camacupa 2015 (2)','Concatenation of transformations 1324 and 8882.','Geodesy.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4220','EPSG','8694','EPSG','2322',4.2,45.799,-212.263,-11.927,'EPSG','9001',-1.844,0.648,-6.37,'EPSG','9104',0.169,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-Ago B15',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8819','RSAO13 to WGS 84 (1)','Approximation at the +/- 1m level assuming that RSAO13 is equivalent to WGS 84within the accuracy of the transformation.','Approximation at the 1m level.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','8699','EPSG','4326','EPSG','1029',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,'IOGP-Ago',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8822','MTRF-2000 to WGS 84 (1)','Approximation at the +/- 1m level assuming that MTRF-2000 (ITRF2000 at epoch 2004.00) is equivalent to WGS 84.','Accuracy +/- 1 metre.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','8818','EPSG','4326','EPSG','1206',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Sau',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8823','MGI 1901 to WGS 84 (13)','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','4326','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','8824','Ain el Abd to MTRF-2000 (1)','Accuracy given as ''several metres''. More precise national cellular transformation parameters were also determined. Software coded for these cellular transformations is available in MOMRA.','National transformation parameters.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4204','EPSG','8818','EPSG','3303',5.0,-61.15,-315.86,-3.51,'EPSG','9001',0.41,0.74,-3.52,'EPSG','9104',1.36,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'MOMRA-Sau',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8827','Camacupa 2015 to RSAO13 (1)','Derived by Univ. of Lisbon for CIDDEMA using 38 REPANGOL points in Angola (except SE) and Cabinda. Average horizontal error 1m, vertical 3m; max radial error 6m.','Demarcation of Angola EEZ.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','8694','EPSG','8699','EPSG','1029',3.0,-93.799,-132.737,-219.073,'EPSG','9001',1.844,-0.648,6.37,'EPSG','9104',-0.169,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'CIDDEMA-Ago',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8828','RGPF to WGS 84 (1)','SHOM report gives scale difference as 0.999 999 9907 (wrt unity). Transformation is to original Transit definition of WGS 84. It is consistent with later WGS 84 realisations G730, G873 and G1150 to no better than 1m.','Spatial referencing.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4687','EPSG','4326','EPSG','1098',0.5,0.072,-0.507,-0.245,'EPSG','9001',0.0183,-0.0003,0.007,'EPSG','9104',-0.0093,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'URB-Pyf',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8829','Tahiti 79 to RGPF (1)','','Spatial referencing.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4690','EPSG','4687','EPSG','3124',0.5,221.525,152.948,176.768,'EPSG','9001',2.3847,1.3896,0.877,'EPSG','9104',11.4741,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'URB-Pyf',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8830','Tahiti 79 to WGS 84 (2)','Concatenation of Tahiti 79 to RGPF (1) and RGPF to WGS 84 (1) (CT codes 8829 and 8828).','Spatial referencing.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4690','EPSG','4326','EPSG','3124',1.0,221.597,152.441,176.523,'EPSG','9001',2.403,1.3893,0.884,'EPSG','9104',11.4648,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'URB-Pyf',0);
|
||||
@@ -1081,7 +1085,11 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','8877','ITRF91 to ETRF2014 (1
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8878','ITRF90 to ETRF2014 (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m.','Realization of ETRS89 from ITRF90 through ETRF2014.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4912','EPSG','8401','EPSG','1298',0.0,-25.4,-11.5,92.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-4.79,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'EUREF-Eur 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8879','ITRF89 to ETRF2014 (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m.','Realization of ETRS89 from ITRF89 through ETRF2014.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4911','EPSG','8401','EPSG','1298',0.0,-30.4,-35.5,130.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-8.19,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'EUREF-Eur 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8880','ITRF2014 to ETRF2014 (2)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9. See ITRF2014 to ETRF2014 (1) (code 8366) for transformation which defines ETRF2014. Transformation 8407 is equivalent to 8366 but with parameter values at epoch 2010.00.','Realization of ETRS89 from ITRF2014 through ETRF2014.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7789','EPSG','8401','EPSG','1298',0.0,0.0,0.0,0.0,'EPSG','1025',1.785,11.151,-16.17,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',0.085,0.531,-0.77,'EPSG','1032',0.0,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'EUREF-Eur 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8882','Camacupa 2015 to WGS 84 (11)','Derived by Univ. of Lisbon for CIDDEMA using 38 REPANGOL points in Angola (except SE) and Cabinda. Average horizontal error 1m, vertical 3m; max radial error 6m. Application offshore differs from Camacupa 1948 to WGS 84 by approx 25m.','Used by CIDDEMA for delimitation of Angola''s EEZ boundary.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','8694','EPSG','4326','EPSG','1029',3.0,-93.799,-132.737,-219.073,'EPSG','9001',1.844,-0.648,6.37,'EPSG','9104',-0.169,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'CIDDEMA-Ago',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8883','Camacupa 1948 to RSAO13 (1)','Parameter values taken from Camacupa 1948 to WGS 84 (7) (code 1324) assuming that RSAO13 is coincident with WGS 84 within the accuracy of the transformation.','Spatial referencing.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','8699','EPSG','2322',3.0,-48.0,-345.0,-231.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,'ELF-Ago B15',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8884','Camacupa 1948 to RSAO13 (2)','Parameter values taken from Camacupa 1948 to WGS 84 (10) (code 1327) assuming that RSAO13 is coincident with WGS 84 within the accuracy of the transformation.','Spatial referencing.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','8699','EPSG','2324',5.0,-50.9,-347.6,-231.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-Ago N',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8886','SVY21 to WGS 84 (1)','Considered exact at 1994-01-01 when SVY21 aligned to WGS 84 (Transit).','Approximation at the +/- 1m level.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4757','EPSG','4326','EPSG','1210',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,'SLA-sgp',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8887','GDA2020 to WGS 84 (Transit) (1)','Approximation at the 3m level assuming WGS 84 (Transit) is equivalent to ITRF2014 within the accuracy of the transformation.','Spatial referencing with 3-metre accuracy.','EPSG','1031','Geocentric translations (geocentric domain)','EPSG','7842','EPSG','7815','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','8889','BGS2005 to ETRS89 (1)','BGS2005 is a national realization of ETRS89. May be taken as approximate transformation BGS2005 to WGS 84 - see code 8890.','Pan-European spatial positioning.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','7798','EPSG','4258','EPSG','1056',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,'IOGP-Bgr',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8890','BGS2005 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84. BGS2005 is a national realization of ETRS89.','Accuracy +/- 1 metre.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','7798','EPSG','4326','EPSG','1056',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,'IOGP-Bgr',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8891','LKS92 to ETRS89 (1)','LKS92 is a national realization of ETRS89. May be taken as approximate transformation LKS92 to WGS 84 - see code 1958.','Pan-European spatial positioning.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4661','EPSG','4258','EPSG','1139',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,'IOGP-Lva',0);
|
||||
@@ -1133,18 +1141,31 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','9038','IGb08 to IGS14 (1)','
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9051','ITRF94 to SIRGAS 1995 (1)','Scale difference in ppb where 1/billion = 1E-9 or nm/m.','Geodesy.','EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','4916','EPSG','4974','EPSG','3448',0.01,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1995.4,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'SIR-S Am',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9052','ITRF2000 to SIRGAS 2000 (1)','Scale difference in ppb where 1/billion = 1E-9 or nm/m.','Geodesy.','EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','4919','EPSG','4988','EPSG','3418',0.01,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2000.4,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'SIR-SC Am',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9076','WGS 84 (G873) to ITRF94 (1)','Defined at epoch 1997.0.','Geodesy','EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7658','EPSG','4916','EPSG','1262',0.1,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'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,'NGA-Wld 1997.0',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9077','ITRF2000 to NAD83(MARP00) (1)','Defines NAD83(MARP00). Equivalent transformation published on NGS web site and used in HDTP with rX=28.971 mas, rY=10.420 mas and rZ=8.928 mas at epoch 1997.00.','Geodesy.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4919','EPSG','9070','EPSG','4167',0.0,0.9102,-2.0141,-0.5602,'EPSG','9001',29.039,10.065,10.101,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1042',-0.02,0.105,-0.347,'EPSG','1032',0.0,'EPSG','1030',1993.62,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'NGS-MA',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9078','ITRF2000 to NAD83(PACP00) (1)','Defines NAD83(PACP00). Equivalent transformation published on NGS web site and used in HDTP with rX=27.741 mas, rY=13.469 mas and rZ=2.712 mas at epoch 1997.00.','Geodesy.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4919','EPSG','9073','EPSG','4162',0.0,0.9102,-2.0141,-0.5602,'EPSG','9001',29.039,10.065,10.101,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1042',-0.384,1.007,-2.186,'EPSG','1032',0.0,'EPSG','1030',1993.62,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'NGS-PA',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9079','ITRF97 to ITRF96 (2)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. Uses IGS determination. Used as first step in ITRF97 to NZGD2000 concatenated operations, followed by application of NZGD2000 deformation model.','Geodesy.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4918','EPSG','4917','EPSG','1175',0.01,0.0,-0.51,15.53,'EPSG','1025',-0.16508,0.26897,0.05984,'EPSG','1031',-1.51099,'EPSG','1028',0.69,-0.1,1.86,'EPSG','1027',-0.01347,0.01514,-0.00027,'EPSG','1032',-0.19201,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'LINZ-Nzl 97',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9080','ITRF2000 to ITRF96 (2)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. Used as first step in ITRF2000 to NZGD2000 concatenated operations, followed by application of NZGD2000 deformation model.','Geodesy.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4919','EPSG','4917','EPSG','1175',0.01,6.7,3.79,-7.17,'EPSG','1025',-0.16508,0.26897,0.11984,'EPSG','1031',0.06901,'EPSG','1028',0.69,-0.7,0.46,'EPSG','1027',-0.01347,0.01514,0.01973,'EPSG','1032',-0.18201,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'LINZ-Nzl 2000',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9081','ITRF2005 to ITRF96 (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. Used as first step in ITRF2005 to NZGD2000 concatenated operations, followed by application of NZGD2000 deformation model.','Geodesy.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4896','EPSG','4917','EPSG','1175',0.01,6.8,2.99,-12.97,'EPSG','1025',-0.16508,0.26897,0.11984,'EPSG','1031',0.46901,'EPSG','1028',0.49,-0.6,-1.34,'EPSG','1027',-0.01347,0.01514,0.01973,'EPSG','1032',-0.10201,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'LINZ-Nzl 2005',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9082','ITRF2008 to ITRF96 (2)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. Used as first step in ITRF2008 to NZGD2000 concatenated operations, followed by application of NZGD2000 deformation model.','Geodesy.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','5332','EPSG','4917','EPSG','1175',0.01,4.8,2.09,-17.67,'EPSG','1025',-0.16508,0.26897,0.11984,'EPSG','1031',1.40901,'EPSG','1028',0.79,-0.6,-1.34,'EPSG','1027',-0.01347,0.01514,0.01973,'EPSG','1032',-0.10201,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'LINZ-Nzl 2008',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9083','ITRF2014 to ITRF96 (2)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. Used as first step in ITRF2014 to NZGD2000 concatenated operations, followed by application of NZGD2000 deformation model.','Geodesy.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7789','EPSG','4917','EPSG','1175',0.01,6.4,3.99,-14.27,'EPSG','1025',-0.16508,0.26897,0.11984,'EPSG','1031',1.08901,'EPSG','1028',0.79,-0.6,-1.44,'EPSG','1027',-0.01347,0.01514,0.01973,'EPSG','1032',-0.07201,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'LINZ-Nzl 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9126','NAD83(CSRS)v2 to NAD83(CORS96) (1)','Scale difference in ppb where 1/billion = 1E-9 or nm/m. Source and target CRSs defined from ITRF96 by common transformations (codes 6864 and 8259). 6864 defines CORS96 from 1st January 1997 to 31st December 1999.','Geodesy.','EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','8233','EPSG','6781','EPSG','4544',0.0,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'ISO-N Am',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9127','NAD83(CSRS)v3 to NAD83(CORS96) (1)','Scale difference in ppb where 1/billion = 1E-9 or nm/m. Source and target CRSs defined from ITRF97 by common transformations (codes 6865 and 8260). 6865 defines CORS96 from 1st January 2000 to 31st December 2001.','Geodesy.','EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','8238','EPSG','6781','EPSG','4544',0.0,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'ISO-N Am',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9128','NAD83(CSRS)v4 to NAD83(CORS96) (1)','Scale difference in ppb where 1/billion = 1E-9 or nm/m. Source and target CRSs defined from ITRF2000 by common transformations (codes 6866 and 8261). 6866 defines CORS96 from 1st January 2002 to 6th September 2011.','Geodesy.','EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','8242','EPSG','6781','EPSG','4544',0.0,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2002.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'ISO-N Am',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9129','NAD83(CSRS)v6 to NAD83(2011) (1)','Scale difference in ppb where 1/billion = 1E-9 or nm/m. Source and target CRSs defined from ITRF2008 by common transformations (codes 7807 and 8264).','Geodesy.','EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','8250','EPSG','6317','EPSG','1262',0.0,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'ISO-N Am',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9142','MGI 1901 to KOSOVAREF01 (1)','Derived at 18 points across the area of Kosovo. May be taken as approximate transformation MGI 1901 to WGS 84 (see code 9143).','Spatial referencing.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','3906','EPSG','9140','EPSG','4542',1.0,628.54052,192.2538,498.43507,'EPSG','9001',-13.79189,-0.81467,41.21533,'EPSG','9104',-17.40368,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'KCA-Kos',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9143','MGI 1901 to WGS 84 (14)','Parameter values from MGI 1901 to KOSOVAREF01 (1) (code 9142). Assumes KOSOVAREF01 and WGS 84 can be considered the same to within the accuracy of the transformation.','Approximation at the 1m level.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','4542',1.0,628.54052,192.2538,498.43507,'EPSG','9001',-13.79189,-0.81467,41.21533,'EPSG','9104',-17.40368,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-Kos',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9144','KOSOVAREF01 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84. KOSOVAREF01 is a national realization of ETRS89.','Accuracy +/- 1 metre.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','9140','EPSG','4326','EPSG','4542',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,'IOGP-Kos',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9145','WGS 84 (Transit) to ITRF90 (1)','','Geodesy','EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','7815','EPSG','4912','EPSG','1262',1.0,-0.06,0.517,0.223,'EPSG','9001',-0.0183,0.0003,-0.007,'EPSG','9104',0.011,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IERS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9177','SIRGAS-Chile 2002 to ITRF2000 (1)','Transformation is exact at epoch 2002.00 but accuracy then decreasing with time.','Geodesy.','EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','5358','EPSG','4919','EPSG','1066',0.1,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2002.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IOGP-Chl',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9178','SIRGAS-Chile 2010 to IGS08 (1)','Transformation is exact at epoch 2010.00 but accuracy then decreasing with time.','Geodesy.','EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','8947','EPSG','6934','EPSG','1066',0.1,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IOGP-Chl',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9179','SIRGAS-Chile 2013 to IGb08 (1)','Transformation is exact at epoch 2013.00 but accuracy then decreasing with time.','Geodesy.','EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','9146','EPSG','9015','EPSG','1066',0.1,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2013.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IOGP-Chl',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9180','SIRGAS-Chile 2016 to IGb08 (1)','Transformation is exact at epoch 2016.00 but accuracy then decreasing with time.','Geodesy.','EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','9151','EPSG','9015','EPSG','1066',0.1,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2016.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IOGP-Chl',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9185','AGD66 to GDA2020 (1)','This transformation is for users wanting to apply a 7-parameter conformal transformation from AGD66 to GDA2020 in the ACT.','Spatial referencing.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4202','EPSG','7844','EPSG','2283',0.05,-136.9703,-37.5638,124.4242,'EPSG','9001',-0.25676,-0.42966,-0.30077,'EPSG','9104',-4.61966,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPD-Aus ACT',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9186','ITRF2008 to IG05/12 Intermediate CRS','Derived from Israeli CORS on ITRF2008 at epoch 2018.50. Updates CT 6993 for approx. 40cm tectonic plate motion 2012 to 2019 for GIS purposes. CT 6993 remains the legal definition of IG05/12 and must be used for cadastral and precise engineering purposes.','GIS. Note: not to be used for cadastre or precise engineering survey: see remarks.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','8999','EPSG','6990','EPSG','2603',0.05,-23.772,-17.49,-17.859,'EPSG','9001',-0.3132,-1.85274,1.67299,'EPSG','9104',5.4262,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SOI-Isr 2019',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9189','WGS 84 to IG05/12 Intermediate CRS','Parameter values from CT code 9186 assuming that WGS 84 is coincident with ITRF2008. Updates CT 6993 for approx. 40cm tectonic plate motion for GIS purposes. CT 6993 remains the legal definition of IG05/12 and must be used for cadastre and engineering.','GIS. Note: not to be used for cadastre or precise engineering survey: see remarks.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','EPSG','6990','EPSG','2603',0.1,-23.772,-17.49,-17.859,'EPSG','9001',-0.3132,-1.85274,1.67299,'EPSG','9104',5.4262,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'SOI-Isr 2019',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9223','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','4936','EPSG','4978','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',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9224','ED50 to ETRS89 (15)','Parameter values from ED50 to WGS 84 (36) assuming that ETRS89 is equivalent to WGS 84 at epoch 1989.00..','Oil and gas exploration and production..','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4258','EPSG','4566',1.0,-157.89,-17.16,-78.41,'EPSG','9001',2.118,2.697,-1.434,'EPSG','9104',-5.38,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'ONE-Ger Nsea',0);
|
||||
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','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);
|
||||
@@ -1310,8 +1331,8 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','15856','NAD27 to WGS 84 (84)
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15860','Mauritania 1999 to WGS 84 (1)','Mauritania 1999 can be considered to be the same as WGS 84 within the accuracy of this transformation.','Minerals management. Accuracy 1m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4702','EPSG','4326','EPSG','1157',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Mau',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15865','Pulkovo 1942 to WGS 84 (16)','Derived via PZ-90 at 30 stations throughout USSR (Former Soviet Union, FSU) through concatenation of Pulkovo 1942 to PZ-90 (1) (tfm code 15844) and PZ-90 to WGS 84 (1) (tfm code 15843).','Accuracy 4.5 metres.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','2423',4.5,25.0,-141.0,-78.5,'EPSG','9001',0.0,-0.35,-0.736,'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,'OGP-Rus',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15866','FD54 to ED50 (1)','Derived at 3 points in 1976. This transformation then used to define ED50 on the Faroe Islands.','Defines ED50 in the Faroe Islands: transformation therefore considered exact.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4741','EPSG','4230','EPSG','3248',0.0,-153.33,-169.41,86.39,'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,'KMS-Fro',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15867','PD/83 to ETRS89 (1)','Derived at 10 points of the German GPS Network DREF.','For applications with an accuracy at 0.1m level','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4746','EPSG','4258','EPSG','2544',0.1,599.4,72.4,419.2,'EPSG','9001',-0.062,-0.022,-2.723,'EPSG','9104',6.46,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'BKG-Deu Thur',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15868','RD/83 to ETRS89 (1)','Derived in 2001 at 31 points of the German GPS Network DREF in former East Germany. Although for high accuracy limited to Saxony, may be taken as approximate transformation between DHDN and WGS 84 for all former East German states - see code 15869.','For applications with an accuracy at 0.1m level','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4745','EPSG','4258','EPSG','2545',0.1,612.4,77.0,440.2,'EPSG','9001',-0.054,0.057,-2.797,'EPSG','9104',2.55,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'BKG-Deu Sach',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15867','PD/83 to ETRS89 (1)','Derived at 10 points of the German GPS Network DREF.','For applications with an accuracy at the sub-metre level','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4746','EPSG','4258','EPSG','2544',1.0,599.4,72.4,419.2,'EPSG','9001',-0.062,-0.022,-2.723,'EPSG','9104',6.46,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'BKG-Deu Thur',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15868','RD/83 to ETRS89 (1)','Derived in 2001 at 31 points of the German GPS Network DREF in former East Germany. Although for high accuracy limited to Saxony, may be taken as approximate transformation between DHDN and WGS 84 for all former East German states - see code 15869.','For applications with an accuracy at the sub-metre level.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4745','EPSG','4258','EPSG','2545',1.0,612.4,77.0,440.2,'EPSG','9001',-0.054,0.057,-2.797,'EPSG','9104',2.55,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'BKG-Deu Sach',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15869','DHDN to WGS 84 (3)','Parameter values taken from RD/83 to ETRS89 (1) (tfm code 15868) assuming that within the accuracy of the transformation ETRS89 is equivalent to WGS 84 and RD/83 is equivalent to DHDN.','For applications with an accuracy at 2m level','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4326','EPSG','1343',2.0,612.4,77.0,440.2,'EPSG','9001',-0.054,0.057,-2.797,'EPSG','9104',2.55,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Deu E',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15870','Jouik 1961 to WGS 84 (1)','Derived at 5 points in 2002.','Hydrographic survey','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4679','EPSG','4326','EPSG','2967',1.0,-80.01,253.26,291.19,'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,'Wood-Mrt',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15871','Nahrwan 1967 to WGS 84 (6)','Derived by concatenation of parameter values published by IGN Paris from Nahrwan 1967 to WGS 72 at the Nahrwan SE Base trig station near Baghdad with DMA WGS 72 to WGS 84 parameter values.','Oil exploration.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','3625',5.0,-242.2,-144.9,370.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,'IGN-Irq',1);
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v9.7.0');
|
||||
INSERT INTO "metadata" VALUES('EPSG.DATE', '2019-07-25');
|
||||
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v9.8.2');
|
||||
INSERT INTO "metadata" VALUES('EPSG.DATE', '2019-09-23');
|
||||
|
||||
@@ -2243,8 +2243,8 @@ INSERT INTO "projected_crs" VALUES('EPSG','5349','POSGAR 2007 / Argentina 7',NUL
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5355','MARGEN / UTM zone 20S',NULL,NULL,'EPSG','4400','EPSG','5354','EPSG','16120','EPSG','1761',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5356','MARGEN / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','5354','EPSG','16119','EPSG','3827',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5357','MARGEN / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','5354','EPSG','16121','EPSG','3733',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5361','SIRGAS-Chile / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','5360','EPSG','16119','EPSG','3811',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5362','SIRGAS-Chile / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','5360','EPSG','16118','EPSG','3829',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5361','SIRGAS-Chile 2002 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','5360','EPSG','16119','EPSG','3811',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5362','SIRGAS-Chile 2002 / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','5360','EPSG','16118','EPSG','3829',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5367','CR05 / CRTM05',NULL,NULL,'EPSG','4500','EPSG','5365','EPSG','5366','EPSG','3849',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5382','SIRGAS-ROU98 / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','5381','EPSG','16121','EPSG','3826',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5383','SIRGAS-ROU98 / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','5381','EPSG','16122','EPSG','3828',NULL,0);
|
||||
@@ -2383,7 +2383,7 @@ INSERT INTO "projected_crs" VALUES('EPSG','5890','JAXA Snow Depth Polar Stereogr
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5896','VN-2000 / TM-3 zone 481',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','5892','EPSG','4193',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5897','VN-2000 / TM-3 zone 482',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','5893','EPSG','4215',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5898','VN-2000 / TM-3 zone 491',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','5894','EPSG','4217',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5899','VN-2000 / TM-3 Da Nang zone',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','5895','EPSG','4218',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5899','VN-2000 / TM-3 107-45',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','5895','EPSG','4218',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5921','WGS 84 / EPSG Arctic Regional zone A1',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5906','EPSG','4019',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5922','WGS 84 / EPSG Arctic Regional zone A2',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5907','EPSG','4027',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','5923','WGS 84 / EPSG Arctic Regional zone A3',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5908','EPSG','4028',NULL,0);
|
||||
@@ -3571,9 +3571,36 @@ INSERT INTO "projected_crs" VALUES('EPSG','8903','RGWF96 / UTM zone 1S',NULL,NUL
|
||||
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);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','8910','CR-SIRGAS / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','8907','EPSG','16017','EPSG','4531',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','8950','SIRGAS-Chile 2010 / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','8949','EPSG','16118','EPSG','3829',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','8951','SIRGAS-Chile 2010 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','8949','EPSG','16119','EPSG','3811',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9039','ISN2016 / LAEA Europe',NULL,NULL,'EPSG','4532','EPSG','8086','EPSG','19986','EPSG','1120',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9040','ISN2016 / LCC Europe',NULL,NULL,'EPSG','4532','EPSG','8086','EPSG','19985','EPSG','1120',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9141','KOSOVAREF01 / Balkans zone 7',NULL,NULL,'EPSG','4400','EPSG','9140','EPSG','18277','EPSG','4542',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9149','SIRGAS-Chile 2013 / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','9148','EPSG','16118','EPSG','3829',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9150','SIRGAS-Chile 2013 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','9148','EPSG','16119','EPSG','3811',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9154','SIRGAS-Chile 2016 / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','9153','EPSG','16118','EPSG','3829',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9155','SIRGAS-Chile 2016 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','9153','EPSG','16119','EPSG','3811',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9156','RSAO13 / UTM zone 32S',NULL,NULL,'EPSG','4400','EPSG','8699','EPSG','16132','EPSG','4551',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9157','RSAO13 / UTM zone 33S',NULL,NULL,'EPSG','4400','EPSG','8699','EPSG','16133','EPSG','4555',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9158','RSAO13 / UTM zone 34S',NULL,NULL,'EPSG','4400','EPSG','8699','EPSG','16134','EPSG','4539',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9159','RSAO13 / TM 12 SE',NULL,NULL,'EPSG','4400','EPSG','8699','EPSG','16612','EPSG','1604',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9191','WGS 84 / NIWA Albers',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','9190','EPSG','3508',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9205','VN-2000 / TM-3 103-00',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9058','EPSG','4541',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9206','VN-2000 / TM-3 104-00',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9192','EPSG','4538',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9207','VN-2000 / TM-3 104-30',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9193','EPSG','4545',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9208','VN-2000 / TM-3 104-45',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9194','EPSG','4546',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9209','VN-2000 / TM-3 105-30',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9195','EPSG','4548',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9210','VN-2000 / TM-3 105-45',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9196','EPSG','4549',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9211','VN-2000 / TM-3 106-00',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9197','EPSG','4550',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9212','VN-2000 / TM-3 106-15',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9198','EPSG','4552',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9213','VN-2000 / TM-3 106-30',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9199','EPSG','4553',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9214','VN-2000 / TM-3 107-00',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9200','EPSG','4554',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9215','VN-2000 / TM-3 107-15',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9201','EPSG','4556',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9216','VN-2000 / TM-3 107-30',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9202','EPSG','4557',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','9217','VN-2000 / TM-3 108-15',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','9203','EPSG','4559',NULL,0);
|
||||
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','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);
|
||||
@@ -3733,10 +3760,10 @@ INSERT INTO "projected_crs" VALUES('EPSG','21896','Bogota 1975 / Colombia West z
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','21897','Bogota 1975 / Colombia Bogota zone',NULL,NULL,'EPSG','4530','EPSG','4218','EPSG','18052','EPSG','1599',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','21898','Bogota 1975 / Colombia East Central zone',NULL,NULL,'EPSG','4530','EPSG','4218','EPSG','18053','EPSG','1600',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','21899','Bogota 1975 / Colombia East zone',NULL,NULL,'EPSG','4530','EPSG','4218','EPSG','18054','EPSG','1601',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','22032','Camacupa / UTM zone 32S',NULL,NULL,'EPSG','4400','EPSG','4220','EPSG','16132','EPSG','1606',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','22033','Camacupa / UTM zone 33S',NULL,NULL,'EPSG','4400','EPSG','4220','EPSG','16133','EPSG','1607',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','22091','Camacupa / TM 11.30 SE',NULL,NULL,'EPSG','4400','EPSG','4220','EPSG','16611','EPSG','1605',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','22092','Camacupa / TM 12 SE',NULL,NULL,'EPSG','4400','EPSG','4220','EPSG','16612','EPSG','1604',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','22032','Camacupa 1948 / UTM zone 32S',NULL,NULL,'EPSG','4400','EPSG','4220','EPSG','16132','EPSG','1606',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','22033','Camacupa 1948 / UTM zone 33S',NULL,NULL,'EPSG','4400','EPSG','4220','EPSG','16133','EPSG','1607',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','22091','Camacupa 1948 / TM 11.30 SE',NULL,NULL,'EPSG','4400','EPSG','4220','EPSG','16611','EPSG','1605',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','22092','Camacupa 1948 / TM 12 SE',NULL,NULL,'EPSG','4400','EPSG','4220','EPSG','16612','EPSG','1604',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','22171','POSGAR 98 / Argentina 1',NULL,NULL,'EPSG','4530','EPSG','4190','EPSG','18031','EPSG','1608',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','22172','POSGAR 98 / Argentina 2',NULL,NULL,'EPSG','4530','EPSG','4190','EPSG','18032','EPSG','1609',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','22173','POSGAR 98 / Argentina 3',NULL,NULL,'EPSG','4530','EPSG','4190','EPSG','18033','EPSG','1610',NULL,0);
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
name: proj
|
||||
channels:
|
||||
- conda-forge
|
||||
dependencies:
|
||||
- descartes
|
||||
- doxygen < 1.8.17
|
||||
- geojson
|
||||
- matplotlib
|
||||
- shapely < 1.8
|
||||
- pip
|
||||
- pip:
|
||||
- breathe < 4.15
|
||||
- Jinja2 < 3.1
|
||||
- pybtex
|
||||
- sphinx < 3
|
||||
- sphinx-rtd-theme < 1.0
|
||||
- sphinxcontrib-bibtex
|
||||
|
Before Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 5.2 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
|
||||
|
||||
@@ -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/
|
||||
@@ -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/
|
||||
@@ -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}
|
||||
@@ -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
|
||||
@@ -0,0 +1,39 @@
|
||||
import os
|
||||
|
||||
# https://tech.signavio.com/2017/managing-sphinx-redirects
|
||||
|
||||
|
||||
template="""<html>
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="1; url=%s" />
|
||||
<script>
|
||||
window.location.href = "%s"
|
||||
</script>
|
||||
</head>
|
||||
</html>"""
|
||||
|
||||
|
||||
def gather_redirects():
|
||||
output = {}
|
||||
|
||||
output.update({ 'projjson.html' : 'usage/projjson.html' })
|
||||
return output
|
||||
|
||||
from shutil import copyfile
|
||||
# copy legacy redirects
|
||||
def copy_legacy_redirects(app, docname): # Sphinx expects two arguments
|
||||
if app.builder.name == 'html':
|
||||
for key in app.config.redirect_files:
|
||||
src = key
|
||||
tgt = app.config.redirect_files[key]
|
||||
html = template % (tgt, tgt)
|
||||
with open(os.path.join(app.outdir, src), 'wb') as f:
|
||||
f.write(html.encode('utf-8'))
|
||||
f.close()
|
||||
|
||||
|
||||
|
||||
def setup(app):
|
||||
app.add_config_value('redirect_files', {}, 'html')
|
||||
app.connect('build-finished', copy_legacy_redirects)
|
||||
return { 'parallel_read_safe': False, 'parallel_write_safe': True }
|
||||
@@ -2,27 +2,11 @@
|
||||
About
|
||||
###############################################################################
|
||||
|
||||
PROJ is a generic coordinate transformation software that transforms geospatial
|
||||
coordinates from one coordinate reference system (CRS) to another. This
|
||||
includes cartographic projections as well as geodetic transformations.
|
||||
.. include:: about_core.rst
|
||||
|
||||
PROJ includes :ref:`command line applications<apps>` for easy conversion of
|
||||
coordinates from text files or directly from user input. In addition to the
|
||||
command line utilities PROJ also exposes an
|
||||
:ref:`application programming interface<reference>`, or API in short. The API
|
||||
lets developers use the functionality of PROJ in their own software without having
|
||||
to implement similar functionality themselves.
|
||||
|
||||
PROJ started purely as a cartography application letting users convert geodetic
|
||||
coordinates into projected coordinates using a number of different cartographic
|
||||
projections. Over the years, as the need has become apparent, support for datum
|
||||
shifts has slowly worked its way into PROJ as well. Today PROJ supports more
|
||||
than a hundred different map projections and can transform coordinates between
|
||||
datums using all but the most obscure geodetic techniques.
|
||||
|
||||
.. image:: ../images/OSGeo_community.png
|
||||
:scale: 30 %
|
||||
:alt: OSGeo Community
|
||||
.. image:: ../images/OSGeo_project.png
|
||||
:scale: 30 %
|
||||
:alt: OSGeo Project
|
||||
|
||||
Citation
|
||||
-------------------------------------------------------------------------------
|
||||
@@ -31,6 +15,8 @@ Citation
|
||||
.. include:: ../../CITATION
|
||||
|
||||
|
||||
.. _license:
|
||||
|
||||
License
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
PROJ is a generic coordinate transformation software that transforms geospatial
|
||||
coordinates from one coordinate reference system (CRS) to another. This
|
||||
includes cartographic projections as well as geodetic transformations. PROJ
|
||||
is released under the :ref:`X/MIT open source license <license>`
|
||||
|
||||
PROJ includes :ref:`command line applications<apps>` for easy conversion of
|
||||
coordinates from text files or directly from user input. In addition to the
|
||||
command line utilities PROJ also exposes an
|
||||
:ref:`application programming interface<reference>`, or API in short. The API
|
||||
lets developers use the functionality of PROJ in their own software without having
|
||||
to implement similar functionality themselves.
|
||||
|
||||
PROJ started purely as a cartography application letting users convert geodetic
|
||||
coordinates into projected coordinates using a number of different cartographic
|
||||
projections. Over the years, as the need has become apparent, support for datum
|
||||
shifts has slowly worked its way into PROJ as well. Today PROJ supports more
|
||||
than a hundred different map projections and can transform coordinates between
|
||||
datums using all but the most obscure geodetic techniques.
|
||||
@@ -0,0 +1,92 @@
|
||||
.. _code_of_conduct:
|
||||
|
||||
===========================
|
||||
Code of Conduct
|
||||
===========================
|
||||
|
||||
The PROJ project has adopted the
|
||||
`Contributor Covenant Code of Conduct <https://www.contributor-covenant.org/>`_.
|
||||
Everyone who participates in the PROJ community is expected to follow the
|
||||
code of conduct as written below.
|
||||
|
||||
|
||||
Our Pledge
|
||||
----------
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to make participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
||||
level of experience, education, socio-economic status, nationality, personal
|
||||
appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
Our Standards
|
||||
-------------
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
Our Responsibilities
|
||||
--------------------
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
Scope
|
||||
-----
|
||||
|
||||
This Code of Conduct applies within all project spaces, and it also applies when
|
||||
an individual is representing the project or its community in public spaces.
|
||||
Examples of representing a project or community include using an official
|
||||
project e-mail address, posting via an official social media account, or acting
|
||||
as an appointed representative at an online or offline event. Representation of
|
||||
a project may be further defined and clarified by project maintainers.
|
||||
|
||||
Enforcement
|
||||
-----------
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting the project team at `kristianevers@gmail.com <mailto:kristianevers@gmail.com>`_.
|
||||
All complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. The project team is
|
||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||
Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
Attribution
|
||||
-----------
|
||||
|
||||
This Code of Conduct is adapted from the
|
||||
`Contributor Covenant <https://www.contributor-covenant.org>`_, version 1.4,
|
||||
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||
|
||||
For answers to common questions about this code of conduct, see
|
||||
https://www.contributor-covenant.org/faq
|
||||
|
||||
@@ -14,4 +14,5 @@ contributor the community is always very welcoming.
|
||||
channels
|
||||
contributing
|
||||
code_contributions
|
||||
code_of_conduct
|
||||
rfc/index
|
||||
|
||||
@@ -6,7 +6,7 @@ PROJ RFC 2: Initial integration of "GDAL SRS barn" work
|
||||
|
||||
:Author: Even Rouault
|
||||
:Contact: even.rouault at spatialys.com
|
||||
:Status: Adopted (not yet merged into master)
|
||||
:Status: Adopted, implemented in PROJ 6.0
|
||||
:Initial version: 2018-10-09
|
||||
:Last Updated: 2018-10-31
|
||||
|
||||
|
||||
@@ -14,12 +14,12 @@
|
||||
|
||||
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
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
sys.path.insert(0, os.path.abspath('.'))
|
||||
sys.path.insert(0, os.path.abspath('_extensions'))
|
||||
|
||||
import bibstyle
|
||||
|
||||
@@ -35,11 +35,15 @@ extensions = [
|
||||
'sphinx.ext.mathjax',
|
||||
'sphinxcontrib.bibtex',
|
||||
'breathe',
|
||||
'redirects',
|
||||
]
|
||||
|
||||
# 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']
|
||||
@@ -59,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-2019'
|
||||
|
||||
# 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.2.0'
|
||||
|
||||
# use same |release| as |version|
|
||||
release = version
|
||||
version = '6.2'
|
||||
release = '6.2.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 = 'November 2019'
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
#today_fmt = '%B %d, %Y'
|
||||
|
||||
@@ -130,8 +130,20 @@ html_theme = "sphinx_rtd_theme"
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
html_theme_options = {}
|
||||
|
||||
html_theme_options = {
|
||||
'canonical_url': 'https://proj.org',
|
||||
'logo_only': True,
|
||||
'display_version': True,
|
||||
'prev_next_buttons_location': 'both',
|
||||
'style_external_links': False,
|
||||
'style_nav_header_background': '#353130',
|
||||
# Toc options
|
||||
'collapse_navigation': True,
|
||||
'sticky_navigation': True,
|
||||
#'navigation_depth': 4,
|
||||
'includehidden': True,
|
||||
'titles_only': False
|
||||
}
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
|
||||
|
||||
@@ -144,7 +156,7 @@ html_theme_options = {}
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
#html_logo = None
|
||||
html_logo = '../images/logo.png'
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
@@ -156,10 +168,16 @@ html_theme_options = {}
|
||||
# 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 = {
|
||||
'css_files': [
|
||||
'_static/theme_overrides.css', # override wide tables in RTD theme
|
||||
],
|
||||
'display_github': True,
|
||||
'theme_vcs_pageview_mode': 'edit',
|
||||
'github_user': 'OSGeo',
|
||||
'github_repo': 'PROJ',
|
||||
'github_version': '/6.2/docs/source/',
|
||||
}
|
||||
|
||||
# Add any extra paths that contain custom files (such as robots.txt or
|
||||
@@ -232,6 +250,8 @@ preamble = r"""
|
||||
\ifdefined\DeclareUnicodeCharacter
|
||||
\DeclareUnicodeCharacter{2032}{$'$}% prime
|
||||
\fi
|
||||
|
||||
\usepackage[notbib]{tocbibind}
|
||||
"""
|
||||
|
||||
latex_elements = {
|
||||
@@ -243,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',
|
||||
@@ -358,3 +379,6 @@ texinfo_documents = [
|
||||
breathe_projects = {
|
||||
"cpp_stuff":"../build/xml/",
|
||||
}
|
||||
|
||||
import redirects
|
||||
redirect_files = redirects.gather_redirects()
|
||||
|
||||
@@ -18,6 +18,12 @@ Ruby
|
||||
`proj4rb <https://github.com/cfis/proj4rb>`_:
|
||||
Bindings for PROJ in ruby
|
||||
|
||||
Rust
|
||||
=======
|
||||
|
||||
`proj <https://github.com/georust/proj>`_:
|
||||
Rust bindings for the latest stable version of PROJ
|
||||
|
||||
TCL
|
||||
========
|
||||
`proj4tcl <http://wiki.tcl.tk/41270>`_:
|
||||
|
||||
@@ -22,8 +22,9 @@ We start by writing the program for PROJ 4:
|
||||
#include <proj_api.h>
|
||||
|
||||
main(int argc, char **argv) {
|
||||
projPJ pj_merc, pj_latlong;
|
||||
projPJ pj_merc, pj_longlat;
|
||||
double x, y;
|
||||
int p;
|
||||
|
||||
if (!(pj_longlat = pj_init_plus("+proj=longlat +ellps=clrk66")) )
|
||||
return 1;
|
||||
@@ -33,7 +34,7 @@ We start by writing the program for PROJ 4:
|
||||
while (scanf("%lf %lf", &x, &y) == 2) {
|
||||
x *= DEG_TO_RAD; /* longitude */
|
||||
y *= DEG_TO_RAD; /* latitude */
|
||||
p = pj_transform(pj_longlat, pj_merc, 1, 1, &x, &y, NULL );
|
||||
p = pj_transform(pj_longlat, pj_merc, 1, 1, &x, &y, NULL);
|
||||
printf("%.2f\t%.2f\n", x, y);
|
||||
}
|
||||
|
||||
@@ -51,7 +52,7 @@ The same program implemented using PROJ 6:
|
||||
|
||||
main(int argc, char **argv) {
|
||||
PJ *P;
|
||||
PJ_COORD c;
|
||||
PJ_COORD c, c_out;
|
||||
|
||||
/* NOTE: the use of PROJ strings to describe CRS is strongly discouraged */
|
||||
/* in PROJ 6, as PROJ strings are a poor way of describing a CRS, and */
|
||||
@@ -74,7 +75,7 @@ The same program implemented using PROJ 6:
|
||||
/* latitude for geographic CRS, and easting, northing for projected */
|
||||
/* CRS. If instead of using PROJ strings as above, "EPSG:XXXX" codes */
|
||||
/* had been used, this might had been necessary. */
|
||||
PJ* P_for_GIS = proj_normalize_for_visualization(C, P);
|
||||
PJ* P_for_GIS = proj_normalize_for_visualization(PJ_DEFAULT_CTX, P);
|
||||
if( 0 == P_for_GIS ) {
|
||||
proj_destroy(P);
|
||||
return 1;
|
||||
@@ -83,13 +84,22 @@ The same program implemented using PROJ 6:
|
||||
P = P_for_GIS;
|
||||
}
|
||||
|
||||
while (scanf("%lf %lf", &c.lp.lam, &c.lp.phi) == 2) {
|
||||
/* For reliable geographic <--> geocentric conversions, z shall not */
|
||||
/* be some random value. Also t shall be initialized to HUGE_VAL to */
|
||||
/* allow for proper selection of time-dependent operations if one of */
|
||||
/* the CRS is dynamic. */
|
||||
c.lpzt.z = 0.0;
|
||||
c.lpzt.t = HUGE_VAL;
|
||||
|
||||
while (scanf("%lf %lf", &c.lpzt.lam, &c.lpzt.phi) == 2) {
|
||||
/* No need to convert to radian */
|
||||
c = proj_trans(P, PJ_FWD, c);
|
||||
printf("%.2f\t%.2f\n", c.xy.x, c.xy.y);
|
||||
c_out = proj_trans(P, PJ_FWD, c);
|
||||
printf("%.2f\t%.2f\n", c_out.xy.x, c_out.xy.y);
|
||||
}
|
||||
|
||||
proj_destroy(P);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -107,7 +117,8 @@ Function mapping from old to new API
|
||||
+---------------------------------------+-------------------------------------------------+
|
||||
| pj_inv3 | :c:func:`proj_trans` |
|
||||
+---------------------------------------+-------------------------------------------------+
|
||||
| pj_transform | :c:func:`proj_create_crs_to_crs` + |
|
||||
| pj_transform | :c:func:`proj_create_crs_to_crs` |
|
||||
| | or :c:func:`proj_create_crs_to_crs_from_pj` + |
|
||||
| | (:c:func:`proj_normalize_for_visualization` +) |
|
||||
| | :c:func:`proj_trans`, |
|
||||
| | :c:func:`proj_trans_array` or |
|
||||
@@ -145,6 +156,31 @@ Function mapping from old to new API
|
||||
| pj_get_release | :c:func:`proj_info` |
|
||||
+---------------------------------------+-------------------------------------------------+
|
||||
|
||||
|
||||
Backward incompatibilities
|
||||
###############################################################################
|
||||
|
||||
Access to the proj_api.h is still possible but requires to define the
|
||||
``ACCEPT_USE_OF_DEPRECATED_PROJ_API_H`` macro.
|
||||
|
||||
The emulation of the now deprecated ``+init=epsg:XXXX`` syntax in PROJ 6 is not
|
||||
fully compatible with previous versions.
|
||||
|
||||
In particular, when used with the ``pj_transform()`` function, no datum shift term
|
||||
(``towgs84``, ``nadgrids``, ``geoidgrids``) will be added during the expansion of the
|
||||
``+init=epsg:XXXX`` string to ``+proj=YYYY ....``. If you still uses ``pj_transform()``
|
||||
and want datum shift to be applied, then you need to provide a fully expanded
|
||||
string with appropriate ``towgs84``, ``nadgrids`` or ``geoidgrids`` terms to ``pj_init()``.
|
||||
|
||||
To use the ``+init=epsg:XXXX`` syntax with :c:func:`proj_create` and then
|
||||
:c:func:`proj_create_crs_to_crs`, ``proj_context_use_proj4_init_rules(ctx, TRUE)``
|
||||
or the ``PROJ_USE_PROJ4_INIT_RULES=YES`` environment variable must have been
|
||||
previously set. In that context, datum shift will be researched. However they
|
||||
might be different than with PROJ 4 or PROJ 5, since a "late-binding" approach
|
||||
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.
|
||||
|
||||
================================================================================
|
||||
Version 4 to 5 API Migration
|
||||
================================================================================
|
||||
|
||||
@@ -13,17 +13,18 @@ distribution of the source code and various resource file archives. See
|
||||
Current Release
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
* **2019-07-01** `proj-6.1.1.tar.gz`_ (`md5`_)
|
||||
* **2019-11-01** `proj-6.2.1.tar.gz`_ (`md5`_)
|
||||
* **2018-09-15** `proj-datumgrid-1.8.zip`_
|
||||
* **2019-03-01** `proj-datumgrid-europe-1.3.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-03-01** `proj-datumgrid-world-1.0.zip`_
|
||||
* **PDF Manual** `proj.pdf`_
|
||||
|
||||
Past Releases
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
* **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`_
|
||||
* **2019-03-01** `proj-6.0.0.tar.gz`_
|
||||
* **2018-09-15** `proj-5.2.0.tar.gz`_
|
||||
@@ -36,12 +37,15 @@ Past Releases
|
||||
|
||||
* **2018-03-01** `proj-datumgrid-1.7.zip`_
|
||||
* **2016-09-11** `proj-datumgrid-1.6.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`_
|
||||
* **2018-03-01** `proj-datumgrid-north-america-1.0.zip`_
|
||||
|
||||
.. _`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
|
||||
.. _`proj-6.1.0.tar.gz`: https://download.osgeo.org/proj/proj-6.1.0.tar.gz
|
||||
.. _`proj-6.0.0.tar.gz`: https://download.osgeo.org/proj/proj-6.0.0.tar.gz
|
||||
@@ -59,10 +63,10 @@ Past Releases
|
||||
.. _`proj-datumgrid-europe-1.1.zip`: https://download.osgeo.org/proj/proj-datumgrid-europe-1.1.zip
|
||||
.. _`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-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-oceania-1.0.zip`: https://download.osgeo.org/proj/proj-datumgrid-oceania-1.0.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.1.1.tar.gz.md5
|
||||
.. _`proj.pdf`: https://raw.githubusercontent.com/OSGeo/PROJ/gh-pages/proj.pdf
|
||||
.. _`md5`: https://download.osgeo.org/proj/proj-6.2.1.tar.gz.md5
|
||||
|
||||
@@ -115,7 +115,7 @@ There are however exceptions, especially when dealing with coordinate systems th
|
||||
don't align with the cardinal directions of a compass. For example it is not
|
||||
obvious which coordinate component aligns to which axis in a skewed coordinate
|
||||
system with a 45 degrees angle against the north direction. Similarly, a geocentric
|
||||
cartesain coordinate system usually has the z-component aligned with the rotational
|
||||
cartesian coordinate system usually has the z-component aligned with the rotational
|
||||
axis of the earth and hence the axis points towards north. Both cases are
|
||||
incompatible with the convention of always having the x-component be the east/west
|
||||
axis, the y-component the north/south axis and the z-component the up/down axis.
|
||||
|
||||
@@ -24,29 +24,8 @@ PROJ
|
||||
|
||||
.. only:: html
|
||||
|
||||
PROJ is a generic coordinate transformation software that transforms geospatial
|
||||
coordinates from one coordinate reference system (CRS) to another. This
|
||||
includes cartographic projections as well as geodetic transformations.
|
||||
|
||||
PROJ includes :ref:`command line applications<apps>` for easy conversion of
|
||||
coordinates from text files or directly from user input. In addition to the
|
||||
command line utilities PROJ also exposes an
|
||||
:ref:`application programming interface<reference>`, or API in short. The API
|
||||
lets developers use the functionality of PROJ in their own software without having
|
||||
to implement similar functionality themselves.
|
||||
|
||||
PROJ started purely as a cartography application letting users convert geodetic
|
||||
coordinates into projected coordinates using a number of different cartographic
|
||||
projections. Over the years, as the need has become apparent, support for datum
|
||||
shifts has slowly worked its way into PROJ as well. Today PROJ supports more
|
||||
than a hundred different map projections and can transform coordinates between
|
||||
datums using all but the most obscure geodetic techniques.
|
||||
.. include:: about_core.rst
|
||||
|
||||
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
|
||||
|
||||
@@ -24,7 +24,18 @@ Conda
|
||||
The conda package manager includes several PROJ packages. We recommend installing
|
||||
from the ``conda-forge`` channel::
|
||||
|
||||
conda install -c conda-forge proj4
|
||||
conda install -c conda-forge proj
|
||||
|
||||
Using ``conda`` you can also install the PROJ grid packages. Here's how to install
|
||||
the `proj-datumgrid-europe` package::
|
||||
|
||||
conda install -c conda-forge proj-datumgrid-europe
|
||||
|
||||
Available is also the ``proj-datumgrid-north-america``, ``proj-datumgrid-oceania``
|
||||
and ``proj-datumgrid-world``.
|
||||
|
||||
.. tip::
|
||||
Read more about the various datumgrid packages available :ref:`here<datumgrid>`.
|
||||
|
||||
Docker
|
||||
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
@@ -34,8 +45,8 @@ files is available on `DockerHub`_. Get the package with::
|
||||
|
||||
docker pull osgeo/proj
|
||||
|
||||
.. _`Docker`: https://docker.org
|
||||
.. _`DockerHub`: https://hub.docker.com/r/osgeo/proj.4/
|
||||
.. _`Docker`: https://www.docker.com/
|
||||
.. _`DockerHub`: https://hub.docker.com/r/osgeo/proj/
|
||||
|
||||
Windows
|
||||
--------------------------------------------------------------------------------
|
||||
@@ -86,6 +97,13 @@ On Debian and similar systems (e.g. Ubuntu) the APT package manager is used::
|
||||
|
||||
sudo apt-get install proj-bin
|
||||
|
||||
Fedora
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
On Fedora the dnf package manager is used::
|
||||
|
||||
sudo dnf install proj
|
||||
|
||||
Red Hat
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
@@ -108,7 +126,7 @@ PROJ is also available from the MacPorts system::
|
||||
Compilation and installation from source code
|
||||
################################################################################
|
||||
|
||||
The classical way of installing PROJ is via the source code distribution. The
|
||||
The classic way of installing PROJ is via the source code distribution. The
|
||||
most recent version is available from the :ref:`download page<current_release>`.
|
||||
|
||||
PROJ requires C and C++11 compilers. It also requires SQLite3 (headers,
|
||||
|
||||
@@ -2,6 +2,111 @@
|
||||
|
||||
News
|
||||
###############################################################################
|
||||
|
||||
6.2.1 Release Notes
|
||||
++++++++++++++++++++++++++++++++++++++++
|
||||
*November 1st 2019*
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
* Update the EPSG database to version 9.8.2
|
||||
|
||||
Bug fixes
|
||||
----------
|
||||
|
||||
* Fixed erroneous spelling of "Potsdam" (`#1573 <https://github.com/OSGeo/PROJ/issues/1573>`_)
|
||||
|
||||
* Calculate y-coordinate correctly in :ref:`bertin1953` in all cases (`#1579 <https://github.com/OSGeo/PROJ/issues/1579>`_)
|
||||
|
||||
* :c:func:`proj_create_crs_to_crs_from_pj()`: make the PJ* arguments const PJ* (`#1583 <https://github.com/OSGeo/PROJ/issues/1583>`_)
|
||||
|
||||
* :c:func:`PROJStringParser::createFromPROJString()`: avoid potential infinite
|
||||
recursion (`#1574 <https://github.com/OSGeo/PROJ/issues/1574>`_)
|
||||
|
||||
* Avoid core dump when setting ``ctx==NULL`` in functions
|
||||
:c:func:`proj_coordoperation_is_instantiable` and
|
||||
:c:func:`proj_coordoperation_has_ballpark_transformation` (`#1590 <https://github.com/OSGeo/PROJ/issues/1590>`_)
|
||||
|
||||
* :c:func:`createOperations()`: fix conversion from/to PROJ.4 CRS strings with
|
||||
non-ISO-kosher options and ``+towgs84``/``+nadgrids`` (`#1602 <https://github.com/OSGeo/PROJ/issues/1602>`_)
|
||||
|
||||
* :c:func:`proj_trans_generic()`: properly set coordinate time to ``HUGE_VAL``
|
||||
when no value is passed to the function (`#1604 <https://github.com/OSGeo/PROJ/issues/1604>`_)
|
||||
|
||||
* Fix support for ``+proj=ob_tran +o_proj=lonlat/latlong/latlon`` instead of only
|
||||
only allowing ``+o_proj=longlat`` (`#1601 <https://github.com/OSGeo/PROJ/issues/1601>`_)
|
||||
|
||||
* Improve backwards compatibility of vertical transforms (`#1613 <https://github.com/OSGeo/PROJ/issues/1613>`_)
|
||||
|
||||
* Improve emulation of deprecated ``+init`` style initialization (`#1614 <https://github.com/OSGeo/PROJ/issues/1614>`_)
|
||||
|
||||
* :program:`cs2cs`: autopromote CRS to 3D when there's a mix of 2D and 3D (`#1563 <https://github.com/OSGeo/PROJ/issues/1563>`_)
|
||||
|
||||
* Avoid divisions by zero in odd situations (`#1620 <https://github.com/OSGeo/PROJ/issues/1620>`_)
|
||||
|
||||
* Avoid compile error on Solaris (`#1639 <https://github.com/OSGeo/PROJ/issues/1639>`_)
|
||||
|
||||
* :c:func:`proj_create_crs_to_crs()`: fix when there are only transformations with
|
||||
ballpark steps (`#1643 <https://github.com/OSGeo/PROJ/issues/1643>`_)
|
||||
|
||||
* PROJ string CRS ingester: recognize more unit-less parameters, and general
|
||||
handling of ``+key=string_value`` parameters (`#1645 <https://github.com/OSGeo/PROJ/issues/1645>`_)
|
||||
|
||||
* Only call pkg-config in configure when necessary (`#1652 <https://github.com/OSGeo/PROJ/issues/1652>`_)
|
||||
|
||||
* :ref:`aeqd`: for spherical forward path, go to higher precision ellipsoidal
|
||||
case when the point coordinates are super close to the origin (`#1654 <https://github.com/OSGeo/PROJ/issues/1654>`_)
|
||||
|
||||
* :c:func:`proj_create_crs_to_crs()`: remove elimination of Ballpark operations
|
||||
that caused transformation failures in some cases (`#1665 <https://github.com/OSGeo/PROJ/issues/1665>`_)
|
||||
|
||||
* :c:func:`createOperations()`: allow transforming from a compoundCRS of a bound
|
||||
verticalCRS to a 2D CRS (`#1667 <https://github.com/OSGeo/PROJ/issues/1667>`_)
|
||||
|
||||
* Avoid segfaults in case of out-of-memory situations (`#1679 <https://github.com/OSGeo/PROJ/issues/1679>`_)
|
||||
|
||||
* :c:func:`createOperations()`: fix double vertical unit conversion from CompoundCRS
|
||||
to other CRS when the horizontal part of the projected CRS uses non-metre
|
||||
unit (#1683)(`#1683 <https://github.com/OSGeo/PROJ/issues/1683>`_)
|
||||
|
||||
* :c:func:`importFromWkt()`: fix axis orientation for non-standard ESRI WKT (`#1690 <https://github.com/OSGeo/PROJ/issues/1690>`_)
|
||||
|
||||
|
||||
|
||||
6.2.0 Release Notes
|
||||
++++++++++++++++++++++++++++++++++++++++
|
||||
*September 1st 2019*
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
* Introduced :ref:`PROJJSON`, a JSON encoding of WKT2 (`#1547 <https://github.com/OSGeo/PROJ/issues/1547>`_)
|
||||
* Support CRS instantiation of OGC URN's (`#1505 <https://github.com/OSGeo/PROJ/issues/1505>`_)
|
||||
|
||||
* Expose scope and remarks of database objects (`#1537 <https://github.com/OSGeo/PROJ/issues/1537>`_)
|
||||
|
||||
* EPSG Database updated to version 9.7.0 (`#1558 <https://github.com/OSGeo/PROJ/issues/1558>`_)
|
||||
|
||||
* Added C API function proj_grid_get_info_from_database() (`#1494 <https://github.com/OSGeo/PROJ/issues/1494>`_)
|
||||
|
||||
* Added C API function
|
||||
proj_operation_factory_context_set_discard_superseded() (`#1534 <https://github.com/OSGeo/PROJ/issues/1534>`_)
|
||||
|
||||
* Added C API function proj_context_set_autoclose_database() (`#1566 <https://github.com/OSGeo/PROJ/issues/1566>`_)
|
||||
|
||||
* Added C API function proj_create_crs_to_crs_from_pj() (`#1567 <https://github.com/OSGeo/PROJ/issues/1567>`_)
|
||||
|
||||
* Added C API function proj_cleanup() (`#1569 <https://github.com/OSGeo/PROJ/issues/1569>`_)
|
||||
|
||||
|
||||
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
* Fixed build failure on Solaris systems (`#1554 <https://github.com/OSGeo/PROJ/issues/1554>`_)
|
||||
|
||||
|
||||
6.1.1 Release Notes
|
||||
++++++++++++++++++++++++++++++++++++++++
|
||||
*July 1st 2019*
|
||||
|
||||
|
Before Width: | Height: | Size: 173 KiB After Width: | Height: | Size: 299 KiB |
@@ -4,6 +4,31 @@
|
||||
Icosahedral Snyder Equal Area
|
||||
********************************************************************************
|
||||
|
||||
Snyder's Icosahedral Equal Area map projections on polyhedral globes for the
|
||||
dodecahedron and truncated icosahedron offer relatively low scale and
|
||||
angular distortion. The equations involved are relatively straight-forward,
|
||||
and for certain instructional tools and databases, the projections are useful
|
||||
for world maps. The interruptions remain a disadvantage, as with any low-error
|
||||
projection system applied to the entire globe :cite:`Snyder1992`.
|
||||
|
||||
|
||||
+---------------------+----------------------------------------------------------+
|
||||
| **Classification** | Polyhedral, equal area |
|
||||
+---------------------+----------------------------------------------------------+
|
||||
| **Available forms** | Forward, spherical |
|
||||
+---------------------+----------------------------------------------------------+
|
||||
| **Defined area** | Global |
|
||||
+---------------------+----------------------------------------------------------+
|
||||
| **Alias** | isea |
|
||||
+---------------------+----------------------------------------------------------+
|
||||
| **Domain** | 2D |
|
||||
+---------------------+----------------------------------------------------------+
|
||||
| **Input type** | Geodetic coordinates |
|
||||
+---------------------+----------------------------------------------------------+
|
||||
| **Output type** | Projected coordinates |
|
||||
+---------------------+----------------------------------------------------------+
|
||||
|
||||
|
||||
.. figure:: ./images/isea.png
|
||||
:width: 500 px
|
||||
:align: center
|
||||
|
||||
@@ -19,9 +19,10 @@ oblique projection by means of the General Oblique Transformation. The user
|
||||
performs the oblique transformation by selecting the oblique projection
|
||||
``+proj=ob_tran``, specifying the translation factors, :option:`+o_lat_p`, and
|
||||
:option:`+o_lon_p`, and the projection to be used, :option:`+o_proj`. In the
|
||||
example of the Fairgrieve projection the latitude and longitude of the pole of
|
||||
the new coordinates, :math:`\alpha` and :math:`\beta` respectively, are to be placed
|
||||
at 45°N and 90°W and use the :ref:`moll` projection. Because the central meridian
|
||||
example of the Fairgrieve projection, the latitude and longitude of the North pole
|
||||
of the unrotated geographic CRS, :math:`\alpha` and :math:`\beta` respectively,
|
||||
expressed in the rotated geographic CRS, are to be placed
|
||||
at 45°N and 90°W and the :ref:`moll` projection is used. Because the central meridian
|
||||
of the translated coordinates will follow the :math:`\beta` meridian it is
|
||||
necessary to translate the translated system so that the Greenwich meridian
|
||||
will pass through the center of the projection by offsetting the central meridian.
|
||||
@@ -50,11 +51,11 @@ New pole
|
||||
|
||||
.. option:: +o_lat_p=<latitude>
|
||||
|
||||
Latitude of new pole for oblique projection.
|
||||
Latitude of the North pole of the unrotated source CRS, expressed in the rotated geographic CRS.
|
||||
|
||||
.. option:: +o_lon_p=<longitude>
|
||||
|
||||
Longitude of new pole for oblique projection.
|
||||
Longitude of the North pole of the unrotated source CRS, expressed in the rotated geographic CRS.
|
||||
|
||||
Rotate about point
|
||||
................................................................................
|
||||
|
||||
@@ -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
|
||||
==================
|
||||
|
||||
@@ -317,6 +317,19 @@
|
||||
Url = {https://www.researchgate.net/publication/290447301_The_Natural_Earth_II_world_map_projection}
|
||||
}
|
||||
|
||||
@Article{Snyder1992,
|
||||
Title = {An Equal-Area Map Projection For Polyhedral Globes},
|
||||
Author = {John P. Snyder},
|
||||
Journal = {Cartographica},
|
||||
Year = {1992},
|
||||
Number = {1},
|
||||
Pages = {10--21},
|
||||
Volume = {29},
|
||||
|
||||
Doi = {DOI: 10.3138/27H7-8K88-4882-1752},
|
||||
Uri = {https://doi.org/10.3138/27H7-8K88-4882-1752}
|
||||
}
|
||||
|
||||
@Book{Snyder1993,
|
||||
Title = {Flattening the Earth},
|
||||
Author = {John P. Snyder},
|
||||
|
||||
@@ -6,14 +6,40 @@ Resource files
|
||||
|
||||
A number of files containing preconfigured transformations and default parameters
|
||||
for certain projections are bundled with the PROJ distribution. Init files
|
||||
contains preconfigured proj-strings for various coordinate reference systems
|
||||
and the defaults file contains default values for parameters of select
|
||||
contain preconfigured proj-strings for various coordinate reference systems
|
||||
and the `defaults` file contains default values for parameters of select
|
||||
projections.
|
||||
|
||||
In addition to the bundled init-files the PROJ.4 project also distribute a number
|
||||
In addition to the bundled init-files the PROJ project also distributes a number
|
||||
of packages containing transformation grids and additional init-files not included
|
||||
in the main PROJ package.
|
||||
|
||||
Where are PROJ resource files looked for ?
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
PROJ will attempt to locate its resource files - database, transformation grids
|
||||
or init-files - from several dictionaries.
|
||||
The following paths are checked in order:
|
||||
|
||||
- For transformation grids that have an explict relative or absolute path,
|
||||
the directory specified in the grid filename.
|
||||
- Path resolved by the callback function set with
|
||||
the :c:func:`proj_context_set_file_finder`. If it is set, the next tests
|
||||
will not be run.
|
||||
- Path(s) set with the :c:func:`proj_context_set_search_paths`. If set, the
|
||||
next tests will not be run.
|
||||
- Path(s) set with by the environment variable :envvar:`PROJ_LIB`.
|
||||
On Linux/MacOSX/Unix, use ``:`` to separate paths. On Windows, ``;``
|
||||
- On Windows, the *..\\share\\proj\\* and its contents are found automatically
|
||||
at run-time if the installation respects the build structure. That is, the
|
||||
binaries and proj.dll are installed under *..\\bin\\*, and resource files
|
||||
are in *..\\share\\proj\\*.
|
||||
- A path built into PROJ as its resource installation directory (whose value is
|
||||
$(pkgdatadir)), for builds using the Makefile build system. Note, however,
|
||||
that since this is a hard-wired path setting, it only works if the whole
|
||||
PROJ installation is not moved somewhere else.
|
||||
- The current directory
|
||||
|
||||
.. _proj-db:
|
||||
|
||||
proj.db
|
||||
@@ -23,17 +49,37 @@ A proj installation includes a SQLite database of transformation information
|
||||
that must be accessible for the library to work properly. The library will
|
||||
print an error if the database can't be found.
|
||||
|
||||
External resources
|
||||
Transformation grids
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
For a functioning PROJ installation of the
|
||||
Grid files are important for shifting and transforming between datums.
|
||||
|
||||
PROJ supports CTable2, NTv1 and NTv2 files for horizontal grid corrections and
|
||||
the GTX file format for vertical corrections. Details about the formats can be
|
||||
found in the `GDAL documentation <http://gdal.org/>`_. GDAL reads and writes
|
||||
all formats. Using GDAL for construction of new grids is recommended.
|
||||
|
||||
.. _datumgrid:
|
||||
|
||||
External resources and packaged grids
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
proj-datumgrid
|
||||
++++++++++++++
|
||||
|
||||
For a functioning PROJ, installation of the
|
||||
`proj-datumgrid <https://github.com/OSGeo/proj-datumgrid>`_ is needed. If you
|
||||
have installed PROJ from a package system chances are that this will already be
|
||||
done for you. The *proj-datumgrid* package provides transformation grids that
|
||||
are essential for many of the predefined transformations in PROJ. Which grids
|
||||
are included in the package can be seen on the
|
||||
`proj-datumgrid repository <https://github.com/OSGeo/proj-datumgrid>`_ as well
|
||||
as descriptions of those grids.
|
||||
as descriptions of those grids. This is the main grid package and the only one
|
||||
that is required. It includes various older grids that is mostly needed for
|
||||
legacy reasons. Without this package, the test suite fails miserably.
|
||||
|
||||
Regional packages
|
||||
+++++++++++++++++
|
||||
|
||||
In addition to the default *proj-datumgrid* package regional packages are also
|
||||
distributed. These include grids and init-files that are valid within the given
|
||||
@@ -47,46 +93,43 @@ At the moment three regional resource file packages are distributed:
|
||||
* `Oceania <https://github.com/OSGeo/proj-datumgrid/tree/master/oceania#proj-datumgrid-oceania>`_
|
||||
* `North America <https://github.com/OSGeo/proj-datumgrid/tree/master/north-america#proj-datumgrid-north-america>`_
|
||||
|
||||
If someone supplies grids relevant for Africa, South-America, Asia or Antarctica
|
||||
we will create new regional packages.
|
||||
|
||||
Click the links to jump to the relevant README files for each package. Details
|
||||
on the content of the packages maintained there.
|
||||
|
||||
Links to the resource packages can be found in the :ref:`download section <download>`.
|
||||
.. tip::
|
||||
To download the various datumgrid packages head to the :ref:`download section <download>`.
|
||||
|
||||
World package
|
||||
+++++++++++++
|
||||
|
||||
The `world package <https://github.com/OSGeo/proj-datumgrid/tree/master/world#proj-datumgrid-world>`_
|
||||
includes grids that have global extent, e.g. the global geoid model EGM08.
|
||||
|
||||
-latest packages
|
||||
++++++++++++++++
|
||||
|
||||
All packages above come in different versions, e.g proj-datumgrid-1.8 or
|
||||
proj-datumgrid-europe-1.4. The `-latest` packages are symbolic links to the
|
||||
latest version of a given packages. That means that the link
|
||||
https://download.osgeo.org/proj/proj-datumgrid-north-america-latest.zip is
|
||||
equivalent to https://download.osgeo.org/proj/proj-datumgrid-north-america-1.2.zip
|
||||
(as of the time of writing this).
|
||||
|
||||
.. _transformation_grids:
|
||||
|
||||
Transformation grids
|
||||
Other transformation grids
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Grid files are important for shifting and transforming between datums.
|
||||
|
||||
PROJ supports CTable2, NTv1 and NTv2 files for horizontal grid corrections and
|
||||
the GTX file format for vertical corrections. Details about the formats can be
|
||||
found in the `GDAL documentation <http://gdal.org/>`_. GDAL reads and writes
|
||||
all formats. Using GDAL for construction of new grids is recommended.
|
||||
|
||||
Below is a given a list of grid resources for various countries which are not
|
||||
Below is a list of grid resources for various countries which are not
|
||||
included in the grid distributions mentioned above.
|
||||
|
||||
Free grids
|
||||
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
Below is a list of grids distributed under a free and open license.
|
||||
|
||||
Switzerland
|
||||
................................................................................
|
||||
|
||||
Background in ticket `#145 <https://github.com/OSGeo/PROJ/issues/145>`__
|
||||
|
||||
We basically have two shift grids available. An official here:
|
||||
|
||||
`Swiss CHENyx06 dataset in NTv2 format <https://shop.swisstopo.admin.ch/en/products/geo_software/GIS_info>`__
|
||||
|
||||
And a derived in a temporary location which is probably going to disappear soon.
|
||||
|
||||
Main problem seems to be there's no mention of distributivity of the grid from
|
||||
the official website. It just tells: "you can use freely". The "contact" link
|
||||
is also broken, but maybe someone could make a phone call to ask for rephrasing
|
||||
that.
|
||||
The following is a list of grids distributed under a free and open license.
|
||||
|
||||
Hungary
|
||||
................................................................................
|
||||
@@ -105,7 +148,8 @@ distributed, but can be obtained by users through free and legal methods.
|
||||
Austria
|
||||
................................................................................
|
||||
|
||||
`Austrian Grid <http://www.bev.gv.at/portal/page?_pageid=713,2204753&_dad=portal&_schema=PORTAL>`__ for MGI
|
||||
Overview of `Austrian grids <http://www.bev.gv.at/portal/page?_pageid=713,1569828&_dad=portal&_schema=PORTAL>`__ and other resources
|
||||
related to the local geodetic reference.
|
||||
|
||||
Brazil
|
||||
................................................................................
|
||||
@@ -133,49 +177,10 @@ Spain
|
||||
`Spanish grids <http://www.ign.es/ign/layoutIn/herramientas.do#DATUM>`__ for ED50.
|
||||
|
||||
|
||||
|
||||
HARN
|
||||
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
With the support of `i-cubed <http://www.i3.com>`__, Frank Warmerdam has
|
||||
written tools to translate the HPGN grids from NOAA/NGS from ``.los/.las`` format
|
||||
into NTv2 format for convenient use with PROJ. This project included
|
||||
implementing a `.los/.las reader <https://github.com/OSGeo/gdal/tree/trunk/gdal/frmts/raw/loslasdataset.cpp>`__
|
||||
for GDAL, and an `NTv2 reader/writer <https://github.com/OSGeo/gdal/tree/trunk/gdal/frmts/raw/ntv2dataset.cpp>`__.
|
||||
Also, a script to do the bulk translation was implemented in
|
||||
https://github.com/OSGeo/gdal/tree/trunk/gdal/swig/python/samples/loslas2ntv2.py.
|
||||
The command to do the translation was:
|
||||
|
||||
::
|
||||
|
||||
loslas2ntv2.py -auto *hpgn.los
|
||||
|
||||
As GDAL uses NAD83/WGS84 as a pivot datum, the sense of the HPGN datum shift offsets were negated to map from HPGN to NAD83 instead of the other way. The files can be used with PROJ like this:
|
||||
|
||||
::
|
||||
|
||||
cs2cs +proj=latlong +datum=NAD83
|
||||
+to +proj=latlong +nadgrids=./azhpgn.gsb +ellps=GRS80
|
||||
|
||||
::
|
||||
|
||||
# input:
|
||||
-112 34
|
||||
|
||||
::
|
||||
|
||||
# output:
|
||||
111d59'59.996"W 34d0'0.006"N -0.000
|
||||
|
||||
This was confirmed against the `NGS HPGN calculator
|
||||
<http://www.ngs.noaa.gov/cgi-bin/nadcon2.prl>`__.
|
||||
|
||||
The grids are available at https://download.osgeo.org/proj/hpgn_ntv2.zip
|
||||
|
||||
HTDP
|
||||
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
This page documents use of the `crs2crs2grid.py` script and the HTDP
|
||||
This section describes the use of the `crs2crs2grid.py` script and the HTDP
|
||||
(Horizontal Time Dependent Positioning) grid shift modelling program from
|
||||
NGS/NOAA to produce PROJ compatible grid shift files for fine grade
|
||||
conversions between various NAD83 epochs and WGS84. Traditionally PROJ has
|
||||
@@ -211,7 +216,8 @@ Getting crs2crs2grid.py
|
||||
The `crs2crs2grid.py` script can be found at
|
||||
https://github.com/OSGeo/gdal/tree/trunk/gdal/swig/python/samples/crs2crs2grid.py
|
||||
|
||||
It depends on having the GDAL Python bindings operational. If they are not
|
||||
The script depends on having the GDAL Python bindings operational; if they are not you
|
||||
will get an error such as:
|
||||
|
||||
|
||||
::
|
||||
@@ -310,7 +316,7 @@ Init files
|
||||
Init files are used for preconfiguring proj-strings for often used
|
||||
transformations, such as those found in the EPSG database. Most init files contain
|
||||
transformations from a given coordinate reference system to WGS84. This makes
|
||||
it easy to transformations between any two coordinate reference systems with
|
||||
it easy to transform between any two coordinate reference systems with
|
||||
``cs2cs``. Init files can however contain any proj-string and don't necessarily
|
||||
have to follow the *cs2cs* paradigm where WGS84 is used as a pivot datum. The
|
||||
ITRF init file is a good example of that.
|
||||
@@ -319,7 +325,7 @@ A number of init files come pre-bundled with PROJ but it is also possible to
|
||||
add your own custom init files. PROJ looks for the init files in the directory
|
||||
listed in the ``PROJ_LIB`` environment variable.
|
||||
|
||||
The format of init files made up of a identifier in angled brackets and a
|
||||
The format of init files is an identifier in angled brackets and a
|
||||
proj-string:
|
||||
|
||||
::
|
||||
@@ -383,11 +389,7 @@ Below is a list of the init files that are packaged with PROJ.
|
||||
======== ================================================================
|
||||
Name Description
|
||||
======== ================================================================
|
||||
esri Auto-generated mapping from Esri projection index. Not
|
||||
maintained any more
|
||||
epsg EPSG database
|
||||
GL27 Great Lakes Grids
|
||||
IGNF French coordinate systems supplied by the IGNF
|
||||
ITRF2000 Full set of transformation parameters between ITRF2000 and other
|
||||
ITRF's
|
||||
ITRF2008 Full set of transformation parameters between ITRF2008 and other
|
||||
@@ -397,11 +399,3 @@ Below is a list of the init files that are packaged with PROJ.
|
||||
nad27 State plane coordinate systems, North American Datum 1927
|
||||
nad83 State plane coordinate systems, North American Datum 1983
|
||||
======== ================================================================
|
||||
|
||||
|
||||
The defaults file
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Before PROJ 6.0, a ``proj_def.dat`` file could be used to supply default
|
||||
parameters to PROJ. It has been removed due to the confusion and errors it
|
||||
caused.
|
||||
|
||||
@@ -17,3 +17,5 @@ command line applications or the C API that is a part of the software package.
|
||||
transformation
|
||||
environmentvars
|
||||
differences
|
||||
projjson
|
||||
|
||||
|
||||
@@ -0,0 +1,261 @@
|
||||
.. _projjson:
|
||||
|
||||
================================================================================
|
||||
PROJJSON
|
||||
================================================================================
|
||||
|
||||
PROJJSON is a JSON encoding of
|
||||
`WKT2:2019 / ISO-19162:2019 <http://docs.opengeospatial.org/is/18-010r7/18-010r7.html>`_,
|
||||
which itself implements the model of
|
||||
`OGC Topic 2: Referencing by coordinates <http://docs.opengeospatial.org/as/18-005r4/18-005r4.html>`_.
|
||||
Apart from the difference of encodings, the semantics is intended to be exactly
|
||||
the same as WKT2:2019.
|
||||
|
||||
PROJJSON is available as input and output of PROJ since PROJ 6.2.
|
||||
|
||||
The current version is 0.1.
|
||||
|
||||
Schema
|
||||
------
|
||||
|
||||
A JSON schema of its grammar is available at
|
||||
https://proj.org/schemas/v0.1/projjson.schema.json
|
||||
|
||||
Content
|
||||
-------
|
||||
|
||||
The high level objects are:
|
||||
|
||||
* Coordinate Reference Systems (CRS):
|
||||
|
||||
- Common ones:
|
||||
|
||||
+ ``GeographicCRS``
|
||||
+ ``GeodeticCRS``
|
||||
+ ``ProjectedCRS``
|
||||
+ ``CompoundCRS``
|
||||
+ ``BoundCRS``
|
||||
|
||||
- More esoteric ones:
|
||||
|
||||
+ ``VerticalCRS``
|
||||
+ ``EngineeringCRS``
|
||||
+ ``TemporalCRS``
|
||||
+ ``ParametricCRS``
|
||||
+ ``DerivedGeographicCRS``
|
||||
+ ``DerivedGeodeticCRS``
|
||||
+ ``DerivedProjectedCRS``
|
||||
+ ``DerivedVerticalCRS``
|
||||
+ ``DerivedEngineeringCRS``
|
||||
+ ``DerivedTemporalCRS``
|
||||
+ ``DerivedParametricCRS``
|
||||
|
||||
* Coordinate operations:
|
||||
|
||||
- ``Transformation``
|
||||
- ``Conversion``
|
||||
- ``ConcatenatedOperation``
|
||||
|
||||
* Others:
|
||||
|
||||
- ``PrimeMeridian``
|
||||
- ``Ellipsoid``
|
||||
- ``Datum``
|
||||
- ``DatumEnsemble``
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
GeographicCRS
|
||||
+++++++++++++
|
||||
|
||||
The following invokation
|
||||
|
||||
::
|
||||
|
||||
projinfo EPSG:4326 -o PROJJSON -q
|
||||
|
||||
will output:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"$schema": "https://proj.org/schemas/v0.1/projjson.schema.json",
|
||||
"type": "GeographicCRS",
|
||||
"name": "WGS 84",
|
||||
"datum": {
|
||||
"type": "GeodeticReferenceFrame",
|
||||
"name": "World Geodetic System 1984",
|
||||
"ellipsoid": {
|
||||
"name": "WGS 84",
|
||||
"semi_major_axis": 6378137,
|
||||
"inverse_flattening": 298.257223563
|
||||
}
|
||||
},
|
||||
"coordinate_system": {
|
||||
"subtype": "ellipsoidal",
|
||||
"axis": [
|
||||
{
|
||||
"name": "Geodetic latitude",
|
||||
"abbreviation": "Lat",
|
||||
"direction": "north",
|
||||
"unit": "degree"
|
||||
},
|
||||
{
|
||||
"name": "Geodetic longitude",
|
||||
"abbreviation": "Lon",
|
||||
"direction": "east",
|
||||
"unit": "degree"
|
||||
}
|
||||
]
|
||||
},
|
||||
"area": "World",
|
||||
"bbox": {
|
||||
"south_latitude": -90,
|
||||
"west_longitude": -180,
|
||||
"north_latitude": 90,
|
||||
"east_longitude": 180
|
||||
},
|
||||
"id": {
|
||||
"authority": "EPSG",
|
||||
"code": 4326
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ProjectedCRS
|
||||
++++++++++++
|
||||
|
||||
The following invokation
|
||||
|
||||
::
|
||||
|
||||
projinfo EPSG:32631 -o PROJJSON -q
|
||||
|
||||
will output:
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"$schema": "https://proj.org/schemas/v0.1/projjson.schema.json",
|
||||
"type": "ProjectedCRS",
|
||||
"name": "WGS 84 / UTM zone 31N",
|
||||
"base_crs": {
|
||||
"name": "WGS 84",
|
||||
"datum": {
|
||||
"type": "GeodeticReferenceFrame",
|
||||
"name": "World Geodetic System 1984",
|
||||
"ellipsoid": {
|
||||
"name": "WGS 84",
|
||||
"semi_major_axis": 6378137,
|
||||
"inverse_flattening": 298.257223563
|
||||
}
|
||||
},
|
||||
"coordinate_system": {
|
||||
"subtype": "ellipsoidal",
|
||||
"axis": [
|
||||
{
|
||||
"name": "Geodetic latitude",
|
||||
"abbreviation": "Lat",
|
||||
"direction": "north",
|
||||
"unit": "degree"
|
||||
},
|
||||
{
|
||||
"name": "Geodetic longitude",
|
||||
"abbreviation": "Lon",
|
||||
"direction": "east",
|
||||
"unit": "degree"
|
||||
}
|
||||
]
|
||||
},
|
||||
"id": {
|
||||
"authority": "EPSG",
|
||||
"code": 4326
|
||||
}
|
||||
},
|
||||
"conversion": {
|
||||
"name": "UTM zone 31N",
|
||||
"method": {
|
||||
"name": "Transverse Mercator",
|
||||
"id": {
|
||||
"authority": "EPSG",
|
||||
"code": 9807
|
||||
}
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
"name": "Latitude of natural origin",
|
||||
"value": 0,
|
||||
"unit": "degree",
|
||||
"id": {
|
||||
"authority": "EPSG",
|
||||
"code": 8801
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Longitude of natural origin",
|
||||
"value": 3,
|
||||
"unit": "degree",
|
||||
"id": {
|
||||
"authority": "EPSG",
|
||||
"code": 8802
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Scale factor at natural origin",
|
||||
"value": 0.9996,
|
||||
"unit": "unity",
|
||||
"id": {
|
||||
"authority": "EPSG",
|
||||
"code": 8805
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "False easting",
|
||||
"value": 500000,
|
||||
"unit": "metre",
|
||||
"id": {
|
||||
"authority": "EPSG",
|
||||
"code": 8806
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "False northing",
|
||||
"value": 0,
|
||||
"unit": "metre",
|
||||
"id": {
|
||||
"authority": "EPSG",
|
||||
"code": 8807
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"coordinate_system": {
|
||||
"subtype": "Cartesian",
|
||||
"axis": [
|
||||
{
|
||||
"name": "Easting",
|
||||
"abbreviation": "E",
|
||||
"direction": "east",
|
||||
"unit": "metre"
|
||||
},
|
||||
{
|
||||
"name": "Northing",
|
||||
"abbreviation": "N",
|
||||
"direction": "north",
|
||||
"unit": "metre"
|
||||
}
|
||||
]
|
||||
},
|
||||
"area": "World - N hemisphere - 0°E to 6°E - by country",
|
||||
"bbox": {
|
||||
"south_latitude": 0,
|
||||
"west_longitude": 0,
|
||||
"north_latitude": 84,
|
||||
"east_longitude": 6
|
||||
},
|
||||
"id": {
|
||||
"authority": "EPSG",
|
||||
"code": 32631
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,8 @@ large scale cartographic projections as well as coordinate transformation at a
|
||||
geodetic high precision level. This chapter delves into the details of how
|
||||
geodetic transformations of varying complexity can be performed.
|
||||
|
||||
In PROJ, two frameworks for geodetic transformations exists, the *cs2cs*
|
||||
In PROJ, two frameworks for geodetic transformations exists, the
|
||||
*PROJ 4.x/5.x* / :program:`cs2cs` / :c:func:`pj_transform`
|
||||
framework and the *transformation pipelines* framework. The first is the original,
|
||||
and limited, framework for doing geodetic transforms in PROJ The latter is a
|
||||
newer addition that aims to be a more complete transformation framework. Both are
|
||||
@@ -133,7 +134,7 @@ coordinate timestamps back to GPS weeks.
|
||||
step proj=unitconvert t_in=decimalyear t_out=gps_week
|
||||
|
||||
|
||||
cs2cs paradigm
|
||||
PROJ 4.x/5.x paradigm
|
||||
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
.. _cs2cs_specific_options:
|
||||
|
||||
@@ -148,9 +149,19 @@ cs2cs paradigm
|
||||
+vto_meter Vertical conversion to meters
|
||||
============ ==============================================================
|
||||
|
||||
The *cs2cs* framework delivers a subset of the geodetic transformations available
|
||||
.. warning::
|
||||
This section documents the behaviour of PROJ 4.x and 5.x. In PROJ 6.x,
|
||||
:program:`cs2cs` has been reworked to use :c:func:`proj_create_crs_to_crs` internally,
|
||||
with *late binding* capabilities, and thus is no longer constrained to using
|
||||
WGS84 as a pivot (also called as *early binding* method).
|
||||
When :program:`cs2cs` of PROJ 6 is used with PROJ.4 expanded strings to describe the CRS,
|
||||
including ``+towgs84``, ``+nadgrids`` and ``+geoidgrids``, it will generally give
|
||||
the same results as earlier PROJ versions. When used with AUTHORITY:CODE
|
||||
CRS descriptions, it may return different results.
|
||||
|
||||
The *cs2cs* framework in PROJ 4 and 5 delivers a subset of the geodetic transformations available
|
||||
with the *pipeline* framework. Coordinate transformations done in this framework
|
||||
are transformed in a two-step process with WGS84 as a pivot datum That is, the
|
||||
were transformed in a two-step process with WGS84 as a pivot datum. That is, the
|
||||
input coordinates are transformed to WGS84 geodetic coordinates and then transformed
|
||||
from WGS84 coordinates to the specified output coordinate reference system, by
|
||||
utilizing either the Helmert transform, datum shift grids or a combination of both.
|
||||
@@ -173,7 +184,7 @@ Both grid correction methods allow inclusion of more than one grid in the same
|
||||
transformation
|
||||
|
||||
In contrast to the *transformation pipeline* framework, transformations with the
|
||||
*cs2cs* framework are expressed as two separate proj-strings. One proj-string *to*
|
||||
*cs2cs* framework in PROJ 4 and 5 were expressed as two separate proj-strings. One proj-string *to*
|
||||
WGS84 and one *from* WGS84. Together they form the mapping from the source
|
||||
coordinate reference system to the destination coordinate reference system.
|
||||
When used with the ``cs2cs`` the source and destination CRS's are separated by the
|
||||
@@ -189,6 +200,21 @@ to WGS84 with the ``+towgs84`` parameter.
|
||||
20 35
|
||||
20d0'5.467"E 35d0'9.575"N 0.000
|
||||
|
||||
With PROJ 6, you can simply use the following:
|
||||
|
||||
.. note:: With PROJ 6, the order of coordinates for EPSG geographic coordinate
|
||||
reference systems is latitude first, longitude second.
|
||||
|
||||
::
|
||||
|
||||
cs2cs "GGRS87" "WGS 84"
|
||||
35 20
|
||||
35d0'9.575"N 20d0'5.467"E 0.000
|
||||
|
||||
cs2cs EPSG:4121 EPSG:4326
|
||||
35 20
|
||||
35d0'9.575"N 20d0'5.467"E 0.000
|
||||
|
||||
The EPSG database provides this example for transforming from WGS72 to WGS84
|
||||
using an approximated 7 parameter transformation.
|
||||
|
||||
@@ -199,6 +225,19 @@ using an approximated 7 parameter transformation.
|
||||
4 55
|
||||
4d0'0.554"E 55d0'0.09"N 0.000
|
||||
|
||||
With PROJ 6, you can simply use the following (note the reversed order for
|
||||
latitude and longitude)
|
||||
|
||||
::
|
||||
|
||||
cs2cs "WGS 72" "WGS 84"
|
||||
55 4
|
||||
55d0'0.09"N 4d0'0.554"E 0.000
|
||||
|
||||
cs2cs EPSG:4322 EPSG:4326
|
||||
55 4
|
||||
55d0'0.09"N 4d0'0.554"E 0.000
|
||||
|
||||
|
||||
Grid Based Datum Adjustments
|
||||
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
@@ -266,8 +305,8 @@ fallback to using the ``ntv1_can.dat`` file.
|
||||
The null Grid
|
||||
................................................................................
|
||||
|
||||
A special ``null`` grid shift file is shift with releases after 4.4.6 (not
|
||||
inclusive). This file provides a zero shift for the whole world. It may be
|
||||
A special ``null`` grid shift file is distributed with PROJ.
|
||||
This file provides a zero shift for the whole world. It may be
|
||||
listed at the end of a nadgrids file list if you want a zero shift to be
|
||||
applied to points outside the valid region of all the other grids. Normally if
|
||||
no grid is found that contains the point to be transformed an error will occur.
|
||||
@@ -301,13 +340,7 @@ Caveats
|
||||
Careful selection of files and file order is necessary. In some cases
|
||||
border spanning datasets may need to be pre-segmented into Canadian and
|
||||
American points so they can be properly grid shifted
|
||||
* There are additional grids for shifting between NAD83 and various HPGN
|
||||
versions of the NAD83 datum. Use of these haven't been tried recently so
|
||||
you may encounter problems. The FL.lla, WO.lla, MD.lla, TN.lla and WI.lla
|
||||
are examples of high precision grid shifts. Take care!
|
||||
* Additional detail on the grid shift being applied can be found by setting
|
||||
the PROJ_DEBUG environment variable to a value. This will result in output
|
||||
to stderr on what grid is used to shift points, the bounds of the various
|
||||
grids loaded and so forth
|
||||
* The *cs2cs* framework always assumes that grids contain a shift **to** NAD83 (essentially
|
||||
WGS84). Other types of grids can be used with the *pipeline* framework.
|
||||
|
||||
@@ -107,6 +107,10 @@ class PROJ_GCC_DLL CRS : public common::ObjectUsage,
|
||||
PROJ_DLL std::list<CRSNNPtr>
|
||||
getNonDeprecated(const io::DatabaseContextNNPtr &dbContext) const;
|
||||
|
||||
PROJ_DLL CRSNNPtr
|
||||
promoteTo3D(const std::string &newName,
|
||||
const io::DatabaseContextPtr &dbContext) const;
|
||||
|
||||
PROJ_PRIVATE :
|
||||
//! @cond Doxygen_Suppress
|
||||
PROJ_INTERNAL const GeodeticCRS *
|
||||
@@ -503,6 +507,9 @@ class PROJ_GCC_DLL DerivedCRS : virtual public SingleCRS {
|
||||
|
||||
PROJ_PRIVATE :
|
||||
//! @cond Doxygen_Suppress
|
||||
|
||||
// Use this method with extreme care ! It should never be used
|
||||
// to recreate a new Derived/ProjectedCRS !
|
||||
PROJ_INTERNAL const operation::ConversionNNPtr &
|
||||
derivingConversionRef() PROJ_PURE_DECL;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "CCT" "1" "Aug 26, 2019" "6.2.0" "PROJ"
|
||||
.TH "CCT" "1" "Nov 1, 2019" "6.2.1" "PROJ"
|
||||
.SH NAME
|
||||
cct \- Coordinate Conversion and Transformation
|
||||
.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "CS2CS" "1" "Aug 26, 2019" "6.2.0" "PROJ"
|
||||
.TH "CS2CS" "1" "Nov 01, 2019" "6.2.1" "PROJ"
|
||||
.SH NAME
|
||||
cs2cs \- Cartographic coordinate system filter
|
||||
.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "GEOD" "1" "Aug 26, 2019" "6.2.0" "PROJ"
|
||||
.TH "GEOD" "1" "Nov 1, 2019" "6.2.1" "PROJ"
|
||||
.SH NAME
|
||||
geod \- Geodesic computations
|
||||
.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "GIE" "1" "Aug 26, 2019" "6.2.0" "PROJ"
|
||||
.TH "GIE" "1" "Nov 1, 2019" "6.2.1" "PROJ"
|
||||
.SH NAME
|
||||
gie \- The Geospatial Integrity Investigation Environment
|
||||
.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "PROJ" "1" "Aug 26, 2019" "6.2.0" "PROJ"
|
||||
.TH "PROJ" "1" "Nov 1, 2019" "6.2.1" "PROJ"
|
||||
.SH NAME
|
||||
proj \- Cartographic projection filter
|
||||
.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "PROJINFO" "1" "Aug 26, 2019" "6.2.0" "PROJ"
|
||||
.TH "PROJINFO" "1" "Nov 1, 2019" "6.2.1" "PROJ"
|
||||
.SH NAME
|
||||
projinfo \- Geodetic object and coordinate operation queries
|
||||
.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
.\" @(#)geodesic.3
|
||||
.\"
|
||||
.TH GEODESIC 3 "2019/09/01 Rel. 6.2.0"
|
||||
.TH GEODESIC 3 "2019/11/01 Rel. 6.2.1"
|
||||
.ad b
|
||||
.hy 1
|
||||
.SH NAME
|
||||
|
||||
|
After Width: | Height: | Size: 9.6 KiB |
@@ -0,0 +1,110 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="134.18155mm"
|
||||
height="43.65625mm"
|
||||
viewBox="0 0 134.18155 43.65625"
|
||||
version="1.1"
|
||||
id="svg3821"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="logo.svg">
|
||||
<defs
|
||||
id="defs3815" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4"
|
||||
inkscape:cx="58.485496"
|
||||
inkscape:cy="-11.535695"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="1912"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata3818">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>PROJ Logo</dc:title>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
|
||||
<dc:date>2019/10/01</dc:date>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Sylvain Beorchia</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-17.575893,-18.998503)">
|
||||
<g
|
||||
id="g871"
|
||||
transform="translate(-21.965123,-2.4518183)"
|
||||
inkscape:export-xdpi="180.14684"
|
||||
inkscape:export-ydpi="180.14684">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1386-1-6-8"
|
||||
d="m 129.14517,28.055953 a 18.171912,15.127886 0 0 0 -18.1718,15.12826 18.171912,15.127886 0 0 0 18.1718,15.127797 18.171912,15.127886 0 0 0 18.17182,-15.127797 18.171912,15.127886 0 0 0 -18.17182,-15.12826 z m 0,5.304973 a 11.799942,9.8233022 0 0 1 11.79996,9.823287 11.799942,9.8233022 0 0 1 -11.79996,9.823301 11.799942,9.8233022 0 0 1 -11.79994,-9.823301 11.799942,9.8233022 0 0 1 11.79994,-9.823287 z"
|
||||
style="opacity:1;fill:#2eb0d1;fill-opacity:1;stroke:none;stroke-width:0.76500005;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" />
|
||||
<rect
|
||||
transform="rotate(15.768155)"
|
||||
ry="2.064862"
|
||||
rx="2.064862"
|
||||
y="-12.887596"
|
||||
x="134.25037"
|
||||
height="38.703815"
|
||||
width="3.5399821"
|
||||
id="rect1404-8-1-7"
|
||||
style="opacity:1;fill:#2eb0d1;fill-opacity:1;stroke:none;stroke-width:0.76500005;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" />
|
||||
<path
|
||||
d="m 46.43364,32.500713 h 8.778896 q 3.050416,0 4.840566,1.761508 1.790151,1.761508 1.790151,4.496858 0,2.74967 -1.775829,4.496857 -1.761508,1.747186 -4.854888,1.732865 h -6.80257 V 53.55288 H 46.43364 Z m 1.976326,1.976326 v 8.535436 h 6.80257 q 2.176823,0.01432 3.408446,-1.174338 1.245945,-1.202981 1.245945,-3.050416 0,-1.861756 -1.260266,-3.09338 -1.260266,-1.231623 -3.394125,-1.217302 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:29.32982063px;line-height:0;font-family:AnjaliOldLipi;-inkscape-font-specification:'AnjaliOldLipi, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#d0633c;fill-opacity:1;stroke:none;stroke-width:0.26458335"
|
||||
id="path856"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 82.236641,32.500713 h 8.778897 q 3.079058,0 4.854887,1.632617 1.775829,1.632617 1.775829,4.339324 0,1.947684 -0.916557,3.322519 -0.916557,1.360514 -2.678065,2.004968 2.076575,1.503727 3.193628,4.310682 0.315067,0.816309 0.859272,2.334356 0.544206,1.503726 1.045448,2.448925 l -1.747186,0.9452 q -0.630133,-1.160018 -1.174339,-2.73535 -0.529884,-1.575332 -0.930878,-2.477568 -1.288908,-3.079058 -4.5255,-4.353645 h -6.55911 v 9.280139 h -1.976326 z m 1.976326,1.976326 v 7.819376 h 6.802571 q 2.26275,0 3.451409,-1.002484 1.202981,-1.002484 1.202981,-2.806955 0,-1.818793 -1.245944,-2.921525 -1.245945,-1.102733 -3.408446,-1.088412 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:29.32982063px;line-height:0;font-family:AnjaliOldLipi;-inkscape-font-specification:'AnjaliOldLipi, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#d0633c;fill-opacity:1;stroke:none;stroke-width:0.26458335"
|
||||
id="path858"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 160.903,47.552296 q 0,2.849919 1.70422,3.909688 0.64446,0.400994 1.63262,0.400994 1.83311,0 2.82128,-1.389157 0.81631,-1.131375 0.81631,-2.592137 V 32.500713 h 1.97632 v 15.380971 q 0,2.191144 -1.26026,3.881045 -1.54669,2.090896 -4.35365,2.076575 -3.69487,0 -4.86921,-3.394125 -0.44396,-1.274587 -0.44396,-2.892883 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:29.32982063px;line-height:0;font-family:AnjaliOldLipi;-inkscape-font-specification:'AnjaliOldLipi, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#d0633c;fill-opacity:1;stroke:none;stroke-width:0.26458335"
|
||||
id="path860"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.6 KiB |
@@ -0,0 +1,110 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="134.18155mm"
|
||||
height="43.65625mm"
|
||||
viewBox="0 0 134.18155 43.65625"
|
||||
version="1.1"
|
||||
id="svg3821"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="logo_bw.svg">
|
||||
<defs
|
||||
id="defs3815" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.4"
|
||||
inkscape:cx="58.485496"
|
||||
inkscape:cy="-11.535695"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
inkscape:window-x="1912"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata3818">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>PROJ Logo</dc:title>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
|
||||
<dc:date>2019/10/01</dc:date>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Sylvain Beorchia</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-17.575893,-18.998503)">
|
||||
<g
|
||||
transform="translate(-19.341303,-95.718792)"
|
||||
id="g913"
|
||||
inkscape:export-xdpi="180.14684"
|
||||
inkscape:export-ydpi="180.14684">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1386-1-6-8-6"
|
||||
d="m 126.52135,121.32293 a 18.171912,15.127886 0 0 0 -18.1718,15.12826 18.171912,15.127886 0 0 0 18.1718,15.1278 18.171912,15.127886 0 0 0 18.17182,-15.1278 18.171912,15.127886 0 0 0 -18.17182,-15.12826 z m 0,5.30497 a 11.799942,9.8233022 0 0 1 11.79996,9.82329 11.799942,9.8233022 0 0 1 -11.79996,9.8233 11.799942,9.8233022 0 0 1 -11.79994,-9.8233 11.799942,9.8233022 0 0 1 11.79994,-9.82329 z"
|
||||
style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.76500005;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" />
|
||||
<rect
|
||||
transform="rotate(15.768155)"
|
||||
ry="2.064862"
|
||||
rx="2.064862"
|
||||
y="77.58268"
|
||||
x="157.07016"
|
||||
height="38.703815"
|
||||
width="3.5399821"
|
||||
id="rect1404-8-1-7-7"
|
||||
style="opacity:1;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.76500005;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" />
|
||||
<path
|
||||
d="m 43.809823,125.76769 h 8.778896 q 3.050416,0 4.840566,1.76151 1.790151,1.76151 1.790151,4.49686 0,2.74967 -1.775829,4.49685 -1.761508,1.74719 -4.854888,1.73287 h -6.80257 v 8.56408 h -1.976326 z m 1.976326,1.97633 v 8.53543 h 6.80257 q 2.176823,0.0143 3.408446,-1.17434 1.245945,-1.20298 1.245945,-3.05041 0,-1.86176 -1.260266,-3.09338 -1.260266,-1.23163 -3.394125,-1.2173 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:29.32982063px;line-height:0;font-family:AnjaliOldLipi;-inkscape-font-specification:'AnjaliOldLipi, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#868686;fill-opacity:1;stroke:none;stroke-width:0.26458335"
|
||||
id="path856-5"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 79.612824,125.76769 h 8.778897 q 3.079058,0 4.854887,1.63262 1.775829,1.63261 1.775829,4.33932 0,1.94768 -0.916557,3.32252 -0.916557,1.36051 -2.678065,2.00497 2.076575,1.50372 3.193628,4.31068 0.315067,0.81631 0.859272,2.33436 0.544206,1.50372 1.045448,2.44892 l -1.747186,0.9452 q -0.630133,-1.16002 -1.174339,-2.73535 -0.529884,-1.57533 -0.930878,-2.47757 -1.288908,-3.07906 -4.5255,-4.35364 h -6.55911 v 9.28014 h -1.976326 z m 1.976326,1.97633 v 7.81937 h 6.802571 q 2.26275,0 3.451409,-1.00248 1.202981,-1.00249 1.202981,-2.80696 0,-1.81879 -1.245944,-2.92152 -1.245945,-1.10274 -3.408446,-1.08841 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:29.32982063px;line-height:0;font-family:AnjaliOldLipi;-inkscape-font-specification:'AnjaliOldLipi, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#868686;fill-opacity:1;stroke:none;stroke-width:0.26458335"
|
||||
id="path858-3"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 158.27918,140.81927 q 0,2.84992 1.70422,3.90969 0.64446,0.40099 1.63262,0.40099 1.83311,0 2.82128,-1.38915 0.81631,-1.13138 0.81631,-2.59214 v -15.38097 h 1.97632 v 15.38097 q 0,2.19114 -1.26026,3.88105 -1.54669,2.09089 -4.35365,2.07657 -3.69487,0 -4.86921,-3.39412 -0.44396,-1.27459 -0.44396,-2.89289 z"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:29.32982063px;line-height:0;font-family:AnjaliOldLipi;-inkscape-font-specification:'AnjaliOldLipi, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#868686;fill-opacity:1;stroke:none;stroke-width:0.26458335"
|
||||
id="path860-5"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.6 KiB |
@@ -0,0 +1,982 @@
|
||||
{
|
||||
"$id": "https://proj.org/schemas/v0.2/projjson.schema.json",
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"description": "Schema for PROJJSON",
|
||||
"$comment": "This file exists both in data/ and in schemas/vXXX/. Keep both in sync. And if changing the value of $id, change PROJJSON_CURRENT_VERSION accordingly in io.cpp",
|
||||
|
||||
"oneOf": [
|
||||
{ "$ref": "#/definitions/crs" },
|
||||
{ "$ref": "#/definitions/datum" },
|
||||
{ "$ref": "#/definitions/datum_ensemble" },
|
||||
{ "$ref": "#/definitions/ellipsoid" },
|
||||
{ "$ref": "#/definitions/prime_meridian" },
|
||||
{ "$ref": "#/definitions/single_operation" },
|
||||
{ "$ref": "#/definitions/concatenated_operation" }
|
||||
],
|
||||
|
||||
"definitions": {
|
||||
|
||||
"abridged_transformation": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["AbridgedTransformation"] },
|
||||
"name": { "type": "string" },
|
||||
"method": { "$ref": "#/definitions/method" },
|
||||
"parameters": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/definitions/parameter_value" }
|
||||
},
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"required" : [ "name", "method", "parameters" ],
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/id_ids_mutually_exclusive" }
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"axis": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["Axis"] },
|
||||
"name": { "type": "string" },
|
||||
"abbreviation": { "type": "string" },
|
||||
"direction": { "type": "string",
|
||||
"enum": [ "north",
|
||||
"northNorthEast",
|
||||
"northEast",
|
||||
"eastNorthEast",
|
||||
"east",
|
||||
"eastSouthEast",
|
||||
"southEast",
|
||||
"southSouthEast",
|
||||
"south",
|
||||
"southSouthWest",
|
||||
"southWest",
|
||||
"westSouthWest",
|
||||
"west",
|
||||
"westNorthWest",
|
||||
"northWest",
|
||||
"northNorthWest",
|
||||
"up",
|
||||
"down",
|
||||
"geocentricX",
|
||||
"geocentricY",
|
||||
"geocentricZ",
|
||||
"columnPositive",
|
||||
"columnNegative",
|
||||
"rowPositive",
|
||||
"rowNegative",
|
||||
"displayRight",
|
||||
"displayLeft",
|
||||
"displayUp",
|
||||
"displayDown",
|
||||
"forward",
|
||||
"aft",
|
||||
"port",
|
||||
"starboard",
|
||||
"clockwise",
|
||||
"counterClockwise",
|
||||
"towards",
|
||||
"awayFrom",
|
||||
"future",
|
||||
"past",
|
||||
"unspecified" ] },
|
||||
"unit": { "$ref": "#/definitions/unit" },
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"required" : [ "name", "abbreviation", "direction" ],
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/id_ids_mutually_exclusive" }
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"bbox": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"east_longitude": { "type": "number" },
|
||||
"west_longitude": { "type": "number" },
|
||||
"south_latitude": { "type": "number" },
|
||||
"north_latitude": { "type": "number" }
|
||||
},
|
||||
"required" : [ "east_longitude", "west_longitude",
|
||||
"south_latitude", "north_latitude" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"bound_crs": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["BoundCRS"] },
|
||||
"source_crs": { "$ref": "#/definitions/crs" },
|
||||
"target_crs": { "$ref": "#/definitions/crs" },
|
||||
"transformation": { "$ref": "#/definitions/abridged_transformation" }
|
||||
},
|
||||
"required" : [ "source_crs", "target_crs", "transformation" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"compound_crs": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["CompoundCRS"] },
|
||||
"name": { "type": "string" },
|
||||
"components": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/definitions/crs" }
|
||||
},
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "components" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"concatenated_operation": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["ConcatenatedOperation"] },
|
||||
"name": { "type": "string" },
|
||||
"source_crs": { "$ref": "#/definitions/crs" },
|
||||
"target_crs": { "$ref": "#/definitions/crs" },
|
||||
"steps": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/definitions/single_operation" }
|
||||
},
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "source_crs", "target_crs", "steps" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"conversion": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["Conversion"] },
|
||||
"name": { "type": "string" },
|
||||
"method": { "$ref": "#/definitions/method" },
|
||||
"parameters": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/definitions/parameter_value" }
|
||||
},
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"required" : [ "name", "method" ],
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/id_ids_mutually_exclusive" }
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"coordinate_system": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["CoordinateSystem"] },
|
||||
"name": { "type": "string" },
|
||||
"subtype": { "type": "string",
|
||||
"enum": ["Cartesian",
|
||||
"spherical",
|
||||
"ellipsoidal",
|
||||
"vertical",
|
||||
"ordinal",
|
||||
"parametric",
|
||||
"TemporalDateTime",
|
||||
"TemporalCount",
|
||||
"TemporalMeasure"] },
|
||||
"axis": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/definitions/axis" }
|
||||
},
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"required" : [ "subtype", "axis" ],
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/id_ids_mutually_exclusive" }
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"crs": {
|
||||
"oneOf": [
|
||||
{ "$ref": "#/definitions/bound_crs" },
|
||||
{ "$ref": "#/definitions/compound_crs" },
|
||||
{ "$ref": "#/definitions/derived_engineering_crs" },
|
||||
{ "$ref": "#/definitions/derived_geodetic_crs" },
|
||||
{ "$ref": "#/definitions/derived_parametric_crs" },
|
||||
{ "$ref": "#/definitions/derived_projected_crs" },
|
||||
{ "$ref": "#/definitions/derived_temporal_crs" },
|
||||
{ "$ref": "#/definitions/derived_vertical_crs" },
|
||||
{ "$ref": "#/definitions/engineering_crs" },
|
||||
{ "$ref": "#/definitions/geodetic_crs" },
|
||||
{ "$ref": "#/definitions/parametric_crs" },
|
||||
{ "$ref": "#/definitions/projected_crs" },
|
||||
{ "$ref": "#/definitions/temporal_crs" },
|
||||
{ "$ref": "#/definitions/vertical_crs" }
|
||||
]
|
||||
},
|
||||
|
||||
"datum": {
|
||||
"oneOf": [
|
||||
{ "$ref": "#/definitions/geodetic_reference_frame" },
|
||||
{ "$ref": "#/definitions/vertical_reference_frame" },
|
||||
{ "$ref": "#/definitions/dynamic_geodetic_reference_frame" },
|
||||
{ "$ref": "#/definitions/dynamic_vertical_reference_frame" },
|
||||
{ "$ref": "#/definitions/temporal_datum" },
|
||||
{ "$ref": "#/definitions/parametric_datum" },
|
||||
{ "$ref": "#/definitions/engineering_datum" }
|
||||
]
|
||||
},
|
||||
|
||||
"datum_ensemble": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["DatumEnsemble"] },
|
||||
"name": { "type": "string" },
|
||||
"members": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"required" : [ "name" ],
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/id_ids_mutually_exclusive" }
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"ellipsoid": { "$ref": "#/definitions/ellipsoid" },
|
||||
"accuracy": { "type": "string" },
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"required" : [ "name", "members", "accuracy" ],
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/id_ids_mutually_exclusive" }
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"derived_engineering_crs": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string",
|
||||
"enum": ["DerivedEngineeringCRS"] },
|
||||
"name": { "type": "string" },
|
||||
"base_crs": { "$ref": "#/definitions/engineering_crs" },
|
||||
"conversion": { "$ref": "#/definitions/conversion" },
|
||||
"coordinate_system": { "$ref": "#/definitions/coordinate_system" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "base_crs", "conversion", "coordinate_system" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"derived_geodetic_crs": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string",
|
||||
"enum": ["DerivedGeodeticCRS",
|
||||
"DerivedGeographicCRS"] },
|
||||
"name": { "type": "string" },
|
||||
"base_crs": { "$ref": "#/definitions/geodetic_crs" },
|
||||
"conversion": { "$ref": "#/definitions/conversion" },
|
||||
"coordinate_system": { "$ref": "#/definitions/coordinate_system" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "base_crs", "conversion", "coordinate_system" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"derived_parametric_crs": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string",
|
||||
"enum": ["DerivedParametricCRS"] },
|
||||
"name": { "type": "string" },
|
||||
"base_crs": { "$ref": "#/definitions/parametric_crs" },
|
||||
"conversion": { "$ref": "#/definitions/conversion" },
|
||||
"coordinate_system": { "$ref": "#/definitions/coordinate_system" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "base_crs", "conversion", "coordinate_system" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"derived_projected_crs": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string",
|
||||
"enum": ["DerivedProjectedCRS"] },
|
||||
"name": { "type": "string" },
|
||||
"base_crs": { "$ref": "#/definitions/projected_crs" },
|
||||
"conversion": { "$ref": "#/definitions/conversion" },
|
||||
"coordinate_system": { "$ref": "#/definitions/coordinate_system" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "base_crs", "conversion", "coordinate_system" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"derived_temporal_crs": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string",
|
||||
"enum": ["DerivedTemporalCRS"] },
|
||||
"name": { "type": "string" },
|
||||
"base_crs": { "$ref": "#/definitions/temporal_crs" },
|
||||
"conversion": { "$ref": "#/definitions/conversion" },
|
||||
"coordinate_system": { "$ref": "#/definitions/coordinate_system" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "base_crs", "conversion", "coordinate_system" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"derived_vertical_crs": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string",
|
||||
"enum": ["DerivedVerticalCRS"] },
|
||||
"name": { "type": "string" },
|
||||
"base_crs": { "$ref": "#/definitions/vertical_crs" },
|
||||
"conversion": { "$ref": "#/definitions/conversion" },
|
||||
"coordinate_system": { "$ref": "#/definitions/coordinate_system" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "base_crs", "conversion", "coordinate_system" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"dynamic_geodetic_reference_frame": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/geodetic_reference_frame" }],
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["DynamicGeodeticReferenceFrame"] },
|
||||
"name": {},
|
||||
"anchor": {},
|
||||
"ellipsoid": {},
|
||||
"prime_meridian": {},
|
||||
"frame_reference_epoch": { "type": "number" },
|
||||
"deformation_model": { "type": "string" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "ellipsoid", "frame_reference_epoch" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"dynamic_vertical_reference_frame": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/vertical_reference_frame" }],
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["DynamicVerticalReferenceFrame"] },
|
||||
"name": {},
|
||||
"anchor": {},
|
||||
"frame_reference_epoch": { "type": "number" },
|
||||
"deformation_model": { "type": "string" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "frame_reference_epoch" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"ellipsoid": {
|
||||
"type": "object",
|
||||
"oneOf":[
|
||||
{
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["Ellipsoid"] },
|
||||
"name": { "type": "string" },
|
||||
"semi_major_axis": { "$ref": "#/definitions/value_in_metre_or_value_and_unit" },
|
||||
"semi_minor_axis": { "$ref": "#/definitions/value_in_metre_or_value_and_unit" },
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"required" : [ "name", "semi_major_axis", "semi_minor_axis" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["Ellipsoid"] },
|
||||
"name": { "type": "string" },
|
||||
"semi_major_axis": { "$ref": "#/definitions/value_in_metre_or_value_and_unit" },
|
||||
"inverse_flattening": { "type": "number" },
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"required" : [ "name", "semi_major_axis", "inverse_flattening" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["Ellipsoid"] },
|
||||
"name": { "type": "string" },
|
||||
"radius": { "$ref": "#/definitions/value_in_metre_or_value_and_unit" },
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"required" : [ "name", "radius" ],
|
||||
"additionalProperties": false
|
||||
}
|
||||
],
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/id_ids_mutually_exclusive" }
|
||||
]
|
||||
},
|
||||
|
||||
"engineering_crs": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["EngineeringCRS"] },
|
||||
"name": { "type": "string" },
|
||||
"datum": { "$ref": "#/definitions/engineering_datum" },
|
||||
"coordinate_system": { "$ref": "#/definitions/coordinate_system" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "datum" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"engineering_datum": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["EngineeringDatum"] },
|
||||
"name": { "type": "string" },
|
||||
"anchor": { "type": "string" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"geodetic_crs": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["GeodeticCRS", "GeographicCRS"] },
|
||||
"name": { "type": "string" },
|
||||
"datum": {
|
||||
"oneOf": [
|
||||
{ "$ref": "#/definitions/geodetic_reference_frame" },
|
||||
{ "$ref": "#/definitions/dynamic_geodetic_reference_frame" }
|
||||
]
|
||||
},
|
||||
"datum_ensemble": { "$ref": "#/definitions/datum_ensemble" },
|
||||
"coordinate_system": { "$ref": "#/definitions/coordinate_system" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name" ],
|
||||
"description": "One and only one of datum and datum_ensemble must be provided",
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/object_usage" },
|
||||
{ "$ref": "#/definitions/one_and_only_one_of_datum_or_datum_ensemble" }
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"geodetic_reference_frame": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["GeodeticReferenceFrame"] },
|
||||
"name": { "type": "string" },
|
||||
"anchor": { "type": "string" },
|
||||
"ellipsoid": { "$ref": "#/definitions/ellipsoid" },
|
||||
"prime_meridian": { "$ref": "#/definitions/prime_meridian" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "ellipsoid" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"id": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"authority": { "type": "string" },
|
||||
"code": {
|
||||
"oneOf": [ { "type": "string" }, { "type": "integer" } ]
|
||||
}
|
||||
},
|
||||
"required" : [ "authority", "code" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"ids": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/definitions/id" }
|
||||
},
|
||||
|
||||
"method": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["OperationMethod"]},
|
||||
"name": { "type": "string" },
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"required" : [ "name" ],
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/id_ids_mutually_exclusive" }
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"id_ids_mutually_exclusive": {
|
||||
"not": {
|
||||
"type": "object",
|
||||
"required": [ "id", "ids" ]
|
||||
}
|
||||
},
|
||||
|
||||
"one_and_only_one_of_datum_or_datum_ensemble": {
|
||||
"allOf": [
|
||||
{
|
||||
"not": {
|
||||
"type": "object",
|
||||
"required": [ "datum", "datum_ensemble" ]
|
||||
}
|
||||
},
|
||||
{
|
||||
"oneOf": [
|
||||
{ "type": "object", "required": ["datum"] },
|
||||
{ "type": "object", "required": ["datum_ensemble"] }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"object_usage": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"scope": { "type": "string" },
|
||||
"area": { "type": "string" },
|
||||
"bbox": { "$ref": "#/definitions/bbox" },
|
||||
"remarks": { "type": "string" },
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/id_ids_mutually_exclusive" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"usages": { "$ref": "#/definitions/usages" },
|
||||
"remarks": { "type": "string" },
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/id_ids_mutually_exclusive" }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"parameter_value": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["ParameterValue"] },
|
||||
"name": { "type": "string" },
|
||||
"value": {
|
||||
"oneOf": [
|
||||
{ "type": "string" },
|
||||
{ "type": "number" }
|
||||
]
|
||||
},
|
||||
"unit": { "$ref": "#/definitions/unit" },
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"required" : [ "name", "value" ],
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/id_ids_mutually_exclusive" }
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"parametric_crs": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["ParametricCRS"] },
|
||||
"name": { "type": "string" },
|
||||
"datum": { "$ref": "#/definitions/parametric_datum" },
|
||||
"coordinate_system": { "$ref": "#/definitions/coordinate_system" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "datum" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"parametric_datum": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["ParametricDatum"] },
|
||||
"name": { "type": "string" },
|
||||
"anchor": { "type": "string" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"prime_meridian": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"$schema" : { "type": "string" },
|
||||
"type": { "type": "string", "enum": ["PrimeMeridian"] },
|
||||
"name": { "type": "string" },
|
||||
"longitude": { "$ref": "#/definitions/value_and_unit" },
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"required" : [ "name" ],
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/id_ids_mutually_exclusive" }
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"single_operation": {
|
||||
"oneOf": [
|
||||
{ "$ref": "#/definitions/conversion" },
|
||||
{ "$ref": "#/definitions/transformation" }
|
||||
]
|
||||
},
|
||||
|
||||
"projected_crs": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string",
|
||||
"enum": ["ProjectedCRS"] },
|
||||
"name": { "type": "string" },
|
||||
"base_crs": { "$ref": "#/definitions/geodetic_crs" },
|
||||
"conversion": { "$ref": "#/definitions/conversion" },
|
||||
"coordinate_system": { "$ref": "#/definitions/coordinate_system" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "base_crs", "conversion", "coordinate_system" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"temporal_crs": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["TemporalCRS"] },
|
||||
"name": { "type": "string" },
|
||||
"datum": { "$ref": "#/definitions/temporal_datum" },
|
||||
"coordinate_system": { "$ref": "#/definitions/coordinate_system" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "datum" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"temporal_datum": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["TemporalDatum"] },
|
||||
"name": { "type": "string" },
|
||||
"calendar": { "type": "string" },
|
||||
"time_origin": { "type": "string" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "calendar" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"transformation": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["Transformation"] },
|
||||
"name": { "type": "string" },
|
||||
"source_crs": { "$ref": "#/definitions/crs" },
|
||||
"target_crs": { "$ref": "#/definitions/crs" },
|
||||
"interpolation_crs": { "$ref": "#/definitions/crs" },
|
||||
"method": { "$ref": "#/definitions/method" },
|
||||
"parameters": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/definitions/parameter_value" }
|
||||
},
|
||||
"accuracy": { "type": "string" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name", "source_crs", "target_crs", "method", "parameters" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"unit": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"enum": ["metre", "degree", "unity"]
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": { "type": "string",
|
||||
"enum": ["LinearUnit", "AngularUnit", "ScaleUnit",
|
||||
"TimeUnit", "ParametricUnit", "Unit"] },
|
||||
"name": { "type": "string" },
|
||||
"conversion_factor": { "type": "number" },
|
||||
"id": { "$ref": "#/definitions/id" },
|
||||
"ids": { "$ref": "#/definitions/ids" }
|
||||
},
|
||||
"required" : [ "type", "name" ],
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/id_ids_mutually_exclusive" }
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"usages": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"scope": { "type": "string" },
|
||||
"area": { "type": "string" },
|
||||
"bbox": { "$ref": "#/definitions/bbox" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
|
||||
"value_and_unit": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"value": { "type": "number" },
|
||||
"unit": { "$ref": "#/definitions/unit" }
|
||||
},
|
||||
"required" : [ "value", "unit" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"value_in_metre_or_value_and_unit": {
|
||||
"oneOf": [
|
||||
{ "type": "number" },
|
||||
{ "$ref": "#/definitions/value_and_unit" }
|
||||
]
|
||||
},
|
||||
|
||||
"vertical_crs": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["VerticalCRS"] },
|
||||
"name": { "type": "string" },
|
||||
"datum": {
|
||||
"oneOf": [
|
||||
{ "$ref": "#/definitions/vertical_reference_frame" },
|
||||
{ "$ref": "#/definitions/dynamic_vertical_reference_frame" }
|
||||
]
|
||||
},
|
||||
"datum_ensemble": { "$ref": "#/definitions/datum_ensemble" },
|
||||
"coordinate_system": { "$ref": "#/definitions/coordinate_system" },
|
||||
"geoid_model": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": { "type": "string" },
|
||||
"interpolation_crs": { "$ref": "#/definitions/crs" },
|
||||
"id": { "$ref": "#/definitions/id" }
|
||||
},
|
||||
"required" : [ "name" ],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name"],
|
||||
"description": "One and only one of datum and datum_ensemble must be provided",
|
||||
"allOf": [
|
||||
{ "$ref": "#/definitions/object_usage" },
|
||||
{ "$ref": "#/definitions/one_and_only_one_of_datum_or_datum_ensemble" }
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
|
||||
"vertical_reference_frame": {
|
||||
"type": "object",
|
||||
"allOf": [{ "$ref": "#/definitions/object_usage" }],
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["VerticalReferenceFrame"] },
|
||||
"name": { "type": "string" },
|
||||
"anchor": { "type": "string" },
|
||||
"$schema" : {},
|
||||
"scope": {},
|
||||
"area": {},
|
||||
"bbox": {},
|
||||
"usages": {},
|
||||
"remarks": {},
|
||||
"id": {}, "ids": {}
|
||||
},
|
||||
"required" : [ "name" ],
|
||||
"additionalProperties": false
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -476,6 +476,15 @@ def fill_concatenated_operation(proj_db_cursor):
|
||||
max_n_params = 3
|
||||
step_code = [None for i in range(max_n_params)]
|
||||
|
||||
proj_db_cursor.execute("SELECT COUNT(*) FROM epsg_coordoperationpath WHERE concat_operation_code = ?", (code,))
|
||||
(nsteps, ) = proj_db_cursor.fetchone()
|
||||
# Our database model has only provision for up to 3 steps currently.
|
||||
# As of EPSG v9.8.2, only EPSG:9103 (NAD27 to ITRF2014 (1)) and 9104 (NAD27 to ITRF2014 (2)) have respectively 4 and 7 steps.
|
||||
# Tracked as https://github.com/OSGeo/PROJ/issues/1632
|
||||
if nsteps > 3:
|
||||
print('Cannot import concatenated_operation ' + str(code) + ', as it has more than 3 steps.')
|
||||
continue
|
||||
|
||||
iterator = proj_db_cursor.execute("SELECT op_path_step, single_operation_code FROM epsg_coordoperationpath WHERE concat_operation_code = ? ORDER BY op_path_step", (code,))
|
||||
for (order, single_operation_code) in iterator:
|
||||
assert order <= max_n_params
|
||||
|
||||
@@ -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/
|
||||
|
||||
@@ -114,6 +114,7 @@ osgeo::proj::crs::CRS::extractGeographicCRS() const
|
||||
osgeo::proj::crs::CRS::extractVerticalCRS() const
|
||||
osgeo::proj::crs::CRS::getNonDeprecated(dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::io::DatabaseContext> > const&) const
|
||||
osgeo::proj::crs::CRS::identify(std::shared_ptr<osgeo::proj::io::AuthorityFactory> const&) const
|
||||
osgeo::proj::crs::CRS::promoteTo3D(std::string const&, std::shared_ptr<osgeo::proj::io::DatabaseContext> const&) const
|
||||
osgeo::proj::crs::CRS::shallowClone() const
|
||||
osgeo::proj::crs::CRS::stripVerticalComponent() const
|
||||
osgeo::proj::crs::DerivedCRS::baseCRS() const
|
||||
@@ -897,6 +898,7 @@ proj_crs_alter_geodetic_crs
|
||||
proj_crs_alter_parameters_linear_unit
|
||||
proj_crs_create_bound_crs
|
||||
proj_crs_create_bound_crs_to_WGS84
|
||||
proj_crs_create_projected_3D_crs_from_2D
|
||||
proj_crs_get_coordinate_system
|
||||
proj_crs_get_coordoperation
|
||||
proj_crs_get_datum
|
||||
@@ -904,6 +906,7 @@ proj_crs_get_geodetic_crs
|
||||
proj_crs_get_horizontal_datum
|
||||
proj_crs_get_sub_crs
|
||||
proj_crs_info_list_destroy
|
||||
proj_crs_promote_to_3D
|
||||
proj_cs_get_axis_count
|
||||
proj_cs_get_axis_info
|
||||
proj_cs_get_type
|
||||
|
||||
@@ -362,6 +362,7 @@ size_t proj_trans_generic (
|
||||
PJ_COORD coord = {{0,0,0,0}};
|
||||
size_t i, nmin;
|
||||
double null_broadcast = 0;
|
||||
double invalid_time = HUGE_VAL;
|
||||
|
||||
if (nullptr==P)
|
||||
return 0;
|
||||
@@ -379,7 +380,7 @@ size_t proj_trans_generic (
|
||||
if (0==nx) x = &null_broadcast;
|
||||
if (0==ny) y = &null_broadcast;
|
||||
if (0==nz) z = &null_broadcast;
|
||||
if (0==nt) t = &null_broadcast;
|
||||
if (0==nt) t = &invalid_time;
|
||||
|
||||
/* nothing to do? */
|
||||
if (0==nx+ny+nz+nt)
|
||||
@@ -946,7 +947,7 @@ static PJ* add_coord_op_to_list(PJ* op,
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
static PJ* create_operation_to_base_geog_crs(PJ_CONTEXT* ctx, PJ* crs) {
|
||||
static PJ* create_operation_to_base_geog_crs(PJ_CONTEXT* ctx, const PJ* crs) {
|
||||
/*****************************************************************************/
|
||||
// Create a geographic 2D long-lat degrees CRS that is related to the
|
||||
// CRS
|
||||
@@ -1052,7 +1053,7 @@ PJ *proj_create_crs_to_crs (PJ_CONTEXT *ctx, const char *source_crs, const char
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
PJ *proj_create_crs_to_crs_from_pj (PJ_CONTEXT *ctx, PJ *source_crs, PJ *target_crs, PJ_AREA *area, const char* const *) {
|
||||
PJ *proj_create_crs_to_crs_from_pj (PJ_CONTEXT *ctx, const PJ *source_crs, const PJ *target_crs, PJ_AREA *area, const char* const *) {
|
||||
/******************************************************************************
|
||||
Create a transformation pipeline between two known coordinate reference
|
||||
systems.
|
||||
@@ -1136,6 +1137,8 @@ PJ *proj_create_crs_to_crs_from_pj (PJ_CONTEXT *ctx, PJ *source_crs, PJ *target
|
||||
|
||||
try
|
||||
{
|
||||
bool skipDefaultTransforms = true;
|
||||
|
||||
// Iterate over source->target candidate transformations and reproject
|
||||
// their long-lat bounding box into the source CRS.
|
||||
for( int i = 0; i < op_count; i++ )
|
||||
@@ -1148,12 +1151,25 @@ PJ *proj_create_crs_to_crs_from_pj (PJ_CONTEXT *ctx, PJ *source_crs, PJ *target
|
||||
double north_lat = 0.0;
|
||||
|
||||
const char* name = proj_get_name(op);
|
||||
if( name && (strstr(name, "Ballpark geographic offset") ||
|
||||
bool canUseOp = true;
|
||||
if( skipDefaultTransforms &&
|
||||
name && (strstr(name, "Ballpark geographic offset") ||
|
||||
strstr(name, "Ballpark geocentric translation")) )
|
||||
{
|
||||
// Skip default transformations
|
||||
// Skip default transformations unless there is already one at
|
||||
// the beginning (in which case all of them will have one)
|
||||
if( i == 0 )
|
||||
{
|
||||
skipDefaultTransforms = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
canUseOp = false;
|
||||
}
|
||||
}
|
||||
else if( proj_get_area_of_use(ctx, op,
|
||||
|
||||
if( canUseOp &&
|
||||
proj_get_area_of_use(ctx, op,
|
||||
&west_lon, &south_lat, &east_lon, &north_lat, nullptr) )
|
||||
{
|
||||
if( west_lon <= east_lon )
|
||||
|
||||
@@ -42,7 +42,7 @@ geodtest_LDADD = libproj.la
|
||||
|
||||
lib_LTLIBRARIES = libproj.la
|
||||
|
||||
libproj_la_LDFLAGS = -no-undefined -version-info 17:0:2
|
||||
libproj_la_LDFLAGS = -no-undefined -version-info 17:1:2
|
||||
libproj_la_LIBADD = @SQLITE3_LIBS@
|
||||
|
||||
libproj_la_SOURCES = \
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
// PROJ include order is sensitive
|
||||
// clang-format off
|
||||
#include "proj.h"
|
||||
#include "proj_experimental.h"
|
||||
#include "proj_internal.h"
|
||||
#include "emess.h"
|
||||
#include "utils.h"
|
||||
@@ -591,12 +592,33 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
srcIsGeog = true;
|
||||
}
|
||||
proj_destroy(src);
|
||||
proj_destroy(dst);
|
||||
|
||||
src = proj_create(nullptr, pj_add_type_crs_if_needed(fromStr).c_str());
|
||||
dst = proj_create(nullptr, pj_add_type_crs_if_needed(toStr).c_str());
|
||||
|
||||
if( proj_get_type(src) == PJ_TYPE_COMPOUND_CRS ||
|
||||
proj_get_type(dst) == PJ_TYPE_COMPOUND_CRS ) {
|
||||
auto src3D = proj_crs_promote_to_3D(nullptr, nullptr, src);
|
||||
if( src3D ) {
|
||||
proj_destroy(src);
|
||||
src = src3D;
|
||||
}
|
||||
|
||||
auto dst3D = proj_crs_promote_to_3D(nullptr, nullptr, dst);
|
||||
if( dst3D ) {
|
||||
proj_destroy(dst);
|
||||
dst = dst3D;
|
||||
}
|
||||
}
|
||||
|
||||
transformation = proj_create_crs_to_crs_from_pj(nullptr, src, dst,
|
||||
nullptr, nullptr);
|
||||
|
||||
proj_destroy(src);
|
||||
proj_destroy(dst);
|
||||
|
||||
transformation = proj_create_crs_to_crs(nullptr, fromStr.c_str(),
|
||||
toStr.c_str(), nullptr);
|
||||
if (!transformation) {
|
||||
emess(3, "cannot initialize transformation\ncause: %s",
|
||||
pj_strerrno(pj_errno));
|
||||
|
||||
@@ -60,6 +60,14 @@ void pj_set_ctx( projPJ pj, projCtx ctx )
|
||||
if (pj==nullptr)
|
||||
return;
|
||||
pj->ctx = ctx;
|
||||
if( pj->is_pipeline )
|
||||
{
|
||||
pj_pipeline_assign_context_to_steps(pj, ctx);
|
||||
}
|
||||
for( const auto &alt: pj->alternativeCoordinateOperations )
|
||||
{
|
||||
pj_set_ctx(alt.pj, ctx);
|
||||
}
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
@@ -85,10 +85,22 @@ int pj_datum_set(projCtx ctx, paralist *pl, PJ *projdef)
|
||||
entry[ sizeof(entry) - 1 ] = '\0';
|
||||
|
||||
curr = curr->next = pj_mkparam(entry);
|
||||
if (nullptr == curr)
|
||||
{
|
||||
pj_ctx_set_errno(ctx, ENOMEM);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if( pj_datums[i].defn && strlen(pj_datums[i].defn) > 0 )
|
||||
{
|
||||
curr = curr->next = pj_mkparam(pj_datums[i].defn);
|
||||
if (nullptr == curr)
|
||||
{
|
||||
pj_ctx_set_errno(ctx, ENOMEM);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
(void)curr; /* make clang static analyzer happy */
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/* set ellipsoid parameters a and es */
|
||||
|
||||
#include <errno.h>
|
||||
#include <math.h>
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
@@ -156,7 +157,14 @@ static int ellps_ellps (PJ *P) {
|
||||
err = proj_errno_reset (P);
|
||||
|
||||
paralist* new_params = pj_mkparam (ellps->major);
|
||||
if (nullptr == new_params)
|
||||
return proj_errno_set (P, ENOMEM);
|
||||
new_params->next = pj_mkparam (ellps->ell);
|
||||
if (nullptr == new_params->next)
|
||||
{
|
||||
pj_dealloc(new_params);
|
||||
return proj_errno_set (P, ENOMEM);
|
||||
}
|
||||
paralist* old_params = P->params;
|
||||
P->params = new_params;
|
||||
|
||||
@@ -389,6 +397,9 @@ static int ellps_spherification (PJ *P) {
|
||||
return proj_errno_set (P, PJD_ERR_REF_RAD_LARGER_THAN_90);
|
||||
t = sin (t);
|
||||
t = 1 - P->es * t * t;
|
||||
if (t == 0.) {
|
||||
return proj_errno_set(P, PJD_ERR_INVALID_ECCENTRICITY);
|
||||
}
|
||||
if (i==5) /* arithmetic */
|
||||
P->a *= (1. - P->es + t) / (2 * t * sqrt(t));
|
||||
else /* geometric */
|
||||
|
||||
@@ -102,11 +102,10 @@ definitions, and coordinate operations. This is an implementation of
|
||||
|
||||
PROJ implements the two following revisions of the standard:
|
||||
|
||||
\subsubsection WKT2_2018 WKT2:2018
|
||||
\subsubsection WKT2_2018 WKT2:2018 / WKT2:2019
|
||||
|
||||
[OGC 18-010r1, 2018-06-08, WKT2-2018]
|
||||
(https://portal.opengeospatial.org/files/?artifact_id=79826)
|
||||
(not yet adopted, at time of writing)
|
||||
[OGC 18-010r7, 2019-06-24, WKT2-2019]
|
||||
(http://docs.opengeospatial.org/is/18-010r7/18-010r7.html)
|
||||
|
||||
\subsubsection WKT2_2015 WKT2:2015
|
||||
|
||||
|
||||
@@ -399,7 +399,17 @@ void pj_Convert_Geocentric_To_Geodetic (GeocentricInfo *gi,
|
||||
*/
|
||||
CT = Z/RR;
|
||||
ST = P/RR;
|
||||
RX = 1.0/sqrt(1.0-gi->Geocent_e2*(2.0-gi->Geocent_e2)*ST*ST);
|
||||
{
|
||||
const double denominator = 1.0-gi->Geocent_e2*(2.0-gi->Geocent_e2)*ST*ST;
|
||||
if( denominator == 0 )
|
||||
{
|
||||
*Latitude = HUGE_VAL;
|
||||
*Longitude = HUGE_VAL;
|
||||
*Height = HUGE_VAL;
|
||||
return;
|
||||
}
|
||||
RX = 1.0/sqrt(denominator);
|
||||
}
|
||||
CPHI0 = ST*(1.0-gi->Geocent_e2)*RX;
|
||||
SPHI0 = CT*RX;
|
||||
iter = 0;
|
||||
@@ -420,7 +430,17 @@ void pj_Convert_Geocentric_To_Geodetic (GeocentricInfo *gi,
|
||||
return;
|
||||
}
|
||||
RK = gi->Geocent_e2*RN/(RN+*Height);
|
||||
RX = 1.0/sqrt(1.0-RK*(2.0-RK)*ST*ST);
|
||||
{
|
||||
const double denominator = 1.0-RK*(2.0-RK)*ST*ST;
|
||||
if( denominator == 0 )
|
||||
{
|
||||
*Latitude = HUGE_VAL;
|
||||
*Longitude = HUGE_VAL;
|
||||
*Height = HUGE_VAL;
|
||||
return;
|
||||
}
|
||||
RX = 1.0/sqrt(denominator);
|
||||
}
|
||||
CPHI = ST*(1.0-RK)*RX;
|
||||
SPHI = CT*RX;
|
||||
SDPHI = SPHI*CPHI0-CPHI*SPHI0;
|
||||
|
||||
@@ -498,7 +498,7 @@ template <class T> static PROJ_STRING_LIST to_string_list(T &&set) {
|
||||
* proj_string_list_destroy().
|
||||
* @param out_grammar_errors Pointer to a PROJ_STRING_LIST object, or NULL.
|
||||
* If provided, *out_grammar_errors will contain a list of errors regarding the
|
||||
* WKT grammaer. It must be freed with proj_string_list_destroy().
|
||||
* WKT grammar. It must be freed with proj_string_list_destroy().
|
||||
* @return Object that must be unreferenced with proj_destroy(), or NULL in
|
||||
* case of error.
|
||||
*/
|
||||
@@ -522,6 +522,7 @@ PJ *proj_create_from_wkt(PJ_CONTEXT *ctx, const char *wkt,
|
||||
if (dbContext) {
|
||||
parser.attachDatabaseContext(NN_NO_CHECK(dbContext));
|
||||
}
|
||||
parser.setStrict(false);
|
||||
for (auto iter = options; iter && iter[0]; ++iter) {
|
||||
const char *value;
|
||||
if ((value = getOptionValue(*iter, "STRICT="))) {
|
||||
@@ -536,10 +537,19 @@ PJ *proj_create_from_wkt(PJ_CONTEXT *ctx, const char *wkt,
|
||||
auto obj = nn_dynamic_pointer_cast<IdentifiedObject>(
|
||||
parser.createFromWKT(wkt));
|
||||
|
||||
std::vector<std::string> warningsFromParsing;
|
||||
if (out_grammar_errors) {
|
||||
auto warnings = parser.warningList();
|
||||
if (!warnings.empty()) {
|
||||
*out_grammar_errors = to_string_list(warnings);
|
||||
auto rawWarnings = parser.warningList();
|
||||
std::vector<std::string> grammarWarnings;
|
||||
for (const auto &msg : rawWarnings) {
|
||||
if (msg.find("Default it to") != std::string::npos) {
|
||||
warningsFromParsing.push_back(msg);
|
||||
} else {
|
||||
grammarWarnings.push_back(msg);
|
||||
}
|
||||
}
|
||||
if (!grammarWarnings.empty()) {
|
||||
*out_grammar_errors = to_string_list(grammarWarnings);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -548,6 +558,8 @@ PJ *proj_create_from_wkt(PJ_CONTEXT *ctx, const char *wkt,
|
||||
if (derivedCRS) {
|
||||
auto warnings =
|
||||
derivedCRS->derivingConversionRef()->validateParameters();
|
||||
warnings.insert(warnings.end(), warningsFromParsing.begin(),
|
||||
warningsFromParsing.end());
|
||||
if (!warnings.empty()) {
|
||||
*out_warnings = to_string_list(warnings);
|
||||
}
|
||||
@@ -2089,14 +2101,26 @@ PJ *proj_get_target_crs(PJ_CONTEXT *ctx, const PJ *obj) {
|
||||
* The method returns a list of matching reference CRS, and the percentage
|
||||
* (0-100) of confidence in the match. The list is sorted by decreasing
|
||||
* confidence.
|
||||
*
|
||||
* 100% means that the name of the reference entry
|
||||
* <ul>
|
||||
* <li>100% means that the name of the reference entry
|
||||
* perfectly matches the CRS name, and both are equivalent. In which case a
|
||||
* single result is returned.
|
||||
* 90% means that CRS are equivalent, but the names are not exactly the same.
|
||||
* 70% means that CRS are equivalent), but the names do not match at all.
|
||||
* 25% means that the CRS are not equivalent, but there is some similarity in
|
||||
* the names.
|
||||
* Note: in the case of a GeographicCRS whose axis
|
||||
* order is implicit in the input definition (for example ESRI WKT), then axis
|
||||
* order is ignored for the purpose of identification. That is the CRS built
|
||||
* from
|
||||
* GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],
|
||||
* PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
|
||||
* will be identified to EPSG:4326, but will not pass a
|
||||
* isEquivalentTo(EPSG_4326, util::IComparable::Criterion::EQUIVALENT) test,
|
||||
* but rather isEquivalentTo(EPSG_4326,
|
||||
* util::IComparable::Criterion::EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS)
|
||||
* </li>
|
||||
* <li>90% means that CRS are equivalent, but the names are not exactly the same.</li>
|
||||
* <li>70% means that CRS are equivalent), but the names do not match at all.</li>
|
||||
* <li>25% means that the CRS are not equivalent, but there is some similarity in
|
||||
* the names.</li>
|
||||
* </ul>
|
||||
* Other confidence values may be returned by some specialized implementations.
|
||||
*
|
||||
* This is implemented for GeodeticCRS, ProjectedCRS, VerticalCRS and
|
||||
@@ -3148,7 +3172,7 @@ PJ *proj_crs_alter_cs_linear_unit(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Return a copy of the CRS with the lineaer units of the parameters
|
||||
/** \brief Return a copy of the CRS with the linear units of the parameters
|
||||
* of its conversion modified.
|
||||
*
|
||||
* The CRS must be or contain a ProjectedCRS, VerticalCRS or a GeocentricCRS.
|
||||
@@ -3197,6 +3221,151 @@ PJ *proj_crs_alter_parameters_linear_unit(PJ_CONTEXT *ctx, const PJ *obj,
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Create a 3D CRS from an existing 2D CRS.
|
||||
*
|
||||
* The new axis will be ellipsoidal height, oriented upwards, and with metre
|
||||
* units.
|
||||
*
|
||||
* See osgeo::proj::crs::CRS::promoteTo3D().
|
||||
*
|
||||
* The returned object must be unreferenced with proj_destroy() after
|
||||
* use.
|
||||
* It should be used by at most one thread at a time.
|
||||
*
|
||||
* @param ctx PROJ context, or NULL for default context
|
||||
* @param crs_3D_name CRS name. Or NULL (in which case the name of crs_2D
|
||||
* will be used)
|
||||
* @param crs_2D 2D CRS to be "promoted" to 3D. Must not be NULL.
|
||||
*
|
||||
* @return Object that must be unreferenced with
|
||||
* proj_destroy(), or NULL in case of error.
|
||||
* @since 7.0
|
||||
*/
|
||||
PJ *proj_crs_promote_to_3D(PJ_CONTEXT *ctx, const char *crs_3D_name,
|
||||
const PJ *crs_2D) {
|
||||
SANITIZE_CTX(ctx);
|
||||
auto cpp_2D_crs = dynamic_cast<const CRS *>(crs_2D->iso_obj.get());
|
||||
if (!cpp_2D_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__, "crs_2D is not a CRS");
|
||||
return nullptr;
|
||||
}
|
||||
try {
|
||||
auto dbContext = getDBcontextNoException(ctx, __FUNCTION__);
|
||||
return pj_obj_create(
|
||||
ctx, cpp_2D_crs->promoteTo3D(crs_3D_name ? std::string(crs_3D_name)
|
||||
: cpp_2D_crs->nameStr(),
|
||||
dbContext));
|
||||
} catch (const std::exception &e) {
|
||||
proj_log_error(ctx, __FUNCTION__, e.what());
|
||||
if (ctx->cpp_context) {
|
||||
ctx->cpp_context->autoCloseDbIfNeeded();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Create a projected 3D CRS from an existing projected 2D CRS.
|
||||
*
|
||||
* The passed projected_2D_crs is used so that its name is replaced by
|
||||
* crs_name and its base geographic CRS is replaced by geog_3D_crs. The vertical
|
||||
* axis of geog_3D_crs (ellipsoidal height) will be added as the 3rd axis of
|
||||
* the resulting projected 3D CRS.
|
||||
* Normally, the passed geog_3D_crs should be the 3D counterpart of the original
|
||||
* 2D base geographic CRS of projected_2D_crs, but such no check is done.
|
||||
*
|
||||
* It is also possible to invoke this function with a NULL geog_3D_crs. In which
|
||||
* case, the existing base geographic 2D CRS of projected_2D_crs will be
|
||||
* automatically promoted to 3D by assuming a 3rd axis being an ellipsoidal
|
||||
* height, oriented upwards, and with metre units. This is equivalent to using
|
||||
* proj_crs_promote_to_3D().
|
||||
*
|
||||
* The returned object must be unreferenced with proj_destroy() after
|
||||
* use.
|
||||
* It should be used by at most one thread at a time.
|
||||
*
|
||||
* @param ctx PROJ context, or NULL for default context
|
||||
* @param crs_name CRS name. Or NULL (in which case the name of projected_2D_crs
|
||||
* will be used)
|
||||
* @param projected_2D_crs Projected 2D CRS to be "promoted" to 3D. Must not be
|
||||
* NULL.
|
||||
* @param geog_3D_crs Base geographic 3D CRS for the new CRS. May be NULL.
|
||||
*
|
||||
* @return Object that must be unreferenced with
|
||||
* proj_destroy(), or NULL in case of error.
|
||||
* @since 7.0
|
||||
*/
|
||||
PJ *proj_crs_create_projected_3D_crs_from_2D(PJ_CONTEXT *ctx,
|
||||
const char *crs_name,
|
||||
const PJ *projected_2D_crs,
|
||||
const PJ *geog_3D_crs) {
|
||||
SANITIZE_CTX(ctx);
|
||||
auto cpp_projected_2D_crs =
|
||||
dynamic_cast<const ProjectedCRS *>(projected_2D_crs->iso_obj.get());
|
||||
if (!cpp_projected_2D_crs) {
|
||||
proj_log_error(ctx, __FUNCTION__,
|
||||
"projected_2D_crs is not a Projected CRS");
|
||||
return nullptr;
|
||||
}
|
||||
const auto &oldCS = cpp_projected_2D_crs->coordinateSystem();
|
||||
const auto &oldCSAxisList = oldCS->axisList();
|
||||
|
||||
if (geog_3D_crs && geog_3D_crs->iso_obj) {
|
||||
auto cpp_geog_3D_CRS =
|
||||
std::dynamic_pointer_cast<GeographicCRS>(geog_3D_crs->iso_obj);
|
||||
if (!cpp_geog_3D_CRS) {
|
||||
proj_log_error(ctx, __FUNCTION__,
|
||||
"geog_3D_crs is not a Geographic CRS");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const auto &geogCS = cpp_geog_3D_CRS->coordinateSystem();
|
||||
const auto &geogCSAxisList = geogCS->axisList();
|
||||
if (geogCSAxisList.size() != 3) {
|
||||
proj_log_error(ctx, __FUNCTION__,
|
||||
"geog_3D_crs is not a Geographic 3D CRS");
|
||||
return nullptr;
|
||||
}
|
||||
try {
|
||||
auto newCS =
|
||||
cs::CartesianCS::create(PropertyMap(), oldCSAxisList[0],
|
||||
oldCSAxisList[1], geogCSAxisList[2]);
|
||||
return pj_obj_create(
|
||||
ctx,
|
||||
ProjectedCRS::create(
|
||||
createPropertyMapName(
|
||||
crs_name ? crs_name
|
||||
: cpp_projected_2D_crs->nameStr().c_str()),
|
||||
NN_NO_CHECK(cpp_geog_3D_CRS),
|
||||
cpp_projected_2D_crs->derivingConversionRef(), newCS));
|
||||
} catch (const std::exception &e) {
|
||||
proj_log_error(ctx, __FUNCTION__, e.what());
|
||||
if (ctx->cpp_context) {
|
||||
ctx->cpp_context->autoCloseDbIfNeeded();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
auto dbContext = getDBcontextNoException(ctx, __FUNCTION__);
|
||||
return pj_obj_create(ctx,
|
||||
cpp_projected_2D_crs->promoteTo3D(
|
||||
crs_name ? std::string(crs_name)
|
||||
: cpp_projected_2D_crs->nameStr(),
|
||||
dbContext));
|
||||
} catch (const std::exception &e) {
|
||||
proj_log_error(ctx, __FUNCTION__, e.what());
|
||||
if (ctx->cpp_context) {
|
||||
ctx->cpp_context->autoCloseDbIfNeeded();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a EngineeringCRS with just a name
|
||||
*
|
||||
* The returned object must be unreferenced with proj_destroy() after
|
||||
@@ -6039,6 +6208,7 @@ PJ *proj_create_conversion_equal_earth(PJ_CONTEXT *ctx, double center_long,
|
||||
|
||||
int proj_coordoperation_is_instantiable(PJ_CONTEXT *ctx,
|
||||
const PJ *coordoperation) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(coordoperation);
|
||||
auto op = dynamic_cast<const CoordinateOperation *>(
|
||||
coordoperation->iso_obj.get());
|
||||
@@ -6081,6 +6251,7 @@ int proj_coordoperation_is_instantiable(PJ_CONTEXT *ctx,
|
||||
|
||||
int proj_coordoperation_has_ballpark_transformation(PJ_CONTEXT *ctx,
|
||||
const PJ *coordoperation) {
|
||||
SANITIZE_CTX(ctx);
|
||||
assert(coordoperation);
|
||||
auto op = dynamic_cast<const CoordinateOperation *>(
|
||||
coordoperation->iso_obj.get());
|
||||
|
||||
@@ -56,7 +56,9 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#ifdef DEBUG
|
||||
// #define DEBUG
|
||||
// #define DEBUG_SORT
|
||||
#if defined(DEBUG) || defined(DEBUG_SORT)
|
||||
#include <iostream>
|
||||
#endif
|
||||
|
||||
@@ -5925,24 +5927,31 @@ void Conversion::_exportToPROJString(
|
||||
if (!param->proj_name) {
|
||||
continue;
|
||||
}
|
||||
auto value =
|
||||
const auto value =
|
||||
parameterValueMeasure(param->wkt2_name, param->epsg_code);
|
||||
double valueConverted = 0;
|
||||
if (value == nullMeasure) {
|
||||
// Deal with missing values. In an ideal world, this would
|
||||
// not happen
|
||||
if (param->epsg_code ==
|
||||
EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN) {
|
||||
valueConverted = 1.0;
|
||||
}
|
||||
} else if (param->unit_type ==
|
||||
common::UnitOfMeasure::Type::ANGULAR) {
|
||||
valueConverted =
|
||||
value.convertToUnit(common::UnitOfMeasure::DEGREE);
|
||||
} else {
|
||||
valueConverted = value.getSIValue();
|
||||
}
|
||||
|
||||
if (mapping->epsg_code ==
|
||||
EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP &&
|
||||
strcmp(param->proj_name, "lat_1") == 0) {
|
||||
formatter->addParam(
|
||||
param->proj_name,
|
||||
value.convertToUnit(common::UnitOfMeasure::DEGREE));
|
||||
formatter->addParam(
|
||||
"lat_0",
|
||||
value.convertToUnit(common::UnitOfMeasure::DEGREE));
|
||||
} else if (param->unit_type ==
|
||||
common::UnitOfMeasure::Type::ANGULAR) {
|
||||
formatter->addParam(
|
||||
param->proj_name,
|
||||
value.convertToUnit(common::UnitOfMeasure::DEGREE));
|
||||
formatter->addParam(param->proj_name, valueConverted);
|
||||
formatter->addParam("lat_0", valueConverted);
|
||||
} else {
|
||||
formatter->addParam(param->proj_name, value.getSIValue());
|
||||
formatter->addParam(param->proj_name, valueConverted);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6504,6 +6513,24 @@ static void getTransformationType(const crs::CRSNNPtr &sourceCRSIn,
|
||||
isGeog2D = nSrcAxisCount == 2 && nTargetAxisCount == 2;
|
||||
isGeog3D = !isGeog2D && nSrcAxisCount >= 2 && nTargetAxisCount >= 2;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
static int
|
||||
useOperationMethodEPSGCodeIfPresent(const util::PropertyMap &properties,
|
||||
int nDefaultOperationMethodEPSGCode) {
|
||||
const auto *operationMethodEPSGCode =
|
||||
properties.get("OPERATION_METHOD_EPSG_CODE");
|
||||
if (operationMethodEPSGCode) {
|
||||
const auto boxedValue = dynamic_cast<const util::BoxedValue *>(
|
||||
(*operationMethodEPSGCode).get());
|
||||
if (boxedValue &&
|
||||
boxedValue->type() == util::BoxedValue::Type::INTEGER) {
|
||||
return boxedValue->integerValue();
|
||||
}
|
||||
}
|
||||
return nDefaultOperationMethodEPSGCode;
|
||||
}
|
||||
//! @endcond
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -6532,12 +6559,13 @@ TransformationNNPtr Transformation::createGeocentricTranslations(
|
||||
isGeog3D);
|
||||
return create(
|
||||
properties, sourceCRSIn, targetCRSIn, nullptr,
|
||||
createMethodMapNameEPSGCode(
|
||||
createMethodMapNameEPSGCode(useOperationMethodEPSGCodeIfPresent(
|
||||
properties,
|
||||
isGeocentric
|
||||
? EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOCENTRIC
|
||||
: isGeog2D
|
||||
? EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_2D
|
||||
: EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_3D),
|
||||
: EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_3D)),
|
||||
VectorOfParameters{
|
||||
createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION),
|
||||
createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION),
|
||||
@@ -6590,11 +6618,12 @@ TransformationNNPtr Transformation::createPositionVector(
|
||||
isGeog3D);
|
||||
return createSevenParamsTransform(
|
||||
properties,
|
||||
createMethodMapNameEPSGCode(
|
||||
createMethodMapNameEPSGCode(useOperationMethodEPSGCodeIfPresent(
|
||||
properties,
|
||||
isGeocentric
|
||||
? EPSG_CODE_METHOD_POSITION_VECTOR_GEOCENTRIC
|
||||
: isGeog2D ? EPSG_CODE_METHOD_POSITION_VECTOR_GEOGRAPHIC_2D
|
||||
: EPSG_CODE_METHOD_POSITION_VECTOR_GEOGRAPHIC_3D),
|
||||
: EPSG_CODE_METHOD_POSITION_VECTOR_GEOGRAPHIC_3D)),
|
||||
sourceCRSIn, targetCRSIn, translationXMetre, translationYMetre,
|
||||
translationZMetre, rotationXArcSecond, rotationYArcSecond,
|
||||
rotationZArcSecond, scaleDifferencePPM, accuracies);
|
||||
@@ -6639,11 +6668,12 @@ TransformationNNPtr Transformation::createCoordinateFrameRotation(
|
||||
isGeog3D);
|
||||
return createSevenParamsTransform(
|
||||
properties,
|
||||
createMethodMapNameEPSGCode(
|
||||
createMethodMapNameEPSGCode(useOperationMethodEPSGCodeIfPresent(
|
||||
properties,
|
||||
isGeocentric
|
||||
? EPSG_CODE_METHOD_COORDINATE_FRAME_GEOCENTRIC
|
||||
: isGeog2D ? EPSG_CODE_METHOD_COORDINATE_FRAME_GEOGRAPHIC_2D
|
||||
: EPSG_CODE_METHOD_COORDINATE_FRAME_GEOGRAPHIC_3D),
|
||||
: EPSG_CODE_METHOD_COORDINATE_FRAME_GEOGRAPHIC_3D)),
|
||||
sourceCRSIn, targetCRSIn, translationXMetre, translationYMetre,
|
||||
translationZMetre, rotationXArcSecond, rotationYArcSecond,
|
||||
rotationZArcSecond, scaleDifferencePPM, accuracies);
|
||||
@@ -6782,12 +6812,13 @@ TransformationNNPtr Transformation::createTimeDependentPositionVector(
|
||||
isGeog3D);
|
||||
return createFifteenParamsTransform(
|
||||
properties,
|
||||
createMethodMapNameEPSGCode(
|
||||
createMethodMapNameEPSGCode(useOperationMethodEPSGCodeIfPresent(
|
||||
properties,
|
||||
isGeocentric
|
||||
? EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOCENTRIC
|
||||
: isGeog2D
|
||||
? EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_2D
|
||||
: EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_3D),
|
||||
: EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_3D)),
|
||||
sourceCRSIn, targetCRSIn, translationXMetre, translationYMetre,
|
||||
translationZMetre, rotationXArcSecond, rotationYArcSecond,
|
||||
rotationZArcSecond, scaleDifferencePPM, rateTranslationX,
|
||||
@@ -6859,12 +6890,13 @@ TransformationNNPtr Transformation::createTimeDependentCoordinateFrameRotation(
|
||||
isGeog3D);
|
||||
return createFifteenParamsTransform(
|
||||
properties,
|
||||
createMethodMapNameEPSGCode(
|
||||
createMethodMapNameEPSGCode(useOperationMethodEPSGCodeIfPresent(
|
||||
properties,
|
||||
isGeocentric
|
||||
? EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOCENTRIC
|
||||
: isGeog2D
|
||||
? EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_2D
|
||||
: EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_3D),
|
||||
: EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_3D)),
|
||||
sourceCRSIn, targetCRSIn, translationXMetre, translationYMetre,
|
||||
translationZMetre, rotationXArcSecond, rotationYArcSecond,
|
||||
rotationZArcSecond, scaleDifferencePPM, rateTranslationX,
|
||||
@@ -7446,6 +7478,14 @@ createPropertiesForInverse(const CoordinateOperation *op, bool derivedFrom,
|
||||
|
||||
addModifiedIdentifier(map, op, true, derivedFrom);
|
||||
|
||||
const auto so = dynamic_cast<const SingleOperation *>(op);
|
||||
if (so) {
|
||||
const int soMethodEPSGCode = so->method()->getEPSGCode();
|
||||
if (soMethodEPSGCode > 0) {
|
||||
map.set("OPERATION_METHOD_EPSG_CODE", soMethodEPSGCode);
|
||||
}
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
@@ -10169,6 +10209,8 @@ struct CoordinateOperationFactory::Private {
|
||||
const crs::CRSNNPtr &targetCRS;
|
||||
const CoordinateOperationContextNNPtr &context;
|
||||
bool inCreateOperationsWithDatumPivotAntiRecursion = false;
|
||||
bool inCreateOperationsGeogToVertWithIntermediate = false;
|
||||
bool skipHorizontalTransformation = false;
|
||||
|
||||
Context(const crs::CRSNNPtr &sourceCRSIn,
|
||||
const crs::CRSNNPtr &targetCRSIn,
|
||||
@@ -10193,6 +10235,11 @@ struct CoordinateOperationFactory::Private {
|
||||
const crs::GeodeticCRS *geodSrc, const crs::GeodeticCRS *geodDst,
|
||||
Context &context);
|
||||
|
||||
static std::vector<CoordinateOperationNNPtr>
|
||||
createOperationsGeogToVertWithIntermediate(const crs::CRSNNPtr &sourceCRS,
|
||||
const crs::CRSNNPtr &targetCRS,
|
||||
Context &context);
|
||||
|
||||
static bool
|
||||
hasPerfectAccuracyResult(const std::vector<CoordinateOperationNNPtr> &res,
|
||||
const Context &context);
|
||||
@@ -10251,6 +10298,7 @@ CoordinateOperationPtr CoordinateOperationFactory::createOperation(
|
||||
struct PrecomputedOpCharacteristics {
|
||||
double area_{};
|
||||
double accuracy_{};
|
||||
bool isPROJExportable_ = false;
|
||||
bool hasGrids_ = false;
|
||||
bool gridsAvailable_ = false;
|
||||
bool gridsKnown_ = false;
|
||||
@@ -10259,13 +10307,14 @@ struct PrecomputedOpCharacteristics {
|
||||
bool isNullTransformation_ = false;
|
||||
|
||||
PrecomputedOpCharacteristics() = default;
|
||||
PrecomputedOpCharacteristics(double area, double accuracy, bool hasGrids,
|
||||
PrecomputedOpCharacteristics(double area, double accuracy,
|
||||
bool isPROJExportable, bool hasGrids,
|
||||
bool gridsAvailable, bool gridsKnown,
|
||||
size_t stepCount, bool isApprox,
|
||||
bool isNullTransformation)
|
||||
: area_(area), accuracy_(accuracy), hasGrids_(hasGrids),
|
||||
gridsAvailable_(gridsAvailable), gridsKnown_(gridsKnown),
|
||||
stepCount_(stepCount), isApprox_(isApprox),
|
||||
: area_(area), accuracy_(accuracy), isPROJExportable_(isPROJExportable),
|
||||
hasGrids_(hasGrids), gridsAvailable_(gridsAvailable),
|
||||
gridsKnown_(gridsKnown), stepCount_(stepCount), isApprox_(isApprox),
|
||||
isNullTransformation_(isNullTransformation) {}
|
||||
};
|
||||
|
||||
@@ -10293,6 +10342,15 @@ struct SortFunction {
|
||||
// CAUTION: the order of the comparisons is extremely important
|
||||
// to get the intended result.
|
||||
|
||||
if (iterA->second.isPROJExportable_ &&
|
||||
!iterB->second.isPROJExportable_) {
|
||||
return true;
|
||||
}
|
||||
if (!iterA->second.isPROJExportable_ &&
|
||||
iterB->second.isPROJExportable_) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!iterA->second.isApprox_ && iterB->second.isApprox_) {
|
||||
return true;
|
||||
}
|
||||
@@ -10309,16 +10367,12 @@ struct SortFunction {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (iterA->second.hasGrids_ && iterB->second.hasGrids_) {
|
||||
// Operations where grids are all available go before other
|
||||
if (iterA->second.gridsAvailable_ &&
|
||||
!iterB->second.gridsAvailable_) {
|
||||
return true;
|
||||
}
|
||||
if (iterB->second.gridsAvailable_ &&
|
||||
!iterA->second.gridsAvailable_) {
|
||||
return false;
|
||||
}
|
||||
// Operations where grids are all available go before other
|
||||
if (iterA->second.gridsAvailable_ && !iterB->second.gridsAvailable_) {
|
||||
return true;
|
||||
}
|
||||
if (iterB->second.gridsAvailable_ && !iterA->second.gridsAvailable_) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Operations where grids are all known in our DB go before other
|
||||
@@ -10674,13 +10728,53 @@ struct FilterResults {
|
||||
std::string::npos ||
|
||||
op->nameStr().find(BALLPARK_GEOCENTRIC_TRANSLATION) !=
|
||||
std::string::npos;
|
||||
|
||||
bool isPROJExportable = false;
|
||||
auto formatter = io::PROJStringFormatter::create();
|
||||
try {
|
||||
op->exportToPROJString(formatter.get());
|
||||
// Grids might be missing, but at least this is something
|
||||
// PROJ could potentially process
|
||||
isPROJExportable = true;
|
||||
} catch (const std::exception &) {
|
||||
}
|
||||
|
||||
map[op.get()] = PrecomputedOpCharacteristics(
|
||||
area, getAccuracy(op), hasGrids, gridsAvailable, gridsKnown,
|
||||
stepCount, isApprox, isNullTransformation);
|
||||
area, getAccuracy(op), isPROJExportable, hasGrids,
|
||||
gridsAvailable, gridsKnown, stepCount, isApprox,
|
||||
isNullTransformation);
|
||||
}
|
||||
|
||||
// Sort !
|
||||
std::sort(res.begin(), res.end(), SortFunction(map));
|
||||
SortFunction sortFunc(map);
|
||||
std::sort(res.begin(), res.end(), sortFunc);
|
||||
|
||||
// Debug code to check consistency of the sort function
|
||||
#ifdef DEBUG_SORT
|
||||
constexpr bool debugSort = true;
|
||||
#elif !defined(NDEBUG)
|
||||
const bool debugSort = getenv("PROJ_DEBUG_SORT_FUNCT") != nullptr;
|
||||
#endif
|
||||
#if defined(DEBUG_SORT) || !defined(NDEBUG)
|
||||
if (debugSort) {
|
||||
const bool assertIfIssue =
|
||||
!(getenv("PROJ_DEBUG_SORT_FUNCT_ASSERT") != nullptr);
|
||||
for (size_t i = 0; i < res.size(); ++i) {
|
||||
for (size_t j = i + 1; j < res.size(); ++j) {
|
||||
if (sortFunc(res[j], res[i])) {
|
||||
#ifdef DEBUG_SORT
|
||||
std::cerr << "Sorting issue with entry " << i << "("
|
||||
<< res[i]->nameStr() << ") and " << j << "("
|
||||
<< res[j]->nameStr() << ")" << std::endl;
|
||||
#endif
|
||||
if (assertIfIssue) {
|
||||
assert(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
@@ -10917,18 +11011,21 @@ applyInverse(const std::vector<CoordinateOperationNNPtr> &list) {
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
|
||||
static void buildSourceAndTargetCRSIds(
|
||||
const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS,
|
||||
const CoordinateOperationContextNNPtr &context,
|
||||
std::list<std::pair<std::string, std::string>> &sourceIds,
|
||||
std::list<std::pair<std::string, std::string>> &targetIds) {
|
||||
static void buildCRSIds(const crs::CRSNNPtr &crs,
|
||||
const CoordinateOperationContextNNPtr &context,
|
||||
std::list<std::pair<std::string, std::string>> &ids) {
|
||||
const auto &authFactory = context->getAuthorityFactory();
|
||||
assert(authFactory);
|
||||
const auto &authFactoryName = authFactory->getAuthority();
|
||||
|
||||
const auto findObjectInDB = [&authFactory, &authFactoryName](
|
||||
const crs::CRSNNPtr &crs,
|
||||
std::list<std::pair<std::string, std::string>> &idList) {
|
||||
for (const auto &id : crs->identifiers()) {
|
||||
const auto &authName = *(id->codeSpace());
|
||||
const auto &code = id->code();
|
||||
if (!authName.empty()) {
|
||||
ids.emplace_back(authName, code);
|
||||
}
|
||||
}
|
||||
if (ids.empty()) {
|
||||
try {
|
||||
const auto tmpAuthFactory = io::AuthorityFactory::create(
|
||||
authFactory->databaseContext(),
|
||||
@@ -10954,35 +11051,37 @@ static void buildSourceAndTargetCRSIds(
|
||||
matches.front().get(),
|
||||
util::IComparable::Criterion::EQUIVALENT) &&
|
||||
!matches.front()->identifiers().empty()) {
|
||||
const auto &ids = matches.front()->identifiers();
|
||||
idList.emplace_back(*(ids[0]->codeSpace()), ids[0]->code());
|
||||
const auto &tmpIds = matches.front()->identifiers();
|
||||
ids.emplace_back(*(tmpIds[0]->codeSpace()),
|
||||
tmpIds[0]->code());
|
||||
}
|
||||
}
|
||||
} catch (const std::exception &) {
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
for (const auto &id : sourceCRS->identifiers()) {
|
||||
const auto &authName = *(id->codeSpace());
|
||||
const auto &code = id->code();
|
||||
if (!authName.empty()) {
|
||||
sourceIds.emplace_back(authName, code);
|
||||
}
|
||||
}
|
||||
if (sourceIds.empty()) {
|
||||
findObjectInDB(sourceCRS, sourceIds);
|
||||
}
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
for (const auto &id : targetCRS->identifiers()) {
|
||||
const auto &authName = *(id->codeSpace());
|
||||
const auto &code = id->code();
|
||||
if (!authName.empty()) {
|
||||
targetIds.emplace_back(authName, code);
|
||||
static std::vector<std::string>
|
||||
getCandidateAuthorities(const io::AuthorityFactoryPtr &authFactory,
|
||||
const std::string &srcAuthName,
|
||||
const std::string &targetAuthName) {
|
||||
const auto &authFactoryName = authFactory->getAuthority();
|
||||
std::vector<std::string> authorities;
|
||||
if (authFactoryName == "any") {
|
||||
authorities.emplace_back();
|
||||
}
|
||||
if (authFactoryName.empty()) {
|
||||
authorities = authFactory->databaseContext()->getAllowedAuthorities(
|
||||
srcAuthName, targetAuthName);
|
||||
if (authorities.empty()) {
|
||||
authorities.emplace_back();
|
||||
}
|
||||
} else {
|
||||
authorities.emplace_back(authFactoryName);
|
||||
}
|
||||
if (targetIds.empty()) {
|
||||
findObjectInDB(targetCRS, targetIds);
|
||||
}
|
||||
return authorities;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -10994,12 +11093,11 @@ findOpsInRegistryDirect(const crs::CRSNNPtr &sourceCRS,
|
||||
const CoordinateOperationContextNNPtr &context) {
|
||||
const auto &authFactory = context->getAuthorityFactory();
|
||||
assert(authFactory);
|
||||
const auto &authFactoryName = authFactory->getAuthority();
|
||||
|
||||
std::list<std::pair<std::string, std::string>> sourceIds;
|
||||
std::list<std::pair<std::string, std::string>> targetIds;
|
||||
buildSourceAndTargetCRSIds(sourceCRS, targetCRS, context, sourceIds,
|
||||
targetIds);
|
||||
buildCRSIds(sourceCRS, context, sourceIds);
|
||||
buildCRSIds(targetCRS, context, targetIds);
|
||||
|
||||
for (const auto &idSrc : sourceIds) {
|
||||
const auto &srcAuthName = idSrc.first;
|
||||
@@ -11008,20 +11106,8 @@ findOpsInRegistryDirect(const crs::CRSNNPtr &sourceCRS,
|
||||
const auto &targetAuthName = idTarget.first;
|
||||
const auto &targetCode = idTarget.second;
|
||||
|
||||
std::vector<std::string> authorities;
|
||||
if (authFactoryName == "any") {
|
||||
authorities.emplace_back();
|
||||
}
|
||||
if (authFactoryName.empty()) {
|
||||
authorities =
|
||||
authFactory->databaseContext()->getAllowedAuthorities(
|
||||
srcAuthName, targetAuthName);
|
||||
if (authorities.empty()) {
|
||||
authorities.emplace_back();
|
||||
}
|
||||
} else {
|
||||
authorities.emplace_back(authFactoryName);
|
||||
}
|
||||
const auto authorities(getCandidateAuthorities(
|
||||
authFactory, srcAuthName, targetAuthName));
|
||||
for (const auto &authority : authorities) {
|
||||
const auto tmpAuthFactory = io::AuthorityFactory::create(
|
||||
authFactory->databaseContext(),
|
||||
@@ -11042,6 +11128,81 @@ findOpsInRegistryDirect(const crs::CRSNNPtr &sourceCRS,
|
||||
}
|
||||
return std::vector<CoordinateOperationNNPtr>();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
// Look in the authority registry for operations from sourceCRS
|
||||
static std::vector<CoordinateOperationNNPtr>
|
||||
findOpsInRegistryDirectFrom(const crs::CRSNNPtr &sourceCRS,
|
||||
const CoordinateOperationContextNNPtr &context) {
|
||||
const auto &authFactory = context->getAuthorityFactory();
|
||||
assert(authFactory);
|
||||
|
||||
std::list<std::pair<std::string, std::string>> ids;
|
||||
buildCRSIds(sourceCRS, context, ids);
|
||||
|
||||
for (const auto &id : ids) {
|
||||
const auto &srcAuthName = id.first;
|
||||
const auto &srcCode = id.second;
|
||||
|
||||
const auto authorities(
|
||||
getCandidateAuthorities(authFactory, srcAuthName, srcAuthName));
|
||||
for (const auto &authority : authorities) {
|
||||
const auto tmpAuthFactory = io::AuthorityFactory::create(
|
||||
authFactory->databaseContext(),
|
||||
authority == "any" ? std::string() : authority);
|
||||
auto res = tmpAuthFactory->createFromCoordinateReferenceSystemCodes(
|
||||
srcAuthName, srcCode, std::string(), std::string(),
|
||||
context->getUsePROJAlternativeGridNames(),
|
||||
context->getGridAvailabilityUse() ==
|
||||
CoordinateOperationContext::GridAvailabilityUse::
|
||||
DISCARD_OPERATION_IF_MISSING_GRID,
|
||||
context->getDiscardSuperseded());
|
||||
if (!res.empty()) {
|
||||
return res;
|
||||
}
|
||||
}
|
||||
}
|
||||
return std::vector<CoordinateOperationNNPtr>();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
// Look in the authority registry for operations to targetCRS
|
||||
static std::vector<CoordinateOperationNNPtr>
|
||||
findOpsInRegistryDirectTo(const crs::CRSNNPtr &targetCRS,
|
||||
const CoordinateOperationContextNNPtr &context) {
|
||||
const auto &authFactory = context->getAuthorityFactory();
|
||||
assert(authFactory);
|
||||
|
||||
std::list<std::pair<std::string, std::string>> ids;
|
||||
buildCRSIds(targetCRS, context, ids);
|
||||
|
||||
for (const auto &id : ids) {
|
||||
const auto &targetAuthName = id.first;
|
||||
const auto &targetCode = id.second;
|
||||
|
||||
const auto authorities(getCandidateAuthorities(
|
||||
authFactory, targetAuthName, targetAuthName));
|
||||
for (const auto &authority : authorities) {
|
||||
const auto tmpAuthFactory = io::AuthorityFactory::create(
|
||||
authFactory->databaseContext(),
|
||||
authority == "any" ? std::string() : authority);
|
||||
auto res = tmpAuthFactory->createFromCoordinateReferenceSystemCodes(
|
||||
std::string(), std::string(), targetAuthName, targetCode,
|
||||
context->getUsePROJAlternativeGridNames(),
|
||||
context->getGridAvailabilityUse() ==
|
||||
CoordinateOperationContext::GridAvailabilityUse::
|
||||
DISCARD_OPERATION_IF_MISSING_GRID,
|
||||
context->getDiscardSuperseded());
|
||||
if (!res.empty()) {
|
||||
return res;
|
||||
}
|
||||
}
|
||||
}
|
||||
return std::vector<CoordinateOperationNNPtr>();
|
||||
}
|
||||
|
||||
//! @endcond
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -11056,12 +11217,11 @@ static std::vector<CoordinateOperationNNPtr> findsOpsInRegistryWithIntermediate(
|
||||
|
||||
const auto &authFactory = context->getAuthorityFactory();
|
||||
assert(authFactory);
|
||||
const auto &authFactoryName = authFactory->getAuthority();
|
||||
|
||||
std::list<std::pair<std::string, std::string>> sourceIds;
|
||||
std::list<std::pair<std::string, std::string>> targetIds;
|
||||
buildSourceAndTargetCRSIds(sourceCRS, targetCRS, context, sourceIds,
|
||||
targetIds);
|
||||
buildCRSIds(sourceCRS, context, sourceIds);
|
||||
buildCRSIds(targetCRS, context, targetIds);
|
||||
|
||||
for (const auto &idSrc : sourceIds) {
|
||||
const auto &srcAuthName = idSrc.first;
|
||||
@@ -11070,20 +11230,8 @@ static std::vector<CoordinateOperationNNPtr> findsOpsInRegistryWithIntermediate(
|
||||
const auto &targetAuthName = idTarget.first;
|
||||
const auto &targetCode = idTarget.second;
|
||||
|
||||
std::vector<std::string> authorities;
|
||||
if (authFactoryName == "any") {
|
||||
authorities.emplace_back();
|
||||
}
|
||||
if (authFactoryName.empty()) {
|
||||
authorities =
|
||||
authFactory->databaseContext()->getAllowedAuthorities(
|
||||
srcAuthName, targetAuthName);
|
||||
if (authorities.empty()) {
|
||||
authorities.emplace_back();
|
||||
}
|
||||
} else {
|
||||
authorities.emplace_back(authFactoryName);
|
||||
}
|
||||
const auto authorities(getCandidateAuthorities(
|
||||
authFactory, srcAuthName, targetAuthName));
|
||||
for (const auto &authority : authorities) {
|
||||
const auto tmpAuthFactory = io::AuthorityFactory::create(
|
||||
authFactory->databaseContext(),
|
||||
@@ -11990,6 +12138,51 @@ void CoordinateOperationFactory::Private::createOperationsWithDatumPivot(
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
std::vector<CoordinateOperationNNPtr>
|
||||
CoordinateOperationFactory::Private::createOperationsGeogToVertWithIntermediate(
|
||||
const crs::CRSNNPtr & /*sourceCRS*/, // geographic CRS
|
||||
const crs::CRSNNPtr &targetCRS, // vertical CRS
|
||||
Private::Context &context) {
|
||||
|
||||
std::vector<CoordinateOperationNNPtr> res;
|
||||
|
||||
struct AntiRecursionGuard {
|
||||
Context &context;
|
||||
|
||||
explicit AntiRecursionGuard(Context &contextIn) : context(contextIn) {
|
||||
assert(!context.inCreateOperationsGeogToVertWithIntermediate);
|
||||
context.inCreateOperationsGeogToVertWithIntermediate = true;
|
||||
}
|
||||
|
||||
~AntiRecursionGuard() {
|
||||
context.inCreateOperationsGeogToVertWithIntermediate = false;
|
||||
}
|
||||
};
|
||||
AntiRecursionGuard guard(context);
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
|
||||
// Generally EPSG has operations from GeogCrs to VertCRS
|
||||
auto ops =
|
||||
i == 0 ? findOpsInRegistryDirectTo(targetCRS, context.context)
|
||||
: findOpsInRegistryDirectFrom(targetCRS, context.context);
|
||||
|
||||
for (const auto &op : ops) {
|
||||
const auto tmpCRS = i == 0 ? op->sourceCRS() : op->targetCRS();
|
||||
if (tmpCRS &&
|
||||
dynamic_cast<const crs::GeographicCRS *>(tmpCRS.get())) {
|
||||
res.emplace_back(i == 0 ? op : op->inverse());
|
||||
}
|
||||
}
|
||||
if (!res.empty())
|
||||
break;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
static CoordinateOperationNNPtr
|
||||
createBallparkGeocentricTranslation(const crs::CRSNNPtr &sourceCRS,
|
||||
const crs::CRSNNPtr &targetCRS) {
|
||||
@@ -12048,14 +12241,23 @@ CoordinateOperationFactory::Private::createOperations(
|
||||
std::vector<CoordinateOperationNNPtr> res;
|
||||
const bool allowEmptyIntersection = true;
|
||||
|
||||
const auto &sourceProj4Ext = sourceCRS->getExtensionProj4();
|
||||
const auto &targetProj4Ext = targetCRS->getExtensionProj4();
|
||||
auto boundSrc = dynamic_cast<const crs::BoundCRS *>(sourceCRS.get());
|
||||
auto boundDst = dynamic_cast<const crs::BoundCRS *>(targetCRS.get());
|
||||
|
||||
const auto &sourceProj4Ext = boundSrc
|
||||
? boundSrc->baseCRS()->getExtensionProj4()
|
||||
: sourceCRS->getExtensionProj4();
|
||||
const auto &targetProj4Ext = boundDst
|
||||
? boundDst->baseCRS()->getExtensionProj4()
|
||||
: targetCRS->getExtensionProj4();
|
||||
if (!sourceProj4Ext.empty() || !targetProj4Ext.empty()) {
|
||||
|
||||
auto sourceProjExportable =
|
||||
dynamic_cast<io::IPROJStringExportable *>(sourceCRS.get());
|
||||
dynamic_cast<const io::IPROJStringExportable *>(
|
||||
boundSrc ? boundSrc : sourceCRS.get());
|
||||
auto targetProjExportable =
|
||||
dynamic_cast<io::IPROJStringExportable *>(targetCRS.get());
|
||||
dynamic_cast<const io::IPROJStringExportable *>(
|
||||
boundDst ? boundDst : targetCRS.get());
|
||||
if (!sourceProjExportable) {
|
||||
throw InvalidOperation("Source CRS is not PROJ exportable");
|
||||
}
|
||||
@@ -12097,11 +12299,16 @@ CoordinateOperationFactory::Private::createOperations(
|
||||
|
||||
auto geodSrc = dynamic_cast<const crs::GeodeticCRS *>(sourceCRS.get());
|
||||
auto geodDst = dynamic_cast<const crs::GeodeticCRS *>(targetCRS.get());
|
||||
auto geogSrc = dynamic_cast<const crs::GeographicCRS *>(sourceCRS.get());
|
||||
auto geogDst = dynamic_cast<const crs::GeographicCRS *>(targetCRS.get());
|
||||
auto vertSrc = dynamic_cast<const crs::VerticalCRS *>(sourceCRS.get());
|
||||
auto vertDst = dynamic_cast<const crs::VerticalCRS *>(targetCRS.get());
|
||||
|
||||
// First look-up if the registry provide us with operations.
|
||||
auto derivedSrc = dynamic_cast<const crs::DerivedCRS *>(sourceCRS.get());
|
||||
auto derivedDst = dynamic_cast<const crs::DerivedCRS *>(targetCRS.get());
|
||||
if (context.context->getAuthorityFactory() &&
|
||||
auto authFactory = context.context->getAuthorityFactory();
|
||||
if (authFactory &&
|
||||
(derivedSrc == nullptr ||
|
||||
!derivedSrc->baseCRS()->_isEquivalentTo(
|
||||
targetCRS.get(), util::IComparable::Criterion::EQUIVALENT)) &&
|
||||
@@ -12135,6 +12342,21 @@ CoordinateOperationFactory::Private::createOperations(
|
||||
util::IComparable::Criterion::EQUIVALENT);
|
||||
}
|
||||
|
||||
// There's no direct transformation from NAVD88 height to WGS84,
|
||||
// so try to research all transformations from NAVD88 to another
|
||||
// intermediate GeographicCRS.
|
||||
if (res.empty() &&
|
||||
!context.inCreateOperationsGeogToVertWithIntermediate &&
|
||||
geogSrc && vertDst) {
|
||||
res = createOperationsGeogToVertWithIntermediate(
|
||||
sourceCRS, targetCRS, context);
|
||||
} else if (res.empty() &&
|
||||
!context.inCreateOperationsGeogToVertWithIntermediate &&
|
||||
geogDst && vertSrc) {
|
||||
res = applyInverse(createOperationsGeogToVertWithIntermediate(
|
||||
targetCRS, sourceCRS, context));
|
||||
}
|
||||
|
||||
if (res.empty() && !sameGeodeticDatum &&
|
||||
!context.inCreateOperationsWithDatumPivotAntiRecursion &&
|
||||
geodSrc && geodDst) {
|
||||
@@ -12193,10 +12415,6 @@ CoordinateOperationFactory::Private::createOperations(
|
||||
"celestial body");
|
||||
}
|
||||
|
||||
auto geogSrc =
|
||||
dynamic_cast<const crs::GeographicCRS *>(sourceCRS.get());
|
||||
auto geogDst =
|
||||
dynamic_cast<const crs::GeographicCRS *>(targetCRS.get());
|
||||
if (geogSrc && geogDst) {
|
||||
return createOperationsGeogToGeog(res, sourceCRS, targetCRS,
|
||||
geogSrc, geogDst);
|
||||
@@ -12284,8 +12502,6 @@ CoordinateOperationFactory::Private::createOperations(
|
||||
return applyInverse(createOperations(targetCRS, sourceCRS, context));
|
||||
}
|
||||
|
||||
auto boundSrc = dynamic_cast<const crs::BoundCRS *>(sourceCRS.get());
|
||||
auto geogDst = dynamic_cast<const crs::GeographicCRS *>(targetCRS.get());
|
||||
if (boundSrc && geogDst) {
|
||||
const auto &hubSrc = boundSrc->hubCRS();
|
||||
auto hubSrcGeog =
|
||||
@@ -12441,31 +12657,34 @@ CoordinateOperationFactory::Private::createOperations(
|
||||
|
||||
auto vertCRSOfBaseOfBoundSrc =
|
||||
dynamic_cast<const crs::VerticalCRS *>(boundSrc->baseCRS().get());
|
||||
if (vertCRSOfBaseOfBoundSrc && hubSrcGeog &&
|
||||
hubSrcGeog->coordinateSystem()->axisList().size() == 3 &&
|
||||
geogDst->coordinateSystem()->axisList().size() == 3) {
|
||||
if (vertCRSOfBaseOfBoundSrc && hubSrcGeog) {
|
||||
auto opsFirst = createOperations(sourceCRS, hubSrc, context);
|
||||
auto opsSecond = createOperations(hubSrc, targetCRS, context);
|
||||
if (!opsFirst.empty() && !opsSecond.empty()) {
|
||||
for (const auto &opFirst : opsFirst) {
|
||||
for (const auto &opLast : opsSecond) {
|
||||
// Exclude artificial transformations from the hub
|
||||
// to the target CRS
|
||||
if (!opLast->hasBallparkTransformation()) {
|
||||
try {
|
||||
res.emplace_back(
|
||||
ConcatenatedOperation::
|
||||
createComputeMetadata(
|
||||
{opFirst, opLast},
|
||||
!allowEmptyIntersection));
|
||||
} catch (
|
||||
const InvalidOperationEmptyIntersection &) {
|
||||
if (context.skipHorizontalTransformation) {
|
||||
if (!opsFirst.empty())
|
||||
return opsFirst;
|
||||
} else {
|
||||
auto opsSecond = createOperations(hubSrc, targetCRS, context);
|
||||
if (!opsFirst.empty() && !opsSecond.empty()) {
|
||||
for (const auto &opFirst : opsFirst) {
|
||||
for (const auto &opLast : opsSecond) {
|
||||
// Exclude artificial transformations from the hub
|
||||
// to the target CRS
|
||||
if (!opLast->hasBallparkTransformation()) {
|
||||
try {
|
||||
res.emplace_back(
|
||||
ConcatenatedOperation::
|
||||
createComputeMetadata(
|
||||
{opFirst, opLast},
|
||||
!allowEmptyIntersection));
|
||||
} catch (
|
||||
const InvalidOperationEmptyIntersection &) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!res.empty()) {
|
||||
return res;
|
||||
if (!res.empty()) {
|
||||
return res;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12474,15 +12693,12 @@ CoordinateOperationFactory::Private::createOperations(
|
||||
}
|
||||
|
||||
// reverse of previous case
|
||||
auto boundDst = dynamic_cast<const crs::BoundCRS *>(targetCRS.get());
|
||||
auto geogSrc = dynamic_cast<const crs::GeographicCRS *>(sourceCRS.get());
|
||||
if (geogSrc && boundDst) {
|
||||
return applyInverse(createOperations(targetCRS, sourceCRS, context));
|
||||
}
|
||||
|
||||
// vertCRS (as boundCRS with transformation to target vertCRS) to
|
||||
// vertCRS
|
||||
auto vertDst = dynamic_cast<const crs::VerticalCRS *>(targetCRS.get());
|
||||
if (boundSrc && vertDst) {
|
||||
auto baseSrcVert =
|
||||
dynamic_cast<const crs::VerticalCRS *>(boundSrc->baseCRS().get());
|
||||
@@ -12499,7 +12715,6 @@ CoordinateOperationFactory::Private::createOperations(
|
||||
}
|
||||
|
||||
// reverse of previous case
|
||||
auto vertSrc = dynamic_cast<const crs::VerticalCRS *>(sourceCRS.get());
|
||||
if (boundDst && vertSrc) {
|
||||
return applyInverse(createOperations(targetCRS, sourceCRS, context));
|
||||
}
|
||||
@@ -12543,7 +12758,6 @@ CoordinateOperationFactory::Private::createOperations(
|
||||
if (vertSrc && geogDst) {
|
||||
|
||||
if (vertSrc->identifiers().empty()) {
|
||||
const auto &authFactory = context.context->getAuthorityFactory();
|
||||
const auto &vertSrcName = vertSrc->nameStr();
|
||||
if (authFactory != nullptr && vertSrcName != "unnamed" &&
|
||||
vertSrcName != "unknown") {
|
||||
@@ -12692,8 +12906,79 @@ CoordinateOperationFactory::Private::createOperations(
|
||||
std::vector<CoordinateOperationNNPtr> verticalTransforms;
|
||||
if (componentsSrc.size() >= 2 &&
|
||||
componentsSrc[1]->extractVerticalCRS()) {
|
||||
|
||||
struct SetSkipHorizontalTransform {
|
||||
Context &context;
|
||||
|
||||
explicit SetSkipHorizontalTransform(Context &contextIn)
|
||||
: context(contextIn) {
|
||||
assert(!context.skipHorizontalTransformation);
|
||||
context.skipHorizontalTransformation = true;
|
||||
}
|
||||
|
||||
~SetSkipHorizontalTransform() {
|
||||
context.skipHorizontalTransformation = false;
|
||||
}
|
||||
};
|
||||
SetSkipHorizontalTransform setSkipHorizontalTransform(context);
|
||||
|
||||
verticalTransforms =
|
||||
createOperations(componentsSrc[1], targetCRS, context);
|
||||
bool foundRegisteredTransformWithAllGridsAvailable = false;
|
||||
for (const auto &op : verticalTransforms) {
|
||||
if (!op->identifiers().empty() && authFactory) {
|
||||
bool missingGrid = false;
|
||||
const auto gridsNeeded =
|
||||
op->gridsNeeded(authFactory->databaseContext());
|
||||
for (const auto &gridDesc : gridsNeeded) {
|
||||
if (!gridDesc.available) {
|
||||
missingGrid = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!missingGrid) {
|
||||
foundRegisteredTransformWithAllGridsAvailable =
|
||||
true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!foundRegisteredTransformWithAllGridsAvailable &&
|
||||
srcGeogCRS &&
|
||||
!srcGeogCRS->_isEquivalentTo(
|
||||
geogDst, util::IComparable::Criterion::EQUIVALENT) &&
|
||||
!srcGeogCRS->is2DPartOf3D(NN_NO_CHECK(geogDst))) {
|
||||
auto verticalTransformsTmp = createOperations(
|
||||
componentsSrc[1], NN_NO_CHECK(srcGeogCRS), context);
|
||||
bool foundRegisteredTransform = false;
|
||||
foundRegisteredTransformWithAllGridsAvailable = false;
|
||||
for (const auto &op : verticalTransformsTmp) {
|
||||
if (!op->identifiers().empty() && authFactory) {
|
||||
bool missingGrid = false;
|
||||
const auto gridsNeeded =
|
||||
op->gridsNeeded(authFactory->databaseContext());
|
||||
for (const auto &gridDesc : gridsNeeded) {
|
||||
if (!gridDesc.available) {
|
||||
missingGrid = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
foundRegisteredTransform = true;
|
||||
if (!missingGrid) {
|
||||
foundRegisteredTransformWithAllGridsAvailable =
|
||||
true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (foundRegisteredTransformWithAllGridsAvailable) {
|
||||
verticalTransforms = verticalTransformsTmp;
|
||||
} else if (foundRegisteredTransform) {
|
||||
verticalTransforms.insert(verticalTransforms.end(),
|
||||
verticalTransformsTmp.begin(),
|
||||
verticalTransformsTmp.end());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!horizTransforms.empty() && !verticalTransforms.empty()) {
|
||||
for (const auto &horizTransform : horizTransforms) {
|
||||
|
||||
@@ -237,7 +237,7 @@ CRSNNPtr CRS::alterGeodeticCRS(const GeodeticCRSNNPtr &newGeodCRS) const {
|
||||
auto projCRS = dynamic_cast<const ProjectedCRS *>(this);
|
||||
if (projCRS) {
|
||||
return ProjectedCRS::create(createPropertyMap(this), newGeodCRS,
|
||||
projCRS->derivingConversionRef(),
|
||||
projCRS->derivingConversion(),
|
||||
projCRS->coordinateSystem());
|
||||
}
|
||||
|
||||
@@ -264,7 +264,7 @@ CRSNNPtr CRS::alterCSLinearUnit(const common::UnitOfMeasure &unit) const {
|
||||
if (projCRS) {
|
||||
return ProjectedCRS::create(
|
||||
createPropertyMap(this), projCRS->baseCRS(),
|
||||
projCRS->derivingConversionRef(),
|
||||
projCRS->derivingConversion(),
|
||||
projCRS->coordinateSystem()->alterUnit(unit));
|
||||
}
|
||||
}
|
||||
@@ -675,9 +675,8 @@ CRSNNPtr CRS::normalizeForVisualization() const {
|
||||
axisList[0])
|
||||
: cs::CartesianCS::create(util::PropertyMap(), axisList[1],
|
||||
axisList[0], axisList[2]);
|
||||
return util::nn_static_pointer_cast<CRS>(
|
||||
ProjectedCRS::create(props, projCRS->baseCRS(),
|
||||
projCRS->derivingConversionRef(), cs));
|
||||
return util::nn_static_pointer_cast<CRS>(ProjectedCRS::create(
|
||||
props, projCRS->baseCRS(), projCRS->derivingConversion(), cs));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -697,14 +696,26 @@ CRSNNPtr CRS::normalizeForVisualization() const {
|
||||
* The method returns a list of matching reference CRS, and the percentage
|
||||
* (0-100) of confidence in the match. The list is sorted by decreasing
|
||||
* confidence.
|
||||
*
|
||||
* 100% means that the name of the reference entry
|
||||
* <ul>
|
||||
* <li>100% means that the name of the reference entry
|
||||
* perfectly matches the CRS name, and both are equivalent. In which case a
|
||||
* single result is returned.
|
||||
* 90% means that CRS are equivalent, but the names are not exactly the same.
|
||||
* 70% means that CRS are equivalent), but the names do not match at all.
|
||||
* 25% means that the CRS are not equivalent, but there is some similarity in
|
||||
* the names.
|
||||
* Note: in the case of a GeographicCRS whose axis
|
||||
* order is implicit in the input definition (for example ESRI WKT), then axis
|
||||
* order is ignored for the purpose of identification. That is the CRS built
|
||||
* from
|
||||
* GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],
|
||||
* PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
|
||||
* will be identified to EPSG:4326, but will not pass a
|
||||
* isEquivalentTo(EPSG_4326, util::IComparable::Criterion::EQUIVALENT) test,
|
||||
* but rather isEquivalentTo(EPSG_4326,
|
||||
* util::IComparable::Criterion::EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS)
|
||||
* </li>
|
||||
* <li>90% means that CRS are equivalent, but the names are not exactly the same.</li>
|
||||
* <li>70% means that CRS are equivalent), but the names do not match at all.</li>
|
||||
* <li>25% means that the CRS are not equivalent, but there is some similarity in
|
||||
* the names.</li>
|
||||
* </ul>
|
||||
* Other confidence values may be returned by some specialized implementations.
|
||||
*
|
||||
* This is implemented for GeodeticCRS, ProjectedCRS, VerticalCRS and
|
||||
@@ -756,6 +767,96 @@ CRS::getNonDeprecated(const io::DatabaseContextNNPtr &dbContext) const {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Return a variant of this CRS "promoted" to a 3D one, if not already
|
||||
* the case.
|
||||
*
|
||||
* The new axis will be ellipsoidal height, oriented upwards, and with metre
|
||||
* units.
|
||||
*
|
||||
* @param newName Name of the new CRS. If empty, nameStr() will be used.
|
||||
* @param dbContext Database context to look for potentially already registered
|
||||
* 3D CRS. May be nullptr.
|
||||
* @return a new CRS promoted to 3D, or the current one if already 3D or not
|
||||
* applicable.
|
||||
* @since 7.0
|
||||
*/
|
||||
CRSNNPtr CRS::promoteTo3D(const std::string &newName,
|
||||
const io::DatabaseContextPtr &dbContext) const {
|
||||
|
||||
const auto geogCRS = dynamic_cast<const GeographicCRS *>(this);
|
||||
if (geogCRS) {
|
||||
const auto &axisList = geogCRS->coordinateSystem()->axisList();
|
||||
if (axisList.size() == 2) {
|
||||
const auto &l_identifiers = identifiers();
|
||||
// First check if there is a Geographic 3D CRS in the database
|
||||
// of the same name.
|
||||
// This is the common practice in the EPSG dataset.
|
||||
if (dbContext && l_identifiers.size() == 1) {
|
||||
auto authFactory = io::AuthorityFactory::create(
|
||||
NN_NO_CHECK(dbContext), *(l_identifiers[0]->codeSpace()));
|
||||
auto res = authFactory->createObjectsFromName(
|
||||
nameStr(),
|
||||
{io::AuthorityFactory::ObjectType::GEOGRAPHIC_3D_CRS},
|
||||
false);
|
||||
if (!res.empty()) {
|
||||
const auto &firstRes = res.front();
|
||||
if (geogCRS->is2DPartOf3D(NN_NO_CHECK(
|
||||
dynamic_cast<GeographicCRS *>(firstRes.get())))) {
|
||||
return NN_NO_CHECK(
|
||||
util::nn_dynamic_pointer_cast<CRS>(firstRes));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
auto upAxis = cs::CoordinateSystemAxis::create(
|
||||
util::PropertyMap().set(IdentifiedObject::NAME_KEY,
|
||||
cs::AxisName::Ellipsoidal_height),
|
||||
cs::AxisAbbreviation::h, cs::AxisDirection::UP,
|
||||
common::UnitOfMeasure::METRE);
|
||||
auto cs = cs::EllipsoidalCS::create(
|
||||
util::PropertyMap(), axisList[0], axisList[1], upAxis);
|
||||
return util::nn_static_pointer_cast<CRS>(GeographicCRS::create(
|
||||
util::PropertyMap().set(common::IdentifiedObject::NAME_KEY,
|
||||
!newName.empty() ? newName : nameStr()),
|
||||
geogCRS->datum(), geogCRS->datumEnsemble(), cs));
|
||||
}
|
||||
}
|
||||
|
||||
const auto projCRS = dynamic_cast<const ProjectedCRS *>(this);
|
||||
if (projCRS) {
|
||||
const auto &axisList = projCRS->coordinateSystem()->axisList();
|
||||
if (axisList.size() == 2) {
|
||||
auto base3DCRS =
|
||||
projCRS->baseCRS()->promoteTo3D(std::string(), dbContext);
|
||||
auto upAxis = cs::CoordinateSystemAxis::create(
|
||||
util::PropertyMap().set(IdentifiedObject::NAME_KEY,
|
||||
cs::AxisName::Ellipsoidal_height),
|
||||
cs::AxisAbbreviation::h, cs::AxisDirection::UP,
|
||||
common::UnitOfMeasure::METRE);
|
||||
auto cs = cs::CartesianCS::create(util::PropertyMap(), axisList[0],
|
||||
axisList[1], upAxis);
|
||||
return util::nn_static_pointer_cast<CRS>(ProjectedCRS::create(
|
||||
util::PropertyMap().set(common::IdentifiedObject::NAME_KEY,
|
||||
!newName.empty() ? newName : nameStr()),
|
||||
NN_NO_CHECK(
|
||||
util::nn_dynamic_pointer_cast<GeodeticCRS>(base3DCRS)),
|
||||
projCRS->derivingConversion(), cs));
|
||||
}
|
||||
}
|
||||
|
||||
const auto boundCRS = dynamic_cast<const BoundCRS *>(this);
|
||||
if (boundCRS) {
|
||||
return BoundCRS::create(
|
||||
boundCRS->baseCRS()->promoteTo3D(newName, dbContext),
|
||||
boundCRS->hubCRS(), boundCRS->transformation());
|
||||
}
|
||||
|
||||
return NN_NO_CHECK(
|
||||
std::static_pointer_cast<CRS>(shared_from_this().as_nullable()));
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
|
||||
std::list<std::pair<CRSNNPtr, int>>
|
||||
@@ -1464,17 +1565,30 @@ static bool hasCodeCompatibleOfAuthorityFactory(
|
||||
* authorityFactory is not null.
|
||||
*
|
||||
* The method returns a list of matching reference CRS, and the percentage
|
||||
* (0-100) of confidence in the match.
|
||||
* 100% means that the name of the reference entry
|
||||
* (0-100) of confidence in the match:
|
||||
* <ul>
|
||||
* <li>100% means that the name of the reference entry
|
||||
* perfectly matches the CRS name, and both are equivalent. In which case a
|
||||
* single result is returned.
|
||||
* 90% means that CRS are equivalent, but the names are not exactly the same.
|
||||
* 70% means that CRS are equivalent (equivalent datum and coordinate system),
|
||||
* but the names do not match at all.
|
||||
* 60% means that ellipsoid, prime meridian and coordinate systems are
|
||||
* equivalent, but the CRS and datum names do not match.
|
||||
* 25% means that the CRS are not equivalent, but there is some similarity in
|
||||
* the names.
|
||||
* Note: in the case of a GeographicCRS whose axis
|
||||
* order is implicit in the input definition (for example ESRI WKT), then axis
|
||||
* order is ignored for the purpose of identification. That is the CRS built
|
||||
* from
|
||||
* GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],
|
||||
* PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
|
||||
* will be identified to EPSG:4326, but will not pass a
|
||||
* isEquivalentTo(EPSG_4326, util::IComparable::Criterion::EQUIVALENT) test,
|
||||
* but rather isEquivalentTo(EPSG_4326,
|
||||
* util::IComparable::Criterion::EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS)
|
||||
* </li>
|
||||
* <li>90% means that CRS are equivalent, but the names are not exactly the same.
|
||||
* <li>70% means that CRS are equivalent (equivalent datum and coordinate system),
|
||||
* but the names do not match at all.</li>
|
||||
* <li>60% means that ellipsoid, prime meridian and coordinate systems are
|
||||
* equivalent, but the CRS and datum names do not match.</li>
|
||||
* <li>25% means that the CRS are not equivalent, but there is some similarity in
|
||||
* the names.</li>
|
||||
* </ul>
|
||||
*
|
||||
* @param authorityFactory Authority factory (or null, but degraded
|
||||
* functionality)
|
||||
@@ -1898,14 +2012,18 @@ bool GeographicCRS::is2DPartOf3D(util::nn<const GeographicCRS *> other)
|
||||
const auto &secondAxis = axis[1];
|
||||
const auto &otherFirstAxis = otherAxis[0];
|
||||
const auto &otherSecondAxis = otherAxis[1];
|
||||
if (!(firstAxis->_isEquivalentTo(otherFirstAxis.get()) &&
|
||||
secondAxis->_isEquivalentTo(otherSecondAxis.get()))) {
|
||||
if (!(firstAxis->_isEquivalentTo(
|
||||
otherFirstAxis.get(), util::IComparable::Criterion::EQUIVALENT) &&
|
||||
secondAxis->_isEquivalentTo(
|
||||
otherSecondAxis.get(),
|
||||
util::IComparable::Criterion::EQUIVALENT))) {
|
||||
return false;
|
||||
}
|
||||
const auto &thisDatum = GeodeticCRS::getPrivate()->datum_;
|
||||
const auto &otherDatum = other->GeodeticCRS::getPrivate()->datum_;
|
||||
if (thisDatum && otherDatum) {
|
||||
return thisDatum->_isEquivalentTo(otherDatum.get());
|
||||
return thisDatum->_isEquivalentTo(
|
||||
otherDatum.get(), util::IComparable::Criterion::EQUIVALENT);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -3124,10 +3242,10 @@ bool ProjectedCRS::_isEquivalentTo(
|
||||
ProjectedCRSNNPtr
|
||||
ProjectedCRS::alterParametersLinearUnit(const common::UnitOfMeasure &unit,
|
||||
bool convertToNewUnit) const {
|
||||
return create(createPropertyMap(this), baseCRS(),
|
||||
derivingConversionRef()->alterParametersLinearUnit(
|
||||
unit, convertToNewUnit),
|
||||
coordinateSystem());
|
||||
return create(
|
||||
createPropertyMap(this), baseCRS(),
|
||||
derivingConversion()->alterParametersLinearUnit(unit, convertToNewUnit),
|
||||
coordinateSystem());
|
||||
}
|
||||
//! @endcond
|
||||
|
||||
@@ -3145,13 +3263,16 @@ void ProjectedCRS::addUnitConvertAndAxisSwap(io::PROJStringFormatter *formatter,
|
||||
if (!formatter->getCRSExport()) {
|
||||
formatter->addStep("unitconvert");
|
||||
formatter->addParam("xy_in", "m");
|
||||
formatter->addParam("z_in", "m");
|
||||
if (!formatter->omitZUnitConversion())
|
||||
formatter->addParam("z_in", "m");
|
||||
if (projUnit.empty()) {
|
||||
formatter->addParam("xy_out", toSI);
|
||||
formatter->addParam("z_out", toSI);
|
||||
if (!formatter->omitZUnitConversion())
|
||||
formatter->addParam("z_out", toSI);
|
||||
} else {
|
||||
formatter->addParam("xy_out", projUnit);
|
||||
formatter->addParam("z_out", projUnit);
|
||||
if (!formatter->omitZUnitConversion())
|
||||
formatter->addParam("z_out", projUnit);
|
||||
}
|
||||
} else {
|
||||
if (projUnit.empty()) {
|
||||
|
||||
@@ -1000,9 +1000,11 @@ bool DatabaseContext::lookForGridInfo(const std::string &projFilename,
|
||||
if (d->pjCtxt() == nullptr) {
|
||||
d->setPjCtxt(pj_get_default_ctx());
|
||||
}
|
||||
int errno_before = proj_context_errno(d->pjCtxt());
|
||||
gridAvailable =
|
||||
pj_find_file(d->pjCtxt(), projFilename.c_str(), &fullFilename[0],
|
||||
fullFilename.size() - 1) != 0;
|
||||
proj_context_errno_set(d->pjCtxt(), errno_before);
|
||||
fullFilename.resize(strlen(fullFilename.c_str()));
|
||||
|
||||
auto res =
|
||||
@@ -3312,9 +3314,9 @@ AuthorityFactory::createFromCoordinateReferenceSystemCodes(
|
||||
bool discardSuperseded) const {
|
||||
|
||||
auto cacheKey(d->authority());
|
||||
cacheKey += sourceCRSAuthName;
|
||||
cacheKey += sourceCRSAuthName.empty() ? "{empty}" : sourceCRSAuthName;
|
||||
cacheKey += sourceCRSCode;
|
||||
cacheKey += targetCRSAuthName;
|
||||
cacheKey += targetCRSAuthName.empty() ? "{empty}" : targetCRSAuthName;
|
||||
cacheKey += targetCRSCode;
|
||||
cacheKey += (usePROJAlternativeGridNames ? '1' : '0');
|
||||
cacheKey += (discardIfMissingGrid ? '1' : '0');
|
||||
@@ -3326,27 +3328,30 @@ AuthorityFactory::createFromCoordinateReferenceSystemCodes(
|
||||
return list;
|
||||
}
|
||||
|
||||
// Look-up first for conversion which is the most precise.
|
||||
std::string sql("SELECT conversion_auth_name, "
|
||||
"geodetic_crs_auth_name, geodetic_crs_code FROM "
|
||||
"projected_crs WHERE auth_name = ? AND code = ?");
|
||||
auto params = ListOfParams{targetCRSAuthName, targetCRSCode};
|
||||
auto res = d->run(sql, params);
|
||||
if (!res.empty()) {
|
||||
const auto &row = res.front();
|
||||
bool ok = row[1] == sourceCRSAuthName && row[2] == sourceCRSCode;
|
||||
if (ok && d->hasAuthorityRestriction()) {
|
||||
ok = row[0] == d->authority();
|
||||
}
|
||||
if (ok) {
|
||||
auto targetCRS = d->createFactory(targetCRSAuthName)
|
||||
->createProjectedCRS(targetCRSCode);
|
||||
auto conv = targetCRS->derivingConversion();
|
||||
list.emplace_back(conv);
|
||||
d->context()->d->cache(cacheKey, list);
|
||||
return list;
|
||||
if (!targetCRSAuthName.empty()) {
|
||||
// Look-up first for conversion which is the most precise.
|
||||
std::string sql("SELECT conversion_auth_name, "
|
||||
"geodetic_crs_auth_name, geodetic_crs_code FROM "
|
||||
"projected_crs WHERE auth_name = ? AND code = ?");
|
||||
auto params = ListOfParams{targetCRSAuthName, targetCRSCode};
|
||||
auto res = d->run(sql, params);
|
||||
if (!res.empty()) {
|
||||
const auto &row = res.front();
|
||||
bool ok = row[1] == sourceCRSAuthName && row[2] == sourceCRSCode;
|
||||
if (ok && d->hasAuthorityRestriction()) {
|
||||
ok = row[0] == d->authority();
|
||||
}
|
||||
if (ok) {
|
||||
auto targetCRS = d->createFactory(targetCRSAuthName)
|
||||
->createProjectedCRS(targetCRSCode);
|
||||
auto conv = targetCRS->derivingConversion();
|
||||
list.emplace_back(conv);
|
||||
d->context()->d->cache(cacheKey, list);
|
||||
return list;
|
||||
}
|
||||
}
|
||||
}
|
||||
std::string sql;
|
||||
if (discardSuperseded) {
|
||||
sql = "SELECT cov.auth_name, cov.code, cov.table_name, "
|
||||
"ss.replacement_auth_name, ss.replacement_code FROM "
|
||||
@@ -3358,20 +3363,26 @@ AuthorityFactory::createFromCoordinateReferenceSystemCodes(
|
||||
"ss.superseded_auth_name = cov.auth_name AND "
|
||||
"ss.superseded_code = cov.code AND "
|
||||
"ss.superseded_table_name = ss.replacement_table_name "
|
||||
"WHERE source_crs_auth_name = ? AND source_crs_code = ? AND "
|
||||
"target_crs_auth_name = ? AND target_crs_code = ? AND "
|
||||
"cov.deprecated = 0";
|
||||
"WHERE ";
|
||||
} else {
|
||||
sql = "SELECT cov.auth_name, cov.code, cov.table_name FROM "
|
||||
"coordinate_operation_view cov JOIN area "
|
||||
"ON cov.area_of_use_auth_name = area.auth_name AND "
|
||||
"cov.area_of_use_code = area.code "
|
||||
"WHERE source_crs_auth_name = ? AND source_crs_code = ? AND "
|
||||
"target_crs_auth_name = ? AND target_crs_code = ? AND "
|
||||
"cov.deprecated = 0";
|
||||
"WHERE ";
|
||||
}
|
||||
params = {sourceCRSAuthName, sourceCRSCode, targetCRSAuthName,
|
||||
targetCRSCode};
|
||||
ListOfParams params;
|
||||
if (!sourceCRSAuthName.empty()) {
|
||||
sql += "source_crs_auth_name = ? AND source_crs_code = ? AND ";
|
||||
params.emplace_back(sourceCRSAuthName);
|
||||
params.emplace_back(sourceCRSCode);
|
||||
}
|
||||
if (!targetCRSAuthName.empty()) {
|
||||
sql += "target_crs_auth_name = ? AND target_crs_code = ? AND ";
|
||||
params.emplace_back(targetCRSAuthName);
|
||||
params.emplace_back(targetCRSCode);
|
||||
}
|
||||
sql += "cov.deprecated = 0";
|
||||
if (d->hasAuthorityRestriction()) {
|
||||
sql += " AND cov.auth_name = ?";
|
||||
params.emplace_back(d->authority());
|
||||
@@ -3379,7 +3390,7 @@ AuthorityFactory::createFromCoordinateReferenceSystemCodes(
|
||||
sql += " ORDER BY pseudo_area_from_swne(south_lat, west_lon, north_lat, "
|
||||
"east_lon) DESC, "
|
||||
"(CASE WHEN accuracy is NULL THEN 1 ELSE 0 END), accuracy";
|
||||
res = d->run(sql, params);
|
||||
auto res = d->run(sql, params);
|
||||
std::set<std::pair<std::string, std::string>> setTransf;
|
||||
if (discardSuperseded) {
|
||||
for (const auto &row : res) {
|
||||
|
||||
@@ -3185,7 +3185,16 @@ ConversionNNPtr WKTParser::Private::buildProjectionFromESRI(
|
||||
}
|
||||
}
|
||||
|
||||
const auto *wkt2_mapping = getMapping(esriMapping->wkt2_name);
|
||||
const char *projectionMethodWkt2Name = esriMapping->wkt2_name;
|
||||
if (ci_equal(esriProjectionName, "Krovak")) {
|
||||
const std::string projCRSName =
|
||||
stripQuotes(projCRSNode->GP()->children()[0]);
|
||||
if (projCRSName.find("_East_North") != std::string::npos) {
|
||||
projectionMethodWkt2Name = EPSG_NAME_METHOD_KROVAK_NORTH_ORIENTED;
|
||||
}
|
||||
}
|
||||
|
||||
const auto *wkt2_mapping = getMapping(projectionMethodWkt2Name);
|
||||
if (ci_equal(esriProjectionName, "Stereographic")) {
|
||||
try {
|
||||
if (std::fabs(io::asDouble(
|
||||
@@ -3467,6 +3476,14 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard(
|
||||
}
|
||||
propertiesMethod.set(IdentifiedObject::NAME_KEY, projectionName);
|
||||
|
||||
std::vector<bool> foundParameters;
|
||||
if (mapping) {
|
||||
size_t countParams = 0;
|
||||
while (mapping->params[countParams] != nullptr) {
|
||||
++countParams;
|
||||
}
|
||||
foundParameters.resize(countParams);
|
||||
}
|
||||
for (const auto &childNode : projCRSNode->GP()->children()) {
|
||||
if (ci_equal(childNode->GP()->value(), WKTConstants::PARAMETER)) {
|
||||
const auto &childNodeChildren = childNode->GP()->children();
|
||||
@@ -3487,11 +3504,18 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard(
|
||||
continue;
|
||||
}
|
||||
}
|
||||
const auto *paramMapping =
|
||||
auto *paramMapping =
|
||||
mapping ? getMappingFromWKT1(mapping, parameterName) : nullptr;
|
||||
if (mapping &&
|
||||
mapping->epsg_code == EPSG_CODE_METHOD_MERCATOR_VARIANT_B &&
|
||||
ci_equal(parameterName, "latitude_of_origin")) {
|
||||
for (size_t idx = 0; mapping->params[idx] != nullptr; ++idx) {
|
||||
if (mapping->params[idx]->epsg_code ==
|
||||
EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN) {
|
||||
foundParameters[idx] = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
parameterName = EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN;
|
||||
propertiesParameter.set(
|
||||
Identifier::CODE_KEY,
|
||||
@@ -3499,6 +3523,12 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard(
|
||||
propertiesParameter.set(Identifier::CODESPACE_KEY,
|
||||
Identifier::EPSG);
|
||||
} else if (paramMapping) {
|
||||
for (size_t idx = 0; mapping->params[idx] != nullptr; ++idx) {
|
||||
if (mapping->params[idx] == paramMapping) {
|
||||
foundParameters[idx] = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
parameterName = paramMapping->wkt2_name;
|
||||
if (paramMapping->epsg_code != 0) {
|
||||
propertiesParameter.set(Identifier::CODE_KEY,
|
||||
@@ -3522,6 +3552,38 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard(
|
||||
}
|
||||
}
|
||||
|
||||
// Add back important parameters that should normally be present, but
|
||||
// are sometimes missing. Currently we only deal with Scale factor at
|
||||
// natural origin. This is to avoid a default value of 0 to slip in later.
|
||||
// But such WKT should be considered invalid.
|
||||
if (mapping) {
|
||||
for (size_t idx = 0; mapping->params[idx] != nullptr; ++idx) {
|
||||
if (!foundParameters[idx] &&
|
||||
mapping->params[idx]->epsg_code ==
|
||||
EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN) {
|
||||
|
||||
emitRecoverableWarning(
|
||||
"The WKT string lacks a value "
|
||||
"for " EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN
|
||||
". Default it to 1.");
|
||||
|
||||
PropertyMap propertiesParameter;
|
||||
propertiesParameter.set(
|
||||
Identifier::CODE_KEY,
|
||||
EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN);
|
||||
propertiesParameter.set(Identifier::CODESPACE_KEY,
|
||||
Identifier::EPSG);
|
||||
propertiesParameter.set(
|
||||
IdentifiedObject::NAME_KEY,
|
||||
EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN);
|
||||
parameters.push_back(
|
||||
OperationParameter::create(propertiesParameter));
|
||||
values.push_back(ParameterValue::create(
|
||||
Measure(1.0, UnitOfMeasure::SCALE_UNITY)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Conversion::create(
|
||||
PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"),
|
||||
propertiesMethod, parameters, values)
|
||||
@@ -4444,12 +4506,12 @@ class JSONParser {
|
||||
}
|
||||
|
||||
template <class TargetCRS, class DatumBuilderType,
|
||||
class CS = CoordinateSystem>
|
||||
class CSClass = CoordinateSystem>
|
||||
util::nn<std::shared_ptr<TargetCRS>> buildCRS(const json &j,
|
||||
DatumBuilderType f) {
|
||||
auto datum = (this->*f)(getObject(j, "datum"));
|
||||
auto cs = buildCS(getObject(j, "coordinate_system"));
|
||||
auto csCast = util::nn_dynamic_pointer_cast<CS>(cs);
|
||||
auto csCast = util::nn_dynamic_pointer_cast<CSClass>(cs);
|
||||
if (!csCast) {
|
||||
throw ParsingException("coordinate_system not of expected type");
|
||||
}
|
||||
@@ -4457,7 +4519,7 @@ class JSONParser {
|
||||
NN_NO_CHECK(csCast));
|
||||
}
|
||||
|
||||
template <class TargetCRS, class BaseCRS, class CS = CoordinateSystem>
|
||||
template <class TargetCRS, class BaseCRS, class CSClass = CoordinateSystem>
|
||||
util::nn<std::shared_ptr<TargetCRS>> buildDerivedCRS(const json &j) {
|
||||
auto baseCRSObj = create(getObject(j, "base_crs"));
|
||||
auto baseCRS = util::nn_dynamic_pointer_cast<BaseCRS>(baseCRSObj);
|
||||
@@ -4465,7 +4527,7 @@ class JSONParser {
|
||||
throw ParsingException("base_crs not of expected type");
|
||||
}
|
||||
auto cs = buildCS(getObject(j, "coordinate_system"));
|
||||
auto csCast = util::nn_dynamic_pointer_cast<CS>(cs);
|
||||
auto csCast = util::nn_dynamic_pointer_cast<CSClass>(cs);
|
||||
if (!csCast) {
|
||||
throw ParsingException("coordinate_system not of expected type");
|
||||
}
|
||||
@@ -7482,7 +7544,7 @@ static const struct DatumDesc {
|
||||
} datumDescs[] = {
|
||||
{"GGRS87", "GGRS87", 4121, "Greek Geodetic Reference System 1987", 6121,
|
||||
"GRS 1980", 7019, 6378137, 298.257222101},
|
||||
{"postdam", "DHDN", 4314, "Deutsches Hauptdreiecksnetz", 6314,
|
||||
{"potsdam", "DHDN", 4314, "Deutsches Hauptdreiecksnetz", 6314,
|
||||
"Bessel 1841", 7004, 6377397.155, 299.1528128},
|
||||
{"carthage", "Carthage", 4223, "Carthage", 6223, "Clarke 1880 (IGN)", 7011,
|
||||
6378249.2, 293.4660213},
|
||||
@@ -8235,6 +8297,21 @@ static double getAngularValue(const std::string ¶mValue,
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
static bool is_in_stringlist(const std::string &str, const char *stringlist) {
|
||||
const char *haystack = stringlist;
|
||||
while (true) {
|
||||
const char *res = strstr(haystack, str.c_str());
|
||||
if (res == nullptr)
|
||||
return false;
|
||||
if ((res == stringlist || res[-1] == ',') &&
|
||||
(res[str.size()] == ',' || res[str.size()] == '\0'))
|
||||
return true;
|
||||
haystack += str.size();
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
int iStep, GeographicCRSNNPtr geogCRS, int iUnitConvert, int iAxisSwap) {
|
||||
auto &step = steps_[iStep];
|
||||
@@ -8313,10 +8390,13 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
} else if (step.name == "somerc") {
|
||||
mapping =
|
||||
getMapping(EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B);
|
||||
step.paramValues.emplace_back(Step::KeyValue("alpha", "90"));
|
||||
step.paramValues.emplace_back(Step::KeyValue("gamma", "90"));
|
||||
step.paramValues.emplace_back(
|
||||
Step::KeyValue("lonc", getParamValue(step, "lon_0")));
|
||||
if (!hasParamValue(step, "alpha") && !hasParamValue(step, "gamma") &&
|
||||
!hasParamValue(step, "lonc")) {
|
||||
step.paramValues.emplace_back(Step::KeyValue("alpha", "90"));
|
||||
step.paramValues.emplace_back(Step::KeyValue("gamma", "90"));
|
||||
step.paramValues.emplace_back(
|
||||
Step::KeyValue("lonc", getParamValue(step, "lon_0")));
|
||||
}
|
||||
} else if (step.name == "krovak" &&
|
||||
((getParamValue(step, "axis") == "swu" && iAxisSwap < 0) ||
|
||||
(iAxisSwap > 0 &&
|
||||
@@ -8536,28 +8616,34 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
std::vector<ParameterValueNNPtr> values;
|
||||
std::string methodName = "PROJ " + step.name;
|
||||
for (const auto ¶m : step.paramValues) {
|
||||
if (param.key == "wktext" || param.key == "no_defs" ||
|
||||
param.key == "datum" || param.key == "ellps" ||
|
||||
param.key == "a" || param.key == "b" || param.key == "R" ||
|
||||
param.key == "towgs84" || param.key == "nadgrids" ||
|
||||
param.key == "geoidgrids" || param.key == "units" ||
|
||||
param.key == "to_meter" || param.key == "vunits" ||
|
||||
param.key == "vto_meter" || param.key == "type") {
|
||||
if (is_in_stringlist(param.key,
|
||||
"wktext,no_defs,datum,ellps,a,b,R,towgs84,"
|
||||
"nadgrids,geoidgrids,"
|
||||
"units,to_meter,vunits,vto_meter,type")) {
|
||||
continue;
|
||||
}
|
||||
if (param.value.empty()) {
|
||||
methodName += " " + param.key;
|
||||
} else if (param.key == "o_proj") {
|
||||
} else if (isalpha(param.value[0])) {
|
||||
methodName += " " + param.key + "=" + param.value;
|
||||
} else {
|
||||
parameters.push_back(OperationParameter::create(
|
||||
PropertyMap().set(IdentifiedObject::NAME_KEY, param.key)));
|
||||
bool hasError = false;
|
||||
if (param.key == "x_0" || param.key == "y_0") {
|
||||
if (is_in_stringlist(param.key, "x_0,y_0,h,h_0")) {
|
||||
double value = getNumericValue(param.value, &hasError);
|
||||
values.push_back(ParameterValue::create(
|
||||
Measure(value, UnitOfMeasure::METRE)));
|
||||
} else if (param.key == "k" || param.key == "k_0") {
|
||||
} else if (is_in_stringlist(
|
||||
param.key,
|
||||
"k,k_0,"
|
||||
"north_square,south_square," // rhealpix
|
||||
"n,m," // sinu
|
||||
"q," // urm5
|
||||
"path,lsat," // lsat
|
||||
"W,M," // hammer
|
||||
"aperture,resolution," // isea
|
||||
)) {
|
||||
double value = getNumericValue(param.value, &hasError);
|
||||
values.push_back(ParameterValue::create(
|
||||
Measure(value, UnitOfMeasure::SCALE_UNITY)));
|
||||
@@ -8577,7 +8663,10 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
parameters, values)
|
||||
.as_nullable();
|
||||
|
||||
if (methodName == "PROJ ob_tran o_proj=longlat") {
|
||||
if (is_in_stringlist(methodName, "PROJ ob_tran o_proj=longlat,"
|
||||
"PROJ ob_tran o_proj=lonlat,"
|
||||
"PROJ ob_tran o_proj=latlon,"
|
||||
"PROJ ob_tran o_proj=latlong")) {
|
||||
return DerivedGeographicCRS::create(
|
||||
PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"),
|
||||
geogCRS, NN_NO_CHECK(conv),
|
||||
@@ -8638,6 +8727,21 @@ static const metadata::ExtentPtr &getExtent(const crs::CRS *crs) {
|
||||
|
||||
//! @endcond
|
||||
|
||||
namespace {
|
||||
struct PJContextHolder {
|
||||
PJ_CONTEXT *ctx_;
|
||||
bool bFree_;
|
||||
|
||||
PJContextHolder(PJ_CONTEXT *ctx, bool bFree) : ctx_(ctx), bFree_(bFree) {}
|
||||
~PJContextHolder() {
|
||||
if (bFree_)
|
||||
proj_context_destroy(ctx_);
|
||||
}
|
||||
PJContextHolder(const PJContextHolder &) = delete;
|
||||
PJContextHolder &operator=(const PJContextHolder &) = delete;
|
||||
};
|
||||
} // namespace
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a sub-class of BaseObject from a PROJ string.
|
||||
@@ -8652,8 +8756,10 @@ PROJStringParser::createFromPROJString(const std::string &projString) {
|
||||
|
||||
// In some abnormal situations involving init=epsg:XXXX syntax, we could
|
||||
// have infinite loop
|
||||
if (d->ctx_ && d->ctx_->curStringInCreateFromPROJString == projString) {
|
||||
throw ParsingException("invalid PROJ string");
|
||||
if (d->ctx_ &&
|
||||
d->ctx_->projStringParserCreateFromPROJStringRecursionCounter == 2) {
|
||||
throw ParsingException(
|
||||
"Infinite recursion in PROJStringParser::createFromPROJString()");
|
||||
}
|
||||
|
||||
d->steps_.clear();
|
||||
@@ -8701,34 +8807,52 @@ PROJStringParser::createFromPROJString(const std::string &projString) {
|
||||
const std::string &stepName = d->steps_[0].name;
|
||||
if (ci_starts_with(stepName, "epsg:") ||
|
||||
ci_starts_with(stepName, "IGNF:")) {
|
||||
|
||||
/* We create a new context so as to avoid messing up with the */
|
||||
/* errorno of the main context, when trying to find the likely */
|
||||
/* missing epsg file */
|
||||
auto ctx = proj_context_create();
|
||||
if (!ctx) {
|
||||
throw ParsingException("out of memory");
|
||||
}
|
||||
PJContextHolder contextHolder(ctx, true);
|
||||
if (d->ctx_) {
|
||||
ctx->set_search_paths(d->ctx_->search_paths);
|
||||
ctx->file_finder = d->ctx_->file_finder;
|
||||
ctx->file_finder_legacy = d->ctx_->file_finder_legacy;
|
||||
ctx->file_finder_user_data = d->ctx_->file_finder_user_data;
|
||||
}
|
||||
|
||||
bool usePROJ4InitRules = d->usePROJ4InitRules_;
|
||||
if (!usePROJ4InitRules) {
|
||||
PJ_CONTEXT *ctx = proj_context_create();
|
||||
if (ctx) {
|
||||
usePROJ4InitRules = proj_context_get_use_proj4_init_rules(
|
||||
ctx, FALSE) == TRUE;
|
||||
proj_context_destroy(ctx);
|
||||
}
|
||||
usePROJ4InitRules =
|
||||
proj_context_get_use_proj4_init_rules(ctx, FALSE) == TRUE;
|
||||
}
|
||||
if (!usePROJ4InitRules) {
|
||||
throw ParsingException("init=epsg:/init=IGNF: syntax not "
|
||||
"supported in non-PROJ4 emulation mode");
|
||||
}
|
||||
|
||||
PJ_CONTEXT *ctx = proj_context_create();
|
||||
char unused[256];
|
||||
std::string initname(stepName);
|
||||
initname.resize(initname.find(':'));
|
||||
int file_found =
|
||||
pj_find_file(ctx, initname.c_str(), unused, sizeof(unused));
|
||||
proj_context_destroy(ctx);
|
||||
|
||||
if (!file_found) {
|
||||
auto obj = createFromUserInput(stepName, d->dbContext_, true);
|
||||
auto crs = dynamic_cast<CRS *>(obj.get());
|
||||
if (crs &&
|
||||
(d->steps_[0].paramValues.empty() ||
|
||||
(d->steps_[0].paramValues.size() == 1 &&
|
||||
d->getParamValue(d->steps_[0], "type") == "crs"))) {
|
||||
|
||||
bool hasSignificantParamValues = false;
|
||||
for (const auto &kv : d->steps_[0].paramValues) {
|
||||
if (!((kv.key == "type" && kv.value == "crs") ||
|
||||
kv.key == "no_defs")) {
|
||||
hasSignificantParamValues = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (crs && !hasSignificantParamValues) {
|
||||
PropertyMap properties;
|
||||
properties.set(IdentifiedObject::NAME_KEY,
|
||||
d->title_.empty() ? crs->nameStr()
|
||||
@@ -8790,19 +8914,19 @@ PROJStringParser::createFromPROJString(const std::string &projString) {
|
||||
}
|
||||
}
|
||||
|
||||
auto ctx = d->ctx_ ? d->ctx_ : proj_context_create();
|
||||
if (!ctx) {
|
||||
throw ParsingException("out of memory");
|
||||
}
|
||||
PJContextHolder contextHolder(ctx, ctx != d->ctx_);
|
||||
|
||||
paralist *init = pj_mkparam(("init=" + d->steps_[0].name).c_str());
|
||||
if (!init) {
|
||||
throw ParsingException("out of memory");
|
||||
}
|
||||
PJ_CONTEXT *ctx = d->ctx_ ? d->ctx_ : proj_context_create();
|
||||
if (!ctx) {
|
||||
pj_dealloc(init);
|
||||
throw ParsingException("out of memory");
|
||||
}
|
||||
ctx->projStringParserCreateFromPROJStringRecursionCounter++;
|
||||
paralist *list = pj_expand_init(ctx, init);
|
||||
if (ctx != d->ctx_) {
|
||||
proj_context_destroy(ctx);
|
||||
}
|
||||
ctx->projStringParserCreateFromPROJStringRecursionCounter--;
|
||||
if (!list) {
|
||||
pj_dealloc(init);
|
||||
throw ParsingException("cannot expand " + projString);
|
||||
@@ -8933,18 +9057,14 @@ PROJStringParser::createFromPROJString(const std::string &projString) {
|
||||
proj_log_func(pj_context, &logger, Logger::log);
|
||||
proj_context_use_proj4_init_rules(pj_context, d->usePROJ4InitRules_);
|
||||
}
|
||||
if (d->ctx_) {
|
||||
d->ctx_->curStringInCreateFromPROJString = projString;
|
||||
}
|
||||
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"
|
||||
: projString)
|
||||
.c_str());
|
||||
if (d->ctx_) {
|
||||
d->ctx_->curStringInCreateFromPROJString.clear();
|
||||
}
|
||||
pj_context->projStringParserCreateFromPROJStringRecursionCounter--;
|
||||
valid = pj != nullptr;
|
||||
proj_log_level(pj_context, log_level);
|
||||
|
||||
|
||||
@@ -105,6 +105,7 @@ Thomas Knudsen, thokn@sdfe.dk, 2016-05-20
|
||||
#include "geodesic.h"
|
||||
#include "proj.h"
|
||||
#include "proj_internal.h"
|
||||
#include "proj_experimental.h"
|
||||
|
||||
PROJ_HEAD(pipeline, "Transformation pipeline manager");
|
||||
PROJ_HEAD(pop, "Retrieve coordinate value from pipeline stack");
|
||||
@@ -136,7 +137,11 @@ static PJ_LPZ pipeline_reverse_3d (PJ_XYZ xyz, PJ *P);
|
||||
static PJ_XY pipeline_forward (PJ_LP lp, PJ *P);
|
||||
static PJ_LP pipeline_reverse (PJ_XY xy, PJ *P);
|
||||
|
||||
|
||||
void pj_pipeline_assign_context_to_steps( PJ* P, PJ_CONTEXT* ctx )
|
||||
{
|
||||
for (int i = 1; i <= static_cast<struct pj_opaque*>(P->opaque)->steps; i++)
|
||||
proj_assign_context(static_cast<struct pj_opaque*>(P->opaque)->pipeline[i], ctx);
|
||||
}
|
||||
|
||||
|
||||
static PJ_COORD pipeline_forward_4d (PJ_COORD point, PJ *P) {
|
||||
|
||||
@@ -154,7 +154,7 @@ extern "C" {
|
||||
/* The version numbers should be updated with every release! **/
|
||||
#define PROJ_VERSION_MAJOR 6
|
||||
#define PROJ_VERSION_MINOR 2
|
||||
#define PROJ_VERSION_PATCH 0
|
||||
#define PROJ_VERSION_PATCH 1
|
||||
|
||||
extern char const PROJ_DLL pj_release[]; /* global release id string */
|
||||
|
||||
@@ -358,8 +358,8 @@ PJ PROJ_DLL *proj_create (PJ_CONTEXT *ctx, const char *definition);
|
||||
PJ PROJ_DLL *proj_create_argv (PJ_CONTEXT *ctx, int argc, char **argv);
|
||||
PJ PROJ_DLL *proj_create_crs_to_crs(PJ_CONTEXT *ctx, const char *source_crs, const char *target_crs, PJ_AREA *area);
|
||||
PJ PROJ_DLL *proj_create_crs_to_crs_from_pj(PJ_CONTEXT *ctx,
|
||||
PJ *source_crs,
|
||||
PJ *target_crs,
|
||||
const PJ *source_crs,
|
||||
const PJ *target_crs,
|
||||
PJ_AREA *area,
|
||||
const char* const *options);
|
||||
PJ PROJ_DLL *proj_normalize_for_visualization(PJ_CONTEXT *ctx, const PJ* obj);
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef PJ_VERSION
|
||||
#define PJ_VERSION 620
|
||||
#define PJ_VERSION 621
|
||||
#endif
|
||||
|
||||
#ifdef PROJ_RENAME_SYMBOLS
|
||||
|
||||
@@ -116,7 +116,7 @@ PJ PROJ_DLL *proj_create_cartesian_2D_cs(PJ_CONTEXT *ctx,
|
||||
double unit_conv_factor);
|
||||
|
||||
|
||||
/** Type of Cartesian 2D coordinate system. */
|
||||
/** Type of Ellipsoidal 2D coordinate system. */
|
||||
typedef enum
|
||||
{
|
||||
/* Longitude-Latitude */
|
||||
@@ -210,6 +210,15 @@ PJ PROJ_DLL *proj_crs_alter_parameters_linear_unit(
|
||||
const char *unit_code,
|
||||
int convert_to_new_unit);
|
||||
|
||||
PJ PROJ_DLL *proj_crs_promote_to_3D(PJ_CONTEXT *ctx,
|
||||
const char* crs_3D_name,
|
||||
const PJ* crs_2D);
|
||||
|
||||
PJ PROJ_DLL *proj_crs_create_projected_3D_crs_from_2D(PJ_CONTEXT *ctx,
|
||||
const char* crs_name,
|
||||
const PJ* projected_2D_crs,
|
||||
const PJ* geog_3D_crs);
|
||||
|
||||
PJ PROJ_DLL *proj_create_engineering_crs(PJ_CONTEXT *ctx,
|
||||
const char *crsName);
|
||||
|
||||
|
||||
@@ -706,7 +706,7 @@ struct projCtx_t {
|
||||
const char* (*file_finder) (PJ_CONTEXT *, const char*, void* user_data) = nullptr;
|
||||
void* file_finder_user_data = nullptr;
|
||||
|
||||
std::string curStringInCreateFromPROJString{};
|
||||
int projStringParserCreateFromPROJStringRecursionCounter = 0; // to avoid potential infinite recursion in PROJStringParser::createFromPROJString()
|
||||
|
||||
projCtx_t() = default;
|
||||
projCtx_t(const projCtx_t&);
|
||||
@@ -926,6 +926,8 @@ std::string pj_double_quote_string_param_if_needed(const std::string& str);
|
||||
PJ *pj_create_internal (PJ_CONTEXT *ctx, const char *definition);
|
||||
PJ *pj_create_argv_internal (PJ_CONTEXT *ctx, int argc, char **argv);
|
||||
|
||||
void pj_pipeline_assign_context_to_steps( PJ* P, PJ_CONTEXT* ctx );
|
||||
|
||||
/* classic public API */
|
||||
#include "proj_api.h"
|
||||
|
||||
|
||||
@@ -127,6 +127,10 @@ static PJ_LP aea_e_inverse (PJ_XY xy, PJ *P) { /* Ellipsoid/spheroid, inverse
|
||||
if (Q->ellips) {
|
||||
lp.phi = (Q->c - lp.phi * lp.phi) / Q->n;
|
||||
if (fabs(Q->ec - fabs(lp.phi)) > TOL7) {
|
||||
if (fabs(lp.phi) > 2 ) {
|
||||
proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION);
|
||||
return lp;
|
||||
}
|
||||
if ((lp.phi = phi1_(lp.phi, P->e, P->one_es)) == HUGE_VAL) {
|
||||
proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION);
|
||||
return lp;
|
||||
|
||||
@@ -151,7 +151,7 @@ oblcon:
|
||||
return xy;
|
||||
}
|
||||
else
|
||||
xy.x = xy.y = 0.;
|
||||
return aeqd_e_forward(lp, P);
|
||||
else {
|
||||
xy.y = acos(xy.y);
|
||||
xy.y /= sin(xy.y);
|
||||
|
||||
@@ -67,7 +67,7 @@ static PJ_XY bertin1953_s_forward (PJ_LP lp, PJ *P) {
|
||||
xy.x *= 1. + d;
|
||||
}
|
||||
if (xy.y > 0.) {
|
||||
xy.x *= 1. + d / 1.5 * xy.x * xy.x;
|
||||
xy.y *= 1. + d / 1.5 * xy.x * xy.x;
|
||||
}
|
||||
|
||||
return xy;
|
||||
|
||||
@@ -117,6 +117,8 @@ PJ *PROJECTION(eqdc) {
|
||||
} else {
|
||||
if (secant)
|
||||
Q->n = (cosphi - cos(Q->phi2)) / (Q->phi2 - Q->phi1);
|
||||
if (Q->n == 0)
|
||||
return destructor (P, PJD_ERR_CONIC_LAT_EQUAL);
|
||||
Q->c = Q->phi1 + cos(Q->phi1) / Q->n;
|
||||
Q->rho0 = Q->c - P->phi0;
|
||||
}
|
||||
|
||||
@@ -126,11 +126,11 @@ static PJ_LP geos_s_inverse (PJ_XY xy, PJ *P) { /* Spheroidal, inverse
|
||||
/* Setting three components of vector from satellite to position.*/
|
||||
Vx = -1.0;
|
||||
if(Q->flip_axis) {
|
||||
Vz = tan (xy.y / (Q->radius_g - 1.0));
|
||||
Vy = tan (xy.x / (Q->radius_g - 1.0)) * sqrt (1.0 + Vz * Vz);
|
||||
Vz = tan (xy.y / Q->radius_g_1);
|
||||
Vy = tan (xy.x / Q->radius_g_1) * sqrt (1.0 + Vz * Vz);
|
||||
} else {
|
||||
Vy = tan (xy.x / (Q->radius_g - 1.0));
|
||||
Vz = tan (xy.y / (Q->radius_g - 1.0)) * sqrt (1.0 + Vy * Vy);
|
||||
Vy = tan (xy.x / Q->radius_g_1);
|
||||
Vz = tan (xy.y / Q->radius_g_1) * sqrt (1.0 + Vy * Vy);
|
||||
}
|
||||
|
||||
/* Calculation of terms in cubic equation and determinant.*/
|
||||
|
||||
@@ -11,7 +11,7 @@ PROJ_HEAD(hatano, "Hatano Asymmetrical Equal Area") "\n\tPCyl, Sph";
|
||||
#define EPS 1e-7
|
||||
#define ONETOL 1.000001
|
||||
#define CN 2.67595
|
||||
#define CS 2.43763
|
||||
#define CSz 2.43763
|
||||
#define RCN 0.37369906014686373063
|
||||
#define RCS 0.41023453108141924738
|
||||
#define FYCN 1.75859
|
||||
@@ -28,7 +28,7 @@ static PJ_XY hatano_s_forward (PJ_LP lp, PJ *P) { /* Spheroidal, forwa
|
||||
int i;
|
||||
(void) P;
|
||||
|
||||
c = sin(lp.phi) * (lp.phi < 0. ? CS : CN);
|
||||
c = sin(lp.phi) * (lp.phi < 0. ? CSz : CN);
|
||||
for (i = NITER; i; --i) {
|
||||
lp.phi -= th1 = (lp.phi + sin(lp.phi) - c) / (1. + cos(lp.phi));
|
||||
if (fabs(th1) < EPS) break;
|
||||
|
||||
@@ -668,10 +668,10 @@ static int isea_tri_plane(int tri, struct isea_pt *pt, double radius) {
|
||||
|
||||
/* convert projected triangle coords to quad xy coords, return quad number */
|
||||
static int isea_ptdd(int tri, struct isea_pt *pt) {
|
||||
int downtri, quad;
|
||||
int downtri, quadz;
|
||||
|
||||
downtri = (((tri - 1) / 5) % 2 == 1);
|
||||
quad = ((tri - 1) % 5) + ((tri - 1) / 10) * 5 + 1;
|
||||
quadz = ((tri - 1) % 5) + ((tri - 1) / 10) * 5 + 1;
|
||||
|
||||
isea_rotate(pt, downtri ? 240.0 : 60.0);
|
||||
if (downtri) {
|
||||
@@ -679,10 +679,10 @@ static int isea_ptdd(int tri, struct isea_pt *pt) {
|
||||
/* pt->y += cos(30.0 * M_PI / 180.0); */
|
||||
pt->y += .86602540378443864672;
|
||||
}
|
||||
return quad;
|
||||
return quadz;
|
||||
}
|
||||
|
||||
static int isea_dddi_ap3odd(struct isea_dgg *g, int quad, struct isea_pt *pt,
|
||||
static int isea_dddi_ap3odd(struct isea_dgg *g, int quadz, struct isea_pt *pt,
|
||||
struct isea_pt *di)
|
||||
{
|
||||
struct isea_pt v;
|
||||
@@ -715,40 +715,40 @@ static int isea_dddi_ap3odd(struct isea_dgg *g, int quad, struct isea_pt *pt,
|
||||
* you want to test for max coords for the next quad in the same
|
||||
* "row" first to get the case where both are max
|
||||
*/
|
||||
if (quad <= 5) {
|
||||
if (quadz <= 5) {
|
||||
if (d == 0 && i == maxcoord) {
|
||||
/* north pole */
|
||||
quad = 0;
|
||||
quadz = 0;
|
||||
d = 0;
|
||||
i = 0;
|
||||
} else if (i == maxcoord) {
|
||||
/* upper right in next quad */
|
||||
quad += 1;
|
||||
if (quad == 6)
|
||||
quad = 1;
|
||||
quadz += 1;
|
||||
if (quadz == 6)
|
||||
quadz = 1;
|
||||
i = maxcoord - d;
|
||||
d = 0;
|
||||
} else if (d == maxcoord) {
|
||||
/* lower right in quad to lower right */
|
||||
quad += 5;
|
||||
quadz += 5;
|
||||
d = 0;
|
||||
}
|
||||
} else if (quad >= 6) {
|
||||
} else if (quadz >= 6) {
|
||||
if (i == 0 && d == maxcoord) {
|
||||
/* south pole */
|
||||
quad = 11;
|
||||
quadz = 11;
|
||||
d = 0;
|
||||
i = 0;
|
||||
} else if (d == maxcoord) {
|
||||
/* lower right in next quad */
|
||||
quad += 1;
|
||||
if (quad == 11)
|
||||
quad = 6;
|
||||
quadz += 1;
|
||||
if (quadz == 11)
|
||||
quadz = 6;
|
||||
d = maxcoord - i;
|
||||
i = 0;
|
||||
} else if (i == maxcoord) {
|
||||
/* upper right in quad to upper right */
|
||||
quad = (quad - 4) % 5;
|
||||
quadz = (quadz - 4) % 5;
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
@@ -756,11 +756,11 @@ static int isea_dddi_ap3odd(struct isea_dgg *g, int quad, struct isea_pt *pt,
|
||||
di->x = d;
|
||||
di->y = i;
|
||||
|
||||
g->quad = quad;
|
||||
return quad;
|
||||
g->quad = quadz;
|
||||
return quadz;
|
||||
}
|
||||
|
||||
static int isea_dddi(struct isea_dgg *g, int quad, struct isea_pt *pt,
|
||||
static int isea_dddi(struct isea_dgg *g, int quadz, struct isea_pt *pt,
|
||||
struct isea_pt *di) {
|
||||
struct isea_pt v;
|
||||
double hexwidth;
|
||||
@@ -768,7 +768,7 @@ static int isea_dddi(struct isea_dgg *g, int quad, struct isea_pt *pt,
|
||||
struct hex h;
|
||||
|
||||
if (g->aperture == 3 && g->resolution % 2 != 0) {
|
||||
return isea_dddi_ap3odd(g, quad, pt, di);
|
||||
return isea_dddi_ap3odd(g, quadz, pt, di);
|
||||
}
|
||||
/* todo might want to do this as an iterated loop */
|
||||
if (g->aperture >0) {
|
||||
@@ -793,41 +793,41 @@ static int isea_dddi(struct isea_dgg *g, int quad, struct isea_pt *pt,
|
||||
hex_iso(&h);
|
||||
|
||||
/* we may actually be on another quad */
|
||||
if (quad <= 5) {
|
||||
if (quadz <= 5) {
|
||||
if (h.x == 0 && h.z == -sidelength) {
|
||||
/* north pole */
|
||||
quad = 0;
|
||||
quadz = 0;
|
||||
h.z = 0;
|
||||
h.y = 0;
|
||||
h.x = 0;
|
||||
} else if (h.z == -sidelength) {
|
||||
quad = quad + 1;
|
||||
if (quad == 6)
|
||||
quad = 1;
|
||||
quadz = quadz + 1;
|
||||
if (quadz == 6)
|
||||
quadz = 1;
|
||||
h.y = sidelength - h.x;
|
||||
h.z = h.x - sidelength;
|
||||
h.x = 0;
|
||||
} else if (h.x == sidelength) {
|
||||
quad += 5;
|
||||
quadz += 5;
|
||||
h.y = -h.z;
|
||||
h.x = 0;
|
||||
}
|
||||
} else if (quad >= 6) {
|
||||
} else if (quadz >= 6) {
|
||||
if (h.z == 0 && h.x == sidelength) {
|
||||
/* south pole */
|
||||
quad = 11;
|
||||
quadz = 11;
|
||||
h.x = 0;
|
||||
h.y = 0;
|
||||
h.z = 0;
|
||||
} else if (h.x == sidelength) {
|
||||
quad = quad + 1;
|
||||
if (quad == 11)
|
||||
quad = 6;
|
||||
quadz = quadz + 1;
|
||||
if (quadz == 11)
|
||||
quadz = 6;
|
||||
h.x = h.y + sidelength;
|
||||
h.y = 0;
|
||||
h.z = -h.x;
|
||||
} else if (h.y == -sidelength) {
|
||||
quad -= 4;
|
||||
quadz -= 4;
|
||||
h.y = 0;
|
||||
h.z = -h.x;
|
||||
}
|
||||
@@ -835,35 +835,35 @@ static int isea_dddi(struct isea_dgg *g, int quad, struct isea_pt *pt,
|
||||
di->x = h.x;
|
||||
di->y = -h.z;
|
||||
|
||||
g->quad = quad;
|
||||
return quad;
|
||||
g->quad = quadz;
|
||||
return quadz;
|
||||
}
|
||||
|
||||
static int isea_ptdi(struct isea_dgg *g, int tri, struct isea_pt *pt,
|
||||
struct isea_pt *di) {
|
||||
struct isea_pt v;
|
||||
int quad;
|
||||
int quadz;
|
||||
|
||||
v = *pt;
|
||||
quad = isea_ptdd(tri, &v);
|
||||
quad = isea_dddi(g, quad, &v, di);
|
||||
return quad;
|
||||
quadz = isea_ptdd(tri, &v);
|
||||
quadz = isea_dddi(g, quadz, &v, di);
|
||||
return quadz;
|
||||
}
|
||||
|
||||
/* q2di to seqnum */
|
||||
|
||||
static long isea_disn(struct isea_dgg *g, int quad, struct isea_pt *di) {
|
||||
static long isea_disn(struct isea_dgg *g, int quadz, struct isea_pt *di) {
|
||||
long sidelength;
|
||||
long sn, height;
|
||||
long hexes;
|
||||
|
||||
if (quad == 0) {
|
||||
if (quadz == 0) {
|
||||
g->serial = 1;
|
||||
return g->serial;
|
||||
}
|
||||
/* hexes in a quad */
|
||||
hexes = lround(pow(static_cast<double>(g->aperture), static_cast<double>(g->resolution)));
|
||||
if (quad == 11) {
|
||||
if (quadz == 11) {
|
||||
g->serial = 1 + 10 * hexes + 1;
|
||||
return g->serial;
|
||||
}
|
||||
@@ -871,11 +871,11 @@ static long isea_disn(struct isea_dgg *g, int quad, struct isea_pt *di) {
|
||||
height = lround(floor((pow(g->aperture, (g->resolution - 1) / 2.0))));
|
||||
sn = ((long)di->x) * height;
|
||||
sn += ((long)di->y) / height;
|
||||
sn += (quad - 1) * hexes;
|
||||
sn += (quadz - 1) * hexes;
|
||||
sn += 2;
|
||||
} else {
|
||||
sidelength = lround((pow(g->aperture, g->resolution / 2.0)));
|
||||
sn = lround(floor(((quad - 1) * hexes + sidelength * di->x + di->y + 2)));
|
||||
sn = lround(floor(((quadz - 1) * hexes + sidelength * di->x + di->y + 2)));
|
||||
}
|
||||
|
||||
g->serial = sn;
|
||||
@@ -894,15 +894,15 @@ static int isea_hex(struct isea_dgg *g, int tri,
|
||||
long sidelength;
|
||||
long d, i, x, y;
|
||||
#endif
|
||||
int quad;
|
||||
int quadz;
|
||||
|
||||
quad = isea_ptdi(g, tri, pt, &v);
|
||||
quadz = isea_ptdi(g, tri, pt, &v);
|
||||
|
||||
if( v.x < (INT_MIN >> 4) || v.x > (INT_MAX >> 4) )
|
||||
{
|
||||
throw "Invalid shift";
|
||||
}
|
||||
hex->x = ((int)v.x << 4) + quad;
|
||||
hex->x = ((int)v.x * 16) + quadz;
|
||||
hex->y = v.y;
|
||||
|
||||
return 1;
|
||||
@@ -914,16 +914,16 @@ static int isea_hex(struct isea_dgg *g, int tri,
|
||||
if (g->aperture == 3 && g->resolution % 2 != 0) {
|
||||
long offset = lround((pow(3.0, g->resolution - 1) + 0.5));
|
||||
|
||||
d += offset * ((g->quad-1) % 5);
|
||||
i += offset * ((g->quad-1) % 5);
|
||||
d += offset * ((g->quadz-1) % 5);
|
||||
i += offset * ((g->quadz-1) % 5);
|
||||
|
||||
if (quad == 0) {
|
||||
if (quadz == 0) {
|
||||
d = 0;
|
||||
i = offset;
|
||||
} else if (quad == 11) {
|
||||
} else if (quadz == 11) {
|
||||
d = 2 * offset;
|
||||
i = 0;
|
||||
} else if (quad > 5) {
|
||||
} else if (quadz > 5) {
|
||||
d += offset;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
PROJ_HEAD(mbtfpp, "McBride-Thomas Flat-Polar Parabolic") "\n\tCyl, Sph";
|
||||
|
||||
#define CS .95257934441568037152
|
||||
#define CSy .95257934441568037152
|
||||
#define FXC .92582009977255146156
|
||||
#define FYC 3.40168025708304504493
|
||||
#define C23 .66666666666666666666
|
||||
@@ -19,7 +19,7 @@ static PJ_XY mbtfpp_s_forward (PJ_LP lp, PJ *P) { /* Spheroidal, forwa
|
||||
PJ_XY xy = {0.0,0.0};
|
||||
(void) P;
|
||||
|
||||
lp.phi = asin(CS * sin(lp.phi));
|
||||
lp.phi = asin(CSy * sin(lp.phi));
|
||||
xy.x = FXC * lp.lam * (2. * cos(C23 * lp.phi) - 1.);
|
||||
xy.y = FYC * sin(C13 * lp.phi);
|
||||
return xy;
|
||||
@@ -41,7 +41,7 @@ static PJ_LP mbtfpp_s_inverse (PJ_XY xy, PJ *P) { /* Spheroidal, inver
|
||||
lp.phi = asin(lp.phi);
|
||||
|
||||
lp.lam = xy.x / ( FXC * (2. * cos(C23 * (lp.phi *= 3.)) - 1.) );
|
||||
if (fabs(lp.phi = sin(lp.phi) / CS) >= 1.) {
|
||||
if (fabs(lp.phi = sin(lp.phi) / CSy) >= 1.) {
|
||||
if (fabs(lp.phi) > ONEEPS) {
|
||||
proj_errno_set(P, PJD_ERR_TOLERANCE_CONDITION);
|
||||
return lp;
|
||||
|
||||
@@ -31,8 +31,10 @@ static PJ_XY o_forward(PJ_LP lp, PJ *P) { /* spheroid */
|
||||
coslam = cos(lp.lam);
|
||||
sinphi = sin(lp.phi);
|
||||
cosphi = cos(lp.phi);
|
||||
/* Formula (5-8b) of Snyder's "Map projections: a working manual" */
|
||||
lp.lam = adjlon(aatan2(cosphi * sin(lp.lam), Q->sphip * cosphi * coslam +
|
||||
Q->cphip * sinphi) + Q->lamp);
|
||||
/* Formula (5-7) */
|
||||
lp.phi = aasin(P->ctx,Q->sphip * sinphi - Q->cphip * cosphi * coslam);
|
||||
|
||||
return Q->link->fwd(lp, Q->link);
|
||||
@@ -62,7 +64,9 @@ static PJ_LP o_inverse(PJ_XY xy, PJ *P) { /* spheroid */
|
||||
coslam = cos(lp.lam -= Q->lamp);
|
||||
sinphi = sin(lp.phi);
|
||||
cosphi = cos(lp.phi);
|
||||
/* Formula (5-9) */
|
||||
lp.phi = aasin(P->ctx,Q->sphip * sinphi + Q->cphip * cosphi * coslam);
|
||||
/* Formula (5-10b) */
|
||||
lp.lam = aatan2(cosphi * sin(lp.lam), Q->sphip * cosphi * coslam -
|
||||
Q->cphip * sinphi);
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ char const pj_release[] =
|
||||
STR(PROJ_VERSION_MAJOR)"."
|
||||
STR(PROJ_VERSION_MINOR)"."
|
||||
STR(PROJ_VERSION_PATCH)", "
|
||||
"September 1st, 2019";
|
||||
"November 1st, 2019";
|
||||
|
||||
const char *pj_get_release() {
|
||||
return pj_release;
|
||||
|
||||