Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c3d4a1fa9 | ||
|
|
5a632ac2fb | ||
|
|
07945da228 | ||
|
|
585f978d25 | ||
|
|
966dc8c9ed | ||
|
|
01cadf3ffe | ||
|
|
85c4774eef | ||
|
|
0a77a49f21 | ||
|
|
5b764ba1b6 | ||
|
|
fbe3cfdd65 | ||
|
|
54afe78439 | ||
|
|
3c31962ffe | ||
|
|
b6f0ee7f60 | ||
|
|
fa523e2062 | ||
|
|
bb64a83e7b | ||
|
|
a82abb09e3 | ||
|
|
7b226c6f43 | ||
|
|
09c54c75e5 | ||
|
|
e64793e6c8 | ||
|
|
db3aef57fb | ||
|
|
64275958d4 | ||
|
|
ee8a4e5e1d | ||
|
|
073718eaef | ||
|
|
1ba726e207 | ||
|
|
7c19d5d7c9 | ||
|
|
a09426d1fb | ||
|
|
9e667d0af9 | ||
|
|
386e2c0c69 | ||
|
|
b84f67446d | ||
|
|
f4e26e2734 | ||
|
|
5f7163b669 | ||
|
|
0b7c9dd363 | ||
|
|
0c0c245d11 | ||
|
|
dde234c0fb | ||
|
|
5e5e5679a4 | ||
|
|
553aef4eb8 | ||
|
|
b4591d3fe0 | ||
|
|
d74779c33c | ||
|
|
5f29be5250 | ||
|
|
f300732f52 | ||
|
|
092642c63a | ||
|
|
e80325c637 | ||
|
|
9bfdd6ae5b | ||
|
|
39b3796d57 | ||
|
|
413f106ebe | ||
|
|
74d1e5716b | ||
|
|
7de6dbadd9 | ||
|
|
946df793fd | ||
|
|
d1dd77f6ba | ||
|
|
d8095e9af5 | ||
|
|
37ae566778 | ||
|
|
3ad1a6906c | ||
|
|
d0ce43e446 | ||
|
|
d81fd314f1 | ||
|
|
cec11612df | ||
|
|
258567defb | ||
|
|
09eb948d0b | ||
|
|
7ef50eeb47 | ||
|
|
18783cdeaa | ||
|
|
dcbd8a2bb5 | ||
|
|
c379d7b12b | ||
|
|
9288c12755 | ||
|
|
c6bafb95d3 | ||
|
|
007b968569 | ||
|
|
f55958f4af | ||
|
|
dbbdf34b54 | ||
|
|
952ad68498 | ||
|
|
395f60aee3 | ||
|
|
e43576b024 | ||
|
|
4ee1bfa37e | ||
|
|
f6a67985c7 | ||
|
|
037acc5b3d | ||
|
|
1d5a5a79c3 | ||
|
|
0ee16551a1 | ||
|
|
8c518a8069 | ||
|
|
01ee7cea39 | ||
|
|
2f5b43954d | ||
|
|
8c5b40d9d0 | ||
|
|
2d7abaf01b | ||
|
|
6db0d82ed4 | ||
|
|
e57fb90d2f | ||
|
|
7a7e84283b | ||
|
|
a60bda1c11 | ||
|
|
41eded595b | ||
|
|
340324cc3c | ||
|
|
7da98c2f80 | ||
|
|
1e5d77f0fb | ||
|
|
b97c2bc33b | ||
|
|
cd190c47f3 | ||
|
|
eb1ec0ee9e | ||
|
|
93f47edbe9 | ||
|
|
84cfcb3675 | ||
|
|
2d675f2237 | ||
|
|
c6a2cf933d | ||
|
|
b64f25d65a | ||
|
|
07a84be2bd | ||
|
|
95d71e8846 |
@@ -65,6 +65,15 @@ jobs:
|
||||
# Do not fail the job. This is just used as a tool to monitor how we are regarding recent cppcheck
|
||||
./scripts/cppcheck.sh || /bin/true
|
||||
|
||||
code_quality_checks:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Detect missing includes
|
||||
run: ./scripts/detect_missing_include.sh
|
||||
|
||||
other_checks:
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
|
||||
@@ -12,6 +12,7 @@ dependencies:
|
||||
- ccache
|
||||
- autoconf
|
||||
- automake
|
||||
- m4
|
||||
- jsonschema
|
||||
- ruamel.yaml
|
||||
- pytest
|
||||
|
||||
@@ -75,6 +75,7 @@ jobs:
|
||||
if "${{ env.BUILD_TYPE }}"=="Release" (set CMAKE_UNITY_BUILD_OPT="-DCMAKE_UNITY_BUILD=ON")
|
||||
cmake -D CMAKE_BUILD_TYPE="${{ env.BUILD_TYPE }}" ^
|
||||
-D BUILD_SHARED_LIBS="${{ env.BUILD_SHARED_LIBS }}" ^
|
||||
-D EXPORT_PDB="ON" ^
|
||||
-D CMAKE_C_FLAGS="/WX" ^
|
||||
-D CMAKE_CXX_FLAGS="/WX" ^
|
||||
%CMAKE_CXX_STANDARD% ^
|
||||
@@ -158,7 +159,7 @@ jobs:
|
||||
mingw-w64-x86_64-python-yaml
|
||||
mingw-w64-x86_64-sqlite3
|
||||
|
||||
- name: Build
|
||||
- name: First build with EMBED_RESOURCE_FILES=ON and USE_ONLY_EMBEDDED_RESOURCE_FILES=ON
|
||||
run: |
|
||||
mkdir -p $HOME/.ccache
|
||||
ccache -M 500M
|
||||
@@ -167,6 +168,27 @@ jobs:
|
||||
PROJ_DIR=${GITHUB_WORKSPACE}/proj_dir
|
||||
mkdir ${PROJ_BUILD}
|
||||
cd ${PROJ_BUILD}
|
||||
|
||||
cmake -D CMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
|
||||
-D BUILD_SHARED_LIBS=${{ env.BUILD_SHARED_LIBS }} \
|
||||
-D CMAKE_INSTALL_PREFIX="${PROJ_DIR}" \
|
||||
-D CMAKE_C_FLAGS="-Werror" \
|
||||
-D CMAKE_CXX_FLAGS="-Werror" \
|
||||
-D USE_CCACHE=ON \
|
||||
-D PROJ_DB_CACHE_DIR=$HOME/.ccache \
|
||||
-D CMAKE_UNITY_BUILD=ON \
|
||||
-D Python_ROOT_DIR=/mingw64 \
|
||||
-D CMAKE_CXX_STANDARD=20 \
|
||||
-D EMBED_RESOURCE_FILES=ON \
|
||||
-D USE_ONLY_EMBEDDED_RESOURCE_FILES=ON \
|
||||
..
|
||||
make -j 2
|
||||
|
||||
- name: Seond build with EMBED_RESOURCE_FILES=OFF and USE_ONLY_EMBEDDED_RESOURCE_FILES=OFF
|
||||
run: |
|
||||
PROJ_BUILD=${GITHUB_WORKSPACE}/build
|
||||
PROJ_DIR=${GITHUB_WORKSPACE}/proj_dir
|
||||
cd ${PROJ_BUILD}
|
||||
cmake -D CMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
|
||||
-D BUILD_SHARED_LIBS=${{ env.BUILD_SHARED_LIBS }} \
|
||||
-D CMAKE_INSTALL_PREFIX="${PROJ_DIR}" \
|
||||
@@ -176,6 +198,9 @@ jobs:
|
||||
-D PROJ_DB_CACHE_DIR=$HOME/.ccache \
|
||||
-D CMAKE_UNITY_BUILD=ON \
|
||||
-D Python_ROOT_DIR=/mingw64 \
|
||||
-D CMAKE_CXX_STANDARD=20 \
|
||||
-D EMBED_RESOURCE_FILES=OFF \
|
||||
-D USE_ONLY_EMBEDDED_RESOURCE_FILES=OFF \
|
||||
..
|
||||
make -j 2
|
||||
make install
|
||||
|
||||
+2
-2
@@ -2,8 +2,8 @@ cff-version: 1.2.0
|
||||
message: Please cite this software using these metadata or in the CITATION file.
|
||||
type: software
|
||||
title: PROJ
|
||||
version: 9.6.0
|
||||
date-released: 2025-03-15
|
||||
version: 9.6.2
|
||||
date-released: 2025-06-04
|
||||
doi: 10.5281/zenodo.5884394
|
||||
abstract: PROJ is a generic coordinate transformation software that transforms
|
||||
geospatial coordinates from one coordinate reference system (CRS) to another.
|
||||
|
||||
+36
-2
@@ -143,7 +143,7 @@ message(STATUS "Configuring PROJ:")
|
||||
#PROJ version information
|
||||
################################################################################
|
||||
include(ProjVersion)
|
||||
proj_version(MAJOR 9 MINOR 6 PATCH 0)
|
||||
proj_version(MAJOR 9 MINOR 6 PATCH 2)
|
||||
set(PROJ_SOVERSION 25)
|
||||
set(PROJ_BUILD_VERSION "${PROJ_SOVERSION}.${PROJ_VERSION}")
|
||||
|
||||
@@ -156,6 +156,13 @@ include(ProjConfig)
|
||||
include(ProjMac)
|
||||
include(policies)
|
||||
|
||||
##############################################
|
||||
### SWITCH BETWEEN STATIC OR SHARED LIBRARY###
|
||||
##############################################
|
||||
|
||||
# default config is shared
|
||||
option(BUILD_SHARED_LIBS "Build PROJ library shared." ON)
|
||||
|
||||
################################################################################
|
||||
# Check for nlohmann_json
|
||||
################################################################################
|
||||
@@ -348,7 +355,8 @@ endif()
|
||||
|
||||
function (is_sharp_embed_available res)
|
||||
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.21 AND
|
||||
((CMAKE_C_COMPILER_ID STREQUAL "GNU") OR (CMAKE_C_COMPILER_ID STREQUAL "Clang")))
|
||||
((CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 15.0) OR
|
||||
(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0)))
|
||||
# CMAKE_C_STANDARD=23 only supported since CMake 3.21
|
||||
set(TEST_SHARP_EMBED
|
||||
"static const unsigned char embedded[] = {\n#embed __FILE__\n};\nint main() { (void)embedded; return 0;}"
|
||||
@@ -368,6 +376,9 @@ function (is_sharp_embed_available res)
|
||||
endfunction()
|
||||
|
||||
is_sharp_embed_available(IS_SHARP_EMBED_AVAILABLE_RES)
|
||||
if (NOT DEFINED BUILD_SHARED_LIBS)
|
||||
message(FATAL_ERROR "BUILD_SHARED_LIBS should be set")
|
||||
endif()
|
||||
if (NOT BUILD_SHARED_LIBS)
|
||||
set(DEFAULT_EMBED_RESOURCE_FILES ON)
|
||||
else()
|
||||
@@ -421,6 +432,29 @@ set(docfiles COPYING NEWS.md AUTHORS.md)
|
||||
install(FILES ${docfiles}
|
||||
DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||
|
||||
################################################################################
|
||||
# Build debug symbols
|
||||
################################################################################
|
||||
option(EXPORT_PDB "Export PDB file" OFF)
|
||||
|
||||
if (WIN32 AND EXPORT_PDB)
|
||||
target_compile_options(proj PRIVATE /Zi /Zf)
|
||||
target_link_options(proj PRIVATE /DEBUG /OPT:REF /OPT:ICF)
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
set(pdbFile $<TARGET_PDB_FILE:proj>)
|
||||
else()
|
||||
set(pdbDirFullPath ${CMAKE_BINARY_DIR}/lib)
|
||||
set_target_properties(proj
|
||||
PROPERTIES
|
||||
COMPILE_PDB_OUTPUT_DIRECTORY ${pdbDirFullPath}
|
||||
COMPILE_PDB_NAME proj)
|
||||
set(pdbFile ${pdbDirFullPath}/proj.pdb)
|
||||
endif()
|
||||
|
||||
install(FILES ${pdbFile} DESTINATION lib)
|
||||
endif()
|
||||
|
||||
################################################################################
|
||||
# pkg-config support
|
||||
################################################################################
|
||||
|
||||
@@ -1,5 +1,62 @@
|
||||
# PROJ Release Notes
|
||||
|
||||
## 9.6.2
|
||||
|
||||
### Updates
|
||||
|
||||
* Update EPSG to 12.013
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Database: change ESRI deprecated records back to their deprecated state (#4519)
|
||||
|
||||
* ProjectedCRS::identify(): more robust identification of old ESRI names using _IntlFeet (#4518)
|
||||
|
||||
* Fix issue related to D_Unknown_based_on_WGS_84_ellipsoid datum name (#4514)
|
||||
|
||||
* proj_trans_bounds(): sample points within the source grid to avoid missing extent such as world-wide coverage from EPSG:4326 to ESRI:54099 (Spilhaus) (#4513)
|
||||
|
||||
* proj_trans_bounds(): avoid erroring out, in some cases, when PJ* object is directly constructed from a PROJ pipeline (#4512)
|
||||
|
||||
## 9.6.1
|
||||
|
||||
### Updates
|
||||
|
||||
* Update EPSG to 12.012 (#4498)
|
||||
|
||||
* Add an option to ship PDB files (#4505)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Deal with South Orientated TMerc presented as regular TMerc but with Scale_Factor=-1 (#4427)
|
||||
|
||||
* Add missing 'limits' and 'algorithm' includes (#4444)
|
||||
|
||||
* CMake: avoid detection of C23 `#embed` on too old compilers (#4463)
|
||||
|
||||
* `createOperations()`: for NAD83(CSRS)[x] to NAD83(CSRS)[y], do not go through NAD83 (#4467)
|
||||
|
||||
* Add missing include for `uint32_t` on Windows with gcc 15.1 (#4478)
|
||||
|
||||
* `getGeoidModels`: use vertical_crs.datum_code to get vcrss that uses different units (#4480)
|
||||
|
||||
* `FileManager::open_resource_file()`: honour known URLs from grid_alternatives that don't point to cdn.proj.org (#4481)
|
||||
|
||||
* Database: update ESRI to ArcGIS Pro 3.5 (#4493)
|
||||
|
||||
* `createOperationsCompoundToGeog()`: avoid bringing non-sensical transformations (#4494)
|
||||
|
||||
* Bug correction in Wagner VI projection parameters (#4453)
|
||||
|
||||
* C++: Fix bare `isnan()` to `std::isnan()` (#4472)
|
||||
|
||||
* Database: fix duplicated entries with auxiliary database (#4482)
|
||||
|
||||
* Use `std::abs` instead of `abs` for NetBSD (#4486)
|
||||
|
||||
* Fix Windows build when both `EMBED_RESOURCE_FILES` and `USE_ONLY_EMBEDDED_RESOURCE_FILES` are set (#4508)
|
||||
|
||||
|
||||
## 9.6.0
|
||||
|
||||
### Updates
|
||||
@@ -75,6 +132,8 @@
|
||||
|
||||
* Fix typo in parameter for ITRF97 in ITRF2014 file (#4408)
|
||||
|
||||
* Retry on "SSL connection timeout" (#4419)
|
||||
|
||||
|
||||
## 9.5.1
|
||||
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ set(ALL_SQL_IN "${CMAKE_CURRENT_BINARY_DIR}/all.sql.in")
|
||||
set(PROJ_DB "${CMAKE_CURRENT_BINARY_DIR}/proj.db")
|
||||
include(sql_filelist.cmake)
|
||||
|
||||
set(PROJ_DB_SQL_EXPECTED_MD5 "7e93fb5bf8aa4a5849049f56dfa98bc4")
|
||||
set(PROJ_DB_SQL_EXPECTED_MD5 "bff39ff944164def30793f82fd9e39f2")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${PROJ_DB}
|
||||
|
||||
+24
-18
@@ -167,8 +167,6 @@ INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6659','ISN93','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6300','TM75','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','6300','1975 Mapping Adjustment','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5153','NGG1977','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5154','Martinique 1987','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5156','Reunion 1989','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5156','IGN89','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5155','IGN 1988','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','5154','IGN87','EPSG');
|
||||
@@ -613,7 +611,6 @@ INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1300','BGS2005','EPSG')
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1302','Pago Pago 2020','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1303','NVD 1992','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1301','CD Norway','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1199','Greenland Vertical Reference 2000','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1304','REDGEOMIN','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1297','EVRF2007-PL','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1305','ETRF2000-PL','EPSG');
|
||||
@@ -761,6 +758,9 @@ INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1394','BES2020','EPSG')
|
||||
INSERT INTO "alias_name" VALUES('vertical_datum','EPSG','1395','Sint Eustatius','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1399','ITRF2020-u2023','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1402','LibRef21','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1401','UGRF','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1401','Uganda 2010','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_datum','EPSG','1405','EWR3-IRF','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','21100','Genuk / NEIEZ','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2140','NAD83(CSRS98) / SCoPQ zone 3','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2141','NAD83(CSRS98) / SCoPQ zone 4','EPSG');
|
||||
@@ -1813,7 +1813,7 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3026','RT38 5 gon V 0:-1
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3025','RT38 2.5 gon V 0:-15','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7793','RDN2008 / TM34 (E-N)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4615','Base SE','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','25884','LKS92 / TM Baltic93','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','25884','LKS-92 / TM Baltic93','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','25884','LKS94 / TM Baltic93','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','25884','EST97 / TM Baltic93','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3300','EST92','EPSG');
|
||||
@@ -2125,7 +2125,7 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3049','ETRS - TM37','EPS
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3050','ETRS - TM38','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3051','ETRS - TM39','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4936','ETRS89 / (X, Y, Z)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4937','ETRS89','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','4937','ETRS89-LatLonh','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','5730','EVRF_AMST / NH','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6884','NAD83(CORS96) / Oregon North (m)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2462','AL_ALB87 / TM_6','EPSG');
|
||||
@@ -3979,9 +3979,7 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3455','NAD83 / S Dakota
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3460','Fiji 1986 / Map Grid','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3461','Dabola 1981 / UTM 28N','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3462','Dabola 1981 / UTM 29N','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3560','NAD83 / Utah North (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3566','NAD83 / Utah Cen (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3567','NAD83 / Utah South (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3571','WGS 84 / LAEA Bering Sea','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3572','WGS 84 / LAEA Alaska','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','3573','WGS 84 / LAEA Canada','EPSG');
|
||||
@@ -4446,7 +4444,7 @@ INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','5488','RGAF09 (lat-lon)',
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7069','NAD83(2011) / IaRCS zone 13 Fairfield','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','7073','RGTAAF07 (lat-lon)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7070','NAD83(2011) / IaRCS zone 14 Burlington','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','7072','RGTAAF07','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','7072','RGTAAF07 (lat-lon)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7109','NAD83(2011) / St Mary (m)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7114','NAD83(2011) / Ft Peck Sx (m)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','7110','NAD83(2011) / Blackfeet (m)','EPSG');
|
||||
@@ -4984,15 +4982,11 @@ INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','8042','Stable Cadastre','
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','8043','Stable cadastre','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','8043','S-SC','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','8050','Mean Sea Level height (ft)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','8050','MSL height (ft)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','8051','Mean Sea Level depth (ft)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','8051','MSL depth (ft)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','8065','NAD83(2011) / PCCS east zone(ft)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','8052','Mean Sea Level height (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','8052','MSL height (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','8066','NAD83(2011) / PCCS central zone(ft)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','8053','Mean Sea Level depth (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','8053','MSL depth (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','8067','NAD83(2011) / PCCS west zone(ft)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','8068','NAD83(2011) / PCCS Mt. Lemmon zone(ft)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','8090','WISCRS Florence (m)','EPSG');
|
||||
@@ -6688,8 +6682,6 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','30791','Nord Sahara 1959
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','30792','Nord Sahara 1959 / Voirol Unifie Sud','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5659','Monte Mario / UTMRER','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','5844','RGRDC 2005 / Congo TM 30','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','5715','MSL depth','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','5714','MSL height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','5868','Mean High Water height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','5869','Mean Higher High Water height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','5870','Mean High Water Spring Tides height','EPSG');
|
||||
@@ -7256,7 +7248,6 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6630','NAD83(PA11) / Haw
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6630','NAD83(PA11) / HI 3 (m)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6631','NAD83(PA11) / Hawaii zone 4 (m)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6631','NAD83(PA11) / HI 4 (m)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6633','NAD83(PA11) / Hawaii zone 3 (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6633','NAD83(PA11) / HI 3 (ftUS)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6634','NAD83(PA11) / UTM 4N','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','6632','NAD83(PA11) / Hawaii zone 5 (m)','EPSG');
|
||||
@@ -7358,9 +7349,7 @@ INSERT INTO "alias_name" VALUES('projected_crs','EPSG','9678','Gulshan / Banglad
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','9680','WGS 84 / Bangladesh Universal Transverse Mercator','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','9680','WGS 84 / BUTM 2010','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','9549','LTF2004(G) / LTF2004(C)','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','6893','WGS 84 / World Mercator + EGM2008 height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','7955','St. Helena Tritan / UTM zone 30S + Tritan 2011 height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','7956','SHMG2015 + SHVD2015 height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','7956','St. Helena Map Grid 2015 + SHVD2015 height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2176','ETRS89 / Poland CS2000 zone 5','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2177','ETRS89 / Poland CS2000 zone 6','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','2178','ETRS89 / Poland CS2000 zone 7','EPSG');
|
||||
@@ -8063,6 +8052,16 @@ INSERT INTO "alias_name" VALUES('compound_crs','EPSG','10764','Bonaire DPnet + B
|
||||
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','10764','Bonaire / Bonaire TM + Bonaire height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','10773','SIRGAS 2000 / RPTM','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','10765','Bonaire 2004 + Bonaire KADpeil','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10789','Uganda 2010','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10790','Uganda 2010','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10791','Uganda 2010','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','10792','Uganda 2010 / UTM zone 35N','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','10793','Uganda 2010 / UTM zone 36N','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','10794','Uganda 2010 / UTM zone 36S','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','10795','Uganda 2010 / UTM zone 35S','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10688','ETRS89','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10689','ETRS89','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10690','ETRS89','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10604','1255','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10604','WGS 84 (G2296) - XYZ','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10605','1256','EPSG');
|
||||
@@ -8075,3 +8074,10 @@ INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10570','1239','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10570','ETRF2020 - LatLonEHt','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10571','1238','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('geodetic_crs','EPSG','10571','ETRF2020 - LatLonEHt','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','10826','ETRS89 + LAS-2000 height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','25884','LKS-2020 / TM Baltic93','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','10839','ETRS89 + LAS-2000 height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('projected_crs','EPSG','10851','ETRS89 / EWR3 SnakeGrid','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('compound_crs','EPSG','10852','ETRS89 / EWR3 SnakeGrid + Newlyn height','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','10588','1265','EPSG');
|
||||
INSERT INTO "alias_name" VALUES('vertical_crs','EPSG','10588','CGVD28(HTv2.0) - OHt','EPSG');
|
||||
|
||||
@@ -912,6 +912,14 @@ INSERT INTO "compound_crs" VALUES('EPSG','10765','Bonaire 2004 + Bonaire height'
|
||||
INSERT INTO "usage" VALUES('EPSG','22177','compound_crs','EPSG','10765','EPSG','3822','EPSG','1270');
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','10774','EUREF-FIN / TM35FIN(E,N) + N2000 height',NULL,'EPSG','3067','EPSG','3900',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22245','compound_crs','EPSG','10774','EPSG','3333','EPSG','1142');
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','10826','LKS-92 + Latvia 2000 height',NULL,'EPSG','4661','EPSG','7700',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22632','compound_crs','EPSG','10826','EPSG','3268','EPSG','1270');
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','10839','LKS-2020 + Latvia 2000 height',NULL,'EPSG','10305','EPSG','7700',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22700','compound_crs','EPSG','10839','EPSG','3268','EPSG','1270');
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','10852','EWR3 Grid + ODN height',NULL,'EPSG','10851','EPSG','5701',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22762','compound_crs','EPSG','10852','EPSG','4799','EPSG','1141');
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','10865','CGRS93 + Famagusta 1960 height',NULL,'EPSG','6311','EPSG','7446',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22850','compound_crs','EPSG','10865','EPSG','3236','EPSG','1270');
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','20001','ETRS89 + SVD2006 height',NULL,'EPSG','4258','EPSG','20000',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','17956','compound_crs','EPSG','20001','EPSG','4058','EPSG','1026');
|
||||
INSERT INTO "compound_crs" VALUES('EPSG','20003','MWC18 Grid + ODN height',NULL,'EPSG','20002','EPSG','5701',0);
|
||||
|
||||
@@ -371,9 +371,9 @@ INSERT INTO "concatenated_operation" VALUES('EPSG','8631','Garoua to WGS 84 (1)'
|
||||
INSERT INTO "usage" VALUES('EPSG','10723','concatenated_operation','EPSG','8631','EPSG','2590','EPSG','1136');
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8632','Kousseri to WGS 84 (1)','','EPSG','4198','EPSG','4326',6.0,'EPSG-Cmr',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','10724','concatenated_operation','EPSG','8632','EPSG','2591','EPSG','1136');
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8633','Yoff to WGS 84 (1)','Derived via WGS72. Can be used as a single positon vector transformation with parameter vaues of dX = -37 m, dY = +157 m, dZ = +89.5 m, rX = rY = 0 sec, rZ = 0.554 sec, dS = 0.219 ppm','EPSG','4310','EPSG','4326',26.0,'EPSG-SEN',0);
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8633','Yoff to WGS 84 (1)','Derived via WGS72. Can be used as a single position vector transformation with parameter values of dX = -37 m, dY = +157 m, dZ = +89.5 m, rX = rY = 0 sec, rZ = 0.554 sec, dS = 0.219 ppm','EPSG','4310','EPSG','4326',26.0,'EPSG-SEN',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','10725','concatenated_operation','EPSG','8633','EPSG','1207','EPSG','1160');
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8634','Beduaram to WGS 84 (1)','Derived via WGS72BE. Can be used as a single positon vector transformation with parameter vaues of dX = -101 m, dY = -111 m, dZ = +188.9 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm','EPSG','4213','EPSG','4326',16.0,'ELF-Ner SE',0);
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8634','Beduaram to WGS 84 (1)','Derived via WGS72BE. Can be used as a single position vector transformation with parameter values of dX = -101 m, dY = -111 m, dZ = +188.9 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm','EPSG','4213','EPSG','4326',16.0,'ELF-Ner SE',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','10726','concatenated_operation','EPSG','8634','EPSG','2771','EPSG','1136');
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8635','NAD27 to NAD83(CSRS) (3)','Can be taken as an approximate transformation NAD27 to WGS 84 - see code 8585.','EPSG','4267','EPSG','4617',2.5,'EPSG-Can AB',1);
|
||||
INSERT INTO "usage" VALUES('EPSG','10727','concatenated_operation','EPSG','8635','EPSG','2376','EPSG','1151');
|
||||
@@ -411,11 +411,11 @@ INSERT INTO "concatenated_operation" VALUES('EPSG','8651','Vientiane 1982 to WGS
|
||||
INSERT INTO "usage" VALUES('EPSG','10743','concatenated_operation','EPSG','8651','EPSG','1138','EPSG','1045');
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8652','Lao 1993 to WGS 84 (1)','Can be implemented as a geocentric translation tfm with param. values dX = 43.933m, dY = -129.593m, dZ= -39.331m.','EPSG','4677','EPSG','4326',6.0,'EPSG-Lao',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','10744','concatenated_operation','EPSG','8652','EPSG','1138','EPSG','1045');
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8655','Manoca 1962 to WGS 84 (2)','Derived via WGS 72BE. Can be implemented as a single positon vector transformation with parameter vaues of dX = -56.7 m, dY = -171.8 m, dZ = -38.7 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm.','EPSG','4193','EPSG','4326',6.0,'OGP-Cmr',0);
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8655','Manoca 1962 to WGS 84 (2)','Derived via WGS 72BE. Can be implemented as a single position vector transformation with parameter values of dX = -56.7 m, dY = -171.8 m, dZ = -38.7 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm.','EPSG','4193','EPSG','4326',6.0,'OGP-Cmr',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','10747','concatenated_operation','EPSG','8655','EPSG','2555','EPSG','1136');
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8656','Mhast (offshore) to WGS 84 (1)','Derived via WGS 72BE. Can be implemented as a single positon vector transformation with parameter vaues of dX = -255.0 m, dY = -29.0 m, dZ = -103.1 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm.','EPSG','4705','EPSG','4326',11.0,'OGP-Ago Cab',0);
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8656','Mhast (offshore) to WGS 84 (1)','Derived via WGS 72BE. Can be implemented as a single position vector transformation with parameter values of dX = -255.0 m, dY = -29.0 m, dZ = -103.1 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm.','EPSG','4705','EPSG','4326',11.0,'OGP-Ago Cab',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','10748','concatenated_operation','EPSG','8656','EPSG','3180','EPSG','1136');
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8657','Egypt Gulf of Suez S-650 TL to WGS 84 (1)','Can be implemented as a single positon vector transformation with parameter vaues of dX = -123.0 m, dY = 98.0 m, dZ = 3.9 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm. Replaced by Egypt Gulf of Suez S-650 TL to WGS 84 (2) (tfm code 15846).','EPSG','4706','EPSG','4326',6.0,'OGP-Egy GoS',0);
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8657','Egypt Gulf of Suez S-650 TL to WGS 84 (1)','Can be implemented as a single position vector transformation with parameter values of dX = -123.0 m, dY = 98.0 m, dZ = 3.9 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm. Replaced by Egypt Gulf of Suez S-650 TL to WGS 84 (2) (tfm code 15846).','EPSG','4706','EPSG','4326',6.0,'OGP-Egy GoS',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','10749','concatenated_operation','EPSG','8657','EPSG','2341','EPSG','1136');
|
||||
INSERT INTO "concatenated_operation" VALUES('EPSG','8659','Kertau (RSO) to WGS 84 (1)','Step 1 is necessary to rescale the grid units before using step 2.','EPSG','4751','EPSG','4326',15.0,'OGP-Mys',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','10751','concatenated_operation','EPSG','8659','EPSG','1309','EPSG','1164');
|
||||
|
||||
@@ -36,7 +36,7 @@ CREATE TRIGGER geodetic_datum_insert_trigger
|
||||
BEFORE INSERT ON geodetic_datum
|
||||
FOR EACH ROW BEGIN
|
||||
SELECT RAISE(ABORT, 'insert on geodetic_datum violates constraint: ellipsoid must not be deprecated when geodetic_datum is not deprecated')
|
||||
WHERE EXISTS(SELECT 1 FROM ellipsoid WHERE ellipsoid.auth_name = NEW.ellipsoid_auth_name AND ellipsoid.code = NEW.ellipsoid_code AND ellipsoid.deprecated != 0) AND NEW.deprecated = 0;
|
||||
WHERE EXISTS(SELECT 1 FROM ellipsoid WHERE ellipsoid.auth_name = NEW.ellipsoid_auth_name AND ellipsoid.code = NEW.ellipsoid_code AND ellipsoid.deprecated != 0) AND NEW.deprecated = 0 AND NEW.auth_name != 'ESRI';
|
||||
SELECT RAISE(ABORT, 'insert on geodetic_datum violates constraint: prime_meridian must not be deprecated when geodetic_datum is not deprecated')
|
||||
WHERE EXISTS(SELECT 1 FROM prime_meridian WHERE prime_meridian.auth_name = NEW.prime_meridian_auth_name AND prime_meridian.code = NEW.prime_meridian_code AND prime_meridian.deprecated != 0) AND NEW.deprecated = 0;
|
||||
SELECT RAISE(ABORT, 'frame_reference_epoch and ensemble_accuracy are mutually exclusive')
|
||||
@@ -204,7 +204,7 @@ FOR EACH ROW BEGIN
|
||||
|
||||
SELECT RAISE(ABORT, 'insert on projected_crs violates constraint: name (of a non-deprecated entry) must not already exist in (a non-deprecated entry of) crs_view')
|
||||
WHERE EXISTS (SELECT 1 FROM crs_view WHERE crs_view.name = NEW.name AND crs_view.deprecated = 0 AND NEW.deprecated = 0
|
||||
AND NEW.auth_name IN (SELECT auth_name FROM builtin_authorities WHERE auth_name != 'IGNF')
|
||||
AND NEW.auth_name IN (SELECT auth_name FROM builtin_authorities WHERE auth_name NOT IN ('IGNF', 'ESRI'))
|
||||
);
|
||||
|
||||
SELECT RAISE(ABORT, 'insert on projected_crs violates constraint: geodetic_crs must not be deprecated when projected_crs is not deprecated')
|
||||
|
||||
@@ -1744,14 +1744,14 @@ INSERT INTO "conversion" VALUES('EPSG','9677','Bangladesh Transverse Mercator','
|
||||
INSERT INTO "usage" VALUES('EPSG','14878','conversion','EPSG','9677','EPSG','3217','EPSG','1274');
|
||||
INSERT INTO "conversion" VALUES('EPSG','9738','EOS21-TM','In conjunction with transformation ETRS89 to EOS-IRF (1) (code 9740), emulates the EOS21 Snake projection.','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',56.21,'EPSG','9110','EPSG','8802','Longitude of natural origin',-2.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',74996.927,'EPSG','9001','EPSG','8807','False northing',133508.35,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','15339','conversion','EPSG','9738','EPSG','4620','EPSG','1141');
|
||||
INSERT INTO "conversion" VALUES('EPSG','9746','SPCS83 Alabama East zone (US survey foot)','This map projection is not formally recognised by the NGS because there is no State legislation for NAD83 defining the foot to be used. See code 10131 for official metric definition. ftUS required by AL DOT and used by other professional practioners.','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99996,'EPSG','9201','EPSG','8806','False easting',656166.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9746','SPCS83 Alabama East zone (US survey foot)','This map projection is not formally recognised by the NGS because there is no State legislation for NAD83 defining the foot to be used. See code 10131 for official metric definition. ftUS required by AL DOT and used by other professional practitioners.','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99996,'EPSG','9201','EPSG','8806','False easting',656166.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','15382','conversion','EPSG','9746','EPSG','2154','EPSG','1142');
|
||||
INSERT INTO "conversion" VALUES('EPSG','9747','SPCS83 Alabama West zone (US survey foot)','This map projection is not formally recognised by the NGS because there is no State legislation for NAD83 defining the foot to be used. See code 10132 for official metric definition. ftUS required by AL DOT and used by other professional practioners.','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',1968500.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','9747','SPCS83 Alabama West zone (US survey foot)','This map projection is not formally recognised by the NGS because there is no State legislation for NAD83 defining the foot to be used. See code 10132 for official metric definition. ftUS required by AL DOT and used by other professional practitioners.','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',1968500.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','15381','conversion','EPSG','9747','EPSG','2155','EPSG','1142');
|
||||
INSERT INTO "conversion" VALUES('EPSG','9760','ECML14_NB-TM','In conjunction with transformation ETRS89 to ECML14_NB-IRF (1) (code 9759), emulates the ECML14_NB Snake projection.','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',55.03,'EPSG','9110','EPSG','8802','Longitude of natural origin',-1.33,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',112242.8512,'EPSG','9001','EPSG','8807','False northing',402313.7432,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','16497','conversion','EPSG','9760','EPSG','4621','EPSG','1141');
|
||||
INSERT INTO "conversion" VALUES('EPSG','9765','EWR2-TM','In conjunction with transformation ETRS89 to EWR2-IRF (1) (code 9764), emulates the EWR2 Snake projection.','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',51.57,'EPSG','9110','EPSG','8802','Longitude of natural origin',-0.54,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',192519.9715,'EPSG','9001','EPSG','8807','False northing',146942.6806,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','16511','conversion','EPSG','9765','EPSG','4622','EPSG','1141');
|
||||
INSERT INTO "conversion" VALUES('EPSG','9765','EWR3-TM','In conjunction with transformation ETRS89 to EWR2-IRF (1) (code 9764), emulates the EWR2 Snake projection. In conjunction with transformation ETRS89 to EWR3-IRF (1) (code 10850), emulates the EWR3 Snake projection. In 2024 the EWR2 Grid (ETRS89 / EWR2 SnakeGrid) was extended eastwards as the EWR3 Grid (ETRS89 / EWR3 SnakeGrid). In the emulation of the Snake projection, the NTv2 file supporting the transformation is extended but this map projection is unchanged and applies to both EWR2 and EWR3.','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',51.57,'EPSG','9110','EPSG','8802','Longitude of natural origin',-0.54,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',192519.9715,'EPSG','9001','EPSG','8807','False northing',146942.6806,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','16511','conversion','EPSG','9765','EPSG','4799','EPSG','1141');
|
||||
INSERT INTO "conversion" VALUES('EPSG','9796','Local coordinate system of Kyiv','','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',30.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','16909','conversion','EPSG','9796','EPSG','4650','EPSG','1207');
|
||||
INSERT INTO "conversion" VALUES('EPSG','9797','Local coordinate system of Crimea region','','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',34.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
@@ -2032,6 +2032,8 @@ INSERT INTO "conversion" VALUES('EPSG','10772','Ribeirao Preto Local TM','PBD-Pr
|
||||
INSERT INTO "usage" VALUES('EPSG','22213','conversion','EPSG','10772','EPSG','4789','EPSG','1142');
|
||||
INSERT INTO "conversion" VALUES('EPSG','10819','Agriculture Canada Albers','','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',40.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-96.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',44.75,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',55.75,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22544','conversion','EPSG','10819','EPSG','4752','EPSG','1292');
|
||||
INSERT INTO "conversion" VALUES('EPSG','10856','Brazil Albers','','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',-12.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-54.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-2.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-22.0,'EPSG','9102','EPSG','8826','Easting at false origin',5000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22837','conversion','EPSG','10856','EPSG','3223','EPSG','1162');
|
||||
INSERT INTO "conversion" VALUES('EPSG','10901','Florida CS27 East zone','','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',24.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-81.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','11140','conversion','EPSG','10901','EPSG','2186','EPSG','1142');
|
||||
INSERT INTO "conversion" VALUES('EPSG','10902','Florida CS27 West zone','','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',24.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-82.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
@@ -5351,7 +5353,7 @@ INSERT INTO "conversion" VALUES('EPSG','19969','Portuguese Grid','Original trans
|
||||
INSERT INTO "usage" VALUES('EPSG','13047','conversion','EPSG','19969','EPSG','1294','EPSG','1142');
|
||||
INSERT INTO "conversion" VALUES('EPSG','19971','New Zealand Transverse Mercator 2000','','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',173.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1600000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','13048','conversion','EPSG','19971','EPSG','3973','EPSG','1142');
|
||||
INSERT INTO "conversion" VALUES('EPSG','19972','Irish Grid','Defined as part of the 1965 and 1975 mapping adustments in which the scale factor was introduced as a best fit to retain existing grid coordinates.','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',53.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-8.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000035,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',250000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "conversion" VALUES('EPSG','19972','Irish Grid','Defined as part of the 1965 and 1975 mapping adjustments in which the scale factor was introduced as a best fit to retain existing grid coordinates.','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',53.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-8.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000035,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',250000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','13049','conversion','EPSG','19972','EPSG','1305','EPSG','1142');
|
||||
INSERT INTO "conversion" VALUES('EPSG','19973','Irish National Grid','Used only with the 1952 geodetic adjustment. Replaced by the 1975 Mapping Adjustment: see code 19972.','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',53.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-8.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',250000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','13050','conversion','EPSG','19973','EPSG','2530','EPSG','1142');
|
||||
|
||||
+416
-224
File diff suppressed because it is too large
Load Diff
+31
-26
@@ -94,7 +94,7 @@ INSERT INTO "extent" VALUES('EPSG','1114','Guyana','Guyana - onshore and offshor
|
||||
INSERT INTO "extent" VALUES('EPSG','1115','Haiti','Haiti - onshore and offshore.',14.73,20.72,-75.73,-71.62,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1116','Heard Island and McDonald Islands','Heard Island and McDonald Islands - onshore and offshore.',-59.02,-49.5,62.92,83.57,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1117','Honduras','Honduras - onshore and offshore. Includes Swan Islands.',12.98,19.59,-89.36,-79.87,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1118','Hong Kong','China - Hong Kong - onshore and offshore.',22.13,22.58,113.76,114.51,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1118','Hong Kong','Hong Kong - onshore and offshore.',22.13,22.58,113.76,114.51,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1119','Hungary','Hungary.',45.74,48.58,16.11,22.9,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1120','Iceland','Iceland - onshore and offshore.',59.96,69.59,-30.87,-5.55,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1121','India','India - onshore and offshore. Includes Amandivis, Laccadives, Minicoy, Andaman Islands, Nicobar Islands, and Sikkim.',3.87,35.51,65.6,97.42,0);
|
||||
@@ -123,7 +123,7 @@ INSERT INTO "extent" VALUES('EPSG','1143','Libya','Libya - onshore and offshore.
|
||||
INSERT INTO "extent" VALUES('EPSG','1144','Liechtenstein','Liechtenstein.',47.05,47.28,9.47,9.64,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1145','Lithuania','Lithuania - onshore and offshore.',53.89,56.45,19.02,26.82,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1146','Luxembourg','Luxembourg.',49.44,50.19,5.73,6.53,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1147','Macao','China - Macao - onshore and offshore.',22.06,22.23,113.52,113.68,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1147','Macao','Macao - onshore and offshore.',22.06,22.23,113.52,113.68,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1148','North Macedonia','North Macedonia.',40.85,42.36,20.45,23.04,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1149','Madagascar - onshore and nearshore','Madagascar - onshore and nearshore.',-26.59,-11.69,42.53,51.03,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1150','Malawi','Malawi.',-17.14,-9.37,32.68,35.93,0);
|
||||
@@ -202,7 +202,7 @@ INSERT INTO "extent" VALUES('EPSG','1222','Suriname','Suriname - onshore and off
|
||||
INSERT INTO "extent" VALUES('EPSG','1223','Svalbard and Jan Mayen','Svalbard and Jan Mayen - onshore and offshore. Includes Bear Island.',66.24,85.05,-16.22,35.02,1);
|
||||
INSERT INTO "extent" VALUES('EPSG','1224','Eswatini','Eswatini (Swaziland).',-27.32,-25.72,30.79,32.14,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1225','Sweden','Sweden - onshore and offshore.',54.96,69.07,10.03,24.17,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1226','Switzerland','Switzerland.',45.82,47.81,5.96,10.49,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1226','Switzerland','Switzerland.',45.81,47.81,5.95,10.5,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1227','Syria','Syria - onshore and offshore.',32.31,37.3,34.96,42.38,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1228','Taiwan','Taiwan, Republic of China - onshore and offshore - Taiwan Island, Penghu (Pescadores) Islands.',17.36,26.96,114.32,123.61,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1229','Tajikistan','Tajikistan.',36.67,41.05,67.36,75.19,0);
|
||||
@@ -262,7 +262,7 @@ INSERT INTO "extent" VALUES('EPSG','1282','Australia - Tasmania','Australia - Ta
|
||||
INSERT INTO "extent" 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 "extent" 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 "extent" VALUES('EPSG','1285','Indonesia - Bali, Java and western Sumatra onshore','Indonesia - onshore - Bali, Java and western Sumatra.',-8.91,5.97,95.16,115.77,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1286','Europe - Liechtenstein and Switzerland','Liechtenstein; Switzerland.',45.82,47.81,5.96,10.49,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1286','Europe - Liechtenstein and Switzerland','Liechtenstein; Switzerland.',45.81,47.81,5.95,10.5,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1287','Indonesia - Banga & Belitung Islands','Indonesia - Banga and Belitung Islands.',-3.3,-1.44,105.07,108.35,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1288','Angola - Angola proper','Angola - Angola proper - onshore and offshore.',-18.02,-5.82,8.2,24.09,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1289','Canada - CGVD28','Canada - onshore - Alberta; British Columbia; Manitoba south of 59°N; New Brunswick; Newfoundland, Labrador between 52°50’N and 54°30’N; Northwest Territories south west of a line between 60°40’N, 110°W and the coast at 132°W; Nova Scotia; Ontario south of 52°20''N; Prince Edward Island; Quebec - mainland south of 55°N and west of 64°W, north of 55°N between 70°W and 66°W, coastal area between 66°W and 64°W, and Anticosta island; Saskatchewan south of 58°30’N; Yukon.',41.67,69.81,-141.01,-52.54,0);
|
||||
@@ -332,7 +332,7 @@ INSERT INTO "extent" VALUES('EPSG','1352','Norway - onshore','Norway - onshore.'
|
||||
INSERT INTO "extent" VALUES('EPSG','1353','France - onshore','France - onshore.',NULL,NULL,NULL,NULL,1);
|
||||
INSERT INTO "extent" VALUES('EPSG','1354','Europe - British Isles - UK and Ireland onshore','Ireland - onshore. United Kingdom (UK) - onshore - England; Scotland; Wales; Northern Ireland. Isle of Man.',49.81,60.9,-10.56,1.84,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1355','Indonesia - Sumatra','Indonesia - Sumatra.',-5.99,5.97,95.16,106.13,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1356','Asia - Middle East - Israel, Jordan and Palestine onshore','Israel - onshore; Jordan; Palestine Territory - onshore.',29.18,33.38,34.17,39.31,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1356','Asia - Middle East - Israel, Jordan and Palestine onshore','Israel - onshore; Jordan; Palestine - onshore.',29.18,33.38,34.17,39.31,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1357','Europe - eastern and FSU','Albania; Bulgaria; Czech Republic; Germany (former DDR); Hungary; Poland; Romania; Slovakia. Armenia; Azerbaijan; Belarus; Estonia; Georgia; Kazakhstan; Kyrgyzstan; Latvia; Lithuania; Moldova; Russian Federation; Tajikistan; Turkmenistan; Ukraine; Uzbekistan.',35.1,78.0,9.87,-169.73,1);
|
||||
INSERT INTO "extent" VALUES('EPSG','1358','South America - SAD69 by country','Brazil - onshore and offshore. In rest of South America - onshore north of approximately 45°S and Tierra del Fuego.',-55.96,12.52,-91.72,-25.28,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1359','Indonesia - Kalimantan SE','Indonesia - Kalimantan - onshore southeast coastal area including Mahakam delta coastal and offshore shelf areas.',-4.24,0.0,114.55,117.99,0);
|
||||
@@ -340,7 +340,7 @@ INSERT INTO "extent" VALUES('EPSG','1360','Indonesia - Kalimantan E','Indonesia
|
||||
INSERT INTO "extent" VALUES('EPSG','1361','Sudan - south','Sudan - south.',NULL,NULL,NULL,NULL,1);
|
||||
INSERT INTO "extent" VALUES('EPSG','1362','Asia - Brunei and East Malaysia','Brunei - onshore and offshore; Malaysia - East Malaysia (Sabah; Sarawak) - onshore and offshore.',0.85,7.67,109.31,119.61,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1363','UAE - Abu Dhabi and Dubai - onshore','United Arab Emirates (UAE) - Abu Dhabi onshore and Dubai onshore.',22.63,25.34,51.56,56.03,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1364','Asia - Japan and Korea','Japan - onshore; North Korea - onshore; South Korea - onshore.',20.37,45.54,122.83,154.05,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1364','Asia - Japan and Korea','Japan - onshore; Democratic People''s Republic of Korea (North Korea) - onshore; Republic of Korea (South Korea) - onshore.',20.37,45.54,122.83,154.05,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1365','Algeria - north of 32°N','Algeria - onshore north of 32°N.',31.99,37.14,-2.95,9.09,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1366','Africa - Algeria, Morocco and Tunisia','Algeria; Morocco; Tunisia.',18.98,37.34,-13.17,11.99,1);
|
||||
INSERT INTO "extent" VALUES('EPSG','1367','Canada - Ontario','Canada - Ontario.',41.67,56.9,-95.16,-74.35,0);
|
||||
@@ -472,9 +472,9 @@ INSERT INTO "extent" VALUES('EPSG','1492','Yemen - South Yemen - mainland west o
|
||||
INSERT INTO "extent" VALUES('EPSG','1493','Yemen - South Yemen - mainland east of 48°E','Yemen - South Yemen onshore mainland east of 48°E.',13.94,19.0,48.0,53.14,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1494','Vietnam - onshore Vung Tau area','Vietnam - onshore Vung Tau area.',9.03,11.04,105.49,107.58,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1495','Vietnam - offshore Cuu Long basin','Vietnam - offshore - Cuu Long basin and northwestern part of Nam Con Son basin.',7.99,11.15,106.54,110.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1496','Korea, Republic of (South Korea) - 128°E to 130°E onshore','Republic of Korea (South Korea) - onshore between 128°E and 130°E.',34.49,38.64,128.0,129.65,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1497','Korea, Republic of (South Korea) - 126°E to 128°E onshore','Republic of Korea (South Korea) - onshore between 126°E and 128°E.',33.14,38.33,126.0,128.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1498','Korea, Republic of (South Korea) - 124°E to 126°E onshore','Republic of Korea (South Korea) - onshore between 124°E and 126°E.',33.99,38.04,124.53,126.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1496','South Korea - 128°E to 130°E onshore','Republic of Korea (South Korea) - onshore between 128°E and 130°E.',34.49,38.64,128.0,129.65,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1497','South Korea - 126°E to 128°E onshore','Republic of Korea (South Korea) - onshore between 126°E and 128°E.',33.14,38.33,126.0,128.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1498','South Korea - 124°E to 126°E onshore','Republic of Korea (South Korea) - onshore between 124°E and 126°E.',33.99,38.04,124.53,126.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1499','Venezuela - Maracaibo - blocks I II and III','Venezuela - Maracaibo area offshore blocks I, II and III.',10.0,10.51,-71.5,-71.17,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1500','New Zealand - North Island','New Zealand - North Island.',-41.67,-34.1,171.99,178.63,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','1501','New Zealand - South Island','New Zealand - South Island.',-46.86,-40.44,166.37,174.46,0);
|
||||
@@ -1046,7 +1046,7 @@ INSERT INTO "extent" VALUES('EPSG','2066','World - N hemisphere - 18°E to 24°E
|
||||
INSERT INTO "extent" 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 "extent" 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. Türkiye (Turkey). Uganda. Ukraine.',0.0,84.0,24.0,30.0,0);
|
||||
INSERT INTO "extent" 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);
|
||||
INSERT INTO "extent" VALUES('EPSG','2070','World - N hemisphere - 30°E to 36°E - by country','Between 30°E and 36°E, northern hemisphere between equator and 84°N, onshore and offshore. Belarus. Cyprus. Egypt. Ethiopia. Finland. Israel. Jordan. Kenya. Lebanon. Moldova. Norway. Russian Federation. Saudi Arabia. Sudan. Syria. Türkiye (Turkey). Uganda. Ukraine.',0.0,84.0,30.0,36.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2070','World - N hemisphere - 30°E to 36°E - by country','Between 30°E and 36°E, northern hemisphere between equator and 84°N, onshore and offshore. Belarus. Cyprus. Egypt. Ethiopia. Finland. Israel. Jordan. Kenya. Lebanon. Moldova. Norway. Palestine. Russian Federation. Saudi Arabia. Sudan. Syria. Türkiye (Turkey). Uganda. Ukraine.',0.0,84.0,30.0,36.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2071','World - S hemisphere - 30°E to 36°E - by country','Between 30°E and 36°E, southern hemisphere between 80°S and equator, onshore and offshore. Burundi. Eswatini (Swaziland). Kenya. Malawi. Mozambique. Rwanda. South Africa. Tanzania. Uganda. Zambia. Zimbabwe.',-80.0,0.0,30.0,36.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2072','World - N hemisphere - 36°E to 42°E - by country','Between 36°E and 42°E, northern hemisphere between equator and 84°N, onshore and offshore. Djibouti. Egypt. Eritrea. Ethiopia. Georgia. Iraq. Jordan. Kenya. Lebanon. Russian Federation. Saudi Arabia. Somalia. Sudan. Syria. Türkiye (Turkey). Ukraine.',0.0,84.0,36.0,42.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2073','World - S hemisphere - 36°E to 42°E - by country','Between 36°E and 42°E, southern hemisphere between 80°S and equator, onshore and offshore. Kenya. Mozambique. Tanzania.',-80.0,0.0,36.0,42.0,0);
|
||||
@@ -1076,9 +1076,9 @@ INSERT INTO "extent" VALUES('EPSG','2096','World - N hemisphere - 108°E to 114
|
||||
INSERT INTO "extent" VALUES('EPSG','2097','World - S hemisphere - 108°E to 114°E - by country','Between 108°E and 114°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. Indonesia.',-80.0,0.0,108.0,114.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2098','World - N hemisphere - 114°E to 120°E - by country','Between 114°E and 120°E, northern hemisphere between equator and 84°N, onshore and offshore. Brunei. China. Hong Kong. Indonesia. Malaysia - East Malaysia - Sarawak. Mongolia. Philippines. Russian Federation. Taiwan.',0.0,84.0,114.0,120.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2099','World - S hemisphere - 114°E to 120°E - by country','Between 114°E and 120°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. Indonesia.',-80.0,0.0,114.0,120.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2100','World - N hemisphere - 120°E to 126°E - by country','Between 120°E and 126°E, northern hemisphere between equator and 84°N, onshore and offshore. China. Indonesia. Japan. North Korea. Philippines. Russian Federation. South Korea. Taiwan.',0.0,84.0,120.0,126.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2100','World - N hemisphere - 120°E to 126°E - by country','Between 120°E and 126°E, northern hemisphere between equator and 84°N, onshore and offshore. China. Indonesia. Japan. Democratic People''s Republic of Korea (North Korea). Republic of Korea (South Korea). Philippines. Russian Federation. Taiwan.',0.0,84.0,120.0,126.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2101','World - S hemisphere - 120°E to 126°E - by country','Between 120°E and 126°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. East Timor. Indonesia.',-80.0,0.0,120.0,126.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2102','World - N hemisphere - 126°E to 132°E - by country','Between 126°E and 132°E, northern hemisphere between equator and 84°N, onshore and offshore. China. Indonesia. Japan. North Korea. Russian Federation. South Korea.',0.0,84.0,126.0,132.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2102','World - N hemisphere - 126°E to 132°E - by country','Between 126°E and 132°E, northern hemisphere between equator and 84°N, onshore and offshore. China. Indonesia. Japan. Democratic People''s Republic of Korea (North Korea). Republic of Korea (South Korea). Russian Federation.',0.0,84.0,126.0,132.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2103','World - S hemisphere - 126°E to 132°E - by country','Between 126°E and 132°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. East Timor. Indonesia.',-80.0,0.0,126.0,132.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2104','World - N hemisphere - 132°E to 138°E - by country','Between 132°E and 138°E, northern hemisphere between equator and 84°N, onshore and offshore. China. Japan. Russian Federation.',0.0,84.0,132.0,138.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2105','World - S hemisphere - 132°E to 138°E - by country','Between 132°E and 138°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. Indonesia.',-80.0,0.0,132.0,138.0,0);
|
||||
@@ -1130,7 +1130,7 @@ INSERT INTO "extent" VALUES('EPSG','2150','North America - 66°W to 60°W and NA
|
||||
INSERT INTO "extent" VALUES('EPSG','2151','Canada - 60°W to 54°W','Canada between 60°W and 54°W - Newfoundland and Labrador; Nunavut; Quebec.',38.56,84.0,-60.0,-54.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2152','Canada - 54°W to 48°W','Canada between 54°W and 48°W onshore and offshore - Newfoundland and Labrador.',39.5,57.65,-54.0,-47.99,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2153','Canada - 48°W to 42°W','Canada offshore Atlantic - 48°W to 42°W.',39.85,54.47,-48.0,-42.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2154','USA - Alabama - SPCS - E','United States (USA) - Alabama east of approximately 86°37''W - counties Barbour; Bullock; Calhoun; Chambers; Cherokee; Clay; Cleburne; Coffee; Coosa; Covington; Crenshaw; Dale; De Kalb; Elmore; Etowah; Geneva; Henry; Houston; Jackson; Lee; Macon; Madison; Marshall; Montgomery; Pike; Randolph; Russell; StClair; Talladega; Tallapoosa.',30.99,35.0,-86.79,-84.89,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2154','USA - Alabama - SPCS - E','United States (USA) - Alabama east of approximately 86°37''W - counties Barbour; Bullock; Calhoun; Chambers; Cherokee; Clay; Cleburne; Coffee; Coosa; Covington; Crenshaw; Dale; De Kalb; Elmore; Etowah; Geneva; Henry; Houston; Jackson; Lee; Macon; Madison; Marshall; Montgomery; Pike; Randolph; Russell; St Clair; Talladega; Tallapoosa.',30.99,35.0,-86.79,-84.89,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2155','USA - Alabama - SPCS - W','United States (USA) - Alabama west of approximately 86°37''W - counties Autauga; Baldwin; Bibb; Blount; Butler; Chilton; Choctaw; Clarke; Colbert; Conecuh; Cullman; Dallas; Escambia; Fayette; Franklin; Greene; Hale; Jefferson; Lamar; Lauderdale; Lawrence; Limestone; Lowndes; Marengo; Marion; Mobile; Monroe; Morgan; Perry; Pickens; Shelby; Sumter; Tuscaloosa; Walker; Washington; Wilcox; Winston.',30.14,35.02,-88.48,-86.3,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2156','USA - Alaska - Panhandle','United States (USA) - Alaska - east of 141°W; i.e. Panhandle.',54.61,60.35,-141.0,-129.99,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2157','USA - Alaska - Aleutian Islands','United States (USA) - Alaska - Aleutian Islands onshore.',51.3,54.34,172.42,-164.84,0);
|
||||
@@ -1385,7 +1385,7 @@ INSERT INTO "extent" VALUES('EPSG','2405','Kazakhstan - Caspian Sea','Kazakhstan
|
||||
INSERT INTO "extent" VALUES('EPSG','2406','Qatar - offshore','Qatar - offshore.',24.64,27.05,50.55,53.04,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2407','Greenland - south of 72°N','Greenland - south of 72°N.',59.75,72.0,-55.0,-40.0,1);
|
||||
INSERT INTO "extent" VALUES('EPSG','2408','Japan - Okinawa','Japan - onshore Okinawa.',23.98,26.91,122.83,131.38,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2409','Asia - Japan and South Korea','Japan - onshore; South Korea - onshore.',20.37,45.54,122.83,145.87,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2409','Asia - Japan and South Korea','Japan - onshore; Republic of Korea (South Korea) - onshore.',20.37,45.54,122.83,145.87,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2410','Canada - NWT; Nunavut; Saskatchewan','Canada - Northwest Territories; Nunavut; Saskatchewan.',49.0,83.17,-136.46,-60.72,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2411','Asia - India mainland and Nepal','India - mainland onshore; Nepal.',8.02,35.51,68.13,97.42,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2412','USA - Alaska mainland','United States (USA) - Alaska mainland.',54.34,71.4,-168.26,-129.99,0);
|
||||
@@ -1578,8 +1578,8 @@ INSERT INTO "extent" VALUES('EPSG','2598','Algeria - District 3','Algeria - Dist
|
||||
INSERT INTO "extent" VALUES('EPSG','2599','Algeria - In Amenas','Algeria - In Amenas block.',27.5,28.3,8.83,9.92,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2600','Algeria - Hassi Bir Reikaz','Algeria - Hassi Bir Reikaz.',31.75,32.42,7.16,8.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2601','Norway - offshore north of 62°N; Svalbard','Norway - offshore north of 62°N. Also Svalbard - onshore and offshore.',62.0,84.73,-3.35,38.01,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2602','Palestine','Palestine Territory.',31.21,32.55,34.17,35.58,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2603','Asia - Middle East - Israel and Palestine Territory onshore','Israel - onshore; Palestine Territory - onshore.',29.45,33.28,34.17,35.69,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2602','Palestine','Palestine.',31.21,32.55,34.17,35.58,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2603','Asia - Middle East - Israel and Palestine onshore','Israel - onshore; Palestine onshore.',29.45,33.28,34.17,35.69,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2604','World - N hemisphere - 3-degree CM 048°E','Between 46°30''E and 49°30''E, northern hemisphere.',0.0,84.0,46.5,49.5,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2605','World - N hemisphere - 3-degree CM 051°E','Between 49°30''E and 52°30''E, northern hemisphere.',0.0,84.0,49.5,52.5,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2606','World - N hemisphere - 3-degree CM 054°E','Between 52°30''E and 55°30''E, northern hemisphere.',0.0,84.0,52.5,55.5,0);
|
||||
@@ -1806,7 +1806,7 @@ INSERT INTO "extent" VALUES('EPSG','2826','Africa - South Sudan and Sudan - west
|
||||
INSERT INTO "extent" 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 "extent" 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 "extent" 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 "extent" 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; Belarus; Belize; Benin; Bermuda; Bhutan; Bolivia; BES Islands - Bonaire, St Eustatius and Saba; Bosnia and Herzegovina; Botswana; Bouvet Island; Brazil; British Indian Ocean Territory; British Virgin Islands; Brunei; Bulgaria; Burkina Faso; Burundi; Cambodia; Cameroon; Canada; Cape Verde; Cayman Islands; Central African Republic; Chad; Chile; China; China - Hong Kong; China - Macao; Christmas Island; Cocos (Keeling) Islands; Colombia; Comoros; Congo; Congo DR (Zaire); 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; Honduras; Hungary; Iceland; India; Indonesia; Iran; Iraq; Ireland; Israel; Italy; Jamaica; Japan; Jordan; Kazakhstan; Kenya; Kiribati; North Korea; South Korea; Kosovo; Kuwait; Kyrgyzstan; Laos; Latvia; Lebanon; Lesotho; Liberia; Libya; Liechtenstein; Lithuania; Luxembourg; Madagascar; Malawi; Malaysia; Maldives; Mali; Malta; Marshall Islands; Martinique; Mauritania; Mauritius; Mayotte; Mexico; Micronesia; Moldova; 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; Russia; Rwanda; St Barthelemy; St Helena, Ascension and Tristan da Cunha; St Kitts and Nevis; St Lucia; St Maarten; St Martin; St Pierre and Miquelon; St Vincent and the Grenadines; Samoa; San Marino; Sao Tome and Principe; Saudi Arabia; Senegal; Serbia; Seychelles; Sierra Leone; Singapore; Slovakia; Slovenia; 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; Syria; Taiwan; Tajikistan; Tanzania; Thailand; Togo; Tokelau; Tonga; Trinidad and Tobago; Tunisia; Türkiye (Turkey); Turkmenistan; Turks and Caicos Islands; Tuvalu; Uganda; Ukraine; United Arab Emirates (UAE); United Kingdom (UK); United States (USA); US Minor Outlying Islands; US Virgin Islands; Uruguay; Uzbekistan; Vanuatu; Vatican; Venezuela; Vietnam; Wallis and Futuna; Western Sahara; Yemen; Zambia; Zimbabwe.',-90.0,90.0,-180.0,180.0,0);
|
||||
INSERT INTO "extent" 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; Belarus; Belize; Benin; Bermuda; Bhutan; Bolivia; BES Islands - Bonaire, St Eustatius and Saba; Bosnia and Herzegovina; Botswana; Bouvet Island; Brazil; British Indian Ocean Territory; British Virgin Islands; Brunei; Bulgaria; Burkina Faso; Burundi; Cambodia; Cameroon; Canada; Cape Verde; Cayman Islands; Central African Republic; Chad; Chile; China; Christmas Island; Cocos (Keeling) Islands; Colombia; Comoros; Congo; Congo DR (Zaire); 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; Honduras; Hong Kong; Hungary; Iceland; India; Indonesia; Iran; Iraq; Ireland; Israel; Italy; Jamaica; Japan; Jordan; Kazakhstan; Kenya; Kiribati; Democratic People''s Republic of Korea (North Korea), Republic of Korea (South Korea), Kosovo; Kuwait; Kyrgyzstan; Laos; Latvia; Lebanon; Lesotho; Liberia; Libya; Liechtenstein; Lithuania; Luxembourg; Macao; Madagascar; Malawi; Malaysia; Maldives; Mali; Malta; Marshall Islands; Martinique; Mauritania; Mauritius; Mayotte; Mexico; Micronesia; Moldova; 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; Palestine; Panama; Papua New Guinea (PNG); Paraguay; Peru; Philippines; Pitcairn; Poland; Portugal; Puerto Rico; Qatar; Reunion; Romania; Russia; Rwanda; St Barthelemy; St Helena, Ascension and Tristan da Cunha; St Kitts and Nevis; St Lucia; St Maarten; St Martin; St Pierre and Miquelon; St Vincent and the Grenadines; Samoa; San Marino; Sao Tome and Principe; Saudi Arabia; Senegal; Serbia; Seychelles; Sierra Leone; Singapore; Slovakia; Slovenia; 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; Syria; Taiwan; Tajikistan; Tanzania; Thailand; Togo; Tokelau; Tonga; Trinidad and Tobago; Tunisia; Türkiye (Turkey); Turkmenistan; Turks and Caicos Islands; Tuvalu; Uganda; Ukraine; United Arab Emirates (UAE); United Kingdom (UK); United States (USA); US Minor Outlying Islands; US Virgin Islands; Uruguay; Uzbekistan; Vanuatu; Vatican; Venezuela; Vietnam; Wallis and Futuna; Western Sahara; Yemen; Zambia; Zimbabwe.',-90.0,90.0,-180.0,180.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2831','Canada - Atlantic offshore','Canada - offshore Newfoundland and Labrador, New Brunswick and Nova Scotia - west of 44°W and north of 40°N.',40.0,64.21,-67.75,-43.99,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2832','Canada - British Columbia','Canada - British Columbia.',48.25,60.01,-139.04,-114.08,0);
|
||||
INSERT INTO "extent" 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);
|
||||
@@ -1872,7 +1872,7 @@ INSERT INTO "extent" VALUES('EPSG','2892','Guadeloupe - Grande-Terre and Basse-T
|
||||
INSERT INTO "extent" VALUES('EPSG','2893','Guadeloupe - La Desirade - onshore','Guadeloupe - onshore - La Desirade.',16.26,16.38,-61.13,-60.97,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2894','Guadeloupe - Marie-Galante - onshore','Guadeloupe - onshore - Marie-Galante.',15.8,16.05,-61.39,-61.13,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2895','Guadeloupe - Les Saintes - onshore','Guadeloupe - onshore - Les Saintes.',15.8,15.94,-61.68,-61.52,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2896','Asia - Middle East - Israel, Palestine Territory, Turkey - offshore','Israel and Palestine Territory - offshore Mediterranean Sea; Türkiye (Turkey) - offshore Black Sea.',31.35,43.45,28.03,41.47,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2896','Asia - Middle East - Israel, Palestine, Turkey - offshore','Israel and Palestine - offshore Mediterranean Sea; Türkiye (Turkey) - offshore Black Sea.',31.35,43.45,28.03,41.47,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2897','Asia - Middle East - Israel and Palestine Territory offshore','Israel and Palestine Territory - offshore Mediterranean Sea.',31.33,33.1,33.5,35.1,1);
|
||||
INSERT INTO "extent" VALUES('EPSG','2898','Germany - Berlin','Germany - Berlin.',52.33,52.65,13.09,13.76,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','2899','Australia - 126°E to 132°E, 8°S to 12°S (SC52) onshore','Australia - onshore mainland between 8°S and 12°S and 126°E and 132°E.',-12.0,-11.07,131.02,132.0,0);
|
||||
@@ -2241,8 +2241,8 @@ INSERT INTO "extent" VALUES('EPSG','3261','Honduras - onshore','Honduras - onsho
|
||||
INSERT INTO "extent" VALUES('EPSG','3262','Iceland - mainland','Iceland - mainland.',63.34,66.59,-24.66,-13.38,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3263','Japan - onshore mainland','Japan - onshore mainland - Hokkaido, Honshu, Shikoku, Kyushu.',30.94,45.54,129.3,145.87,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3264','Kenya - onshore','Kenya - onshore.',-4.72,4.63,33.9,41.91,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3265','Korea, Democratic People''s Republic of (North Korea) - onshore','Democratic People''s Republic of Korea (North Korea) - onshore.',37.62,43.01,124.27,130.75,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3266','Korea, Republic of (South Korea) - onshore','Republic of Korea (South Korea) - onshore.',33.14,38.64,124.53,131.01,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3265','North Korea - onshore','Democratic People''s Republic of Korea (North Korea) - onshore.',37.62,43.01,124.27,130.75,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3266','South Korea - onshore','Republic of Korea (South Korea) - onshore.',33.14,38.64,124.53,131.01,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3267','Kuwait - onshore','Kuwait - onshore.',28.53,30.09,46.54,48.48,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3268','Latvia - onshore','Latvia - onshore.',55.67,58.09,20.87,28.24,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3269','Lebanon - onshore','Lebanon - onshore.',33.06,34.65,35.04,36.63,0);
|
||||
@@ -2310,8 +2310,8 @@ INSERT INTO "extent" VALUES('EPSG','3330','Virgin Islands, US - onshore','US Vir
|
||||
INSERT INTO "extent" VALUES('EPSG','3331','Western Sahara - onshore','Western Sahara - onshore.',20.71,27.67,-17.16,-8.66,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3332','Yemen - onshore','Yemen - onshore.',12.09,19.0,41.8,54.53,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3333','Finland - onshore','Finland - onshore.',59.75,70.09,19.24,31.59,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3334','China - Hong Kong - onshore','China - Hong Kong - onshore.',22.19,22.56,113.82,114.39,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3335','China - Hong Kong - offshore','China - Hong Kong - offshore.',22.13,22.58,113.76,114.51,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3334','Hong Kong - onshore','Hong Kong - onshore.',22.19,22.56,113.82,114.39,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3335','Hong Kong - offshore','Hong Kong - offshore.',22.13,22.58,113.76,114.51,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3336','Iran - onshore','Iran - onshore.',25.02,39.78,44.03,63.34,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3337','Reunion - onshore','Reunion - onshore.',-21.42,-20.81,55.16,55.91,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3338','New Zealand - Stewart Island','New Zealand - Stewart Island.',-47.33,-46.63,167.29,168.34,0);
|
||||
@@ -2696,8 +2696,8 @@ INSERT INTO "extent" VALUES('EPSG','3716','Asia - Korea N and S - 126°E to 128
|
||||
INSERT INTO "extent" VALUES('EPSG','3717','Iraq - north of 36.2°N, 42°E to 43.9°E (map 2)','Iraq - north of UTM 4010000mN (approximately 36°13''N) and between 42°E and UTM 400000mE (approximately 43°56''E).',36.19,37.39,42.0,43.89,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3718','Iraq - 34.6°N to 36.2°N, east of 45°E (map 7)','Iraq - between UTM 3830000mN and 4010000mN (approximately 34°35''N and 36°13''N) and east of 45°E.',34.6,36.24,45.0,46.35,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3719','Iraq - north of 36.2°N, east of 43.9°E (map 3)','Iraq - north of UTM 4010000mN (approximately 36°13''N) and east of UTM 400000mE (approximatrely 43°56''E).',36.22,37.33,43.87,45.33,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3720','Korea, Republic of (South Korea) - 130°E to 132°E onshore','Republic of Korea (South Korea) - onshore between 130°E and 132°E.',37.39,37.62,130.71,131.01,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3721','Korea, Republic of (South Korea) - 126°E to 128°E Jeju','Republic of Korea (South Korea) - between 126°E and 128°E - Jeju island onshore.',33.14,33.61,126.09,127.01,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3720','South Korea - 130°E to 132°E onshore','Republic of Korea (South Korea) - onshore between 130°E and 132°E.',37.39,37.62,130.71,131.01,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3721','South Korea - Jeju','Republic of Korea (South Korea) - between 126°E and 128°E - Jeju island onshore.',33.14,33.61,126.09,127.01,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3722','Iraq - 33°N to 34.6°N, west of 40.1°E (map 8)','Iraq - north of UTM 3650000mN (approximately 32°58''N) and west of UTM zone 37 600000mE (approximately 40°04''E).',32.98,33.99,38.79,40.09,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3723','Iraq - 33°N to 34.6°N, 40.1°E to 42°E (map 9)','Iraq - between UTM 3650000mN and 3830000mN (approximately 32°58''N and 34°35''N) and between UTM zone 37 600000mE (approximately 40°04''E) and 42°E.',32.95,34.6,40.07,42.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3724','Iraq - 33°N to 34.6°N, 42°E to 43.9°E (map 10)','Iraq - between UTM 3650000mN and 3830000mN (approximately 32°58''N and 34°35''N) and between 42°E and UTM 400000mE (approximately 43°56''E).',32.95,34.61,42.0,43.93,0);
|
||||
@@ -2706,7 +2706,7 @@ INSERT INTO "extent" VALUES('EPSG','3726','Asia - Korea N and S - 128°E to 130
|
||||
INSERT INTO "extent" VALUES('EPSG','3727','Asia - Korea N and S - east of 130°E','Democratic People''s Republic of Korea (North Korea) and Republic of Korea (South Korea) - onshore east of 130°E.',37.39,42.98,130.0,131.01,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3728','Iraq - 31.4°N to 33°N, 40.1°E to 42°E (map 14)','Iraq - between UTM 3470000mN and 3650000mN (approximately 31°21''N and 32°58''N) and between UTM zone 37 600000mE (approximately 40°04''E) and 42°E.',31.32,32.99,40.05,42.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3729','Iraq - 31.4°N to 33°N, west of 40.1°E (map 13)','Iraq - sorth of UTM 3650000mN (approximately 32°58''N) and west of UTM zone 37 600000mE (approximately 40°04''E).',32.0,32.99,38.92,40.08,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3730','Korea, Republic of (South Korea) - 126°E to 128°E mainland','Republic of Korea (South Korea) - between 126°E and 128°E - mainland and nearshore.',33.96,38.33,126.0,128.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3730','South Korea - 126°E to 128°E mainland','Republic of Korea (South Korea) - between 126°E and 128°E - mainland and nearshore.',33.96,38.33,126.0,128.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3731','Georgia - offshore','Georgia - offshore.',41.54,43.33,38.97,41.71,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3732','Spain - Catalonia onshore','Spain - Catalonia onshore.',40.49,42.86,0.16,3.39,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3733','Bolivia - east of 60°W','Bolivia - east of 60°W.',-20.17,-16.27,-60.0,-57.52,0);
|
||||
@@ -2715,7 +2715,7 @@ INSERT INTO "extent" VALUES('EPSG','3735','Thailand - onshore east of 102°E','T
|
||||
INSERT INTO "extent" VALUES('EPSG','3736','Italy - mainland and Sicily','Italy - mainland (including San Marino and Vatican City State) and Sicily.',36.59,47.1,6.62,18.58,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3737','Bhutan - Chhukha district','Bhutan - Chhukha district.',26.71,27.32,89.26,89.83,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3738','Bhutan - Dagana district','Bhutan - Dagana district.',26.7,27.29,89.63,90.08,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3739','Korea, Republic of (South Korea) - mainland','Republic of Korea (South Korea) - mainland onshore.',33.96,38.64,125.75,129.65,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3739','South Korea - mainland','Republic of Korea (South Korea) - mainland onshore.',33.96,38.64,125.75,129.65,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3740','Bhutan - Gasa district','Bhutan - Gasa district.',27.72,28.33,89.44,90.47,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3741','Thailand - onshore and Gulf of Thailand','Thailand - onshore plus offshore Gulf of Thailand.',5.63,20.46,97.34,105.64,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','3742','Bhutan - Ha district','Bhutan - Ha district.',27.02,27.62,88.9,89.39,0);
|
||||
@@ -3766,5 +3766,10 @@ INSERT INTO "extent" VALUES('EPSG','4786','Uzbekistan - 66°E to 72°E','Uzbekis
|
||||
INSERT INTO "extent" VALUES('EPSG','4787','Uzbekistan - east of 72°E','Uzbekistan - east of 72°E.',40.26,41.21,72.0,73.17,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','4788','BES Islands - Sint Eustatius - onshore','Bonaire, Sint Eustatius and Saba (BES Islands or Caribbean Netherlands) - Sint Eustatius - onshore.',17.41,17.58,-63.05,-62.88,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','4789','Brazil - Ribeirao Preto municipality','Brazil - Ribeirao Preto municipality, Sao Paulo state.',-21.37,-21.06,-47.99,-47.64,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','4790','Uganda - north of equator and east of 30°E','Uganda - north of equator and east of 30°E.',0.0,4.23,30.0,35.01,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','4791','Uganda - south of equator and east of 30°E','Uganda - south of equator and east of 30°E.',-1.45,0.0,30.0,33.98,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','4792','Uganda - south of equator and west of 30°E','Uganda - south of equator and west of 30°E.',-1.48,0.0,29.57,30.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','4793','Liberia - east of 12°W','Liberia - onshore, and offshore east of 12°W.',1.02,8.52,-12.0,-7.36,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','4794','Liberia - west of 12°W','Liberia - offshore west of 12°W.',3.12,6.4,-13.59,-12.0,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','4799','UK - Oxford to Cambridge','United Kingdom (UK) - on or related to the East West Rail (Phases 2 and 3) route from Oxford to Cambridge via Bicester, Bletchley and Bedford, including the route from Claydon Junction to Aylesbury and Princes Risborough.',51.7,52.33,-1.43,0.27,0);
|
||||
INSERT INTO "extent" VALUES('EPSG','4800','Papua New Guinea - onshore and offshore - Western, Gulf and Central provinces','Papua New Guinea - onshore and offshore - Western Province, Gulf Province, Central Province, National Capital District and maritime zones offshore of these provinces.',-12.0,-4.98,139.2,149.67,0);
|
||||
|
||||
@@ -2364,12 +2364,20 @@ INSERT INTO "geodetic_crs" VALUES('EPSG','10784','IGb20',NULL,'geographic 3D','E
|
||||
INSERT INTO "usage" VALUES('EPSG','22364','geodetic_crs','EPSG','10784','EPSG','1262','EPSG','1027');
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','10785','IGb20',NULL,'geographic 2D','EPSG','6422','EPSG','1400',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22365','geodetic_crs','EPSG','10785','EPSG','1262','EPSG','1027');
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','10789','UGRF',NULL,'geocentric','EPSG','6500','EPSG','1401',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22457','geodetic_crs','EPSG','10789','EPSG','1241','EPSG','1027');
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','10790','UGRF',NULL,'geographic 3D','EPSG','6423','EPSG','1401',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22458','geodetic_crs','EPSG','10790','EPSG','1241','EPSG','1027');
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','10791','UGRF',NULL,'geographic 2D','EPSG','6422','EPSG','1401',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22459','geodetic_crs','EPSG','10791','EPSG','1241','EPSG','1183');
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','10798','LibRef21',NULL,'geocentric','EPSG','6500','EPSG','1402',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22444','geodetic_crs','EPSG','10798','EPSG','1142','EPSG','1027');
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','10799','LibRef21',NULL,'geographic 3D','EPSG','6423','EPSG','1402',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22445','geodetic_crs','EPSG','10799','EPSG','1142','EPSG','1027');
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','10800','LibRef21',NULL,'geographic 2D','EPSG','6422','EPSG','1402',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22446','geodetic_crs','EPSG','10800','EPSG','1142','EPSG','1181');
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','10849','EWR3-IRF',NULL,'geographic 2D','EPSG','6422','EPSG','1405',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22763','geodetic_crs','EPSG','10849','EPSG','4799','EPSG','1141');
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','20033','MWC18-IRF',NULL,'geographic 2D','EPSG','6422','EPSG','1324',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','18335','geodetic_crs','EPSG','20033','EPSG','4666','EPSG','1141');
|
||||
INSERT INTO "geodetic_crs" VALUES('EPSG','20039','SIRGAS-Chile 2021',NULL,'geocentric','EPSG','6500','EPSG','1327',NULL,0);
|
||||
|
||||
@@ -108,9 +108,9 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','1115','Israeli Geodetic Datum 2005(2
|
||||
INSERT INTO "usage" VALUES('EPSG','13167','geodetic_datum','EPSG','1115','EPSG','1126','EPSG','1027');
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1116','NAD83 (National Spatial Reference System 2011)',NULL,'EPSG','7019','EPSG','8901','2012-06-12',NULL,NULL,NULL,2010.0,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','13168','geodetic_datum','EPSG','1116','EPSG','1511','EPSG','1027');
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1117','NAD83 (National Spatial Reference System PA11)',NULL,'EPSG','7019','EPSG','8901','2012-06-12',NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1117','NAD83 (National Spatial Reference System PA11)',NULL,'EPSG','7019','EPSG','8901','2012-06-12',NULL,NULL,NULL,2010.0,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','13169','geodetic_datum','EPSG','1117','EPSG','4162','EPSG','1027');
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1118','NAD83 (National Spatial Reference System MA11)',NULL,'EPSG','7019','EPSG','8901','2012-06-12',NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1118','NAD83 (National Spatial Reference System MA11)',NULL,'EPSG','7019','EPSG','8901','2012-06-12',NULL,NULL,NULL,2010.0,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','13170','geodetic_datum','EPSG','1118','EPSG','4167','EPSG','1027');
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1120','Mexico ITRF2008',NULL,'EPSG','7019','EPSG','8901','2010-01-01',NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','13172','geodetic_datum','EPSG','1120','EPSG','1160','EPSG','1027');
|
||||
@@ -408,7 +408,7 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','1353','ETRS89/DREF91 Realization 201
|
||||
INSERT INTO "usage" VALUES('EPSG','19242','geodetic_datum','EPSG','1353','EPSG','1103','EPSG','1027');
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1355','Sonatrach Reference Frame 2020',NULL,'EPSG','7019','EPSG','8901','2012-11-15',NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','19535','geodetic_datum','EPSG','1355','EPSG','1026','EPSG','1136');
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1356','Latvian coordinate system 2020',NULL,'EPSG','7019','EPSG','8901','2023-01-01',NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1356','Latvian coordinate system 2020',NULL,'EPSG','7019','EPSG','8901','2023-01-01',NULL,NULL,NULL,2020.28,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','19558','geodetic_datum','EPSG','1356','EPSG','1139','EPSG','1026');
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1357','Reseau Geodesique de Nouvelle Caledonie 2015',NULL,'EPSG','7019','EPSG','8901','2016-01-01',NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','19600','geodetic_datum','EPSG','1357','EPSG','1174','EPSG','1181');
|
||||
@@ -454,8 +454,12 @@ INSERT INTO "geodetic_datum" VALUES('EPSG','1399','International Terrestrial Ref
|
||||
INSERT INTO "usage" VALUES('EPSG','22373','geodetic_datum','EPSG','1399','EPSG','1262','EPSG','1027');
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1400','IGb20',NULL,'EPSG','7019','EPSG','8901','2015-01-01',2015.0,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22362','geodetic_datum','EPSG','1400','EPSG','1262','EPSG','1027');
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1401','Uganda Geodetic Reference Frame',NULL,'EPSG','7019','EPSG','8901','March 2011',NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22456','geodetic_datum','EPSG','1401','EPSG','1241','EPSG','1181');
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1402','Liberia Reference Frame 2021',NULL,'EPSG','7019','EPSG','8901','2022-10-31',NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22451','geodetic_datum','EPSG','1402','EPSG','1142','EPSG','1181');
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','1405','EWR3 Intermediate Reference Frame',NULL,'EPSG','7019','EPSG','8901','2024-01-01',NULL,NULL,NULL,NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22755','geodetic_datum','EPSG','1405','EPSG','4799','EPSG','1141');
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6001','Not specified (based on Airy 1830 ellipsoid)',NULL,'EPSG','7001','EPSG','8901',NULL,NULL,NULL,NULL,NULL,1);
|
||||
INSERT INTO "usage" VALUES('EPSG','13422','geodetic_datum','EPSG','6001','EPSG','1263','EPSG','1213');
|
||||
INSERT INTO "geodetic_datum" VALUES('EPSG','6002','Not specified (based on Airy Modified 1849 ellipsoid)',NULL,'EPSG','7002','EPSG','8901',NULL,NULL,NULL,NULL,NULL,1);
|
||||
|
||||
@@ -156,6 +156,11 @@ VALUES
|
||||
('gllat_2023.tif','dk_sdfi_gllat_2023.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/dk_sdfi_gllat_2023.tif',1,1,NULL),
|
||||
('glmsl_2023.tif','dk_sdfi_glmsl_2023.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/dk_sdfi_glmsl_2023.tif',1,1,NULL),
|
||||
|
||||
-- dk_kds - Danish Agency for Climate Data
|
||||
-- Denmark
|
||||
('dvr90_evrf2019.tif','dk_kds_dvr90_evrf2019.tif',NULL,'GTiff','vgridshift',0,NULL,'https://cdn.proj.org/dk_kds_dvr90_evrf2019.tif',1,1,NULL),
|
||||
('dvr90_evrf2019_mean_tide.tif','dk_kds_dvr90_evrf2019_mean_tide.tif',NULL,'GTiff','vgridshift',0,NULL,'https://cdn.proj.org/dk_kds_dvr90_evrf2019_mean_tide.tif',1,1,NULL),
|
||||
|
||||
-- es_cat_icgc - Institut Cartogràfic i Geològic de Catalunya (ICGC)
|
||||
('100800401.gsb','es_cat_icgc_100800401.tif','100800401.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/es_cat_icgc_100800401.tif',1,1,NULL),
|
||||
|
||||
@@ -245,9 +250,11 @@ VALUES
|
||||
|
||||
-- jp_gsi - Geospatial Information Authority of Japan
|
||||
('jp_gsi_gsigeo2011.tif','jp_gsi_gsigeo2011.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/jp_gsi_gsigeo2011.tif',1,1,NULL),
|
||||
('JPGEO2024.isg','jp_gsi_jpgeo2024.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/jp_gsi_jpgeo2024.tif',1,1,NULL),
|
||||
|
||||
-- lv_lgia - Latvian Geospatial Information Agency
|
||||
('lv_lgia_lv14.tif','lv_lgia_lv14.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/lv_lgia_lv14.tif',1,1,NULL),
|
||||
('LV''14.gri','lv_lgia_lv14.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/lv_lgia_lv14.tif',1,1,NULL),
|
||||
('LKS92to2020NTv2.gsb','lv_lgia_lks92to2020.tif',NULL,'GTiff','hgridshift',0,NULL,'https://cdn.proj.org/lv_lgia_lks92to2020.tif',1,1,NULL),
|
||||
|
||||
-- mx_inegi - Instituto Nacional de Estadística, Geografía e Informática (INEGI) Mexico
|
||||
('GGM10.txt','mx_inegi_ggm10.tif',NULL,'GTiff','geoid_like',0,NULL,'https://cdn.proj.org/mx_inegi_ggm10.tif',1,1,NULL),
|
||||
|
||||
@@ -1165,7 +1165,7 @@ INSERT INTO "grid_transformation" VALUES('EPSG','9740','ETRS89 to EOS21-IRF (1)'
|
||||
INSERT INTO "usage" VALUES('EPSG','15342','grid_transformation','EPSG','9740','EPSG','4620','EPSG','1141');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9759','ETRS89 to ECML14_NB-IRF (1)','In conjunction with the ECML14_NB-TM map projection (code 9760) applied to ECML14_NB-IRF (code 9758), emulates the ECML14_NB Snake projection. Applied to ETRS89 (as realized through the OSNet v2009 CORS) defines ECML14_NB-IRF hence is errorless.','EPSG','9615','NTv2','EPSG','4258','EPSG','9758',0.0,'EPSG','8656','Latitude and longitude difference file','TN15-ETRS89-to-ECML14_NB-IRF.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'NR-Gbr ECML_NB OSNet2009',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','16500','grid_transformation','EPSG','9759','EPSG','4621','EPSG','1141');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9764','ETRS89 to EWR2-IRF (1)','In conjunction with the EWR2-TM map projection (code 9765) applied to EWR2-IRF (code 9763), emulates the EWR2 Snake projection. Applied to ETRS89 (as realized through the OSNet v2009 CORS) defines EWR2-IRF hence is errorless.','EPSG','9615','NTv2','EPSG','4258','EPSG','9763',0.0,'EPSG','8656','Latitude and longitude difference file','TN15-ETRS89-to-EWR2-IRF.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'NR-Gbr EWR2 OSNet2009',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9764','ETRS89 to EWR2-IRF (1)','In conjunction with the EWR2-TM map projection (code 9765) applied to EWR2-IRF (code 9763), emulates the EWR2 Snake projection. Applied to ETRS89 (as realized through the OSNet v2009 CORS) defines EWR2-IRF hence is errorless. In 2024 the EWR2 Grid (ETRS89 / EWR2 SnakeGrid) was extended eastwards as the EWR3 Grid (ETRS89 / EWR3 SnakeGrid). To the west of Bedford the EWR2 Grid is an exact subset of the EWR3 Grid; over this extent the EWR3 Grid replaces the EWR2 Grid. The EWR2 emulation file TN15-ETRS89-to-EWR2-IRF.gsb is a subset of the EWR3 emulation file TN15-ETRS89-to-EWR3-IRF.gsb (see CT code 10850).','EPSG','9615','NTv2','EPSG','4258','EPSG','9763',0.0,'EPSG','8656','Latitude and longitude difference file','TN15-ETRS89-to-EWR2-IRF.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'NR-Gbr EWR2 OSNet2009',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','16505','grid_transformation','EPSG','9764','EPSG','4622','EPSG','1141');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','9786','RGF93 v2b to NGF-IGN69 height (4)','Replaces RAF18 geoid model [RGF93 v2 to NGF-IGN69 height (3)]. Accuracy at each grid node is in the geoid model file. Recommended interpolation method is bilinear. For reversible alternative see RGF93 v2b to RGF93 v2b + NGF-IGN69 height (4) (code 9787).','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','9781','EPSG','5720',0.01,'EPSG','8666','Geoid (height correction) model file','RAF18b.mnt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Fra 18b',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','16689','grid_transformation','EPSG','9786','EPSG','1326','EPSG','1133');
|
||||
@@ -1748,7 +1748,7 @@ INSERT INTO "grid_transformation" VALUES('EPSG','10681','ETRS89 to ETRS89 + BSCD
|
||||
INSERT INTO "usage" VALUES('EPSG','21821','grid_transformation','EPSG','10681','EPSG','4779','EPSG','1272');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10683','RGM04 to RGM23 (2)','','EPSG','1087','Geocentric translation by Grid Interpolation (IGN)','EPSG','4470','EPSG','10671',0.05,'EPSG','8727','Geocentric translation file','RGM04versRGM23.txt',NULL,NULL,NULL,NULL,'EPSG','10671','IGN-Myt 5cm',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','21860','grid_transformation','EPSG','10683','EPSG','1159','EPSG','1178');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10685','SVS2000 height to SVS2010 height (1)','SLO-VTP2024 height transformation surface derived at 2116 benchmarks. Height differences vary between −0.240 m and −0.047 m; 1σ accuarcy at 8693 BM is 9.9mm. File is also available in Surfer .grd and Gravsoft .gri formats.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5779','EPSG','8690',0.02,'EPSG','8732','Vertical offset file','SLO-VTP2024.xyz',NULL,NULL,NULL,NULL,'EPSG','4765','GuRS-Svn',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10685','SVS2000 height to SVS2010 height (1)','SLO-VTP2024 height transformation surface derived at 2116 benchmarks. Height differences vary between −0.240 m and −0.047 m; 1σ accuracy at 8693 BM is 9.9mm. File is also available in Surfer .grd and Gravsoft .gri formats.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5779','EPSG','8690',0.02,'EPSG','8732','Vertical offset file','SLO-VTP2024.xyz',NULL,NULL,NULL,NULL,'EPSG','4765','GuRS-Svn',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','21886','grid_transformation','EPSG','10685','EPSG','3307','EPSG','1059');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10693','EUREF-FIN to N60 height (1)','For reversible alternative see EUREF-FIN to EUREF-FIN + N60 height (1) (code 10694). Derived through a correction surface to the Nordic NKG96 geoid model using 156 points at which both levelled and GPS heights were available. ASCII file format available.','EPSG','1123','Geographic3D to GravityRelatedHeight (gtg)','EPSG','10689','EPSG','5717',0.03,'EPSG','8666','Geoid (height correction) model file','fi_nls_fin2000.tif',NULL,NULL,NULL,NULL,NULL,NULL,'NLS-Fin 2000',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22010','grid_transformation','EPSG','10693','EPSG','3333','EPSG','1133');
|
||||
@@ -1766,7 +1766,7 @@ INSERT INTO "grid_transformation" VALUES('EPSG','10703','KKJ / Finland Uniform C
|
||||
INSERT INTO "usage" VALUES('EPSG','22055','grid_transformation','EPSG','10703','EPSG','3333','EPSG','1273');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10704','N43 height to N60 height (1)','Accuracy has not been determined.','EPSG','1137','Vertical Offset by TIN Interpolation (JSON)','EPSG','8675','EPSG','5717',999.0,'EPSG','1064','TIN offset file','fi_nls_n43_n60.json',NULL,NULL,NULL,NULL,'EPSG','2393','NLS-Fin TINshift',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22018','grid_transformation','EPSG','10704','EPSG','4522','EPSG','1059');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10705','N60 height to N2000 height (1)','Recommended method for N60<>N2000 trasformations, as more accurate than concatenating geoid models.','EPSG','1137','Vertical Offset by TIN Interpolation (JSON)','EPSG','5717','EPSG','3900',0.005,'EPSG','1064','TIN offset file','fi_nls_n60_n2000.json',NULL,NULL,NULL,NULL,'EPSG','2393','NLS-Fin TINshift',0);
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10705','N60 height to N2000 height (1)','Recommended method for N60<>N2000 transformations, as more accurate than concatenating geoid models.','EPSG','1137','Vertical Offset by TIN Interpolation (JSON)','EPSG','5717','EPSG','3900',0.005,'EPSG','1064','TIN offset file','fi_nls_n60_n2000.json',NULL,NULL,NULL,NULL,'EPSG','2393','NLS-Fin TINshift',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22201','grid_transformation','EPSG','10705','EPSG','3333','EPSG','1059');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10707','Canada velocity grid v8','Replaces Canada velocity grid v7 (code 9483). Although the interpolation CRS is given as NAD83(CSRS)v8 (also known as NAD83(CSRS) 2010), any version of NAD83(CSRS) may be used for grid interpolation without significant error.','EPSG','1141','Point motion by grid (NEU domain) (NTv2_Vel)','EPSG','10413','EPSG','10413',0.01,'EPSG','1050','Point motion velocity grid file','NAD83v80VG.gvb',NULL,NULL,NULL,NULL,'EPSG','10414','NRC-Can cvg8.0',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22258','grid_transformation','EPSG','10707','EPSG','4754','EPSG','1058');
|
||||
@@ -1806,6 +1806,24 @@ INSERT INTO "grid_transformation" VALUES('EPSG','10822','LN02 height to EVRF2019
|
||||
INSERT INTO "usage" VALUES('EPSG','22550','grid_transformation','EPSG','10822','EPSG','1286','EPSG','1059');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10823','LN02 height to EVRF2019 mean-tide height (2)','Determined at 553 points, SD 0.071m. Offset: mean -0.244m, minimum -0.506m, maximum -0.012m.','EPSG','1085','Vertical Offset by Grid Interpolation (asc)','EPSG','5728','EPSG','9390',0.142,'EPSG','8732','Vertical offset file','ch_2019m.asc',NULL,NULL,NULL,NULL,'EPSG','4258','EuG-Che 2019m 2020-09',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22551','grid_transformation','EPSG','10823','EPSG','1286','EPSG','1059');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10827','LKS-92 to Latvia 2000 height (1)','Published 2014-12-01. For reversible alternative to this transformation see LKS-92 to LKS-92 + Latvia 2000 height (1) (code 10828). File also available in ASCII txt format.','EPSG','1047','Geographic3D to GravityRelatedHeight (Gravsoft)','EPSG','4949','EPSG','7700',0.04,'EPSG','8666','Geoid (height correction) model file','LV''14.gri',NULL,NULL,NULL,NULL,NULL,NULL,'LGIA-Lva 2014',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22648','grid_transformation','EPSG','10827','EPSG','3268','EPSG','1133');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10828','LKS-92 to LKS-92 + Latvia 2000 height (1)','Reversible alternative to LKS-92 to Latvia 2000 height (1) (code 10827). File also available in ASCII txt format.','EPSG','1093','Geog3D to Geog2D+GravityRelatedHeight (Gravsoft)','EPSG','4949','EPSG','10826',0.04,'EPSG','8666','Geoid (height correction) model file','LV''14.gri',NULL,NULL,NULL,NULL,'EPSG','4661','LGIA-Lva 2014',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22649','grid_transformation','EPSG','10828','EPSG','3268','EPSG','1270');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10838','LKS-92 to LKS-2020 (1)','Accuracy of transformation is at 1 cm level one sigma. Care! The NTv2 format requires longitudes to be positive west. At a given point, LKS-2020 latitude (positive north) has a greater value than LKS-92 latitude and LKS-2020 longitude (positive east) has a lesser value than LKS-92 longitude. For point Odukalns: 56.8283960°N, 24.2727688°E (LKS-92) = 56.8283967°N, 24.2727679°E (LKS-2020).','EPSG','9615','NTv2','EPSG','4661','EPSG','10305',0.02,'EPSG','8656','Latitude and longitude difference file','LKS92to2020NTv2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'LGIA-Lva',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22705','grid_transformation','EPSG','10838','EPSG','1139','EPSG','1026');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10850','ETRS89 to EWR3-IRF (1)','In conjunction with the EWR3-TM map projection (code 9765) applied to EWR3-IRF (code 10849), emulates the EWR3 Snake projection. Applied to ETRS89 (as realized through the OSNet v2009 CORS) defines EWR3-IRF hence is errorless. In 2024 the EWR2 Grid (ETRS89 / EWR2 SnakeGrid) was extended eastwards as the EWR3 Grid (ETRS89 / EWR3 SnakeGrid). To the west of Bedford the EWR2 Grid is an exact subset of the EWR3 Grid; over this extent the EWR3 Grid replaces the EWR2 Grid. The EWR2 emulation file TN15-ETRS89-to-EWR2-IRF.gsb (CT code 9764) is a subset of this EWR3 emulation file TN15-ETRS89-to-EWR3-IRF.gsb; west of Bedford the content of the two files is identical.','EPSG','9615','NTv2','EPSG','4258','EPSG','10849',0.0,'EPSG','8656','Latitude and longitude difference file','TN15-ETRS89-to-EWR3-IRF.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'NR-Gbr EWR3 OSNet2009',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22765','grid_transformation','EPSG','10850','EPSG','4799','EPSG','1141');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10855','ETRS89/DREF91/2016 to GNTRANS2016 height (1)','Defines GNTRANS2016 height. The same geoid model is used to derive approximate DHHN2016 heights.','EPSG','1082','Geographic3D to GravityRelatedHeight (txt)','EPSG','10283','EPSG','9927',0.02,'EPSG','8666','Geoid (height correction) model file','GCG2016.txt',NULL,NULL,NULL,NULL,NULL,NULL,'DB-Deu 2016',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22778','grid_transformation','EPSG','10855','EPSG','3339','EPSG','1133');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10858','DVR90 height to EVRF2019 height (1)','Determined at 106 points, SD 0.006m. Offset: mean 0.005m, minimum -0.010m, maximum 0.017m. The transformation was derived using the levelling based DVR90(2000) (CRS code 10482), but is applicable to all realizations in the DVR90 ensemble.','EPSG','1129','Vertical Offset by Grid Interpolation (gtg)','EPSG','5799','EPSG','9389',0.012,'EPSG','8732','Vertical offset file','dvr90_evrf2019.tif',NULL,NULL,NULL,NULL,'EPSG','4258','KDS-Dnk 2019z',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22819','grid_transformation','EPSG','10858','EPSG','4575','EPSG','1059');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10859','DVR90 height to EVRF2019 mean-tide height (1)','Determined at 106 points, SD 0.009m. Offset: mean 0.022m, minimum 0.003m, maximum 0.043m. The transformation was derived using the levelling based DVR90(2000) (CRS code 10482), but is applicable to all realizations in the DVR90 ensemble.','EPSG','1129','Vertical Offset by Grid Interpolation (gtg)','EPSG','5799','EPSG','9390',0.018,'EPSG','8732','Vertical offset file','dvr90_evrf2019_mean_tide.tif',NULL,NULL,NULL,NULL,'EPSG','4258','KDS-Dnk 2019m',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22820','grid_transformation','EPSG','10859','EPSG','4575','EPSG','1059');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10866','CGRS93 to Famagusta 1960 height (1)','Hybrid geoid model derived in 2010 using least squares collocation. The Cyprus Geoid Model describes the official vertical reference in Cyprus. For reversible alternative to this transformation see CGRS93 to CGRS93 + Famagusta 1960 height (1) (code 10867).','EPSG','1082','Geographic3D to GravityRelatedHeight (txt)','EPSG','6310','EPSG','7446',0.043,'EPSG','8666','Geoid (height correction) model file','SEPARATION.TXT',NULL,NULL,NULL,NULL,NULL,NULL,'DLS-Cyp 2010',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22856','grid_transformation','EPSG','10866','EPSG','3236','EPSG','1133');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','10867','CGRS93 to CGRS93 + Famagusta 1960 height (1)','Reversible alternative to CGRS93 to Famagusta 1960 height (1) (code 10866).','EPSG','1098','Geog3D to Geog2D+GravityRelatedHeight (txt)','EPSG','6310','EPSG','10865',0.043,'EPSG','8666','Geoid (height correction) model file','SEPARATION.TXT',NULL,NULL,NULL,NULL,'EPSG','6311','DLS-Cyp 2010',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22857','grid_transformation','EPSG','10867','EPSG','3236','EPSG','1270');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15486','CH1903 to CH1903+ (1)','For improved accuracy (0.01m) use CHENyx06 interpolation programme FINELTRA. File CHENyx06 replaced by CHENyx06a; there is a small area at the border of the data where some more real data has been introduced. swisstopo consider the change insignificant.','EPSG','9615','NTv2','EPSG','4149','EPSG','4150',0.2,'EPSG','8656','Latitude and longitude difference file','CHENyx06a.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'BfL-Che',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','11497','grid_transformation','EPSG','15486','EPSG','1286','EPSG','1085');
|
||||
INSERT INTO "grid_transformation" VALUES('EPSG','15488','RRAF 1991 to IGN 1988 MG height (1)','May be used for transformations from WGS 84 to IGN 1988 MG. Accuracy at each 0.025 deg x 0.025 degree grid node is given within the geoid model file.','EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5617',0.2,'EPSG','8666','Geoid (height correction) model file','ggg00_mg.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Glp MG',1);
|
||||
|
||||
@@ -88,6 +88,27 @@ INSERT INTO "usage" VALUES(
|
||||
'EPSG','1024' -- unknown
|
||||
);
|
||||
|
||||
INSERT INTO "grid_transformation" VALUES(
|
||||
'PROJ','EPSG_6667_TO_EPSG_6695_2024','JDG2011 to JGD2011 height (JPGEO2024)',
|
||||
NULL,
|
||||
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
|
||||
'EPSG','6667', -- source CRS (JDG2011)
|
||||
'EPSG','6695', -- target CRS (JDG2011 (vertical) height)
|
||||
0.03, -- accuracy. Documentation mentions 3cm. GSIGEO2011 geoid model has NULL.
|
||||
'EPSG','8666','Geoid (height correction) model file','JPGEO2024.isg',
|
||||
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
|
||||
INSERT INTO "usage" VALUES(
|
||||
'PROJ',
|
||||
'EPSG_6667_TO_EPSG_6695_2024_USAGE',
|
||||
'grid_transformation',
|
||||
'PROJ',
|
||||
'EPSG_6667_TO_EPSG_6695_2024',
|
||||
'EPSG','1129', -- area of use: Japan
|
||||
'EPSG','1024' -- unknown
|
||||
);
|
||||
|
||||
|
||||
-- Switzerland
|
||||
|
||||
INSERT INTO "grid_transformation" VALUES(
|
||||
@@ -151,25 +172,3 @@ INSERT INTO "usage" VALUES(
|
||||
'EPSG','3278', -- area of use: Mexico - onshore
|
||||
'EPSG','1024' -- unknown
|
||||
);
|
||||
|
||||
-- Latvia
|
||||
|
||||
INSERT INTO "grid_transformation" VALUES(
|
||||
'PROJ','EPSG_4949_TO_EPSG_7700','LKS-92 to Latvia 2000 height',
|
||||
NULL,
|
||||
'EPSG','9665','Geographic3D to GravityRelatedHeight (gtx)',
|
||||
'EPSG','4949', -- source CRS (LKS-92)
|
||||
'EPSG','7700', -- target CRS (Latvia 2000 height)
|
||||
NULL,
|
||||
'EPSG','8666','Geoid (height correction) model file','lv_lgia_lv14.tif',
|
||||
NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);
|
||||
|
||||
INSERT INTO "usage" VALUES(
|
||||
'PROJ',
|
||||
'EPSG_4949_TO_EPSG_7700_USAGE',
|
||||
'grid_transformation',
|
||||
'PROJ',
|
||||
'EPSG_4949_TO_EPSG_7700',
|
||||
'EPSG','3268', -- area of use: Latvia - onshore
|
||||
'EPSG','1024' -- unknown
|
||||
);
|
||||
@@ -66,7 +66,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','1065','Lao 1997 to WGS 84 (1
|
||||
INSERT INTO "usage" VALUES('EPSG','7986','helmert_transformation','EPSG','1065','EPSG','1138','EPSG','1045');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1066','Amersfoort to ETRS89 (2)','Replaced by Amersfoort to ETRS89 (4) (tfm code 15740). Dutch sources also quote an equivalent transformation using the Coordinate Frame 7-parameter method - see tfm code 1751.','EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4289','EPSG','4258',0.5,593.032,26.0,478.741,'EPSG','9001',1.9848,-1.7439,9.0587,'EPSG','9109',4.0772,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3903453.148,368135.313,5012970.306,'EPSG','9001','NCG-Nld 2000 MB',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','7987','helmert_transformation','EPSG','1066','EPSG','1275','EPSG','1035');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1067','Minna to WGS 84 (11)','Used by Statoil for deep water blocks 210, 213, 217 and 218. Parameter values interpolated from Racal Survey geocentric translation contour charts for each of these four blocks and then meaned.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326',8.0,-92.1,-89.9,114.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Stat-Nga',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1067','Minna to WGS 84 (11)','Used by Statoil for deep water blocks 210, 213, 217 and 218. Parameter values interpolated from Racal Survey geocentric translation contour charts for each of these four blocks and then averaged.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326',8.0,-92.1,-89.9,114.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Stat-Nga',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','7988','helmert_transformation','EPSG','1067','EPSG','3817','EPSG','1136');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','1070','Guam 1963 to WGS 84 (1)','Derived at 5 stations. Accuracy 3m in each axis.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4326',6.0,-100.0,-248.0,259.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DMA-Gum',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','7991','helmert_transformation','EPSG','1070','EPSG','3255','EPSG','1160');
|
||||
@@ -1369,7 +1369,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','3972','Chua to WGS 84 (2)','
|
||||
INSERT INTO "usage" VALUES('EPSG','9017','helmert_transformation','EPSG','3972','EPSG','3619','EPSG','1143');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','3990','PSAD56 to WGS 84 (14)','Parameter values from PSAD56 to SIRGAS 1995 (1) (code 3971). Assumes SIRGAS 1995 and WGS 84 can be considered the same to within the accuracy of the transformation.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4248','EPSG','4326',5.0,-60.31,245.935,31.008,'EPSG','9001',-12.324,-3.755,7.37,'EPSG','9104',0.447,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGM-Ecu',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','9024','helmert_transformation','EPSG','3990','EPSG','3241','EPSG','1252');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','3998','Arc 1960 to WGS 84 (4)','Derived at 3 stations. Accuracy 20m in each axis. Info source gives source CRS as Arc 1950. From inspection of parameter values, analysis of TR8350.2 contour chart sand geographic applicability of CRS, OGP believes that the this shuld be Arc 1960.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4210','EPSG','4326',35.0,-153.0,-5.0,-292.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DMA-Bdi',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','3998','Arc 1960 to WGS 84 (4)','Derived at 3 stations. Accuracy 20m in each axis. Info source gives source CRS as Arc 1950. From inspection of parameter values, analysis of TR8350.2 contour chart and geographic applicability of CRS, OGP believes that the this should be Arc 1960.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4210','EPSG','4326',35.0,-153.0,-5.0,-292.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'DMA-Bdi',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','9025','helmert_transformation','EPSG','3998','EPSG','1058','EPSG','1160');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','4064','RGRDC 2005 to WGS 84 (1)','Approximation at the +/- 1m level assuming that RGRDC 2005 is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4046','EPSG','4326',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-DUC',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','9027','helmert_transformation','EPSG','4064','EPSG','3613','EPSG','1252');
|
||||
@@ -1621,7 +1621,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','5584','MOLDREF99 to ETRS89 (
|
||||
INSERT INTO "usage" VALUES('EPSG','9472','helmert_transformation','EPSG','5584','EPSG','1162','EPSG','1161');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5585','MOLDREF99 to WGS 84 (1)','Parameter values from MOLDREF99 to ETRS89 (1) (code 5584). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4023','EPSG','4326',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Mda',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','9473','helmert_transformation','EPSG','5585','EPSG','1162','EPSG','1252');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5586','Pulkovo 1942 to UCS-2000 (1)','UCS-2000 is defined to be approximately consistent with Pulkovo 1942 and this transformation''s accuracy is due to deformation of the Pulkovo system across Ukranian territory.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4284','EPSG','5561',3.5,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Ukr',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5586','Pulkovo 1942 to UCS-2000 (1)','UCS-2000 is defined to be approximately consistent with Pulkovo 1942 and this transformation''s accuracy is due to deformation of the Pulkovo system across Ukrainian territory.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4284','EPSG','5561',3.5,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Ukr',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','9474','helmert_transformation','EPSG','5586','EPSG','1242','EPSG','1044');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','5590','UCS-2000 to WGS 84 (1)','Derived through concatenation of UCS-2000 to S-42 (1) (tfm code 5586 reversed) [an approximation] and S-42 to WGS 84 (16) (tfm code 15865) [derived for whole FSU rather than Ukraine]. Replaced by UCS-2000 to WGS 84 (2) (tfm code 5840).','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','5561','EPSG','4326',5.0,25.0,-141.0,-78.5,'EPSG','9001',0.0,-0.35,-0.736,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Ukr',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','9476','helmert_transformation','EPSG','5590','EPSG','1242','EPSG','1045');
|
||||
@@ -1925,7 +1925,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','7671','WGS 84 (G873) to ITRF
|
||||
INSERT INTO "usage" VALUES('EPSG','10203','helmert_transformation','EPSG','7671','EPSG','1262','EPSG','1027');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7672','WGS 84 (G730) to ITRF92 (1)','Defined at epoch 1994.0.','EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7656','EPSG','4914',0.2,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'NGA-Wld 1994.0',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','10204','helmert_transformation','EPSG','7672','EPSG','1262','EPSG','1027');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7675','MGI 1901 to ETRS89 (6)','Derived at 5506 points across the Repulic of Serbia. May be taken as approximate transformation MGI 1901 to WGS 84 assuming ETRS89 is equivalent to WGS 84 within the accuracy of the transformation - see tfm code 7676.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4258',0.5,577.88891,165.22205,391.18289,'EPSG','9001',-4.9145,0.94729,13.05098,'EPSG','9104',7.78664,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'RGZ-Srb',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7675','MGI 1901 to ETRS89 (6)','Derived at 5506 points across the Republic of Serbia. May be taken as approximate transformation MGI 1901 to WGS 84 assuming ETRS89 is equivalent to WGS 84 within the accuracy of the transformation - see tfm code 7676.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4258',0.5,577.88891,165.22205,391.18289,'EPSG','9001',-4.9145,0.94729,13.05098,'EPSG','9104',7.78664,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'RGZ-Srb',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','10207','helmert_transformation','EPSG','7675','EPSG','4543','EPSG','1035');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','7676','MGI 1901 to WGS 84 (11)','Parameter values from MGI 1901 to ETRS89 (6) (code 7675). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4326',1.0,577.88891,165.22205,391.18289,'EPSG','9001',-4.9145,0.94729,13.05098,'EPSG','9104',7.78664,'EPSG','9202',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 "usage" VALUES('EPSG','10208','helmert_transformation','EPSG','7676','EPSG','4543','EPSG','1252');
|
||||
@@ -2603,7 +2603,7 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','10264','RGSH2020 to WGS 84 (
|
||||
INSERT INTO "usage" VALUES('EPSG','19536','helmert_transformation','EPSG','10264','EPSG','1026','EPSG','1252');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10292','ETRS89/DREF91/2016 to ETRF2000 (1)','Accuracy 4.1mm N, 3.3mm E, 10.6mm up.','EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','10282','EPSG','7930',0.1,0.0,0.0,0.0,'EPSG','9001',0.658,-0.208,0.755,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'AdV-Deu 2016',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','19279','helmert_transformation','EPSG','10292','EPSG','1103','EPSG','1027');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10296','Nord Sahara 1959 to WGS 84 (11)','Given by infomation source in direction WGS 84 to Nord Sahara 1959. Defines official relationship between WGS 84 and national geodetic system; epoch unspecified. Derived at approximately 40 points in northern Algeria; accuracy applies only to this area.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4307','EPSG','4326',1.0,-267.407,-47.068,446.357,'EPSG','9001',-0.179423,5.577661,-1.27762,'EPSG','9104',1.204866,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'INCT-Dza 2022',0);
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10296','Nord Sahara 1959 to WGS 84 (11)','Given by information source in direction WGS 84 to Nord Sahara 1959. Defines official relationship between WGS 84 and national geodetic system; epoch unspecified. Derived at approximately 40 points in northern Algeria; accuracy applies only to this area.','EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4307','EPSG','4326',1.0,-267.407,-47.068,446.357,'EPSG','9001',-0.179423,5.577661,-1.27762,'EPSG','9104',1.204866,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'INCT-Dza 2022',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','19518','helmert_transformation','EPSG','10296','EPSG','1026','EPSG','1026');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10321','RGNC91-93 to RGNC15 (1)','See RGNC91-93 to RGNC15 (2) (transformation code 10322) for authoritative transformation between these CRSs. This transformation is used only as the standard transformation T0 within that transformation.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','10307','EPSG','10312',1.0,-0.584,-1.117,1.125,'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,'BGN-Ncl 1m',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','19653','helmert_transformation','EPSG','10321','EPSG','3430','EPSG','1041');
|
||||
@@ -2729,10 +2729,20 @@ INSERT INTO "helmert_transformation" VALUES('EPSG','10786','ITRF2020-u2023 to IG
|
||||
INSERT INTO "usage" VALUES('EPSG','22366','helmert_transformation','EPSG','10786','EPSG','1262','EPSG','1027');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10787','IGS20 to IGb20 (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m. Parameter values from ITRF2020 to ITRF2020-u2023 (1) (code 10782) as IGS20 is aligned to ITRF2020 and IGb20 is aligned to ITRF2020-u2023.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','10176','EPSG','10783',0.001,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',0.0,0.0,0.0,'EPSG','1032',0.0,'EPSG','1030',2015.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'IGS-Wld',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22369','helmert_transformation','EPSG','10787','EPSG','1262','EPSG','1027');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10796','Arc 1960 to UGRF (1)','Derived in 2019 using 18 points. RMS 0.5m - 1m.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4210','EPSG','10791',1.0,-136.7231,-87.8654,20.1215,'EPSG','9001',4.966933,-9.01001,-2.72486,'EPSG','9104',7.86009,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'MLHUD-Uga',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22467','helmert_transformation','EPSG','10796','EPSG','1241','EPSG','1151');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10797','UGRF to WGS 84 (1)','Approximation at the +/- 1m level assuming that UGRF is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','10791','EPSG','4326',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EPSG-Uga',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22465','helmert_transformation','EPSG','10797','EPSG','1241','EPSG','1252');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10803','LibRef21 to WGS 84 (1)','Approximation at the +/- 1m level assuming that LibRef21 is equivalent to WGS 84 within the accuracy of the transformation.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','10800','EPSG','4326',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-Lbr',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22441','helmert_transformation','EPSG','10803','EPSG','1142','EPSG','1252');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10804','Sint Eustatius to WGS 84 (1)','Parameter values taken from Sint Eustatius to BES2020 Sint Eustatius (1) (transformation code 10750) assuming that BES2020 Sint Eustatius is coincident with WGS 84 within the accuracy of the transformation.','EPSG','1133','Coordinate Frame rotation full matrix (geog2D)','EPSG','10736','EPSG','4326',1.0,1276.2485,-2016.6406,667.4403,'EPSG','9001',-101.005288,212.913401,-68.43277,'EPSG','9104',-431.59604,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IOGP-Bes Seu',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22543','helmert_transformation','EPSG','10804','EPSG','4788','EPSG','1252');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10840','LKS-2020 to WGS 84 (1)','LKS-2020 is the second national realization of ETRS89 and coincident to WGS84 within 1 metre. This transformation has an accuracy equal to the coincidence figure.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','10305','EPSG','4326',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,'Vzd-Lva',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22702','helmert_transformation','EPSG','10840','EPSG','1139','EPSG','1252');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10848','ITRF2014 to LibRef21 (1)','Scale difference in ppb and scale difference rate in ppb/yr where 1/billion = 1E-9 or nm/m.','EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7789','EPSG','10798',0.01,-47.48,11.76,-0.58,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',-0.099,0.614,-0.733,'EPSG','1032',0.0,'EPSG','1030',2021.112,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'LLA-Lbr 2021',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22773','helmert_transformation','EPSG','10848','EPSG','1142','EPSG','1027');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','10853','ITRF2020 to PNG94 (1)','Transformation derived by inversion of seven site velocities within the transformation coverage area. Transformation accuracy at 2σ is 0.15 m between 1994.0 and 2035.0 for locations within Papuan Foreland. Transformation precision degrades in plate margin deforming zone (PFTB) near plate boundary with NGH and Woodlark plates. Transformation not valid outside stated extent.','EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','9988','EPSG','5544',0.15,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',1.3242,1.2788,1.1675,'EPSG','1032',0.0,'EPSG','1030',1994.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,'OSG-Png',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22777','helmert_transformation','EPSG','10853','EPSG','4800','EPSG','1027');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15483','Tokyo to JGD2000 (1)','Derived at Tokyo datum origin. Accuracy on main islands 9m. Also used on remote islands with significantly less accuracy: Io-To 793m, Kitadaito and Minamidaito Jima 642m, Tarama and Minna Shima 560m, Ishigaki and Taketomi Jima 251m, Yonaguni Jima 248m.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4301','EPSG','4612',9.0,-146.414,507.337,680.507,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'GSI-Jpn',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','11494','helmert_transformation','EPSG','15483','EPSG','3957','EPSG','1142');
|
||||
INSERT INTO "helmert_transformation" VALUES('EPSG','15484','Tokyo to WGS 84 (108)','Parameter values from Tokyo to JGD2000 (1) (code 15483). Assumes JGD2000 and WGS 84 can be considered the same to within the accuracy of the transformation.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4301','EPSG','4326',9.0,-146.414,507.337,680.507,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'OGP-Jpn',0);
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
INSERT INTO "metadata" VALUES('DATABASE.LAYOUT.VERSION.MAJOR', 1);
|
||||
INSERT INTO "metadata" VALUES('DATABASE.LAYOUT.VERSION.MINOR', 5);
|
||||
|
||||
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v12.004');
|
||||
INSERT INTO "metadata" VALUES('EPSG.DATE', '2025-03-02');
|
||||
INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v12.013');
|
||||
INSERT INTO "metadata" VALUES('EPSG.DATE', '2025-05-26');
|
||||
|
||||
-- The value of ${PROJ_VERSION} is substituted at build time by the actual
|
||||
-- value.
|
||||
@@ -18,4 +18,4 @@ INSERT INTO "metadata" VALUES('PROJ.VERSION', '${PROJ_VERSION}');
|
||||
|
||||
-- Version of the PROJ-data package with which this database is the most
|
||||
-- compatible.
|
||||
INSERT INTO "metadata" VALUES('PROJ_DATA.VERSION', '1.21');
|
||||
INSERT INTO "metadata" VALUES('PROJ_DATA.VERSION', '1.22');
|
||||
|
||||
@@ -7614,12 +7614,24 @@ INSERT INTO "projected_crs" VALUES('EPSG','10773','SIRGAS 2000 / Ribeirao Preto
|
||||
INSERT INTO "usage" VALUES('EPSG','22381','projected_crs','EPSG','10773','EPSG','4789','EPSG','1142');
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','10788','WGS 84 / Agriculture Canada Albers',NULL,'EPSG','4400','EPSG','4326','EPSG','10751',NULL,1);
|
||||
INSERT INTO "usage" VALUES('EPSG','22473','projected_crs','EPSG','10788','EPSG','4752','EPSG','1292');
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','10792','UGRF / UTM zone 35N',NULL,'EPSG','4400','EPSG','10791','EPSG','16035',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22460','projected_crs','EPSG','10792','EPSG','1578','EPSG','1142');
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','10793','UGRF / UTM zone 36N',NULL,'EPSG','4400','EPSG','10791','EPSG','16036',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22461','projected_crs','EPSG','10793','EPSG','4790','EPSG','1142');
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','10794','UGRF / UTM zone 36S',NULL,'EPSG','4400','EPSG','10791','EPSG','16136',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22462','projected_crs','EPSG','10794','EPSG','4791','EPSG','1142');
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','10795','UGRF / UTM zone 35S',NULL,'EPSG','4400','EPSG','10791','EPSG','16135',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22463','projected_crs','EPSG','10795','EPSG','4792','EPSG','1142');
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','10801','LibRef21 / UTM zone 28N',NULL,'EPSG','4400','EPSG','10800','EPSG','16028',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22447','projected_crs','EPSG','10801','EPSG','4794','EPSG','1029');
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','10802','LibRef21 / UTM zone 29N',NULL,'EPSG','4400','EPSG','10800','EPSG','16029',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22448','projected_crs','EPSG','10802','EPSG','4793','EPSG','1056');
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','10820','WGS 84 / Agriculture Canada Albers',NULL,'EPSG','4400','EPSG','4326','EPSG','10819',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22545','projected_crs','EPSG','10820','EPSG','4752','EPSG','1292');
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','10851','EWR3 Grid',NULL,'EPSG','4400','EPSG','10849','EPSG','9765',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22761','projected_crs','EPSG','10851','EPSG','4799','EPSG','1141');
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','10857','SIRGAS 2000 / Brazil Albers',NULL,'EPSG','4400','EPSG','4674','EPSG','10856',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','22838','projected_crs','EPSG','10857','EPSG','3223','EPSG','1162');
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','11114','MAGNA-SIRGAS 2018 / Colombia Far West zone',NULL,'EPSG','4500','EPSG','20046','EPSG','18065',NULL,0);
|
||||
INSERT INTO "usage" VALUES('EPSG','18947','projected_crs','EPSG','11114','EPSG','3091','EPSG','1142');
|
||||
INSERT INTO "projected_crs" VALUES('EPSG','11115','MAGNA-SIRGAS 2018 / Colombia West zone',NULL,'EPSG','4500','EPSG','20046','EPSG','18066',NULL,0);
|
||||
|
||||
@@ -53,7 +53,6 @@ INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1753','helmer
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','15895','grid_transformation','EPSG','15932','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','15907','grid_transformation','EPSG','15933','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('concatenated_operation','EPSG','8581','helmert_transformation','EPSG','1439','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('concatenated_operation','EPSG','8657','helmert_transformation','EPSG','15846','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1672','helmert_transformation','EPSG','15934','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1829','helmert_transformation','EPSG','1449','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1830','helmert_transformation','EPSG','1448','EPSG',1);
|
||||
@@ -228,7 +227,6 @@ INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7870','grid_tran
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7869','grid_transformation','EPSG','9321','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7868','grid_transformation','EPSG','9320','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7867','grid_transformation','EPSG','9319','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7866','grid_transformation','EPSG','9318','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7865','grid_transformation','EPSG','9317','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7864','grid_transformation','EPSG','9316','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7863','grid_transformation','EPSG','9315','EPSG',1);
|
||||
@@ -258,7 +256,6 @@ INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9168','grid_tran
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9169','grid_transformation','EPSG','9174','EPSG',0);
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','15932','grid_transformation','EPSG','9409','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','15932','grid_transformation','EPSG','9408','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','7675','helmert_transformation','EPSG','9495','EPSG',0);
|
||||
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','7676','helmert_transformation','EPSG','9486','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','15779','helmert_transformation','EPSG','9679','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','1458','helmert_transformation','EPSG','5827','EPSG',1);
|
||||
@@ -344,3 +341,7 @@ INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10530','grid_tra
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','10537','grid_transformation','EPSG','10716','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9483','grid_transformation','EPSG','10707','EPSG',0);
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','8676','grid_transformation','EPSG','9483','EPSG',0);
|
||||
INSERT INTO "supersession" VALUES('helmert_transformation','EPSG','7675','helmert_transformation','EPSG','9495','EPSG',0);
|
||||
INSERT INTO "supersession" VALUES('concatenated_operation','EPSG','8657','helmert_transformation','EPSG','15846','EPSG',1);
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','9764','grid_transformation','EPSG','10850','EPSG',0);
|
||||
INSERT INTO "supersession" VALUES('grid_transformation','EPSG','7866','grid_transformation','EPSG','9318','EPSG',1);
|
||||
|
||||
+10
-10
@@ -84,6 +84,8 @@ INSERT INTO "vertical_crs" VALUES('EPSG','5713','CGVD28 height',NULL,'EPSG','649
|
||||
INSERT INTO "usage" VALUES('EPSG','4156','vertical_crs','EPSG','5713','EPSG','1289','EPSG','1179');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','5714','MSL height',NULL,'EPSG','6499','EPSG','5100',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','4157','vertical_crs','EPSG','5714','EPSG','1262','EPSG','1199');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','5715','MSL depth',NULL,'EPSG','6498','EPSG','5100',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','4158','vertical_crs','EPSG','5715','EPSG','1262','EPSG','1199');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','5716','Piraeus height',NULL,'EPSG','6499','EPSG','5115',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','4159','vertical_crs','EPSG','5716','EPSG','3254','EPSG','1179');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','5717','N60 height',NULL,'EPSG','6499','EPSG','5116',0);
|
||||
@@ -362,6 +364,14 @@ INSERT INTO "vertical_crs" VALUES('EPSG','7890','SHVD2015 height',NULL,'EPSG','6
|
||||
INSERT INTO "usage" VALUES('EPSG','5532','vertical_crs','EPSG','7890','EPSG','3183','EPSG','1027');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','7979','KOC WD height',NULL,'EPSG','6499','EPSG','5187',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','5571','vertical_crs','EPSG','7979','EPSG','3267','EPSG','1205');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','8050','MSL height (ft)',NULL,'EPSG','1030','EPSG','5100',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','5600','vertical_crs','EPSG','8050','EPSG','1262','EPSG','1199');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','8051','MSL depth (ft)',NULL,'EPSG','6495','EPSG','5100',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','5601','vertical_crs','EPSG','8051','EPSG','1262','EPSG','1199');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','8052','MSL height (ftUS)',NULL,'EPSG','6497','EPSG','5100',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','5602','vertical_crs','EPSG','8052','EPSG','1245','EPSG','1199');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','8053','MSL depth (ftUS)',NULL,'EPSG','1043','EPSG','5100',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','5603','vertical_crs','EPSG','8053','EPSG','1245','EPSG','1199');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','8089','ISH2004 height',NULL,'EPSG','6499','EPSG','1190',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','5616','vertical_crs','EPSG','8089','EPSG','4662','EPSG','1178');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','8266','GVR2000 height',NULL,'EPSG','6499','EPSG','1199',0);
|
||||
@@ -530,8 +540,6 @@ INSERT INTO "vertical_crs" VALUES('EPSG','5612','Baltic 1977 depth',NULL,'EPSG',
|
||||
INSERT INTO "usage" VALUES('EPSG','4081','vertical_crs','EPSG','5612','EPSG','2423','EPSG','1136');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','5706','Caspian depth',NULL,'EPSG','6498','EPSG','5106',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','4149','vertical_crs','EPSG','5706','EPSG','1291','EPSG','1198');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','5715','MSL depth',NULL,'EPSG','6498','EPSG','5100',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','4158','vertical_crs','EPSG','5715','EPSG','1262','EPSG','1199');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','5734','AIOC95 depth',NULL,'EPSG','6498','EPSG','5133',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','4177','vertical_crs','EPSG','5734','EPSG','2592','EPSG','1136');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','5789','KOC WD depth',NULL,'EPSG','6498','EPSG','5187',0);
|
||||
@@ -550,10 +558,6 @@ INSERT INTO "vertical_crs" VALUES('EPSG','7968','NGVD29 height (m)',NULL,'EPSG',
|
||||
INSERT INTO "usage" VALUES('EPSG','5569','vertical_crs','EPSG','7968','EPSG','1323','EPSG','1203');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','7976','HKPD depth',NULL,'EPSG','6498','EPSG','5135',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','5570','vertical_crs','EPSG','7976','EPSG','3334','EPSG','1203');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','8050','MSL height (ft)',NULL,'EPSG','1030','EPSG','5100',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','5600','vertical_crs','EPSG','8050','EPSG','1262','EPSG','1199');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','8052','MSL height (ftUS)',NULL,'EPSG','6497','EPSG','5100',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','5602','vertical_crs','EPSG','8052','EPSG','1245','EPSG','1199');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','8228','NAVD88 height (ft)',NULL,'EPSG','1030','EPSG','5103',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','5736','vertical_crs','EPSG','8228','EPSG','4464','EPSG','1144');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','8358','Baltic 1957 depth',NULL,'EPSG','6498','EPSG','1202',0);
|
||||
@@ -584,7 +588,3 @@ INSERT INTO "vertical_crs" VALUES('EPSG','5614','KOC WD depth (ft)',NULL,'EPSG',
|
||||
INSERT INTO "usage" VALUES('EPSG','4083','vertical_crs','EPSG','5614','EPSG','3267','EPSG','1205');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','6358','NAVD88 depth (ftUS)',NULL,'EPSG','1043','EPSG','5103',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','4592','vertical_crs','EPSG','6358','EPSG','3664','EPSG','1179');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','8051','MSL depth (ft)',NULL,'EPSG','6495','EPSG','5100',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','5601','vertical_crs','EPSG','8051','EPSG','1262','EPSG','1199');
|
||||
INSERT INTO "vertical_crs" VALUES('EPSG','8053','MSL depth (ftUS)',NULL,'EPSG','1043','EPSG','5100',0);
|
||||
INSERT INTO "usage" VALUES('EPSG','5603','vertical_crs','EPSG','8053','EPSG','1245','EPSG','1199');
|
||||
|
||||
@@ -66,7 +66,7 @@ The following command-line options can appear in any order:
|
||||
.. option:: -f <format>
|
||||
|
||||
Where *format* is a printf format string to control the output form of the
|
||||
geographic coordinate values. The default mode is DMS.
|
||||
geographic coordinate and azimuth values. The default mode is DMS.
|
||||
|
||||
.. option:: -F <format>
|
||||
|
||||
@@ -122,7 +122,7 @@ Input geographic coordinates (latitude and longitude) and
|
||||
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 the range [-90d,90d]. Output geographic coordinates and azimuths will be
|
||||
in DMS (if the :option:`-f` 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
|
||||
|
||||
+5
-5
@@ -26,13 +26,13 @@ author = "PROJ contributors"
|
||||
version = "9.6"
|
||||
|
||||
# The full project version, used as the replacement for |release|
|
||||
release = "9.6.0-dev"
|
||||
release = "9.6.2"
|
||||
|
||||
# PROJ-data version
|
||||
data_version = "1.20"
|
||||
data_version = "1.22"
|
||||
|
||||
today_date = date.today()
|
||||
# today_date = date(Y, M, D) # or use a specific date
|
||||
#today_date = date.today()
|
||||
today_date = date(2025, 6, 2) # or use a specific date
|
||||
today_fmt = "%d %b %Y"
|
||||
|
||||
copyright = "1983-{}, PROJ contributors".format(today_date.year)
|
||||
@@ -136,7 +136,7 @@ html_context = {
|
||||
"theme_vcs_pageview_mode": "edit",
|
||||
"github_user": "OSGeo",
|
||||
"github_repo": "PROJ",
|
||||
"github_version": "master",
|
||||
"github_version": "9.6",
|
||||
"conf_py_path": "/docs/source/",
|
||||
}
|
||||
|
||||
|
||||
@@ -26,8 +26,8 @@ Download
|
||||
Current Release
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
* **2024-12-01** `proj-9.5.1.tar.gz`_ (`md5`_)
|
||||
* **2024-12-01** `proj-data-1.20.tar.gz`_
|
||||
* **2025-06-02** `proj-9.6.1.tar.gz`_ (`md5`_)
|
||||
* **2025-06-02** `proj-data-1.22.tar.gz`_
|
||||
|
||||
.. note::
|
||||
|
||||
@@ -40,6 +40,8 @@ Current Release
|
||||
Past Releases
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
* **2025-03-15** `proj-9.6.0.tar.gz`_
|
||||
* **2024-12-01** `proj-9.5.1.tar.gz`_
|
||||
* **2024-09-15** `proj-9.5.0.tar.gz`_
|
||||
* **2024-06-01** `proj-9.4.1.tar.gz`_
|
||||
* **2024-03-01** `proj-9.4.0.tar.gz`_
|
||||
@@ -79,6 +81,8 @@ Past Releases
|
||||
* **2015-09-13** `proj-4.9.2.tar.gz`_
|
||||
* **2015-03-04** `proj-4.9.1.tar.gz`_
|
||||
|
||||
* **2025-03-15** `proj-data-1.21.tar.gz`_
|
||||
* **2024-12-01** `proj-data-1.20.tar.gz`_
|
||||
* **2024-09-15** `proj-data-1.19.tar.gz`_
|
||||
* **2024-06-01** `proj-data-1.18.tar.gz`_
|
||||
* **2024-06-01** `proj-data-1.17.tar.gz`_
|
||||
@@ -120,7 +124,9 @@ Past Releases
|
||||
* **2018-03-01** `proj-datumgrid-oceania-1.1.zip`_
|
||||
* **2018-03-01** `proj-datumgrid-oceania-1.0.zip`_
|
||||
|
||||
.. _`md5`: https://download.osgeo.org/proj/proj-9.5.1.tar.gz.md5
|
||||
.. _`md5`: https://download.osgeo.org/proj/proj-9.6.1.tar.gz.md5
|
||||
.. _`proj-9.6.1.tar.gz`: https://download.osgeo.org/proj/proj-9.6.1.tar.gz
|
||||
.. _`proj-9.6.0.tar.gz`: https://download.osgeo.org/proj/proj-9.6.0.tar.gz
|
||||
.. _`proj-9.5.1.tar.gz`: https://download.osgeo.org/proj/proj-9.5.1.tar.gz
|
||||
.. _`proj-9.5.0.tar.gz`: https://download.osgeo.org/proj/proj-9.5.0.tar.gz
|
||||
.. _`proj-9.4.1.tar.gz`: https://download.osgeo.org/proj/proj-9.4.1.tar.gz
|
||||
@@ -162,6 +168,8 @@ Past Releases
|
||||
.. _`proj-4.9.2.tar.gz`: https://download.osgeo.org/proj/proj-4.9.2.tar.gz
|
||||
.. _`proj-4.9.3.tar.gz`: https://download.osgeo.org/proj/proj-4.9.3.tar.gz
|
||||
|
||||
.. _`proj-data-1.22.tar.gz`: https://download.osgeo.org/proj/proj-data-1.22.tar.gz
|
||||
.. _`proj-data-1.21.tar.gz`: https://download.osgeo.org/proj/proj-data-1.21.tar.gz
|
||||
.. _`proj-data-1.20.tar.gz`: https://download.osgeo.org/proj/proj-data-1.20.tar.gz
|
||||
.. _`proj-data-1.19.tar.gz`: https://download.osgeo.org/proj/proj-data-1.19.tar.gz
|
||||
.. _`proj-data-1.18.tar.gz`: https://download.osgeo.org/proj/proj-data-1.18.tar.gz
|
||||
|
||||
@@ -3,6 +3,128 @@
|
||||
News
|
||||
###############################################################################
|
||||
|
||||
9.6.1
|
||||
++++++++++++++++++++
|
||||
*June 2nd 2025*
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
* Update EPSG to 12.012 (`#4498 <https://github.com/OSGeo/PROJ/issues/4498>`_)
|
||||
|
||||
* Update ESRI CRS DB to ArcGIS Pro 3.5 (`#4493 <https://github.com/OSGeo/PROJ/issues/4493>`_)
|
||||
|
||||
* Add an option to ship PDB files (`#4505 <https://github.com/OSGeo/PROJ/issues/4505>`_)
|
||||
|
||||
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
* Deal with South Orientated TMerc presented as regular TMerc but with Scale_Factor=-1 (`#4427 <https://github.com/OSGeo/PROJ/issues/4427>`_)
|
||||
|
||||
* Add missing 'limits' and 'algorithm' includes (`#4444 <https://github.com/OSGeo/PROJ/issues/4444>`_)
|
||||
|
||||
* CMake: avoid detection of C23 ``#embed`` on too old compilers (`#4463 <https://github.com/OSGeo/PROJ/issues/4463>`_)
|
||||
|
||||
* :cpp:func:`createOperations()`: for NAD83(CSRS)[x] to NAD83(CSRS)[y], do not go through NAD83 (`#4467 <https://github.com/OSGeo/PROJ/issues/4467>`_)
|
||||
|
||||
* Add missing include for ``uint32_t`` on Windows with gcc 15.1 (`#4478 <https://github.com/OSGeo/PROJ/issues/4478>`_)
|
||||
|
||||
* :cpp:func:`getGeoidModels`: use ``vertical_crs.datum_code`` to get vcrss that uses different units (`#4480 <https://github.com/OSGeo/PROJ/issues/4480>`_)
|
||||
|
||||
* :cpp:func:`FileManager::open_resource_file()`: honour known URLs from ``grid_alternatives`` that don't point to cdn.proj.org (`#4481 <https://github.com/OSGeo/PROJ/issues/4481>`_)
|
||||
|
||||
* :cpp:func:`createOperationsCompoundToGeog()`: avoid bringing non-sensical transformations (`#4494 <https://github.com/OSGeo/PROJ/issues/4494>`_)
|
||||
|
||||
* Bug correction in Wagner VI projection parameters (`#4453 <https://github.com/OSGeo/PROJ/issues/4453>`_)
|
||||
|
||||
* C++: Fix bare ``isnan()`` to ``std::isnan()`` (`#4472 <https://github.com/OSGeo/PROJ/issues/4472>`_)
|
||||
|
||||
* Database: fix duplicated entries with auxiliary database (`#4482 <https://github.com/OSGeo/PROJ/issues/4482>`_)
|
||||
|
||||
* Use ``std::abs`` instead of ``abs`` for NetBSD (`#4486 <https://github.com/OSGeo/PROJ/issues/4486>`_)
|
||||
|
||||
* Fix Windows build when both :envvar:`EMBED_RESOURCE_FILES` and :envvar:`USE_ONLY_EMBEDDED_RESOURCE_FILES` are set (`#4508 <https://github.com/OSGeo/PROJ/issues/4508>`_)
|
||||
|
||||
9.6.0
|
||||
++++++++++++++++++++
|
||||
*March 15th 2025*
|
||||
|
||||
Updates
|
||||
-------
|
||||
|
||||
* :program:`projinfo`: display whether an operation is time-dependent (`#4255 <https://github.com/OSGeo/PROJ/issues/4255>`_)
|
||||
|
||||
* Add CMake options ``EMBED_RESOURCE_FILES`` and ``USE_ONLY_EMBEDDED_RESOURCE_FILES`` for ``proj.db`` and ``proj.ini`` embedding (`#4265 <https://github.com/OSGeo/PROJ/issues/4265>`_, `#4274 <https://github.com/OSGeo/PROJ/issues/4274>`_)
|
||||
|
||||
* Database: ingest deprecated ESRI names to be able to better import old WKT ESRI (`#4282 <https://github.com/OSGeo/PROJ/issues/4282>`_)
|
||||
|
||||
* :c:func:`proj_factors()`: enhance speed when called repeatedly on same compound or projected CRS (`#4289 <https://github.com/OSGeo/PROJ/issues/4289>`_)
|
||||
|
||||
* Add Airocean projection (formerly Dymaxion) (`#4303 <https://github.com/OSGeo/PROJ/issues/4303>`_)
|
||||
|
||||
* :cpp:func:`createOperations()`: Optimization by avoiding database lookups for CRS (typically PROJ strings) using unknown datums (`#4320 <https://github.com/OSGeo/PROJ/issues/4320>`_)
|
||||
|
||||
* PROJJSON export: for a Projected CRS, add an explicit type=GeographicCRS/GeodeticCRS members to the base_crs member (`#4331 <https://github.com/OSGeo/PROJ/issues/4331>`_)
|
||||
|
||||
* :c:func:`proj_trans_bounds()`: make it work when target CRS is a CompoundCRS (`#4333 <https://github.com/OSGeo/PROJ/issues/4333>`_)
|
||||
|
||||
* :cpp:func:`createOperations()`: do Helmert transformation in 2D when one of source or target CRS is compound (`#4337 <https://github.com/OSGeo/PROJ/issues/4337>`_)
|
||||
|
||||
* Map EPSG method 'Vertical Offset by Grid Interpolation (asc)' to ``+proj=vgridshift`` (`#4344 <https://github.com/OSGeo/PROJ/issues/4344>`_)
|
||||
|
||||
* Add support for 'Coordinate Frame rotation full matrix (geocen)' and Coordinate Frame rotation full matrix (geog2D)' methods (`#4348 <https://github.com/OSGeo/PROJ/issues/4348>`_)
|
||||
|
||||
* Add a CMake ``EMBED_RESOURCE_DIRECTORY`` option to embed .tif/.json files in to libproj (`#4349 <https://github.com/OSGeo/PROJ/issues/4349>`_, `#4373 <https://github.com/OSGeo/PROJ/issues/4373>`_)
|
||||
|
||||
* Take into account new EPSG methods 'Cartesian Grid Offsets by TIN Interpolation (JSON)' and 'Vertical Offset by TIN Interpolation (JSON)' (`#4353 <https://github.com/OSGeo/PROJ/issues/4353>`_)
|
||||
|
||||
* Added an option ``native_ca`` to ``proj.ini`` and an environment variable :envvar:`PROJ_NATIVE_CA` to be able to configure curl to use the operating system CA store. (`#4356 <https://github.com/OSGeo/PROJ/issues/4356>`_)
|
||||
|
||||
* Database: add an optional ``step_direction`` column to the ``concatenated_operation_step`` table (`#4357 <https://github.com/OSGeo/PROJ/issues/4357>`_)
|
||||
|
||||
* Database: replicate EGM2008 grid transformation record to WGS 84 realizations (`#4363 <https://github.com/OSGeo/PROJ/issues/4363>`_)
|
||||
|
||||
* Improve ETRFxxx to ETRFyyy, and WGS 84 (xxx) to WGS 84 (yyy) (`#4364 <https://github.com/OSGeo/PROJ/issues/4364>`_)
|
||||
|
||||
* Build: Update to C++17 version (`#4366 <https://github.com/OSGeo/PROJ/issues/4366>`_, `#4369 <https://github.com/OSGeo/PROJ/issues/4369>`_)
|
||||
|
||||
* Add bash completion script for projinfo (`#4371 <https://github.com/OSGeo/PROJ/issues/4371>`_)
|
||||
|
||||
* Dispatch content of ``4D_api.cpp`` into multiple .cpp files (`#4393 <https://github.com/OSGeo/PROJ/issues/4393>`_)
|
||||
|
||||
* Add :c:func:`proj_trans_bounds_3D()` (`#4394 <https://github.com/OSGeo/PROJ/issues/4394>`_)
|
||||
|
||||
* Database: add a ``engineering_datum`` and ``engineering_crs`` tables; import few related EPSG records (`#4396 <https://github.com/OSGeo/PROJ/issues/4396>`_)
|
||||
|
||||
* NKG transformations: Add support for EUREF-FIN in Finish transformations (`#4399 <https://github.com/OSGeo/PROJ/issues/4399>`_)
|
||||
|
||||
* Add Spilhaus projection (`#4401 <https://github.com/OSGeo/PROJ/issues/4401>`_)
|
||||
|
||||
* Export ESRI:54099 `WGS_1984_Spilhaus_Ocean_Map_in_Square` as PROJ string (`#4402 <https://github.com/OSGeo/PROJ/issues/4402>`_)
|
||||
|
||||
* Database: update to EPSG v12.004 (`#4413 <https://github.com/OSGeo/PROJ/issues/4413>`_)
|
||||
|
||||
* :c:func:`proj_download_file()`: invalidate in-memory caches related to downloaded file (for the current context) (`#4414 <https://github.com/OSGeo/PROJ/issues/4414>`_)
|
||||
|
||||
|
||||
Bug Fixes
|
||||
---------
|
||||
|
||||
* :cpp:func:`createObjectsFromName()`: be more tolerant about N/S vs North/South, absence of zone or height (`#4318 <https://github.com/OSGeo/PROJ/issues/4318>`_)
|
||||
|
||||
* :cpp:func:`createFromPROJString`: avoid repeated openings of proj.db and proj.ini and lookup of 'epsg' (`#4334 <https://github.com/OSGeo/PROJ/issues/4334>`_)
|
||||
|
||||
* Debugging/internals: append sub-grid index to grid name when opening a multi-grid TIFF file (`#4381 <https://github.com/OSGeo/PROJ/issues/4381>`_)
|
||||
|
||||
* :cpp:func:`createOperations()`: use more appropriate operation when using a 'PROJ {grid_name}' geoid model, based on matching the vertical datum (`#4379 <https://github.com/OSGeo/PROJ/issues/4379>`_)
|
||||
|
||||
* :c:func:`proj_clone()`: properly propagate ``errorIfBestTransformationNotAvailable`` and other flags from source object (`#4382 <https://github.com/OSGeo/PROJ/issues/4382>`_)
|
||||
|
||||
* Inverse ``+proj=cass``: fix non-convergence on inputs where easting=false_easting or northing=false_northing (`#4386 <https://github.com/OSGeo/PROJ/issues/4386>`_)
|
||||
|
||||
* Fix typo in parameter for ITRF97 in ITRF2014 file (`#4408 <https://github.com/OSGeo/PROJ/issues/4408>`_)
|
||||
|
||||
9.5.1. Release Notes
|
||||
++++++++++++++++++++
|
||||
*December 1st 2024*
|
||||
|
||||
@@ -59,6 +59,13 @@ is more complex, involving initial steps projecting from the ellipsoid to anothe
|
||||
curved surface, the "aposphere", then projection from the aposphere to the skew
|
||||
uv-plane, before finally rectifying the skew uv-plane onto the map XY plane.
|
||||
|
||||
.. note::
|
||||
In certain special circumstances of the ellipsoidal form of the Oblique
|
||||
Mercator it is possible for two different input coordinates to project to the
|
||||
same output coordinate. This can happen when the input coordinates are far away
|
||||
from the projection center. A work around is to use the spherical version of the
|
||||
projection instead. See an example in the Usage section below.
|
||||
|
||||
|
||||
Usage
|
||||
########
|
||||
@@ -91,7 +98,7 @@ projections are limiting forms of the Oblique Mercator
|
||||
|
||||
$ echo 12 55 | proj +proj=tmerc +R=6400000
|
||||
766869.97 6209742.96
|
||||
|
||||
|
||||
Example: Second case - indirectly given azimuth
|
||||
|
||||
::
|
||||
@@ -116,6 +123,31 @@ The input coordinate represents the System 34 datum point "Agri Bavnehoj", with
|
||||
This use case represents a datum shift from a cylinder projection on an old, slightly
|
||||
misaligned datum, to a similar projection on a modern datum.
|
||||
|
||||
Example: Non-unique results of the ellipsoidal form
|
||||
|
||||
::
|
||||
|
||||
proj +proj=omerc +lat_0=0.377041113875403 +lonc=33.8250934444081 +alpha=8.16321575614333 +gamma=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 << EOF
|
||||
-146.23 -78.19112222222222
|
||||
-145.02309217 -78.19112222
|
||||
EOF
|
||||
875464.92 -11348616.86
|
||||
875464.92 -11348616.86
|
||||
|
||||
Here we see that two coordinates with roughly a difference in latitude of about
|
||||
a degree results in the same projected coordinate. As mention above, a work around
|
||||
is to use the spherical form instead:
|
||||
|
||||
::
|
||||
|
||||
proj +proj=omerc +lat_0=0.377041113875403 +lonc=33.8250934444081 +alpha=8.16321575614333 +gamma=0 +k=1 +x_0=0 +y_0=0 +ellps=sphere << EOF
|
||||
-146.23 -78.19112222222222
|
||||
-145.02309217 -78.19112222
|
||||
EOF
|
||||
891266.38 -11376037.53
|
||||
863563.62 -11374939.17
|
||||
|
||||
|
||||
|
||||
Parameters
|
||||
################################################################################
|
||||
@@ -178,7 +210,7 @@ Optional
|
||||
No rectification (not "no rotation" as one may well assume).
|
||||
Do not take the last step from the skew uv-plane to the map
|
||||
XY plane.
|
||||
|
||||
|
||||
.. note:: This option is probably only marginally useful, but remains for (mostly) historical reasons.
|
||||
|
||||
.. option:: +no_off
|
||||
|
||||
@@ -169,12 +169,15 @@ of a "object usage" class. An object usage has the following optional members:
|
||||
- ``area``: (optional) value of type string which describes a geographic area
|
||||
over which a CRS or coordinate operation is applicable. e.g. "World"
|
||||
- ``bbox``: (optional) value of type object, with 4 required members:
|
||||
|
||||
* ``east_longitude``: (required) number expressing the longitude in degrees of the eastern most part of the extent, within [-180,180] range.
|
||||
* ``west_longitude``: (required) number expressing the longitude in degrees of the western most part of the extent, within [-180,180] range.. For an extent crossing the anti-meridian, west_longitude is lower than east_longitude.
|
||||
* ``south_latitude``: (required) number expressing the latitude in degrees of the southern most part of the extent, within [-90,90] range.
|
||||
* ``north_latitude``: (required) number expressing the latitude in degrees of the northern most part of the extent, within [-90,90] range.
|
||||
|
||||
The coordinates are expressed in a unspecified datum, with the longitudes
|
||||
relative to the international reference meridian.
|
||||
|
||||
- ``remarks``: (optional) value of type string with an informative text that does
|
||||
not modify the defining parameters of the object. e.g "Use NTv2 file for better accuracy"
|
||||
- ``id`` (mutually exclusive with ``ids``): (optional) Identifier of the object, as defined in :ref:`identifiers`
|
||||
|
||||
@@ -274,6 +274,7 @@ duplicateBreak
|
||||
d'utilisation
|
||||
dx
|
||||
dy
|
||||
Dymaxion
|
||||
eastBoundLongitude
|
||||
easting
|
||||
eastings
|
||||
@@ -365,6 +366,7 @@ generalization
|
||||
generalized
|
||||
geobotanical
|
||||
geoc
|
||||
geocen
|
||||
geocent
|
||||
geocentriques
|
||||
geod
|
||||
@@ -374,10 +376,12 @@ Geodesique
|
||||
geodesist
|
||||
geodesists
|
||||
geodeticCRS
|
||||
GeodeticCRS
|
||||
geodtest
|
||||
GEOGCRS
|
||||
geogoffset
|
||||
geographicCRS
|
||||
GeographicCRS
|
||||
Geographique
|
||||
geographiques
|
||||
geoid
|
||||
@@ -841,6 +845,7 @@ Selftest
|
||||
selftests
|
||||
semimajor
|
||||
semiminor
|
||||
sensical
|
||||
serialization
|
||||
serialized
|
||||
serverless
|
||||
@@ -930,6 +935,7 @@ timespan
|
||||
tinshift
|
||||
Tissot
|
||||
tmerc
|
||||
TMerc
|
||||
Tobler
|
||||
tobmerc
|
||||
toFullyQualifiedName
|
||||
@@ -981,6 +987,7 @@ vandg
|
||||
Vanua
|
||||
vcpkg
|
||||
Vcpkg
|
||||
vcrss
|
||||
VDatum
|
||||
vendored
|
||||
Vening
|
||||
@@ -1029,6 +1036,7 @@ xmax
|
||||
xmin
|
||||
xml
|
||||
xoff
|
||||
xxx
|
||||
xxxNNPtr
|
||||
xxxx
|
||||
XXXX
|
||||
@@ -1036,6 +1044,7 @@ xyzgridshift
|
||||
ymax
|
||||
ymin
|
||||
yoff
|
||||
yyy
|
||||
yyyymmdd
|
||||
Zajaç
|
||||
zenodo
|
||||
|
||||
+6
-6
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "CCT" "1" "15 Mar 2025" "9.6" "PROJ"
|
||||
.TH "CCT" "1" "02 juin 2025" "9.6" "PROJ"
|
||||
.SH NAME
|
||||
cct \- Coordinate Conversion and Transformation
|
||||
.SH SYNOPSIS
|
||||
@@ -54,13 +54,13 @@ a proj\-string,
|
||||
.IP \(bu 2
|
||||
a WKT string,
|
||||
.IP \(bu 2
|
||||
an object code (like "EPSG:1671" "urn:ogc:def:coordinateOperation:EPSG::1671"),
|
||||
an object code (like \(dqEPSG:1671\(dq \(dqurn:ogc:def:coordinateOperation:EPSG::1671\(dq),
|
||||
.IP \(bu 2
|
||||
an object name. e.g. "ITRF2014 to ETRF2014 (1)". In that case as
|
||||
an object name. e.g. \(dqITRF2014 to ETRF2014 (1)\(dq. In that case as
|
||||
uniqueness is not guaranteed, heuristics are applied to determine the appropriate best match.
|
||||
.IP \(bu 2
|
||||
a OGC URN combining references for concatenated operations
|
||||
(e.g. "\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP")
|
||||
(e.g. \(dq\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP\(dq)
|
||||
.IP \(bu 2
|
||||
a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.4/projjson.schema.json\fP
|
||||
.UNINDENT
|
||||
@@ -165,7 +165,7 @@ Usage varies with operation.
|
||||
\fI\%cct\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 \(dqGeographical Information \-\- Spatial Referencing by Coordinates\(dq,
|
||||
which defines two different classes of \fIcoordinate operations\fP:
|
||||
.sp
|
||||
\fICoordinate Conversions\fP, which are coordinate operations where input
|
||||
@@ -322,7 +322,7 @@ Coordinate operation referenced through its name
|
||||
.sp
|
||||
.nf
|
||||
.ft C
|
||||
$ echo 3541657.3778 948984.2343 5201383.5231 2020.5 | cct "ITRF2014 to ETRF2014 (1)"
|
||||
$ echo 3541657.3778 948984.2343 5201383.5231 2020.5 | cct \(dqITRF2014 to ETRF2014 (1)\(dq
|
||||
3541657.9112 948983.7503 5201383.2482 2020.5000
|
||||
.ft P
|
||||
.fi
|
||||
|
||||
+16
-16
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "CS2CS" "1" "15 Mar 2025" "9.6" "PROJ"
|
||||
.TH "CS2CS" "1" "02 juin 2025" "9.6" "PROJ"
|
||||
.SH NAME
|
||||
cs2cs \- Cartographic coordinate system filter
|
||||
.SH SYNOPSIS
|
||||
@@ -54,29 +54,29 @@ 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 \(dqEPSG:4326\(dq, \(dqurn:ogc:def:crs:EPSG::4326\(dq,
|
||||
\(dqurn:ogc:def:coordinateOperation:EPSG::1671\(dq),
|
||||
.IP \(bu 2
|
||||
an Object name. e.g "WGS 84", "WGS 84 / UTM zone 31N". In that case as
|
||||
an Object name. e.g \(dqWGS 84\(dq, \(dqWGS 84 / UTM zone 31N\(dq. In that case as
|
||||
uniqueness is not guaranteed, heuristics are applied to determine the appropriate best match.
|
||||
.IP \(bu 2
|
||||
a CRS name and a coordinate epoch, separated with \(aq@\(aq. For example "\fI\%ITRF2014@2025.0\fP". (\fIadded in 9.2\fP)
|
||||
a CRS name and a coordinate epoch, separated with \(aq@\(aq. For example \(dq\fI\%ITRF2014@2025.0\fP\(dq. (\fIadded in 9.2\fP)
|
||||
.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 \(dq\fI\%urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717\fP\(dq or custom abbreviated
|
||||
syntax \(dqEPSG:2393+5717\(dq),
|
||||
.IP \(bu 2
|
||||
a OGC URN combining references for references for projected or derived CRSs
|
||||
e.g. for Projected 3D CRS "UTM zone 31N / WGS 84 (3D)":
|
||||
"\fI\%urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031\fP"
|
||||
e.g. for Projected 3D CRS \(dqUTM zone 31N / WGS 84 (3D)\(dq:
|
||||
\(dq\fI\%urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031\fP\(dq
|
||||
(\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. \(dq\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP\(dq)
|
||||
.IP \(bu 2
|
||||
a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.4/projjson.schema.json\fP (\fIadded in 6.2\fP)
|
||||
.IP \(bu 2
|
||||
a compound CRS made from two object names separated with " + ". e.g. "WGS 84 + EGM96 height" (\fIadded in 7.1\fP)
|
||||
a compound CRS made from two object names separated with \(dq + \(dq. e.g. \(dqWGS 84 + EGM96 height\(dq (\fIadded in 7.1\fP)
|
||||
.UNINDENT
|
||||
.sp
|
||||
New in version 6.0.0.
|
||||
@@ -189,7 +189,7 @@ third.
|
||||
Where \fIformat\fP is a printf format string to control the form of the output values.
|
||||
For inverse projections, the output will be in degrees when this option is
|
||||
employed. If a format is specified for inverse projection the output data
|
||||
will be in decimal degrees. The default format is \fB"%.2f"\fP for forward
|
||||
will be in decimal degrees. The default format is \fB\(dq%.2f\(dq\fP for forward
|
||||
projection and DMS for inverse.
|
||||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
@@ -219,7 +219,7 @@ New in version 8.0.0.
|
||||
.sp
|
||||
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 \(dqDenmark \- onshore\(dq) or a AUTHORITY:CODE (EPSG:3237)
|
||||
.sp
|
||||
This option is mutually exclusive with \fI\%\-\-bbox\fP\&.
|
||||
.UNINDENT
|
||||
@@ -296,7 +296,7 @@ This option is mutually exclusive with \fI\%\-\-bbox\fP\&.
|
||||
New in version 9.1.
|
||||
|
||||
.sp
|
||||
"Promote" 2D CRS(s) to their 3D version, where the vertical axis is the
|
||||
\(dqPromote\(dq 2D CRS(s) to their 3D version, where the vertical axis is the
|
||||
ellipsoidal height in metres, using the ellipsoid of the base geodetic CRS.
|
||||
Depending on PROJ versions and the exact nature of the CRS involved,
|
||||
especially before PROJ 9.1, a mix of 2D and 3D CRS could lead to 2D or 3D
|
||||
@@ -378,7 +378,7 @@ The following script
|
||||
.nf
|
||||
.ft C
|
||||
cs2cs +proj=latlong +datum=NAD83 +to +proj=utm +zone=10 +datum=NAD27 \-r <<EOF
|
||||
45°15\(aq33.1" 111.5W
|
||||
45°15\(aq33.1\(dq 111.5W
|
||||
45d15.551666667N \-111d30
|
||||
+45.25919444444 111d30\(aq000w
|
||||
EOF
|
||||
@@ -494,7 +494,7 @@ UTM Zone 31N/WGS 84 with WGS84 ellipsoidal height
|
||||
.sp
|
||||
.nf
|
||||
.ft C
|
||||
echo 45 2 0 | cs2cs "WGS 84 + EGM96 height" "WGS 84 / UTM zone 31N" \-\-3d
|
||||
echo 45 2 0 | cs2cs \(dqWGS 84 + EGM96 height\(dq \(dqWGS 84 / UTM zone 31N\(dq \-\-3d
|
||||
.ft P
|
||||
.fi
|
||||
.UNINDENT
|
||||
|
||||
+8
-8
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "GEOD" "1" "15 Mar 2025" "9.6" "PROJ"
|
||||
.TH "GEOD" "1" "02 juin 2025" "9.6" "PROJ"
|
||||
.SH NAME
|
||||
geod \- Geodesic computations
|
||||
.SH SYNOPSIS
|
||||
@@ -86,13 +86,13 @@ option. (Default units are meters.)
|
||||
.TP
|
||||
.B \-f <format>
|
||||
Where \fIformat\fP is a printf format string to control the output form of the
|
||||
geographic coordinate values. The default mode is DMS.
|
||||
geographic coordinate and azimuth values. The default mode is DMS.
|
||||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
.B \-F <format>
|
||||
Where \fIformat\fP is a printf format string to control the output form of the distance
|
||||
value. The default mode is \fB"%.3f"\fP\&.
|
||||
value. The default mode is \fB\(dq%.3f\(dq\fP\&.
|
||||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
@@ -140,8 +140,8 @@ Input geographic coordinates (latitude and longitude) and
|
||||
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 the range [\-90d,90d]. Output geographic coordinates and azimuths will be
|
||||
in DMS (if the \fI\%\-f\fP switch is not employed) to 0.001\(dq with trailing,
|
||||
zero\-valued minute\-second fields deleted. Output distance
|
||||
data will be in the same units as the ellipsoid or sphere
|
||||
radius.
|
||||
@@ -189,7 +189,7 @@ which gives the results:
|
||||
.sp
|
||||
.nf
|
||||
.ft C
|
||||
\-66d31\(aq50.141" 75d39\(aq13.083" 2587.504
|
||||
\-66d31\(aq50.141\(dq 75d39\(aq13.083\(dq 2587.504
|
||||
.ft P
|
||||
.fi
|
||||
.UNINDENT
|
||||
@@ -206,7 +206,7 @@ and determine Portland\(aqs location by azimuth and distance:
|
||||
.nf
|
||||
.ft C
|
||||
geod +ellps=clrk66 +units=us\-mi <<EOF
|
||||
42d15\(aqN 71d07\(aqW \-66d31\(aq50.141" 2587.504
|
||||
42d15\(aqN 71d07\(aqW \-66d31\(aq50.141\(dq 2587.504
|
||||
EOF
|
||||
.ft P
|
||||
.fi
|
||||
@@ -219,7 +219,7 @@ which gives:
|
||||
.sp
|
||||
.nf
|
||||
.ft C
|
||||
45d31\(aq0.003"N 123d40\(aq59.985"W 75d39\(aq13.094"
|
||||
45d31\(aq0.003\(dqN 123d40\(aq59.985\(dqW 75d39\(aq13.094\(dq
|
||||
.ft P
|
||||
.fi
|
||||
.UNINDENT
|
||||
|
||||
+6
-6
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "GIE" "1" "15 Mar 2025" "9.6" "PROJ"
|
||||
.TH "GIE" "1" "02 juin 2025" "9.6" "PROJ"
|
||||
.SH NAME
|
||||
gie \- The Geospatial Integrity Investigation Environment
|
||||
.SH SYNOPSIS
|
||||
@@ -343,7 +343,7 @@ expect 12 55 0 0
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
The default direction is "forward".
|
||||
The default direction is \(dqforward\(dq.
|
||||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
.TP
|
||||
@@ -458,7 +458,7 @@ end with the space character followed by backslash to mark the continuation.
|
||||
<gie\-strict>
|
||||
# This is a comment. The following line with multiple repeated characters too
|
||||
\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
|
||||
# A command on several lines must use " \e" continuation
|
||||
# A command on several lines must use \(dq \e\(dq continuation
|
||||
operation proj=hgridshift +grids=nzgd2kgrid0005.gsb \e
|
||||
ellps=GRS80
|
||||
tolerance 1 mm
|
||||
@@ -474,8 +474,8 @@ expect 173 \-45
|
||||
.UNINDENT
|
||||
.SH BACKGROUND
|
||||
.sp
|
||||
More importantly than being an acronym for "Geospatial Integrity Investigation
|
||||
Environment", gie were also the initials, user id, and USGS email address of
|
||||
More importantly than being an acronym for \(dqGeospatial Integrity Investigation
|
||||
Environment\(dq, 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
|
||||
@@ -497,7 +497,7 @@ 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\(aqs key\-value system. This system in
|
||||
readable (\(dqhuman compatible\(dq) 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
|
||||
|
||||
+8
-8
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "PROJ" "1" "15 Mar 2025" "9.6" "PROJ"
|
||||
.TH "PROJ" "1" "02 juin 2025" "9.6" "PROJ"
|
||||
.SH NAME
|
||||
proj \- Cartographic projection filter
|
||||
.SH SYNOPSIS
|
||||
@@ -163,7 +163,7 @@ reciprocal value of \fImult\fP is employed.
|
||||
.B \-f <format>
|
||||
Where \fIformat\fP is a printf format string to control the form of the output values.
|
||||
For inverse projections, the output will be in degrees when this option is
|
||||
employed. The default format is \fB"%.2f"\fP for forward projection and DMS for
|
||||
employed. The default format is \fB\(dq%.2f\(dq\fP for forward projection and DMS for
|
||||
inverse.
|
||||
.UNINDENT
|
||||
.INDENT 0.0
|
||||
@@ -202,7 +202,7 @@ default directory for a file reference without an absolute path. This is
|
||||
also used for supporting files like datum shift files.
|
||||
.sp
|
||||
New in version 9.3.0: \fI{crs}\fP is one of the possibilities accepted by :c:\fBproj_create()\fP, provided it
|
||||
expresses a projected CRS, like a WKT string, an object code (like "EPSG:32632")
|
||||
expresses a projected CRS, like a WKT string, an object code (like \(dqEPSG:32632\(dq)
|
||||
a PROJJSON string, etc.
|
||||
The projection computed will be those of the map projection implied by
|
||||
the transformation from the base geographic CRS of the projected CRS to the projected CRS.
|
||||
@@ -218,7 +218,7 @@ portions of the input line are appended to the output line.
|
||||
Input geographic data (longitude and latitude) must be in DMS or decimal degrees format and input
|
||||
cartesian data must be in units consistent with the ellipsoid major axis or
|
||||
sphere radius units. Output geographic coordinates will be in DMS (if the
|
||||
\fB\-w\fP switch is not employed) and precise to 0.001" with trailing, zero\-valued
|
||||
\fB\-w\fP switch is not employed) and precise to 0.001\(dq with trailing, zero\-valued
|
||||
minute\-second fields deleted.
|
||||
.SH EXAMPLE
|
||||
.sp
|
||||
@@ -229,7 +229,7 @@ The following script
|
||||
.nf
|
||||
.ft C
|
||||
proj +proj=utm +zone=12 \-r <<EOF
|
||||
45d15\(aq33.1" 111.5W
|
||||
45d15\(aq33.1\(dq 111.5W
|
||||
45d15.551666667N \-111d30
|
||||
+45.25919444444 111d30\(aq000w
|
||||
EOF
|
||||
@@ -268,8 +268,8 @@ EOF
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.sp
|
||||
Will perform the projection of the coordinates in "NAD83(2011) / California zone 4"
|
||||
(\fIEPSG:6421\fP) into its geographic system, "NAD83(2011)", showing the expanded annotated listing.
|
||||
Will perform the projection of the coordinates in \(dqNAD83(2011) / California zone 4\(dq
|
||||
(\fIEPSG:6421\fP) into its geographic system, \(dqNAD83(2011)\(dq, showing the expanded annotated listing.
|
||||
The output will appear as:
|
||||
.INDENT 0.0
|
||||
.INDENT 3.5
|
||||
@@ -294,7 +294,7 @@ Parallel scale (k) : 1.00004382 ( 0.004382 % error )
|
||||
Areal scale (s): 1.00008765 ( 0.008765 % error )
|
||||
Angular distortion (w): 0.000
|
||||
Meridian/Parallel angle: 90.00000
|
||||
Convergence : \-0d35\(aq47.714" [ \-0.59658715 ]
|
||||
Convergence : \-0d35\(aq47.714\(dq [ \-0.59658715 ]
|
||||
Max\-min (Tissot axis a\-b) scale error: 1.00004 1.00004
|
||||
.ft P
|
||||
.fi
|
||||
|
||||
+122
-122
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "PROJINFO" "1" "15 Mar 2025" "9.6" "PROJ"
|
||||
.TH "PROJINFO" "1" "02 juin 2025" "9.6" "PROJ"
|
||||
.SH NAME
|
||||
projinfo \- Geodetic object and coordinate operation queries
|
||||
.SH SYNOPSIS
|
||||
@@ -70,39 +70,39 @@ 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 \(dqEPSG:4326\(dq, \(dqurn:ogc:def:crs:EPSG::4326\(dq,
|
||||
\(dqurn:ogc:def:coordinateOperation:EPSG::1671\(dq),
|
||||
.IP \(bu 2
|
||||
an Object name. e.g "WGS 84", "WGS 84 / UTM zone 31N". In that case as
|
||||
an Object name. e.g \(dqWGS 84\(dq, \(dqWGS 84 / UTM zone 31N\(dq. In that case as
|
||||
uniqueness is not guaranteed, heuristics are applied to determine the appropriate best match.
|
||||
.IP \(bu 2
|
||||
a CRS name and a coordinate epoch, separated with \(aq@\(aq. For example "\fI\%ITRF2014@2025.0\fP". (\fIadded in 9.2\fP)
|
||||
a CRS name and a coordinate epoch, separated with \(aq@\(aq. For example \(dq\fI\%ITRF2014@2025.0\fP\(dq. (\fIadded in 9.2\fP)
|
||||
.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 \(dq\fI\%urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717\fP\(dq or custom abbreviated
|
||||
syntax \(dqEPSG:2393+5717\(dq),
|
||||
.IP \(bu 2
|
||||
a OGC URN combining references for references for projected or derived CRSs
|
||||
e.g. for Projected 3D CRS "UTM zone 31N / WGS 84 (3D)":
|
||||
"\fI\%urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031\fP"
|
||||
e.g. for Projected 3D CRS \(dqUTM zone 31N / WGS 84 (3D)\(dq:
|
||||
\(dq\fI\%urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031\fP\(dq
|
||||
(\fIadded in 6.2\fP)
|
||||
.IP \(bu 2
|
||||
Extension of OGC URN for CoordinateMetadata.
|
||||
e.g. "\fI\%urn:ogc:def:CoordinateMetadata:NRCAN::NAD83_CSRS_1997_MTM11_HT2_1997\fP"
|
||||
e.g. \(dq\fI\%urn:ogc:def:CoordinateMetadata:NRCAN::NAD83_CSRS_1997_MTM11_HT2_1997\fP\(dq
|
||||
.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. \(dq\fI\%urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618\fP\(dq)
|
||||
.IP \(bu 2
|
||||
a PROJJSON string. The jsonschema is at \fI\%https://proj.org/schemas/v0.4/projjson.schema.json\fP (\fIadded in 6.2\fP)
|
||||
.IP \(bu 2
|
||||
a compound CRS made from two object names separated with " + ". e.g. "WGS 84 + EGM96 height" (\fIadded in 7.1\fP)
|
||||
a compound CRS made from two object names separated with \(dq + \(dq. e.g. \(dqWGS 84 + EGM96 height\(dq (\fIadded in 7.1\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}.
|
||||
.sp
|
||||
The usage of "{srs_def} {srs_def}" is equivalent to "\-s {srs_def} \-t {srs_def}" (\fIadded in 9.5\fP).
|
||||
The usage of \(dq{srs_def} {srs_def}\(dq is equivalent to \(dq\-s {srs_def} \-t {srs_def}\(dq (\fIadded in 9.5\fP).
|
||||
.UNINDENT
|
||||
.UNINDENT
|
||||
.SH DESCRIPTION
|
||||
@@ -182,7 +182,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 \(dqDenmark \- onshore\(dq) or a AUTHORITY:CODE (EPSG:3237)
|
||||
This option is exclusive of \fI\%\-\-bbox\fP\&.
|
||||
.sp
|
||||
\fBNOTE:\fP
|
||||
@@ -439,7 +439,7 @@ A visual alternative is the webpage
|
||||
New in version 6.3.
|
||||
|
||||
.sp
|
||||
"Promote" 2D CRS(s) to their 3D version, where the vertical axis is the
|
||||
\(dqPromote\(dq 2D CRS(s) to their 3D version, where the vertical axis is the
|
||||
ellipsoidal height in metres, using the ellipsoid of the base geodetic CRS.
|
||||
Depending on PROJ versions and the exact nature of the CRS involved,
|
||||
especially before PROJ 9.1, a mix of 2D and 3D CRS could lead to 2D or 3D
|
||||
@@ -543,24 +543,24 @@ PROJ.4 string:
|
||||
+proj=longlat +datum=WGS84 +no_defs +type=crs
|
||||
|
||||
WKT2:2019 string:
|
||||
GEOGCRS["WGS 84",
|
||||
DATUM["World Geodetic System 1984",
|
||||
ELLIPSOID["WGS 84",6378137,298.257223563,
|
||||
LENGTHUNIT["metre",1]]],
|
||||
PRIMEM["Greenwich",0,
|
||||
ANGLEUNIT["degree",0.0174532925199433]],
|
||||
GEOGCRS[\(dqWGS 84\(dq,
|
||||
DATUM[\(dqWorld Geodetic System 1984\(dq,
|
||||
ELLIPSOID[\(dqWGS 84\(dq,6378137,298.257223563,
|
||||
LENGTHUNIT[\(dqmetre\(dq,1]]],
|
||||
PRIMEM[\(dqGreenwich\(dq,0,
|
||||
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
|
||||
CS[ellipsoidal,2],
|
||||
AXIS["geodetic latitude (Lat)",north,
|
||||
AXIS[\(dqgeodetic latitude (Lat)\(dq,north,
|
||||
ORDER[1],
|
||||
ANGLEUNIT["degree",0.0174532925199433]],
|
||||
AXIS["geodetic longitude (Lon)",east,
|
||||
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
|
||||
AXIS[\(dqgeodetic longitude (Lon)\(dq,east,
|
||||
ORDER[2],
|
||||
ANGLEUNIT["degree",0.0174532925199433]],
|
||||
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
|
||||
USAGE[
|
||||
SCOPE["unknown"],
|
||||
AREA["World"],
|
||||
SCOPE[\(dqunknown\(dq],
|
||||
AREA[\(dqWorld\(dq],
|
||||
BBOX[\-90,\-180,90,180]],
|
||||
ID["EPSG",4326]]
|
||||
ID[\(dqEPSG\(dq,4326]]
|
||||
.ft P
|
||||
.fi
|
||||
.UNINDENT
|
||||
@@ -575,7 +575,7 @@ and NAD83 (designed with its EPSG code 4269) within an area of interest
|
||||
.sp
|
||||
.nf
|
||||
.ft C
|
||||
projinfo \-s NAD27 \-t EPSG:4269 \-\-area "USA \- Missouri"
|
||||
projinfo \-s NAD27 \-t EPSG:4269 \-\-area \(dqUSA \- Missouri\(dq
|
||||
.ft P
|
||||
.fi
|
||||
.UNINDENT
|
||||
@@ -595,43 +595,43 @@ PROJ string:
|
||||
+step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1
|
||||
|
||||
WKT2:2019 string:
|
||||
COORDINATEOPERATION["NAD27 to NAD83 (1)",
|
||||
COORDINATEOPERATION[\(dqNAD27 to NAD83 (1)\(dq,
|
||||
SOURCECRS[
|
||||
GEOGCRS["NAD27",
|
||||
DATUM["North American Datum 1927",
|
||||
ELLIPSOID["Clarke 1866",6378206.4,294.978698213898,
|
||||
LENGTHUNIT["metre",1]]],
|
||||
PRIMEM["Greenwich",0,
|
||||
ANGLEUNIT["degree",0.0174532925199433]],
|
||||
GEOGCRS[\(dqNAD27\(dq,
|
||||
DATUM[\(dqNorth American Datum 1927\(dq,
|
||||
ELLIPSOID[\(dqClarke 1866\(dq,6378206.4,294.978698213898,
|
||||
LENGTHUNIT[\(dqmetre\(dq,1]]],
|
||||
PRIMEM[\(dqGreenwich\(dq,0,
|
||||
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
|
||||
CS[ellipsoidal,2],
|
||||
AXIS["geodetic latitude (Lat)",north,
|
||||
AXIS[\(dqgeodetic latitude (Lat)\(dq,north,
|
||||
ORDER[1],
|
||||
ANGLEUNIT["degree",0.0174532925199433]],
|
||||
AXIS["geodetic longitude (Lon)",east,
|
||||
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
|
||||
AXIS[\(dqgeodetic longitude (Lon)\(dq,east,
|
||||
ORDER[2],
|
||||
ANGLEUNIT["degree",0.0174532925199433]]]],
|
||||
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]]]],
|
||||
TARGETCRS[
|
||||
GEOGCRS["NAD83",
|
||||
DATUM["North American Datum 1983",
|
||||
ELLIPSOID["GRS 1980",6378137,298.257222101,
|
||||
LENGTHUNIT["metre",1]]],
|
||||
PRIMEM["Greenwich",0,
|
||||
ANGLEUNIT["degree",0.0174532925199433]],
|
||||
GEOGCRS[\(dqNAD83\(dq,
|
||||
DATUM[\(dqNorth American Datum 1983\(dq,
|
||||
ELLIPSOID[\(dqGRS 1980\(dq,6378137,298.257222101,
|
||||
LENGTHUNIT[\(dqmetre\(dq,1]]],
|
||||
PRIMEM[\(dqGreenwich\(dq,0,
|
||||
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
|
||||
CS[ellipsoidal,2],
|
||||
AXIS["geodetic latitude (Lat)",north,
|
||||
AXIS[\(dqgeodetic latitude (Lat)\(dq,north,
|
||||
ORDER[1],
|
||||
ANGLEUNIT["degree",0.0174532925199433]],
|
||||
AXIS["geodetic longitude (Lon)",east,
|
||||
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
|
||||
AXIS[\(dqgeodetic longitude (Lon)\(dq,east,
|
||||
ORDER[2],
|
||||
ANGLEUNIT["degree",0.0174532925199433]]]],
|
||||
METHOD["CTABLE2"],
|
||||
PARAMETERFILE["Latitude and longitude difference file","conus"],
|
||||
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]]]],
|
||||
METHOD[\(dqCTABLE2\(dq],
|
||||
PARAMETERFILE[\(dqLatitude and longitude difference file\(dq,\(dqconus\(dq],
|
||||
OPERATIONACCURACY[0.15],
|
||||
USAGE[
|
||||
SCOPE["unknown"],
|
||||
AREA["USA \- CONUS including EEZ"],
|
||||
SCOPE[\(dqunknown\(dq],
|
||||
AREA[\(dqUSA \- CONUS including EEZ\(dq],
|
||||
BBOX[23.81,\-129.17,49.38,\-65.69]],
|
||||
ID["DERIVED_FROM(EPSG)",1241]]
|
||||
ID[\(dqDERIVED_FROM(EPSG)\(dq,1241]]
|
||||
.ft P
|
||||
.fi
|
||||
.UNINDENT
|
||||
@@ -658,44 +658,44 @@ Output:
|
||||
.nf
|
||||
.ft C
|
||||
{
|
||||
"type": "GeographicCRS",
|
||||
"name": "GDA94",
|
||||
"datum": {
|
||||
"type": "GeodeticReferenceFrame",
|
||||
"name": "Geocentric Datum of Australia 1994",
|
||||
"ellipsoid": {
|
||||
"name": "GRS 1980",
|
||||
"semi_major_axis": 6378137,
|
||||
"inverse_flattening": 298.257222101
|
||||
\(dqtype\(dq: \(dqGeographicCRS\(dq,
|
||||
\(dqname\(dq: \(dqGDA94\(dq,
|
||||
\(dqdatum\(dq: {
|
||||
\(dqtype\(dq: \(dqGeodeticReferenceFrame\(dq,
|
||||
\(dqname\(dq: \(dqGeocentric Datum of Australia 1994\(dq,
|
||||
\(dqellipsoid\(dq: {
|
||||
\(dqname\(dq: \(dqGRS 1980\(dq,
|
||||
\(dqsemi_major_axis\(dq: 6378137,
|
||||
\(dqinverse_flattening\(dq: 298.257222101
|
||||
}
|
||||
},
|
||||
"coordinate_system": {
|
||||
"subtype": "ellipsoidal",
|
||||
"axis": [
|
||||
\(dqcoordinate_system\(dq: {
|
||||
\(dqsubtype\(dq: \(dqellipsoidal\(dq,
|
||||
\(dqaxis\(dq: [
|
||||
{
|
||||
"name": "Geodetic latitude",
|
||||
"abbreviation": "Lat",
|
||||
"direction": "north",
|
||||
"unit": "degree"
|
||||
\(dqname\(dq: \(dqGeodetic latitude\(dq,
|
||||
\(dqabbreviation\(dq: \(dqLat\(dq,
|
||||
\(dqdirection\(dq: \(dqnorth\(dq,
|
||||
\(dqunit\(dq: \(dqdegree\(dq
|
||||
},
|
||||
{
|
||||
"name": "Geodetic longitude",
|
||||
"abbreviation": "Lon",
|
||||
"direction": "east",
|
||||
"unit": "degree"
|
||||
\(dqname\(dq: \(dqGeodetic longitude\(dq,
|
||||
\(dqabbreviation\(dq: \(dqLon\(dq,
|
||||
\(dqdirection\(dq: \(dqeast\(dq,
|
||||
\(dqunit\(dq: \(dqdegree\(dq
|
||||
}
|
||||
]
|
||||
},
|
||||
"area": "Australia \- GDA",
|
||||
"bbox": {
|
||||
"south_latitude": \-60.56,
|
||||
"west_longitude": 93.41,
|
||||
"north_latitude": \-8.47,
|
||||
"east_longitude": 173.35
|
||||
\(dqarea\(dq: \(dqAustralia \- GDA\(dq,
|
||||
\(dqbbox\(dq: {
|
||||
\(dqsouth_latitude\(dq: \-60.56,
|
||||
\(dqwest_longitude\(dq: 93.41,
|
||||
\(dqnorth_latitude\(dq: \-8.47,
|
||||
\(dqeast_longitude\(dq: 173.35
|
||||
},
|
||||
"id": {
|
||||
"authority": "EPSG",
|
||||
"code": 4283
|
||||
\(dqid\(dq: {
|
||||
\(dqauthority\(dq: \(dqEPSG\(dq,
|
||||
\(dqcode\(dq: 4283
|
||||
}
|
||||
}
|
||||
.ft P
|
||||
@@ -712,11 +712,11 @@ Exporting the SQL statements to insert a new CRS in an auxiliary database.
|
||||
.nf
|
||||
.ft C
|
||||
# Get the SQL statements for a custom CRS
|
||||
projinfo "+proj=merc +lat_ts=5 +datum=WGS84 +type=crs +title=my_crs" \-\-output\-id HOBU:MY_CRS \-o SQL \-q > my_crs.sql
|
||||
projinfo \(dq+proj=merc +lat_ts=5 +datum=WGS84 +type=crs +title=my_crs\(dq \-\-output\-id HOBU:MY_CRS \-o SQL \-q > my_crs.sql
|
||||
cat my_crs.sql
|
||||
|
||||
# Initialize an auxiliary database with the schema of the reference database
|
||||
echo ".schema" | sqlite3 /path/to/proj.db | sqlite3 aux.db
|
||||
echo \(dq.schema\(dq | sqlite3 /path/to/proj.db | sqlite3 aux.db
|
||||
|
||||
# Append the content of the definition of HOBU:MY_CRS
|
||||
sqlite3 aux.db < my_crs.db
|
||||
@@ -735,7 +735,7 @@ or more simply:
|
||||
.nf
|
||||
.ft C
|
||||
# Create an auxiliary database with the definition of a custom CRS.
|
||||
projinfo "+proj=merc +lat_ts=5 +datum=WGS84 +type=crs +title=my_crs" \-\-output\-id HOBU:MY_CRS \-\-dump\-db\-structure | sqlite3 aux.db
|
||||
projinfo \(dq+proj=merc +lat_ts=5 +datum=WGS84 +type=crs +title=my_crs\(dq \-\-output\-id HOBU:MY_CRS \-\-dump\-db\-structure | sqlite3 aux.db
|
||||
|
||||
# Check that everything works OK
|
||||
projinfo \-\-aux\-db\-path aux.db HOBU:MY_CRS
|
||||
@@ -769,44 +769,44 @@ PROJ.4 string:
|
||||
+proj=merc +lat_ts=5 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs +type=crs
|
||||
|
||||
WKT2:2019 string:
|
||||
PROJCRS["my_crs",
|
||||
BASEGEOGCRS["unknown",
|
||||
ENSEMBLE["World Geodetic System 1984 ensemble",
|
||||
MEMBER["World Geodetic System 1984 (Transit)"],
|
||||
MEMBER["World Geodetic System 1984 (G730)"],
|
||||
MEMBER["World Geodetic System 1984 (G873)"],
|
||||
MEMBER["World Geodetic System 1984 (G1150)"],
|
||||
MEMBER["World Geodetic System 1984 (G1674)"],
|
||||
MEMBER["World Geodetic System 1984 (G1762)"],
|
||||
ELLIPSOID["WGS 84",6378137,298.257223563,
|
||||
LENGTHUNIT["metre",1]],
|
||||
PROJCRS[\(dqmy_crs\(dq,
|
||||
BASEGEOGCRS[\(dqunknown\(dq,
|
||||
ENSEMBLE[\(dqWorld Geodetic System 1984 ensemble\(dq,
|
||||
MEMBER[\(dqWorld Geodetic System 1984 (Transit)\(dq],
|
||||
MEMBER[\(dqWorld Geodetic System 1984 (G730)\(dq],
|
||||
MEMBER[\(dqWorld Geodetic System 1984 (G873)\(dq],
|
||||
MEMBER[\(dqWorld Geodetic System 1984 (G1150)\(dq],
|
||||
MEMBER[\(dqWorld Geodetic System 1984 (G1674)\(dq],
|
||||
MEMBER[\(dqWorld Geodetic System 1984 (G1762)\(dq],
|
||||
ELLIPSOID[\(dqWGS 84\(dq,6378137,298.257223563,
|
||||
LENGTHUNIT[\(dqmetre\(dq,1]],
|
||||
ENSEMBLEACCURACY[2.0]],
|
||||
PRIMEM["Greenwich",0,
|
||||
ANGLEUNIT["degree",0.0174532925199433]],
|
||||
ID["HOBU","GEODETIC_CRS_MY_CRS"]],
|
||||
CONVERSION["unknown",
|
||||
METHOD["Mercator (variant B)",
|
||||
ID["EPSG",9805]],
|
||||
PARAMETER["Latitude of 1st standard parallel",5,
|
||||
ANGLEUNIT["degree",0.0174532925199433],
|
||||
ID["EPSG",8823]],
|
||||
PARAMETER["Longitude of natural origin",0,
|
||||
ANGLEUNIT["degree",0.0174532925199433],
|
||||
ID["EPSG",8802]],
|
||||
PARAMETER["False easting",0,
|
||||
LENGTHUNIT["metre",1],
|
||||
ID["EPSG",8806]],
|
||||
PARAMETER["False northing",0,
|
||||
LENGTHUNIT["metre",1],
|
||||
ID["EPSG",8807]]],
|
||||
PRIMEM[\(dqGreenwich\(dq,0,
|
||||
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433]],
|
||||
ID[\(dqHOBU\(dq,\(dqGEODETIC_CRS_MY_CRS\(dq]],
|
||||
CONVERSION[\(dqunknown\(dq,
|
||||
METHOD[\(dqMercator (variant B)\(dq,
|
||||
ID[\(dqEPSG\(dq,9805]],
|
||||
PARAMETER[\(dqLatitude of 1st standard parallel\(dq,5,
|
||||
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433],
|
||||
ID[\(dqEPSG\(dq,8823]],
|
||||
PARAMETER[\(dqLongitude of natural origin\(dq,0,
|
||||
ANGLEUNIT[\(dqdegree\(dq,0.0174532925199433],
|
||||
ID[\(dqEPSG\(dq,8802]],
|
||||
PARAMETER[\(dqFalse easting\(dq,0,
|
||||
LENGTHUNIT[\(dqmetre\(dq,1],
|
||||
ID[\(dqEPSG\(dq,8806]],
|
||||
PARAMETER[\(dqFalse northing\(dq,0,
|
||||
LENGTHUNIT[\(dqmetre\(dq,1],
|
||||
ID[\(dqEPSG\(dq,8807]]],
|
||||
CS[Cartesian,2],
|
||||
AXIS["(E)",east,
|
||||
AXIS[\(dq(E)\(dq,east,
|
||||
ORDER[1],
|
||||
LENGTHUNIT["metre",1]],
|
||||
AXIS["(N)",north,
|
||||
LENGTHUNIT[\(dqmetre\(dq,1]],
|
||||
AXIS[\(dq(N)\(dq,north,
|
||||
ORDER[2],
|
||||
LENGTHUNIT["metre",1]],
|
||||
ID["HOBU","MY_CRS"]]
|
||||
LENGTHUNIT[\(dqmetre\(dq,1]],
|
||||
ID[\(dqHOBU\(dq,\(dqMY_CRS\(dq]]
|
||||
.ft P
|
||||
.fi
|
||||
.UNINDENT
|
||||
@@ -833,7 +833,7 @@ Output:
|
||||
.nf
|
||||
.ft C
|
||||
WKT1:GDAL string:
|
||||
PROJCS["ETRS89 / UTM zone 32N",GEOGCS["ETRS89",DATUM["European_Terrestrial_Reference_System_1989",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6258"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4258"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","25832"]]
|
||||
PROJCS[\(dqETRS89 / UTM zone 32N\(dq,GEOGCS[\(dqETRS89\(dq,DATUM[\(dqEuropean_Terrestrial_Reference_System_1989\(dq,SPHEROID[\(dqGRS 1980\(dq,6378137,298.257222101,AUTHORITY[\(dqEPSG\(dq,\(dq7019\(dq]],AUTHORITY[\(dqEPSG\(dq,\(dq6258\(dq]],PRIMEM[\(dqGreenwich\(dq,0,AUTHORITY[\(dqEPSG\(dq,\(dq8901\(dq]],UNIT[\(dqdegree\(dq,0.0174532925199433,AUTHORITY[\(dqEPSG\(dq,\(dq9122\(dq]],AUTHORITY[\(dqEPSG\(dq,\(dq4258\(dq]],PROJECTION[\(dqTransverse_Mercator\(dq],PARAMETER[\(dqlatitude_of_origin\(dq,0],PARAMETER[\(dqcentral_meridian\(dq,9],PARAMETER[\(dqscale_factor\(dq,0.9996],PARAMETER[\(dqfalse_easting\(dq,500000],PARAMETER[\(dqfalse_northing\(dq,0],UNIT[\(dqmetre\(dq,1,AUTHORITY[\(dqEPSG\(dq,\(dq9001\(dq]],AXIS[\(dqEasting\(dq,EAST],AXIS[\(dqNorthing\(dq,NORTH],AUTHORITY[\(dqEPSG\(dq,\(dq25832\(dq]]
|
||||
.ft P
|
||||
.fi
|
||||
.UNINDENT
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||||
..
|
||||
.TH "PROJSYNC" "1" "15 Mar 2025" "9.6" "PROJ"
|
||||
.TH "PROJSYNC" "1" "02 juin 2025" "9.6" "PROJ"
|
||||
.SH NAME
|
||||
projsync \- Downloading tool of resource files
|
||||
.SH SYNOPSIS
|
||||
|
||||
@@ -101,19 +101,17 @@ VALUES
|
||||
('portugal/DLX_ETRS89_geo','pt_dgt_DLx_ETRS89_geo.tif','DLX_ETRS89_geo.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/pt_dgt_DLx_ETRS89_geo.tif',1,1,NULL),
|
||||
('portugal/D73_ETRS89_geo','pt_dgt_D73_ETRS89_geo.tif','D73_ETRS89_geo.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/pt_dgt_D73_ETRS89_geo.tif',1,1,NULL),
|
||||
('netherlands/rdtrans2008','','rdtrans2008.gsb','NTv2','hgridshift',0,NULL,'https://salsa.debian.org/debian-gis-team/proj-rdnap/raw/upstream/2008/rdtrans2008.gsb',1,0,NULL),
|
||||
('uk/OSTN15_NTv2','uk_os_OSTN15_NTv2_OSGBtoETRS.tif','OSTN15_NTv2_OSGBtoETRS.gsb','GTiff','hgridshift',1 -- reverse direction
|
||||
,NULL,'https://cdn.proj.org/uk_os_OSTN15_NTv2_OSGBtoETRS.tif',1,1,NULL),
|
||||
('canada/GS7783','ca_nrc_GS7783.tif','GS7783.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_GS7783.tif',1,1,NULL),
|
||||
('spain/100800401','es_cat_icgc_100800401.tif','100800401.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/es_cat_icgc_100800401.tif',1,1,NULL),
|
||||
('australia/QLD_0900','au_icsm_National_84_02_07_01.tif','National_84_02_07_01.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/au_icsm_National_84_02_07_01.tif',1,1,NULL), -- From https://www.dnrme.qld.gov.au/__data/assets/pdf_file/0006/105765/gday-21-user-guide.pdf: "Note that the Queensland grid QLD_0900.gsb produces identical results to the National AGD84 grid for the equivalent coverage."
|
||||
('spain/PENR2009','es_ign_SPED2ETV2.tif',NULL,'GTiff','hgridshift',0,NULL,'https://cdn.proj.org/es_ign_SPED2ETV2.tif',1,1,NULL),
|
||||
('spain/BALR2009','es_ign_SPED2ETV2.tif',NULL,'GTiff','hgridshift',0,NULL,'https://cdn.proj.org/es_ign_SPED2ETV2.tif',1,1,NULL),
|
||||
('spain/peninsula','es_ign_SPED2ETV2.tif',NULL,'GTiff','hgridshift',0,NULL,'https://cdn.proj.org/es_ign_SPED2ETV2.tif',1,1,NULL);
|
||||
('spain/peninsula','es_ign_SPED2ETV2.tif',NULL,'GTiff','hgridshift',0,NULL,'https://cdn.proj.org/es_ign_SPED2ETV2.tif',1,1,NULL),
|
||||
('spain/baleares','es_ign_SPED2ETV2.tif',NULL,'GTiff','hgridshift',0,NULL,'https://cdn.proj.org/es_ign_SPED2ETV2.tif',1,1,NULL);
|
||||
-- 'france/RGNC1991_IGN72GrandeTerre' : we have a 3D geocentric corresponding one: no need for mapping
|
||||
-- 'france/RGNC1991_NEA74Noumea' : we have a 3D geocentric corresponding one: no need for mapping
|
||||
"""
|
||||
|
||||
|
||||
def escape_literal(x):
|
||||
return x.replace("'", "''")
|
||||
|
||||
@@ -305,7 +303,8 @@ def import_spheroid():
|
||||
assert unit_size == 1, 'Unhandled spheroid unit size: {}'.format(unit_size)
|
||||
|
||||
description = row[idx_description]
|
||||
deprecated = 1 if row[idx_deprecated] == 'yes' else 0
|
||||
assert row[idx_deprecated] in ('yes', 'codechange', 'no')
|
||||
deprecated = 1 if row[idx_deprecated] in ('yes', 'codechange') else 0
|
||||
|
||||
if esri_name not in map_spheroid_esri_name_to_auth_code:
|
||||
map_spheroid_esri_name_to_auth_code[esri_name] = [
|
||||
@@ -406,7 +405,8 @@ def import_prime_meridian():
|
||||
assert angle_unit == 'Degree', 'Unhandled prime meridian unit: {}'.format(angle_unit)
|
||||
assert unit_size == 0.0174532925199433, 'Unhandled prime meridian unit size: {}'.format(unit_size)
|
||||
|
||||
deprecated = 1 if row[idx_deprecated] == 'yes' else 0
|
||||
assert row[idx_deprecated] in ('yes', 'codechange', 'no')
|
||||
deprecated = 1 if row[idx_deprecated] in ('yes', 'codechange') else 0
|
||||
|
||||
if esri_name not in map_pm_esri_name_to_auth_code:
|
||||
map_pm_esri_name_to_auth_code[esri_name] = ['ESRI', code]
|
||||
@@ -503,7 +503,8 @@ def import_datum():
|
||||
all_sql.append(sql)
|
||||
|
||||
description = row[idx_description]
|
||||
deprecated = 1 if row[idx_deprecated] == 'yes' else 0
|
||||
assert row[idx_deprecated] in ('yes', 'codechange', 'no')
|
||||
deprecated = 1 if row[idx_deprecated] in ('yes', 'codechange') else 0
|
||||
|
||||
map_datum_esri_to_parameters[code] = {
|
||||
'esri_name': esri_name,
|
||||
@@ -528,7 +529,8 @@ def import_datum():
|
||||
ellps_auth_name, ellps_code = map_spheroid_esri_name_to_auth_code[ellps_name]
|
||||
|
||||
description = row[idx_description]
|
||||
deprecated = 1 if row[idx_deprecated] == 'yes' else 0
|
||||
assert row[idx_deprecated] in ('yes', 'codechange', 'no')
|
||||
deprecated = 1 if row[idx_deprecated] in ('yes', 'codechange') else 0
|
||||
|
||||
map_datum_esri_to_parameters[code] = {
|
||||
'esri_name': esri_name,
|
||||
@@ -692,7 +694,8 @@ def import_geogcs():
|
||||
else:
|
||||
geodetic_crs_type = "geographic 2D"
|
||||
|
||||
deprecated = 1 if row[idx_deprecated] == 'yes' else 0
|
||||
assert row[idx_deprecated] in ('yes', 'codechange', 'no')
|
||||
deprecated = 1 if row[idx_deprecated] in ('yes', 'codechange') else 0
|
||||
|
||||
extent_auth_name, extent_code = find_extent(
|
||||
row[idx_areaname], row[idx_slat], row[idx_nlat], row[idx_llon], row[idx_rlon])
|
||||
@@ -1448,7 +1451,8 @@ def import_projcs():
|
||||
|
||||
map_projcs_esri_name_to_auth_code[esri_name] = ['ESRI', code]
|
||||
|
||||
deprecated = 1 if row[idx_deprecated] == 'yes' else 0
|
||||
assert row[idx_deprecated] in ('yes', 'codechange', 'no')
|
||||
deprecated = 1 if row[idx_deprecated] in ('yes', 'codechange') else 0
|
||||
|
||||
method = parsed_conv_wkt2['CONVERSION'][0]
|
||||
|
||||
@@ -1682,7 +1686,8 @@ def import_vdatum():
|
||||
map_vdatum_esri_name_to_auth_code[esri_name] = ['ESRI', wkid]
|
||||
|
||||
description = row[idx_description]
|
||||
deprecated = 1 if row[idx_deprecated] == 'yes' else 0
|
||||
assert row[idx_deprecated] in ('yes', 'codechange', 'no')
|
||||
deprecated = 1 if row[idx_deprecated] in ('yes', 'codechange') else 0
|
||||
|
||||
map_vdatum_esri_to_parameters[wkid] = {
|
||||
'esri_name': esri_name,
|
||||
@@ -1841,7 +1846,8 @@ def import_vertcs():
|
||||
continue
|
||||
datum_auth_name, datum_code = map_datum_esri_name_to_auth_code[datum_name]
|
||||
|
||||
deprecated = 1 if row[idx_deprecated] == 'yes' else 0
|
||||
assert row[idx_deprecated] in ('yes', 'codechange', 'no')
|
||||
deprecated = 1 if row[idx_deprecated] in ('yes', 'codechange') else 0
|
||||
|
||||
extent_auth_name, extent_code = find_extent(
|
||||
row[idx_areaname], row[idx_slat], row[idx_nlat], row[idx_llon], row[idx_rlon])
|
||||
@@ -2109,6 +2115,8 @@ def import_geogtran():
|
||||
idx_accuracy = header.index('accuracy')
|
||||
assert idx_accuracy >= 0
|
||||
|
||||
set_names = set()
|
||||
|
||||
while True:
|
||||
try:
|
||||
row = next(reader)
|
||||
@@ -2120,7 +2128,8 @@ def import_geogtran():
|
||||
authority = row[idx_authority]
|
||||
esri_name = row[idx_name]
|
||||
wkt2 = row[idx_wkt2]
|
||||
deprecated = 1 if row[idx_deprecated] == 'yes' else 0
|
||||
assert row[idx_deprecated] in ('yes', 'codechange', 'no')
|
||||
deprecated = 1 if row[idx_deprecated] in ('yes', 'codechange') else 0
|
||||
|
||||
if authority == 'EPSG':
|
||||
|
||||
@@ -2154,6 +2163,11 @@ def import_geogtran():
|
||||
# print('Skipping deprecated GEOGTRAN %s' % esri_name)
|
||||
continue
|
||||
|
||||
if esri_name in set_names:
|
||||
print(f'Skipping ESRI:{wkid} since transformation with same name {esri_name} already found!')
|
||||
continue
|
||||
set_names.add(esri_name)
|
||||
|
||||
parsed_wkt2 = parse_wkt_array(wkt2)
|
||||
assert 'COORDINATEOPERATION' in parsed_wkt2
|
||||
|
||||
@@ -2599,11 +2613,77 @@ import_geogtran() # transformations between GeogCRS
|
||||
script_dir_name = os.path.dirname(os.path.realpath(__file__))
|
||||
sql_dir_name = os.path.join(os.path.dirname(script_dir_name), 'data', 'sql')
|
||||
|
||||
|
||||
old_aliases = """-------------------
|
||||
-- ESRI old aliases
|
||||
-------------------
|
||||
-- Changed in ArcGIS Pro 3.0
|
||||
INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6181','D_Luxembourg_1930','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4181','GCS_Luxembourg_1930','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','2169','Luxembourg_1930_Gauss','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('vertical_crs','EPSG','5774','NG_L','ESRI_OLD');
|
||||
-- Changed in ArcGIS Pro 3.2
|
||||
INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1064','D_SIRGAS-Chile','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1254','D_SIRGAS-Chile','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6737','D_Korea_2000','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4737','GCS_Korea_2000','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4927','Korea_2000_3D','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5342','POSGAR_3D','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5360','GCS_SIRGAS-Chile','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','9183','SIRGAS-Chile_3D','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','9184','GCS_SIRGAS-Chile','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','9308','ATRF2014_(3D)','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','9332','KSA-GRF17_(3D)','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','9379','IGb14_(3D)','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','9469','SRGI2013_(3D)','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','9546','LTF2004(G)_(3D)','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','9695','REDGEOMIN_(3D)','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','9701','ETRF2000-PL_(3D)','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','9754','WGS_84_(G2139)_(3D)','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','9893','LUREF_(3D)','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('geodetic_crs','EPSG','20040','SIRGAS-Chile_2021_(3D)','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','2176','ETRS_1989_Poland_CS2000_Zone_5','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','2177','ETRS_1989_Poland_CS2000_Zone_6','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','2178','ETRS_1989_Poland_CS2000_Zone_7','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','2179','ETRS_1989_Poland_CS2000_Zone_8','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','2180','ETRS_1989_Poland_CS92','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','5179','Korea_2000_Korea_Unified_Coordinate_System','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','5180','Korea_2000_Korea_West_Belt','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','5181','Korea_2000_Korea_Central_Belt','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','5182','Korea_2000_Korea_Central_Belt_Jeju','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','5183','Korea_2000_Korea_East_Belt','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','5184','Korea_2000_Korea_East_Sea_Belt','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','5185','Korea_2000_Korea_West_Belt_2010','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','5186','Korea_2000_Korea_Central_Belt_2010','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','5187','Korea_2000_Korea_East_Belt_2010','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','5188','Korea_2000_Korea_East_Sea_Belt_2010','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','5361','SIRGAS-Chile_UTM_Zone_19S','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','5362','SIRGAS-Chile_UTM_Zone_18S','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','6622','NAD_1983_CSRS_Quebec_Lambert','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','6624','NAD_1983_CSRS_Quebec_Albers','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','9377','MAGNA-SIRGAS_Origen-Nacional','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('vertical_crs','EPSG','5193','Incheon_height','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('compound_crs','EPSG','9462','GDA2020_+_AVWS_height','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('compound_crs','EPSG','9463','GDA2020_+_AHD_height','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('compound_crs','EPSG','9464','GDA94_+_AHD_height','ESRI_OLD');
|
||||
-- Changed in ArcGIS Pro 3.3
|
||||
INSERT INTO alias_name VALUES('vertical_datum','EPSG','5181','Deutches_Haupthoehennetz_1992','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('vertical_datum','EPSG','5182','Deutches_Haupthoehennetz_1985','ESRI_OLD');
|
||||
-- Changed in ArcGIS Pro 3.4
|
||||
INSERT INTO alias_name VALUES('projected_crs','EPSG','9895','LUREF_Luxembourg_TM_(3D)','ESRI_OLD');
|
||||
-- Changed in ArcGIS Pro 3.5
|
||||
INSERT INTO alias_name VALUES('vertical_crs','EPSG','3855','EGM2008_Geoid','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('vertical_crs','EPSG','5773','EGM96_Geoid','ESRI_OLD');
|
||||
INSERT INTO alias_name VALUES('vertical_crs','EPSG','5798','EGM84_Geoid','ESRI_OLD');
|
||||
"""
|
||||
|
||||
|
||||
f = open(os.path.join(sql_dir_name, 'esri') + '.sql', 'wb')
|
||||
f.write("--- This file has been generated by scripts/build_db_from_esri.py. DO NOT EDIT !\n\n".encode('UTF-8'))
|
||||
for sql in all_sql:
|
||||
f.write((sql + '\n').encode('UTF-8'))
|
||||
f.write(manual_grids.encode('UTF-8'))
|
||||
f.write(old_aliases.encode('UTF-8'))
|
||||
f.close()
|
||||
|
||||
print('')
|
||||
|
||||
Executable
+83
@@ -0,0 +1,83 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eu
|
||||
|
||||
SCRIPT_DIR=$(dirname "$0")
|
||||
case $SCRIPT_DIR in
|
||||
"/"*)
|
||||
;;
|
||||
".")
|
||||
SCRIPT_DIR=$(pwd)
|
||||
;;
|
||||
*)
|
||||
SCRIPT_DIR=$(pwd)/$(dirname "$0")
|
||||
;;
|
||||
esac
|
||||
GDAL_ROOT=$SCRIPT_DIR/..
|
||||
cd "$GDAL_ROOT"
|
||||
|
||||
ret_code=0
|
||||
|
||||
find src test \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) > /tmp/proj_list_files.txt
|
||||
|
||||
echo "Checking for missing #include <algorithm> statements..."
|
||||
rm -f /tmp/missing_include.txt
|
||||
while read -r i; do
|
||||
grep -e std::min -e std::max $i >/dev/null && (grep "#include <algorithm>" $i >/dev/null || echo $i) | tee -a /tmp/missing_include.txt;
|
||||
done < /tmp/proj_list_files.txt
|
||||
|
||||
if test -s /tmp/missing_include.txt; then
|
||||
echo "FAIL: missing #include <algorithm> in above listed files"
|
||||
ret_code=1
|
||||
else
|
||||
echo "OK."
|
||||
fi
|
||||
|
||||
|
||||
echo "Checking for missing #include <limits> statements..."
|
||||
rm -f /tmp/missing_include.txt
|
||||
while read -r i; do
|
||||
grep -e std::numeric_limits $i >/dev/null && (grep "#include <limits>" $i >/dev/null || echo $i) | tee -a /tmp/missing_include.txt;
|
||||
done < /tmp/proj_list_files.txt
|
||||
|
||||
|
||||
if test -s /tmp/missing_include.txt; then
|
||||
echo "FAIL: missing #include <limits> in above listed files"
|
||||
ret_code=1
|
||||
else
|
||||
echo "OK."
|
||||
fi
|
||||
|
||||
|
||||
echo "Checking for missing #include <cctype> statements..."
|
||||
rm -f /tmp/missing_include.txt
|
||||
while read -r i; do
|
||||
grep -e std::isalpha $i >/dev/null && (grep "#include <cctype>" $i >/dev/null || echo $i) | tee -a /tmp/missing_include.txt;
|
||||
done < /tmp/proj_list_files.txt
|
||||
|
||||
|
||||
if test -s /tmp/missing_include.txt; then
|
||||
echo "FAIL: missing #include <cctype> in above listed files"
|
||||
ret_code=1
|
||||
else
|
||||
echo "OK."
|
||||
fi
|
||||
|
||||
echo "Checking for missing #include <cmath> statements..."
|
||||
rm -f /tmp/missing_include.txt
|
||||
while read -r i; do
|
||||
grep -e std::isnan -e std::isinf -e std::isfinite $i >/dev/null && (grep "#include <cmath>" $i >/dev/null || echo $i) | tee -a /tmp/missing_include.txt;
|
||||
done < /tmp/proj_list_files.txt
|
||||
|
||||
|
||||
if test -s /tmp/missing_include.txt; then
|
||||
echo "FAIL: missing #include <cmath> in above listed files"
|
||||
ret_code=1
|
||||
else
|
||||
echo "OK."
|
||||
fi
|
||||
|
||||
rm -f /tmp/missing_include.txt
|
||||
rm -f /tmp/proj_list_files.txt
|
||||
|
||||
exit $ret_code
|
||||
Executable → Regular
+1
-1
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
# Hashbang deliberately missing because this file should be sourced, not executed
|
||||
|
||||
function_exists() {
|
||||
declare -f -F "$1" > /dev/null
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
#define FROM_PROJ_CPP
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <limits>
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <math.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <limits>
|
||||
|
||||
#include "proj/internal/internal.hpp"
|
||||
|
||||
|
||||
+56
-10
@@ -41,6 +41,7 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstdint>
|
||||
#include <limits>
|
||||
#include <string>
|
||||
|
||||
@@ -143,8 +144,6 @@ std::string File::read_line(size_t maxLen, bool &maxLenReached,
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
#if !USE_ONLY_EMBEDDED_RESOURCE_FILES
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
/* The bulk of utf8towc()/utf8fromwc() is derived from the utf.c module from
|
||||
@@ -589,6 +588,12 @@ static std::string Win32Recode(const char *src, unsigned src_code_page,
|
||||
return out;
|
||||
}
|
||||
|
||||
#endif // _defined(_WIN32)
|
||||
|
||||
#if !(EMBED_RESOURCE_FILES && USE_ONLY_EMBEDDED_RESOURCE_FILES)
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
class FileWin32 : public File {
|
||||
@@ -728,7 +733,8 @@ std::unique_ptr<File> FileWin32::open(PJ_CONTEXT *ctx, const char *filename,
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
||||
#else // if !defined(_WIN32)
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
@@ -798,7 +804,7 @@ unsigned long long FileStdio::tell() {
|
||||
|
||||
std::unique_ptr<File> FileStdio::open(PJ_CONTEXT *ctx, const char *filename,
|
||||
FileAccess access) {
|
||||
auto fp = fopen(filename, access == FileAccess::READ_ONLY ? "rb"
|
||||
auto fp = fopen(filename, access == FileAccess::READ_ONLY ? "rb"
|
||||
: access == FileAccess::READ_UPDATE ? "r+b"
|
||||
: "w+b");
|
||||
return std::unique_ptr<File>(fp ? new FileStdio(filename, ctx, fp)
|
||||
@@ -807,7 +813,7 @@ std::unique_ptr<File> FileStdio::open(PJ_CONTEXT *ctx, const char *filename,
|
||||
|
||||
#endif // _WIN32
|
||||
|
||||
#endif // !USE_ONLY_EMBEDDED_RESOURCE_FILES
|
||||
#endif // !(EMBED_RESOURCE_FILES && USE_ONLY_EMBEDDED_RESOURCE_FILES)
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
@@ -1854,12 +1860,52 @@ NS_PROJ::FileManager::open_resource_file(PJ_CONTEXT *ctx, const char *name,
|
||||
!is_rel_or_absolute_filename(name) && !starts_with(name, "http://") &&
|
||||
!starts_with(name, "https://") &&
|
||||
proj_context_is_network_enabled(ctx)) {
|
||||
std::string remote_file(proj_context_get_url_endpoint(ctx));
|
||||
if (!remote_file.empty()) {
|
||||
if (remote_file.back() != '/') {
|
||||
remote_file += '/';
|
||||
|
||||
std::string remote_file;
|
||||
auto dbContext = getDBcontext(ctx);
|
||||
if (dbContext) {
|
||||
try {
|
||||
std::string fullFilename, packageName, url;
|
||||
bool directDownload = false;
|
||||
bool openLicense = false;
|
||||
bool gridAvailable = false;
|
||||
proj_context_set_enable_network(ctx,
|
||||
false); // prevent recursion
|
||||
const bool found = dbContext->lookForGridInfo(
|
||||
name, /* considerKnownGridsAsAvailable = */ true,
|
||||
fullFilename, packageName, url, directDownload, openLicense,
|
||||
gridAvailable);
|
||||
proj_context_set_enable_network(ctx, true);
|
||||
if (found && !url.empty() && directDownload) {
|
||||
remote_file = url;
|
||||
if (starts_with(url, "https://cdn.proj.org/")) {
|
||||
const std::string endpoint =
|
||||
proj_context_get_url_endpoint(ctx);
|
||||
if (!endpoint.empty()) {
|
||||
remote_file = endpoint;
|
||||
if (remote_file.back() != '/') {
|
||||
remote_file += '/';
|
||||
}
|
||||
remote_file += name;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (const std::exception &e) {
|
||||
proj_context_set_enable_network(ctx, true);
|
||||
pj_log(ctx, PJ_LOG_DEBUG, "%s", e.what());
|
||||
return nullptr;
|
||||
}
|
||||
remote_file += name;
|
||||
}
|
||||
if (remote_file.empty()) {
|
||||
remote_file = proj_context_get_url_endpoint(ctx);
|
||||
if (!remote_file.empty()) {
|
||||
if (remote_file.back() != '/') {
|
||||
remote_file += '/';
|
||||
}
|
||||
remote_file += name;
|
||||
}
|
||||
}
|
||||
if (!remote_file.empty()) {
|
||||
file =
|
||||
open(ctx, remote_file.c_str(), NS_PROJ::FileAccess::READ_ONLY);
|
||||
if (file) {
|
||||
|
||||
+3
-1
@@ -45,6 +45,7 @@
|
||||
#include <cmath>
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
#include <limits>
|
||||
|
||||
NS_PROJ_START
|
||||
|
||||
@@ -57,7 +58,8 @@ using namespace internal;
|
||||
/************************************************************************/
|
||||
|
||||
static const int byte_order_test = 1;
|
||||
#define IS_LSB (1 == ((const unsigned char *)(&byte_order_test))[0])
|
||||
#define IS_LSB \
|
||||
(1 == (reinterpret_cast<const unsigned char *>(&byte_order_test))[0])
|
||||
|
||||
static void swap_words(void *dataIn, size_t word_size, size_t word_count)
|
||||
|
||||
|
||||
+78
-49
@@ -1560,63 +1560,92 @@ bool GeodeticReferenceFrame::_isEquivalentTo(
|
||||
bool GeodeticReferenceFrame::hasEquivalentNameToUsingAlias(
|
||||
const IdentifiedObject *other,
|
||||
const io::DatabaseContextPtr &dbContext) const {
|
||||
if (nameStr() == other->nameStr() || nameStr() == "unknown" ||
|
||||
other->nameStr() == "unknown") {
|
||||
return true;
|
||||
}
|
||||
if (ci_starts_with(nameStr(), UNKNOWN_BASED_ON) ||
|
||||
ci_starts_with(other->nameStr(), UNKNOWN_BASED_ON)) {
|
||||
return false;
|
||||
}
|
||||
if (dbContext) {
|
||||
if (!identifiers().empty()) {
|
||||
const auto &id = identifiers().front();
|
||||
|
||||
const std::string officialNameFromId = dbContext->getName(
|
||||
"geodetic_datum", *(id->codeSpace()), id->code());
|
||||
const auto aliasesResult =
|
||||
dbContext->getAliases(*(id->codeSpace()), id->code(), nameStr(),
|
||||
"geodetic_datum", std::string());
|
||||
const auto compare = [this, other,
|
||||
&dbContext](const std::string &thisName,
|
||||
const std::string &otherName) {
|
||||
if (thisName == otherName || thisName == "unknown" ||
|
||||
otherName == "unknown") {
|
||||
return true;
|
||||
}
|
||||
|
||||
const auto isNameMatching =
|
||||
[&aliasesResult, &officialNameFromId](const std::string &name) {
|
||||
const char *nameCstr = name.c_str();
|
||||
if (metadata::Identifier::isEquivalentName(
|
||||
nameCstr, officialNameFromId.c_str())) {
|
||||
return true;
|
||||
} else {
|
||||
for (const auto &aliasResult : aliasesResult) {
|
||||
if (metadata::Identifier::isEquivalentName(
|
||||
nameCstr, aliasResult.c_str())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
return isNameMatching(nameStr()) &&
|
||||
isNameMatching(other->nameStr());
|
||||
} else if (!other->identifiers().empty()) {
|
||||
auto otherGRF = dynamic_cast<const GeodeticReferenceFrame *>(other);
|
||||
if (otherGRF) {
|
||||
return otherGRF->hasEquivalentNameToUsingAlias(this, dbContext);
|
||||
}
|
||||
if (ci_starts_with(thisName, UNKNOWN_BASED_ON) ||
|
||||
ci_starts_with(otherName, UNKNOWN_BASED_ON)) {
|
||||
// Note: they cannot be equal based on initial test.
|
||||
return false;
|
||||
}
|
||||
|
||||
auto aliasesResult =
|
||||
dbContext->getAliases(std::string(), std::string(), nameStr(),
|
||||
"geodetic_datum", std::string());
|
||||
const char *otherName = other->nameStr().c_str();
|
||||
for (const auto &aliasResult : aliasesResult) {
|
||||
if (metadata::Identifier::isEquivalentName(otherName,
|
||||
aliasResult.c_str())) {
|
||||
return true;
|
||||
if (dbContext) {
|
||||
if (!identifiers().empty()) {
|
||||
const auto &id = identifiers().front();
|
||||
|
||||
const std::string officialNameFromId = dbContext->getName(
|
||||
"geodetic_datum", *(id->codeSpace()), id->code());
|
||||
const auto aliasesResult = dbContext->getAliases(
|
||||
*(id->codeSpace()), id->code(), thisName, "geodetic_datum",
|
||||
std::string());
|
||||
|
||||
const auto isNameMatching =
|
||||
[&aliasesResult,
|
||||
&officialNameFromId](const std::string &name) {
|
||||
const char *nameCstr = name.c_str();
|
||||
if (metadata::Identifier::isEquivalentName(
|
||||
nameCstr, officialNameFromId.c_str())) {
|
||||
return true;
|
||||
} else {
|
||||
for (const auto &aliasResult : aliasesResult) {
|
||||
if (metadata::Identifier::isEquivalentName(
|
||||
nameCstr, aliasResult.c_str())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
return isNameMatching(thisName) && isNameMatching(otherName);
|
||||
} else if (!other->identifiers().empty()) {
|
||||
auto otherGRF =
|
||||
dynamic_cast<const GeodeticReferenceFrame *>(other);
|
||||
if (otherGRF) {
|
||||
return otherGRF->hasEquivalentNameToUsingAlias(this,
|
||||
dbContext);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
auto aliasesResult =
|
||||
dbContext->getAliases(std::string(), std::string(), thisName,
|
||||
"geodetic_datum", std::string());
|
||||
const char *otherNamePtr = otherName.c_str();
|
||||
for (const auto &aliasResult : aliasesResult) {
|
||||
if (metadata::Identifier::isEquivalentName(
|
||||
otherNamePtr, aliasResult.c_str())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
// Try to work around issues with Esri style "D_" name prefixing
|
||||
// Cf https://github.com/OSGeo/PROJ/issues/4514
|
||||
const bool thisStartsWithDUnderscore = ci_starts_with(nameStr(), "D_");
|
||||
const bool otherStartsWithDUnderscore =
|
||||
ci_starts_with(other->nameStr(), "D_");
|
||||
if (thisStartsWithDUnderscore && !otherStartsWithDUnderscore) {
|
||||
const std::string thisNameMod = nameStr().substr(2);
|
||||
return metadata::Identifier::isEquivalentName(
|
||||
thisNameMod.c_str(), other->nameStr().c_str()) ||
|
||||
compare(thisNameMod, other->nameStr());
|
||||
} else if (!thisStartsWithDUnderscore && otherStartsWithDUnderscore) {
|
||||
const std::string otherNameMod = other->nameStr().substr(2);
|
||||
return metadata::Identifier::isEquivalentName(nameStr().c_str(),
|
||||
otherNameMod.c_str()) ||
|
||||
compare(nameStr(), otherNameMod);
|
||||
} else {
|
||||
return compare(nameStr(), other->nameStr());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
+208
-184
@@ -1322,18 +1322,30 @@ void DatabaseContext::Private::attachExtraDatabases(
|
||||
auto l_handle = handle();
|
||||
assert(l_handle);
|
||||
|
||||
auto tables =
|
||||
run("SELECT name FROM sqlite_master WHERE type IN ('table', 'view') "
|
||||
"AND name NOT LIKE 'sqlite_stat%'");
|
||||
std::map<std::string, std::vector<std::string>> tableStructure;
|
||||
auto tables = run("SELECT name, type, sql FROM sqlite_master WHERE type IN "
|
||||
"('table', 'view') "
|
||||
"AND name NOT LIKE 'sqlite_stat%'");
|
||||
|
||||
struct TableStructure {
|
||||
std::string name{};
|
||||
bool isTable = false;
|
||||
std::string sql{};
|
||||
std::vector<std::string> columns{};
|
||||
};
|
||||
std::vector<TableStructure> tablesStructure;
|
||||
for (const auto &rowTable : tables) {
|
||||
const auto &tableName = rowTable[0];
|
||||
auto tableInfo = run("PRAGMA table_info(\"" +
|
||||
replaceAll(tableName, "\"", "\"\"") + "\")");
|
||||
TableStructure tableStructure;
|
||||
tableStructure.name = rowTable[0];
|
||||
tableStructure.isTable = rowTable[1] == "table";
|
||||
tableStructure.sql = rowTable[2];
|
||||
auto tableInfo =
|
||||
run("PRAGMA table_info(\"" +
|
||||
replaceAll(tableStructure.name, "\"", "\"\"") + "\")");
|
||||
for (const auto &rowCol : tableInfo) {
|
||||
const auto &colName = rowCol[1];
|
||||
tableStructure[tableName].push_back(colName);
|
||||
tableStructure.columns.push_back(colName);
|
||||
}
|
||||
tablesStructure.push_back(std::move(tableStructure));
|
||||
}
|
||||
|
||||
const int nLayoutVersionMajor = l_handle->getLayoutVersionMajor();
|
||||
@@ -1370,38 +1382,46 @@ void DatabaseContext::Private::attachExtraDatabases(
|
||||
attachedDbName + '.');
|
||||
}
|
||||
|
||||
for (const auto &pair : tableStructure) {
|
||||
std::string sql("CREATE TEMP VIEW ");
|
||||
sql += pair.first;
|
||||
sql += " AS ";
|
||||
for (size_t i = 0; i <= auxiliaryDatabasePaths.size(); ++i) {
|
||||
std::string selectFromAux("SELECT ");
|
||||
bool firstCol = true;
|
||||
for (const auto &colName : pair.second) {
|
||||
if (!firstCol) {
|
||||
selectFromAux += ", ";
|
||||
for (const auto &tableStructure : tablesStructure) {
|
||||
if (tableStructure.isTable) {
|
||||
std::string sql("CREATE TEMP VIEW ");
|
||||
sql += tableStructure.name;
|
||||
sql += " AS ";
|
||||
for (size_t i = 0; i <= auxiliaryDatabasePaths.size(); ++i) {
|
||||
std::string selectFromAux("SELECT ");
|
||||
bool firstCol = true;
|
||||
for (const auto &colName : tableStructure.columns) {
|
||||
if (!firstCol) {
|
||||
selectFromAux += ", ";
|
||||
}
|
||||
firstCol = false;
|
||||
selectFromAux += colName;
|
||||
}
|
||||
firstCol = false;
|
||||
selectFromAux += colName;
|
||||
}
|
||||
selectFromAux += " FROM db_";
|
||||
selectFromAux += toString(static_cast<int>(i));
|
||||
selectFromAux += ".";
|
||||
selectFromAux += pair.first;
|
||||
selectFromAux += " FROM db_";
|
||||
selectFromAux += toString(static_cast<int>(i));
|
||||
selectFromAux += ".";
|
||||
selectFromAux += tableStructure.name;
|
||||
|
||||
try {
|
||||
// Check that the request will succeed. In case of 'sparse'
|
||||
// databases...
|
||||
run(selectFromAux + " LIMIT 0");
|
||||
try {
|
||||
// Check that the request will succeed. In case of 'sparse'
|
||||
// databases...
|
||||
run(selectFromAux + " LIMIT 0");
|
||||
|
||||
if (i > 0) {
|
||||
sql += " UNION ALL ";
|
||||
if (i > 0) {
|
||||
if (tableStructure.name == "conversion_method")
|
||||
sql += " UNION ";
|
||||
else
|
||||
sql += " UNION ALL ";
|
||||
}
|
||||
sql += selectFromAux;
|
||||
} catch (const std::exception &) {
|
||||
}
|
||||
sql += selectFromAux;
|
||||
} catch (const std::exception &) {
|
||||
}
|
||||
run(sql);
|
||||
} else {
|
||||
run(replaceAll(tableStructure.sql, "CREATE VIEW",
|
||||
"CREATE TEMP VIEW"));
|
||||
}
|
||||
run(sql);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6910,60 +6930,23 @@ AuthorityFactory::getGeoidModels(const std::string &code) const {
|
||||
ListOfParams params;
|
||||
std::string sql;
|
||||
sql += "SELECT DISTINCT GM0.name "
|
||||
" FROM geoid_model GM0 "
|
||||
" FROM geoid_model GM0 "
|
||||
"INNER JOIN grid_transformation GT0 "
|
||||
" ON GT0.code = GM0.operation_code "
|
||||
" AND GT0.auth_name = GM0.operation_auth_name "
|
||||
" AND GT0.target_crs_code = ? ";
|
||||
" ON GT0.code = GM0.operation_code "
|
||||
" AND GT0.auth_name = GM0.operation_auth_name "
|
||||
" AND GT0.deprecated = 0 "
|
||||
"INNER JOIN vertical_crs VC0 "
|
||||
" ON VC0.code = GT0.target_crs_code "
|
||||
" AND VC0.auth_name = GT0.target_crs_auth_name "
|
||||
"INNER JOIN vertical_crs VC1 "
|
||||
" ON VC1.datum_code = VC0.datum_code "
|
||||
" AND VC1.datum_auth_name = VC0.datum_auth_name "
|
||||
" AND VC1.code = ? ";
|
||||
params.emplace_back(code);
|
||||
if (d->hasAuthorityRestriction()) {
|
||||
sql += " AND GT0.target_crs_auth_name = ? ";
|
||||
params.emplace_back(d->authority());
|
||||
}
|
||||
|
||||
/// The second part of the query is for CRSs that use that geoid model via
|
||||
/// Height Depth Reversal (EPSG:1068) or Change of Vertical Unit (EPSG:1069)
|
||||
sql += "UNION "
|
||||
"SELECT DISTINCT GM0.name "
|
||||
" FROM geoid_model GM0 "
|
||||
"INNER JOIN grid_transformation GT1 "
|
||||
" ON GT1.code = GM0.operation_code "
|
||||
" AND GT1.auth_name = GM0.operation_auth_name "
|
||||
"INNER JOIN other_transformation OT1 "
|
||||
" ON OT1.source_crs_code = GT1.target_crs_code "
|
||||
" AND OT1.source_crs_auth_name = GT1.target_crs_auth_name "
|
||||
" AND OT1.method_auth_name = 'EPSG' "
|
||||
" AND OT1.method_code IN (1068, 1069, 1104) "
|
||||
" AND OT1.target_crs_code = ? ";
|
||||
params.emplace_back(code);
|
||||
if (d->hasAuthorityRestriction()) {
|
||||
sql += " AND OT1.target_crs_auth_name = ? ";
|
||||
params.emplace_back(d->authority());
|
||||
}
|
||||
|
||||
/// The third part of the query is for CRSs that use that geoid model via
|
||||
/// other_transformation table twice, like transforming depth and feet
|
||||
sql += "UNION "
|
||||
"SELECT DISTINCT GM0.name "
|
||||
" FROM geoid_model GM0 "
|
||||
"INNER JOIN grid_transformation GT1 "
|
||||
" ON GT1.code = GM0.operation_code "
|
||||
" AND GT1.auth_name = GM0.operation_auth_name "
|
||||
"INNER JOIN other_transformation OT1 "
|
||||
" ON OT1.source_crs_code = GT1.target_crs_code "
|
||||
" AND OT1.source_crs_auth_name = GT1.target_crs_auth_name "
|
||||
" AND OT1.method_auth_name = 'EPSG' "
|
||||
" AND OT1.method_code IN (1068, 1069, 1104) "
|
||||
"INNER JOIN other_transformation OT2 "
|
||||
" ON OT2.source_crs_code = OT1.target_crs_code "
|
||||
" AND OT2.source_crs_auth_name = OT1.target_crs_auth_name "
|
||||
" AND OT2.method_code IN (1068, 1069, 1104) "
|
||||
" AND OT2.target_crs_code = ? ";
|
||||
params.emplace_back(code);
|
||||
if (d->hasAuthorityRestriction()) {
|
||||
sql += " AND OT2.target_crs_auth_name = ? ";
|
||||
params.emplace_back(d->authority());
|
||||
}
|
||||
sql += " ORDER BY 1 ";
|
||||
|
||||
auto sqlRes = d->run(sql, params);
|
||||
@@ -7459,8 +7442,8 @@ AuthorityFactory::createFromCRSCodesWithIntermediates(
|
||||
return listTmp;
|
||||
}
|
||||
|
||||
const auto CheckIfHasOperations = [=](const std::string &auth_name,
|
||||
const std::string &code) {
|
||||
const auto CheckIfHasOperations = [this](const std::string &auth_name,
|
||||
const std::string &code) {
|
||||
return !(d->run("SELECT 1 FROM coordinate_operation_view WHERE "
|
||||
"(source_crs_auth_name = ? AND source_crs_code = ?) OR "
|
||||
"(target_crs_auth_name = ? AND target_crs_code = ?) "
|
||||
@@ -7572,6 +7555,10 @@ AuthorityFactory::createFromCRSCodesWithIntermediates(
|
||||
const bool ETRFtoETRF = starts_with(sourceCRS->nameStr(), "ETRF") &&
|
||||
starts_with(targetCRS->nameStr(), "ETRF");
|
||||
|
||||
const bool NAD83_CSRS_to_NAD83_CSRS =
|
||||
starts_with(sourceCRS->nameStr(), "NAD83(CSRS)") &&
|
||||
starts_with(targetCRS->nameStr(), "NAD83(CSRS)");
|
||||
|
||||
if (allowedIntermediateObjectType == ObjectType::GEOGRAPHIC_CRS) {
|
||||
const auto &sourceGeogCRS =
|
||||
dynamic_cast<const crs::GeographicCRS *>(sourceCRS.get());
|
||||
@@ -7757,31 +7744,39 @@ AuthorityFactory::createFromCRSCodesWithIntermediates(
|
||||
res = filterOutSuperseded(std::move(res));
|
||||
}
|
||||
|
||||
const auto checkPivotForETRFToETRF =
|
||||
[ETRFtoETRF, &sourceCRS,
|
||||
&targetCRS](const crs::CRSPtr &intermediateCRS) {
|
||||
// Make sure that ETRF2000 to ETRF2014 doesn't go through ITRF9x or
|
||||
// ITRF>2014
|
||||
if (ETRFtoETRF && intermediateCRS &&
|
||||
starts_with(intermediateCRS->nameStr(), "ITRF")) {
|
||||
const auto normalizeDate = [](int v) {
|
||||
return (v >= 80 && v <= 99) ? v + 1900 : v;
|
||||
};
|
||||
const int srcDate = normalizeDate(
|
||||
atoi(sourceCRS->nameStr().c_str() + strlen("ETRF")));
|
||||
const int tgtDate = normalizeDate(
|
||||
atoi(targetCRS->nameStr().c_str() + strlen("ETRF")));
|
||||
const int intermDate = normalizeDate(
|
||||
atoi(intermediateCRS->nameStr().c_str() + strlen("ITRF")));
|
||||
if (srcDate > 0 && tgtDate > 0 && intermDate > 0) {
|
||||
if (intermDate < std::min(srcDate, tgtDate) ||
|
||||
intermDate > std::max(srcDate, tgtDate)) {
|
||||
return false;
|
||||
}
|
||||
const auto checkPivot = [ETRFtoETRF, NAD83_CSRS_to_NAD83_CSRS, &sourceCRS,
|
||||
&targetCRS](const crs::CRSPtr &intermediateCRS) {
|
||||
// Make sure that ETRF2000 to ETRF2014 doesn't go through ITRF9x or
|
||||
// ITRF>2014
|
||||
if (ETRFtoETRF && intermediateCRS &&
|
||||
starts_with(intermediateCRS->nameStr(), "ITRF")) {
|
||||
const auto normalizeDate = [](int v) {
|
||||
return (v >= 80 && v <= 99) ? v + 1900 : v;
|
||||
};
|
||||
const int srcDate = normalizeDate(
|
||||
atoi(sourceCRS->nameStr().c_str() + strlen("ETRF")));
|
||||
const int tgtDate = normalizeDate(
|
||||
atoi(targetCRS->nameStr().c_str() + strlen("ETRF")));
|
||||
const int intermDate = normalizeDate(
|
||||
atoi(intermediateCRS->nameStr().c_str() + strlen("ITRF")));
|
||||
if (srcDate > 0 && tgtDate > 0 && intermDate > 0) {
|
||||
if (intermDate < std::min(srcDate, tgtDate) ||
|
||||
intermDate > std::max(srcDate, tgtDate)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
// Make sure that NAD83(CSRS)[x] to NAD83(CSRS)[y) doesn't go through
|
||||
// NAD83 generic. Cf https://github.com/OSGeo/PROJ/issues/4464
|
||||
if (NAD83_CSRS_to_NAD83_CSRS && intermediateCRS &&
|
||||
(intermediateCRS->nameStr() == "NAD83" ||
|
||||
intermediateCRS->nameStr() == "WGS 84")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
for (const auto &row : res) {
|
||||
const auto &table1 = row[0];
|
||||
@@ -7801,7 +7796,7 @@ AuthorityFactory::createFromCRSCodesWithIntermediates(
|
||||
targetCRSAuthName, targetCRSCode)) {
|
||||
continue;
|
||||
}
|
||||
if (!checkPivotForETRFToETRF(op1->targetCRS())) {
|
||||
if (!checkPivot(op1->targetCRS())) {
|
||||
continue;
|
||||
}
|
||||
auto op2 =
|
||||
@@ -7861,7 +7856,7 @@ AuthorityFactory::createFromCRSCodesWithIntermediates(
|
||||
targetCRSAuthName, targetCRSCode)) {
|
||||
continue;
|
||||
}
|
||||
if (!checkPivotForETRFToETRF(op1->targetCRS())) {
|
||||
if (!checkPivot(op1->targetCRS())) {
|
||||
continue;
|
||||
}
|
||||
auto op2 =
|
||||
@@ -7941,7 +7936,7 @@ AuthorityFactory::createFromCRSCodesWithIntermediates(
|
||||
targetCRSAuthName, targetCRSCode)) {
|
||||
continue;
|
||||
}
|
||||
if (!checkPivotForETRFToETRF(op1->sourceCRS())) {
|
||||
if (!checkPivot(op1->sourceCRS())) {
|
||||
continue;
|
||||
}
|
||||
auto op2 =
|
||||
@@ -8000,7 +7995,7 @@ AuthorityFactory::createFromCRSCodesWithIntermediates(
|
||||
targetCRSAuthName, targetCRSCode)) {
|
||||
continue;
|
||||
}
|
||||
if (!checkPivotForETRFToETRF(op1->sourceCRS())) {
|
||||
if (!checkPivot(op1->sourceCRS())) {
|
||||
continue;
|
||||
}
|
||||
auto op2 =
|
||||
@@ -8080,6 +8075,10 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
return listTmp;
|
||||
}
|
||||
|
||||
const bool NAD83_CSRS_to_NAD83_CSRS =
|
||||
starts_with(sourceGeodCRS->nameStr(), "NAD83(CSRS)") &&
|
||||
starts_with(targetGeodCRS->nameStr(), "NAD83(CSRS)");
|
||||
|
||||
const auto GetListCRSWithSameDatum = [this](const crs::GeodeticCRS *crs,
|
||||
const std::string &crsAuthName,
|
||||
const std::string &crsCode) {
|
||||
@@ -8132,78 +8131,85 @@ AuthorityFactory::createBetweenGeodeticCRSWithDatumBasedIntermediates(
|
||||
}
|
||||
|
||||
ListOfParams params;
|
||||
const auto BuildSQLPart =
|
||||
[this, &allowedAuthorities, ¶ms, &listSourceCRS,
|
||||
&listTargetCRS](bool isSourceCRS, bool selectOnTarget) {
|
||||
std::string situation;
|
||||
if (isSourceCRS)
|
||||
situation = "src";
|
||||
else
|
||||
situation = "tgt";
|
||||
if (selectOnTarget)
|
||||
situation += "_is_tgt";
|
||||
else
|
||||
situation += "_is_src";
|
||||
const std::string prefix1(selectOnTarget ? "source" : "target");
|
||||
const std::string prefix2(selectOnTarget ? "target" : "source");
|
||||
std::string sql("SELECT '");
|
||||
sql += situation;
|
||||
sql += "' as situation, v.table_name, v.auth_name, "
|
||||
"v.code, v.name, gcrs.datum_auth_name, gcrs.datum_code, "
|
||||
"a.west_lon, a.south_lat, a.east_lon, a.north_lat "
|
||||
"FROM coordinate_operation_view v "
|
||||
"JOIN geodetic_crs gcrs on gcrs.auth_name = ";
|
||||
sql += prefix1;
|
||||
sql += "_crs_auth_name AND gcrs.code = ";
|
||||
sql += prefix1;
|
||||
sql += "_crs_code "
|
||||
const auto BuildSQLPart = [this, NAD83_CSRS_to_NAD83_CSRS,
|
||||
&allowedAuthorities, ¶ms, &listSourceCRS,
|
||||
&listTargetCRS](bool isSourceCRS,
|
||||
bool selectOnTarget) {
|
||||
std::string situation;
|
||||
if (isSourceCRS)
|
||||
situation = "src";
|
||||
else
|
||||
situation = "tgt";
|
||||
if (selectOnTarget)
|
||||
situation += "_is_tgt";
|
||||
else
|
||||
situation += "_is_src";
|
||||
const std::string prefix1(selectOnTarget ? "source" : "target");
|
||||
const std::string prefix2(selectOnTarget ? "target" : "source");
|
||||
std::string sql("SELECT '");
|
||||
sql += situation;
|
||||
sql += "' as situation, v.table_name, v.auth_name, "
|
||||
"v.code, v.name, gcrs.datum_auth_name, gcrs.datum_code, "
|
||||
"a.west_lon, a.south_lat, a.east_lon, a.north_lat "
|
||||
"FROM coordinate_operation_view v "
|
||||
"JOIN geodetic_crs gcrs on gcrs.auth_name = ";
|
||||
sql += prefix1;
|
||||
sql += "_crs_auth_name AND gcrs.code = ";
|
||||
sql += prefix1;
|
||||
sql += "_crs_code "
|
||||
|
||||
"LEFT JOIN usage u ON "
|
||||
"u.object_table_name = v.table_name AND "
|
||||
"u.object_auth_name = v.auth_name AND "
|
||||
"u.object_code = v.code "
|
||||
"LEFT JOIN extent a "
|
||||
"ON a.auth_name = u.extent_auth_name AND "
|
||||
"a.code = u.extent_code "
|
||||
"WHERE v.deprecated = 0 AND (";
|
||||
"LEFT JOIN usage u ON "
|
||||
"u.object_table_name = v.table_name AND "
|
||||
"u.object_auth_name = v.auth_name AND "
|
||||
"u.object_code = v.code "
|
||||
"LEFT JOIN extent a "
|
||||
"ON a.auth_name = u.extent_auth_name AND "
|
||||
"a.code = u.extent_code "
|
||||
"WHERE v.deprecated = 0 AND (";
|
||||
|
||||
std::string cond;
|
||||
std::string cond;
|
||||
|
||||
const auto &list = isSourceCRS ? listSourceCRS : listTargetCRS;
|
||||
for (const auto &row : list) {
|
||||
if (!cond.empty())
|
||||
cond += " OR ";
|
||||
cond += '(';
|
||||
cond += prefix2;
|
||||
cond += "_crs_auth_name = ? AND ";
|
||||
cond += prefix2;
|
||||
cond += "_crs_code = ?)";
|
||||
params.emplace_back(row[0]);
|
||||
params.emplace_back(row[1]);
|
||||
const auto &list = isSourceCRS ? listSourceCRS : listTargetCRS;
|
||||
for (const auto &row : list) {
|
||||
if (!cond.empty())
|
||||
cond += " OR ";
|
||||
cond += '(';
|
||||
cond += prefix2;
|
||||
cond += "_crs_auth_name = ? AND ";
|
||||
cond += prefix2;
|
||||
cond += "_crs_code = ?)";
|
||||
params.emplace_back(row[0]);
|
||||
params.emplace_back(row[1]);
|
||||
}
|
||||
|
||||
sql += cond;
|
||||
sql += ") ";
|
||||
|
||||
if (!allowedAuthorities.empty()) {
|
||||
sql += "AND v.auth_name IN (";
|
||||
for (size_t i = 0; i < allowedAuthorities.size(); i++) {
|
||||
if (i > 0)
|
||||
sql += ',';
|
||||
sql += '?';
|
||||
}
|
||||
|
||||
sql += cond;
|
||||
sql += ") ";
|
||||
|
||||
if (!allowedAuthorities.empty()) {
|
||||
sql += "AND v.auth_name IN (";
|
||||
for (size_t i = 0; i < allowedAuthorities.size(); i++) {
|
||||
if (i > 0)
|
||||
sql += ',';
|
||||
sql += '?';
|
||||
}
|
||||
sql += ") ";
|
||||
for (const auto &allowedAuthority : allowedAuthorities) {
|
||||
params.emplace_back(allowedAuthority);
|
||||
}
|
||||
}
|
||||
if (d->hasAuthorityRestriction()) {
|
||||
sql += "AND v.auth_name = ? ";
|
||||
params.emplace_back(d->authority());
|
||||
for (const auto &allowedAuthority : allowedAuthorities) {
|
||||
params.emplace_back(allowedAuthority);
|
||||
}
|
||||
}
|
||||
if (d->hasAuthorityRestriction()) {
|
||||
sql += "AND v.auth_name = ? ";
|
||||
params.emplace_back(d->authority());
|
||||
}
|
||||
if (NAD83_CSRS_to_NAD83_CSRS) {
|
||||
// Make sure that NAD83(CSRS)[x] to NAD83(CSRS)[y) doesn't go
|
||||
// through NAD83 generic. Cf
|
||||
// https://github.com/OSGeo/PROJ/issues/4464
|
||||
sql += "AND gcrs.name NOT IN ('NAD83', 'WGS 84') ";
|
||||
}
|
||||
|
||||
return sql;
|
||||
};
|
||||
return sql;
|
||||
};
|
||||
|
||||
std::string sql(BuildSQLPart(true, true));
|
||||
sql += "UNION ALL ";
|
||||
@@ -9036,8 +9042,12 @@ std::string AuthorityFactory::getOfficialNameFromAlias(
|
||||
params.push_back(tableName);
|
||||
}
|
||||
if (!source.empty()) {
|
||||
sql += " AND source = ?";
|
||||
params.push_back(source);
|
||||
if (source == "ESRI") {
|
||||
sql += " AND source IN ('ESRI', 'ESRI_OLD')";
|
||||
} else {
|
||||
sql += " AND source = ?";
|
||||
params.push_back(source);
|
||||
}
|
||||
}
|
||||
auto res = d->run(sql, params);
|
||||
if (res.empty()) {
|
||||
@@ -9932,12 +9942,12 @@ AuthorityFactory::createProjectedCRSFromExisting(
|
||||
}
|
||||
}
|
||||
|
||||
std::string sql(
|
||||
"SELECT projected_crs.auth_name, projected_crs.code FROM projected_crs "
|
||||
"JOIN conversion_table conv ON "
|
||||
"projected_crs.conversion_auth_name = conv.auth_name AND "
|
||||
"projected_crs.conversion_code = conv.code WHERE "
|
||||
"projected_crs.deprecated = 0 AND ");
|
||||
std::string sql("SELECT projected_crs.auth_name, projected_crs.code, "
|
||||
"projected_crs.name FROM projected_crs "
|
||||
"JOIN conversion_table conv ON "
|
||||
"projected_crs.conversion_auth_name = conv.auth_name AND "
|
||||
"projected_crs.conversion_code = conv.code WHERE "
|
||||
"projected_crs.deprecated = 0 AND ");
|
||||
ListOfParams params;
|
||||
if (!candidatesGeodCRS.empty()) {
|
||||
sql += buildSqlLookForAuthNameCode(candidatesGeodCRS, params,
|
||||
@@ -10050,6 +10060,20 @@ AuthorityFactory::createProjectedCRSFromExisting(
|
||||
}
|
||||
auto sqlRes = d->run(sql, params);
|
||||
|
||||
for (const auto &row : sqlRes) {
|
||||
const auto &name = row[2];
|
||||
if (metadata::Identifier::isEquivalentName(crs->nameStr().c_str(),
|
||||
name.c_str())) {
|
||||
const auto &auth_name = row[0];
|
||||
const auto &code = row[1];
|
||||
res.emplace_back(
|
||||
d->createFactory(auth_name)->createProjectedCRS(code));
|
||||
}
|
||||
}
|
||||
if (!res.empty()) {
|
||||
return res;
|
||||
}
|
||||
|
||||
params.clear();
|
||||
|
||||
sql = "SELECT auth_name, code FROM projected_crs WHERE "
|
||||
|
||||
@@ -2412,6 +2412,8 @@ GeodeticReferenceFrameNNPtr WKTParser::Private::buildGeodeticReferenceFrame(
|
||||
codeFromAlias = "6258";
|
||||
} else if (name == "D_unknown") {
|
||||
name = "unknown";
|
||||
} else if (name == "D_Unknown_based_on_WGS_84_ellipsoid") {
|
||||
name = "Unknown based on WGS 84 ellipsoid";
|
||||
} else {
|
||||
tableNameForAlias = "geodetic_datum";
|
||||
}
|
||||
@@ -8321,6 +8323,10 @@ WKTParser::attachDatabaseContext(const DatabaseContextPtr &dbContext) {
|
||||
*/
|
||||
WKTParser::WKTGuessedDialect
|
||||
WKTParser::guessDialect(const std::string &inputWkt) noexcept {
|
||||
|
||||
// cppcheck complains (rightly) that the method could be static
|
||||
(void)this;
|
||||
|
||||
std::string wkt = inputWkt;
|
||||
std::size_t idxFirstCharNotSpace = wkt.find_first_not_of(" \t\r\n");
|
||||
if (idxFirstCharNotSpace > 0 && idxFirstCharNotSpace != std::string::npos) {
|
||||
|
||||
@@ -1352,6 +1352,13 @@ std::string Identifier::canonicalizeName(const std::string &str,
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (matchesLowerCase(c_str + i, "_IntlFeet") &&
|
||||
c_str[i + strlen("_IntlFeet")] == 0) {
|
||||
res += "feet";
|
||||
break;
|
||||
}
|
||||
|
||||
if (!isIgnoredChar(ch)) {
|
||||
res.push_back(ch);
|
||||
}
|
||||
@@ -1390,6 +1397,18 @@ bool Identifier::isEquivalentName(const char *a, const char *b,
|
||||
j += 3;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (matchesLowerCase(a + i, "_IntlFeet") &&
|
||||
a[i + strlen("_IntlFeet")] == 0 &&
|
||||
matchesLowerCase(b + j, "_Feet") && b[j + strlen("_Feet")] == 0) {
|
||||
return true;
|
||||
} else if (matchesLowerCase(a + i, "_Feet") &&
|
||||
a[i + strlen("_Feet")] == 0 &&
|
||||
matchesLowerCase(b + j, "_IntlFeet") &&
|
||||
b[j + strlen("_IntlFeet")] == 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (isIgnoredChar(aCh)) {
|
||||
++i;
|
||||
continue;
|
||||
@@ -1475,6 +1494,7 @@ bool Identifier::isEquivalentName(const char *a, const char *b,
|
||||
j += strlen(replacement->utf8) - 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (aCh != bCh) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -3891,6 +3891,8 @@ void Conversion::_exportToPROJString(
|
||||
bool bConversionDone = false;
|
||||
bool bEllipsoidParametersDone = false;
|
||||
bool useApprox = false;
|
||||
bool insertAxisWSU = false;
|
||||
bool negateScaleFactor = false;
|
||||
if (methodEPSGCode == EPSG_CODE_METHOD_TRANSVERSE_MERCATOR) {
|
||||
// Check for UTM
|
||||
int zone = 0;
|
||||
@@ -3909,7 +3911,29 @@ void Conversion::_exportToPROJString(
|
||||
if (!north) {
|
||||
formatter->addParam("south");
|
||||
}
|
||||
} else if (l_targetCRS &&
|
||||
parameterValueNumeric(
|
||||
EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN,
|
||||
common::UnitOfMeasure::SCALE_UNITY) < 0 &&
|
||||
parameterValueNumeric(EPSG_CODE_PARAMETER_FALSE_EASTING,
|
||||
common::UnitOfMeasure::METRE) == 0 &&
|
||||
parameterValueNumeric(EPSG_NAME_PARAMETER_FALSE_NORTHING,
|
||||
common::UnitOfMeasure::METRE) == 0) {
|
||||
// Deal with ESRI:102470 that use Transverse Mercator with k=-1
|
||||
// to indicate a westing-southing coordinate system, by inserting a
|
||||
// +axis=wsu and changing k to 1.
|
||||
auto projCRS =
|
||||
dynamic_cast<const crs::ProjectedCRS *>(l_targetCRS.get());
|
||||
if (projCRS) {
|
||||
const auto &axisList = projCRS->coordinateSystem()->axisList();
|
||||
if (axisList[0]->direction() == cs::AxisDirection::EAST &&
|
||||
axisList[1]->direction() == cs::AxisDirection::NORTH) {
|
||||
insertAxisWSU = true;
|
||||
negateScaleFactor = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else if (methodEPSGCode ==
|
||||
EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A) {
|
||||
const double azimuth =
|
||||
@@ -4289,6 +4313,10 @@ void Conversion::_exportToPROJString(
|
||||
}
|
||||
}
|
||||
|
||||
if (insertAxisWSU) {
|
||||
formatter->addParam("axis", "wsu");
|
||||
}
|
||||
|
||||
if (mapping->epsg_code ==
|
||||
EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B) {
|
||||
double latitudeStdParallel = parameterValueNumeric(
|
||||
@@ -4336,6 +4364,11 @@ void Conversion::_exportToPROJString(
|
||||
strcmp(param->proj_name, "lat_1") == 0) {
|
||||
formatter->addParam(param->proj_name, valueConverted);
|
||||
formatter->addParam("lat_0", valueConverted);
|
||||
} else if (
|
||||
negateScaleFactor &&
|
||||
param->epsg_code ==
|
||||
EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN) {
|
||||
formatter->addParam(param->proj_name, -valueConverted);
|
||||
} else {
|
||||
formatter->addParam(param->proj_name, valueConverted);
|
||||
}
|
||||
|
||||
@@ -6221,6 +6221,7 @@ void CoordinateOperationFactory::Private::createOperationsCompoundToGeog(
|
||||
std::map<std::string, PairOfTransforms>
|
||||
cacheHorizToInterpAndInterpToTarget;
|
||||
|
||||
bool hasVerticalTransformWithInterpGeogCRS = false;
|
||||
for (const auto &verticalTransform : verticalTransforms) {
|
||||
#ifdef TRACE_CREATE_OPERATIONS
|
||||
ENTER_BLOCK("Considering vertical transform " +
|
||||
@@ -6414,11 +6415,20 @@ void CoordinateOperationFactory::Private::createOperationsCompoundToGeog(
|
||||
verticalTransform, interpToTarget,
|
||||
interpolationGeogCRS, true);
|
||||
res.emplace_back(op);
|
||||
hasVerticalTransformWithInterpGeogCRS = true;
|
||||
} catch (const std::exception &) {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
||||
|
||||
for (const auto &verticalTransform : verticalTransforms) {
|
||||
crs::GeographicCRSPtr interpolationGeogCRS =
|
||||
getInterpolationGeogCRS(verticalTransform, dbContext);
|
||||
if (!interpolationGeogCRS &&
|
||||
(!hasVerticalTransformWithInterpGeogCRS ||
|
||||
verticalTransform->hasBallparkTransformation())) {
|
||||
// This case is probably only correct if
|
||||
// verticalTransform and horizTransform are independent
|
||||
// and in particular that verticalTransform does not
|
||||
|
||||
+1
-1
@@ -58,7 +58,7 @@ double pj_conformal_lat_inverse(double chi, double e, double threshold) {
|
||||
2 * atan(taninit *
|
||||
std::pow(((1 + esinphi) / (1 - esinphi)), (e / 2))) -
|
||||
0.5 * M_PI;
|
||||
if (abs(new_phi - phi) < threshold) {
|
||||
if (std::abs(new_phi - phi) < threshold) {
|
||||
phi = new_phi;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,5 @@
|
||||
message(STATUS "Configuring proj library:")
|
||||
|
||||
##############################################
|
||||
### SWITCH BETWEEN STATIC OR SHARED LIBRARY###
|
||||
##############################################
|
||||
|
||||
# default config is shared
|
||||
option(BUILD_SHARED_LIBS
|
||||
"Build PROJ library shared." ON)
|
||||
|
||||
find_package(Threads QUIET)
|
||||
if(Threads_FOUND AND CMAKE_USE_PTHREADS_INIT)
|
||||
add_definitions(-DPROJ_HAS_PTHREADS)
|
||||
|
||||
@@ -1696,7 +1696,8 @@ static double GetNewRetryDelay(int response_code, double dfOldDelay,
|
||||
(response_code == 400 && pszErrBuf &&
|
||||
strstr(pszErrBuf, "RequestTimeout")) ||
|
||||
(pszCurlError && strstr(pszCurlError, "Connection reset by peer")) ||
|
||||
(pszCurlError && strstr(pszCurlError, "Connection timed out"))) {
|
||||
(pszCurlError && strstr(pszCurlError, "Connection timed out")) ||
|
||||
(pszCurlError && strstr(pszCurlError, "SSL connection timeout"))) {
|
||||
// Use an exponential backoff factor of 2 plus some random jitter
|
||||
// We don't care about cryptographic quality randomness, hence:
|
||||
// coverity[dont_call]
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@ extern "C" {
|
||||
/* The version numbers should be updated with every release! **/
|
||||
#define PROJ_VERSION_MAJOR 9
|
||||
#define PROJ_VERSION_MINOR 6
|
||||
#define PROJ_VERSION_PATCH 0
|
||||
#define PROJ_VERSION_PATCH 2
|
||||
|
||||
/* Note: the following 3 defines have been introduced in PROJ 8.0.1 */
|
||||
/* Macro to compute a PROJ version number from its components */
|
||||
|
||||
@@ -594,10 +594,8 @@ struct pj_airocean_data {
|
||||
double air_ico_trans[23][4][4] = {};
|
||||
|
||||
void initialize() {
|
||||
memcpy((char *)this->ico_faces, (char *)base_ico_faces,
|
||||
sizeof(pj_face[23]));
|
||||
memcpy((char *)this->airocean_faces, (char *)base_airocean_faces,
|
||||
sizeof(pj_face[23]));
|
||||
memcpy(this->ico_faces, base_ico_faces, sizeof(pj_face[23]));
|
||||
memcpy(this->airocean_faces, base_airocean_faces, sizeof(pj_face[23]));
|
||||
memcpy(this->ico_centers, base_ico_centers, sizeof(PJ_XYZ[23]));
|
||||
memcpy(this->ico_normals, base_ico_normals, sizeof(PJ_XYZ[23]));
|
||||
memcpy(this->ico_air_trans, base_ico_air_trans,
|
||||
|
||||
@@ -87,8 +87,8 @@ PJ *PJ_PROJECTION(wag6) {
|
||||
return pj_default_destructor(P, PROJ_ERR_OTHER /*ENOMEM*/);
|
||||
P->opaque = Q;
|
||||
|
||||
Q->C_x = 0.94745;
|
||||
Q->C_y = 0.94745;
|
||||
Q->C_x = 1.0;
|
||||
Q->C_y = 1.0;
|
||||
Q->A = 0.0;
|
||||
Q->B = 0.30396355092701331433;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
#include "proj.h"
|
||||
#include "proj_internal.h"
|
||||
#include <math.h>
|
||||
#include <cmath>
|
||||
|
||||
PROJ_HEAD(robin, "Robinson") "\n\tPCyl, Sph";
|
||||
|
||||
@@ -82,7 +82,7 @@ static PJ_XY robin_s_forward(PJ_LP lp, PJ *P) { /* Spheroidal, forward */
|
||||
(void)P;
|
||||
|
||||
dphi = fabs(lp.phi);
|
||||
i = isnan(lp.phi) ? -1 : lround(floor(dphi * C1 + 1e-15));
|
||||
i = std::isnan(lp.phi) ? -1 : lround(floor(dphi * C1 + 1e-15));
|
||||
if (i < 0) {
|
||||
proj_errno_set(P, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
|
||||
return xy;
|
||||
@@ -116,7 +116,7 @@ static PJ_LP robin_s_inverse(PJ_XY xy, PJ *P) { /* Spheroidal, inverse */
|
||||
}
|
||||
} else { /* general problem */
|
||||
/* in Y space, reduce to table interval */
|
||||
long i = isnan(lp.phi) ? -1 : lround(floor(lp.phi * NODES));
|
||||
long i = std::isnan(lp.phi) ? -1 : lround(floor(lp.phi * NODES));
|
||||
if (i < 0 || i >= NODES) {
|
||||
proj_errno_set(P, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
|
||||
return lp;
|
||||
|
||||
+1
-1
@@ -8,6 +8,6 @@
|
||||
|
||||
char const pj_release[] = "Rel. " STR(PROJ_VERSION_MAJOR) "." STR(
|
||||
PROJ_VERSION_MINOR) "." STR(PROJ_VERSION_PATCH) ", "
|
||||
"March 15th, 2025";
|
||||
"June 4th, 2025";
|
||||
|
||||
const char *pj_get_release() { return pj_release; }
|
||||
|
||||
+7
-4
@@ -33,6 +33,9 @@
|
||||
#include "proj_internal.h"
|
||||
#include <math.h>
|
||||
|
||||
#include <cmath>
|
||||
#include <limits>
|
||||
|
||||
#include "proj/internal/io_internal.hpp"
|
||||
|
||||
inline bool pj_coord_has_nans(PJ_COORD coo) {
|
||||
@@ -549,19 +552,19 @@ size_t proj_trans_generic(PJ *P, PJ_DIRECTION direction, double *x, size_t sx,
|
||||
/* they tell compilers and static analyzers that we know what we do */
|
||||
if (nx > 1) {
|
||||
*x = coord.xyzt.x;
|
||||
x = (double *)((void *)(((char *)x) + sx));
|
||||
x = reinterpret_cast<double *>((reinterpret_cast<char *>(x) + sx));
|
||||
}
|
||||
if (ny > 1) {
|
||||
*y = coord.xyzt.y;
|
||||
y = (double *)((void *)(((char *)y) + sy));
|
||||
y = reinterpret_cast<double *>((reinterpret_cast<char *>(y) + sy));
|
||||
}
|
||||
if (nz > 1) {
|
||||
*z = coord.xyzt.z;
|
||||
z = (double *)((void *)(((char *)z) + sz));
|
||||
z = reinterpret_cast<double *>((reinterpret_cast<char *>(z) + sz));
|
||||
}
|
||||
if (nt > 1) {
|
||||
*t = coord.xyzt.t;
|
||||
t = (double *)((void *)(((char *)t) + st));
|
||||
t = reinterpret_cast<double *>((reinterpret_cast<char *>(t) + st));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+146
-53
@@ -29,12 +29,16 @@
|
||||
#define FROM_PROJ_CPP
|
||||
|
||||
#include "proj.h"
|
||||
#include "proj/internal/internal.hpp"
|
||||
#include "proj_internal.h"
|
||||
#include <math.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include <limits>
|
||||
|
||||
using namespace NS_PROJ::internal;
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
static double simple_min(const double *data, const int arr_len) {
|
||||
double min_value = data[0];
|
||||
@@ -296,6 +300,31 @@ static int target_crs_lon_lat_order(PJ_CONTEXT *transformer_ctx,
|
||||
PJ *target_crs =
|
||||
get_output_crs(transformer_ctx, transformer_pj, pj_direction);
|
||||
if (target_crs == nullptr) {
|
||||
const char *proj_string = proj_as_proj_string(
|
||||
transformer_ctx, transformer_pj, PJ_PROJ_5, nullptr);
|
||||
if (pj_direction == PJ_FWD) {
|
||||
if (ends_with(proj_string,
|
||||
"+step +proj=unitconvert +xy_in=rad +xy_out=deg")) {
|
||||
return true;
|
||||
}
|
||||
if (ends_with(proj_string,
|
||||
"+step +proj=unitconvert +xy_in=rad +xy_out=deg "
|
||||
"+step +proj=axisswap +order=2,1")) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (starts_with(proj_string,
|
||||
"+proj=pipeline +step +proj=unitconvert +xy_in=deg "
|
||||
"+xy_out=rad")) {
|
||||
return true;
|
||||
}
|
||||
if (starts_with(proj_string,
|
||||
"+proj=pipeline +step +proj=axisswap +order=2,1 "
|
||||
"+step +proj=unitconvert +xy_in=deg +xy_out=rad")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
proj_context_log_debug(transformer_ctx,
|
||||
"Unable to retrieve target CRS");
|
||||
return -1;
|
||||
@@ -336,16 +365,18 @@ static int target_crs_lon_lat_order(PJ_CONTEXT *transformer_ctx,
|
||||
* transformations along these edges and extracting the outermost bounds.
|
||||
*
|
||||
* If the destination CRS is geographic, the first axis is longitude,
|
||||
* and xmax < xmin then the bounds crossed the antimeridian.
|
||||
* and *out_xmax < *out_xmin then the bounds crossed the antimeridian.
|
||||
* In this scenario there are two polygons, one on each side of the
|
||||
* antimeridian. The first polygon should be constructed with (xmin, ymin, 180,
|
||||
* ymax) and the second with (-180, ymin, xmax, ymax).
|
||||
* antimeridian. The first polygon should be constructed with
|
||||
* (*out_xmin, *out_ymin, 180, ymax) and the second with
|
||||
* (-180, *out_ymin, *out_xmax, *out_ymax).
|
||||
*
|
||||
* If the destination CRS is geographic, the first axis is latitude,
|
||||
* and ymax < ymin then the bounds crossed the antimeridian.
|
||||
* and *out_ymax < *out_ymin then the bounds crossed the antimeridian.
|
||||
* In this scenario there are two polygons, one on each side of the
|
||||
* antimeridian. The first polygon should be constructed with (ymin, xmin, ymax,
|
||||
* 180) and the second with (ymin, -180, ymax, xmax).
|
||||
* antimeridian. The first polygon should be constructed with
|
||||
* (*out_ymin, *out_xmin, *out_ymax, 180) and the second with
|
||||
* (*out_ymin, -180, *out_ymax, *out_xmax).
|
||||
*
|
||||
* For transformations involving a 3D CRS, consult proj_trans_bounds_3D().
|
||||
*
|
||||
@@ -499,39 +530,64 @@ int proj_trans_bounds(PJ_CONTEXT *context, PJ *P, PJ_DIRECTION direction,
|
||||
boundary_len, y_boundary_array.data(), sizeof(double),
|
||||
boundary_len, nullptr, 0, 0, nullptr, 0, 0);
|
||||
|
||||
if (output_lon_lat_order) {
|
||||
// Use GIS frienly order
|
||||
if (degree_output && !output_lon_lat_order) {
|
||||
// Use GIS friendly order
|
||||
std::swap(x_boundary_array, y_boundary_array);
|
||||
}
|
||||
|
||||
bool crossed_antimeridian = false;
|
||||
if (!degree_output) {
|
||||
*out_xmin = simple_min(x_boundary_array.data(), boundary_len);
|
||||
*out_xmax = simple_max(x_boundary_array.data(), boundary_len);
|
||||
*out_ymin = simple_min(y_boundary_array.data(), boundary_len);
|
||||
*out_ymax = simple_max(y_boundary_array.data(), boundary_len);
|
||||
} else if (north_pole_in_bounds) {
|
||||
*out_xmin = simple_min(x_boundary_array.data(), boundary_len);
|
||||
*out_ymin = -180;
|
||||
*out_xmax = 90;
|
||||
*out_ymax = 180;
|
||||
*out_xmin = -180;
|
||||
*out_xmax = 180;
|
||||
*out_ymin = simple_min(y_boundary_array.data(), boundary_len);
|
||||
*out_ymax = 90;
|
||||
} else if (south_pole_in_bounds) {
|
||||
*out_xmin = -90;
|
||||
*out_ymin = -180;
|
||||
*out_xmax = simple_max(x_boundary_array.data(), boundary_len);
|
||||
*out_ymax = 180;
|
||||
*out_xmin = -180;
|
||||
*out_xmax = 180;
|
||||
*out_ymin = -90;
|
||||
*out_ymax = simple_max(y_boundary_array.data(), boundary_len);
|
||||
} else {
|
||||
*out_xmin = simple_min(x_boundary_array.data(), boundary_len);
|
||||
*out_xmax = simple_max(x_boundary_array.data(), boundary_len);
|
||||
*out_ymin = antimeridian_min(y_boundary_array.data(), boundary_len);
|
||||
*out_ymax = antimeridian_max(y_boundary_array.data(), boundary_len);
|
||||
*out_xmin = antimeridian_min(x_boundary_array.data(), boundary_len);
|
||||
*out_xmax = antimeridian_max(x_boundary_array.data(), boundary_len);
|
||||
crossed_antimeridian = *out_xmin > *out_xmax;
|
||||
*out_ymin = simple_min(y_boundary_array.data(), boundary_len);
|
||||
*out_ymax = simple_max(y_boundary_array.data(), boundary_len);
|
||||
}
|
||||
|
||||
if (output_lon_lat_order) {
|
||||
if (degree_output && !output_lon_lat_order) {
|
||||
// Go back to CRS axis order
|
||||
std::swap(*out_xmin, *out_ymin);
|
||||
std::swap(*out_xmax, *out_ymax);
|
||||
}
|
||||
|
||||
if (!crossed_antimeridian) {
|
||||
// Sample points within the source grid
|
||||
for (int j = 1; j < side_pts - 1; ++j) {
|
||||
for (int i = 0; i < side_pts; ++i) {
|
||||
x_boundary_array[i] = std::min(xmin, xmax) + i * delta_x;
|
||||
y_boundary_array[i] = std::min(ymin, ymax) + j * delta_y;
|
||||
}
|
||||
proj_trans_generic(P, direction, x_boundary_array.data(),
|
||||
sizeof(double), side_pts,
|
||||
y_boundary_array.data(), sizeof(double),
|
||||
side_pts, nullptr, 0, 0, nullptr, 0, 0);
|
||||
for (int i = 0; i < side_pts; ++i) {
|
||||
if (std::isfinite(x_boundary_array[i]) &&
|
||||
std::isfinite(y_boundary_array[i])) {
|
||||
*out_xmin = std::min(*out_xmin, x_boundary_array[i]);
|
||||
*out_xmax = std::max(*out_xmax, x_boundary_array[i]);
|
||||
*out_ymin = std::min(*out_ymin, y_boundary_array[i]);
|
||||
*out_ymax = std::max(*out_ymax, y_boundary_array[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -830,11 +886,13 @@ int proj_trans_bounds_3D(PJ_CONTEXT *context, PJ *P, PJ_DIRECTION direction,
|
||||
boundary_len, z_boundary_array.data(),
|
||||
sizeof(double), boundary_len, nullptr, 0, 0);
|
||||
|
||||
if (output_lon_lat_order) {
|
||||
// Use GIS frienly order
|
||||
if (degree_output && !output_lon_lat_order) {
|
||||
// Use GIS friendly order
|
||||
std::swap(x_boundary_array, y_boundary_array);
|
||||
}
|
||||
|
||||
bool crossed_antimeridian = false;
|
||||
|
||||
if (!degree_output) {
|
||||
*out_xmin =
|
||||
std::min(*out_xmin,
|
||||
@@ -849,45 +907,80 @@ int proj_trans_bounds_3D(PJ_CONTEXT *context, PJ *P, PJ_DIRECTION direction,
|
||||
std::max(*out_ymax,
|
||||
simple_max(y_boundary_array.data(), boundary_len));
|
||||
} else if (north_pole_in_bounds) {
|
||||
*out_xmin =
|
||||
std::min(*out_xmin,
|
||||
simple_min(x_boundary_array.data(), boundary_len));
|
||||
*out_ymin = -180;
|
||||
*out_xmax = 90;
|
||||
*out_ymax = 180;
|
||||
*out_xmin = -180;
|
||||
*out_xmax = 180;
|
||||
*out_ymin =
|
||||
std::min(*out_ymin,
|
||||
simple_min(y_boundary_array.data(), boundary_len));
|
||||
*out_ymax = 90;
|
||||
} else if (south_pole_in_bounds) {
|
||||
*out_xmin = -90;
|
||||
*out_ymin = -180;
|
||||
*out_xmax =
|
||||
std::max(*out_xmax,
|
||||
simple_max(x_boundary_array.data(), boundary_len));
|
||||
*out_ymax = 180;
|
||||
*out_xmin = -180;
|
||||
*out_xmax = 180;
|
||||
*out_ymin = -90;
|
||||
*out_ymax =
|
||||
std::max(*out_ymax,
|
||||
simple_max(y_boundary_array.data(), boundary_len));
|
||||
} else {
|
||||
*out_xmin =
|
||||
std::min(*out_xmin,
|
||||
simple_min(x_boundary_array.data(), boundary_len));
|
||||
*out_xmax =
|
||||
std::max(*out_xmax,
|
||||
simple_max(x_boundary_array.data(), boundary_len));
|
||||
*out_ymin = std::min(
|
||||
*out_ymin,
|
||||
antimeridian_min(y_boundary_array.data(), boundary_len));
|
||||
*out_ymax = std::max(
|
||||
*out_ymax,
|
||||
antimeridian_max(y_boundary_array.data(), boundary_len));
|
||||
*out_xmin = std::min(
|
||||
*out_xmin,
|
||||
antimeridian_min(x_boundary_array.data(), boundary_len));
|
||||
*out_xmax = std::max(
|
||||
*out_xmax,
|
||||
antimeridian_max(x_boundary_array.data(), boundary_len));
|
||||
crossed_antimeridian = *out_xmin > *out_xmax;
|
||||
*out_ymin =
|
||||
std::min(*out_ymin,
|
||||
simple_min(y_boundary_array.data(), boundary_len));
|
||||
*out_ymax =
|
||||
std::max(*out_ymax,
|
||||
simple_max(y_boundary_array.data(), boundary_len));
|
||||
}
|
||||
|
||||
*out_zmin = std::min(
|
||||
*out_zmin, simple_min(z_boundary_array.data(), boundary_len));
|
||||
*out_zmax = std::max(
|
||||
*out_zmax, simple_max(z_boundary_array.data(), boundary_len));
|
||||
}
|
||||
}
|
||||
|
||||
if (output_lon_lat_order) {
|
||||
// Go back to CRS axis order
|
||||
std::swap(*out_xmin, *out_ymin);
|
||||
std::swap(*out_xmax, *out_ymax);
|
||||
if (degree_output && !output_lon_lat_order) {
|
||||
// Go back to CRS axis order
|
||||
std::swap(*out_xmin, *out_ymin);
|
||||
std::swap(*out_xmax, *out_ymax);
|
||||
}
|
||||
|
||||
if (!crossed_antimeridian) {
|
||||
// Sample points within the source grid
|
||||
for (int j = 1; j < side_pts - 1; ++j) {
|
||||
for (int i = 0; i < side_pts; ++i) {
|
||||
x_boundary_array[i] = xmin + i * delta_x;
|
||||
y_boundary_array[i] = ymin + j * delta_y;
|
||||
z_boundary_array[i] = z;
|
||||
}
|
||||
proj_trans_generic(P, direction, x_boundary_array.data(),
|
||||
sizeof(double), side_pts,
|
||||
y_boundary_array.data(), sizeof(double),
|
||||
side_pts, z_boundary_array.data(),
|
||||
sizeof(double), side_pts, nullptr, 0, 0);
|
||||
for (int i = 0; i < side_pts; ++i) {
|
||||
if (std::isfinite(x_boundary_array[i]) &&
|
||||
std::isfinite(y_boundary_array[i])) {
|
||||
*out_xmin =
|
||||
std::min(*out_xmin, x_boundary_array[i]);
|
||||
*out_xmax =
|
||||
std::max(*out_xmax, x_boundary_array[i]);
|
||||
*out_ymin =
|
||||
std::min(*out_ymin, y_boundary_array[i]);
|
||||
*out_ymax =
|
||||
std::max(*out_ymax, y_boundary_array[i]);
|
||||
|
||||
*out_zmin =
|
||||
std::min(*out_zmin, z_boundary_array[i]);
|
||||
*out_zmax =
|
||||
std::max(*out_zmax, z_boundary_array[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
#error "Should be included only by defmodel.hpp"
|
||||
#endif
|
||||
|
||||
#include <algorithm>
|
||||
#include <limits>
|
||||
|
||||
namespace DEFORMATON_MODEL_NAMESPACE {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
@@ -640,12 +640,11 @@ PJ *PJ_PROJECTION(horner) {
|
||||
}
|
||||
}
|
||||
|
||||
if (0 == parse_coefs(P, (double *)(Q->fwd_origin), "fwd_origin", 2)) {
|
||||
if (0 == parse_coefs(P, &(Q->fwd_origin->u), "fwd_origin", 2)) {
|
||||
proj_log_error(P, _("missing fwd_origin"));
|
||||
return horner_freeup(P, PROJ_ERR_INVALID_OP_MISSING_ARG);
|
||||
}
|
||||
if (has_inv &&
|
||||
0 == parse_coefs(P, (double *)(Q->inv_origin), "inv_origin", 2)) {
|
||||
if (has_inv && 0 == parse_coefs(P, &(Q->inv_origin->u), "inv_origin", 2)) {
|
||||
proj_log_error(P, _("missing inv_origin"));
|
||||
return horner_freeup(P, PROJ_ERR_INVALID_OP_MISSING_ARG);
|
||||
}
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
#error "Should be included only by tinshift.hpp"
|
||||
#endif
|
||||
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include <limits>
|
||||
|
||||
namespace TINSHIFT_NAMESPACE {
|
||||
|
||||
@@ -1811,11 +1811,10 @@ tests:
|
||||
- args: --list-crs geographic_2d,allow_deprecated --bbox -100,40,-90,41 --spatial-test intersects
|
||||
grep:
|
||||
- deprecated
|
||||
- NAD83\(FBN\)|GCS_IGS08
|
||||
- NAD83\(FBN\)
|
||||
sort:
|
||||
out: |
|
||||
EPSG:8449 "NAD83(FBN)" [deprecated]
|
||||
ESRI:104010 "GCS_IGS08" [deprecated]
|
||||
- args: --list-crs projected --bbox -100,40,-90,41 --spatial-test intersects
|
||||
grep: (2011).*Missouri East|York
|
||||
sort:
|
||||
@@ -1934,3 +1933,13 @@ tests:
|
||||
- args: -s "Christmas Island Grid 1985" -t "Christmas Island Grid 1985" -o PROJ -q
|
||||
out: |
|
||||
+proj=noop
|
||||
- comment: Test bugfix of https://github.com/OSGeo/PROJ/issues/4464 (NAD83(CSRS) to NAD83(CSRS)v2 should not go through NAD83)
|
||||
args: -s "NAD83(CSRS)" -t "NAD83(CSRS)v2" --spatial-test intersects --summary
|
||||
out: |
|
||||
Candidate operations found: 1
|
||||
unknown id, Ballpark geographic offset from NAD83(CSRS) to NAD83(CSRS)v2, unknown accuracy, Canada - onshore and offshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon., has ballpark transformation
|
||||
- comment: Test that EPSG:4979 to EPSG:10645 does not include a non-sensical 'Inverse of Inverse of BES2020 Saba to Saba height (1) + Inverse of Saba to WGS 84 (1) + Saba Transverse Mercator 2020'
|
||||
args: -s EPSG:4979 -t EPSG:10645 --hide-ballpark --summary
|
||||
out: |
|
||||
Candidate operations found: 1
|
||||
unknown id, Inverse of Saba to WGS 84 (1) + Saba to Saba height (1) + Saba Transverse Mercator 2020, 1.2 m, Bonaire, Sint Eustatius and Saba (BES Islands or Caribbean Netherlands) - Saba - onshore.
|
||||
|
||||
+13
-13
@@ -1286,7 +1286,7 @@ expect failure
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
operation +proj=airocean +orient=horizontal +ellps=GRS80
|
||||
operation +proj=airocean +orient=horizontal +ellps=GRS80
|
||||
-------------------------------------------------------------------------------
|
||||
tolerance 0.1 mm
|
||||
accept 23 28
|
||||
@@ -7948,24 +7948,24 @@ expect -0.001968072 -0.000721216
|
||||
operation +proj=wag6 +a=6400000
|
||||
-------------------------------------------------------------------------------
|
||||
tolerance 0.1 mm
|
||||
accept 2 1
|
||||
expect 211652.562164410 105831.180787330
|
||||
accept 2 -1
|
||||
expect 211652.562164410 -105831.180787330
|
||||
accept 2 1
|
||||
expect 223391.801323985 111701.072127637
|
||||
accept 2 -1
|
||||
expect 223391.801323985 -111701.072127637
|
||||
accept -2 1
|
||||
expect -211652.562164410 105831.180787330
|
||||
expect -223391.801323985 111701.072127637
|
||||
accept -2 -1
|
||||
expect -211652.562164410 -105831.180787330
|
||||
expect -223391.801323985 -111701.072127637
|
||||
|
||||
direction inverse
|
||||
accept 200 100
|
||||
expect 0.001889802 0.000944901
|
||||
accept 200 -100
|
||||
expect 0.001889802 -0.000944901
|
||||
accept 200 100
|
||||
expect 0.001790493 0.000895247
|
||||
accept 200 -100
|
||||
expect 0.001790493 -0.000895247
|
||||
accept -200 100
|
||||
expect -0.001889802 0.000944901
|
||||
expect -0.001790493 0.000895247
|
||||
accept -200 -100
|
||||
expect -0.001889802 -0.000944901
|
||||
expect -0.001790493 -0.000895247
|
||||
|
||||
|
||||
===============================================================================
|
||||
|
||||
+256
-7
@@ -6223,8 +6223,8 @@ TEST_F(CApi, proj_trans_bounds_antimeridian_xy) {
|
||||
&out_right, &out_top, 21);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(out_left, 1722483.900174921, 1);
|
||||
EXPECT_NEAR(out_bottom, 5228058.6143420935, 1);
|
||||
EXPECT_NEAR(out_right, 4624385.494808555, 1);
|
||||
EXPECT_NEAR(out_bottom, 4795714.1718160734, 1);
|
||||
EXPECT_NEAR(out_right, 7095599.9757999768, 1);
|
||||
EXPECT_NEAR(out_top, 8692574.544944234, 1);
|
||||
double out_left_inv;
|
||||
double out_bottom_inv;
|
||||
@@ -6255,10 +6255,10 @@ TEST_F(CApi, proj_trans_bounds_antimeridian) {
|
||||
proj_trans_bounds(m_ctxt, P, PJ_FWD, -55.95, 160.6, -25.88, -171.2,
|
||||
&out_left, &out_bottom, &out_right, &out_top, 21);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(out_left, 5228058.6143420935, 1);
|
||||
EXPECT_NEAR(out_left, 4695514.1225397848, 1);
|
||||
EXPECT_NEAR(out_bottom, 1722483.900174921, 1);
|
||||
EXPECT_NEAR(out_right, 8692574.544944234, 1);
|
||||
EXPECT_NEAR(out_top, 4624385.494808555, 1);
|
||||
EXPECT_NEAR(out_top, 7053083.9457852989, 1);
|
||||
double out_left_inv;
|
||||
double out_bottom_inv;
|
||||
double out_right_inv;
|
||||
@@ -6327,10 +6327,10 @@ TEST_F(CApi, proj_trans_bounds_ignore_inf) {
|
||||
proj_trans_bounds(m_ctxt, P, PJ_FWD, -180.0, -90.0, 180.0, 1.3,
|
||||
&out_left, &out_bottom, &out_right, &out_top, 21);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(out_left, 0, 1);
|
||||
EXPECT_NEAR(out_left, -49621755.4, 1);
|
||||
EXPECT_NEAR(out_bottom, -116576598.5, 1);
|
||||
EXPECT_NEAR(out_right, 0, 1);
|
||||
EXPECT_NEAR(out_top, 0, 1);
|
||||
EXPECT_NEAR(out_right, 49621755.4, 1);
|
||||
EXPECT_NEAR(out_top, 50132027.2, 1);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -6543,6 +6543,204 @@ TEST_F(CApi, proj_trans_bounds_to_compound_crs) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST_F(CApi, proj_trans_bounds_from_pipeline_lon_lat_to_x_y) {
|
||||
// EPSG:4326 to EPSG:3844 in GIS friendly order
|
||||
auto P = proj_create(
|
||||
m_ctxt,
|
||||
"+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=2.329 +y=-147.042 +z=-92.08 +rx=0.309 +ry=-0.325 "
|
||||
"+rz=-0.497 +s=5.69 +convention=coordinate_frame +step +inv +proj=cart "
|
||||
"+ellps=krass +step +proj=pop +v_3 +step +proj=sterea +lat_0=46 "
|
||||
"+lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 +ellps=krass");
|
||||
ObjectKeeper keeper_P(P);
|
||||
ASSERT_NE(P, nullptr);
|
||||
{
|
||||
double out_left;
|
||||
double out_bottom;
|
||||
double out_right;
|
||||
double out_top;
|
||||
int success =
|
||||
proj_trans_bounds(m_ctxt, P, PJ_INV, 4e5, 4e5, 4.5e5, 4.5e5,
|
||||
&out_left, &out_bottom, &out_right, &out_top, 21);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(out_left, 23.717708, 1e-6);
|
||||
EXPECT_NEAR(out_bottom, 45.092624, 1e-6);
|
||||
EXPECT_NEAR(out_right, 24.363125, 1e-6);
|
||||
EXPECT_NEAR(out_top, 45.547942, 1e-6);
|
||||
}
|
||||
{
|
||||
double out_left;
|
||||
double out_bottom;
|
||||
double out_right;
|
||||
double out_top;
|
||||
int success = proj_trans_bounds(m_ctxt, P, PJ_FWD, 23.717708, 45.092624,
|
||||
24.363125, 45.547942, &out_left,
|
||||
&out_bottom, &out_right, &out_top, 21);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(out_left, 4e5, 1e3);
|
||||
EXPECT_NEAR(out_bottom, 4e5, 1e3);
|
||||
EXPECT_NEAR(out_right, 4.5e5, 1e3);
|
||||
EXPECT_NEAR(out_top, 4.5e5, 1e3);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST_F(CApi, proj_trans_bounds_from_pipeline_lat_lon_to_x_y) {
|
||||
// EPSG:4326 to EPSG:3844 in authority compliant axis order
|
||||
auto P = proj_create(
|
||||
m_ctxt,
|
||||
"+proj=pipeline +step +proj=axisswap +order=2,1 +step "
|
||||
"+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=push +v_3 +step "
|
||||
"+proj=cart +ellps=WGS84 +step +inv +proj=helmert +x=2.329 +y=-147.042 "
|
||||
"+z=-92.08 +rx=0.309 +ry=-0.325 +rz=-0.497 +s=5.69 "
|
||||
"+convention=coordinate_frame +step +inv +proj=cart +ellps=krass +step "
|
||||
"+proj=pop +v_3 +step +proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 "
|
||||
"+x_0=500000 +y_0=500000 +ellps=krass +step +proj=axisswap +order=2,1");
|
||||
ObjectKeeper keeper_P(P);
|
||||
ASSERT_NE(P, nullptr);
|
||||
{
|
||||
double out_left;
|
||||
double out_bottom;
|
||||
double out_right;
|
||||
double out_top;
|
||||
int success =
|
||||
proj_trans_bounds(m_ctxt, P, PJ_INV, 4e5, 4e5, 4.5e5, 4.5e5,
|
||||
&out_left, &out_bottom, &out_right, &out_top, 21);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(out_left, 45.092624, 1e-6);
|
||||
EXPECT_NEAR(out_bottom, 23.717708, 1e-6);
|
||||
EXPECT_NEAR(out_right, 45.547942, 1e-6);
|
||||
EXPECT_NEAR(out_top, 24.363125, 1e-6);
|
||||
}
|
||||
{
|
||||
double out_left;
|
||||
double out_bottom;
|
||||
double out_right;
|
||||
double out_top;
|
||||
int success = proj_trans_bounds(m_ctxt, P, PJ_FWD, 45.092624, 23.717708,
|
||||
45.547942, 24.363125, &out_left,
|
||||
&out_bottom, &out_right, &out_top, 21);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(out_left, 4e5, 1e3);
|
||||
EXPECT_NEAR(out_bottom, 4e5, 1e3);
|
||||
EXPECT_NEAR(out_right, 4.5e5, 1e3);
|
||||
EXPECT_NEAR(out_top, 4.5e5, 1e3);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST_F(CApi, proj_trans_bounds_from_pipeline_x_y_to_lon_lat) {
|
||||
// EPSG:3844 to EPSG:4326 in GIS friendly order
|
||||
auto P = proj_create(
|
||||
m_ctxt,
|
||||
"+proj=pipeline +step +inv +proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 "
|
||||
"+x_0=500000 +y_0=500000 +ellps=krass +step +proj=push +v_3 +step "
|
||||
"+proj=cart +ellps=krass +step +proj=helmert +x=2.329 +y=-147.042 "
|
||||
"+z=-92.08 +rx=0.309 +ry=-0.325 +rz=-0.497 +s=5.69 "
|
||||
"+convention=coordinate_frame +step +inv +proj=cart +ellps=WGS84 +step "
|
||||
"+proj=pop +v_3 +step +proj=unitconvert +xy_in=rad +xy_out=deg");
|
||||
ObjectKeeper keeper_P(P);
|
||||
ASSERT_NE(P, nullptr);
|
||||
{
|
||||
double out_left;
|
||||
double out_bottom;
|
||||
double out_right;
|
||||
double out_top;
|
||||
int success =
|
||||
proj_trans_bounds(m_ctxt, P, PJ_FWD, 4e5, 4e5, 4.5e5, 4.5e5,
|
||||
&out_left, &out_bottom, &out_right, &out_top, 21);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(out_left, 23.717708, 1e-6);
|
||||
EXPECT_NEAR(out_bottom, 45.092624, 1e-6);
|
||||
EXPECT_NEAR(out_right, 24.363125, 1e-6);
|
||||
EXPECT_NEAR(out_top, 45.547942, 1e-6);
|
||||
}
|
||||
{
|
||||
double out_left;
|
||||
double out_bottom;
|
||||
double out_right;
|
||||
double out_top;
|
||||
int success = proj_trans_bounds(m_ctxt, P, PJ_INV, 23.717708, 45.092624,
|
||||
24.363125, 45.547942, &out_left,
|
||||
&out_bottom, &out_right, &out_top, 21);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(out_left, 4e5, 1e3);
|
||||
EXPECT_NEAR(out_bottom, 4e5, 1e3);
|
||||
EXPECT_NEAR(out_right, 4.5e5, 1e3);
|
||||
EXPECT_NEAR(out_top, 4.5e5, 1e3);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST_F(CApi, proj_trans_bounds_from_pipeline_x_y_to_lat_lon) {
|
||||
// EPSG:3844 to EPSG:4326 in authority compliant axis order
|
||||
auto P = proj_create(
|
||||
m_ctxt,
|
||||
"+proj=pipeline +step +proj=axisswap +order=2,1 +step +inv "
|
||||
"+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 +y_0=500000 "
|
||||
"+ellps=krass +step +proj=push +v_3 +step +proj=cart +ellps=krass "
|
||||
"+step +proj=helmert +x=2.329 +y=-147.042 +z=-92.08 +rx=0.309 "
|
||||
"+ry=-0.325 +rz=-0.497 +s=5.69 +convention=coordinate_frame +step +inv "
|
||||
"+proj=cart +ellps=WGS84 +step +proj=pop +v_3 +step +proj=unitconvert "
|
||||
"+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1");
|
||||
ObjectKeeper keeper_P(P);
|
||||
ASSERT_NE(P, nullptr);
|
||||
{
|
||||
double out_left;
|
||||
double out_bottom;
|
||||
double out_right;
|
||||
double out_top;
|
||||
int success =
|
||||
proj_trans_bounds(m_ctxt, P, PJ_FWD, 4e5, 4e5, 4.5e5, 4.5e5,
|
||||
&out_left, &out_bottom, &out_right, &out_top, 21);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(out_left, 45.092624, 1e-6);
|
||||
EXPECT_NEAR(out_bottom, 23.717708, 1e-6);
|
||||
EXPECT_NEAR(out_right, 45.547942, 1e-6);
|
||||
EXPECT_NEAR(out_top, 24.363125, 1e-6);
|
||||
}
|
||||
{
|
||||
double out_left;
|
||||
double out_bottom;
|
||||
double out_right;
|
||||
double out_top;
|
||||
int success = proj_trans_bounds(m_ctxt, P, PJ_INV, 45.092624, 23.717708,
|
||||
45.547942, 24.363125, &out_left,
|
||||
&out_bottom, &out_right, &out_top, 21);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(out_left, 4e5, 1e3);
|
||||
EXPECT_NEAR(out_bottom, 4e5, 1e3);
|
||||
EXPECT_NEAR(out_right, 4.5e5, 1e3);
|
||||
EXPECT_NEAR(out_top, 4.5e5, 1e3);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST_F(CApi, proj_trans_bounds_world_geodetic_to_spilhaus) {
|
||||
auto P = proj_create_crs_to_crs(m_ctxt, "OGC:CRS84", "ESRI:54099", nullptr);
|
||||
ObjectKeeper keeper_P(P);
|
||||
ASSERT_NE(P, nullptr);
|
||||
double out_left;
|
||||
double out_bottom;
|
||||
double out_right;
|
||||
double out_top;
|
||||
int success =
|
||||
proj_trans_bounds(m_ctxt, P, PJ_FWD, -180.0, -90.0, 180.0, 90.0,
|
||||
&out_left, &out_bottom, &out_right, &out_top, 21);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(out_left, -16336432.4, 1);
|
||||
EXPECT_NEAR(out_bottom, -16605405.9, 1);
|
||||
EXPECT_NEAR(out_right, 16574104.3, 1);
|
||||
EXPECT_NEAR(out_top, 16640152.9, 1);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST_F(CApi, proj_trans_bounds_3d_densify_0_geog3D_to_proj2D) {
|
||||
auto P =
|
||||
proj_create_crs_to_crs(m_ctxt, "EPSG:4979",
|
||||
@@ -6667,6 +6865,57 @@ TEST_F(CApi, proj_trans_bounds_3d_geocentric_to_geog3D) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST_F(CApi, proj_trans_bounds_3d_geocentric_to_geog2D_lon_lat_ordered) {
|
||||
auto P = proj_create_crs_to_crs(
|
||||
m_ctxt, "EPSG:4978", "+proj=longlat +datum=WGS84 +type=crs", nullptr);
|
||||
ObjectKeeper keeper_P(P);
|
||||
ASSERT_NE(P, nullptr);
|
||||
double xmin;
|
||||
double ymin;
|
||||
double xmax;
|
||||
double ymax;
|
||||
double zmin;
|
||||
double zmax;
|
||||
int success = proj_trans_bounds_3D(
|
||||
m_ctxt, P, PJ_FWD, 4102234.41, 143362.39, 4790558.75, 4189946.59,
|
||||
219418.53, 4862865.64, &xmin, &ymin, &zmin, &xmax, &ymax, &zmax, 2);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(xmin, 2, .15);
|
||||
EXPECT_NEAR(ymin, 49., .15);
|
||||
EXPECT_NEAR(xmax, 3., .15);
|
||||
EXPECT_NEAR(ymax, 50, .15);
|
||||
EXPECT_NEAR(zmin, -57187, 1);
|
||||
EXPECT_NEAR(zmax, 56862.2, 1);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST_F(CApi, proj_trans_bounds_3D_ignore_inf) {
|
||||
// cf proj_trans_bounds_ignore_inf
|
||||
auto P =
|
||||
proj_create_crs_to_crs(m_ctxt, "OGC:CRS84", "ESRI:102036", nullptr);
|
||||
ObjectKeeper keeper_P(P);
|
||||
ASSERT_NE(P, nullptr);
|
||||
double out_left;
|
||||
double out_bottom;
|
||||
double out_right;
|
||||
double out_top;
|
||||
double z_min;
|
||||
double z_max;
|
||||
int success = proj_trans_bounds_3D(
|
||||
m_ctxt, P, PJ_FWD, -180.0, -90.0, 0, 180.0, 1.3, 0, &out_left,
|
||||
&out_bottom, &z_min, &out_right, &out_top, &z_max, 21);
|
||||
EXPECT_TRUE(success == 1);
|
||||
EXPECT_NEAR(out_left, -49621755.4, 1);
|
||||
EXPECT_NEAR(out_bottom, -116576598.5, 1);
|
||||
EXPECT_NEAR(out_right, 49621755.4, 1);
|
||||
EXPECT_NEAR(out_top, 50132027.2, 1);
|
||||
EXPECT_NEAR(z_min, 0, 1);
|
||||
EXPECT_NEAR(z_max, 0, 1);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST_F(CApi, proj_crs_has_point_motion_operation) {
|
||||
auto ctxt = proj_create_operation_factory_context(m_ctxt, nullptr);
|
||||
ASSERT_NE(ctxt, nullptr);
|
||||
|
||||
+28
-5
@@ -3147,8 +3147,7 @@ TEST(crs, projectedCRS_identify_db) {
|
||||
"PARAMETER[\"Latitude_Of_Origin\",33],UNIT[\"Meter\",1.0]]");
|
||||
auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
|
||||
ASSERT_TRUE(crs != nullptr);
|
||||
auto factoryAll = AuthorityFactory::create(dbContext, std::string());
|
||||
auto res = crs->identify(factoryAll);
|
||||
auto res = crs->identify(factoryEPSG);
|
||||
ASSERT_EQ(res.size(), 1U);
|
||||
EXPECT_EQ(res.front().first->getEPSGCode(), 6670);
|
||||
EXPECT_EQ(res.front().second, 90);
|
||||
@@ -3519,9 +3518,33 @@ TEST(crs, projectedCRS_identify_db) {
|
||||
auto allFactory = AuthorityFactory::create(dbContext, std::string());
|
||||
auto res = crs->identify(allFactory);
|
||||
ASSERT_GE(res.size(), 1U);
|
||||
EXPECT_EQ(res.front().first->identifiers()[0]->code(), "102082");
|
||||
EXPECT_EQ(*(res.front().first->identifiers()[0]->codeSpace()), "ESRI");
|
||||
EXPECT_EQ(res.front().second, 90);
|
||||
EXPECT_EQ(res.front().first->identifiers()[0]->code(), "5186");
|
||||
EXPECT_EQ(*(res.front().first->identifiers()[0]->codeSpace()), "EPSG");
|
||||
EXPECT_EQ(res.front().second, 100);
|
||||
}
|
||||
{
|
||||
// Identify a WKT ESRI using deprecated ESRI names
|
||||
// Cf https://github.com/OSGeo/gdal/issues/12511
|
||||
auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT(
|
||||
"PROJCS[\"NAD_1983_StatePlane_Arizona_Central_FIPS_0202_IntlFeet\","
|
||||
"GEOGCS[\"GCS_North_American_1983\","
|
||||
"DATUM[\"D_North_American_1983\","
|
||||
"SPHEROID[\"GRS_1980\",6378137.0,298.257222101]],"
|
||||
"PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],"
|
||||
"PROJECTION[\"Transverse_Mercator\"],"
|
||||
"PARAMETER[\"False_Easting\",700000.0],"
|
||||
"PARAMETER[\"False_Northing\",0.0],"
|
||||
"PARAMETER[\"Central_Meridian\",-111.9166666666667],"
|
||||
"PARAMETER[\"Scale_Factor\",0.9999],"
|
||||
"PARAMETER[\"Latitude_Of_Origin\",31.0],UNIT[\"Foot\",0.3048]]");
|
||||
auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
|
||||
ASSERT_TRUE(crs != nullptr);
|
||||
auto allFactory = AuthorityFactory::create(dbContext, std::string());
|
||||
auto res = crs->identify(allFactory);
|
||||
ASSERT_GE(res.size(), 1U);
|
||||
EXPECT_EQ(res.front().first->identifiers()[0]->code(), "2223");
|
||||
EXPECT_EQ(*(res.front().first->identifiers()[0]->codeSpace()), "EPSG");
|
||||
EXPECT_EQ(res.front().second, 70);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -317,6 +317,39 @@ TEST(datum, unknown_datum) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(datum, compare_with_D_prefixing) {
|
||||
auto my_datum = GeodeticReferenceFrame::create(
|
||||
PropertyMap().set(IdentifiedObject::NAME_KEY, "my_datum"),
|
||||
Ellipsoid::GRS1980, optional<std::string>(), optional<Measure>(),
|
||||
PrimeMeridian::GREENWICH);
|
||||
auto d_my_datum = GeodeticReferenceFrame::create(
|
||||
PropertyMap().set(IdentifiedObject::NAME_KEY, "D_my_datum"),
|
||||
Ellipsoid::GRS1980, optional<std::string>(), optional<Measure>(),
|
||||
PrimeMeridian::GREENWICH);
|
||||
|
||||
EXPECT_FALSE(my_datum->isEquivalentTo(d_my_datum.get(),
|
||||
IComparable::Criterion::STRICT));
|
||||
EXPECT_TRUE(my_datum->isEquivalentTo(d_my_datum.get(),
|
||||
IComparable::Criterion::EQUIVALENT));
|
||||
EXPECT_FALSE(d_my_datum->isEquivalentTo(my_datum.get(),
|
||||
IComparable::Criterion::STRICT));
|
||||
EXPECT_TRUE(d_my_datum->isEquivalentTo(my_datum.get(),
|
||||
IComparable::Criterion::EQUIVALENT));
|
||||
|
||||
auto d_other_datum = GeodeticReferenceFrame::create(
|
||||
PropertyMap().set(IdentifiedObject::NAME_KEY, "D_other_datum"),
|
||||
Ellipsoid::GRS1980, optional<std::string>(), optional<Measure>(),
|
||||
PrimeMeridian::GREENWICH);
|
||||
EXPECT_FALSE(my_datum->isEquivalentTo(d_other_datum.get(),
|
||||
IComparable::Criterion::EQUIVALENT));
|
||||
EXPECT_FALSE(d_my_datum->isEquivalentTo(
|
||||
d_other_datum.get(), IComparable::Criterion::EQUIVALENT));
|
||||
EXPECT_FALSE(d_other_datum->isEquivalentTo(
|
||||
my_datum.get(), IComparable::Criterion::EQUIVALENT));
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(datum, dynamic_geodetic_reference_frame) {
|
||||
auto drf = DynamicGeodeticReferenceFrame::create(
|
||||
PropertyMap().set(IdentifiedObject::NAME_KEY, "test"), Ellipsoid::WGS84,
|
||||
|
||||
+14
-1
@@ -896,7 +896,7 @@ TEST(wkt_parse, wkt1_non_conformant_inf_inverse_flattening) {
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(wkt_parse, wkt1_esri_GCS_unknown_D_unknown) {
|
||||
auto obj = WKTParser().setStrict(false).createFromWKT(
|
||||
auto obj = WKTParser().createFromWKT(
|
||||
"GEOGCS[\"GCS_unknown\",DATUM[\"D_unknown\","
|
||||
"SPHEROID[\"unknown\",6370997,0]],"
|
||||
"PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]]");
|
||||
@@ -908,6 +908,19 @@ TEST(wkt_parse, wkt1_esri_GCS_unknown_D_unknown) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(wkt_parse, wkt1_esri_GCS_unknown_D_Unknown_based_on_WGS_84_ellipsoid) {
|
||||
auto obj = WKTParser().createFromWKT(
|
||||
"GEOGCS[\"GCS_unknown\",DATUM[\"D_Unknown_based_on_WGS_84_ellipsoid\","
|
||||
"SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],"
|
||||
"PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]");
|
||||
auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj);
|
||||
ASSERT_TRUE(crs != nullptr);
|
||||
EXPECT_EQ(crs->nameStr(), "unknown");
|
||||
EXPECT_EQ(crs->datum()->nameStr(), "Unknown based on WGS 84 ellipsoid");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(wkt_parse, wkt2_GEODCRS_EPSG_4326) {
|
||||
auto obj = WKTParser().createFromWKT("GEODCRS" + contentWKT2_EPSG_4326);
|
||||
auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj);
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
|
||||
#include "gtest_include.h"
|
||||
|
||||
#include <limits>
|
||||
|
||||
#include "proj/io.hpp"
|
||||
#include "proj/metadata.hpp"
|
||||
#include "proj/util.hpp"
|
||||
@@ -512,4 +514,11 @@ TEST(metadata, Identifier_isEquivalentName) {
|
||||
EXPECT_TRUE(Identifier::isEquivalentName("foo + ", "foo + "));
|
||||
EXPECT_TRUE(Identifier::isEquivalentName("foo + bar", "foo + bar"));
|
||||
EXPECT_TRUE(Identifier::isEquivalentName("foo + bar", "foobar"));
|
||||
|
||||
EXPECT_TRUE(Identifier::isEquivalentName("foo_IntlFeet", "foo_Feet"));
|
||||
EXPECT_TRUE(Identifier::isEquivalentName("foo_Feet", "foo_IntlFeet"));
|
||||
EXPECT_FALSE(
|
||||
Identifier::isEquivalentName("foo_IntlFeet_bar", "foo_Feet_bar"));
|
||||
EXPECT_FALSE(
|
||||
Identifier::isEquivalentName("foo_Feet_bar", "foo_IntlFeet_bar"));
|
||||
}
|
||||
|
||||
@@ -1416,6 +1416,30 @@ TEST(operation, tmerc_south_oriented_export) {
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(operation, tmerc_south_oriented_export_esri_102470) {
|
||||
|
||||
// South Orientated TMerc presented as regular TMerc but with
|
||||
// Scale_Factor=-1
|
||||
auto wkt = "PROJCS[\"Cape_Lo15\",GEOGCS[\"GCS_Cape\",DATUM[\"D_Cape\","
|
||||
"SPHEROID[\"Clarke_1880_Arc\",6378249.145,293.4663077]],"
|
||||
"PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],"
|
||||
"PROJECTION[\"Transverse_Mercator\"],"
|
||||
"PARAMETER[\"False_Easting\",0.0],"
|
||||
"PARAMETER[\"False_Northing\",0.0],"
|
||||
"PARAMETER[\"Central_Meridian\",15.0],"
|
||||
"PARAMETER[\"Scale_Factor\",-1.0],"
|
||||
"PARAMETER[\"Latitude_Of_Origin\",0.0],"
|
||||
"UNIT[\"Meter\",1.0]]";
|
||||
auto obj = WKTParser().createFromWKT(wkt);
|
||||
auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
|
||||
ASSERT_TRUE(crs != nullptr);
|
||||
EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()),
|
||||
"+proj=tmerc +axis=wsu +lat_0=0 +lon_0=15 +k=1 +x_0=0 +y_0=0 "
|
||||
"+a=6378249.145 +rf=293.4663077 +units=m +no_defs +type=crs");
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TEST(operation, tped_export) {
|
||||
auto conv = Conversion::createTwoPointEquidistant(
|
||||
PropertyMap(), Angle(1), Angle(2), Angle(3), Angle(4), Length(5),
|
||||
|
||||
@@ -6274,15 +6274,8 @@ TEST(
|
||||
{
|
||||
auto list = CoordinateOperationFactory::create()->createOperations(
|
||||
NN_NO_CHECK(src), NN_NO_CHECK(dst), ctxt);
|
||||
ASSERT_GE(list.size(), 2U);
|
||||
ASSERT_GE(list.size(), 1U);
|
||||
EXPECT_EQ(list[0]->nameStr(),
|
||||
"Inverse of NAD83(CSRS)v6 to CGVD28 height (1) + "
|
||||
"NAD83(CSRS)v6 to CGVD2013(CGG2013) height (1) "
|
||||
"using Null geographic offset "
|
||||
"from NAD83(CSRS)v6 (geog3D) to NAD83(CSRS)v6 (geog2D) + "
|
||||
"Inverse of NAD83 to NAD83(CSRS)v6 (10) + "
|
||||
"NAD83 to NAD83(CSRS) (4)");
|
||||
EXPECT_EQ(list[1]->nameStr(),
|
||||
"Inverse of NAD83(CSRS)v6 to CGVD28 height (1) + "
|
||||
"NAD83(CSRS)v6 to CGVD2013(CGG2013) height (1) "
|
||||
"using Ballpark geographic offset "
|
||||
|
||||
+12
-2
@@ -81,7 +81,12 @@ ctest --output-on-failure
|
||||
make install
|
||||
# find /tmp/proj_shared_install_from_dist
|
||||
$TRAVIS_BUILD_DIR/test/postinstall/test_cmake.sh /tmp/proj_shared_install_from_dist shared
|
||||
$TRAVIS_BUILD_DIR/test/postinstall/test_autotools.sh /tmp/proj_shared_install_from_dist shared
|
||||
if [ "$BUILD_NAME" != "osx" ]; then
|
||||
# Fail on osx Conda with "autom4te: error: need GNU m4 1.4 or later: /Users/runner/miniforge3/conda-bld/autoconf_1746873780934/_build_env/bin/m4"
|
||||
$TRAVIS_BUILD_DIR/test/postinstall/test_autotools.sh /tmp/proj_shared_install_from_dist
|
||||
else
|
||||
echo "Skipping test_autotools.sh test for $BUILD_NAME"
|
||||
fi
|
||||
|
||||
# Test install and uninstall targets with DESTDIR
|
||||
make install DESTDIR=/tmp/destdir
|
||||
@@ -115,7 +120,12 @@ ctest --output-on-failure
|
||||
make install
|
||||
# find /tmp/proj_static_install_from_dist
|
||||
$TRAVIS_BUILD_DIR/test/postinstall/test_cmake.sh /tmp/proj_static_install_from_dist static PROJ_CONFIG
|
||||
$TRAVIS_BUILD_DIR/test/postinstall/test_autotools.sh /tmp/proj_static_install_from_dist static
|
||||
if [ "$BUILD_NAME" != "osx" ]; then
|
||||
# Fail on osx Conda with "autom4te: error: need GNU m4 1.4 or later: /Users/runner/miniforge3/conda-bld/autoconf_1746873780934/_build_env/bin/m4"
|
||||
$TRAVIS_BUILD_DIR/test/postinstall/test_autotools.sh /tmp/proj_static_install_from_dist static
|
||||
else
|
||||
echo "Skipping test_autotools.sh test for $BUILD_NAME"
|
||||
fi
|
||||
|
||||
# Re-run by unsetting CMAKE_INSTALL_INCLUDEDIR/CMAKE_INSTALL_LIBDIR/CMAKE_INSTALL_BINDIR
|
||||
# so that later test which involve renaming/moving the installation prefix work.
|
||||
|
||||
Reference in New Issue
Block a user