Compare commits

...
69 Commits
Author SHA1 Message Date
Mike Taves fcf3ba260b ReadTheDocs: update output directory for artefacts, other updates 2023-01-25 21:31:46 +13:00
Mike Taves 04494f005c Improve docs for 6.1 2023-01-25 01:18:51 +13:00
Mike Taves 3002bd701d Implement ReadTheDocs for 6.1, disable other CI workflows (#3582) 2023-01-22 16:56:53 +13:00
Mike Taves 34df913b5f README.md: update badges to specify branch [ci skip] 2019-11-08 15:37:38 +13:00
Kristian Evers 2228592582 Disable website generation for 6.1 branch 2019-09-01 09:24:48 +02:00
Michael D. Smith f5d935b67a Add osgeo community logo, part of incubation (#1568) 2019-08-24 15:19:22 +02:00
Even Rouault 0d878429db Dummy commit to force website reconstruction 2019-08-06 19:46:55 +02:00
Kristian Evers 5e676592b4 docs: Fix malformed link in news.rst 2019-07-01 14:28:15 +02:00
Kristian Evers 6cb5f0c7ef [Backport 6.1] geos.cpp: Update pdf_cgms_03.pdf location (Fixes… (#1535)
[Backport 6.1] geos.cpp: Update pdf_cgms_03.pdf location (Fixes #1532)
2019-07-01 09:40:12 +02:00
Kristian Evers 733dd744b6 Update version number on website 2019-07-01 09:34:23 +02:00
Kristian Evers 53e785b48e Fix release date for 6.1.1 2019-07-01 09:13:40 +02:00
Kristian Evers 9dceaa876c Update website for 6.1.1 release 2019-07-01 09:13:18 +02:00
Kurt Schwehr b5218364fd geos.cpp: Update pdf_cgms_03.pdf location (Fixes #1532) 2019-06-25 21:30:33 +00:00
Kristian Evers 7bf657b368 update version numbers for upcomming patch release 2019-06-23 20:30:33 +02:00
Kristian Evers 12d0a7a62c Update NEWS for 6.1.1 release 2019-06-23 20:23:55 +02:00
Kristian Evers e7dc7cabe6 Update man-pages from Sphinx-docs 2019-06-23 20:08:10 +02:00
Kristian Evers 954bd87db1 [Backport 6.1] +proj=ob_tran +o_proj=longlat: set right unit to PJ_IO_UNITS_WHATEVER so as to be able to chain with unitconvert (fixes #1525) (#1527)
[Backport 6.1] +proj=ob_tran +o_proj=longlat: set right unit to PJ_IO_UNITS_WHATEVER so as to be able to chain with unitconvert (fixes #1525)
2019-06-23 12:05:51 +02:00
Even Rouault 11a53b7c02 +proj=ob_tran +o_proj=longlat: set right unit to PJ_IO_UNITS_WHATEVER so as to be able to chain with unitconvert (fixes #1525) 2019-06-22 21:52:28 +00:00
Even Rouault b5341a102a Merge pull request #1514 from OSGeo/backport-1513-to-6.1
[Backport 6.1] Fix compilation error with gcc 4.9.3 (fixes #1512)
2019-06-11 11:45:42 +02:00
Even Rouault b17b34b969 Fix compilation error with gcc 4.9.3 (fixes #1512) 2019-06-11 08:09:32 +00:00
Even Rouault 148e9e9c7b Merge pull request #1510 from OSGeo/backport-1509-to-6.1
[Backport 6.1] WKT1 importer: do case insensitive comparison for axis direction
2019-06-07 10:41:04 +02:00
Even Rouault ed5916b3e9 WKT1 importer: do case insensitive comparison for axis direction
Fixes https://github.com/OSGeo/gdal/issues/1623

http://portal.opengeospatial.org/files/?artifact_id=999 is not explicit if
string comparisons should be case sensitive or not, but WKT2 allows for case
differences in keyword and enumerated value, so follow this relaxed interpretation
for WKT1 as well.
2019-06-06 19:28:14 +00:00
Kristian Evers b8b8f3639c [Backport 6.1] createFromUserInput()/guessDialect(): do not confuse 'ID74' CRS with WKT2 ID[] node (#1507)
[Backport 6.1] createFromUserInput()/guessDialect(): do not confuse 'ID74' CRS with WKT2 ID[] node
2019-06-06 14:02:47 +02:00
Even Rouault 2c9eeb0825 Merge pull request #1504 from OSGeo/backport-1501-to-6.1
[Backport 6.1] Update GitHub references: proj.4 -> PROJ
2019-06-06 12:11:34 +02:00
Even Rouault 9a7769fe96 createFromUserInput()/guessDialect(): do not confuse 'ID74' CRS with WKT2 ID[] node 2019-06-05 20:56:47 +00:00
Kristian Evers ff85c0a70d [Backport 6.1] Fix incorrect delimator ";" used to separate proj_info().searchpath entries (#1500)
[Backport 6.1] Fix incorrect delimator ";" used to separate proj_info().searchpath entries
2019-06-05 19:28:45 +02:00
Kristian Evers 97fe47939d [Backport 6.1] proj_info().searchpath should not include PROJ_LIB path (#1499)
[Backport 6.1] proj_info().searchpath should not include PROJ_LIB path
2019-06-05 19:28:17 +02:00
Mike Taves bb47726990 Update GitHub references: proj.4 -> PROJ 2019-06-04 21:29:04 +00:00
Nyall Dawson c4e3e60fdc Fix incorrect delimator ";" used to separate proj_info().searchpath
entries on non-windows platforms, should be ":"
2019-06-03 06:55:32 +00:00
Nyall Dawson 32dbd95501 proj_info().searchpath should not include PROJ_LIB path if
the context search_paths is not empty

The logic used when actually searching for files is that if
the context search_paths are set, these completely override
the PROJ_LIB variable. So we should make proj_info().searchpath
correctly reflect this, and not include the PROJ_LIB path
in searchpath if the context has search_paths manually set.
2019-06-02 23:23:59 +00:00
Mike Taves e16b5585d5 Update website: proj4.org -> proj.org 2019-06-01 10:51:39 +02:00
Even Rouault f02c68a556 Docs: rename project to PROJ 2019-06-01 10:45:46 +02:00
Even Rouault 5e9d68f716 pj_open_lib_ex(): avoid off-by-one reading of name argument if strlen(name) == 1 (fixes #1489) 2019-05-29 15:47:39 +02:00
Kristian Evers fe3a8845e2 doc:Update cs2cs return values to reflect PROJ 6 changes 2019-05-27 12:53:21 +02:00
Kristian Evers e55d16e579 [Backport 6.1] Database: update to EPSG v9.6.3 (#1486)
[Backport 6.1] Database: update to EPSG v9.6.3
2019-05-25 19:19:06 +02:00
Even Rouault 164e166cc1 Database: update to EPSG v9.6.3 2019-05-25 12:43:17 +00:00
Even Rouault b788b1b30b Merge pull request #1482 from OSGeo/backport-1481-to-6.1
[Backport 6.1] createOperations(): fix GeogCRS to GeogCRS when there is a axis reversal and vertical unit change (relates to https://github.com/OSGeo/gdal/issues/1561)
2019-05-24 09:45:40 +02:00
Even Rouault 42d51f9e57 createOperations(): fix GeogCRS to GeogCRS when there is a axis reversal and vertical unit change (relates to https://github.com/OSGeo/gdal/issues/1561) 2019-05-23 19:36:04 +00:00
Kristian Evers 0ccc6941d6 UTM doc: Move +south and +approx parameters to optional section 2019-05-22 00:57:29 +03:00
Even Rouault 4c910ec2cd Merge pull request #1478 from OSGeo/backport-1477-to-6.1
[Backport 6.1] createOperations(): avoid exception when transforming from NAD83 to projected CRS using NAD83(2011) (fixes #1474)
2019-05-21 16:08:50 +02:00
Even Rouault 5727a6c2f5 createOperations(): avoid exception when transforming from NAD83 to projected CRS using NAD83(2011) (fixes #1474) 2019-05-21 11:50:11 +00:00
Kristian Evers 573e57a8b3 [Backport 6.1] update doc building Docker container to Python3 for Sphinx 2.0 support (#1476)
[Backport 6.1] update doc building Docker container to Python3 for Sphinx 2.0 support
2019-05-20 11:09:07 +02:00
Howard Butler 602c629481 \u is a python3 thing 2019-05-15 21:06:22 +00:00
Howard Butler 6c47f8f836 update doc building Docker container to Python3 for Sphinx 2.0 support 2019-05-15 20:56:50 +00:00
Kristian Evers 4212384c50 Publish website from 6.1 branch 2019-05-15 20:15:29 +02:00
Kristian Evers da7cf08b66 Update website news and download for 6.1.0 release 2019-05-15 20:08:02 +02:00
Andrew Bell c98489fcf2 Add file reference language. 2019-05-15 10:56:27 -05:00
Even Rouault 2c21977bd5 Merge pull request #1467 from OSGeo/backport-1466-to-6.1
[Backport 6.1] identify(): take into account the authority passed in (fixes #1465)
2019-05-13 20:34:10 +02:00
Even Rouault bd254afe7b identify(): take into account the authority passed in (fixes #1465)
When identifying an object that has already a code with authority A
but the authority of interest passed was B, then it was not checking
that A != B, and did not try to search in the objects of B.
2019-05-13 14:42:38 +00:00
Even Rouault 32c75e1bce Fix doc of proj_identify() 2019-05-12 09:07:37 +02:00
Even Rouault 7f7f2d847a Fix identification of GeodeticCRS expressed by PROJ string for EPSG authority 2019-05-12 09:04:09 +02:00
Kristian Evers 6454541e5b pj_release: Use correct release date for 6.1.0 2019-05-09 09:46:44 +02:00
Even Rouault 0c56c9ad56 Merge pull request #1463 from OSGeo/backport-1462-to-6.1
[Backport 6.1] Update to EPSG 9.6.2
2019-05-09 08:39:23 +02:00
Even Rouault 51a487e3b3 NEWS: update for EPSG v9.6.2 mention 2019-05-08 20:09:17 +00:00
Even Rouault 88b1900cfb Database: update to EPSG 9.6.2 2019-05-08 20:02:00 +00:00
Even Rouault ebed78c2d1 scripts/build_db.py: update to reflect new proj.db structure 2019-05-08 20:01:51 +00:00
Even Rouault 23e38c11bb Database: add bd72lb72_etrs89lb08.gsb grid in grid_alternatives (added in proj-datumgrid-europe package per https://github.com/OSGeo/proj-datumgrid/pull/50) 2019-05-08 18:04:29 +02:00
Even Rouault 5bc094eccb proj_normalize_for_visualization(): fix crash when ctx == nullptr 2019-05-08 17:37:11 +02:00
Even Rouault 9efc86ad44 Merge pull request #1460 from OSGeo/backport-1459-to-6.1
[Backport 6.1] proj_normalize_for_visualization(): fix when there are coordinate operation alternatives
2019-05-08 15:58:30 +02:00
Even Rouault d91f05de15 proj_normalize_for_visualization(): fix when there are coordinate operation alternatives 2019-05-08 10:00:08 +00:00
Even Rouault 4948c5a24d Merge pull request #1458 from OSGeo/backport-1454-to-6.1
[Backport 6.1] createOperations(): fix case of ETRS89 3D to proj string with nadgrids and geoidgrids
2019-05-07 15:40:50 +02:00
Even Rouault 939dc46af4 Database: register URLs for naptrans2008.gtx and rdtrans2008.gsb (non-free) grids 2019-05-07 09:21:55 +00:00
Even Rouault 1c2b8de600 data/Makefile.am: add detection of md5sum utility, and install md5sha1sum on MacOSX Travis 2019-05-06 19:25:05 +00:00
Even Rouault 1e2f1cc804 createOperations(): for 'Amersfoort / RD New + NAP height' (EPSG:7415) to ETRS89 (EPSG:4937), make sure that the vgridshift is applied first (ie on Amersfoort datum) before the hgridshift 2019-05-06 18:21:27 +00:00
Kristian Evers 60cea743d3 Merge pull request #1456 from OSGeo/backport-1455-to-6.1
[Backport 6.1] Fix typos in geodesic doc
2019-05-06 17:49:18 +02:00
Peter Limkilde Svendsen 419d3f45e8 Fix typos in geodesic doc 2019-05-06 14:59:05 +00:00
Even Rouault 9c1c80e68c Merge pull request #1453 from OSGeo/backport-1452-to-6.1
[Backport 6.1] Fix spelling errors.
2019-05-06 12:59:53 +02:00
Even Rouault 6a2acd7889 createOperations(): fix case of ETRS89 3D to proj string with nadgrids and geoidgrids
Fixes https://lists.osgeo.org/pipermail/proj/2019-May/008519.html
2019-05-06 10:43:04 +00:00
Bas Couwenberg bc459dbb1f Fix spelling errors.
* unknow -> unknown
2019-05-06 06:54:10 +00:00
97 changed files with 1724 additions and 602 deletions
+2
View File
@@ -98,6 +98,8 @@ install_manifest.txt
tmp_breathe
/docs/.doxygen_up_to_date
/docs/build
/docs/plot/images
/latex
# m4
m4/libtool.m4
+50
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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.*
+57 -1
View File
@@ -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
+4 -4
View File
@@ -1,8 +1,8 @@
# PROJ
[![Travis Status](https://travis-ci.com/OSGeo/proj.4.svg?branch=master)](https://travis-ci.com/OSGeo/proj.4)
[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/584j49uguwoo5evi?svg=true)](https://ci.appveyor.com/project/OSGeo/proj-4)
[![Coveralls Status](https://coveralls.io/repos/github/OSGeo/proj.4/badge.svg?branch=master)](https://coveralls.io/github/OSGeo/proj.4?branch=master)
[![Travis Status](https://travis-ci.com/OSGeo/PROJ.svg?branch=6.1)](https://travis-ci.com/OSGeo/PROJ)
[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/github/OSGeo/PROJ?branch=6.1&svg=true)](https://ci.appveyor.com/project/OSGeo/PROJ?branch=6.1)
[![Coveralls Status](https://coveralls.io/repos/github/OSGeo/PROJ/badge.svg?branch=6.1)](https://coveralls.io/github/OSGeo/PROJ?branch=6.1)
[![Gitter](https://badges.gitter.im/OSGeo/proj.4.svg)](https://gitter.im/OSGeo/proj.4)
[![Mailing List](https://img.shields.io/badge/PROJ-mailing%20list-4eb899.svg)](http://lists.osgeo.org/mailman/listinfo/proj)
@@ -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:
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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)"; \
-2
View File
@@ -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
View File
@@ -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
View File
@@ -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
+33 -1
View File
@@ -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);
+5
View File
@@ -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);
+55
View File
@@ -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);
+2 -2
View File
@@ -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);
+26 -3
View File
@@ -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);
+2 -2
View File
@@ -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');
+3 -3
View File
@@ -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);
+3 -3
View File
@@ -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
+17
View File
@@ -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

-86
View File
@@ -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
View File
@@ -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)))
-2
View File
@@ -1,2 +0,0 @@
python3 plot.py plotdefs.json images/
+12
View File
@@ -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/
+15
View File
@@ -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
+9
View File
@@ -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
+4
View File
@@ -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
-------------------------------------------------------------------------------
+2 -2
View File
@@ -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/
+2 -2
View File
@@ -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/
+2 -2
View File
@@ -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/
+2 -2
View File
@@ -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/
+2 -2
View File
@@ -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/
+7 -3
View File
@@ -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/
+1 -1
View File
@@ -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::
+4 -4
View File
@@ -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>`
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
+2 -2
View File
@@ -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.)
-5
View File
@@ -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
+103
View File
@@ -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
++++++++++++++++++++++++++++++++++++++++
+1 -1
View File
@@ -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``.
+5 -4
View File
@@ -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
==================
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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:
+2 -2
View File
@@ -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
+2 -1
View File
@@ -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(
+3
View File
@@ -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
View File
@@ -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
View File
@@ -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>
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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'))
+9
View File
@@ -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/
+2 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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 "
+295 -122
View File
@@ -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 &gt;=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 &gt;=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
View File
@@ -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) {
+15
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -38,7 +38,7 @@
#endif
#ifndef PJ_VERSION
#define PJ_VERSION 610
#define PJ_VERSION 611
#endif
#ifdef PROJ_RENAME_SYMBOLS
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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 */
+10
View File
@@ -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
+5
View File
@@ -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
+97
View File
@@ -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
View File
@@ -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
-2
View File
@@ -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);
+4 -1
View File
@@ -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);
}
// ---------------------------------------------------------------------------
+108 -4
View File
@@ -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) {
{
+4 -4
View File
@@ -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
+5 -5
View File
@@ -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
+1
View File
@@ -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