Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fcf3ba260b | ||
|
|
04494f005c | ||
|
|
3002bd701d | ||
|
|
34df913b5f | ||
|
|
2228592582 | ||
|
|
f5d935b67a | ||
|
|
0d878429db | ||
|
|
5e676592b4 | ||
|
|
6cb5f0c7ef | ||
|
|
733dd744b6 | ||
|
|
53e785b48e | ||
|
|
9dceaa876c | ||
|
|
b5218364fd | ||
|
|
7bf657b368 | ||
|
|
12d0a7a62c | ||
|
|
e7dc7cabe6 | ||
|
|
954bd87db1 | ||
|
|
11a53b7c02 | ||
|
|
b5341a102a | ||
|
|
b17b34b969 | ||
|
|
148e9e9c7b | ||
|
|
ed5916b3e9 | ||
|
|
b8b8f3639c | ||
|
|
2c9eeb0825 | ||
|
|
9a7769fe96 | ||
|
|
ff85c0a70d | ||
|
|
97fe47939d | ||
|
|
bb47726990 | ||
|
|
c4e3e60fdc | ||
|
|
32dbd95501 | ||
|
|
e16b5585d5 | ||
|
|
f02c68a556 | ||
|
|
5e9d68f716 | ||
|
|
fe3a8845e2 | ||
|
|
e55d16e579 | ||
|
|
164e166cc1 | ||
|
|
b788b1b30b | ||
|
|
42d51f9e57 | ||
|
|
0ccc6941d6 | ||
|
|
4c910ec2cd | ||
|
|
5727a6c2f5 | ||
|
|
573e57a8b3 | ||
|
|
602c629481 | ||
|
|
6c47f8f836 | ||
|
|
4212384c50 | ||
|
|
da7cf08b66 | ||
|
|
c98489fcf2 | ||
|
|
2c21977bd5 | ||
|
|
bd254afe7b | ||
|
|
32c75e1bce | ||
|
|
7f7f2d847a | ||
|
|
6454541e5b | ||
|
|
0c56c9ad56 | ||
|
|
51a487e3b3 | ||
|
|
88b1900cfb | ||
|
|
ebed78c2d1 | ||
|
|
23e38c11bb | ||
|
|
5bc094eccb | ||
|
|
9efc86ad44 | ||
|
|
d91f05de15 | ||
|
|
4948c5a24d | ||
|
|
939dc46af4 | ||
|
|
1c2b8de600 | ||
|
|
1e2f1cc804 | ||
|
|
60cea743d3 | ||
|
|
419d3f45e8 | ||
|
|
9c1c80e68c | ||
|
|
6a2acd7889 | ||
|
|
bc459dbb1f |
@@ -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.1 -- docs/ .readthedocs.yaml;
|
||||
then
|
||||
exit 183;
|
||||
fi
|
||||
- (git --no-pager log --pretty="tformat:%s -- %b" -1 | grep -viq "skip ci") || exit 183
|
||||
pre_build:
|
||||
- ./docs/rtd/pre_build.sh
|
||||
- ./scripts/doxygen.sh
|
||||
- ./docs/rtd/plot.sh
|
||||
post_build:
|
||||
- ./docs/rtd/post_build.sh
|
||||
|
||||
apt_packages:
|
||||
- cmake
|
||||
- ninja-build
|
||||
- g++
|
||||
- sqlite3
|
||||
- libsqlite3-dev
|
||||
|
||||
formats:
|
||||
- pdf
|
||||
- epub
|
||||
|
||||
conda:
|
||||
environment: docs/environment.yml
|
||||
|
||||
sphinx:
|
||||
configuration: docs/source/conf.py
|
||||
fail_on_warning: true
|
||||
@@ -18,7 +18,7 @@ Project Steering Committee
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Process and membership can be found at:
|
||||
https://proj4.org/community/rfc/rfc-1.html
|
||||
https://proj.org/community/rfc/rfc-1.html
|
||||
|
||||
Chair
|
||||
................................................................................
|
||||
@@ -39,4 +39,4 @@ Contributors
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
The full list of contributors can be found on GitHub
|
||||
https://github.com/OSGeo/proj.4/graphs/contributors
|
||||
https://github.com/OSGeo/PROJ/graphs/contributors
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
To cite PROJ in publications use:
|
||||
|
||||
PROJ contributors (2019). PROJ coordinate transformation software
|
||||
library. Open Source Geospatial Foundation. URL https://proj4.org/.
|
||||
library. Open Source Geospatial Foundation. URL https://proj.org/.
|
||||
|
||||
A BibTeX entry for LaTeX users is
|
||||
|
||||
@@ -12,5 +12,5 @@ A BibTeX entry for LaTeX users is
|
||||
author = {{PROJ contributors}},
|
||||
organization = {Open Source Geospatial Foundation},
|
||||
year = {2019},
|
||||
url = {https://proj4.org/},
|
||||
url = {https://proj.org/},
|
||||
}
|
||||
|
||||
+2
-2
@@ -95,9 +95,9 @@ colormsg(_HIBLUE_ "Configuring PROJ:")
|
||||
#PROJ version information
|
||||
################################################################################
|
||||
include(ProjVersion)
|
||||
proj_version(MAJOR 6 MINOR 1 PATCH 0)
|
||||
proj_version(MAJOR 6 MINOR 1 PATCH 1)
|
||||
set(PROJ_API_VERSION "16")
|
||||
set(PROJ_BUILD_VERSION "16.0.1")
|
||||
set(PROJ_BUILD_VERSION "16.1.1")
|
||||
|
||||
################################################################################
|
||||
# Build features and variants
|
||||
|
||||
+6
-6
@@ -29,7 +29,7 @@ the issue tracker.
|
||||
|
||||
## Adding bug reports
|
||||
|
||||
Bug reports are handled in the [issue tracker](https://github.com/OSGeo/proj.4/issues)
|
||||
Bug reports are handled in the [issue tracker](https://github.com/OSGeo/PROJ/issues)
|
||||
on PROJ.4's home on GitHub. Writing a good bug report is not easy. But fixing a poorly
|
||||
documented bug is not easy either, so please put in the effort it takes to create a
|
||||
thorough bug report.
|
||||
@@ -56,7 +56,7 @@ definitely a problem with PROJ.4.
|
||||
## Feature requests
|
||||
|
||||
Got an idea for a new feature in PROJ.4? Submit a thorough description of the new
|
||||
feature in the [issue tracker](https://github.com/OSGeo/proj.4/issues). Please
|
||||
feature in the [issue tracker](https://github.com/OSGeo/PROJ/issues). Please
|
||||
include any technical documents that can help the developer make the new feature a
|
||||
reality. An example of this could be a publicly available academic paper that
|
||||
describes a new projection. Also, including a numerical test case will make it
|
||||
@@ -68,18 +68,18 @@ Note that not all feature requests are accepted.
|
||||
## Write documentation
|
||||
|
||||
PROJ.4 is in dire need of better documentation. Any contributions of documentation
|
||||
are greatly appreciated. The PROJ.4 documentation is available on [proj4.org](https://proj4.org).
|
||||
are greatly appreciated. The PROJ.4 documentation is available on [proj.org](https://proj.org).
|
||||
The website is generated with [Sphinx](http://www.sphinx-doc.org/en/stable/). Contributions
|
||||
to the documentation should be made as [Pull Requests](https://github.com/OSGeo/proj.4/pulls)
|
||||
to the documentation should be made as [Pull Requests](https://github.com/OSGeo/PROJ/pulls)
|
||||
on GitHub.
|
||||
|
||||
If you intend to document one of PROJ.4's supported projections please use the
|
||||
[Mercator projection](https://proj4.org/projections/merc.html) as a template.
|
||||
[Mercator projection](https://proj.org/operations/projections/merc.html) as a template.
|
||||
|
||||
|
||||
## Code contributions
|
||||
|
||||
See [Code Contributions](https://proj4.org/development/for_proj_contributors.html)
|
||||
See [Code Contributions](https://proj.org/community/code_contributions.html)
|
||||
|
||||
#### Legalese
|
||||
Committers are the front line gatekeepers to keep the code base clear of improperly contributed code.
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
##
|
||||
# osgeo/proj.4
|
||||
# OSGeo/PROJ
|
||||
|
||||
FROM ubuntu:18.04 as builder
|
||||
|
||||
@@ -15,8 +15,8 @@ RUN apt-get update -y \
|
||||
git make cmake wget unzip libtool automake \
|
||||
zlib1g-dev libsqlite3-dev pkg-config sqlite3
|
||||
|
||||
RUN git clone https://github.com/OSGeo/proj.4.git \
|
||||
&& cd proj.4 \
|
||||
RUN git clone https://github.com/OSGeo/PROJ.git \
|
||||
&& cd PROJ \
|
||||
&& ./autogen.sh \
|
||||
&& ./configure --prefix=/usr \
|
||||
&& make \
|
||||
|
||||
+2
-1
@@ -198,7 +198,7 @@ git push --tags
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
When the new tag is pushed upstream GitHub picks up that a new release has been
|
||||
issued. Update the new release on https://github.com/OSGeo/proj.4/releases with
|
||||
issued. Update the new release on https://github.com/OSGeo/PROJ/releases with
|
||||
the release notes from `NEWS` and add the prepared source distribution archives
|
||||
to the release (otherwise GitHub will just package the entire repository - we
|
||||
don't want that).
|
||||
@@ -236,3 +236,4 @@ version numbers in the files.
|
||||
|
||||
|
||||
*Commit changes to master branch.*
|
||||
|
||||
|
||||
@@ -1,3 +1,59 @@
|
||||
6.1.1 Release Notes
|
||||
-------------------
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
o Update EPSG registry to version 9.6.3 (1485)
|
||||
|
||||
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
o Take the passed authority into account when identifying
|
||||
objects (#1466)
|
||||
|
||||
o Avoid exception when transforming from NAD83 to projected
|
||||
CRS using NAD83(2011) (#1477)
|
||||
|
||||
o Avoid off-by-one reading of name argument if name of resource
|
||||
file has length 1 (#1489)
|
||||
|
||||
o Do not include PROJ_LIB in proj_info().searchpath when context
|
||||
search path is set (#1498)
|
||||
|
||||
o Use correct delimeter for the current platform when parsing
|
||||
PROJ_LIB (#1497)
|
||||
|
||||
o Do not confuse 'ID74' CRS with WKT2 ID[] node (#1506)
|
||||
|
||||
o WKT1 importer: do case insensitive comparison for axis
|
||||
direction (#1509)
|
||||
|
||||
o Avoid compile errors on GCC 4.9.3 (#1512)
|
||||
|
||||
o Make sure that pipelines including +proj=ob_tran can be
|
||||
created (#1526)
|
||||
|
||||
|
||||
THANKS TO
|
||||
------------
|
||||
|
||||
Version 6.1.1 is made possible by the following contributors:
|
||||
|
||||
|
||||
Alan D. Snow
|
||||
Paul Menzel
|
||||
Mateusz Łoskot
|
||||
Bas Couwenberg
|
||||
Peter Limkilde Svendsen
|
||||
Mike Taves
|
||||
Howard Butler
|
||||
Nyall Dawson
|
||||
Andrew Bell
|
||||
Kristian Evers
|
||||
Even Rouault
|
||||
|
||||
6.1.0 Release Notes
|
||||
-------------------
|
||||
|
||||
@@ -14,7 +70,7 @@
|
||||
|
||||
o Update internal version of googletest to v1.8.1 (#1361)
|
||||
|
||||
o Database update: EPSG v9.6.1, IGNF v3.0.3, ESRI 10.7.0
|
||||
o Database update: EPSG v9.6.2 (#1462), IGNF v3.0.3, ESRI 10.7.0
|
||||
and add operation_version column (#1368)
|
||||
|
||||
o Add proj_normalize_for_visualization() that attempts to apply axis
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# PROJ
|
||||
|
||||
[](https://travis-ci.com/OSGeo/proj.4)
|
||||
[](https://ci.appveyor.com/project/OSGeo/proj-4)
|
||||
[](https://coveralls.io/github/OSGeo/proj.4?branch=master)
|
||||
[](https://travis-ci.com/OSGeo/PROJ)
|
||||
[](https://ci.appveyor.com/project/OSGeo/PROJ?branch=6.1)
|
||||
[](https://coveralls.io/github/OSGeo/PROJ?branch=6.1)
|
||||
[](https://gitter.im/OSGeo/proj.4)
|
||||
[](http://lists.osgeo.org/mailman/listinfo/proj)
|
||||
|
||||
@@ -12,7 +12,7 @@ This includes cartographic projections as well as geodetic transformations.
|
||||
|
||||
For more information on the PROJ.4 project please see the web page at:
|
||||
|
||||
https://proj4.org/
|
||||
https://proj.org/
|
||||
|
||||
The PROJ.4 mailing list can be found at:
|
||||
|
||||
|
||||
@@ -31,11 +31,11 @@ check_function_exists(strerror HAVE_STRERROR)
|
||||
check_library_exists(m ceil "" HAVE_LIBM)
|
||||
|
||||
set(PACKAGE "proj")
|
||||
set(PACKAGE_BUGREPORT "https://github.com/OSGeo/proj.4/issues")
|
||||
set(PACKAGE_BUGREPORT "https://github.com/OSGeo/PROJ/issues")
|
||||
set(PACKAGE_NAME "PROJ")
|
||||
set(PACKAGE_STRING "PROJ ${${PROJECT_INTERN_NAME}_VERSION}")
|
||||
set(PACKAGE_TARNAME "proj")
|
||||
set(PACKAGE_URL "https://proj4.org")
|
||||
set(PACKAGE_URL "https://proj.org")
|
||||
set(PACKAGE_VERSION "${${PROJECT_INTERN_NAME}_VERSION}")
|
||||
|
||||
# check if a second proj_config.h exists (created by ./configure)
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT([PROJ], [6.1.0],
|
||||
[https://github.com/OSGeo/proj.4/issues], proj, [https://proj4.org])
|
||||
AC_INIT([PROJ], [6.1.1],
|
||||
[https://github.com/OSGeo/PROJ/issues], proj, [https://proj.org])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_LANG(C)
|
||||
|
||||
|
||||
+2
-2
@@ -64,7 +64,7 @@ proj.db: $(DATAPATH)/sql/*.sql
|
||||
for x in $(SQL_ORDERED_LIST); do \
|
||||
export SQL_EXPANDED_LIST="$${SQL_EXPANDED_LIST} $(DATAPATH)/$$x"; \
|
||||
done; \
|
||||
if test "x$(PROJ_DB_CACHE_DIR)" != "x" -a -f "$(PROJ_DB_CACHE_DIR)/proj.db" -a -f "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5" ; then \
|
||||
if test "x$(PROJ_DB_CACHE_DIR)" != "x" -a -x "$$(command -v md5sum)" -a -f "$(PROJ_DB_CACHE_DIR)/proj.db" -a -f "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5" ; then \
|
||||
cat $${SQL_EXPANDED_LIST} | md5sum | diff - "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5" > /dev/null \
|
||||
&& (echo "Reusing cached proj.db"; cp "$(PROJ_DB_CACHE_DIR)/proj.db" proj.db); \
|
||||
fi; \
|
||||
@@ -84,7 +84,7 @@ proj.db: $(DATAPATH)/sql/*.sql
|
||||
$(RM) proj.db; \
|
||||
exit 1; \
|
||||
else \
|
||||
if test "x$(PROJ_DB_CACHE_DIR)" != "x" ; then \
|
||||
if test "x$(PROJ_DB_CACHE_DIR)" != "x" -a -x "$$(command -v md5sum)" ; then \
|
||||
mkdir -p "$(PROJ_DB_CACHE_DIR)"; \
|
||||
cat $${SQL_EXPANDED_LIST} | md5sum > "$(PROJ_DB_CACHE_DIR)/proj.db.sql.md5"; \
|
||||
cp proj.db "$(PROJ_DB_CACHE_DIR)"; \
|
||||
|
||||
@@ -328,7 +328,6 @@ INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1026','TWD97','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6236','Hu Tzu Shan','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6316','Dealul Piscului 1933','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1107','Cais da Figueirinha - Angra do Heroísmo','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1141','ITRF2008 (2005.0)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5202','Bora Bora 2001','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5124','Fahud HD','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5132','DNN','EPSG');
|
||||
@@ -390,7 +389,6 @@ INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1175','MSL 1971','EPSG'
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1176','St. Helena Tritan 2011','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1193','NAD83(CSRS)v2','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1187','ISN2016','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1191','ITRF2014 (2010.0)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1190','ISH2004','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1190','Landshæðarkerfi Islands 2004','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6156','Systém Jednotnej trigonometrickej siete katastrálnej','EPSG');
|
||||
|
||||
+31
-31
@@ -55,7 +55,7 @@ INSERT INTO "area" VALUES('EPSG','1075','Cote d''Ivoire (Ivory Coast)','Côte d'
|
||||
INSERT INTO "area" VALUES('EPSG','1076','Croatia','Croatia - onshore and offshore.',41.62,46.54,13.0,19.43,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1077','Cuba','Cuba - onshore and offshore.',18.83,25.51,-87.01,-73.57,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1078','Cyprus','Cyprus - onshore and offshore.',32.88,36.21,29.95,35.2,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1079','Czech Republic','Czech Republic.',48.58,51.06,12.09,18.86,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1079','Czechia','Czechia.',48.58,51.06,12.09,18.86,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1080','Denmark','Denmark - onshore and offshore.',54.36,58.27,3.24,16.51,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1081','Djibouti','Djibouti - onshore and offshore.',10.94,12.72,41.75,44.15,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1082','Dominica','Dominica - onshore and offshore.',14.48,16.62,-62.82,-57.52,0);
|
||||
@@ -124,7 +124,7 @@ INSERT INTO "area" VALUES('EPSG','1144','Liechtenstein','Liechtenstein.',47.05,4
|
||||
INSERT INTO "area" VALUES('EPSG','1145','Lithuania','Lithuania - onshore and offshore.',53.89,56.45,19.02,26.82,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1146','Luxembourg','Luxembourg.',49.44,50.19,5.73,6.53,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1147','China - Macao','China - Macao - onshore and offshore.',22.06,22.23,113.52,113.68,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1148','Macedonia','The Former Yugoslav Republic of Macedonia.',40.85,42.36,20.45,23.04,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1148','North Macedonia','North Macedonia.',40.85,42.36,20.45,23.04,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1149','Madagascar - onshore and nearshore','Madagascar - onshore and nearshore.',-26.59,-11.69,42.53,51.03,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1150','Malawi','Malawi.',-17.14,-9.37,32.68,35.93,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1151','Malaysia','Malaysia - onshore and offshore. Includes peninsular Malayasia, Sabah and Sarawak.',0.85,7.81,98.02,119.61,0);
|
||||
@@ -260,7 +260,7 @@ INSERT INTO "area" VALUES('EPSG','1280','Australia - Western Australia','Austral
|
||||
INSERT INTO "area" VALUES('EPSG','1281','Australia - mainland','Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Western Australia; Victoria.',-39.2,-10.65,112.85,153.69,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1282','Australia - Tasmania','Australia - Tasmania including islands - onshore.',-43.7,-39.52,143.77,148.55,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1283','Canada - Maritime Provinces','Canada - New Brunswick; Nova Scotia; Prince Edward Island.',43.41,48.07,-69.05,-59.73,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1284','Europe - FSU, Czechoslovakia - onshore','Armenia; Azerbaijan; Belarus; Czech Republic; Estonia - onshore; Georgia - onshore; Kazakhstan; Kyrgyzstan; Latvia - onshore; Lithuania - onshore; Moldova; Russian Federation - onshore; Slovakia; Tajikistan; Turkmenistan; Ukraine - onshore; Uzbekistan.',35.14,77.79,12.09,-169.57,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1284','Europe - FSU, Czechoslovakia - onshore','Armenia; Azerbaijan; Belarus; Czechia; Estonia - onshore; Georgia - onshore; Kazakhstan; Kyrgyzstan; Latvia - onshore; Lithuania - onshore; Moldova; Russian Federation - onshore; Slovakia; Tajikistan; Turkmenistan; Ukraine - onshore; Uzbekistan.',35.14,77.79,12.09,-169.57,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1285','Indonesia - Java and Bali onshore','Indonesia - onshore Java and Bali.',-8.91,-5.83,105.06,115.77,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1286','Europe - Liechtenstein and Switzerland','Liechtenstein; Switzerland.',45.82,47.81,5.96,10.49,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1287','Indonesia - Banga & Belitung Islands','Indonesia - Banga and Belitung Islands.',-3.3,-1.44,105.07,108.35,0);
|
||||
@@ -274,15 +274,15 @@ INSERT INTO "area" VALUES('EPSG','1294','Portugal - mainland - onshore','Portuga
|
||||
INSERT INTO "area" VALUES('EPSG','1295','Germany - DHDN','Germany - onshore - Baden-Wurtemberg, Bayern, Hessen, Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Schleswig-Holstein. Also former DDR states of Sachsen and Thuringen by transformation.',47.27,55.06,5.87,15.03,1);
|
||||
INSERT INTO "area" VALUES('EPSG','1296','Europe - ED50 by country','Europe - west: Andorra; Cyprus; Denmark - onshore and offshore; Faroe Islands - onshore; France - offshore; Germany - offshore North Sea; Gibraltar; Greece - offshore; Israel - offshore; Italy including San Marino and Vatican City State; Ireland offshore; Malta; Netherlands - offshore; North Sea; Norway including Svalbard - onshore and offshore; Portugal - mainland - offshore; Spain - onshore; Turkey - onshore and offshore; United Kingdom UKCS offshore east of 6°W including Channel Islands (Guernsey and Jersey). Egypt - Western Desert; Iraq - onshore; Jordan.',25.71,84.17,-16.1,48.61,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1297','Europe - west','Europe - west.',34.88,84.17,-10.56,39.65,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1298','Europe - ETRS89','Europe - onshore and offshore: Albania; Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Cyprus; Czech Republic; Denmark; Estonia; Faroe Islands; Finland; France; Germany; Gibraltar; Greece; Hungary; Ireland; Italy; Latvia; Liechtenstein; Lithuania; Luxembourg; Macedonia; Malta; Moldova; Monaco; Montenegro; Netherlands; Norway including Svalbard and Jan Mayen; Poland; Portugal; Romania; San Marino; Serbia; Slovakia; Slovenia; Spain; Sweden; Switzerland; Ukraine; United Kingdom (UK) including Channel Islands and Isle of Man; Vatican City State.',32.88,84.17,-16.1,40.18,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1299','Europe - EVRF2000','Europe - onshore - Andorra; Austria; Belgium; Bosnia and Herzegovina; Croatia; Czech Republic; Denmark; Estonia; Finland; France - mainland; Germany; Gibraltar; Hungary; Italy - mainland and Sicily; Latvia; Liechtenstein; Lithuania; Luxembourg; Netherlands; Norway; Poland; Portugal; Romania; San Marino; Slovakia; Slovenia; Spain - mainland; Sweden; Switzerland; United Kingdom (UK) - Great Britain mainland; Vatican City State.',35.95,71.21,-9.56,31.59,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1298','Europe - ETRS89','Europe - onshore and offshore: Albania; Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Cyprus; Czechia; Denmark; Estonia; Faroe Islands; Finland; France; Germany; Gibraltar; Greece; Hungary; Ireland; Italy; Latvia; Liechtenstein; Lithuania; Luxembourg; Malta; Moldova; Monaco; Montenegro; Netherlands; North Macedonia; Norway including Svalbard and Jan Mayen; Poland; Portugal; Romania; San Marino; Serbia; Slovakia; Slovenia; Spain; Sweden; Switzerland; United Kingdom (UK) including Channel Islands and Isle of Man; Vatican City State.',32.88,84.17,-16.1,40.18,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1299','Europe - EVRF2000','Europe - onshore - Andorra; Austria; Belgium; Bosnia and Herzegovina; Croatia; Czechia; Denmark; Estonia; Finland; France - mainland; Germany; Gibraltar; Hungary; Italy - mainland and Sicily; Latvia; Liechtenstein; Lithuania; Luxembourg; Netherlands; Norway; Poland; Portugal - mainland; Romania; San Marino; Slovakia; Slovenia; Spain - mainland; Sweden; Switzerland; United Kingdom (UK) - Great Britain mainland; Vatican City State.',35.95,71.21,-9.56,31.59,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1300','Iran - FD58','Iran - Arwaz area and onshore Gulf coast west of 54°E, Lavan Island, offshore Balal field and South Pars blocks 2 and 3.',26.21,33.22,47.13,53.61,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1301','Portugal - Azores C - onshore','Portugal - central Azores onshore - Faial, Graciosa, Pico, Sao Jorge, Terceira.',38.32,39.14,-28.9,-26.97,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1302','Asia - Cambodia and Vietnam - mainland','Cambodia - mainland onshore; Vietnam - mainland onshore.',8.5,23.33,102.14,109.52,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1303','South America - Tierra del Fuego','Argentina and Chile - Tierra del Fuego, onshore.',-55.96,-51.99,-74.83,-63.73,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1304','Asia - Myanmar and Thailand onshore','Myanmar (Burma) - onshore; Thailand - onshore.',5.63,28.55,92.2,105.64,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1305','Europe - Ireland (Republic and Ulster) - onshore','Ireland - onshore. United Kingdom (UK) - Northern Ireland (Ulster) - onshore.',51.39,55.43,-10.56,-5.34,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1306','Europe - Czechoslovakia','Czech Republic; Slovakia.',47.73,51.06,12.09,22.56,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1306','Europe - Czechoslovakia','Czechia; Slovakia.',47.73,51.06,12.09,22.56,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1307','Asia - Bangladesh; India; Myanmar; Pakistan - onshore','Bangladesh - onshore; India - mainland onshore; Myanmar (Burma) - onshore; Pakistan - onshore.',8.02,37.07,60.86,101.17,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1308','Asia - Bangladesh; India; Myanmar; Pakistan - onshore','Bangladesh - onshore; India - mainland onshore; Myanmar - onshore and Moattama area offshore; Pakistan - onshore.',8.02,37.07,60.86,101.17,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1309','Asia - Malaysia (west) and Singapore','Malaysia - West Malaysia; Singapore.',1.13,6.72,99.59,104.6,0);
|
||||
@@ -297,7 +297,7 @@ INSERT INTO "area" VALUES('EPSG','1317','Angola - Cabinda offshore','Angola - Ca
|
||||
INSERT INTO "area" VALUES('EPSG','1318','Angola - Cabinda','Angola - Cabinda.',-6.04,-4.38,10.53,13.1,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1319','Venezuela - Maracaibo area','Venezuela - Maracaibo area, onshore and offshore in lake.',10.0,11.0,-72.25,-71.5,0);
|
||||
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. FYR Macedonia. Montenegro - onshore. Serbia. Slovenia - onshore.',40.85,49.02,9.53,23.04,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1321','Europe - Austria and former Yugoslavia onshore','Austria. Bosnia and Herzegovina. Croatia - onshore. 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','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);
|
||||
@@ -489,8 +489,8 @@ INSERT INTO "area" VALUES('EPSG','1509','Sierra Leone - west of 12°W','Sierra L
|
||||
INSERT INTO "area" VALUES('EPSG','1510','Sierra Leone - east of 12°W','Sierra Leone - onshore east of 12°W.',6.88,10.0,-12.0,-10.26,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1511','USA - CONUS and Alaska; PRVI','Puerto Rico - onshore and offshore. United States (USA) onshore and offshore - 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 - onshore and offshore.',14.92,74.71,167.65,-63.88,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1512','Germany - East Germany - west of 10.5°E','Germany - states of former East Germany - west of 10°30''E - Thuringen.',50.35,51.56,9.92,10.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1513','Europe - 10.5°E to 13.5°E onshore by country','Czech Republic - west of 13°30''E. Germany - states of former East Germany onshore - between 10°30''E and 13°30''E - Brandenburg; Mecklenburg-Vorpommern; Sachsen; Sachsen-Anhalt; Thuringen.',48.97,54.74,10.5,13.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1514','Europe - 13.5°E to 16.5°E onshore and S-42(83) by country','Czech Republic - between 13°30''E and 16°30''E. Germany - states of former East Germany onshore east of 13°30''E - Brandenburg; Mecklenburg-Vorpommern; Sachsen. Hungary - west of 16°30''E.',46.54,54.72,13.5,16.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1513','Europe - 10.5°E to 13.5°E onshore by country','Czechia - west of 13°30''E. Germany - states of former East Germany onshore - between 10°30''E and 13°30''E - Brandenburg; Mecklenburg-Vorpommern; Sachsen; Sachsen-Anhalt; Thuringen.',48.97,54.74,10.5,13.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1514','Europe - 13.5°E to 16.5°E onshore and S-42(83) by country','Czechia - between 13°30''E and 16°30''E. Germany - states of former East Germany onshore east of 13°30''E - Brandenburg; Mecklenburg-Vorpommern; Sachsen. Hungary - west of 16°30''E.',46.54,54.72,13.5,16.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1515','Poland - zone I','Poland - southeast - south of 52°20''N and east of 18°E.',49.0,52.34,18.0,24.15,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1516','Poland - zone II','Poland - northeast - onshore north of 51°20''N and east of 19°E.',51.33,54.51,19.0,23.95,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1517','Poland - zone III','Poland - northwest - onshore north of 52°10''N and west of 20°E.',52.16,54.89,14.14,20.0,0);
|
||||
@@ -687,8 +687,8 @@ INSERT INTO "area" VALUES('EPSG','1707','Austria - 11°50''E to 14°50''E','Aust
|
||||
INSERT INTO "area" VALUES('EPSG','1708','Austria - east of 14°50''E','Austria east of 14°50''E of Greenwich (32°30''E of Ferro).',46.56,49.02,14.83,17.17,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1709','Europe - former Yugoslavia onshore west of 16.5°E','Bosnia and Herzegovina - west of 16°30''E; Croatia - onshore west of 16°30''E; Slovenia - onshore.',42.95,46.88,13.38,16.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1710','Europe - former Yugoslavia onshore 16.5°E to 19.5°E','Bosnia and Herzegovina - between 16°30''E and 19°30''E; Croatia - onshore east of 16°30''E; Montenegro - onshore west of 19°30''E; Serbia - west of 19°30''E.',41.79,46.55,16.5,19.51,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1711','Europe - former Yugoslavia onshore 19.5°E to 22.5°E','Bosnia and Herzegovina - east of 19°30''E; FYR Macedonia - west of 22°30''E; Montenegro - east of 19°30''E; Serbia - between 19°30''E and 22°30''E.',40.85,46.19,19.5,22.51,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1712','Europe - former Yugoslavia onshore east of 22.5°E','FYR Macedonia - east of 22°30''E; Serbia - east of 22°30''E.',41.11,44.7,22.5,23.04,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1711','Europe - former Yugoslavia onshore 19.5°E to 22.5°E','Bosnia and Herzegovina - east of 19°30''E; Montenegro - east of 19°30''E; North Macedonia - west of 22°30''E; Serbia - between 19°30''E and 22°30''E.',40.85,46.19,19.5,22.51,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1712','Europe - former Yugoslavia onshore east of 22.5°E','North Macedonia - east of 22°30''E; Serbia - east of 22°30''E.',41.11,44.7,22.5,23.04,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1713','Nigeria - east of 10.5°E','Nigeria east of 10°30''E.',6.43,13.72,10.49,14.65,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1714','Nigeria - 6.5°E to 10.5°E','Nigeria between 6°30''E and 10°30''E, onshore and offshore shelf.',3.57,13.53,6.5,10.51,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1715','Nigeria - west of 6.5°E','Nigeria - onshore west of 6°30''E, onshore and offshore shelf.',3.57,13.9,2.69,6.5,0);
|
||||
@@ -768,7 +768,7 @@ INSERT INTO "area" VALUES('EPSG','1788','Russia - 168°E to 174°E onshore','Rus
|
||||
INSERT INTO "area" VALUES('EPSG','1789','Russia - 174°E to 180°E onshore','Russian Federation - onshore between 174°E and 180°E .',61.65,71.59,174.0,180.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1790','Russia - 180° to 174°W onshore','Russian Federation - onshore between 180°E and 174°W.',64.35,71.65,-180.0,-174.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1791','Russia - east of 174°W onshore','Russian Federation - onshore east of 174°W.',64.2,67.18,-174.0,-168.97,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1792','Europe - 12°E to 18°E onshore and S-42(58) by country','Germany (former DDR) - onshore east of 12°E. Poland - onshore west of 18°E. Czech Republic, Hungary and Slovakia - west of 18°E.',45.78,54.89,12.0,18.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1792','Europe - 12°E to 18°E onshore and S-42(58) by country','Germany (former DDR) - onshore east of 12°E. Poland - onshore west of 18°E. Czechia, Hungary and Slovakia - west of 18°E.',45.78,54.89,12.0,18.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1793','Europe - FSU onshore 18°E to 24°E and S-42 by country','Belarus, Estonia, Latvia, Lithuania and Ukraine - onshore west of 24°E. Russian Federation - Kaliningrad onshore.',47.95,59.44,19.57,24.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1794','Europe - FSU onshore 24°E to 30°E and S-42 by country','Estonia; Latvia and Lithuania - onshore east of 24°E; Belarus, Moldova, Russian Federation and Ukraine - onshore 24°E to 30°E.',45.18,69.47,24.0,30.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','1795','Europe - FSU onshore 30°E to 36°E','Belarus and Moldova - east of 30°E; Russian Federation and Ukraine - onshore 30°E to 36°E.',44.32,70.02,30.0,36.0,0);
|
||||
@@ -1040,9 +1040,9 @@ INSERT INTO "area" VALUES('EPSG','2060','World - N hemisphere - 0°E to 6°E - b
|
||||
INSERT INTO "area" VALUES('EPSG','2061','World - S hemisphere - 0°E to 6°E - by country','Between 0°E and 6°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,0.0,6.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2062','World - N hemisphere - 6°E to 12°E - by country','Between 6°E and 12°E, northern hemisphere between equator and 84°N, onshore and offshore. Algeria. Austria. Cameroon. Denmark. Equatorial Guinea. France. Gabon. Germany. Italy. Libya. Liechtenstein. Monaco. Netherlands. Niger. Nigeria. Norway. Sao Tome and Principe. Svalbard. Sweden. Switzerland. Tunisia. Vatican City State.',0.0,84.0,6.0,12.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2063','World - S hemisphere - 6°E to 12°E - by country','Between 6°E and 12°E, southern hemisphere between 80°S and equator, onshore and offshore. Angola. Congo. Gabon. Namibia.',-80.0,0.0,6.0,12.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2064','World - N hemisphere - 12°E to 18°E - by country','Between 12°E and 18°E, northern hemisphere between equator and 84°N, onshore and offshore. Austria. Bosnia and Herzegovina. Cameroon. Central African Republic. Chad. Congo. Croatia. Czech Republic. Democratic Republic of the Congo (Zaire). Gabon. Germany. Hungary. Italy. Libya. Malta. Niger. Nigeria. Norway. Poland. San Marino. Slovakia. Slovenia. Svalbard. Sweden. Vatican City State.',0.0,84.0,12.0,18.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2064','World - N hemisphere - 12°E to 18°E - by country','Between 12°E and 18°E, northern hemisphere between equator and 84°N, onshore and offshore. Austria. Bosnia and Herzegovina. Cameroon. Central African Republic. Chad. Congo. Croatia. Czechia. Democratic Republic of the Congo (Zaire). Gabon. Germany. Hungary. Italy. Libya. Malta. Niger. Nigeria. Norway. Poland. San Marino. Slovakia. Slovenia. Svalbard. Sweden. Vatican City State.',0.0,84.0,12.0,18.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2065','World - S hemisphere - 12°E to 18°E - by country','Between 12°E and 18°E, southern hemisphere between 80°S and equator, onshore and offshore. Angola. Congo. Democratic Republic of the Congo (Zaire). Gabon. Namibia. South Africa.',-80.0,0.0,12.0,18.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2066','World - N hemisphere - 18°E to 24°E - by country','Between 18°E and 24°E, northern hemisphere between equator and 84°N, onshore and offshore. Albania. Belarus. Bosnia and Herzegovina. Bulgaria. Central African Republic. Chad. Croatia. Democratic Republic of the Congo (Zaire). Estonia. Finland. FYR Macedonia. Greece. Hungary. Italy. Latvia. Libya. Lithuania. Montenegro. Norway, including Svalbard and Bjornoys. Poland. Romania. Russian Federation. Serbia. Slovakia. Sudan. Sweden. Ukraine.',0.0,84.0,18.0,24.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2066','World - N hemisphere - 18°E to 24°E - by country','Between 18°E and 24°E, northern hemisphere between equator and 84°N, onshore and offshore. Albania. Belarus. Bosnia and Herzegovina. Bulgaria. Central African Republic. Chad. Croatia. Democratic Republic of the Congo (Zaire). Estonia. Finland. Greece. Hungary. Italy. Latvia. Libya. Lithuania. Montenegro. North Macedonia. Norway, including Svalbard and Bjornoys. Poland. Romania. Russian Federation. Serbia. Slovakia. Sudan. Sweden. Ukraine.',0.0,84.0,18.0,24.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2067','World - S hemisphere - 18°E to 24°E - by country','Between 18°E and 24°E, southern hemisphere between 80°S and equator, onshore and offshore. Angola. Botswana. Democratic Republic of the Congo (Zaire). Namibia. South Africa. Zambia.',-80.0,0.0,18.0,24.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2068','World - N hemisphere - 24°E to 30°E - by country','Between 24°E and 30°E, northern hemisphere between equator and 84°N, onshore and offshore. Belarus. Bulgaria. Central African Republic. Democratic Republic of the Congo (Zaire). Egypt. Estonia. Finland. Greece. Latvia. Lesotho. Libya. Lithuania. Moldova. Norway. Poland. Romania. Russian Federation. Sudan. Svalbard. Turkey. Uganda. Ukraine.',0.0,84.0,24.0,30.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2069','World - S hemisphere - 24°E to 30°E - by country','Between 24°E and 30°E, southern hemisphere between 80°S and equator, onshore and offshore. Botswana. Burundi. Democratic Republic of the Congo (Zaire). Rwanda. South Africa. Tanzania. Uganda. Zambia. Zimbabwe.',-80.0,0.0,24.0,30.0,0);
|
||||
@@ -1346,7 +1346,7 @@ INSERT INTO "area" VALUES('EPSG','2366','Spain - mainland onshore','Spain - main
|
||||
INSERT INTO "area" VALUES('EPSG','2367','Spain - mainland northeast','Spain - onshore mainland north of the parallel of approximately 41°58''N from approximately 6°35''W to the meridian of 4°W of Greenwich and then a line from 41°58''N, 4°W through 40°N, 0°E of Greenwich.',39.96,43.82,-9.37,3.39,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2368','Spain - mainland southwest','Spain - onshore mainland south of the parallel of approximately 41°58''N from approximately 6°35''W to the meridian of 4°W of Greenwich and then a line from 41°58''N, 4°W through 40°N, 0°E of Greenwich.',35.95,41.98,-7.54,0.28,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2369','Seychelles - Mahe Island','Seychelles - Mahe Island.',-4.86,-4.5,55.3,55.59,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2370','Europe - former Yugoslavia onshore','Boznia and Herzegovina; Croatia - onshore; FYR Macedonia; Montenegro - onshore; Serbia; Slovenia - onshore.',40.85,46.88,13.38,23.04,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2370','Europe - former Yugoslavia onshore','Boznia and Herzegovina; Croatia - onshore; Montenegro - onshore; North Macedonia; Serbia; Slovenia - onshore.',40.85,46.88,13.38,23.04,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2371','Nigeria - south','Nigeria - onshore south.',4.22,6.95,4.35,9.45,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2372','Italy - mainland','Italy - mainland including San Marino and Vatican City State.',37.86,47.1,6.62,18.58,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2373','USA - Alaska including EEZ','United States (USA) - Alaska including EEZ.',47.88,74.71,167.65,-129.99,0);
|
||||
@@ -1806,7 +1806,7 @@ INSERT INTO "area" VALUES('EPSG','2826','Africa - South Sudan and Sudan - west o
|
||||
INSERT INTO "area" VALUES('EPSG','2827','Africa - South Sudan and Sudan - 24°E to 30°E','South Sudan and Sudan - between 24°E and 30°E.',4.21,22.01,23.99,30.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2828','Guadeloupe - St Martin and St Barthelemy - onshore','Guadeloupe - onshore - St Martin and St Barthélemy islands.',17.82,18.17,-63.21,-62.73,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2829','Guadeloupe - Grande-Terre and surrounding islands - onshore','Guadeloupe - onshore - Basse-Terre, Grande-Terre, La Desirade, Marie-Galante, Les Saintes.',15.8,16.55,-61.85,-60.97,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2830','World (by country)','World: Afghanistan, Albania, Algeria, American Samoa, Andorra, Angola, Anguilla, Antarctica, Antigua and Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belgium, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, Bonaire, Saint Eustasius and Saba, Bosnia and Herzegovina, Botswana, Bouvet Island, Brazil, British Indian Ocean Territory, British Virgin Islands, Brunei Darussalam, Bulgaria, Burkina Faso, Burundi, Cambodia, Cameroon, Canada, Cape Verde, Cayman Islands, Central African Republic, Chad, Chile, China, Christmas Island, Cocos (Keeling) Islands, Comoros, Congo, Cook Islands, Costa Rica, Côte d''Ivoire (Ivory Coast), Croatia, Cuba, Curacao, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, East Timor, Ecuador, Egypt, El Salvador, Equatorial Guinea, Eritrea, Estonia, Eswatini (Swaziland), Ethiopia, Falkland Islands (Malvinas), Faroe Islands, Fiji, Finland, France, French Guiana, French Polynesia, French Southern Territories, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guam, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Heard Island and McDonald Islands, Holy See (Vatican City State), Honduras, China - Hong Kong, Hungary, Iceland, India, Indonesia, Islamic Republic of Iran, Iraq, Ireland, Israel, Italy, Jamaica, Japan, Jordan, Kazakhstan, Kenya, Kiribati, Democratic People''s Republic of Korea (North Korea), Republic of Korea (South Korea), Kuwait, Kyrgyzstan, Lao People''s Democratic Republic (Laos), Latvia, Lebanon, Lesotho, Liberia, Libyan Arab Jamahiriya, Liechtenstein, Lithuania, Luxembourg, China - Macao, The Former Yugoslav Republic of Macedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Marshall Islands, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Federated States of Micronesia, Monaco, Mongolia, Montenegro, Montserrat, Morocco, Mozambique, Myanmar (Burma), Namibia, Nauru, Nepal, Netherlands, New Caledonia, New Zealand, Nicaragua, Niger, Nigeria, Niue, Norfolk Island, Northern Mariana Islands, Norway, Oman, Pakistan, Palau, Panama, Papua New Guinea (PNG), Paraguay, Peru, Philippines, Pitcairn, Poland, Portugal, Puerto Rico, Qatar, Reunion, Romania, Russian Federation, Rwanda, Saint Kitts and Nevis, Saint Helena, Ascension and Tristan da Cunha, Saint Lucia, Saint Pierre and Miquelon, Saint Vincent and the Grenadines, Samoa, San Marino, Sao Tome and Principe, Saudi Arabia, Senegal, Serbia, Seychelles, Sierra Leone, Singapore, Slovakia (Slovak Republic), Slovenia, Sint Maarten, Solomon Islands, Somalia, South Africa, South Georgia and the South Sandwich Islands, South Sudan, Spain, Sri Lanka, Sudan, Suriname, Svalbard and Jan Mayen, Sweden, Switzerland, Syrian Arab Republic, Taiwan, Tajikistan, United Republic of Tanzania, Thailand, The Democratic Republic of the Congo (Zaire), Togo, Tokelau, Tonga, Trinidad and Tobago, Tunisia, Turkey, Turkmenistan, Turks and Caicos Islands, Tuvalu, Uganda, Ukraine, United Arab Emirates (UAE), United Kingdom (UK), United States (USA), United States Minor Outlying Islands, Uruguay, Uzbekistan, Vanuatu, Venezuela, Vietnam, US Virgin Islands, Wallis and Futuna, Western Sahara, Yemen, Zambia, Zimbabwe.',-90.0,90.0,-180.0,180.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2830','World (by country)','World: Afghanistan, Albania, Algeria, American Samoa, Andorra, Angola, Anguilla, Antarctica, Antigua and Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belgium, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, Bonaire, Saint Eustasius and Saba, Bosnia and Herzegovina, Botswana, Bouvet Island, Brazil, British Indian Ocean Territory, British Virgin Islands, Brunei Darussalam, Bulgaria, Burkina Faso, Burundi, Cambodia, Cameroon, Canada, Cape Verde, Cayman Islands, Central African Republic, Chad, Chile, China, Christmas Island, Cocos (Keeling) Islands, Comoros, Congo, Cook Islands, Costa Rica, Côte d''Ivoire (Ivory Coast), Croatia, Cuba, Curacao, Cyprus, Czechia, Denmark, Djibouti, Dominica, Dominican Republic, East Timor, Ecuador, Egypt, El Salvador, Equatorial Guinea, Eritrea, Estonia, Eswatini (Swaziland), Ethiopia, Falkland Islands (Malvinas), Faroe Islands, Fiji, Finland, France, French Guiana, French Polynesia, French Southern Territories, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guam, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Heard Island and McDonald Islands, Holy See (Vatican City State), Honduras, China - Hong Kong, Hungary, Iceland, India, Indonesia, Islamic Republic of Iran, Iraq, Ireland, Israel, Italy, Jamaica, Japan, Jordan, Kazakhstan, Kenya, Kiribati, Democratic People''s Republic of Korea (North Korea), Republic of Korea (South Korea), Kuwait, Kyrgyzstan, Lao People''s Democratic Republic (Laos), Latvia, Lebanon, Lesotho, Liberia, Libyan Arab Jamahiriya, Liechtenstein, Lithuania, Luxembourg, China - Macao, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Marshall Islands, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Federated States of Micronesia, Monaco, Mongolia, Montenegro, Montserrat, Morocco, Mozambique, Myanmar (Burma), Namibia, Nauru, Nepal, Netherlands, New Caledonia, New Zealand, Nicaragua, Niger, Nigeria, Niue, Norfolk Island, North Macedonia, Northern Mariana Islands, Norway, Oman, Pakistan, Palau, Panama, Papua New Guinea (PNG), Paraguay, Peru, Philippines, Pitcairn, Poland, Portugal, Puerto Rico, Qatar, Reunion, Romania, Russian Federation, Rwanda, Saint Kitts and Nevis, Saint Helena, Ascension and Tristan da Cunha, Saint Lucia, Saint Pierre and Miquelon, Saint Vincent and the Grenadines, Samoa, San Marino, Sao Tome and Principe, Saudi Arabia, Senegal, Serbia, Seychelles, Sierra Leone, Singapore, Slovakia (Slovak Republic), Slovenia, Sint Maarten, Solomon Islands, Somalia, South Africa, South Georgia and the South Sandwich Islands, South Sudan, Spain, Sri Lanka, Sudan, Suriname, Svalbard and Jan Mayen, Sweden, Switzerland, Syrian Arab Republic, Taiwan, Tajikistan, United Republic of Tanzania, Thailand, The Democratic Republic of the Congo (Zaire), Togo, Tokelau, Tonga, Trinidad and Tobago, Tunisia, Turkey, Turkmenistan, Turks and Caicos Islands, Tuvalu, Uganda, Ukraine, United Arab Emirates (UAE), United Kingdom (UK), United States (USA), United States Minor Outlying Islands, Uruguay, Uzbekistan, Vanuatu, Venezuela, Vietnam, US Virgin Islands, Wallis and Futuna, Western Sahara, Yemen, Zambia, Zimbabwe.',-90.0,90.0,-180.0,180.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2831','Canada - Atlantic offshore','Canada - offshore Newfoundland and Labrador, New Brunswick and Nova Scotia.',40.04,64.21,-67.75,-47.74,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2832','Canada - British Columbia','Canada - British Columbia.',48.25,60.01,-139.04,-114.08,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2833','Sweden - 12 00','Sweden - communes west of approximately 12°45''E and south of approximately 60°N. See information source for map.',56.74,60.13,10.93,13.11,0);
|
||||
@@ -1836,9 +1836,9 @@ INSERT INTO "area" VALUES('EPSG','2856','Europe - 24°W to 18°W','Europe - betw
|
||||
INSERT INTO "area" VALUES('EPSG','2857','Europe - 18°W to 12°W','Europe - between 18°W and 12°W.',27.6,66.55,-18.0,-12.0,1);
|
||||
INSERT INTO "area" VALUES('EPSG','2858','Europe - 12°W to 6°W','Europe - between 12°W and 6°W.',36.0,62.33,-12.0,-6.0,1);
|
||||
INSERT INTO "area" VALUES('EPSG','2859','Europe - 6°W to 0°W','Europe - between 6°W and 0°W.',34.75,62.33,-6.0,0.0,1);
|
||||
INSERT INTO "area" VALUES('EPSG','2860','Germany - west of 6°E','Europe between 0°E and 6°E: Germany - onshore and offshore west of 6°E.',50.97,55.92,3.34,6.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2861','Germany - 6°E to 12°E','Europe between 0°E and 6°E: Germany - onshore and offshore between 6°E and 12°E, including Mecklenburg-Vorpommern west of 12°E and Schleswig-Holstein.',47.27,55.47,6.0,12.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2862','Germany - east of 12°E','Europe between 0°E and 6°E: Germany - onshore and offshore east of 12°E, including Brandenburg (all state, including that part west of 12°E) and Mecklenburg-Vorpommern east of 12°E.',47.46,55.03,11.57,15.04,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2860','Germany - west of 6°E','Germany - onshore and offshore west of 6°E.',50.97,55.92,3.34,6.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2861','Germany - 6°E to 12°E','Germany - onshore and offshore between 6°E and 12°E, including Mecklenburg-Vorpommern west of 12°E and Schleswig-Holstein.',47.27,55.47,6.0,12.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2862','Germany - east of 12°E','Germany - onshore and offshore east of 12°E, including Brandenburg (all state, including that part west of 12°E) and Mecklenburg-Vorpommern east of 12°E.',47.46,55.03,11.57,15.04,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2863','Europe - 18°E to 24°E','Europe - between 18°E and 24°E.',34.8,75.0,18.0,24.0,1);
|
||||
INSERT INTO "area" VALUES('EPSG','2864','Europe - 24°E to 30°E','Europe - between 24°E and 30°E.',34.8,75.0,24.0,30.0,1);
|
||||
INSERT INTO "area" VALUES('EPSG','2865','Europe - 30°E to 36°E','Europe - between 30°E and 36°E.',34.5,75.0,30.0,36.0,1);
|
||||
@@ -1857,7 +1857,7 @@ INSERT INTO "area" VALUES('EPSG','2877','Slovenia - Slovenska Bistrica','Sloveni
|
||||
INSERT INTO "area" VALUES('EPSG','2878','Slovenia - Slovenske Gorice','Slovenia - Slovenske Gorice (the Slovene Humpback) with the broad region of Ormoz.',46.29,46.76,15.9,16.3,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2879','Germany - offshore North Sea','Germany - offshore North Sea.',53.6,55.92,3.34,8.88,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2880','Antarctica - Australian sector north of 80°S','Antarctica - north of 80°S and between 45°E and 136°E and between 142°E and 160°E - Australian sector north of 80°S.',-80.0,-60.0,45.0,160.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2881','Europe - LCC & LAEA','Europe - European Union (EU) countries and candidates. Europe - onshore and offshore: Albania; Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Cyprus; Czech Republic; Denmark; Estonia; Faroe Islands; Finland; France; Germany; Gibraltar; Greece; Hungary; Iceland; Ireland; Italy; Latvia; Liechtenstein; Lithuania; Luxembourg; Macedonia; Malta; Monaco; Montenegro; Netherlands; Norway including Svalbard and Jan Mayen; Poland; Portugal including Madeira and Azores; Romania; San Marino; Serbia; Slovakia; Slovenia; Spain including Canary Islands; Sweden; Switzerland; Turkey; United Kingdom (UK) including Channel Islands and Isle of Man; Vatican City State.',24.6,84.17,-35.58,44.83,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2881','Europe - LCC & LAEA','Europe - European Union (EU) countries and candidates. Europe - onshore and offshore: Albania; Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Cyprus; Czechia; Denmark; Estonia; Faroe Islands; Finland; France; Germany; Gibraltar; Greece; Hungary; Iceland; Ireland; Italy; Latvia; Liechtenstein; Lithuania; Luxembourg; Malta; Monaco; Montenegro; Netherlands; North Macedonia; Norway including Svalbard and Jan Mayen; Poland; Portugal including Madeira and Azores; Romania; San Marino; Serbia; Slovakia; Slovenia; Spain including Canary Islands; Sweden; Switzerland; Turkey; United Kingdom (UK) including Channel Islands and Isle of Man; Vatican City State.',24.6,84.17,-35.58,44.83,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2882','Italy - Adriatic - North Ancona','Italy - offshore - Adriatic Sea - North Ancona.',43.62,45.73,12.22,13.96,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2883','Italy - Adriatic - South Ancona / North Gargano','Italy - offshore - Adriatic Sea - South Ancona and North Gargano.',41.95,44.04,13.61,16.14,0);
|
||||
INSERT INTO "area" VALUES('EPSG','2884','Italy - Adriatic - South Gargano','Italy - offshore - Adriatic Sea - South Gargano.',40.72,42.28,15.95,18.63,0);
|
||||
@@ -2550,15 +2550,15 @@ INSERT INTO "area" VALUES('EPSG','3570','Slovenia - Pomurje','Slovenia - Pomurje
|
||||
INSERT INTO "area" VALUES('EPSG','3571','Slovenia - Gorenjska and N Primorsko','Slovenia - Gorenjska (Upper Carniola) and northern Primorska.',46.05,46.53,13.38,14.82,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3572','Slovenia - Primorska and Notranjska onshore','Slovenia - onshore Primorska and Notranjska (Inner Carniola).',45.44,46.08,13.47,14.58,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3573','Slovenia - central','Slovenia - central.',45.91,46.31,14.21,15.28,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3574','Europe - onshore - eastern - S-42(58)','Onshore: Bulgaria, Czech Republic, Germany (former DDR), Hungary, Poland and Slovakia. Onshore and offshore: Albania and Romania.',39.63,54.89,9.92,31.41,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3574','Europe - onshore - eastern - S-42(58)','Onshore: Bulgaria, Czechia, Germany (former DDR), Hungary, Poland and Slovakia. Onshore and offshore: Albania and Romania.',39.63,54.89,9.92,31.41,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3575','Germany - East Germany - west of 12°E','Germany - states of former East Germany - west of 12°E.',50.2,54.23,9.92,12.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3576','Europe - 12°E to 18°E onshore and S-42(83) by country','Germany (former DDR) - onshore east of 12°E. Czech Republic, Hungary and Slovakia - west of 18°E.',45.78,54.74,12.0,18.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3577','Europe - 18°E to 24°E onshore and S-42(58) by country','Albania - onshore east of 18°E. Czech Republic, Hungary and Slovakia - east of 18°E. Poland - onshore between 18°E and 24°E. Bulgaria and Romania - onshore west of 24°E.',39.64,54.89,18.0,24.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3578','Europe - 18°E to 24°E onshore and S-42(83) by country','Czech Republic, Hungary and Slovakia - east of 18°E.',45.74,50.06,18.0,22.9,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3576','Europe - 12°E to 18°E onshore and S-42(83) by country','Germany (former DDR) - onshore east of 12°E. Czechia, Hungary and Slovakia - west of 18°E.',45.78,54.74,12.0,18.01,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3577','Europe - 18°E to 24°E onshore and S-42(58) by country','Albania - onshore east of 18°E. Czechia, Hungary and Slovakia - east of 18°E. Poland - onshore between 18°E and 24°E. Bulgaria and Romania - onshore west of 24°E.',39.64,54.89,18.0,24.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3578','Europe - 18°E to 24°E onshore and S-42(83) by country','Czechia, Hungary and Slovakia - east of 18°E.',45.74,50.06,18.0,22.9,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3579','Europe - 24°E to 30°E onshore and S-42(58) by country','Bulgaria, Poland and Romania - onshore east of 24°E.',41.24,50.93,24.0,29.74,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3580','Europe - 13.5°E to 16.5°E onshore and S-42(58) by country','Czech Republic - between 13°30''E and 16°30''E. Germany - states of former East Germany onshore - east of 13°30''E - Brandenburg; Mecklenburg-Vorpommern; Sachsen. Hungary and Poland - onshore west of 16°30''E.',46.54,54.72,13.5,16.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3581','Europe - 16.5°E to 19.5°E onshore and S-42(58) by country','Albania - onshore west of 19°30''E. Czech Republic - east of 16°30''E. Hungary and Poland - onshore between 16°30''E and 19°30''E. Slovakia - west of 19°30''E.',40.14,54.89,16.5,19.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3582','Europe - 16.5°E to 19.5°E onshore and S-42(83) by country','Czech Republic - east of 16°30''E. Hungary - between 16°30''E and 19°30''E. Slovakia - west of 19°30''E.',45.74,50.45,16.5,19.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3580','Europe - 13.5°E to 16.5°E onshore and S-42(58) by country','Czechia - between 13°30''E and 16°30''E. Germany - states of former East Germany onshore - east of 13°30''E - Brandenburg; Mecklenburg-Vorpommern; Sachsen. Hungary and Poland - onshore west of 16°30''E.',46.54,54.72,13.5,16.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3581','Europe - 16.5°E to 19.5°E onshore and S-42(58) by country','Albania - onshore west of 19°30''E. Czechia - east of 16°30''E. Hungary and Poland - onshore between 16°30''E and 19°30''E. Slovakia - west of 19°30''E.',40.14,54.89,16.5,19.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3582','Europe - 16.5°E to 19.5°E onshore and S-42(83) by country','Czechia - east of 16°30''E. Hungary - between 16°30''E and 19°30''E. Slovakia - west of 19°30''E.',45.74,50.45,16.5,19.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3583','Europe - 19.5°E to 22.5°E onshore and S-42(58) by country','Albania - east of 19°30''E. Bulgaria and Romania - west of 22°30''E. Hungary, Poland and Slovakia - between 19°30''E and 22°30''E.',39.64,54.51,19.5,22.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3584','Europe - 19.5°E to 22.5°E onshore and S-42(83) by country','Hungary and Slovakia - between 19°30''E and 22°30''E.',46.1,49.59,19.5,22.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3585','Europe - 22.5°E to 25.5°E onshore and S-42(58) by country','Bulgaria and Romania - between 22°30''E and 25°30''E. Hungary, Poland and Slovakia - east of 22°30''E.',41.24,54.41,22.5,25.5,0);
|
||||
@@ -2570,7 +2570,7 @@ INSERT INTO "area" VALUES('EPSG','3590','Nigeria - 4°N to 5°N, 6°E to 8°E','
|
||||
INSERT INTO "area" VALUES('EPSG','3591','Taiwan - onshore - Penghu','Taiwan, Republic of China - onshore - Penghu (Pescadores) Islands.',23.12,23.82,119.25,119.78,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3592','Antarctica - Darwin Glacier region','Antarctica - Darwin Glacier region.',-81.0,-76.0,145.0,169.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3593','New Zealand - offshore','New Zealand - offshore.',-55.95,-25.88,160.6,-171.2,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3594','Europe - EVRF2007','Europe - onshore - Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Czech Republic; Denmark; Estonia; Finland; France - mainland; Germany; Gibraltar, Hungary; Italy - mainland and Sicily; Latvia; Liechtenstein; Lithuania; Luxembourg; Netherlands; Norway; Poland; Portugal; Romania; San Marino; Slovakia; Slovenia; Spain - mainland; Sweden; Switzerland; United Kingdom (UK) - Great Britain mainland; Vatican City State.',35.95,71.21,-9.56,31.59,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3594','Europe - EVRF2007','Europe - onshore - Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Czechia; Denmark; Estonia; Finland; France - mainland; Germany; Gibraltar, Hungary; Italy - mainland and Sicily; Latvia; Liechtenstein; Lithuania; Luxembourg; Netherlands; Norway; Poland; Portugal - mainland; Romania; San Marino; Slovakia; Slovenia; Spain - mainland; Sweden; Switzerland; United Kingdom (UK) - Great Britain mainland; Vatican City State.',35.95,71.21,-9.56,31.59,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3595','Finland - west of 19.5°E onshore nominal','Finland - nominally onshore west of 19°30''E but may be used in adjacent areas to east if a municipality chooses to use one zone over its whole extent.',60.08,60.34,19.24,19.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3596','Finland - 19.5°E to 20.5°E onshore nominal','Finland - nominally onshore between 19°30''E and 20°30''E but may be used in adjacent areas if a municipality chooses to use one zone over its whole extent.',59.92,60.48,19.5,20.5,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3597','Finland - 20.5°E to 21.5°E onshore nominal','Finland - nominally onshore between 20°30''E and 21°30''E but may be used in adjacent areas if a municipality chooses to use one zone over its whole extent.',59.84,69.33,20.5,21.5,0);
|
||||
@@ -2876,7 +2876,7 @@ INSERT INTO "area" VALUES('EPSG','3896','Brazil - equatorial margin','Brazil - o
|
||||
INSERT INTO "area" VALUES('EPSG','3897','France - offshore Mediterranean','France - offshore Mediterranean.',41.15,43.74,3.04,10.38,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3898','Ukraine - 24°E to 30°E','Ukraine - between 24°E and 30°E, onshore and offshore.',45.1,51.96,24.0,30.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3899','Europe - South Permian basin','Europe - South Permian basin.',50.5,56.0,-1.67,22.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3900','Europe - onshore - eastern - S-42(83)','Onshore Bulgaria, Czech Republic, Germany (former DDR), Hungary and Slovakia.',41.24,54.74,9.92,28.68,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3900','Europe - onshore - eastern - S-42(83)','Onshore Bulgaria, Czechia, Germany (former DDR), Hungary and Slovakia.',41.24,54.74,9.92,28.68,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3901','Germany - onshore west of 6°E','Germany - onshore west of 6°E.',50.97,51.83,5.87,6.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3902','Reunion','Reunion - onshore and offshore.',-24.72,-18.28,51.83,58.24,0);
|
||||
INSERT INTO "area" VALUES('EPSG','3903','Ukraine - 30°E to 36°E','Ukraine - between 30°E and 36°E, onshore and offshore.',43.18,52.38,30.0,36.0,0);
|
||||
@@ -3431,8 +3431,8 @@ INSERT INTO "area" VALUES('EPSG','4451','Australia - Western Australia - Karrath
|
||||
INSERT INTO "area" VALUES('EPSG','4452','Australia - Western Australia - Kununurra','Australia - Western Australia - Kununurra area onshore below 200m AHD.',-16.75,-14.75,128.5,129.0,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4453','Australia - Western Australia - Lancelin','Australia - Western Australia - Lancelin area onshore below 200m AHD.',-31.49,-30.71,115.15,115.62,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4454','Greenland - 58°N to 85°N','Greenland - onshore and offshore between 58°N and 85°N and west of 7°W.',58.0,85.01,-75.0,-6.99,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4455','Europe - Upper Austria, Salzburg and Bohemia','Austria - Upper Austria and Salzburg provinces. Czech Republic - Bohemia.',46.93,51.06,12.07,16.83,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4456','Europe - Lower Austria and Moravia','Austria - Lower Austria. Czech Republic - Moravia and Czech Silesia.',47.42,50.45,14.41,18.86,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4455','Europe - Upper Austria, Salzburg and Bohemia','Austria - Upper Austria and Salzburg provinces. Czechia - Bohemia.',46.93,51.06,12.07,16.83,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4456','Europe - Lower Austria and Moravia','Austria - Lower Austria. Czechia - Moravia and Czech Silesia.',47.42,50.45,14.41,18.86,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4457','Australia - Western Australia - Margaret River','Australia - Western Australia - Margaret River area onshore below 200m AHD.',-34.42,-33.51,114.96,115.24,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4458','USA - Oregon - Riley-Lakeview','United States (USA) - Oregon - Riley-Lakeview area.',41.88,43.45,-120.97,-119.15,0);
|
||||
INSERT INTO "area" VALUES('EPSG','4459','USA - Oregon - Burns-Harper','United States (USA) - Oregon - Burns-Harper area.',43.49,44.19,-118.61,-117.49,0);
|
||||
|
||||
@@ -19,6 +19,25 @@ DELETE FROM "supersession" WHERE superseded_table_name = 'grid_transformation' A
|
||||
replacement_code = '8885' AND
|
||||
source = 'EPSG';
|
||||
|
||||
-- ('EPSG','7001','ETRS89 to NAP height (1)') lacks an interpolationCRS with Amersfoort / EPSG:4289
|
||||
-- See https://salsa.debian.org/debian-gis-team/proj-rdnap/blob/debian/2008-8/Use%20of%20RDTRANS2008%20and%20NAPTRANS2008.pdf
|
||||
-- "The naptrans2008 VDatum-grid is referenced to the Bessel-1841 ellipsoid"
|
||||
CREATE TABLE dummy(foo);
|
||||
CREATE TRIGGER check_grid_transformation_epsg_7001
|
||||
BEFORE INSERT ON dummy
|
||||
FOR EACH ROW BEGIN
|
||||
SELECT RAISE(ABORT, 'grid_transformation EPSG:7001 entry is not ETRS89 to NAP height (1)')
|
||||
WHERE NOT EXISTS(SELECT 1 FROM grid_transformation WHERE auth_name = 'EPSG' AND code = '7001' AND name = 'ETRS89 to NAP height (1)');
|
||||
SELECT RAISE(ABORT, 'grid_transformation EPSG:7001 entry has already an interpolationCRS')
|
||||
WHERE EXISTS(SELECT 1 FROM grid_transformation WHERE auth_name = 'EPSG' AND code = '7001' AND interpolation_crs_auth_name IS NOT NULL);
|
||||
END;
|
||||
INSERT INTO dummy DEFAULT VALUES;
|
||||
DROP TRIGGER check_grid_transformation_epsg_7001;
|
||||
DROP TABLE dummy;
|
||||
UPDATE grid_transformation SET interpolation_crs_auth_name = 'EPSG',
|
||||
interpolation_crs_code = '4289'
|
||||
WHERE auth_name = 'EPSG' AND code = '7001';
|
||||
|
||||
-- Define the allowed authorities, and their precedence, when researching a
|
||||
-- coordinate operation
|
||||
|
||||
|
||||
@@ -738,7 +738,7 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','6882','Bekaa Valley 1920',NULL,NULL,'g
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','6883','Bioko',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1136','EPSG','4220',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','6892','South East Island 1943',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1138','EPSG','4183',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','6894','Gambia',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1139','EPSG','3250',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','6934','IGS08',NULL,NULL,'geocentric','EPSG','6500','EPSG','1141','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','6934','IGS08',NULL,NULL,'geocentric','EPSG','6500','EPSG','1141','EPSG','2830',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','6978','IGD05',NULL,NULL,'geocentric','EPSG','6500','EPSG','1143','EPSG','1126',NULL,1);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','6979','IGD05',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1143','EPSG','1126',NULL,1);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','6980','IGD05',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1143','EPSG','1126',NULL,1);
|
||||
@@ -904,3 +904,35 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','8902','RGWF96 (lon-lat)',NULL,NULL,'ge
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8905','CR-SIRGAS',NULL,NULL,'geocentric','EPSG','6500','EPSG','1225','EPSG','1074',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8906','CR-SIRGAS',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1225','EPSG','1074',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8907','CR-SIRGAS',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1225','EPSG','1074',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8988','ITRF88',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6647','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8989','ITRF89',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6648','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8990','ITRF90',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6649','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8991','ITRF91',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6650','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8992','ITRF92',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6651','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8993','ITRF93',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6652','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8994','ITRF94',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6653','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8995','ITRF96',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6654','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8996','ITRF97',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6655','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8997','ITRF2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6656','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8998','ITRF2005',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6896','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','8999','ITRF2008',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1061','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9000','ITRF2014',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1165','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9001','IGS97',NULL,NULL,'geocentric','EPSG','6500','EPSG','1244','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9002','IGS97',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1244','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9003','IGS97',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1244','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9004','IGS00',NULL,NULL,'geocentric','EPSG','6500','EPSG','1245','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9005','IGS00',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1245','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9006','IGS00',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1245','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9007','IGb00',NULL,NULL,'geocentric','EPSG','6500','EPSG','1246','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9008','IGb00',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1246','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9009','IGb00',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1246','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9010','IGS05',NULL,NULL,'geocentric','EPSG','6500','EPSG','1247','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9011','IGS05',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1247','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9012','IGS05',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1247','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9013','IGS08',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1141','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9014','IGS08',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1141','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9015','IGb08',NULL,NULL,'geocentric','EPSG','6500','EPSG','1248','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9016','IGb08',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1248','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9017','IGb08',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1248','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9018','IGS14',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1191','EPSG','1262',NULL,0);
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','9019','IGS14',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1191','EPSG','1262',NULL,0);
|
||||
|
||||
@@ -118,6 +118,11 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','1214','Serbian Spatial Reference Sys
|
||||
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','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','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','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);
|
||||
|
||||
@@ -798,3 +798,58 @@ INSERT INTO grid_alternatives(original_grid_name,
|
||||
0,
|
||||
'proj-datumgrid-oceania',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
-- Netherlands / RDNAP (non-free grids)
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
proj_method,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('naptrans2008.gtx',
|
||||
'naptrans2008.gtx',
|
||||
'GTX',
|
||||
'vgridshift',
|
||||
0,
|
||||
NULL, -- package name
|
||||
'https://salsa.debian.org/debian-gis-team/proj-rdnap/raw/upstream/2008/naptrans2008.gtx',
|
||||
1, -- direct download
|
||||
0, -- non-freely licensed. See https://salsa.debian.org/debian-gis-team/proj-rdnap/raw/master/debian/copyright
|
||||
NULL);
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
proj_method,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('rdtrans2008.gsb',
|
||||
'rdtrans2008.gsb',
|
||||
'NTv2',
|
||||
'hgridshift',
|
||||
0,
|
||||
NULL, -- package name
|
||||
'https://salsa.debian.org/debian-gis-team/proj-rdnap/raw/upstream/2008/rdtrans2008.gsb',
|
||||
1, -- direct download
|
||||
0, -- non-freely licensed. See https://salsa.debian.org/debian-gis-team/proj-rdnap/raw/master/debian/copyright
|
||||
NULL);
|
||||
|
||||
-- Belgium
|
||||
|
||||
INSERT INTO grid_alternatives(original_grid_name,
|
||||
proj_grid_name,
|
||||
proj_grid_format,
|
||||
proj_method,
|
||||
inverse_direction,
|
||||
package_name,
|
||||
url, direct_download, open_license, directory)
|
||||
VALUES ('bd72lb72_etrs89lb08.gsb',
|
||||
'bd72lb72_etrs89lb08.gsb',
|
||||
'NTv2',
|
||||
'hgridshift',
|
||||
0,
|
||||
'proj-datumgrid-europe',
|
||||
NULL, NULL, NULL, NULL);
|
||||
|
||||
@@ -256,8 +256,8 @@ INSERT INTO "grid_transformation" VALUES('EPSG','8364','S-JTSK [JTSK03] to S-JTS
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8369','BD72 to ETRS89 (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4313','EPSG','4258','EPSG','1347',0.01,'EPSG','8656','Latitude and longitude difference file','bd72lb72_etrs89lb08.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Bel 0.01m',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8371','RGF93 to NGF IGN69 height (2)',NULL,NULL,'EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','4965','EPSG','5720','EPSG','1326',0.02,'EPSG','8666','Geoid (height correction) model file','RAF09.mnt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Fra 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8372','RGF93 to IGN78 Corsica height (2)',NULL,NULL,'EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','4965','EPSG','5721','EPSG','1327',0.05,'EPSG','8666','Geoid (height correction) model file','RAC09.mnt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Fra Cor 09',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8444','GDA94 to GDA2020 (4)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4283','EPSG','7844','EPSG','4169',0.05,'EPSG','8656','Latitude and longitude difference file','XMAS_C_V1.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ICSM-Cxr CI Conf',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8445','GDA94 to GDA2020 (5)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4283','EPSG','7844','EPSG','1069',0.05,'EPSG','8656','Latitude and longitude difference file','COCOS_C_V1.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ICSM-Cki Conf',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8444','GDA94 to GDA2020 (4)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4283','EPSG','7844','EPSG','4169',0.05,'EPSG','8656','Latitude and longitude difference file','GDA94_GDA2020_conformal_christmas_island.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ICSM-Cxr Conf',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8445','GDA94 to GDA2020 (5)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4283','EPSG','7844','EPSG','1069',0.05,'EPSG','8656','Latitude and longitude difference file','GDA94_GDA2020_conformal_cocos_island.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ICSM-Cck Conf',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8446','GDA94 to GDA2020 (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4283','EPSG','7844','EPSG','2575',0.05,'EPSG','8656','Latitude and longitude difference file','GDA94_GDA2020_conformal.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ICSM-Aus NTv2 Conf',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8447','GDA94 to GDA2020 (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4283','EPSG','7844','EPSG','2575',0.05,'EPSG','8656','Latitude and longitude difference file','GDA94_GDA2020_conformal_and_distortion.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ICSM-Aus Conf and Dist',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','8451','GDA2020 to AHD height (1)',NULL,NULL,'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);
|
||||
|
||||
@@ -1019,7 +1019,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','8365','ETRS89 to S-JTSK [JTS
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8366','ITRF2014 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7789','EPSG','8401','EPSG','1298',0.0,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',0.085,0.531,-0.77,'EPSG','1032',0.0,'EPSG','1030',1989.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'EUREF-Eur',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8367','S-JTSK [JTSK03] to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','8351','EPSG','4258','EPSG','1211',0.001,485.021,169.465,483.839,'EPSG','9001',-7.786342,-4.397554,-4.102655,'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,'UGKK-Svk',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8368','S-JTSK [JTSK03] to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','8351','EPSG','4326','EPSG','1211',1.0,485.021,169.465,483.839,'EPSG','9001',-7.786342,-4.397554,-4.102655,'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,'UGKK-Svk',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8393','Camacupa to WGS 84 (11)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','4469',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,'IGCA-Ago',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8393','Camacupa to WGS 84 (11)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','4469',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,'IGCA-Ago',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8405','ITRF2014 to ETRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7789','EPSG','7930','EPSG','1298',0.0,54.7,52.2,-74.1,'EPSG','1025',1.701,10.29,-16.632,'EPSG','1031',2.12,'EPSG','1028',0.1,0.1,-1.9,'EPSG','1027',0.081,0.49,-0.792,'EPSG','1032',0.11,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'EUREF-Eur 2000',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8407','ITRF2014 to ETRF2014 (2)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7789','EPSG','7930','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',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8409','ITRF2008 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','5332','EPSG','7789','EPSG','1298',0.0,-1.6,-1.9,-2.4,'EPSG','1025',1.785,11.151,-16.17,'EPSG','1031',0.02,'EPSG','1028',0.0,0.0,0.1,'EPSG','1027',0.085,0.531,-0.77,'EPSG','1032',-0.03,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'EUREF-Eur 2014',1);
|
||||
@@ -1089,8 +1089,31 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','8892','LKS94 to ETRS89 (1)',
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8893','SRB_ETRS89 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','8685','EPSG','4258','EPSG','3534',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-Sbr',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8894','SRB_ETRS89 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','8685','EPSG','4326','EPSG','3534',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-Srb',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8895','CHTRF95 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4151','EPSG','4258','EPSG','1286',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-Che',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8913','CR05 to CR-SIRGAS (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','5364','EPSG','8906','EPSG','1074',0.5,-0.16959,0.35312,0.51846,'EPSG','9001',-0.03385,0.16325,-0.03446,'EPSG','9104',0.03693,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Cri 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8914','CR05 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','5364','EPSG','4326','EPSG','1074',1.0,-0.16959,0.35312,0.51846,'EPSG','9001',-0.03385,0.16325,-0.03446,'EPSG','9104',0.03693,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Cri 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8913','CR05 to CR-SIRGAS (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','5364','EPSG','8906','EPSG','1074',0.5,-0.16959,0.35312,0.51846,'EPSG','9001',-0.03385,0.16325,-0.03446,'EPSG','9104',0.03693,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Cri 2014',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8914','CR05 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','5364','EPSG','4326','EPSG','1074',1.0,-0.16959,0.35312,0.51846,'EPSG','9001',-0.03385,0.16325,-0.03446,'EPSG','9104',0.03693,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Cri 2014',1);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8968','CR05 to CR-SIRGAS (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','5365','EPSG','8907','EPSG','1074',0.5,-0.16959,0.35312,0.51846,'EPSG','9001',-0.03385,0.16325,-0.03446,'EPSG','9104',0.03693,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Cri 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8969','CR05 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','5365','EPSG','4326','EPSG','1074',1.0,-0.16959,0.35312,0.51846,'EPSG','9001',-0.03385,0.16325,-0.03446,'EPSG','9104',0.03693,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGN-Cri 2014',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8970','ITRF2014 to NAD83(2011) (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','7789','EPSG','6317','EPSG','1511',0.0,1.0053,-1.9092,-0.5416,'EPSG','9001',26.7814,-0.4203,10.9321,'EPSG','1031',0.37,'EPSG','1028',0.0008,-0.0006,-0.0014,'EPSG','1042',0.0667,-0.7574,-0.0513,'EPSG','1032',-0.07,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IOGP-Usa CONUS-AK PRVI',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','8971','NAD83 to NAD83(2011) (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4269','EPSG','6318','EPSG','3357',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-Usa GoM',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9020','ITRF88 to ITRF89 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4910','EPSG','4911','EPSG','1262',0.01,0.5,3.6,2.4,'EPSG','1033',-0.1,0.0,0.0,'EPSG','1031',-3.0,'EPSG','1028',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','9021','ITRF89 to ITRF90 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4911','EPSG','4912','EPSG','1262',0.01,-0.5,-2.4,3.8,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',-3.0,'EPSG','1028',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','9022','ITRF90 to ITRF91 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4912','EPSG','4913','EPSG','1262',0.007,-0.1,0.4,1.6,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',-0.3,'EPSG','1028',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','9023','ITRF91 to ITRF92 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4913','EPSG','4914','EPSG','1262',0.005,-1.1,-1.4,0.6,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',-1.4,'EPSG','1028',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','9024','ITRF92 to ITRF93 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4914','EPSG','4915','EPSG','1262',0.003,-0.2,-0.7,-0.7,'EPSG','1033',-0.39,0.8,-0.96,'EPSG','1031',1.2,'EPSG','1028',-0.29,0.04,0.08,'EPSG','1034',-0.11,-0.19,0.05,'EPSG','1032',0.0,'EPSG','1030',1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IERS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9025','ITRF93 to ITRF94 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4915','EPSG','4916','EPSG','1262',0.01,-0.6,0.5,1.5,'EPSG','1033',0.39,-0.8,0.96,'EPSG','1031',-0.4,'EPSG','1028',0.29,-0.04,-0.08,'EPSG','1034',0.11,0.19,-0.05,'EPSG','1032',0.0,'EPSG','1030',1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IERS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9026','ITRF94 to ITRF96 (1)',NULL,NULL,'EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','4916','EPSG','4917','EPSG','1262',0.0,0.0,0.0,0.0,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IERS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9027','ITRF96 to ITRF97 (1)',NULL,NULL,'EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','4917','EPSG','4918','EPSG','1262',0.0,0.0,0.0,0.0,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IERS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9028','ITRF97 to IGS97 (1)',NULL,NULL,'EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','4918','EPSG','9001','EPSG','1262',0.0,0.0,0.0,0.0,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IGS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9029','ITRF2000 to IGS00 (1)',NULL,NULL,'EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','4919','EPSG','9004','EPSG','1262',0.0,0.0,0.0,0.0,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1998.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IGS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9030','ITRF2005 to IGS05 (1)',NULL,NULL,'EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','4896','EPSG','9010','EPSG','1262',0.0,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.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IGS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9031','ITRF2008 to IGS08 (1)',NULL,NULL,'EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','5332','EPSG','6934','EPSG','1262',0.0,0.0,0.0,0.0,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2005.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IGS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9032','ITRF2014 to IGS14 (1)',NULL,NULL,'EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','7789','EPSG','8227','EPSG','1262',0.0,0.0,0.0,0.0,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IGS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9033','IGS97 to IGS00 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','9001','EPSG','9004','EPSG','1262',0.007,-6.0,-5.6,20.1,'EPSG','1025',-0.04,0.001,0.043,'EPSG','1031',-1.403,'EPSG','1028',0.4,0.8,1.5,'EPSG','1027',0.004,-0.001,-0.003,'EPSG','1032',-0.012,'EPSG','1030',1998.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IGS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9034','IGS00 to IGb00 (1)',NULL,NULL,'EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','9004','EPSG','9007','EPSG','1262',0.0,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,1998.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IGS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9035','IGb00 to IGS05 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','9007','EPSG','9010','EPSG','1262',0.001,0.0,1.7,5.3,'EPSG','1025',0.0224,-0.0341,0.0099,'EPSG','1031',-0.8473,'EPSG','1028',0.4,-0.7,1.8,'EPSG','1027',-0.0033,0.0001,0.0161,'EPSG','1032',-0.1748,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IGS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9036','IGS05 to IGS08 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','9010','EPSG','6934','EPSG','1262',0.001,1.5,0.0,5.8,'EPSG','1025',-0.012,0.014,0.014,'EPSG','1031',-1.04,'EPSG','1028',-0.1,0.0,-0.1,'EPSG','1027',-0.002,-0.003,0.001,'EPSG','1032',0.01,'EPSG','1030',2005.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IGS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9037','IGS08 to IGb08 (1)',NULL,NULL,'EPSG','1065','Time-specific Position Vector transform (geocen)','EPSG','6934','EPSG','9015','EPSG','1262',0.0,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,2005.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IGS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','9038','IGb08 to IGS14 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','9015','EPSG','8227','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,'IGS-Wld',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10085','Trinidad 1903 to WGS 84 (2)',NULL,NULL,'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)',NULL,NULL,'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)',NULL,NULL,'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);
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v9.6.1');
|
||||
INSERT INTO "metadata" VALUES('EPSG.DATE', '2019-03-25');
|
||||
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v9.6.3');
|
||||
INSERT INTO "metadata" VALUES('EPSG.DATE', '2019-05-25');
|
||||
|
||||
@@ -1034,9 +1034,9 @@ INSERT INTO "projected_crs" VALUES('EPSG','3039','ETRS89 / TM27',NULL,NULL,'EPSG
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','3040','ETRS89 / UTM zone 28N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16028','EPSG','2122',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','3041','ETRS89 / UTM zone 29N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16029','EPSG','2123',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','3042','ETRS89 / UTM zone 30N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16030','EPSG','2124',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','3043','ETRS89 / UTM zone 31N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16031','EPSG','2860',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','3044','ETRS89 / UTM zone 32N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16032','EPSG','2861',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','3045','ETRS89 / UTM zone 33N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16033','EPSG','2862',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','3043','ETRS89 / UTM zone 31N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16031','EPSG','2125',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','3044','ETRS89 / UTM zone 32N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16032','EPSG','2126',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','3045','ETRS89 / UTM zone 33N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16033','EPSG','2127',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','3046','ETRS89 / UTM zone 34N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16034','EPSG','2128',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','3047','ETRS89 / UTM zone 35N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16035','EPSG','2129',NULL,0);
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','3048','ETRS89 / UTM zone 36N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16036','EPSG','2130',NULL,0);
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
FROM ubuntu:18.04
|
||||
|
||||
RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
python-dev python-pip g++ doxygen dvipng latexmk \
|
||||
python3-dev python3-pip g++ doxygen dvipng latexmk \
|
||||
cmake libjpeg8-dev zlib1g-dev texlive-latex-base \
|
||||
texlive-latex-extra git \
|
||||
graphviz python-matplotlib
|
||||
graphviz python3-matplotlib
|
||||
|
||||
RUN pip install Sphinx breathe \
|
||||
RUN pip3 install Sphinx breathe \
|
||||
sphinx_bootstrap_theme awscli sphinxcontrib-bibtex \
|
||||
sphinx_rtd_theme recommonmark sphinx-markdown-tables
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
name: proj
|
||||
channels:
|
||||
- conda-forge
|
||||
dependencies:
|
||||
- descartes
|
||||
- doxygen <= 1.8.14
|
||||
- geojson
|
||||
- matplotlib
|
||||
- shapely < 1.8
|
||||
- pip
|
||||
- pip:
|
||||
- breathe < 4.15
|
||||
- Jinja2 < 3.1
|
||||
- pybtex
|
||||
- sphinx < 3
|
||||
- sphinx-rtd-theme < 1.0
|
||||
- sphinxcontrib-bibtex
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
@@ -1,86 +0,0 @@
|
||||
name: proj
|
||||
channels:
|
||||
- defaults
|
||||
dependencies:
|
||||
- blas=1.0=mkl
|
||||
- bzip2=1.0.6=h1de35cc_5
|
||||
- ca-certificates=2018.03.07=0
|
||||
- cairo=1.14.12=hc4e6be7_4
|
||||
- certifi=2018.8.24=py37_1
|
||||
- click=6.7=py37_0
|
||||
- click-plugins=1.0.3=py37_1
|
||||
- cligj=0.4.0=py37_1
|
||||
- curl=7.61.0=ha441bb4_0
|
||||
- cycler=0.10.0=py37_0
|
||||
- descartes=1.1.0=py37_0
|
||||
- expat=2.2.6=h0a44026_0
|
||||
- fiona=1.7.12=py37h0dff353_0
|
||||
- fontconfig=2.13.0=h5d5b041_1
|
||||
- freetype=2.9.1=hb4e5f40_0
|
||||
- freexl=1.0.5=h1de35cc_0
|
||||
- gdal=2.2.4=py37h6440ff4_1
|
||||
- geos=3.6.2=h5470d99_2
|
||||
- gettext=0.19.8.1=h15daf44_3
|
||||
- giflib=5.1.4=h1de35cc_1
|
||||
- glib=2.56.2=hd9629dc_0
|
||||
- hdf4=4.2.13=h39711bb_2
|
||||
- hdf5=1.10.2=hfa1e0ec_1
|
||||
- icu=58.2=h4b95b61_1
|
||||
- intel-openmp=2019.0=118
|
||||
- jpeg=9b=he5867d9_2
|
||||
- json-c=0.13.1=h3efe00b_0
|
||||
- kealib=1.4.7=h40e48e4_6
|
||||
- kiwisolver=1.0.1=py37h0a44026_0
|
||||
- krb5=1.16.1=h24a3359_6
|
||||
- libboost=1.67.0=hebc422b_4
|
||||
- libcurl=7.61.0=hf30b1f0_0
|
||||
- libcxx=4.0.1=h579ed51_0
|
||||
- libcxxabi=4.0.1=hebd6815_0
|
||||
- libdap4=3.19.1=h3d3e54a_0
|
||||
- libedit=3.1.20170329=hb402a30_2
|
||||
- libffi=3.2.1=h475c297_4
|
||||
- libgdal=2.2.4=h7b1ea53_1
|
||||
- libgfortran=3.0.1=h93005f0_2
|
||||
- libiconv=1.15=hdd342a3_7
|
||||
- libkml=1.3.0=hbe12b63_4
|
||||
- libnetcdf=4.6.1=h4e6abe9_1
|
||||
- libpng=1.6.34=he12f830_0
|
||||
- libpq=10.5=hf30b1f0_0
|
||||
- libspatialite=4.3.0a=ha12ebda_19
|
||||
- libssh2=1.8.0=h322a93b_4
|
||||
- libtiff=4.0.9=hcb84e12_2
|
||||
- libuuid=1.0.3=h6bb4b03_2
|
||||
- libxml2=2.9.8=hab757c2_1
|
||||
- matplotlib=2.2.3=py37h54f8f79_0
|
||||
- mkl=2019.0=118
|
||||
- mkl_fft=1.0.4=py37h5d10147_1
|
||||
- mkl_random=1.0.1=py37h5d10147_1
|
||||
- munch=2.3.2=py37_0
|
||||
- ncurses=6.1=h0a44026_0
|
||||
- numpy=1.15.1=py37h6a91979_0
|
||||
- numpy-base=1.15.1=py37h8a80b8c_0
|
||||
- openjpeg=2.3.0=hb95cd4c_1
|
||||
- openssl=1.0.2p=h1de35cc_0
|
||||
- pcre=8.42=h378b8a2_0
|
||||
- pip=10.0.1=py37_0
|
||||
- pixman=0.34.0=hca0a616_3
|
||||
- poppler=0.65.0=ha097c24_1
|
||||
- poppler-data=0.4.9=0
|
||||
- proj4=5.0.1=h1de35cc_0
|
||||
- pyparsing=2.2.0=py37_1
|
||||
- python=3.7.0=hc167b69_0
|
||||
- python-dateutil=2.7.3=py37_0
|
||||
- pytz=2018.5=py37_0
|
||||
- readline=7.0=h1de35cc_5
|
||||
- setuptools=40.2.0=py37_0
|
||||
- shapely=1.6.4=py37h20de77a_0
|
||||
- six=1.11.0=py37_1
|
||||
- sqlite=3.24.0=ha441bb4_0
|
||||
- tk=8.6.8=ha441bb4_0
|
||||
- tornado=5.1=py37h1de35cc_0
|
||||
- wheel=0.31.1=py37_0
|
||||
- xerces-c=3.2.1=h44e365a_0
|
||||
- xz=5.2.4=h1de35cc_4
|
||||
- zlib=1.2.11=hf3cbc9b_2
|
||||
prefix: /usr/local/miniconda3/envs/proj
|
||||
|
||||
Regular → Executable
+110
-58
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
'''
|
||||
Plot map data in different projections supported by PROJ.4
|
||||
Plot map data in different projections supported by PROJ.
|
||||
|
||||
Call with:
|
||||
|
||||
@@ -41,28 +42,31 @@ or "line". The rest of the inputs are fairly free form.
|
||||
Change PROJ to path on your local system before running the script.
|
||||
'''
|
||||
|
||||
from __future__ import print_function
|
||||
from __future__ import division
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import os.path
|
||||
import shutil
|
||||
import sys
|
||||
import json
|
||||
import subprocess
|
||||
import functools
|
||||
from pathlib import Path
|
||||
|
||||
import geojson
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib.patches import Polygon
|
||||
import fiona
|
||||
from shapely.geometry import Polygon
|
||||
from shapely.geometry import MultiPolygon
|
||||
from shapely.geometry import MultiPolygon, Polygon, box as Box
|
||||
from shapely.geometry import shape
|
||||
from shapely.ops import transform
|
||||
from descartes import PolygonPatch
|
||||
|
||||
PROJ = '../../src/proj'
|
||||
PROJ_LIB = '../../data'
|
||||
PROJ_COMMAND = os.environ.get('PROJ_EXE', '../../src/proj')
|
||||
if not os.path.exists(PROJ_COMMAND):
|
||||
PROJ = shutil.which('proj')
|
||||
if PROJ is None:
|
||||
raise ValueError("specify PROJ_EXE or modify PATH to find proj")
|
||||
else:
|
||||
PROJ = PROJ_COMMAND
|
||||
PROJ_LIB = os.environ.get('PROJ_LIB', '../../data')
|
||||
|
||||
LINE_LOW = 'data/coastline.geojson'
|
||||
LINE_MED = 'data/coastline50.geojson'
|
||||
@@ -160,9 +164,9 @@ def project(coordinates, proj_string, in_radians=False):
|
||||
try:
|
||||
proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
env={'PROJ_LIB': os.path.abspath(PROJ_LIB)})
|
||||
except FileNotFoundError:
|
||||
print("'proj' binary not found, please update PROJ constant in plot.py "
|
||||
"to point to your local 'proj' binary")
|
||||
except FileNotFoundError as e:
|
||||
print("'proj' binary not found, set the PROJ_EXE environment variable "
|
||||
"to point to your local 'proj' binary --%s--" % e)
|
||||
exit(1)
|
||||
|
||||
stdout, _ = proc.communicate(coordinates.tobytes(order='C'))
|
||||
@@ -223,7 +227,10 @@ def resample_polygon(polygon):
|
||||
'''
|
||||
Use interp_coords() to resample (multi)polygons.
|
||||
'''
|
||||
xy = polygon.exterior.coords.xy
|
||||
try:
|
||||
xy = polygon.exterior.coords.xy
|
||||
except AttributeError: #no xy's
|
||||
return polygon
|
||||
ext = interp_coords(xy, 2)
|
||||
# interiors
|
||||
rings = []
|
||||
@@ -232,27 +239,46 @@ def resample_polygon(polygon):
|
||||
return Polygon(ext, rings)
|
||||
|
||||
|
||||
def plot_with_interruptions(axes, x, y, delta_cut=1e100, **kwargs):
|
||||
"""
|
||||
Plot x/y with proper splitting for interrupted projections.
|
||||
"""
|
||||
_x = np.atleast_1d(x)
|
||||
_y = np.atleast_1d(y)
|
||||
|
||||
dx = np.nan_to_num(_x[1: ]) - np.nan_to_num(_x[0: -1])
|
||||
dy = np.nan_to_num(_y[1: ]) - np.nan_to_num(_y[0: -1])
|
||||
split, = ((np.abs(dx) > delta_cut) | (np.abs(dy) > delta_cut)).nonzero()
|
||||
split = np.append(split, _x.size - 1)
|
||||
split += 1
|
||||
|
||||
last_part = 0
|
||||
for part in split:
|
||||
axes.plot(x[last_part: part],
|
||||
y[last_part: part],
|
||||
**kwargs)
|
||||
last_part = part
|
||||
|
||||
|
||||
def plotproj(plotdef, data, outdir):
|
||||
'''
|
||||
Plot map.
|
||||
'''
|
||||
axes = plt.axes()
|
||||
|
||||
bounds = (plotdef['lonmin'], plotdef['latmin'], plotdef['lonmax'], plotdef['latmax'])
|
||||
for geom in data.filter(bbox=bounds):
|
||||
temp_pol = shape(geom['geometry'])
|
||||
box = Box(
|
||||
plotdef['lonmin'], plotdef['latmin'],
|
||||
plotdef['lonmax'], plotdef['latmax'])
|
||||
for feat in data["features"]:
|
||||
geom = shape(feat["geometry"])
|
||||
if not geom.intersects(box):
|
||||
continue
|
||||
|
||||
box = Polygon([
|
||||
(plotdef['lonmin'], plotdef['latmin']),
|
||||
(plotdef['lonmin'], plotdef['latmax']),
|
||||
(plotdef['lonmax'], plotdef['latmax']),
|
||||
(plotdef['lonmax'], plotdef['latmin']),
|
||||
])
|
||||
temp_pol = temp_pol.intersection(box)
|
||||
temp_pol = geom.intersection(box)
|
||||
|
||||
if plotdef['type'] == 'poly':
|
||||
if isinstance(temp_pol, MultiPolygon):
|
||||
polys = [resample_polygon(polygon) for polygon in temp_pol]
|
||||
polys = [resample_polygon(polygon) for polygon in temp_pol.geoms]
|
||||
pol = MultiPolygon(polys)
|
||||
else:
|
||||
pol = resample_polygon(temp_pol)
|
||||
@@ -263,11 +289,15 @@ def plotproj(plotdef, data, outdir):
|
||||
proj_geom = transform(trans, pol)
|
||||
|
||||
if plotdef['type'] == 'poly':
|
||||
patch = PolygonPatch(proj_geom, fc=COLOR_LAND, zorder=0)
|
||||
axes.add_patch(patch)
|
||||
try:
|
||||
patch = PolygonPatch(proj_geom, fc=COLOR_LAND, zorder=0)
|
||||
axes.add_patch(patch)
|
||||
except TypeError:
|
||||
pass
|
||||
else:
|
||||
x, y = proj_geom.xy
|
||||
axes.plot(x, y, color=COLOR_COAST, linewidth=0.5)
|
||||
plot_with_interruptions(axes, x, y, color=COLOR_COAST, linewidth=0.5,
|
||||
delta_cut=plotdef.get('delta_cut', 1e100))
|
||||
|
||||
# Plot frame
|
||||
frame = [
|
||||
@@ -278,7 +308,8 @@ def plotproj(plotdef, data, outdir):
|
||||
line = project(line, plotdef['projstring'])
|
||||
x = line[:, 0]
|
||||
y = line[:, 1]
|
||||
axes.plot(x, y, '-k')
|
||||
plot_with_interruptions(axes, x, y, color='black', linestyle='-',
|
||||
delta_cut=plotdef.get('delta_cut', 1e6))
|
||||
|
||||
graticule = build_graticule(
|
||||
plotdef['lonmin'],
|
||||
@@ -292,7 +323,28 @@ def plotproj(plotdef, data, outdir):
|
||||
feature = project(feature, plotdef['projstring'])
|
||||
x = feature[:, 0]
|
||||
y = feature[:, 1]
|
||||
axes.plot(x, y, color=COLOR_GRAT, linewidth=0.4)
|
||||
plot_with_interruptions(axes, x, y, color=COLOR_GRAT, linewidth=0.4,
|
||||
delta_cut=plotdef.get('delta_cut', 1e6))
|
||||
|
||||
# Plot interrupted boundaries if necessary
|
||||
interrupted_lines = []
|
||||
if 'top_interrupted_lons' in plotdef:
|
||||
for lon in plotdef['top_interrupted_lons']:
|
||||
for delta in [-0.0001, 0.0001]:
|
||||
merid = meridian(lon + delta, 0.0, plotdef['latmax'])
|
||||
interrupted_lines.append(project(merid, plotdef['projstring']))
|
||||
|
||||
if 'bottom_interrupted_lons' in plotdef:
|
||||
for lon in plotdef['bottom_interrupted_lons']:
|
||||
for delta in [-0.0001, 0.0001]:
|
||||
merid = meridian(lon + delta, plotdef['latmin'], 0)
|
||||
interrupted_lines.append(project(merid, plotdef['projstring']))
|
||||
|
||||
for line in interrupted_lines:
|
||||
x = line[:, 0]
|
||||
y = line[:, 1]
|
||||
plot_with_interruptions(axes, x, y, color=COLOR_GRAT, linewidth=0.4,
|
||||
delta_cut=plotdef.get('delta_cut', 1e100))
|
||||
|
||||
# Switch off the axis lines...
|
||||
plt.axis('off')
|
||||
@@ -311,9 +363,12 @@ def plotproj(plotdef, data, outdir):
|
||||
# Make sure the plot is not stretched
|
||||
axes.set_aspect('equal')
|
||||
|
||||
if not os.path.exists(outdir):
|
||||
os.makedirs(outdir)
|
||||
plt.savefig(outdir + '/' + plotdef['filename'],
|
||||
outdir = Path(outdir)
|
||||
if not outdir.exists():
|
||||
outdir.mkdir(parents=True)
|
||||
if not outdir.is_dir():
|
||||
raise OSError("outdir is not a directory")
|
||||
plt.savefig(outdir / plotdef['filename'],
|
||||
dpi=400,
|
||||
bbox_inches='tight')
|
||||
|
||||
@@ -323,36 +378,22 @@ def plotproj(plotdef, data, outdir):
|
||||
plt.close()
|
||||
|
||||
|
||||
def main():
|
||||
def main(plotdefs, outdir, plots=[]):
|
||||
'''
|
||||
Main function of plotting script.
|
||||
|
||||
Parses json-file with plot setups and runs the plotting
|
||||
for each plot setup.
|
||||
'''
|
||||
plotdefs = json.loads(Path(plotdefs).read_text())
|
||||
|
||||
data = {
|
||||
('line', 'low'): fiona.open(LINE_LOW),
|
||||
('line', 'med'): fiona.open(LINE_MED),
|
||||
('poly', 'low'): fiona.open(POLY_LOW),
|
||||
('poly', 'med'): fiona.open(POLY_MED),
|
||||
('line', 'low'): geojson.loads(Path(LINE_LOW).read_text()),
|
||||
('line', 'med'): geojson.loads(Path(LINE_MED).read_text()),
|
||||
('poly', 'low'): geojson.loads(Path(POLY_LOW).read_text()),
|
||||
('poly', 'med'): geojson.loads(Path(POLY_MED).read_text()),
|
||||
}
|
||||
|
||||
if os.path.exists(sys.argv[1]):
|
||||
# first argument is the JSON plot definition setup file
|
||||
with open(sys.argv[1]) as plotsetup:
|
||||
plotdefs = json.load(plotsetup)
|
||||
else:
|
||||
raise ValueError('No plot definition file entered')
|
||||
|
||||
plots = []
|
||||
# second argument is the output dir
|
||||
outdir = sys.argv[2]
|
||||
|
||||
# subsecond arguments are (optional) names of plot in plotdef.json
|
||||
if len(sys.argv) > 3:
|
||||
plots = sys.argv[3:len(sys.argv)]
|
||||
|
||||
for i, plotdef in enumerate(plotdefs):
|
||||
if plots != [] and plotdef['name'] not in plots:
|
||||
continue
|
||||
@@ -364,9 +405,20 @@ def main():
|
||||
|
||||
plotproj(plotdef, data[(plotdef['type'], plotdef['res'])], outdir)
|
||||
|
||||
for key in data:
|
||||
data[key].close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
parser = argparse.ArgumentParser(
|
||||
description=__doc__,
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
parser.add_argument(
|
||||
'plotdefs',
|
||||
help='A JSON file with setup for each auto-generated plot')
|
||||
parser.add_argument(
|
||||
'outdir',
|
||||
help='Directory to put the plots in.')
|
||||
parser.add_argument(
|
||||
'plots', nargs='*',
|
||||
help='A list of plot names within the plotdefs file. '
|
||||
'More than one plotname can be given at once.')
|
||||
args = parser.parse_args()
|
||||
sys.exit(main(**vars(args)))
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
|
||||
python3 plot.py plotdefs.json images/
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
export PROJ_LIB="$HOME/.local/share/proj"
|
||||
|
||||
cd docs/plot
|
||||
python plot.py plotdefs.json images
|
||||
cd ../..
|
||||
|
||||
mkdir -p docs/source/operations/projections/images/
|
||||
cp -r docs/plot/images/* docs/source/operations/projections/images/
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
# https://github.com/readthedocs/readthedocs.org/pull/9888
|
||||
READTHEDOCS_OUTPUT="_readthedocs"
|
||||
find ${READTHEDOCS_OUTPUT} -type d
|
||||
READTHEDOCS_OUTPUT_HTML="${READTHEDOCS_OUTPUT}/html"
|
||||
|
||||
# Undoes the hack done in scripts/doxygen.sh
|
||||
sed "s/io::Convention_/io::Convention/g" < ${READTHEDOCS_OUTPUT_HTML}/development/reference/cpp/io.html | sed "s/>Convention_/>Convention/g" | sed "s/_WKT2/WKT2/g" | sed "s/_WKT1/WKT1/g" > ${READTHEDOCS_OUTPUT_HTML}/development/reference/cpp/io.html.tmp
|
||||
mv ${READTHEDOCS_OUTPUT_HTML}/development/reference/cpp/io.html.tmp ${READTHEDOCS_OUTPUT_HTML}/development/reference/cpp/io.html
|
||||
|
||||
# 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
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DPROJ_TESTS=OFF -DCMAKE_INSTALL_PREFIX=$HOME/.local ..
|
||||
|
||||
ninja install
|
||||
@@ -20,6 +20,10 @@ 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
|
||||
|
||||
Citation
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -184,10 +184,10 @@ Hence, in honour of *cct* (the geodesist) this is :program:`cct` (the program).
|
||||
Bugs
|
||||
****
|
||||
|
||||
A list of know bugs can be found at https://github.com/OSGeo/proj.4/issues
|
||||
A list of know bugs can be found at https://github.com/OSGeo/PROJ/issues
|
||||
where new bug reports can be submitted to.
|
||||
|
||||
Home page
|
||||
*********
|
||||
|
||||
https://proj4.org/
|
||||
https://proj.org/
|
||||
|
||||
@@ -229,10 +229,10 @@ outputs
|
||||
Bugs
|
||||
****
|
||||
|
||||
A list of know bugs can be found at https://github.com/OSGeo/proj.4/issues
|
||||
A list of know bugs can be found at https://github.com/OSGeo/PROJ/issues
|
||||
where new bug reports can be submitted to.
|
||||
|
||||
Home page
|
||||
*********
|
||||
|
||||
https://proj4.org/
|
||||
https://proj.org/
|
||||
|
||||
@@ -205,10 +205,10 @@ Further reading
|
||||
Bugs
|
||||
****
|
||||
|
||||
A list of know bugs can be found at https://github.com/OSGeo/proj.4/issues
|
||||
A list of know bugs can be found at https://github.com/OSGeo/PROJ/issues
|
||||
where new bug reports can be submitted to.
|
||||
|
||||
Home page
|
||||
*********
|
||||
|
||||
https://proj4.org/
|
||||
https://proj.org/
|
||||
|
||||
@@ -371,10 +371,10 @@ So in honour, and hopefully also in the spirit, of Gerald Ian Evenden
|
||||
Bugs
|
||||
****
|
||||
|
||||
A list of know bugs can be found at https://github.com/OSGeo/proj.4/issues
|
||||
A list of know bugs can be found at https://github.com/OSGeo/PROJ/issues
|
||||
where new bug reports can be submitted to.
|
||||
|
||||
Home page
|
||||
*********
|
||||
|
||||
https://proj4.org/
|
||||
https://proj.org/
|
||||
|
||||
@@ -223,10 +223,10 @@ data will appear as three lines of::
|
||||
Bugs
|
||||
****
|
||||
|
||||
A list of know bugs can be found at https://github.com/OSGeo/proj.4/issues
|
||||
A list of know bugs can be found at https://github.com/OSGeo/PROJ/issues
|
||||
where new bug reports can be submitted to.
|
||||
|
||||
Home page
|
||||
*********
|
||||
|
||||
https://proj4.org/
|
||||
https://proj.org/
|
||||
|
||||
@@ -26,7 +26,7 @@ Synopsis
|
||||
| [--main-db-path path] [--aux-db-path path]*
|
||||
| [--identify]
|
||||
| [--c-ify] [--single-line]
|
||||
| {object_definition} | (-s {srs_def} -t {srs_def})
|
||||
| {object_definition} | {object_reference} | (-s {srs_def} -t {srs_def})
|
||||
|
|
||||
|
||||
where {object_definition} or {srs_def} is
|
||||
@@ -41,6 +41,10 @@ Synopsis
|
||||
- a OGC URN combining references for concatenated operations
|
||||
(e.g. "urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618")
|
||||
|
||||
{object_reference} is a filename preceded with the '@' character. The
|
||||
file referenced by the {object_reference} must contain a valid
|
||||
{object_definition}.
|
||||
|
||||
Description
|
||||
***********
|
||||
|
||||
@@ -322,10 +326,10 @@ Output:
|
||||
Bugs
|
||||
****
|
||||
|
||||
A list of know bugs can be found at https://github.com/OSGeo/proj.4/issues
|
||||
A list of know bugs can be found at https://github.com/OSGeo/PROJ/issues
|
||||
where new bug reports can be submitted to.
|
||||
|
||||
Home page
|
||||
*********
|
||||
|
||||
https://proj4.org/
|
||||
https://proj.org/
|
||||
|
||||
@@ -26,7 +26,7 @@ and feature requests. We are happy to take contributions in any form, either
|
||||
as code, bug reports, documentation or feature requests. See :ref:`contributing`
|
||||
for more info on how you can help improve PROJ.
|
||||
|
||||
The PROJ GitHub page can be found at https://github.com/OSGeo/proj.4
|
||||
The PROJ GitHub page can be found at https://github.com/OSGeo/PROJ
|
||||
|
||||
.. note::
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ Adding bug reports
|
||||
------------------
|
||||
|
||||
Bug reports are handled in the `issue
|
||||
tracker <https://github.com/OSGeo/proj.4/issues>`__ on PROJ's home on
|
||||
tracker <https://github.com/OSGeo/PROJ/issues>`__ on PROJ's home on
|
||||
GitHub. Writing a good bug report is not easy. But fixing a poorly
|
||||
documented bug is not easy either, so please put in the effort it takes
|
||||
to create a thorough bug report.
|
||||
@@ -74,7 +74,7 @@ Feature requests
|
||||
|
||||
Got an idea for a new feature in PROJ? Submit a thorough description
|
||||
of the new feature in the `issue
|
||||
tracker <https://github.com/OSGeo/proj.4/issues>`__. Please include any
|
||||
tracker <https://github.com/OSGeo/PROJ/issues>`__. Please include any
|
||||
technical documents that can help the developer make the new feature a
|
||||
reality. An example of this could be a publicly available academic paper
|
||||
that describes a new projection. Also, including a numerical test case
|
||||
@@ -88,10 +88,10 @@ Write documentation
|
||||
|
||||
PROJ is in dire need of better documentation. Any contributions of
|
||||
documentation are greatly appreciated. The PROJ documentation is
|
||||
available on `proj4.org <https://proj4.org>`__. The website is generated
|
||||
available on `proj.org <https://proj.org>`__. The website is generated
|
||||
with `Sphinx <http://www.sphinx-doc.org/en/stable/>`__. Contributions to
|
||||
the documentation should be made as `Pull
|
||||
Requests <https://github.com/OSGeo/proj.4/pulls>`__ on GitHub.
|
||||
Requests <https://github.com/OSGeo/PROJ/pulls>`__ on GitHub.
|
||||
|
||||
If you intend to document one of PROJ's supported projections please
|
||||
use the :doc:`Mercator projection <../operations/projections/merc>`
|
||||
|
||||
@@ -303,9 +303,9 @@ transformations)
|
||||
unknown id, Inverse of Tokyo to WGS 84 (1) + Tokyo to JGD2011 (2), 29.2 m, Asia - Japan and South Korea
|
||||
|
||||
|
||||
.. _`coordinate operations`: https://proj4.org/operations/index.html
|
||||
.. _`coordinate operations`: https://proj.org/operations/index.html
|
||||
|
||||
.. _`PROJ transformation grid`: https://proj4.org/resource_files.html#transformation-grids
|
||||
.. _`PROJ transformation grid`: https://proj.org/resource_files.html#transformation-grids
|
||||
|
||||
|
||||
Code repository
|
||||
|
||||
+22
-15
@@ -14,7 +14,6 @@
|
||||
|
||||
import sys
|
||||
import os
|
||||
import datetime
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
@@ -40,6 +39,9 @@ extensions = [
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# BibTeX configuration
|
||||
bibtex_bibfiles = ['references.bib']
|
||||
|
||||
# The suffix(es) of source filenames.
|
||||
# You can specify multiple suffix as a list of string:
|
||||
# source_suffix = ['.rst', '.md']
|
||||
@@ -54,33 +56,29 @@ master_doc = 'index'
|
||||
# General information about the project.
|
||||
|
||||
# Keep legacy project name
|
||||
project = 'PROJ.4'
|
||||
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.1.0'
|
||||
|
||||
# use same |release| as |version|
|
||||
release = version
|
||||
version = '6.1'
|
||||
release = '6.1.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 = 'September 2019'
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
#today_fmt = '%B %d, %Y'
|
||||
|
||||
@@ -156,10 +154,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.1/docs/source/',
|
||||
}
|
||||
|
||||
# Add any extra paths that contain custom files (such as robots.txt or
|
||||
@@ -232,6 +236,8 @@ preamble = r"""
|
||||
\ifdefined\DeclareUnicodeCharacter
|
||||
\DeclareUnicodeCharacter{2032}{$'$}% prime
|
||||
\fi
|
||||
|
||||
\usepackage[notbib]{tocbibind}
|
||||
"""
|
||||
|
||||
latex_elements = {
|
||||
@@ -243,7 +249,8 @@ latex_elements = {
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
'preamble': preamble,
|
||||
'inputenc':'\usepackage[utf8]{inputenc}'
|
||||
'inputenc': r'\usepackage[utf8]{inputenc}',
|
||||
'makeindex': r'\usepackage[columns=1]{idxlayout}\makeindex',
|
||||
|
||||
# Latex figure (float) alignment
|
||||
#'figure_align': 'htbp',
|
||||
|
||||
+28
-24
@@ -13,17 +13,18 @@ distribution of the source code and various resource file archives. See
|
||||
Current Release
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
* **2019-03-01** `proj-6.0.0.tar.gz`_ (`md5`_)
|
||||
* **2019-07-01** `proj-6.1.1.tar.gz`_ (`md5`_)
|
||||
* **2018-09-15** `proj-datumgrid-1.8.zip`_
|
||||
* **2019-03-01** `proj-datumgrid-europe-1.2.zip`_
|
||||
* **2019-03-01** `proj-datumgrid-europe-1.3.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-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`_
|
||||
* **2018-06-01** `proj-5.1.0.tar.gz`_
|
||||
* **2018-04-01** `proj-5.0.1.tar.gz`_
|
||||
@@ -34,29 +35,32 @@ Past Releases
|
||||
|
||||
* **2018-03-01** `proj-datumgrid-1.7.zip`_
|
||||
* **2016-09-11** `proj-datumgrid-1.6.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.0.0.tar.gz`: http://download.osgeo.org/proj/proj-6.0.0.tar.gz
|
||||
.. _`proj-5.2.0.tar.gz`: http://download.osgeo.org/proj/proj-5.2.0.tar.gz
|
||||
.. _`proj-5.1.0.tar.gz`: http://download.osgeo.org/proj/proj-5.1.0.tar.gz
|
||||
.. _`proj-5.0.1.tar.gz`: http://download.osgeo.org/proj/proj-5.0.1.tar.gz
|
||||
.. _`proj-5.0.0.tar.gz`: http://download.osgeo.org/proj/proj-5.0.0.tar.gz
|
||||
.. _`proj-4.9.1.tar.gz`: http://download.osgeo.org/proj/proj-4.9.1.tar.gz
|
||||
.. _`proj-4.9.2.tar.gz`: http://download.osgeo.org/proj/proj-4.9.2.tar.gz
|
||||
.. _`proj-4.9.3.tar.gz`: http://download.osgeo.org/proj/proj-4.9.3.tar.gz
|
||||
.. _`proj-datumgrid-1.6.zip`: http://download.osgeo.org/proj/proj-datumgrid-1.6.zip
|
||||
.. _`proj-datumgrid-1.7.zip`: http://download.osgeo.org/proj/proj-datumgrid-1.7.zip
|
||||
.. _`proj-datumgrid-1.8.zip`: http://download.osgeo.org/proj/proj-datumgrid-1.8.zip
|
||||
.. _`proj-datumgrid-europe-1.0.zip`: http://download.osgeo.org/proj/proj-datumgrid-europe-1.0.zip
|
||||
.. _`proj-datumgrid-europe-1.1.zip`: http://download.osgeo.org/proj/proj-datumgrid-europe-1.1.zip
|
||||
.. _`proj-datumgrid-europe-1.2.zip`: http://download.osgeo.org/proj/proj-datumgrid-europe-1.2.zip
|
||||
.. _`proj-datumgrid-north-america-1.0.zip`: http://download.osgeo.org/proj/proj-datumgrid-north-america-1.0.zip
|
||||
.. _`proj-datumgrid-north-america-1.1.zip`: http://download.osgeo.org/proj/proj-datumgrid-north-america-1.1.zip
|
||||
.. _`proj-datumgrid-north-america-1.2.zip`: http://download.osgeo.org/proj/proj-datumgrid-north-america-1.2.zip
|
||||
.. _`proj-datumgrid-oceania-1.0.zip`: http://download.osgeo.org/proj/proj-datumgrid-oceania-1.0.zip
|
||||
.. _`proj-datumgrid-world-1.0.zip`: http://download.osgeo.org/proj/proj-datumgrid-world-1.0.zip
|
||||
.. _`md5`: http://download.osgeo.org/proj/proj-6.0.0.tar.gz.md5
|
||||
.. _`proj.pdf`: https://raw.githubusercontent.com/OSGeo/proj.4/gh-pages/proj.pdf
|
||||
.. _`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
|
||||
.. _`proj-5.2.0.tar.gz`: https://download.osgeo.org/proj/proj-5.2.0.tar.gz
|
||||
.. _`proj-5.1.0.tar.gz`: https://download.osgeo.org/proj/proj-5.1.0.tar.gz
|
||||
.. _`proj-5.0.1.tar.gz`: https://download.osgeo.org/proj/proj-5.0.1.tar.gz
|
||||
.. _`proj-5.0.0.tar.gz`: https://download.osgeo.org/proj/proj-5.0.0.tar.gz
|
||||
.. _`proj-4.9.1.tar.gz`: https://download.osgeo.org/proj/proj-4.9.1.tar.gz
|
||||
.. _`proj-4.9.2.tar.gz`: https://download.osgeo.org/proj/proj-4.9.2.tar.gz
|
||||
.. _`proj-4.9.3.tar.gz`: https://download.osgeo.org/proj/proj-4.9.3.tar.gz
|
||||
.. _`proj-datumgrid-1.6.zip`: https://download.osgeo.org/proj/proj-datumgrid-1.6.zip
|
||||
.. _`proj-datumgrid-1.7.zip`: https://download.osgeo.org/proj/proj-datumgrid-1.7.zip
|
||||
.. _`proj-datumgrid-1.8.zip`: https://download.osgeo.org/proj/proj-datumgrid-1.8.zip
|
||||
.. _`proj-datumgrid-europe-1.0.zip`: https://download.osgeo.org/proj/proj-datumgrid-europe-1.0.zip
|
||||
.. _`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-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
|
||||
|
||||
@@ -93,7 +93,7 @@ The routines also calculate several other quantities of interest
|
||||
On a flat surface, we have :math:`m_{12}=s_{12}`.
|
||||
* :math:`M_{12}` and :math:`M_{21}` are geodesic scales. If two
|
||||
geodesics are parallel at point 1 and separated by a small distance
|
||||
:\math`dt`, then they are separated by a distance :math:`M_{12}\,dt` at
|
||||
:math:`dt`, then they are separated by a distance :math:`M_{12}\,dt` at
|
||||
point 2. :math:`M_{21}` is defined similarly (with the geodesics
|
||||
being parallel to one another at point 2). :math:`M_{12}` and
|
||||
:math:`M_{21}` are dimensionless quantities. On a flat surface,
|
||||
@@ -159,7 +159,7 @@ areas is based on :cite:`Danielsen1989`. These improve on the work of
|
||||
:cite:`Vincenty1975` in the following respects:
|
||||
|
||||
* The results are accurate to round-off for terrestrial ellipsoids (the
|
||||
error in the distance is less then 15 nanometers, compared to 0.1 mm
|
||||
error in the distance is less than 15 nanometers, compared to 0.1 mm
|
||||
for Vincenty).
|
||||
* The solution of the inverse problem is always found. (Vincenty's
|
||||
method fails to converge for nearly antipodal points.)
|
||||
|
||||
@@ -45,8 +45,3 @@ PROJ
|
||||
You can download the source code for PROJ on the :ref:`download section<download>`
|
||||
and find links to prepackaged executables in the
|
||||
:ref:`installation section<install>`.
|
||||
|
||||
In addition to this website the PROJ documentation is also available in `PDF`_
|
||||
form.
|
||||
|
||||
.. _`PDF`: https://raw.githubusercontent.com/OSGeo/proj.4/gh-pages/proj.pdf
|
||||
|
||||
@@ -2,6 +2,109 @@
|
||||
|
||||
News
|
||||
###############################################################################
|
||||
6.1.1 Release Notes
|
||||
++++++++++++++++++++++++++++++++++++++++
|
||||
*July 1st 2019*
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
* Update EPSG registry to version 9.6.3 (`#1485 <https://github.com/OSGeo/PROJ/issues/1485>`_)
|
||||
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
* Take the passed authority into account when identifying
|
||||
objects (`#1466 <https://github.com/OSGeo/PROJ/issues/1466>`_)
|
||||
|
||||
* Avoid exception when transforming from NAD83 to projected
|
||||
CRS using NAD83(2011) (`#1477 <https://github.com/OSGeo/PROJ/issues/1477>`_)
|
||||
|
||||
* Avoid off-by-one reading of name argument if name of resource
|
||||
file has length 1 (`#11489 <https://github.com/OSGeo/PROJ/issues/1489>`_)
|
||||
|
||||
* Do not include :envvar:`PROJ_LIB` in ``proj_info().searchpath`` when context
|
||||
search path is set (`#1498 <https://github.com/OSGeo/PROJ/issues/1498>`_)
|
||||
|
||||
* Use correct delimeter for the current platform when parsing
|
||||
PROJ_LIB (`#1497 <https://github.com/OSGeo/PROJ/issues/1497>`_)
|
||||
|
||||
* Do not confuse 'ID74' CRS with WKT2 ID[] node (`#1506 <https://github.com/OSGeo/PROJ/issues/1506>`_)
|
||||
|
||||
* WKT1 importer: do case insensitive comparison for axis
|
||||
direction (`#1509 <https://github.com/OSGeo/PROJ/issues/1509>`_)
|
||||
|
||||
* Avoid compile errors on GCC 4.9.3 (`#1512 <https://github.com/OSGeo/PROJ/issues/1512>`_)
|
||||
|
||||
* Make sure that pipelines including ``+proj=ob_tran`` can be
|
||||
created (`#1526 <https://github.com/OSGeo/PROJ/issues/1526>`_)
|
||||
|
||||
|
||||
6.1.0 Release Notes
|
||||
++++++++++++++++++++++++++++++++++++++++
|
||||
*May 15th 2019*
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
* Include custom ellipsoid definitions from QGIS (`#1137 <https://github.com/OSGeo/proj.4/issues/1337>`_)
|
||||
|
||||
* Add ``-k ellipsoid`` option to projinfo (`#1338 <https://github.com/OSGeo/proj.4/issues/1338>`_)
|
||||
|
||||
* Make cs2cs support 4D coordinates (`#1355 <https://github.com/OSGeo/proj.4/issues/1355>`_)
|
||||
|
||||
* WKT2 parser: update to OGC 18-010r6 (`#1360 <https://github.com/OSGeo/proj.4/issues/1360>`_ `#1366 <https://github.com/OSGeo/proj.4/issues/1366>`_))
|
||||
|
||||
* Update internal version of googletest to v1.8.1 (`#1361 <https://github.com/OSGeo/proj.4/issues/1361>`_)
|
||||
|
||||
* Database update: EPSG v9.6.2 (`#1462 <https://github.com/OSGeo/proj.4/issues/1462>`_), IGNF v3.0.3, ESRI 10.7.0
|
||||
and add operation_version column (`#1368 <https://github.com/OSGeo/proj.4/issues/1368>`_)
|
||||
|
||||
* Add :c:func:`proj_normalize_for_visualization` that attempts to apply axis
|
||||
ordering as used by most GIS applications and PROJ <6 (`#1387 <https://github.com/OSGeo/proj.4/issues/1387>`_)
|
||||
|
||||
* Added noop operation (`#1391 <https://github.com/OSGeo/proj.4/issues/1391>`_)
|
||||
|
||||
* Paths set by user take priority over :envvar:`PROJ_LIB` for search paths (`#1398 <https://github.com/OSGeo/proj.4/issues/1398>`_)
|
||||
|
||||
* Reduced database size (`#1438 <https://github.com/OSGeo/proj.4/issues/1438>`_)
|
||||
|
||||
* add support for compoundCRS and concatenatedOperation named from
|
||||
their components (`#1441 <https://github.com/OSGeo/proj.4/issues/1441>`_)
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
* Have :program:`gie` return non-zero code when file can't be opened (`#1312 <https://github.com/OSGeo/proj.4/issues/1312>`_)
|
||||
|
||||
* CMake cross-compilation fix (`#1316 <https://github.com/OSGeo/proj.4/issues/1316>`_)
|
||||
|
||||
* Use 1st eccentricity instead of 2nd eccentricity in Molodensky (`#1324 <https://github.com/OSGeo/proj.4/issues/1324>`_)
|
||||
|
||||
* Make sure to include grids when doing Geocentric to CompoundCRS with
|
||||
nadgrids+geoidgrids transformations (`#1326 <https://github.com/OSGeo/proj.4/issues/1326>`_)
|
||||
|
||||
* Handle coordinates outside of bbox better (`#1333 <https://github.com/OSGeo/proj.4/issues/1333>`_)
|
||||
|
||||
* Enable system error messages in command line automatically in builds (`#1336 <https://github.com/OSGeo/proj.4/issues/1336>`_)
|
||||
|
||||
* Make sure to install projinfo man page with CMake (`#1347 <https://github.com/OSGeo/proj.4/issues/1347>`_)
|
||||
|
||||
* Add data dir to pkg-config file proj.pc (`#1348 <https://github.com/OSGeo/proj.4/issues/1348>`_)
|
||||
|
||||
* Fix GCC 9 warning about useless ``std::move()`` (`#1352 <https://github.com/OSGeo/proj.4/issues/1352>`_)
|
||||
|
||||
* Grid related fixes (`#1369 <https://github.com/OSGeo/proj.4/issues/1369>`_)
|
||||
|
||||
* Make sure that ISO19111 C++ code sets pj_errno on errors (`#1405 <https://github.com/OSGeo/proj.4/issues/1405>`_)
|
||||
|
||||
* vgridshift: handle longitude wrap-around for grids with 360deg
|
||||
longitude extent (`#1429 <https://github.com/OSGeo/proj.4/issues/1429>`_)
|
||||
|
||||
* :program:`proj`/:program:`cs2cs`: validate value of ``-f`` parameter to avoid potential crashes (`#1434 <https://github.com/OSGeo/proj.4/issues/1434>`_)
|
||||
|
||||
* Many division by zero and similar bug fixes found by OSS Fuzz.
|
||||
|
||||
|
||||
6.0.0 Release Notes
|
||||
++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
@@ -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
|
||||
#####
|
||||
@@ -62,6 +62,10 @@ Required
|
||||
|
||||
Select which UTM zone to use. Can be a value between 1-60.
|
||||
|
||||
|
||||
Optional
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
.. option:: +south
|
||||
|
||||
Add this flag when using the UTM on the southern hemisphere.
|
||||
@@ -72,9 +76,6 @@ Required
|
||||
|
||||
Use faster, less accurate algorithm for the Transverse Mercator.
|
||||
|
||||
Optional
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
.. include:: ../options/ellps.rst
|
||||
|
||||
Further reading
|
||||
|
||||
@@ -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
|
||||
==================
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
Author = {Gerald I. Evenden},
|
||||
Year = {2005},
|
||||
|
||||
Url = {https://github.com/OSGeo/proj.4/blob/master/docs/old/libproj.pdf}
|
||||
Url = {https://github.com/OSGeo/PROJ/blob/master/docs/old/libproj.pdf}
|
||||
}
|
||||
|
||||
@Manual{Evenden1995,
|
||||
|
||||
@@ -66,7 +66,7 @@ Below is a list of grids distributed under a free and open license.
|
||||
Switzerland
|
||||
................................................................................
|
||||
|
||||
Background in ticket `#145 <https://github.com/OSGeo/proj.4/issues/145>`__
|
||||
Background in ticket `#145 <https://github.com/OSGeo/PROJ/issues/145>`__
|
||||
|
||||
We basically have two shift grids available. An official here:
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@ to WGS84 with the ``+towgs84`` parameter.
|
||||
cs2cs +proj=latlong +ellps=GRS80 +towgs84=-199.87,74.79,246.62
|
||||
+to +proj=latlong +datum=WGS84
|
||||
20 35
|
||||
20d0'5.467"E 35d0'9.575"N 8.570
|
||||
20d0'5.467"E 35d0'9.575"N 0.000
|
||||
|
||||
The EPSG database provides this example for transforming from WGS72 to WGS84
|
||||
using an approximated 7 parameter transformation.
|
||||
@@ -197,7 +197,7 @@ using an approximated 7 parameter transformation.
|
||||
cs2cs +proj=latlong +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.219 \
|
||||
+to +proj=latlong +datum=WGS84
|
||||
4 55
|
||||
4d0'0.554"E 55d0'0.09"N 3.223
|
||||
4d0'0.554"E 55d0'0.09"N 0.000
|
||||
|
||||
|
||||
Grid Based Datum Adjustments
|
||||
|
||||
@@ -1476,7 +1476,8 @@ class PROJ_GCC_DLL Transformation : public SingleOperation {
|
||||
PROJ_DLL static TransformationNNPtr
|
||||
createGravityRelatedHeightToGeographic3D(
|
||||
const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn,
|
||||
const crs::CRSNNPtr &targetCRSIn, const std::string &filename,
|
||||
const crs::CRSNNPtr &targetCRSIn, const crs::CRSPtr &interpolationCRSIn,
|
||||
const std::string &filename,
|
||||
const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies);
|
||||
|
||||
PROJ_DLL static TransformationNNPtr createVERTCON(
|
||||
|
||||
@@ -140,6 +140,9 @@ std::string toupper(const std::string &osStr);
|
||||
PROJ_FOR_TEST std::vector<std::string> split(const std::string &osStr,
|
||||
char separator);
|
||||
|
||||
PROJ_FOR_TEST std::vector<std::string> split(const std::string &osStr,
|
||||
const std::string &separator);
|
||||
|
||||
bool ci_equal(const char *a, const char *b) noexcept;
|
||||
|
||||
#ifdef SUPPORT_DELETED_FUNCTION
|
||||
|
||||
+2
-1
@@ -427,7 +427,8 @@ class PROJ_GCC_DLL PROJStringFormatter {
|
||||
PROJ_INTERNAL void setOmitProjLongLatIfPossible(bool omit);
|
||||
PROJ_INTERNAL bool omitProjLongLatIfPossible() const;
|
||||
|
||||
PROJ_INTERNAL void setOmitZUnitConversion(bool omit);
|
||||
PROJ_INTERNAL void pushOmitZUnitConversion();
|
||||
PROJ_INTERNAL void popOmitZUnitConversion();
|
||||
PROJ_INTERNAL bool omitZUnitConversion() const;
|
||||
|
||||
PROJ_INTERNAL void setDropEarlyBindingsTerms(bool drop);
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@
|
||||
<attribute name="Implementation-Title" value="PROJ bridge to Java"/>
|
||||
<attribute name="Implementation-Version" value="${version}"/>
|
||||
<attribute name="Implementation-Vendor" value="Proj.4 project"/>
|
||||
<attribute name="Implementation-URL" value="https://proj4.org/"/>
|
||||
<attribute name="Implementation-URL" value="https://proj.org/"/>
|
||||
</manifest>
|
||||
</jar>
|
||||
</target>
|
||||
|
||||
@@ -32,7 +32,7 @@ import java.lang.annotation.Native;
|
||||
|
||||
|
||||
/**
|
||||
* Wraps the <a href="https://proj4.org/">PROJ</a> {@code PJ} native data structure.
|
||||
* Wraps the <a href="https://proj.org/">PROJ</a> {@code PJ} native data structure.
|
||||
* Almost every methods defined in this class are native methods delegating the work to the PROJ library.
|
||||
* This class is the only place where such native methods are defined.
|
||||
*
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* Wrappers for the <a href="https://proj4.org/">PROJ</a> library.
|
||||
* Wrappers for the <a href="https://proj.org/">PROJ</a> library.
|
||||
* The {@link org.proj4.PJ} class contains only native methods delegating their work to the PROJ library.
|
||||
* For higher-level methods making use of those native methods, see for example the
|
||||
* <a href="http://www.geoapi.org/geoapi-proj4/index.html">GeoAPI bindings for PROJ</a>.
|
||||
|
||||
+8
-8
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "CCT" "1" "May 06, 2019" "6.1.0" "PROJ.4"
|
||||
.TH "CCT" "1" "Jun 23, 2019" "6.1.1" "PROJ"
|
||||
.SH NAME
|
||||
cct \- Coordinate Conversion and Transformation
|
||||
.
|
||||
@@ -33,7 +33,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.SH SYNOPSIS
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
\fBcct\fP [\fB\-cIostvz\fP [args]] \fI+opt[=arg]\fP … file …
|
||||
\fBcct\fP [\fB\-cIostvz\fP [args]] \fI+opt[=arg]\fP ... file ...
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.SH DESCRIPTION
|
||||
@@ -103,7 +103,7 @@ Usage varies with operation.
|
||||
\fBcct\fP is an acronym meaning \fICoordinate Conversion and Transformation\fP\&.
|
||||
.sp
|
||||
The acronym refers to definitions given in the OGC 08\-015r2/ISO\-19111
|
||||
standard “Geographical Information – Spatial Referencing by Coordinates”,
|
||||
standard "Geographical Information \-\- Spatial Referencing by Coordinates",
|
||||
which defines two different classes of \fIcoordinate operations\fP:
|
||||
.sp
|
||||
\fICoordinate Conversions\fP, which are coordinate operations where input
|
||||
@@ -228,18 +228,18 @@ $ echo 12 56 100 2018.0 auxiliary data | cct +proj=merc
|
||||
.UNINDENT
|
||||
.SH BACKGROUND
|
||||
.sp
|
||||
\fBcct\fP also refers to Carl Christian Tscherning (1942–2014),
|
||||
\fBcct\fP also refers to Carl Christian Tscherning (1942\-\-2014),
|
||||
professor of Geodesy at the University of Copenhagen, mentor and advisor
|
||||
for a generation of Danish geodesists, colleague and collaborator for
|
||||
two generations of global geodesists, Secretary General for the
|
||||
International Association of Geodesy, IAG (1995–2007), fellow of the
|
||||
International Association of Geodesy, IAG (1995\-\-2007), fellow of the
|
||||
American Geophysical Union (1991), recipient of the IAG Levallois Medal
|
||||
(2007), the European Geosciences Union Vening Meinesz Medal (2008), and
|
||||
of numerous other honours.
|
||||
.sp
|
||||
\fIcct\fP, or Christian, as he was known to most of us, was recognized for his
|
||||
good mood, his sharp wit, his tireless work, and his great commitment to
|
||||
the development of geodesy – both through his scientific contributions,
|
||||
the development of geodesy \-\- both through his scientific contributions,
|
||||
comprising more than 250 publications, and by his mentoring and teaching
|
||||
of the next generations of geodesists.
|
||||
.sp
|
||||
@@ -255,11 +255,11 @@ Hence, in honour of \fIcct\fP (the geodesist) this is \fBcct\fP (the program).
|
||||
\fBproj(1)\fP, \fBcs2cs(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP, \fBprojinfo(1)\fP
|
||||
.SH BUGS
|
||||
.sp
|
||||
A list of know bugs can be found at \fI\%https://github.com/OSGeo/proj.4/issues\fP
|
||||
A list of know bugs can be found at \fI\%https://github.com/OSGeo/PROJ/issues\fP
|
||||
where new bug reports can be submitted to.
|
||||
.SH HOME PAGE
|
||||
.sp
|
||||
\fI\%https://proj4.org/\fP
|
||||
\fI\%https://proj.org/\fP
|
||||
.SH AUTHOR
|
||||
Thomas Knudsen
|
||||
.SH COPYRIGHT
|
||||
|
||||
+5
-5
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "CS2CS" "1" "May 06, 2019" "6.1.0" "PROJ.4"
|
||||
.TH "CS2CS" "1" "Jun 23, 2019" "6.1.1" "PROJ"
|
||||
.SH NAME
|
||||
cs2cs \- Cartographic coordinate system filter
|
||||
.
|
||||
@@ -33,14 +33,14 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.SH SYNOPSIS
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
\fBcs2cs\fP [\fB\-eEfIlrstvwW\fP [args]] [\fI+opt[=arg]\fP …] [+to \fI+opt[=arg]\fP …] file …
|
||||
\fBcs2cs\fP [\fB\-eEfIlrstvwW\fP [args]] [\fI+opt[=arg]\fP ...] [+to \fI+opt[=arg]\fP ...] file ...
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
or
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
\fBcs2cs\fP [\fB\-eEfIlrstvwW\fP [args]] {source_crs} +to {target_crs} file …
|
||||
\fBcs2cs\fP [\fB\-eEfIlrstvwW\fP [args]] {source_crs} +to {target_crs} file ...
|
||||
.sp
|
||||
where {source_crs} or {target_crs} is a PROJ string, a WKT string or a AUTHORITY:CODE
|
||||
(where AUTHORITY is the name of a CRS authority and CODE the code of a CRS
|
||||
@@ -275,11 +275,11 @@ outputs
|
||||
\fBproj(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP, \fBprojinfo(1)\fP
|
||||
.SH BUGS
|
||||
.sp
|
||||
A list of know bugs can be found at \fI\%https://github.com/OSGeo/proj.4/issues\fP
|
||||
A list of know bugs can be found at \fI\%https://github.com/OSGeo/PROJ/issues\fP
|
||||
where new bug reports can be submitted to.
|
||||
.SH HOME PAGE
|
||||
.sp
|
||||
\fI\%https://proj4.org/\fP
|
||||
\fI\%https://proj.org/\fP
|
||||
.SH AUTHOR
|
||||
Frank Warmerdam
|
||||
.SH COPYRIGHT
|
||||
|
||||
+8
-8
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "GEOD" "1" "May 06, 2019" "6.1.0" "PROJ.4"
|
||||
.TH "GEOD" "1" "Jun 23, 2019" "6.1.1" "PROJ"
|
||||
.SH NAME
|
||||
geod \- Geodesic computations
|
||||
.
|
||||
@@ -33,9 +33,9 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.SH SYNOPSIS
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
\fBgeod\fP \fI+ellps=<ellipse>\fP [\fB\-afFIlptwW\fP [args]] [\fI+opt[=arg]\fP …] file …
|
||||
\fBgeod\fP \fI+ellps=<ellipse>\fP [\fB\-afFIlptwW\fP [args]] [\fI+opt[=arg]\fP ...] file ...
|
||||
.sp
|
||||
\fBinvgeod\fP \fI+ellps=<ellipse>\fP [\fB\-afFIlptwW\fP [args]] [\fI+opt[=arg]\fP …] file …
|
||||
\fBinvgeod\fP \fI+ellps=<ellipse>\fP [\fB\-afFIlptwW\fP [args]] [\fI+opt[=arg]\fP ...] file ...
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.SH DESCRIPTION
|
||||
@@ -143,12 +143,12 @@ azimuthal data must be in decimal degrees or DMS format and
|
||||
input distance data must be in units consistent with the ellipsoid
|
||||
major axis or sphere radius units. The latitude must lie
|
||||
in the range [\-90d,90d]. Output geographic coordinates will be
|
||||
in DMS (if the \fI\%\-f\fP switch is not employed) to 0.001” with trailing,
|
||||
in DMS (if the \fI\%\-f\fP switch is not employed) to 0.001" with trailing,
|
||||
zero\-valued minute\-second fields deleted. Output distance
|
||||
data will be in the same units as the ellipsoid or sphere
|
||||
radius.
|
||||
.sp
|
||||
The Earth’s ellipsoidal figure may be selected in the same manner
|
||||
The Earth\(aqs ellipsoidal figure may be selected in the same manner
|
||||
as program \fBproj\fP by using \fI+ellps=\fP, \fI+a=\fP, \fI+es=\fP, etc.
|
||||
.sp
|
||||
\fBgeod\fP may also be used to determine intermediate points along
|
||||
@@ -201,7 +201,7 @@ where the first two values are the azimuth from Boston to Portland,
|
||||
the back azimuth from Portland to Boston followed by the distance.
|
||||
.sp
|
||||
An example of forward geodesic use is to use the Boston location
|
||||
and determine Portland’s location by azimuth and distance:
|
||||
and determine Portland\(aqs location by azimuth and distance:
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
.sp
|
||||
@@ -249,11 +249,11 @@ C. F. F. Karney, \fI\%Algorithms for Geodesics\fP, J. Geodesy \fB87\fP(1), 43–
|
||||
\fBproj(1)\fP, \fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP
|
||||
.SH BUGS
|
||||
.sp
|
||||
A list of know bugs can be found at \fI\%https://github.com/OSGeo/proj.4/issues\fP
|
||||
A list of know bugs can be found at \fI\%https://github.com/OSGeo/PROJ/issues\fP
|
||||
where new bug reports can be submitted to.
|
||||
.SH HOME PAGE
|
||||
.sp
|
||||
\fI\%https://proj4.org/\fP
|
||||
\fI\%https://proj.org/\fP
|
||||
.SH AUTHOR
|
||||
Charles Karney
|
||||
.SH COPYRIGHT
|
||||
|
||||
+16
-16
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "GIE" "1" "May 06, 2019" "6.1.0" "PROJ.4"
|
||||
.TH "GIE" "1" "Jun 23, 2019" "6.1.1" "PROJ"
|
||||
.SH NAME
|
||||
gie \- The Geospatial Integrity Investigation Environment
|
||||
.
|
||||
@@ -209,7 +209,7 @@ Many coordinates can be expected for one \fI\%operation\fP\&. For each
|
||||
See \fI\%operation\fP for an example.
|
||||
.sp
|
||||
In addition to expecting a coordinate it is also possible to expect a
|
||||
PROJ error code in case an operation can’t be created. This is useful when
|
||||
PROJ error code in case an operation can\(aqt be created. This is useful when
|
||||
testing that errors are caught and handled correctly. Below is an example of
|
||||
that tests that the pipeline operator fails correctly when a non\-invertible
|
||||
pipeline is constructed.
|
||||
@@ -267,7 +267,7 @@ units.
|
||||
Do a roundtrip test of an operation. \fI\%roundtrip\fP needs a
|
||||
\fI\%operation\fP and a \fI\%accept\fP command
|
||||
to function. The accepted coordinate is passed to the operation first in
|
||||
it’s forward mode, then the output from the forward operation is passed
|
||||
it\(aqs forward mode, then the output from the forward operation is passed
|
||||
back to the inverse operation. This procedure is done \fBn\fP times. If the
|
||||
resulting coordinate is within the set tolerance of the initial coordinate,
|
||||
the test is passed.
|
||||
@@ -343,7 +343,7 @@ expect 12 55 0 0
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
The default direction is “forward”.
|
||||
The default direction is "forward".
|
||||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
@@ -440,21 +440,21 @@ expect 0 110579.9
|
||||
.UNINDENT
|
||||
.SH BACKGROUND
|
||||
.sp
|
||||
More importantly than being an acronym for “Geospatial Integrity Investigation
|
||||
Environment”, gie were also the initials, user id, and USGS email address of
|
||||
Gerald Ian Evenden (1935–2016), the geospatial visionary, who, already in the
|
||||
More importantly than being an acronym for "Geospatial Integrity Investigation
|
||||
Environment", gie were also the initials, user id, and USGS email address of
|
||||
Gerald Ian Evenden (1935\-\-2016), the geospatial visionary, who, already in the
|
||||
1980s, started what was to become the PROJ of today.
|
||||
.sp
|
||||
Gerald’s clear vision was that map projections are \fIjust special functions\fP\&.
|
||||
Gerald\(aqs clear vision was that map projections are \fIjust special functions\fP\&.
|
||||
Some of them rather complex, most of them of two variables, but all of them
|
||||
\fIjust special functions\fP, and not particularly more special than the \fBsin()\fP,
|
||||
\fBcos()\fP, \fBtan()\fP, and \fBhypot()\fP already available in the C standard library.
|
||||
.sp
|
||||
And hence, according to Gerald, \fIthey should not be particularly much harder
|
||||
to use\fP, for a programmer, than the \fBsin()\fP’s, \fBtan()\fP’s and
|
||||
\fBhypot()\fP’s so readily available.
|
||||
to use\fP, for a programmer, than the \fBsin()\fP\(aqs, \fBtan()\fP\(aqs and
|
||||
\fBhypot()\fP\(aqs so readily available.
|
||||
.sp
|
||||
Gerald’s ingenuity also showed in the implementation of the vision, where
|
||||
Gerald\(aqs ingenuity also showed in the implementation of the vision, where
|
||||
he devised a comprehensive, yet simple, system of key\-value pairs for
|
||||
parameterising a map projection, and the highly flexible \fBPJ\fP struct, storing
|
||||
run\-time compiled versions of those key\-value pairs, hence making a map
|
||||
@@ -463,25 +463,25 @@ call like \fBhypot(x,y)\fP\&.
|
||||
.sp
|
||||
While today, we may have more formally well defined metadata systems (most
|
||||
prominent the OGC WKT2 representation), nothing comes close being as easily
|
||||
readable (“human compatible”) as Gerald’s key\-value system. This system in
|
||||
particular, and the PROJ system in general, was Gerald’s great gift to anyone
|
||||
readable ("human compatible") as Gerald\(aqs key\-value system. This system in
|
||||
particular, and the PROJ system in general, was Gerald\(aqs great gift to anyone
|
||||
using and/or communicating about geodata.
|
||||
.sp
|
||||
It is only reasonable to name a program, keeping an eye on the
|
||||
integrity of the PROJ system, in honour of Gerald.
|
||||
.sp
|
||||
So in honour, and hopefully also in the spirit, of Gerald Ian Evenden
|
||||
(1935–2016), this is the Geospatial Integrity Investigation Environment.
|
||||
(1935\-\-2016), this is the Geospatial Integrity Investigation Environment.
|
||||
.SH SEE ALSO
|
||||
.sp
|
||||
\fBproj(1)\fP, \fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP
|
||||
.SH BUGS
|
||||
.sp
|
||||
A list of know bugs can be found at \fI\%https://github.com/OSGeo/proj.4/issues\fP
|
||||
A list of know bugs can be found at \fI\%https://github.com/OSGeo/PROJ/issues\fP
|
||||
where new bug reports can be submitted to.
|
||||
.SH HOME PAGE
|
||||
.sp
|
||||
\fI\%https://proj4.org/\fP
|
||||
\fI\%https://proj.org/\fP
|
||||
.SH AUTHOR
|
||||
Thomas Knudsen
|
||||
.SH COPYRIGHT
|
||||
|
||||
+6
-6
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "PROJ" "1" "May 06, 2019" "6.1.0" "PROJ.4"
|
||||
.TH "PROJ" "1" "Jun 23, 2019" "6.1.1" "PROJ"
|
||||
.SH NAME
|
||||
proj \- Cartographic projection filter
|
||||
.
|
||||
@@ -33,9 +33,9 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.SH SYNOPSIS
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
\fBproj\fP [\fB\-beEfiIlmorsStTvVwW\fP] [args]] [\fI+opt[=arg]\fP …] file …
|
||||
\fBproj\fP [\fB\-beEfiIlmorsStTvVwW\fP] [args]] [\fI+opt[=arg]\fP ...] file ...
|
||||
.sp
|
||||
\fBinvproj\fP [\fB\-beEfiIlmorsStTvVwW\fP] [args]] [\fI+opt[=arg]\fP …] file …
|
||||
\fBinvproj\fP [\fB\-beEfiIlmorsStTvVwW\fP] [args]] [\fI+opt[=arg]\fP ...] file ...
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.SH DESCRIPTION
|
||||
@@ -216,7 +216,7 @@ portions of the input line are appended to the output line.
|
||||
Input geographic data (longitude and latitude) must be in DMS format and input
|
||||
cartesian data must be in units consistent with the ellipsoid major axis or
|
||||
sphere radius units. Output geographic coordinates will be in DMS (if the
|
||||
\fB\-w\fP switch is not employed) and precise to 0.001” with trailing, zero\-valued
|
||||
\fB\-w\fP switch is not employed) and precise to 0.001" with trailing, zero\-valued
|
||||
minute\-second fields deleted.
|
||||
.SH EXAMPLE
|
||||
.sp
|
||||
@@ -263,11 +263,11 @@ support for datum translation.
|
||||
\fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP, \fBprojinfo(1)\fP
|
||||
.SH BUGS
|
||||
.sp
|
||||
A list of know bugs can be found at \fI\%https://github.com/OSGeo/proj.4/issues\fP
|
||||
A list of know bugs can be found at \fI\%https://github.com/OSGeo/PROJ/issues\fP
|
||||
where new bug reports can be submitted to.
|
||||
.SH HOME PAGE
|
||||
.sp
|
||||
\fI\%https://proj4.org/\fP
|
||||
\fI\%https://proj.org/\fP
|
||||
.SH AUTHOR
|
||||
Gerald I. Evenden
|
||||
.SH COPYRIGHT
|
||||
|
||||
+29
-20
@@ -1,6 +1,6 @@
|
||||
.\" Man page generated from reStructuredText.
|
||||
.
|
||||
.TH "PROJINFO" "1" "May 06, 2019" "6.1.0" "PROJ.4"
|
||||
.TH "PROJINFO" "1" "Jun 23, 2019" "6.1.1" "PROJ"
|
||||
.SH NAME
|
||||
projinfo \- Geodetic object and coordinate operation queries
|
||||
.
|
||||
@@ -36,17 +36,17 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.nf
|
||||
\fBprojinfo\fP
|
||||
.in +2
|
||||
[\-o formats] [\-k crs|operation|ellipsoid] [–summary] [\-q]
|
||||
[[–area name_or_code] | [–bbox west_long,south_lat,east_long,north_lat]]
|
||||
[–spatial\-test contains|intersects]
|
||||
[–crs\-extent\-use none|both|intersection|smallest]
|
||||
[–grid\-check none|discard_missing|sort] [–show\-superseded]
|
||||
[–pivot\-crs always|if_no_direct_transformation|never|{auth:code[,auth:code]*}]
|
||||
[–boundcrs\-to\-wgs84]
|
||||
[–main\-db\-path path] [–aux\-db\-path path]*
|
||||
[–identify]
|
||||
[–c\-ify] [–single\-line]
|
||||
{object_definition} | (\-s {srs_def} \-t {srs_def})
|
||||
[\-o formats] [\-k crs|operation|ellipsoid] [\-\-summary] [\-q]
|
||||
[[\-\-area name_or_code] | [\-\-bbox west_long,south_lat,east_long,north_lat]]
|
||||
[\-\-spatial\-test contains|intersects]
|
||||
[\-\-crs\-extent\-use none|both|intersection|smallest]
|
||||
[\-\-grid\-check none|discard_missing|sort] [\-\-show\-superseded]
|
||||
[\-\-pivot\-crs always|if_no_direct_transformation|never|{auth:code[,auth:code]*}]
|
||||
[\-\-boundcrs\-to\-wgs84]
|
||||
[\-\-main\-db\-path path] [\-\-aux\-db\-path path]*
|
||||
[\-\-identify]
|
||||
[\-\-c\-ify] [\-\-single\-line]
|
||||
{object_definition} | {object_reference} | (\-s {srs_def} \-t {srs_def})
|
||||
|
||||
.in -2
|
||||
.fi
|
||||
@@ -59,16 +59,25 @@ a proj\-string,
|
||||
.IP \(bu 2
|
||||
a WKT string,
|
||||
.IP \(bu 2
|
||||
an object code (like “EPSG:4326”, “urn:ogc:def:crs:EPSG::4326”,
|
||||
“urn:ogc:def:coordinateOperation:EPSG::1671”),
|
||||
an object code (like "EPSG:4326", "urn:ogc:def:crs:EPSG::4326",
|
||||
"urn:ogc:def:coordinateOperation:EPSG::1671"),
|
||||
.IP \(bu 2
|
||||
a OGC URN combining references for compound coordinate reference systems
|
||||
(e.g “\fI\%urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717\fP” or custom abbreviated
|
||||
syntax “EPSG:2393+5717”),
|
||||
(e.g "\fI\%urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717\fP" or custom abbreviated
|
||||
syntax "EPSG:2393+5717"),
|
||||
.IP \(bu 2
|
||||
a OGC URN combining references for references for projected or derived CRSs
|
||||
e.g. for Projected 3D CRS "UTM zone 31N / WGS 84 (3D)":
|
||||
"\fI\%urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031\fP"
|
||||
(\fIadded in 6.2\fP)
|
||||
.IP \(bu 2
|
||||
a OGC URN combining references for concatenated operations
|
||||
(e.g. “\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP”)
|
||||
(e.g. "\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP")
|
||||
.UNINDENT
|
||||
.sp
|
||||
{object_reference} is a filename preceded by the \(aq@\(aq character. The
|
||||
file referenced by the {object_reference} must contain a valid
|
||||
{object_definition}.
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.SH DESCRIPTION
|
||||
@@ -125,7 +134,7 @@ potentially compatible of being piped in other utilities.
|
||||
.B \-\-area name_or_code
|
||||
Specify an area of interest to restrict the results when researching
|
||||
coordinate operations between 2 CRS. The area of interest can be specified either
|
||||
as a name (e.g “Denmark \- onshore”) or a AUTHORITY:CODE (EPSG:3237)
|
||||
as a name (e.g "Denmark \- onshore") or a AUTHORITY:CODE (EPSG:3237)
|
||||
This option is exclusive of \fI\%\-\-bbox\fP\&.
|
||||
.sp
|
||||
\fBNOTE:\fP
|
||||
@@ -424,11 +433,11 @@ COORDINATEOPERATION["NAD27 to NAD83 (1)",
|
||||
\fBcs2cs(1)\fP, \fBcct(1)\fP, \fBgeod(1)\fP, \fBgie(1)\fP, \fBproj(1)\fP
|
||||
.SH BUGS
|
||||
.sp
|
||||
A list of know bugs can be found at \fI\%https://github.com/OSGeo/proj.4/issues\fP
|
||||
A list of know bugs can be found at \fI\%https://github.com/OSGeo/PROJ/issues\fP
|
||||
where new bug reports can be submitted to.
|
||||
.SH HOME PAGE
|
||||
.sp
|
||||
\fI\%https://proj4.org/\fP
|
||||
\fI\%https://proj.org/\fP
|
||||
.SH AUTHOR
|
||||
Even Rouault
|
||||
.SH COPYRIGHT
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
.\" @(#)geodesic.3
|
||||
.\"
|
||||
.TH GEODESIC 3 "2018/09/15 Rel. 6.1.0"
|
||||
.TH GEODESIC 3 "2019/7/1 Rel. 6.1.1"
|
||||
.ad b
|
||||
.hy 1
|
||||
.SH NAME
|
||||
@@ -120,4 +120,4 @@ https://en.wikipedia.org/wiki/Geodesics_on_an_ellipsoid
|
||||
A list of known bugs can found at https://github.com/OSGeo/proj.4/issues
|
||||
where new bug reports can be submitted too.
|
||||
.SH HOME PAGE
|
||||
https://proj4.org/
|
||||
https://proj.org/
|
||||
|
||||
+3
-4
@@ -1,6 +1,6 @@
|
||||
.\" @(#)pj_init.3 - 5.2.0
|
||||
.\" @(#)pj_init.3 - 6.1.1
|
||||
.\"
|
||||
.TH PJ_INIT 3 "2018/09/5 Rel. 6.1.0"
|
||||
.TH PJ_INIT 3 "2019/7/1 Rel. 6.1.1"
|
||||
.ad b
|
||||
.hy 1
|
||||
.SH NAME
|
||||
@@ -103,7 +103,6 @@ main(int argc, char **argv) {
|
||||
.SH LIBRARY
|
||||
libproj.a \- library of projections and support procedures
|
||||
.SH SEE ALSO
|
||||
.B https://github.com/OSGeo/proj.4/wiki/ProjAPI, proj(1),
|
||||
.br
|
||||
.I "Cartographic Projection Procedures for the UNIX Environment\(emA User's Manual,"
|
||||
(Evenden, 1990, Open-file report 90\-284).
|
||||
@@ -111,4 +110,4 @@ libproj.a \- library of projections and support procedures
|
||||
A list of known bugs can found at https://github.com/OSGeo/proj.4/issues
|
||||
where new bug reports can be submitted too.
|
||||
.SH HOME PAGE
|
||||
https://proj4.org/
|
||||
https://proj.org/
|
||||
|
||||
+159
-2
@@ -134,7 +134,7 @@ def fill_conversion(proj_db_cursor):
|
||||
trigger_sql = """
|
||||
CREATE TRIGGER conversion_method_check_insert_trigger
|
||||
BEFORE INSERT ON conversion
|
||||
FOR EACH ROW BEGIN
|
||||
BEGIN
|
||||
"""
|
||||
|
||||
proj_db_cursor.execute("SELECT coord_op_code, coord_op_name, area_of_use_code, coord_op_method_code, coord_op_method_name, epsg_coordoperation.deprecated FROM epsg.epsg_coordoperation LEFT JOIN epsg.epsg_coordoperationmethod USING (coord_op_method_code) WHERE coord_op_type = 'conversion' AND coord_op_name NOT LIKE '%to DMSH'")
|
||||
@@ -598,8 +598,165 @@ proj_db_cursor = proj_db_conn.cursor()
|
||||
proj_db_cursor.execute('PRAGMA foreign_keys = 1;')
|
||||
|
||||
ingest_sqlite_dump(proj_db_cursor, os.path.join(sql_dir_name, 'proj_db_table_defs.sql'))
|
||||
|
||||
# A bit messy, but to avoid churn in our existing .sql files, we temporarily
|
||||
# recreate the original conversion and helmert_transformation tables
|
||||
# instead of the view in the true database.
|
||||
|
||||
proj_db_cursor.execute("""DROP VIEW conversion;""")
|
||||
proj_db_cursor.execute("""DROP TABLE conversion_table;""")
|
||||
proj_db_cursor.execute("""CREATE TABLE conversion(
|
||||
auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1),
|
||||
code TEXT NOT NULL CHECK (length(code) >= 1),
|
||||
name TEXT NOT NULL CHECK (length(name) >= 2),
|
||||
|
||||
description TEXT,
|
||||
scope TEXT,
|
||||
|
||||
area_of_use_auth_name TEXT NOT NULL,
|
||||
area_of_use_code TEXT NOT NULL,
|
||||
|
||||
method_auth_name TEXT CHECK (method_auth_name IS NULL OR length(method_auth_name) >= 1),
|
||||
method_code TEXT CHECK (method_code IS NULL OR length(method_code) >= 1),
|
||||
method_name TEXT,
|
||||
|
||||
param1_auth_name TEXT,
|
||||
param1_code TEXT,
|
||||
param1_name TEXT,
|
||||
param1_value FLOAT,
|
||||
param1_uom_auth_name TEXT,
|
||||
param1_uom_code TEXT,
|
||||
|
||||
param2_auth_name TEXT,
|
||||
param2_code TEXT,
|
||||
param2_name TEXT,
|
||||
param2_value FLOAT,
|
||||
param2_uom_auth_name TEXT,
|
||||
param2_uom_code TEXT,
|
||||
|
||||
param3_auth_name TEXT,
|
||||
param3_code TEXT,
|
||||
param3_name TEXT,
|
||||
param3_value FLOAT,
|
||||
param3_uom_auth_name TEXT,
|
||||
param3_uom_code TEXT,
|
||||
|
||||
param4_auth_name TEXT,
|
||||
param4_code TEXT,
|
||||
param4_name TEXT,
|
||||
param4_value FLOAT,
|
||||
param4_uom_auth_name TEXT,
|
||||
param4_uom_code TEXT,
|
||||
|
||||
param5_auth_name TEXT,
|
||||
param5_code TEXT,
|
||||
param5_name TEXT,
|
||||
param5_value FLOAT,
|
||||
param5_uom_auth_name TEXT,
|
||||
param5_uom_code TEXT,
|
||||
|
||||
param6_auth_name TEXT,
|
||||
param6_code TEXT,
|
||||
param6_name TEXT,
|
||||
param6_value FLOAT,
|
||||
param6_uom_auth_name TEXT,
|
||||
param6_uom_code TEXT,
|
||||
|
||||
param7_auth_name TEXT,
|
||||
param7_code TEXT,
|
||||
param7_name TEXT,
|
||||
param7_value FLOAT,
|
||||
param7_uom_auth_name TEXT,
|
||||
param7_uom_code TEXT,
|
||||
|
||||
deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)),
|
||||
|
||||
CONSTRAINT pk_conversion PRIMARY KEY (auth_name, code)
|
||||
);""")
|
||||
|
||||
proj_db_cursor.execute("""DROP VIEW helmert_transformation;""")
|
||||
proj_db_cursor.execute("""DROP TABLE helmert_transformation_table;""")
|
||||
proj_db_cursor.execute("""CREATE TABLE helmert_transformation(
|
||||
auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1),
|
||||
code TEXT NOT NULL CHECK (length(code) >= 1),
|
||||
name TEXT NOT NULL CHECK (length(name) >= 2),
|
||||
|
||||
description TEXT,
|
||||
scope TEXT,
|
||||
|
||||
method_auth_name TEXT NOT NULL CHECK (length(method_auth_name) >= 1),
|
||||
method_code TEXT NOT NULL CHECK (length(method_code) >= 1),
|
||||
method_name NOT NULL CHECK (length(method_name) >= 2),
|
||||
|
||||
source_crs_auth_name TEXT NOT NULL,
|
||||
source_crs_code TEXT NOT NULL,
|
||||
target_crs_auth_name TEXT NOT NULL,
|
||||
target_crs_code TEXT NOT NULL,
|
||||
|
||||
area_of_use_auth_name TEXT NOT NULL,
|
||||
area_of_use_code TEXT NOT NULL,
|
||||
|
||||
accuracy FLOAT CHECK (accuracy >= 0),
|
||||
|
||||
tx FLOAT NOT NULL,
|
||||
ty FLOAT NOT NULL,
|
||||
tz FLOAT NOT NULL,
|
||||
translation_uom_auth_name TEXT NOT NULL,
|
||||
translation_uom_code TEXT NOT NULL,
|
||||
rx FLOAT,
|
||||
ry FLOAT,
|
||||
rz FLOAT,
|
||||
rotation_uom_auth_name TEXT,
|
||||
rotation_uom_code TEXT,
|
||||
scale_difference FLOAT,
|
||||
scale_difference_uom_auth_name TEXT,
|
||||
scale_difference_uom_code TEXT,
|
||||
rate_tx FLOAT,
|
||||
rate_ty FLOAT,
|
||||
rate_tz FLOAT,
|
||||
rate_translation_uom_auth_name TEXT,
|
||||
rate_translation_uom_code TEXT,
|
||||
rate_rx FLOAT,
|
||||
rate_ry FLOAT,
|
||||
rate_rz FLOAT,
|
||||
rate_rotation_uom_auth_name TEXT,
|
||||
rate_rotation_uom_code TEXT,
|
||||
rate_scale_difference FLOAT,
|
||||
rate_scale_difference_uom_auth_name TEXT,
|
||||
rate_scale_difference_uom_code TEXT,
|
||||
epoch FLOAT,
|
||||
epoch_uom_auth_name TEXT,
|
||||
epoch_uom_code TEXT,
|
||||
px FLOAT, -- Pivot / evaluation point for Molodensky-Badekas
|
||||
py FLOAT,
|
||||
pz FLOAT,
|
||||
pivot_uom_auth_name TEXT,
|
||||
pivot_uom_code TEXT,
|
||||
|
||||
operation_version TEXT, -- normally mandatory in OGC Topic 2 but optional here
|
||||
|
||||
deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)),
|
||||
|
||||
CONSTRAINT pk_helmert_transformation PRIMARY KEY (auth_name, code)
|
||||
);""")
|
||||
|
||||
proj_db_cursor.execute("SELECT name, sql FROM sqlite_master WHERE type = 'table' AND name = 'projected_crs'")
|
||||
for (name, sql) in proj_db_cursor.fetchall():
|
||||
proj_db_cursor.execute("DROP TABLE " + name)
|
||||
proj_db_cursor.execute(sql.replace('conversion_table', 'conversion'))
|
||||
|
||||
proj_db_cursor.execute("SELECT name, sql FROM sqlite_master WHERE type = 'view'")
|
||||
for (name, sql) in proj_db_cursor.fetchall():
|
||||
if 'conversion_table' in sql:
|
||||
proj_db_cursor.execute("DROP VIEW " + name)
|
||||
proj_db_cursor.execute(sql.replace('conversion_table', 'conversion'))
|
||||
elif 'helmert_transformation_table' in sql:
|
||||
proj_db_cursor.execute("DROP VIEW " + name)
|
||||
proj_db_cursor.execute(sql.replace('helmert_transformation_table', 'helmert_transformation'))
|
||||
|
||||
proj_db_cursor.execute("ATTACH DATABASE '%s' AS epsg;" % epsg_tmp_db_filename)
|
||||
|
||||
|
||||
fill_unit_of_measure(proj_db_cursor)
|
||||
fill_ellipsoid(proj_db_cursor)
|
||||
fill_area(proj_db_cursor)
|
||||
@@ -647,7 +804,7 @@ for line in proj_db_conn.iterdump():
|
||||
f = open(os.path.join(sql_dir_name, table_name) + '.sql', 'wb')
|
||||
f.write("--- This file has been generated by scripts/build_db.py. DO NOT EDIT !\n\n".encode('UTF-8'))
|
||||
files[table_name] = f
|
||||
f.write((line + '\n').encode('UTF-8'))
|
||||
f.write((line + '\n').replace('BEFORE INSERT ON conversion', 'INSTEAD OF INSERT ON conversion').encode('UTF-8'))
|
||||
#f = files['coordinate_operation']
|
||||
#for row in non_imported_operations:
|
||||
# f.write(("--- Non imported: " + str(row) + '\n').encode('UTF-8'))
|
||||
|
||||
@@ -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/
|
||||
|
||||
@@ -279,6 +279,7 @@ osgeo::proj::internal::ci_find(std::string const&, char const*)
|
||||
osgeo::proj::internal::c_locale_stod(std::string const&)
|
||||
osgeo::proj::internal::replaceAll(std::string const&, std::string const&, std::string const&)
|
||||
osgeo::proj::internal::split(std::string const&, char)
|
||||
osgeo::proj::internal::split(std::string const&, std::string const&)
|
||||
osgeo::proj::internal::tolower(std::string const&)
|
||||
osgeo::proj::internal::toString(double, int)
|
||||
osgeo::proj::io::AuthorityFactory::~AuthorityFactory()
|
||||
@@ -618,7 +619,7 @@ osgeo::proj::operation::Transformation::createGeocentricTranslations(osgeo::proj
|
||||
osgeo::proj::operation::Transformation::createGeographic2DOffsets(osgeo::proj::util::PropertyMap const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, osgeo::proj::common::Angle const&, osgeo::proj::common::Angle const&, std::vector<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> >, std::allocator<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> > > > const&)
|
||||
osgeo::proj::operation::Transformation::createGeographic2DWithHeightOffsets(osgeo::proj::util::PropertyMap const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, osgeo::proj::common::Angle const&, osgeo::proj::common::Angle const&, osgeo::proj::common::Length const&, std::vector<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> >, std::allocator<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> > > > const&)
|
||||
osgeo::proj::operation::Transformation::createGeographic3DOffsets(osgeo::proj::util::PropertyMap const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, osgeo::proj::common::Angle const&, osgeo::proj::common::Angle const&, osgeo::proj::common::Length const&, std::vector<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> >, std::allocator<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> > > > const&)
|
||||
osgeo::proj::operation::Transformation::createGravityRelatedHeightToGeographic3D(osgeo::proj::util::PropertyMap const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, std::string const&, std::vector<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> >, std::allocator<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> > > > const&)
|
||||
osgeo::proj::operation::Transformation::createGravityRelatedHeightToGeographic3D(osgeo::proj::util::PropertyMap const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, std::shared_ptr<osgeo::proj::crs::CRS> const&, std::string const&, std::vector<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> >, std::allocator<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> > > > const&)
|
||||
osgeo::proj::operation::Transformation::createLongitudeRotation(osgeo::proj::util::PropertyMap const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, osgeo::proj::common::Angle const&)
|
||||
osgeo::proj::operation::Transformation::createMolodensky(osgeo::proj::util::PropertyMap const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, double, double, double, double, double, std::vector<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> >, std::allocator<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> > > > const&)
|
||||
osgeo::proj::operation::Transformation::createNTv2(osgeo::proj::util::PropertyMap const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::crs::CRS> > const&, std::string const&, std::vector<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> >, std::allocator<dropbox::oxygen::nn<std::shared_ptr<osgeo::proj::metadata::PositionalAccuracy> > > > const&)
|
||||
|
||||
+12
-11
@@ -1367,9 +1367,9 @@ static char *path_append (char *buf, const char *app, size_t *buf_size) {
|
||||
}
|
||||
assert(buf);
|
||||
|
||||
/* Only append a semicolon if something's already there */
|
||||
/* Only append a delimiter if something's already there */
|
||||
if (0 != buflen)
|
||||
strcat (buf, ";");
|
||||
strcat (buf, delim);
|
||||
strcat (buf, app);
|
||||
return buf;
|
||||
}
|
||||
@@ -1403,16 +1403,17 @@ PJ_INFO proj_info (void) {
|
||||
info.release = pj_get_release ();
|
||||
|
||||
/* build search path string */
|
||||
const char* envPROJ_LIB = getenv ("PROJ_LIB");
|
||||
buf = path_append (buf, envPROJ_LIB, &buf_size);
|
||||
#ifdef PROJ_LIB
|
||||
if( envPROJ_LIB == nullptr ) {
|
||||
buf = path_append (buf, PROJ_LIB, &buf_size);
|
||||
}
|
||||
#endif
|
||||
auto ctx = pj_get_default_ctx();
|
||||
if( ctx ) {
|
||||
for( const auto& path: ctx->search_paths ) {
|
||||
if (!ctx || ctx->search_paths.empty()) {
|
||||
const char *envPROJ_LIB = getenv("PROJ_LIB");
|
||||
buf = path_append(buf, envPROJ_LIB, &buf_size);
|
||||
#ifdef PROJ_LIB
|
||||
if (envPROJ_LIB == nullptr) {
|
||||
buf = path_append(buf, PROJ_LIB, &buf_size);
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
for (const auto &path : ctx->search_paths) {
|
||||
buf = path_append(buf, path.c_str(), &buf_size);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ geodtest_LDADD = libproj.la
|
||||
|
||||
lib_LTLIBRARIES = libproj.la
|
||||
|
||||
libproj_la_LDFLAGS = -no-undefined -version-info 16:0:1
|
||||
libproj_la_LDFLAGS = -no-undefined -version-info 16:1:1
|
||||
libproj_la_LIBADD = @SQLITE3_LIBS@
|
||||
|
||||
libproj_la_SOURCES = \
|
||||
|
||||
+57
-1
@@ -30,10 +30,12 @@
|
||||
#define FROM_PROJ_CPP
|
||||
#endif
|
||||
|
||||
#include <algorithm>
|
||||
#include <cassert>
|
||||
#include <cstdarg>
|
||||
#include <cstring>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <new>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
@@ -151,6 +153,7 @@ static PJ *pj_obj_create(PJ_CONTEXT *ctx, const IdentifiedObjectNNPtr &objIn) {
|
||||
}
|
||||
auto pj = pj_new();
|
||||
if (pj) {
|
||||
pj->ctx = ctx;
|
||||
pj->descr = "ISO-19111 object";
|
||||
pj->iso_obj = objIn;
|
||||
}
|
||||
@@ -1774,7 +1777,7 @@ PJ *proj_get_target_crs(PJ_CONTEXT *ctx, const PJ *obj) {
|
||||
/** \brief Identify the CRS with reference CRSs.
|
||||
*
|
||||
* The candidate CRSs are either hard-coded, or looked in the database when
|
||||
* authorityFactory is not null.
|
||||
* it is available.
|
||||
*
|
||||
* 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
|
||||
@@ -6793,6 +6796,59 @@ int proj_cs_get_axis_info(PJ_CONTEXT *ctx, const PJ *cs, int index,
|
||||
* nullptr in case of error
|
||||
*/
|
||||
PJ *proj_normalize_for_visualization(PJ_CONTEXT *ctx, const PJ *obj) {
|
||||
|
||||
SANITIZE_CTX(ctx);
|
||||
if (!obj->alternativeCoordinateOperations.empty()) {
|
||||
try {
|
||||
auto pjNew = std::unique_ptr<PJ>(pj_new());
|
||||
if (!pjNew)
|
||||
return nullptr;
|
||||
pjNew->ctx = ctx;
|
||||
for (const auto &alt : obj->alternativeCoordinateOperations) {
|
||||
auto co = dynamic_cast<const CoordinateOperation *>(
|
||||
alt.pj->iso_obj.get());
|
||||
if (co) {
|
||||
double minxSrc = alt.minxSrc;
|
||||
double minySrc = alt.minySrc;
|
||||
double maxxSrc = alt.maxxSrc;
|
||||
double maxySrc = alt.maxySrc;
|
||||
double minxDst = alt.minxDst;
|
||||
double minyDst = alt.minyDst;
|
||||
double maxxDst = alt.maxxDst;
|
||||
double maxyDst = alt.maxyDst;
|
||||
|
||||
auto l_sourceCRS = co->sourceCRS();
|
||||
auto l_targetCRS = co->targetCRS();
|
||||
if (l_sourceCRS && l_targetCRS) {
|
||||
const bool swapSource =
|
||||
l_sourceCRS
|
||||
->mustAxisOrderBeSwitchedForVisualization();
|
||||
if (swapSource) {
|
||||
std::swap(minxSrc, minySrc);
|
||||
std::swap(maxxSrc, maxySrc);
|
||||
}
|
||||
const bool swapTarget =
|
||||
l_targetCRS
|
||||
->mustAxisOrderBeSwitchedForVisualization();
|
||||
if (swapTarget) {
|
||||
std::swap(minxDst, minyDst);
|
||||
std::swap(maxxDst, maxyDst);
|
||||
}
|
||||
}
|
||||
pjNew->alternativeCoordinateOperations.emplace_back(
|
||||
minxSrc, minySrc, maxxSrc, maxySrc, minxDst, minyDst,
|
||||
maxxDst, maxyDst,
|
||||
pj_obj_create(ctx, co->normalizeForVisualization()),
|
||||
co->nameStr());
|
||||
}
|
||||
}
|
||||
return pjNew.release();
|
||||
} catch (const std::exception &e) {
|
||||
proj_log_debug(ctx, __FUNCTION__, e.what());
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
auto co = dynamic_cast<const CoordinateOperation *>(obj->iso_obj.get());
|
||||
if (!co) {
|
||||
proj_log_error(ctx, __FUNCTION__, "Object is not a CoordinateOperation "
|
||||
|
||||
@@ -564,7 +564,14 @@ GridDescription::~GridDescription() = default;
|
||||
|
||||
GridDescription::GridDescription(const GridDescription &) = default;
|
||||
|
||||
GridDescription::GridDescription(GridDescription &&) noexcept = default;
|
||||
GridDescription::GridDescription(GridDescription &&other) noexcept
|
||||
: shortName(std::move(other.shortName)),
|
||||
fullName(std::move(other.fullName)),
|
||||
packageName(std::move(other.packageName)),
|
||||
url(std::move(other.url)),
|
||||
directDownload(other.directDownload),
|
||||
openLicense(other.openLicense),
|
||||
available(other.available) {}
|
||||
|
||||
//! @endcond
|
||||
|
||||
@@ -2700,7 +2707,7 @@ createParams(const common::Measure &m1, const common::Measure &m2,
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a [Universal Transverse Mercator]
|
||||
*(https://proj4.org/operations/projections/utm.html) conversion.
|
||||
*(https://proj.org/operations/projections/utm.html) conversion.
|
||||
*
|
||||
* UTM is a family of conversions, of EPSG codes from 16001 to 16060 for the
|
||||
* northern hemisphere, and 17001 to 17060 for the southern hemisphere,
|
||||
@@ -2729,7 +2736,7 @@ ConversionNNPtr Conversion::createUTM(const util::PropertyMap &properties,
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Transverse Mercator]
|
||||
*(https://proj4.org/operations/projections/tmerc.html) projection method.
|
||||
*(https://proj.org/operations/projections/tmerc.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9807]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9807)
|
||||
@@ -2756,7 +2763,7 @@ ConversionNNPtr Conversion::createTransverseMercator(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Gauss Schreiber Transverse
|
||||
*Mercator]
|
||||
*(https://proj4.org/operations/projections/gstmerc.html) projection method.
|
||||
*(https://proj.org/operations/projections/gstmerc.html) projection method.
|
||||
*
|
||||
* This method is also known as Gauss-Laborde Reunion.
|
||||
*
|
||||
@@ -2785,7 +2792,7 @@ ConversionNNPtr Conversion::createGaussSchreiberTransverseMercator(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Transverse Mercator South
|
||||
*Orientated]
|
||||
*(https://proj4.org/operations/projections/tmerc.html) projection method.
|
||||
*(https://proj.org/operations/projections/tmerc.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9808]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9808)
|
||||
@@ -2812,7 +2819,7 @@ ConversionNNPtr Conversion::createTransverseMercatorSouthOriented(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Two Point Equidistant]
|
||||
*(https://proj4.org/operations/projections/tpeqd.html) projection method.
|
||||
*(https://proj.org/operations/projections/tpeqd.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -2870,7 +2877,7 @@ ConversionNNPtr Conversion::createTunisiaMappingGrid(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Albers Conic Equal Area]
|
||||
*(https://proj4.org/operations/projections/aea.html) projection method.
|
||||
*(https://proj.org/operations/projections/aea.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9822]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9822)
|
||||
@@ -2905,7 +2912,7 @@ Conversion::createAlbersEqualArea(const util::PropertyMap &properties,
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Lambert Conic Conformal 1SP]
|
||||
*(https://proj4.org/operations/projections/lcc.html) projection method.
|
||||
*(https://proj.org/operations/projections/lcc.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9801]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9801)
|
||||
@@ -2931,7 +2938,7 @@ ConversionNNPtr Conversion::createLambertConicConformal_1SP(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Lambert Conic Conformal (2SP)]
|
||||
*(https://proj4.org/operations/projections/lcc.html) projection method.
|
||||
*(https://proj.org/operations/projections/lcc.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9802]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9802)
|
||||
@@ -2967,7 +2974,7 @@ ConversionNNPtr Conversion::createLambertConicConformal_2SP(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Lambert Conic Conformal (2SP
|
||||
*Michigan)]
|
||||
*(https://proj4.org/operations/projections/lcc.html) projection method.
|
||||
*(https://proj.org/operations/projections/lcc.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:1051]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::1051)
|
||||
@@ -3004,7 +3011,7 @@ ConversionNNPtr Conversion::createLambertConicConformal_2SP_Michigan(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Lambert Conic Conformal (2SP
|
||||
*Belgium)]
|
||||
*(https://proj4.org/operations/projections/lcc.html) projection method.
|
||||
*(https://proj.org/operations/projections/lcc.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9803]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9803)
|
||||
@@ -3045,7 +3052,7 @@ ConversionNNPtr Conversion::createLambertConicConformal_2SP_Belgium(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Modified Azimuthal
|
||||
*Equidistant]
|
||||
*(https://proj4.org/operations/projections/aeqd.html) projection method.
|
||||
*(https://proj.org/operations/projections/aeqd.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9832]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9832)
|
||||
@@ -3070,7 +3077,7 @@ ConversionNNPtr Conversion::createAzimuthalEquidistant(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Guam Projection]
|
||||
*(https://proj4.org/operations/projections/aeqd.html) projection method.
|
||||
*(https://proj.org/operations/projections/aeqd.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9831]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9831)
|
||||
@@ -3096,7 +3103,7 @@ ConversionNNPtr Conversion::createGuamProjection(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Bonne]
|
||||
*(https://proj4.org/operations/projections/bonne.html) projection method.
|
||||
*(https://proj.org/operations/projections/bonne.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9827]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9827)
|
||||
@@ -3124,7 +3131,7 @@ ConversionNNPtr Conversion::createBonne(const util::PropertyMap &properties,
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Lambert Cylindrical Equal Area
|
||||
*(Spherical)]
|
||||
*(https://proj4.org/operations/projections/cea.html) projection method.
|
||||
*(https://proj.org/operations/projections/cea.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9834]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9834)
|
||||
@@ -3155,7 +3162,7 @@ ConversionNNPtr Conversion::createLambertCylindricalEqualAreaSpherical(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Lambert Cylindrical Equal Area
|
||||
*(ellipsoidal form)]
|
||||
*(https://proj4.org/operations/projections/cea.html) projection method.
|
||||
*(https://proj.org/operations/projections/cea.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9835]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9835)
|
||||
@@ -3181,7 +3188,7 @@ ConversionNNPtr Conversion::createLambertCylindricalEqualArea(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Cassini-Soldner]
|
||||
* (https://proj4.org/operations/projections/cass.html) projection method.
|
||||
* (https://proj.org/operations/projections/cass.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9806]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9806)
|
||||
@@ -3206,7 +3213,7 @@ ConversionNNPtr Conversion::createCassiniSoldner(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Equidistant Conic]
|
||||
*(https://proj4.org/operations/projections/eqdc.html) projection method.
|
||||
*(https://proj.org/operations/projections/eqdc.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3238,7 +3245,7 @@ ConversionNNPtr Conversion::createEquidistantConic(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Eckert I]
|
||||
* (https://proj4.org/operations/projections/eck1.html) projection method.
|
||||
* (https://proj.org/operations/projections/eck1.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3260,7 +3267,7 @@ ConversionNNPtr Conversion::createEckertI(const util::PropertyMap &properties,
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Eckert II]
|
||||
* (https://proj4.org/operations/projections/eck2.html) projection method.
|
||||
* (https://proj.org/operations/projections/eck2.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3281,7 +3288,7 @@ ConversionNNPtr Conversion::createEckertII(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Eckert III]
|
||||
* (https://proj4.org/operations/projections/eck3.html) projection method.
|
||||
* (https://proj.org/operations/projections/eck3.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3302,7 +3309,7 @@ ConversionNNPtr Conversion::createEckertIII(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Eckert IV]
|
||||
* (https://proj4.org/operations/projections/eck4.html) projection method.
|
||||
* (https://proj.org/operations/projections/eck4.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3323,7 +3330,7 @@ ConversionNNPtr Conversion::createEckertIV(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Eckert V]
|
||||
* (https://proj4.org/operations/projections/eck5.html) projection method.
|
||||
* (https://proj.org/operations/projections/eck5.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3345,7 +3352,7 @@ ConversionNNPtr Conversion::createEckertV(const util::PropertyMap &properties,
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Eckert VI]
|
||||
* (https://proj4.org/operations/projections/eck6.html) projection method.
|
||||
* (https://proj.org/operations/projections/eck6.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3366,7 +3373,7 @@ ConversionNNPtr Conversion::createEckertVI(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Equidistant Cylindrical]
|
||||
*(https://proj4.org/operations/projections/eqc.html) projection method.
|
||||
*(https://proj.org/operations/projections/eqc.html) projection method.
|
||||
*
|
||||
* This is also known as the Equirectangular method, and in the particular case
|
||||
* where the latitude of first parallel is 0.
|
||||
@@ -3400,7 +3407,7 @@ ConversionNNPtr Conversion::createEquidistantCylindrical(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Equidistant Cylindrical
|
||||
*(Spherical)]
|
||||
*(https://proj4.org/operations/projections/eqc.html) projection method.
|
||||
*(https://proj.org/operations/projections/eqc.html) projection method.
|
||||
*
|
||||
* This is also known as the Equirectangular method, and in the particular case
|
||||
* where the latitude of first parallel is 0.
|
||||
@@ -3434,7 +3441,7 @@ ConversionNNPtr Conversion::createEquidistantCylindricalSpherical(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Gall (Stereographic)]
|
||||
* (https://proj4.org/operations/projections/gall.html) projection method.
|
||||
* (https://proj.org/operations/projections/gall.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3456,7 +3463,7 @@ ConversionNNPtr Conversion::createGall(const util::PropertyMap &properties,
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Goode Homolosine]
|
||||
* (https://proj4.org/operations/projections/goode.html) projection method.
|
||||
* (https://proj.org/operations/projections/goode.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3477,7 +3484,7 @@ ConversionNNPtr Conversion::createGoodeHomolosine(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Interrupted Goode Homolosine]
|
||||
* (https://proj4.org/operations/projections/igh.html) projection method.
|
||||
* (https://proj.org/operations/projections/igh.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3503,7 +3510,7 @@ ConversionNNPtr Conversion::createInterruptedGoodeHomolosine(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Geostationary Satellite View]
|
||||
* (https://proj4.org/operations/projections/geos.html) projection method,
|
||||
* (https://proj.org/operations/projections/geos.html) projection method,
|
||||
* with the sweep angle axis of the viewing instrument being x
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
@@ -3528,7 +3535,7 @@ ConversionNNPtr Conversion::createGeostationarySatelliteSweepX(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Geostationary Satellite View]
|
||||
* (https://proj4.org/operations/projections/geos.html) projection method,
|
||||
* (https://proj.org/operations/projections/geos.html) projection method,
|
||||
* with the sweep angle axis of the viewing instrument being y.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
@@ -3553,7 +3560,7 @@ ConversionNNPtr Conversion::createGeostationarySatelliteSweepY(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Gnomonic]
|
||||
*(https://proj4.org/operations/projections/gnom.html) projection method.
|
||||
*(https://proj.org/operations/projections/gnom.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3578,7 +3585,7 @@ ConversionNNPtr Conversion::createGnomonic(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Hotine Oblique Mercator
|
||||
*(Variant A)]
|
||||
*(https://proj4.org/operations/projections/omerc.html) projection method
|
||||
*(https://proj.org/operations/projections/omerc.html) projection method
|
||||
*
|
||||
* This is the variant with the no_uoff parameter, which corresponds to
|
||||
* GDAL >=2.3 Hotine_Oblique_Mercator projection.
|
||||
@@ -3593,7 +3600,7 @@ ConversionNNPtr Conversion::createGnomonic(
|
||||
* \note In the case where azimuthInitialLine = angleFromRectifiedToSkrewGrid =
|
||||
*90deg,
|
||||
* this maps to the [Swiss Oblique Mercator]
|
||||
*(https://proj4.org/operations/projections/somerc.html) formulas.
|
||||
*(https://proj.org/operations/projections/somerc.html) formulas.
|
||||
*
|
||||
* @param properties See \ref general_properties of the conversion. If the name
|
||||
* is not provided, it is automatically set.
|
||||
@@ -3626,7 +3633,7 @@ ConversionNNPtr Conversion::createHotineObliqueMercatorVariantA(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Hotine Oblique Mercator
|
||||
*(Variant B)]
|
||||
*(https://proj4.org/operations/projections/omerc.html) projection method
|
||||
*(https://proj.org/operations/projections/omerc.html) projection method
|
||||
*
|
||||
* This is the variant without the no_uoff parameter, which corresponds to
|
||||
* GDAL >=2.3 Hotine_Oblique_Mercator_Azimuth_Center projection.
|
||||
@@ -3639,7 +3646,7 @@ ConversionNNPtr Conversion::createHotineObliqueMercatorVariantA(
|
||||
* \note In the case where azimuthInitialLine = angleFromRectifiedToSkrewGrid =
|
||||
*90deg,
|
||||
* this maps to the [Swiss Oblique Mercator]
|
||||
*(https://proj4.org/operations/projections/somerc.html) formulas.
|
||||
*(https://proj.org/operations/projections/somerc.html) formulas.
|
||||
*
|
||||
* @param properties See \ref general_properties of the conversion. If the name
|
||||
* is not provided, it is automatically set.
|
||||
@@ -3672,7 +3679,7 @@ ConversionNNPtr Conversion::createHotineObliqueMercatorVariantB(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Hotine Oblique Mercator Two
|
||||
*Point Natural Origin]
|
||||
*(https://proj4.org/operations/projections/omerc.html) projection method.
|
||||
*(https://proj.org/operations/projections/omerc.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3713,7 +3720,7 @@ ConversionNNPtr Conversion::createHotineObliqueMercatorTwoPointNaturalOrigin(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Laborde Oblique Mercator]
|
||||
*(https://proj4.org/operations/projections/labrd.html) projection method.
|
||||
*(https://proj.org/operations/projections/labrd.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9813]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9813)
|
||||
@@ -3744,7 +3751,7 @@ ConversionNNPtr Conversion::createLabordeObliqueMercator(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [International Map of the World
|
||||
*Polyconic]
|
||||
*(https://proj4.org/operations/projections/imw_p.html) projection method.
|
||||
*(https://proj.org/operations/projections/imw_p.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3775,7 +3782,7 @@ ConversionNNPtr Conversion::createInternationalMapWorldPolyconic(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Krovak (north oriented)]
|
||||
*(https://proj4.org/operations/projections/krovak.html) projection method.
|
||||
*(https://proj.org/operations/projections/krovak.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:1041]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::1041)
|
||||
@@ -3825,7 +3832,7 @@ ConversionNNPtr Conversion::createKrovakNorthOriented(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Krovak]
|
||||
*(https://proj4.org/operations/projections/krovak.html) projection method.
|
||||
*(https://proj.org/operations/projections/krovak.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9819]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9819)
|
||||
@@ -3877,7 +3884,7 @@ Conversion::createKrovak(const util::PropertyMap &properties,
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Lambert Azimuthal Equal Area]
|
||||
*(https://proj4.org/operations/projections/laea.html) projection method.
|
||||
*(https://proj.org/operations/projections/laea.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9820]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9820)
|
||||
@@ -3902,7 +3909,7 @@ ConversionNNPtr Conversion::createLambertAzimuthalEqualArea(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Miller Cylindrical]
|
||||
*(https://proj4.org/operations/projections/mill.html) projection method.
|
||||
*(https://proj.org/operations/projections/mill.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -3923,7 +3930,7 @@ ConversionNNPtr Conversion::createMillerCylindrical(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Mercator]
|
||||
*(https://proj4.org/operations/projections/merc.html) projection method.
|
||||
*(https://proj.org/operations/projections/merc.html) projection method.
|
||||
*
|
||||
* This is the variant, also known as Mercator (1SP), defined with the scale
|
||||
* factor. Note that latitude of natural origin (centerLat) is a parameter,
|
||||
@@ -3953,7 +3960,7 @@ ConversionNNPtr Conversion::createMercatorVariantA(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Mercator]
|
||||
*(https://proj4.org/operations/projections/merc.html) projection method.
|
||||
*(https://proj.org/operations/projections/merc.html) projection method.
|
||||
*
|
||||
* This is the variant, also known as Mercator (2SP), defined with the latitude
|
||||
* of the first standard parallel (the second standard parallel is implicitly
|
||||
@@ -3983,7 +3990,7 @@ ConversionNNPtr Conversion::createMercatorVariantB(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Popular Visualisation Pseudo
|
||||
*Mercator]
|
||||
*(https://proj4.org/operations/projections/webmerc.html) projection method.
|
||||
*(https://proj.org/operations/projections/webmerc.html) projection method.
|
||||
*
|
||||
* Also known as WebMercator. Mostly/only used for Projected CRS EPSG:3857
|
||||
* (WGS 84 / Pseudo-Mercator)
|
||||
@@ -4011,7 +4018,7 @@ ConversionNNPtr Conversion::createPopularVisualisationPseudoMercator(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Mollweide]
|
||||
* (https://proj4.org/operations/projections/moll.html) projection method.
|
||||
* (https://proj.org/operations/projections/moll.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -4032,7 +4039,7 @@ ConversionNNPtr Conversion::createMollweide(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [New Zealand Map Grid]
|
||||
* (https://proj4.org/operations/projections/nzmg.html) projection method.
|
||||
* (https://proj.org/operations/projections/nzmg.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9811]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9811)
|
||||
@@ -4058,7 +4065,7 @@ ConversionNNPtr Conversion::createNewZealandMappingGrid(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Oblique Stereographic
|
||||
*(Alternative)]
|
||||
*(https://proj4.org/operations/projections/sterea.html) projection method.
|
||||
*(https://proj.org/operations/projections/sterea.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9809]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9809)
|
||||
@@ -4084,7 +4091,7 @@ ConversionNNPtr Conversion::createObliqueStereographic(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Orthographic]
|
||||
*(https://proj4.org/operations/projections/ortho.html) projection method.
|
||||
*(https://proj.org/operations/projections/ortho.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9840]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9840)
|
||||
@@ -4111,7 +4118,7 @@ ConversionNNPtr Conversion::createOrthographic(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [American Polyconic]
|
||||
*(https://proj4.org/operations/projections/poly.html) projection method.
|
||||
*(https://proj.org/operations/projections/poly.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9818]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9818)
|
||||
@@ -4137,7 +4144,7 @@ ConversionNNPtr Conversion::createAmericanPolyconic(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Polar Stereographic (Variant
|
||||
*A)]
|
||||
*(https://proj4.org/operations/projections/stere.html) projection method.
|
||||
*(https://proj.org/operations/projections/stere.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9810]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9810)
|
||||
@@ -4166,7 +4173,7 @@ ConversionNNPtr Conversion::createPolarStereographicVariantA(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Polar Stereographic (Variant
|
||||
*B)]
|
||||
*(https://proj4.org/operations/projections/stere.html) projection method.
|
||||
*(https://proj.org/operations/projections/stere.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:9829]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9829)
|
||||
@@ -4195,7 +4202,7 @@ ConversionNNPtr Conversion::createPolarStereographicVariantB(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Robinson]
|
||||
* (https://proj4.org/operations/projections/robin.html) projection method.
|
||||
* (https://proj.org/operations/projections/robin.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -4216,7 +4223,7 @@ ConversionNNPtr Conversion::createRobinson(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Sinusoidal]
|
||||
* (https://proj4.org/operations/projections/sinu.html) projection method.
|
||||
* (https://proj.org/operations/projections/sinu.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -4237,7 +4244,7 @@ ConversionNNPtr Conversion::createSinusoidal(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Stereographic]
|
||||
*(https://proj4.org/operations/projections/stere.html) projection method.
|
||||
*(https://proj.org/operations/projections/stere.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG. This method implements the original "Oblique
|
||||
* Stereographic" method described in "Snyder's Map Projections - A Working
|
||||
@@ -4266,7 +4273,7 @@ ConversionNNPtr Conversion::createStereographic(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Van der Grinten]
|
||||
* (https://proj4.org/operations/projections/vandg.html) projection method.
|
||||
* (https://proj.org/operations/projections/vandg.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -4287,7 +4294,7 @@ ConversionNNPtr Conversion::createVanDerGrinten(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Wagner I]
|
||||
* (https://proj4.org/operations/projections/wag1.html) projection method.
|
||||
* (https://proj.org/operations/projections/wag1.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -4309,7 +4316,7 @@ ConversionNNPtr Conversion::createWagnerI(const util::PropertyMap &properties,
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Wagner II]
|
||||
* (https://proj4.org/operations/projections/wag2.html) projection method.
|
||||
* (https://proj.org/operations/projections/wag2.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -4330,7 +4337,7 @@ ConversionNNPtr Conversion::createWagnerII(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Wagner III]
|
||||
* (https://proj4.org/operations/projections/wag3.html) projection method.
|
||||
* (https://proj.org/operations/projections/wag3.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -4354,7 +4361,7 @@ ConversionNNPtr Conversion::createWagnerIII(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Wagner IV]
|
||||
* (https://proj4.org/operations/projections/wag4.html) projection method.
|
||||
* (https://proj.org/operations/projections/wag4.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -4375,7 +4382,7 @@ ConversionNNPtr Conversion::createWagnerIV(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Wagner V]
|
||||
* (https://proj4.org/operations/projections/wag5.html) projection method.
|
||||
* (https://proj.org/operations/projections/wag5.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -4397,7 +4404,7 @@ ConversionNNPtr Conversion::createWagnerV(const util::PropertyMap &properties,
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Wagner VI]
|
||||
* (https://proj4.org/operations/projections/wag6.html) projection method.
|
||||
* (https://proj.org/operations/projections/wag6.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -4418,7 +4425,7 @@ ConversionNNPtr Conversion::createWagnerVI(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Wagner VII]
|
||||
* (https://proj4.org/operations/projections/wag7.html) projection method.
|
||||
* (https://proj.org/operations/projections/wag7.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -4440,7 +4447,7 @@ ConversionNNPtr Conversion::createWagnerVII(
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Quadrilateralized Spherical
|
||||
*Cube]
|
||||
*(https://proj4.org/operations/projections/qsc.html) projection method.
|
||||
*(https://proj.org/operations/projections/qsc.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -4464,7 +4471,7 @@ ConversionNNPtr Conversion::createQuadrilateralizedSphericalCube(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Spherical Cross-Track Height]
|
||||
*(https://proj4.org/operations/projections/sch.html) projection method.
|
||||
*(https://proj.org/operations/projections/sch.html) projection method.
|
||||
*
|
||||
* There is no equivalent in EPSG.
|
||||
*
|
||||
@@ -4489,7 +4496,7 @@ ConversionNNPtr Conversion::createSphericalCrossTrackHeight(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Instantiate a conversion based on the [Equal Earth]
|
||||
* (https://proj4.org/operations/projections/eqearth.html) projection method.
|
||||
* (https://proj.org/operations/projections/eqearth.html) projection method.
|
||||
*
|
||||
* This method is defined as [EPSG:1078]
|
||||
* (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::1078)
|
||||
@@ -5886,7 +5893,7 @@ void Conversion::_exportToPROJString(
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Return whether a conversion is a [Universal Transverse Mercator]
|
||||
* (https://proj4.org/operations/projections/utm.html) conversion.
|
||||
* (https://proj.org/operations/projections/utm.html) conversion.
|
||||
*
|
||||
* @param[out] zone UTM zone number between 1 and 60.
|
||||
* @param[out] north true for UTM northern hemisphere, false for UTM southern
|
||||
@@ -6958,11 +6965,11 @@ TransformationNNPtr Transformation::createNTv2(
|
||||
static TransformationNNPtr _createGravityRelatedHeightToGeographic3D(
|
||||
const util::PropertyMap &properties, bool inverse,
|
||||
const crs::CRSNNPtr &sourceCRSIn, const crs::CRSNNPtr &targetCRSIn,
|
||||
const std::string &filename,
|
||||
const crs::CRSPtr &interpolationCRSIn, const std::string &filename,
|
||||
const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) {
|
||||
|
||||
return Transformation::create(
|
||||
properties, sourceCRSIn, targetCRSIn, nullptr,
|
||||
properties, sourceCRSIn, targetCRSIn, interpolationCRSIn,
|
||||
util::PropertyMap().set(
|
||||
common::IdentifiedObject::NAME_KEY,
|
||||
inverse ? INVERSE_OF + PROJ_WKT2_NAME_METHOD_HEIGHT_TO_GEOG3D
|
||||
@@ -6981,17 +6988,20 @@ static TransformationNNPtr _createGravityRelatedHeightToGeographic3D(
|
||||
* At minimum the name should be defined.
|
||||
* @param sourceCRSIn Source CRS.
|
||||
* @param targetCRSIn Target CRS.
|
||||
* @param interpolationCRSIn Interpolation CRS. (might be null)
|
||||
* @param filename GRID filename.
|
||||
* @param accuracies Vector of positional accuracy (might be empty).
|
||||
* @return new Transformation.
|
||||
*/
|
||||
TransformationNNPtr Transformation::createGravityRelatedHeightToGeographic3D(
|
||||
const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn,
|
||||
const crs::CRSNNPtr &targetCRSIn, const std::string &filename,
|
||||
const crs::CRSNNPtr &targetCRSIn, const crs::CRSPtr &interpolationCRSIn,
|
||||
const std::string &filename,
|
||||
const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) {
|
||||
|
||||
return _createGravityRelatedHeightToGeographic3D(
|
||||
properties, false, sourceCRSIn, targetCRSIn, filename, accuracies);
|
||||
properties, false, sourceCRSIn, targetCRSIn, interpolationCRSIn,
|
||||
filename, accuracies);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -7302,8 +7312,20 @@ createPropertiesForInverse(const CoordinateOperation *op, bool derivedFrom,
|
||||
auto targetCRS = op->targetCRS();
|
||||
std::string name;
|
||||
if (!forwardName.empty()) {
|
||||
if (starts_with(forwardName, INVERSE_OF)) {
|
||||
name = forwardName.substr(INVERSE_OF.size());
|
||||
if (starts_with(forwardName, INVERSE_OF) ||
|
||||
forwardName.find(" + ") != std::string::npos) {
|
||||
auto tokens = split(forwardName, " + ");
|
||||
for (size_t i = tokens.size(); i > 0;) {
|
||||
i--;
|
||||
if (!name.empty()) {
|
||||
name += " + ";
|
||||
}
|
||||
if (starts_with(tokens[i], INVERSE_OF)) {
|
||||
name += tokens[i].substr(INVERSE_OF.size());
|
||||
} else {
|
||||
name += INVERSE_OF + tokens[i];
|
||||
}
|
||||
}
|
||||
} else if (!sourceCRS || !targetCRS ||
|
||||
forwardName != buildOpName(opType, sourceCRS, targetCRS)) {
|
||||
name = INVERSE_OF + forwardName;
|
||||
@@ -8195,13 +8217,14 @@ TransformationNNPtr Transformation::substitutePROJAlternativeGridNames(
|
||||
return createGravityRelatedHeightToGeographic3D(
|
||||
createPropertiesForInverse(self.as_nullable().get(),
|
||||
true, false),
|
||||
targetCRS(), sourceCRS(), projFilename,
|
||||
coordinateOperationAccuracies())
|
||||
targetCRS(), sourceCRS(), interpolationCRS(),
|
||||
projFilename, coordinateOperationAccuracies())
|
||||
->inverseAsTransformation();
|
||||
} else {
|
||||
return createGravityRelatedHeightToGeographic3D(
|
||||
createSimilarPropertiesTransformation(self), sourceCRS(),
|
||||
targetCRS(), projFilename, coordinateOperationAccuracies());
|
||||
targetCRS(), interpolationCRS(), projFilename,
|
||||
coordinateOperationAccuracies());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9559,6 +9582,11 @@ void ConcatenatedOperation::_exportToWKT(io::WKTFormatter *formatter) const {
|
||||
CoordinateOperationNNPtr ConcatenatedOperation::_shallowClone() const {
|
||||
auto op =
|
||||
ConcatenatedOperation::nn_make_shared<ConcatenatedOperation>(*this);
|
||||
std::vector<CoordinateOperationNNPtr> ops;
|
||||
for (const auto &subOp : d->operations_) {
|
||||
ops.emplace_back(subOp->shallowClone());
|
||||
}
|
||||
op->d->operations_ = ops;
|
||||
op->assignSelf(op);
|
||||
op->setCRSs(this, false);
|
||||
return util::nn_static_pointer_cast<CoordinateOperation>(op);
|
||||
@@ -9960,6 +9988,9 @@ struct CoordinateOperationFactory::Private {
|
||||
static ConversionNNPtr
|
||||
createGeographicGeocentric(const crs::CRSNNPtr &sourceCRS,
|
||||
const crs::CRSNNPtr &targetCRS);
|
||||
|
||||
static void setCRSs(CoordinateOperation *co, const crs::CRSNNPtr &sourceCRS,
|
||||
const crs::CRSNNPtr &targetCRS);
|
||||
};
|
||||
//! @endcond
|
||||
|
||||
@@ -10854,6 +10885,31 @@ static std::vector<CoordinateOperationNNPtr> findsOpsInRegistryWithIntermediate(
|
||||
context->getDiscardSuperseded(),
|
||||
context->getIntermediateCRS());
|
||||
if (!res.empty()) {
|
||||
|
||||
// If doing GeogCRS --> GeogCRS, only use GeogCRS as
|
||||
// intermediate CRS
|
||||
// Avoid weird behaviour when doing NAD83 -> NAD83(2011)
|
||||
// that would go through NAVD88 otherwise.
|
||||
if (context->getIntermediateCRS().empty() &&
|
||||
dynamic_cast<const crs::GeographicCRS *>(
|
||||
sourceCRS.get()) &&
|
||||
dynamic_cast<const crs::GeographicCRS *>(
|
||||
targetCRS.get())) {
|
||||
std::vector<CoordinateOperationNNPtr> res2;
|
||||
for (const auto &op : res) {
|
||||
auto concatOp =
|
||||
dynamic_cast<ConcatenatedOperation *>(op.get());
|
||||
if (concatOp &&
|
||||
dynamic_cast<const crs::GeographicCRS *>(
|
||||
concatOp->operations()
|
||||
.front()
|
||||
->targetCRS()
|
||||
.get())) {
|
||||
res2.emplace_back(op);
|
||||
}
|
||||
}
|
||||
res = std::move(res2);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
@@ -10972,19 +11028,19 @@ struct MyPROJStringExportableHorizVertical final
|
||||
// cppcheck-suppress functionStatic
|
||||
_exportToPROJString(io::PROJStringFormatter *formatter) const override {
|
||||
|
||||
formatter->setOmitZUnitConversion(true);
|
||||
formatter->pushOmitZUnitConversion();
|
||||
horizTransform->_exportToPROJString(formatter);
|
||||
|
||||
formatter->startInversion();
|
||||
geogDst->addAngularUnitConvertAndAxisSwap(formatter);
|
||||
formatter->stopInversion();
|
||||
formatter->setOmitZUnitConversion(false);
|
||||
formatter->popOmitZUnitConversion();
|
||||
|
||||
verticalTransform->_exportToPROJString(formatter);
|
||||
|
||||
formatter->setOmitZUnitConversion(true);
|
||||
formatter->pushOmitZUnitConversion();
|
||||
geogDst->addAngularUnitConvertAndAxisSwap(formatter);
|
||||
formatter->setOmitZUnitConversion(false);
|
||||
formatter->popOmitZUnitConversion();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -11016,7 +11072,7 @@ struct MyPROJStringExportableHorizVerticalHorizPROJBased final
|
||||
// cppcheck-suppress functionStatic
|
||||
_exportToPROJString(io::PROJStringFormatter *formatter) const override {
|
||||
|
||||
formatter->setOmitZUnitConversion(true);
|
||||
formatter->pushOmitZUnitConversion();
|
||||
|
||||
opSrcCRSToGeogCRS->_exportToPROJString(formatter);
|
||||
|
||||
@@ -11024,17 +11080,17 @@ struct MyPROJStringExportableHorizVerticalHorizPROJBased final
|
||||
interpolationGeogCRS->addAngularUnitConvertAndAxisSwap(formatter);
|
||||
formatter->stopInversion();
|
||||
|
||||
formatter->setOmitZUnitConversion(false);
|
||||
formatter->popOmitZUnitConversion();
|
||||
|
||||
verticalTransform->_exportToPROJString(formatter);
|
||||
|
||||
formatter->setOmitZUnitConversion(true);
|
||||
formatter->pushOmitZUnitConversion();
|
||||
|
||||
interpolationGeogCRS->addAngularUnitConvertAndAxisSwap(formatter);
|
||||
|
||||
opGeogCRStoDstCRS->_exportToPROJString(formatter);
|
||||
|
||||
formatter->setOmitZUnitConversion(false);
|
||||
formatter->popOmitZUnitConversion();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -11253,12 +11309,38 @@ CoordinateOperationFactory::Private::createOperationsGeogToGeog(
|
||||
geogSrc->datum()->_isEquivalentTo(
|
||||
geogDst->datum().get(), util::IComparable::Criterion::EQUIVALENT);
|
||||
|
||||
// Do the CRS differ by their axis order ?
|
||||
bool axisReversal2D = false;
|
||||
bool axisReversal3D = false;
|
||||
if (!srcCS->_isEquivalentTo(dstCS.get(),
|
||||
util::IComparable::Criterion::EQUIVALENT)) {
|
||||
auto srcOrder = srcCS->axisOrder();
|
||||
auto dstOrder = dstCS->axisOrder();
|
||||
if (((srcOrder == cs::EllipsoidalCS::AxisOrder::LAT_NORTH_LONG_EAST ||
|
||||
srcOrder == cs::EllipsoidalCS::AxisOrder::
|
||||
LAT_NORTH_LONG_EAST_HEIGHT_UP) &&
|
||||
(dstOrder == cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH ||
|
||||
dstOrder == cs::EllipsoidalCS::AxisOrder::
|
||||
LONG_EAST_LAT_NORTH_HEIGHT_UP)) ||
|
||||
((srcOrder == cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH ||
|
||||
srcOrder == cs::EllipsoidalCS::AxisOrder::
|
||||
LONG_EAST_LAT_NORTH_HEIGHT_UP) &&
|
||||
(dstOrder == cs::EllipsoidalCS::AxisOrder::LAT_NORTH_LONG_EAST ||
|
||||
dstOrder == cs::EllipsoidalCS::AxisOrder::
|
||||
LAT_NORTH_LONG_EAST_HEIGHT_UP))) {
|
||||
if (srcAxisList.size() == 3 || dstAxisList.size() == 3)
|
||||
axisReversal3D = true;
|
||||
else
|
||||
axisReversal2D = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Do they differ by vertical units ?
|
||||
if (vconvSrc != vconvDst &&
|
||||
geogSrc->ellipsoid()->_isEquivalentTo(
|
||||
geogDst->ellipsoid().get(),
|
||||
util::IComparable::Criterion::EQUIVALENT)) {
|
||||
if (offset_pm.value() == 0) {
|
||||
if (offset_pm.value() == 0 && !axisReversal2D && !axisReversal3D) {
|
||||
// If only by vertical units, use a Change of Vertical
|
||||
// Unit
|
||||
// transformation
|
||||
@@ -11280,33 +11362,11 @@ CoordinateOperationFactory::Private::createOperationsGeogToGeog(
|
||||
}
|
||||
|
||||
// Do the CRS differ only by their axis order ?
|
||||
if (sameDatum &&
|
||||
!srcCS->_isEquivalentTo(dstCS.get(),
|
||||
util::IComparable::Criterion::EQUIVALENT)) {
|
||||
auto srcOrder = srcCS->axisOrder();
|
||||
auto dstOrder = dstCS->axisOrder();
|
||||
if ((srcOrder == cs::EllipsoidalCS::AxisOrder::LAT_NORTH_LONG_EAST &&
|
||||
dstOrder == cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH) ||
|
||||
(srcOrder == cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH &&
|
||||
dstOrder == cs::EllipsoidalCS::AxisOrder::LAT_NORTH_LONG_EAST)) {
|
||||
auto conv = Conversion::createAxisOrderReversal(false);
|
||||
conv->setCRSs(sourceCRS, targetCRS, nullptr);
|
||||
res.emplace_back(conv);
|
||||
return res;
|
||||
}
|
||||
if ((srcOrder ==
|
||||
cs::EllipsoidalCS::AxisOrder::LAT_NORTH_LONG_EAST_HEIGHT_UP &&
|
||||
dstOrder ==
|
||||
cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH_HEIGHT_UP) ||
|
||||
(srcOrder ==
|
||||
cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH_HEIGHT_UP &&
|
||||
dstOrder ==
|
||||
cs::EllipsoidalCS::AxisOrder::LAT_NORTH_LONG_EAST_HEIGHT_UP)) {
|
||||
auto conv = Conversion::createAxisOrderReversal(true);
|
||||
conv->setCRSs(sourceCRS, targetCRS, nullptr);
|
||||
res.emplace_back(conv);
|
||||
return res;
|
||||
}
|
||||
if (sameDatum && (axisReversal2D || axisReversal3D)) {
|
||||
auto conv = Conversion::createAxisOrderReversal(axisReversal3D);
|
||||
conv->setCRSs(sourceCRS, targetCRS, nullptr);
|
||||
res.emplace_back(conv);
|
||||
return res;
|
||||
}
|
||||
|
||||
std::vector<CoordinateOperationNNPtr> steps;
|
||||
@@ -11496,6 +11556,37 @@ static std::string objectAsStr(const common::IdentifiedObject *obj) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
void CoordinateOperationFactory::Private::setCRSs(
|
||||
CoordinateOperation *co, const crs::CRSNNPtr &sourceCRS,
|
||||
const crs::CRSNNPtr &targetCRS) {
|
||||
co->setCRSs(sourceCRS, targetCRS, nullptr);
|
||||
auto concat = dynamic_cast<ConcatenatedOperation *>(co);
|
||||
if (concat) {
|
||||
auto first = concat->operations().front().get();
|
||||
auto &firstTarget(first->targetCRS());
|
||||
if (firstTarget) {
|
||||
setCRSs(first, sourceCRS, NN_NO_CHECK(firstTarget));
|
||||
auto invCO = dynamic_cast<InverseCoordinateOperation *>(first);
|
||||
if (invCO) {
|
||||
setCRSs(invCO->forwardOperation().get(),
|
||||
NN_NO_CHECK(firstTarget), sourceCRS);
|
||||
}
|
||||
}
|
||||
auto last = concat->operations().back().get();
|
||||
auto &lastSource(last->sourceCRS());
|
||||
if (lastSource) {
|
||||
setCRSs(last, NN_NO_CHECK(lastSource), targetCRS);
|
||||
auto invCO = dynamic_cast<InverseCoordinateOperation *>(last);
|
||||
if (invCO) {
|
||||
setCRSs(invCO->forwardOperation().get(), targetCRS,
|
||||
NN_NO_CHECK(lastSource));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
void CoordinateOperationFactory::Private::createOperationsWithDatumPivot(
|
||||
std::vector<CoordinateOperationNNPtr> &res, const crs::CRSNNPtr &sourceCRS,
|
||||
const crs::CRSNNPtr &targetCRS, const crs::GeodeticCRS *geodSrc,
|
||||
@@ -11588,18 +11679,18 @@ void CoordinateOperationFactory::Private::createOperationsWithDatumPivot(
|
||||
}
|
||||
if (isNullFirst) {
|
||||
auto oldTarget(NN_CHECK_ASSERT(opSecondCloned->targetCRS()));
|
||||
opSecondCloned->setCRSs(sourceCRS, oldTarget, nullptr);
|
||||
setCRSs(opSecondCloned.get(), sourceCRS, oldTarget);
|
||||
if (invCOForward) {
|
||||
invCOForward->setCRSs(oldTarget, sourceCRS, nullptr);
|
||||
setCRSs(invCOForward, oldTarget, sourceCRS);
|
||||
}
|
||||
} else {
|
||||
subOps.emplace_back(opFirst);
|
||||
}
|
||||
if (isNullThird) {
|
||||
auto oldSource(NN_CHECK_ASSERT(opSecondCloned->sourceCRS()));
|
||||
opSecondCloned->setCRSs(oldSource, targetCRS, nullptr);
|
||||
setCRSs(opSecondCloned.get(), oldSource, targetCRS);
|
||||
if (invCOForward) {
|
||||
invCOForward->setCRSs(targetCRS, oldSource, nullptr);
|
||||
setCRSs(invCOForward, targetCRS, oldSource);
|
||||
}
|
||||
subOps.emplace_back(opSecondCloned);
|
||||
} else {
|
||||
@@ -12135,6 +12226,37 @@ 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) {
|
||||
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 (!res.empty()) {
|
||||
return res;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return createOperations(boundSrc->baseCRS(), targetCRS, context);
|
||||
}
|
||||
|
||||
@@ -12349,7 +12471,8 @@ CoordinateOperationFactory::Private::createOperations(
|
||||
const auto &componentsSrc = compoundSrc->componentReferenceSystems();
|
||||
if (!componentsSrc.empty()) {
|
||||
std::vector<CoordinateOperationNNPtr> horizTransforms;
|
||||
if (componentsSrc[0]->extractGeographicCRS()) {
|
||||
auto srcGeogCRS = componentsSrc[0]->extractGeographicCRS();
|
||||
if (srcGeogCRS) {
|
||||
horizTransforms =
|
||||
createOperations(componentsSrc[0], targetCRS, context);
|
||||
}
|
||||
@@ -12363,11 +12486,61 @@ CoordinateOperationFactory::Private::createOperations(
|
||||
for (const auto &horizTransform : horizTransforms) {
|
||||
for (const auto &verticalTransform : verticalTransforms) {
|
||||
|
||||
auto op = createHorizVerticalPROJBased(
|
||||
sourceCRS, targetCRS, horizTransform,
|
||||
verticalTransform);
|
||||
crs::GeographicCRSPtr interpolationGeogCRS;
|
||||
auto transformationVerticalTransform =
|
||||
dynamic_cast<const Transformation *>(
|
||||
verticalTransform.get());
|
||||
if (transformationVerticalTransform) {
|
||||
auto interpTransformCRS =
|
||||
transformationVerticalTransform
|
||||
->interpolationCRS();
|
||||
if (interpTransformCRS) {
|
||||
auto nn_interpTransformCRS =
|
||||
NN_NO_CHECK(interpTransformCRS);
|
||||
if (dynamic_cast<const crs::GeographicCRS *>(
|
||||
nn_interpTransformCRS.get())) {
|
||||
interpolationGeogCRS =
|
||||
util::nn_dynamic_pointer_cast<
|
||||
crs::GeographicCRS>(
|
||||
nn_interpTransformCRS);
|
||||
}
|
||||
}
|
||||
}
|
||||
bool done = false;
|
||||
if (interpolationGeogCRS &&
|
||||
(interpolationGeogCRS->_isEquivalentTo(
|
||||
srcGeogCRS.get(),
|
||||
util::IComparable::Criterion::EQUIVALENT) ||
|
||||
interpolationGeogCRS->is2DPartOf3D(
|
||||
NN_NO_CHECK(srcGeogCRS.get())))) {
|
||||
auto srcToInterp = createOperations(
|
||||
componentsSrc[0],
|
||||
NN_NO_CHECK(interpolationGeogCRS), context);
|
||||
auto interpToCompoundHoriz = createOperations(
|
||||
NN_NO_CHECK(interpolationGeogCRS),
|
||||
componentsSrc[0], context);
|
||||
if (!srcToInterp.empty() &&
|
||||
!interpToCompoundHoriz.empty()) {
|
||||
auto op = createHorizVerticalHorizPROJBased(
|
||||
sourceCRS, componentsSrc[0],
|
||||
srcToInterp.front(), verticalTransform,
|
||||
interpToCompoundHoriz.front(),
|
||||
interpolationGeogCRS);
|
||||
done = true;
|
||||
res.emplace_back(
|
||||
ConcatenatedOperation::
|
||||
createComputeMetadata(
|
||||
{op, horizTransform},
|
||||
!allowEmptyIntersection));
|
||||
}
|
||||
}
|
||||
if (!done) {
|
||||
auto op = createHorizVerticalPROJBased(
|
||||
sourceCRS, targetCRS, horizTransform,
|
||||
verticalTransform);
|
||||
|
||||
res.emplace_back(op);
|
||||
res.emplace_back(op);
|
||||
}
|
||||
}
|
||||
}
|
||||
return res;
|
||||
|
||||
+88
-46
@@ -1387,6 +1387,36 @@ GeodeticCRSNNPtr GeodeticCRS::createEPSG_4978() {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
|
||||
static bool hasCodeCompatibleOfAuthorityFactory(
|
||||
const common::IdentifiedObject *obj,
|
||||
const io::AuthorityFactoryPtr &authorityFactory) {
|
||||
const auto &ids = obj->identifiers();
|
||||
if (!ids.empty() && authorityFactory->getAuthority().empty()) {
|
||||
return true;
|
||||
}
|
||||
for (const auto &id : ids) {
|
||||
if (*(id->codeSpace()) == authorityFactory->getAuthority()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool hasCodeCompatibleOfAuthorityFactory(
|
||||
const metadata::IdentifierNNPtr &id,
|
||||
const io::AuthorityFactoryPtr &authorityFactory) {
|
||||
if (authorityFactory->getAuthority().empty()) {
|
||||
return true;
|
||||
}
|
||||
return *(id->codeSpace()) == authorityFactory->getAuthority();
|
||||
}
|
||||
|
||||
//! @endcond
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
/** \brief Identify the CRS with reference CRSs.
|
||||
*
|
||||
* The candidate CRSs are either hard-coded, or looked in the database when
|
||||
@@ -1530,19 +1560,22 @@ GeodeticCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const {
|
||||
searchByEllipsoid();
|
||||
}
|
||||
}
|
||||
} else if (!identifiers().empty()) {
|
||||
} else if (hasCodeCompatibleOfAuthorityFactory(this,
|
||||
authorityFactory)) {
|
||||
// If the CRS has already an id, check in the database for the
|
||||
// official object, and verify that they are equivalent.
|
||||
for (const auto &id : identifiers()) {
|
||||
try {
|
||||
auto crs = io::AuthorityFactory::create(
|
||||
authorityFactory->databaseContext(),
|
||||
*id->codeSpace())
|
||||
->createGeodeticCRS(id->code());
|
||||
bool match = _isEquivalentTo(crs.get(), crsCriterion);
|
||||
res.emplace_back(crs, match ? 100 : 25);
|
||||
return res;
|
||||
} catch (const std::exception &) {
|
||||
if (hasCodeCompatibleOfAuthorityFactory(id, authorityFactory)) {
|
||||
try {
|
||||
auto crs = io::AuthorityFactory::create(
|
||||
authorityFactory->databaseContext(),
|
||||
*id->codeSpace())
|
||||
->createGeodeticCRS(id->code());
|
||||
bool match = _isEquivalentTo(crs.get(), crsCriterion);
|
||||
res.emplace_back(crs, match ? 100 : 25);
|
||||
return res;
|
||||
} catch (const std::exception &) {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -2299,20 +2332,23 @@ VerticalCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const {
|
||||
const bool unsignificantName = thisName.empty() ||
|
||||
ci_equal(thisName, "unknown") ||
|
||||
ci_equal(thisName, "unnamed");
|
||||
if (!identifiers().empty()) {
|
||||
if (hasCodeCompatibleOfAuthorityFactory(this, authorityFactory)) {
|
||||
// If the CRS has already an id, check in the database for the
|
||||
// official object, and verify that they are equivalent.
|
||||
for (const auto &id : identifiers()) {
|
||||
try {
|
||||
auto crs = io::AuthorityFactory::create(
|
||||
authorityFactory->databaseContext(),
|
||||
*id->codeSpace())
|
||||
->createVerticalCRS(id->code());
|
||||
bool match = _isEquivalentTo(
|
||||
crs.get(), util::IComparable::Criterion::EQUIVALENT);
|
||||
res.emplace_back(crs, match ? 100 : 25);
|
||||
return res;
|
||||
} catch (const std::exception &) {
|
||||
if (hasCodeCompatibleOfAuthorityFactory(id, authorityFactory)) {
|
||||
try {
|
||||
auto crs = io::AuthorityFactory::create(
|
||||
authorityFactory->databaseContext(),
|
||||
*id->codeSpace())
|
||||
->createVerticalCRS(id->code());
|
||||
bool match = _isEquivalentTo(
|
||||
crs.get(),
|
||||
util::IComparable::Criterion::EQUIVALENT);
|
||||
res.emplace_back(crs, match ? 100 : 25);
|
||||
return res;
|
||||
} catch (const std::exception &) {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (!unsignificantName) {
|
||||
@@ -3100,21 +3136,24 @@ ProjectedCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const {
|
||||
ci_equal(thisName, "unnamed");
|
||||
bool foundEquivalentName = false;
|
||||
|
||||
if (!identifiers().empty()) {
|
||||
if (hasCodeCompatibleOfAuthorityFactory(this, authorityFactory)) {
|
||||
// If the CRS has already an id, check in the database for the
|
||||
// official object, and verify that they are equivalent.
|
||||
for (const auto &id : identifiers()) {
|
||||
try {
|
||||
auto crs = io::AuthorityFactory::create(
|
||||
authorityFactory->databaseContext(),
|
||||
*id->codeSpace())
|
||||
->createProjectedCRS(id->code());
|
||||
bool match = _isEquivalentTo(
|
||||
crs.get(), util::IComparable::Criterion::
|
||||
EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS);
|
||||
res.emplace_back(crs, match ? 100 : 25);
|
||||
return res;
|
||||
} catch (const std::exception &) {
|
||||
if (hasCodeCompatibleOfAuthorityFactory(id, authorityFactory)) {
|
||||
try {
|
||||
auto crs = io::AuthorityFactory::create(
|
||||
authorityFactory->databaseContext(),
|
||||
*id->codeSpace())
|
||||
->createProjectedCRS(id->code());
|
||||
bool match = _isEquivalentTo(
|
||||
crs.get(),
|
||||
util::IComparable::Criterion::
|
||||
EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS);
|
||||
res.emplace_back(crs, match ? 100 : 25);
|
||||
return res;
|
||||
} catch (const std::exception &) {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (!unsignificantName) {
|
||||
@@ -3189,8 +3228,8 @@ ProjectedCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const {
|
||||
// Sort results
|
||||
res.sort(lambdaSort);
|
||||
|
||||
if (identifiers().empty() && !foundEquivalentName &&
|
||||
(res.empty() || res.front().second < 50)) {
|
||||
if (!hasCodeCompatibleOfAuthorityFactory(this, authorityFactory) &&
|
||||
!foundEquivalentName && (res.empty() || res.front().second < 50)) {
|
||||
std::set<std::pair<std::string, std::string>> alreadyKnown;
|
||||
for (const auto &pair : res) {
|
||||
const auto &ids = pair.first->identifiers();
|
||||
@@ -3448,20 +3487,23 @@ CompoundCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const {
|
||||
ci_equal(thisName, "unnamed");
|
||||
bool foundEquivalentName = false;
|
||||
|
||||
if (!identifiers().empty()) {
|
||||
if (hasCodeCompatibleOfAuthorityFactory(this, authorityFactory)) {
|
||||
// If the CRS has already an id, check in the database for the
|
||||
// official object, and verify that they are equivalent.
|
||||
for (const auto &id : identifiers()) {
|
||||
try {
|
||||
auto crs = io::AuthorityFactory::create(
|
||||
authorityFactory->databaseContext(),
|
||||
*id->codeSpace())
|
||||
->createCompoundCRS(id->code());
|
||||
bool match = _isEquivalentTo(
|
||||
crs.get(), util::IComparable::Criterion::EQUIVALENT);
|
||||
res.emplace_back(crs, match ? 100 : 25);
|
||||
return res;
|
||||
} catch (const std::exception &) {
|
||||
if (hasCodeCompatibleOfAuthorityFactory(id, authorityFactory)) {
|
||||
try {
|
||||
auto crs = io::AuthorityFactory::create(
|
||||
authorityFactory->databaseContext(),
|
||||
*id->codeSpace())
|
||||
->createCompoundCRS(id->code());
|
||||
bool match = _isEquivalentTo(
|
||||
crs.get(),
|
||||
util::IComparable::Criterion::EQUIVALENT);
|
||||
res.emplace_back(crs, match ? 100 : 25);
|
||||
return res;
|
||||
} catch (const std::exception &) {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (!unsignificantName) {
|
||||
|
||||
@@ -298,6 +298,21 @@ std::vector<std::string> split(const std::string &str, char separator) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
std::vector<std::string> split(const std::string &str,
|
||||
const std::string &separator) {
|
||||
std::vector<std::string> res;
|
||||
size_t lastPos = 0;
|
||||
size_t newPos = 0;
|
||||
while ((newPos = str.find(separator, lastPos)) != std::string::npos) {
|
||||
res.push_back(str.substr(lastPos, newPos - lastPos));
|
||||
lastPos = newPos + separator.size();
|
||||
}
|
||||
res.push_back(str.substr(lastPos));
|
||||
return res;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
// For some reason, sqlite3_snprintf() in the sqlite3 builds used on AppVeyor
|
||||
|
||||
+42
-17
@@ -2311,7 +2311,7 @@ WKTParser::Private::buildAxis(const WKTNodeNNPtr &node,
|
||||
direction = &AxisDirection::GEOCENTRIC_Z;
|
||||
} else if (dirString == AxisDirectionWKT1::OTHER.toString()) {
|
||||
direction = &AxisDirection::UNSPECIFIED;
|
||||
} else if (!direction && AxisDirectionWKT1::valueOf(dirString) != nullptr) {
|
||||
} else if (!direction && AxisDirectionWKT1::valueOf(toupper(dirString)) != nullptr) {
|
||||
direction = AxisDirection::valueOf(tolower(dirString));
|
||||
}
|
||||
|
||||
@@ -3818,7 +3818,7 @@ CRSNNPtr WKTParser::Private::buildVerticalCRS(const WKTNodeNNPtr &node) {
|
||||
Transformation::createGravityRelatedHeightToGeographic3D(
|
||||
PropertyMap().set(IdentifiedObject::NAME_KEY,
|
||||
transformationName),
|
||||
crs, GeographicCRS::EPSG_4979,
|
||||
crs, GeographicCRS::EPSG_4979, nullptr,
|
||||
stripQuotes(extensionChildren[1]),
|
||||
std::vector<PositionalAccuracyNNPtr>());
|
||||
return nn_static_pointer_cast<CRS>(BoundCRS::create(
|
||||
@@ -4377,12 +4377,20 @@ static BaseObjectNNPtr createFromUserInput(const std::string &text,
|
||||
|
||||
if (!ci_starts_with(text, "step proj=") &&
|
||||
!ci_starts_with(text, "step +proj=")) {
|
||||
for (const auto &wktConstants : WKTConstants::constants()) {
|
||||
if (ci_starts_with(text, wktConstants)) {
|
||||
return WKTParser()
|
||||
.attachDatabaseContext(dbContext)
|
||||
.setStrict(false)
|
||||
.createFromWKT(text);
|
||||
for (const auto &wktConstant : WKTConstants::constants()) {
|
||||
if (ci_starts_with(text, wktConstant)) {
|
||||
for (auto wkt = text.c_str() + wktConstant.size(); *wkt != '\0';
|
||||
++wkt) {
|
||||
if (isspace(static_cast<unsigned char>(*wkt)))
|
||||
continue;
|
||||
if (*wkt == '[') {
|
||||
return WKTParser()
|
||||
.attachDatabaseContext(dbContext)
|
||||
.setStrict(false)
|
||||
.createFromWKT(text);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4778,9 +4786,17 @@ WKTParser::guessDialect(const std::string &wkt) noexcept {
|
||||
}
|
||||
}
|
||||
|
||||
for (const auto &wktConstants : WKTConstants::constants()) {
|
||||
if (ci_starts_with(wkt, wktConstants)) {
|
||||
return WKTGuessedDialect::WKT2_2015;
|
||||
for (const auto &wktConstant : WKTConstants::constants()) {
|
||||
if (ci_starts_with(wkt, wktConstant)) {
|
||||
for (auto wktPtr = wkt.c_str() + wktConstant.size();
|
||||
*wktPtr != '\0'; ++wktPtr) {
|
||||
if (isspace(static_cast<unsigned char>(*wktPtr)))
|
||||
continue;
|
||||
if (*wktPtr == '[') {
|
||||
return WKTGuessedDialect::WKT2_2015;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4922,7 +4938,7 @@ struct PROJStringFormatter::Private {
|
||||
};
|
||||
std::vector<InversionStackElt> inversionStack_{InversionStackElt()};
|
||||
bool omitProjLongLatIfPossible_ = false;
|
||||
bool omitZUnitConversion_ = false;
|
||||
std::vector<bool> omitZUnitConversion_{false};
|
||||
DatabaseContextPtr dbContext_{};
|
||||
bool useApproxTMerc_ = false;
|
||||
bool addNoDefs_ = true;
|
||||
@@ -5939,15 +5955,21 @@ bool PROJStringFormatter::omitProjLongLatIfPossible() const {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
void PROJStringFormatter::setOmitZUnitConversion(bool omit) {
|
||||
assert(d->omitZUnitConversion_ ^ omit);
|
||||
d->omitZUnitConversion_ = omit;
|
||||
void PROJStringFormatter::pushOmitZUnitConversion() {
|
||||
d->omitZUnitConversion_.push_back(true);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
void PROJStringFormatter::popOmitZUnitConversion() {
|
||||
assert(d->omitZUnitConversion_.size() > 1);
|
||||
d->omitZUnitConversion_.pop_back();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
bool PROJStringFormatter::omitZUnitConversion() const {
|
||||
return d->omitZUnitConversion_;
|
||||
return d->omitZUnitConversion_.back();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -6893,6 +6915,7 @@ PROJStringParser::Private::buildGeographicCRS(int iStep, int iUnitConvert,
|
||||
getNumericValue(getParamValue(step, "lon_0")) != 0.0)) {
|
||||
props.set("EXTENSION_PROJ4", projString_);
|
||||
}
|
||||
props.set("IMPLICIT_CS", true);
|
||||
|
||||
return GeographicCRS::create(props, datum, cs);
|
||||
}
|
||||
@@ -6995,7 +7018,7 @@ PROJStringParser::Private::buildBoundOrCompoundCRSIfNeeded(int iStep,
|
||||
Transformation::createGravityRelatedHeightToGeographic3D(
|
||||
PropertyMap().set(IdentifiedObject::NAME_KEY,
|
||||
"unknown to WGS84 ellipsoidal height"),
|
||||
crs, GeographicCRS::EPSG_4979, geoidgrids,
|
||||
crs, GeographicCRS::EPSG_4979, nullptr, geoidgrids,
|
||||
std::vector<PositionalAccuracyNNPtr>());
|
||||
auto boundvcrs =
|
||||
BoundCRS::create(vcrs, GeographicCRS::EPSG_4979, transformation);
|
||||
@@ -7383,6 +7406,8 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
|
||||
props.set("EXTENSION_PROJ4", projString_);
|
||||
}
|
||||
|
||||
props.set("IMPLICIT_CS", true);
|
||||
|
||||
CRSNNPtr crs = ProjectedCRS::create(props, geogCRS, NN_NO_CHECK(conv), cs);
|
||||
|
||||
if (!hasParamValue(step, "geoidgrids") &&
|
||||
|
||||
+1
-1
@@ -191,7 +191,7 @@ pj_open_lib_ex(projCtx ctx, const char *name, const char *mode,
|
||||
else if (strchr(dir_chars,*name)
|
||||
|| (*name == '.' && strchr(dir_chars,name[1]))
|
||||
|| (!strncmp(name, "..", 2) && strchr(dir_chars,name[2]))
|
||||
|| (name[1] == ':' && strchr(dir_chars,name[2])) )
|
||||
|| (name[0] != '\0' && name[1] == ':' && strchr(dir_chars,name[2])) )
|
||||
sysname = name;
|
||||
|
||||
/* or try to use application provided file finder */
|
||||
|
||||
+5
-4
@@ -1,6 +1,6 @@
|
||||
/******************************************************************************
|
||||
* Project: PROJ.4
|
||||
* Purpose: Revised, experimental API for PROJ.4, intended as the foundation
|
||||
* Project: PROJ
|
||||
* Purpose: Revised, experimental API for PROJ, intended as the foundation
|
||||
* for added geodetic functionality.
|
||||
*
|
||||
* The original proj API (defined previously in projects.h) has grown
|
||||
@@ -154,7 +154,7 @@ extern "C" {
|
||||
/* The version numbers should be updated with every release! **/
|
||||
#define PROJ_VERSION_MAJOR 6
|
||||
#define PROJ_VERSION_MINOR 1
|
||||
#define PROJ_VERSION_PATCH 0
|
||||
#define PROJ_VERSION_PATCH 1
|
||||
|
||||
extern char const PROJ_DLL pj_release[]; /* global release id string */
|
||||
|
||||
@@ -277,7 +277,8 @@ struct PJ_INFO {
|
||||
const char *version; /* Full version number */
|
||||
const char *searchpath; /* Paths where init and grid files are */
|
||||
/* looked for. Paths are separated by */
|
||||
/* semi-colons. */
|
||||
/* semi-colons on Windows, and colons */
|
||||
/* on non-Windows platforms. */
|
||||
const char * const *paths;
|
||||
size_t path_count;
|
||||
};
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef PJ_VERSION
|
||||
#define PJ_VERSION 610
|
||||
#define PJ_VERSION 611
|
||||
#endif
|
||||
|
||||
#ifdef PROJ_RENAME_SYMBOLS
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
** Copyright (c) 2012 Martin Raspaud
|
||||
**
|
||||
** See also (section 4.4.3.2):
|
||||
** http://www.eumetsat.int/en/area4/msg/news/us_doc/cgms_03_26.pdf
|
||||
** https://www.cgms-info.org/documents/pdf_cgms_03.pdf
|
||||
**
|
||||
** Permission is hereby granted, free of charge, to any person obtaining
|
||||
** a copy of this software and associated documentation files (the
|
||||
|
||||
@@ -242,7 +242,7 @@ PJ *PROJECTION(ob_tran) {
|
||||
/* Support some rather speculative test cases, where the rotated projection */
|
||||
/* is actually latlong. We do not want scaling in that case... */
|
||||
if (Q->link->right==PJ_IO_UNITS_RADIANS)
|
||||
P->right = PJ_IO_UNITS_PROJECTED;
|
||||
P->right = PJ_IO_UNITS_WHATEVER;
|
||||
|
||||
|
||||
return P;
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ char const pj_release[] =
|
||||
STR(PROJ_VERSION_MAJOR)"."
|
||||
STR(PROJ_VERSION_MINOR)"."
|
||||
STR(PROJ_VERSION_PATCH)", "
|
||||
"September 1st, 2019";
|
||||
"July 1st, 2019";
|
||||
|
||||
const char *pj_get_release() {
|
||||
return pj_release;
|
||||
|
||||
+1
-1
@@ -70,7 +70,7 @@ pj_err_list[] = {
|
||||
"argument not numerical or out of range", /* -58 */
|
||||
"inconsistent unit type between input and output", /* -59 */
|
||||
"arguments are mutually exclusive", /* -60 */
|
||||
"generic error of unknow origin", /* -61 */
|
||||
"generic error of unknown origin", /* -61 */
|
||||
|
||||
/* When adding error messages, remember to update ID defines in
|
||||
projects.h, and transient_error array in pj_transform */
|
||||
|
||||
@@ -975,6 +975,16 @@ $EXE -f %.7f ITRF2000 ITRF1993 -E >> ${OUT} <<EOF
|
||||
59.4967 -117.61748 329.396 1988
|
||||
EOF
|
||||
|
||||
echo "##############################################################" >> ${OUT}
|
||||
echo "Check ob_tran with o_proj=longlat (#1525)" >> ${OUT}
|
||||
$EXE -f %.7f +proj=longlat +ellps=GRS80 +to +proj=ob_tran +o_proj=longlat +lon_0=10 +o_lat_p=90 +ellps=GRS80 -E >>${OUT} <<EOF
|
||||
-122 46
|
||||
EOF
|
||||
echo "Test inverse handling" >> ${OUT}
|
||||
$EXE -f %.7f -I +proj=longlat +ellps=GRS80 +to +proj=ob_tran +o_proj=longlat +lon_0=10 +o_lat_p=90 +ellps=GRS80 -E >>${OUT} <<EOF
|
||||
-122 46
|
||||
EOF
|
||||
|
||||
|
||||
# Done!
|
||||
# do 'diff' with distribution results
|
||||
|
||||
@@ -468,3 +468,8 @@ Test EPSG:4896 to EPSG:7930
|
||||
Test ITRF2000 to ITRF1993
|
||||
59.4967 -117.61748 329.396 59.4967002 -117.6174799 329.3845529
|
||||
59.4967 -117.61748 329.396 59.4967002 -117.6174799 329.3845529 1988
|
||||
##############################################################
|
||||
Check ob_tran with o_proj=longlat (#1525)
|
||||
-122 46 -132.0000000 46.0000000 0.0000000
|
||||
Test inverse handling
|
||||
-122 46 -112.0000000 46.0000000 0.0000000
|
||||
|
||||
@@ -1650,6 +1650,38 @@ TEST_F(CApi, proj_identify) {
|
||||
ObjListKeeper keeper_res(res);
|
||||
EXPECT_EQ(res, nullptr);
|
||||
}
|
||||
{
|
||||
auto obj2 = proj_create(
|
||||
m_ctxt, "+proj=longlat +datum=WGS84 +no_defs +type=crs");
|
||||
ObjectKeeper keeper2(obj2);
|
||||
ASSERT_NE(obj2, nullptr);
|
||||
int *confidence = nullptr;
|
||||
auto res = proj_identify(m_ctxt, obj2, nullptr, nullptr, &confidence);
|
||||
ObjListKeeper keeper_res(res);
|
||||
EXPECT_EQ(proj_list_get_count(res), 4);
|
||||
proj_int_list_destroy(confidence);
|
||||
}
|
||||
{
|
||||
auto obj2 = proj_create_from_database(m_ctxt, "IGNF", "ETRS89UTM28",
|
||||
PJ_CATEGORY_CRS, false, nullptr);
|
||||
ObjectKeeper keeper2(obj2);
|
||||
ASSERT_NE(obj2, nullptr);
|
||||
int *confidence = nullptr;
|
||||
auto res = proj_identify(m_ctxt, obj2, "EPSG", nullptr, &confidence);
|
||||
ObjListKeeper keeper_res(res);
|
||||
EXPECT_EQ(proj_list_get_count(res), 1);
|
||||
auto gotCRS = proj_list_get(m_ctxt, res, 0);
|
||||
ASSERT_NE(gotCRS, nullptr);
|
||||
ObjectKeeper keeper_gotCRS(gotCRS);
|
||||
auto auth = proj_get_id_auth_name(gotCRS, 0);
|
||||
ASSERT_TRUE(auth != nullptr);
|
||||
EXPECT_EQ(auth, std::string("EPSG"));
|
||||
auto code = proj_get_id_code(gotCRS, 0);
|
||||
ASSERT_TRUE(code != nullptr);
|
||||
EXPECT_EQ(code, std::string("25828"));
|
||||
EXPECT_EQ(confidence[0], 70);
|
||||
proj_int_list_destroy(confidence);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -3247,4 +3279,69 @@ TEST_F(CApi, proj_normalize_for_visualization) {
|
||||
"+step +proj=utm +zone=31 +ellps=WGS84");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST_F(CApi, proj_normalize_for_visualization_with_alternatives) {
|
||||
|
||||
auto P = proj_create_crs_to_crs(m_ctxt, "EPSG:4326", "EPSG:3003", nullptr);
|
||||
ObjectKeeper keeper_P(P);
|
||||
ASSERT_NE(P, nullptr);
|
||||
auto Pnormalized = proj_normalize_for_visualization(m_ctxt, P);
|
||||
ObjectKeeper keeper_Pnormalized(Pnormalized);
|
||||
ASSERT_NE(Pnormalized, nullptr);
|
||||
|
||||
{
|
||||
PJ_COORD c;
|
||||
// Approximately Roma
|
||||
c.lpz.lam = 12.5;
|
||||
c.lpz.phi = 42;
|
||||
c.lpz.z = 0;
|
||||
c = proj_trans(Pnormalized, PJ_FWD, c);
|
||||
EXPECT_NEAR(c.xy.x, 1789912.46264783037, 1e-8);
|
||||
EXPECT_NEAR(c.xy.y, 4655716.25402576849, 1e-8);
|
||||
auto projstr = proj_pj_info(Pnormalized).definition;
|
||||
ASSERT_NE(projstr, nullptr);
|
||||
EXPECT_EQ(std::string(projstr),
|
||||
"proj=pipeline step proj=unitconvert xy_in=deg xy_out=rad "
|
||||
"step proj=push v_3 step proj=cart ellps=WGS84 "
|
||||
"step inv proj=helmert x=-104.1 y=-49.1 z=-9.9 rx=0.971 "
|
||||
"ry=-2.917 rz=0.714 s=-11.68 convention=position_vector "
|
||||
"step inv proj=cart ellps=intl step proj=pop v_3 "
|
||||
"step proj=tmerc lat_0=0 lon_0=9 k=0.9996 x_0=1500000 "
|
||||
"y_0=0 ellps=intl");
|
||||
}
|
||||
|
||||
{
|
||||
PJ_COORD c;
|
||||
// Approximately Roma
|
||||
c.xyz.x = 1789912.46264783037;
|
||||
c.xyz.y = 4655716.25402576849;
|
||||
c.xyz.z = 0;
|
||||
c = proj_trans(Pnormalized, PJ_INV, c);
|
||||
EXPECT_NEAR(c.lp.lam, 12.5, 1e-8);
|
||||
EXPECT_NEAR(c.lp.phi, 42, 1e-8);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST_F(CApi, proj_normalize_for_visualization_with_alternatives_reverse) {
|
||||
|
||||
auto P = proj_create_crs_to_crs(m_ctxt, "EPSG:3003", "EPSG:4326", nullptr);
|
||||
ObjectKeeper keeper_P(P);
|
||||
ASSERT_NE(P, nullptr);
|
||||
auto Pnormalized = proj_normalize_for_visualization(m_ctxt, P);
|
||||
ObjectKeeper keeper_Pnormalized(Pnormalized);
|
||||
ASSERT_NE(Pnormalized, nullptr);
|
||||
|
||||
PJ_COORD c;
|
||||
// Approximately Roma
|
||||
c.xyz.x = 1789912.46264783037;
|
||||
c.xyz.y = 4655716.25402576849;
|
||||
c.xyz.z = 0;
|
||||
c = proj_trans(Pnormalized, PJ_FWD, c);
|
||||
EXPECT_NEAR(c.lp.lam, 12.5, 1e-8);
|
||||
EXPECT_NEAR(c.lp.phi, 42, 1e-8);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
+40
-5
@@ -1498,6 +1498,19 @@ TEST(crs, geodeticcrs_identify_db) {
|
||||
->identify(factory);
|
||||
ASSERT_EQ(res.size(), 0U);
|
||||
}
|
||||
{
|
||||
// Test identification from PROJ string
|
||||
auto obj = PROJStringParser().createFromPROJString(
|
||||
"+proj=longlat +datum=WGS84 +type=crs");
|
||||
auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj);
|
||||
ASSERT_TRUE(crs != nullptr);
|
||||
auto res = crs->identify(factory);
|
||||
ASSERT_EQ(res.size(), 1U);
|
||||
ASSERT_TRUE(!res.front().first->identifiers().empty());
|
||||
EXPECT_EQ(*res.front().first->identifiers()[0]->codeSpace(), "EPSG");
|
||||
EXPECT_EQ(res.front().first->identifiers()[0]->code(), "4326");
|
||||
EXPECT_EQ(res.front().second, 70);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -1971,13 +1984,35 @@ TEST(crs, projectedCRS_identify_no_db) {
|
||||
TEST(crs, projectedCRS_identify_db) {
|
||||
auto dbContext = DatabaseContext::create();
|
||||
auto factoryEPSG = AuthorityFactory::create(dbContext, "EPSG");
|
||||
auto factoryIGNF = AuthorityFactory::create(dbContext, "IGNF");
|
||||
auto factoryAnonymous = AuthorityFactory::create(dbContext, std::string());
|
||||
{
|
||||
// Identify by existing code
|
||||
auto res =
|
||||
factoryEPSG->createProjectedCRS("2172")->identify(factoryEPSG);
|
||||
ASSERT_EQ(res.size(), 1U);
|
||||
EXPECT_EQ(res.front().first->getEPSGCode(), 2172);
|
||||
EXPECT_EQ(res.front().second, 100);
|
||||
auto crs = factoryEPSG->createProjectedCRS("2172");
|
||||
{
|
||||
auto res = crs->identify(factoryEPSG);
|
||||
ASSERT_EQ(res.size(), 1U);
|
||||
EXPECT_EQ(res.front().first->getEPSGCode(), 2172);
|
||||
EXPECT_EQ(res.front().second, 100);
|
||||
}
|
||||
{
|
||||
auto res = crs->identify(factoryAnonymous);
|
||||
ASSERT_EQ(res.size(), 1U);
|
||||
}
|
||||
{
|
||||
auto res = crs->identify(factoryIGNF);
|
||||
ASSERT_EQ(res.size(), 0U);
|
||||
}
|
||||
}
|
||||
{
|
||||
// Identify by existing code
|
||||
auto crs = factoryIGNF->createProjectedCRS("ETRS89UTM28");
|
||||
{
|
||||
auto res = crs->identify(factoryEPSG);
|
||||
ASSERT_EQ(res.size(), 1U);
|
||||
EXPECT_EQ(res.front().first->getEPSGCode(), 25828);
|
||||
EXPECT_EQ(res.front().second, 70);
|
||||
}
|
||||
}
|
||||
{
|
||||
// Non-existing code
|
||||
|
||||
@@ -85,8 +85,6 @@ TEST(factory, AuthorityFactory_createUnitOfMeasure_linear) {
|
||||
auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG");
|
||||
EXPECT_THROW(factory->createUnitOfMeasure("-1"),
|
||||
NoSuchAuthorityCodeException);
|
||||
EXPECT_TRUE(nn_dynamic_pointer_cast<UnitOfMeasure>(
|
||||
factory->createObject("9001")) != nullptr);
|
||||
auto uom = factory->createUnitOfMeasure("9001");
|
||||
EXPECT_EQ(uom->name(), "metre");
|
||||
EXPECT_EQ(uom->type(), UnitOfMeasure::Type::LINEAR);
|
||||
|
||||
@@ -1018,7 +1018,7 @@ TEST(wkt_parse, wkt1_projected) {
|
||||
" PARAMETER[\"false_northing\",0],\n"
|
||||
" UNIT[\"metre\",1,\n"
|
||||
" AUTHORITY[\"EPSG\",\"9001\"]],\n"
|
||||
" AXIS[\"(E)\",EAST],\n"
|
||||
" AXIS[\"(E)\",East],\n" // should normally be uppercase
|
||||
" AXIS[\"(N)\",NORTH],\n"
|
||||
" AUTHORITY[\"EPSG\",\"32631\"]]";
|
||||
auto obj = WKTParser()
|
||||
@@ -8906,6 +8906,7 @@ TEST(io, createFromUserInput) {
|
||||
EXPECT_THROW(createFromUserInput("UTM zone 31", dbContext),
|
||||
ParsingException);
|
||||
EXPECT_NO_THROW(createFromUserInput("WGS84 UTM zone 31N", dbContext));
|
||||
EXPECT_NO_THROW(createFromUserInput("ID74", dbContext));
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -8951,6 +8952,8 @@ TEST(io, guessDialect) {
|
||||
|
||||
EXPECT_EQ(WKTParser().guessDialect("foo"),
|
||||
WKTParser::WKTGuessedDialect::NOT_WKT);
|
||||
EXPECT_EQ(WKTParser().guessDialect("ID74"),
|
||||
WKTParser::WKTGuessedDialect::NOT_WKT);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
@@ -4759,6 +4759,38 @@ TEST(operation, geogCRS_to_geogCRS_3D) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(operation, geogCRS_3D_lat_long_non_metre_to_geogCRS_longlat) {
|
||||
|
||||
auto wkt = "GEOGCRS[\"my CRS\",\n"
|
||||
" DATUM[\"World Geodetic System 1984\",\n"
|
||||
" ELLIPSOID[\"WGS 84\",6378137,298.257223563],\n"
|
||||
" ID[\"EPSG\",6326]],\n"
|
||||
" CS[ellipsoidal,3],\n"
|
||||
" AXIS[\"latitude\",north,\n"
|
||||
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
|
||||
" AXIS[\"longitude\",east,\n"
|
||||
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
|
||||
" AXIS[\"ellipsoidal height\",up,\n"
|
||||
" LENGTHUNIT[\"my_vunit\",0.3]]]";
|
||||
auto srcCRS_obj = WKTParser().createFromWKT(wkt);
|
||||
auto srcCRS = nn_dynamic_pointer_cast<CRS>(srcCRS_obj);
|
||||
ASSERT_TRUE(srcCRS != nullptr);
|
||||
|
||||
auto dstCRS_obj = PROJStringParser().createFromPROJString(
|
||||
"+proj=longlat +datum=WGS84 +type=crs");
|
||||
auto dstCRS = nn_dynamic_pointer_cast<CRS>(dstCRS_obj);
|
||||
ASSERT_TRUE(dstCRS != nullptr);
|
||||
|
||||
auto op = CoordinateOperationFactory::create()->createOperation(
|
||||
NN_CHECK_ASSERT(srcCRS), NN_CHECK_ASSERT(dstCRS));
|
||||
ASSERT_TRUE(op != nullptr);
|
||||
EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()),
|
||||
"+proj=pipeline +step +proj=axisswap +order=2,1 +step "
|
||||
"+proj=unitconvert +z_in=0.3 +z_out=m");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(operation, geogCRS_without_id_to_geogCRS_3D_context) {
|
||||
auto authFactory =
|
||||
AuthorityFactory::create(DatabaseContext::create(), "EPSG");
|
||||
@@ -5903,6 +5935,35 @@ TEST(operation, boundCRS_with_basecrs_with_extent_to_geogCRS) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(operation, ETRS89_3D_to_proj_string_with_geoidgrids_nadgrids) {
|
||||
auto authFactory =
|
||||
AuthorityFactory::create(DatabaseContext::create(), "EPSG");
|
||||
// ETRS89 3D
|
||||
auto src = authFactory->createCoordinateReferenceSystem("4937");
|
||||
auto objDst = PROJStringParser().createFromPROJString(
|
||||
"+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 "
|
||||
"+k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel "
|
||||
"+nadgrids=rdtrans2008.gsb +geoidgrids=naptrans2008.gtx +units=m "
|
||||
"+type=crs");
|
||||
auto dst = nn_dynamic_pointer_cast<CRS>(objDst);
|
||||
ASSERT_TRUE(dst != nullptr);
|
||||
auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0);
|
||||
auto list = CoordinateOperationFactory::create()->createOperations(
|
||||
src, NN_NO_CHECK(dst), ctxt);
|
||||
ASSERT_EQ(list.size(), 1U);
|
||||
EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()),
|
||||
"+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad "
|
||||
"+step +proj=axisswap +order=2,1 "
|
||||
"+step +inv +proj=vgridshift +grids=naptrans2008.gtx "
|
||||
"+multiplier=1 "
|
||||
"+step +inv +proj=hgridshift +grids=rdtrans2008.gsb "
|
||||
"+step +proj=sterea +lat_0=52.1561605555556 "
|
||||
"+lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 "
|
||||
"+y_0=463000 +ellps=bessel");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
static VerticalCRSNNPtr createVerticalCRS() {
|
||||
PropertyMap propertiesVDatum;
|
||||
propertiesVDatum.set(Identifier::CODESPACE_KEY, "EPSG")
|
||||
@@ -5941,8 +6002,8 @@ static BoundCRSNNPtr createBoundVerticalCRS() {
|
||||
auto vertCRS = createVerticalCRS();
|
||||
auto transformation =
|
||||
Transformation::createGravityRelatedHeightToGeographic3D(
|
||||
PropertyMap(), vertCRS, GeographicCRS::EPSG_4979, "egm08_25.gtx",
|
||||
std::vector<PositionalAccuracyNNPtr>());
|
||||
PropertyMap(), vertCRS, GeographicCRS::EPSG_4979, nullptr,
|
||||
"egm08_25.gtx", std::vector<PositionalAccuracyNNPtr>());
|
||||
return BoundCRS::create(vertCRS, GeographicCRS::EPSG_4979, transformation);
|
||||
}
|
||||
|
||||
@@ -6727,6 +6788,22 @@ TEST(operation, compoundCRS_from_WKT2_no_id_to_geogCRS_3D_context) {
|
||||
auto list =
|
||||
CoordinateOperationFactory::create()->createOperations(src, dst, ctxt);
|
||||
ASSERT_GE(list.size(), 1U);
|
||||
|
||||
{
|
||||
// Important here is vgridshift before hgridshift
|
||||
auto op_proj =
|
||||
list[0]->exportToPROJString(PROJStringFormatter::create().get());
|
||||
EXPECT_EQ(
|
||||
op_proj,
|
||||
"+proj=pipeline +step +inv +proj=sterea +lat_0=52.1561605555556 "
|
||||
"+lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 "
|
||||
"+ellps=bessel "
|
||||
"+step +proj=vgridshift +grids=naptrans2008.gtx +multiplier=1 "
|
||||
"+step +proj=hgridshift +grids=rdtrans2008.gsb "
|
||||
"+step +proj=unitconvert +xy_in=rad +z_in=m +xy_out=deg +z_out=m "
|
||||
"+step +proj=axisswap +order=2,1");
|
||||
}
|
||||
|
||||
auto wkt2 =
|
||||
"COMPOUNDCRS[\"unknown\",\n"
|
||||
" PROJCRS[\"unknown\",\n"
|
||||
@@ -6759,8 +6836,12 @@ TEST(operation, compoundCRS_from_WKT2_no_id_to_geogCRS_3D_context) {
|
||||
for (size_t i = 0; i < list.size(); i++) {
|
||||
const auto &op = list[i];
|
||||
const auto &op2 = list2[i];
|
||||
EXPECT_TRUE(
|
||||
op->isEquivalentTo(op2.get(), IComparable::Criterion::EQUIVALENT));
|
||||
auto op_proj =
|
||||
op->exportToPROJString(PROJStringFormatter::create().get());
|
||||
auto op2_proj =
|
||||
op2->exportToPROJString(PROJStringFormatter::create().get());
|
||||
EXPECT_EQ(op_proj, op2_proj) << "op=" << op->nameStr()
|
||||
<< " op2=" << op2->nameStr();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6853,6 +6934,29 @@ TEST(operation, IGNF_LAMB1_TO_EPSG_4326) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(operation, NAD83_to_projeted_CRS_based_on_NAD83_2011) {
|
||||
auto authFactory =
|
||||
AuthorityFactory::create(DatabaseContext::create(), "EPSG");
|
||||
auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0);
|
||||
ctxt->setSpatialCriterion(
|
||||
CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION);
|
||||
auto list = CoordinateOperationFactory::create()->createOperations(
|
||||
// NAD83
|
||||
authFactory->createCoordinateReferenceSystem("4269"),
|
||||
// NAD83(2011) / California Albers
|
||||
authFactory->createCoordinateReferenceSystem("6414"), ctxt);
|
||||
ASSERT_EQ(list.size(), 1U);
|
||||
EXPECT_EQ(list[0]->nameStr(), "Ballpark geographic offset from NAD83 to "
|
||||
"NAD83(2011) + California Albers");
|
||||
EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()),
|
||||
"+proj=pipeline +step +proj=axisswap +order=2,1 "
|
||||
"+step +proj=unitconvert +xy_in=deg +xy_out=rad "
|
||||
"+step +proj=aea +lat_0=0 +lon_0=-120 +lat_1=34 "
|
||||
"+lat_2=40.5 +x_0=0 +y_0=-4000000 +ellps=GRS80");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(operation, isPROJInstantiable) {
|
||||
|
||||
{
|
||||
|
||||
@@ -11,10 +11,10 @@ fi
|
||||
echo "$TRAVIS_SECURE_ENV_VARS"
|
||||
./travis/build_docs.sh
|
||||
# Only build and publish docs when changes are made on most recent maintenance branch
|
||||
if test "$TRAVIS_SECURE_ENV_VARS" = "true" -a "$TRAVIS_BRANCH" = "6.0"; then
|
||||
echo "publish website";
|
||||
./travis/add_deploy_key.sh;
|
||||
./travis/deploy_website.sh $TRAVIS_BUILD_DIR/docs/build /tmp;
|
||||
if test "$TRAVIS_SECURE_ENV_VARS" = "true" -a "$TRAVIS_BRANCH" = "6.1"; then
|
||||
#echo "publish website";
|
||||
#./travis/add_deploy_key.sh;
|
||||
#./travis/deploy_website.sh $TRAVIS_BUILD_DIR/docs/build /tmp;
|
||||
|
||||
# Disabled: see discussion of https://github.com/OSGeo/proj.4/pull/1035
|
||||
# if test "$BUILD_NAME" = "linux_gcc"; then
|
||||
|
||||
@@ -13,17 +13,17 @@ cp $builddir/latex/proj.pdf $destdir/projdocs
|
||||
cd $destdir/projdocs
|
||||
git init
|
||||
git checkout -b gh-pages
|
||||
git remote add origin git@github.com:OSGeo/proj.4.git
|
||||
git remote add origin git@github.com:OSGeo/PROJ.git
|
||||
|
||||
git config user.email "proj4bot@proj4.bot"
|
||||
git config user.name "proj.4 deploybot"
|
||||
git config user.email "proj.bot@proj.bot"
|
||||
git config user.name "PROJ deploybot"
|
||||
|
||||
# A few files we must manually create
|
||||
echo "_site" > .gitignore
|
||||
touch .nojekyll
|
||||
echo "proj4.org" > CNAME
|
||||
echo "proj.org" > CNAME
|
||||
|
||||
git add -A
|
||||
git commit -m "update with results of commit https://github.com/OSGeo/proj.4/commit/$TRAVIS_COMMIT"
|
||||
git commit -m "update with results of commit https://github.com/OSGeo/PROJ/commit/$TRAVIS_COMMIT"
|
||||
git push -f origin gh-pages
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ brew update
|
||||
brew install ccache
|
||||
brew install sqlite3
|
||||
brew install doxygen
|
||||
brew install md5sha1sum
|
||||
|
||||
export PATH=$HOME/Library/Python/2.7/bin:$PATH
|
||||
# breathe=4.12.0 is the last version to work for us with sphinx 1.8.5 / Python 2
|
||||
|
||||
Reference in New Issue
Block a user