diff --git a/.github/workflows/clang_linux/start.sh b/.github/workflows/clang_linux/start.sh index acbd630790..ec0e5828a0 100755 --- a/.github/workflows/clang_linux/start.sh +++ b/.github/workflows/clang_linux/start.sh @@ -4,22 +4,25 @@ set -e apt-get update -y DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - autoconf automake libtool make cmake ccache pkg-config python3-pip sqlite3 tar zip \ + autoconf automake libtool make cmake ccache pkg-config python3-pip sqlite3 tar zip curl \ clang++-10 jq python3-clang-10 \ libsqlite3-dev \ libtiff-dev libwebp-dev libzstd-dev \ libcurl4-openssl-dev libnghttp2-dev libidn2-dev librtmp-dev libssh-dev \ - libpsl-dev libssl-dev libkrb5-dev comerr-dev libldap2-dev libbrotli-dev \ + libpsl-dev libssl-dev libkrb5-dev comerr-dev libldap2-dev libbrotli-dev \ nlohmann-json3-dev libgtest-dev -python3 -m pip install --user jsonschema export PATH=$HOME/.local/bin:$PATH +python3 -m pip config --user set global.progress_bar off +python3 -m pip install --user jsonschema pyyaml pytest cd "$WORK_DIR" if test -f "$WORK_DIR/ccache.tar.gz"; then echo "Restoring ccache..." (cd $HOME && tar xzf "$WORK_DIR/ccache.tar.gz") +else + mkdir -p $HOME/.ccache fi ccache -M 500M diff --git a/.github/workflows/linux_gcc_32bit/start.sh b/.github/workflows/linux_gcc_32bit/start.sh index 24903070fa..d425e72d2e 100755 --- a/.github/workflows/linux_gcc_32bit/start.sh +++ b/.github/workflows/linux_gcc_32bit/start.sh @@ -12,15 +12,16 @@ dpkg --add-architecture i386 apt-get update -y DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends -o APT::Immediate-Configure=0 \ - autoconf automake libtool make cmake ccache pkg-config python3-pip sqlite3 tar zip \ + autoconf automake libtool make cmake ccache pkg-config python3-pip sqlite3 tar zip curl \ gcc-multilib g++-multilib g++ jq dpkg-dev \ libsqlite3-dev:$ARCH \ libtiff-dev:$ARCH libwebp-dev:$ARCH libzstd-dev:$ARCH \ libcurl4-openssl-dev:$ARCH libnghttp2-dev:$ARCH libidn2-dev:$ARCH librtmp-dev:$ARCH libssh-dev:$ARCH \ - libpsl-dev:$ARCH libssl-dev:$ARCH libkrb5-dev:$ARCH comerr-dev:$ARCH libldap2-dev:$ARCH libbrotli-dev:$ARCH + libpsl-dev:$ARCH libssl-dev:$ARCH libkrb5-dev:$ARCH comerr-dev:$ARCH libldap2-dev:$ARCH libbrotli-dev:$ARCH -python3 -m pip install --user jsonschema export PATH=$HOME/.local/bin:$PATH +python3 -m pip config --user set global.progress_bar off +python3 -m pip install --user jsonschema ruamel.yaml export CXXFLAGS='-m32 -D_GLIBCXX_ASSERTIONS' export CFLAGS='-m32' @@ -36,6 +37,8 @@ cd "$WORK_DIR" if test -f "$WORK_DIR/ccache.tar.gz"; then echo "Restoring ccache..." (cd $HOME && tar xzf "$WORK_DIR/ccache.tar.gz") +else + mkdir -p $HOME/.ccache fi ccache -M 500M diff --git a/.github/workflows/mac/environment.yml b/.github/workflows/mac/environment.yml index 263ada7eb3..01898847b8 100644 --- a/.github/workflows/mac/environment.yml +++ b/.github/workflows/mac/environment.yml @@ -13,4 +13,6 @@ dependencies: - autoconf - automake - jsonschema + - ruamel.yaml + - pytest diff --git a/.github/workflows/mingw_w64/start.sh b/.github/workflows/mingw_w64/start.sh index 5ea0251fc6..0eb32b85e4 100755 --- a/.github/workflows/mingw_w64/start.sh +++ b/.github/workflows/mingw_w64/start.sh @@ -26,6 +26,8 @@ cd "$WORK_DIR" if test -f "$WORK_DIR/ccache.tar.gz"; then echo "Restoring ccache..." (cd $HOME && tar xzf "$WORK_DIR/ccache.tar.gz") +else + mkdir -p $HOME/.ccache fi sudo apt-get install -y --no-install-recommends \ @@ -68,7 +70,7 @@ ln -s $MINGW_PREFIX/libgcc_s_seh-1.dll $WINE_SYSDIR ln -s /usr/$MINGW_ARCH/lib/libwinpthread-1.dll $WINE_SYSDIR # build zlib -wget https://github.com/madler/zlib/archive/v1.2.11.tar.gz +wget -q https://github.com/madler/zlib/archive/v1.2.11.tar.gz tar xzf v1.2.11.tar.gz (cd zlib-1.2.11 && \ sudo make install -f win32/Makefile.gcc SHARED_MODE=1 \ @@ -79,13 +81,13 @@ tar xzf v1.2.11.tar.gz ln -s /usr/$MINGW_ARCH/bin/zlib1.dll $WINE_SYSDIR # build libtiff -wget http://download.osgeo.org/libtiff/tiff-4.1.0.tar.gz +wget -q http://download.osgeo.org/libtiff/tiff-4.1.0.tar.gz tar xzf tiff-4.1.0.tar.gz (cd tiff-4.1.0 && ./configure --host=$MINGW_ARCH --prefix=/usr/$MINGW_ARCH && make && sudo make install) ln -s /usr/$MINGW_ARCH/bin/libtiff-5.dll $WINE_SYSDIR # build sqlite3 -wget https://sqlite.org/2020/sqlite-autoconf-3330000.tar.gz +wget -q https://sqlite.org/2020/sqlite-autoconf-3330000.tar.gz tar xzf sqlite-autoconf-3330000.tar.gz # Build with SQLITE_DQS=0 to ensure we properly use single quotes and double quotes (cf issue #2480) (cd sqlite-autoconf-3330000 && diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 2340f863f0..f124a60184 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -37,6 +37,11 @@ jobs: - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.x" + - run: pip install pyyaml + - uses: ilammy/msvc-dev-cmd@v1 - name: Cache vcpkg packages @@ -65,10 +70,17 @@ jobs: mkdir %PROJ_BUILD% cd %PROJ_BUILD% set PROJ_DIR=%GITHUB_WORKSPACE%\proj_dir - # Not directly linked to BUILD_SHARED_LIBS, but a way to test different C++ standard versions + :: Not directly linked to BUILD_SHARED_LIBS, but a way to test different C++ standard versions if "${{ env.BUILD_SHARED_LIBS }}"=="ON" (set EXTRA_CXX_FLAGS="/std:c++20") if "${{ env.BUILD_TYPE }}"=="Release" (set CMAKE_UNITY_BUILD_OPT="-DCMAKE_UNITY_BUILD=ON") - cmake -DCMAKE_BUILD_TYPE="${{ env.BUILD_TYPE }}" -DBUILD_SHARED_LIBS="${{ env.BUILD_SHARED_LIBS }}" -DCMAKE_C_FLAGS="/WX" -DCMAKE_CXX_FLAGS="/WX %EXTRA_CXX_FLAGS%" -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_INSTALL_PREFIX="%PROJ_DIR%" -DPROJ_DB_CACHE_DIR=%PROJ_DB_CACHE_DIR% %CMAKE_UNITY_BUILD_OPT% .. + cmake -D CMAKE_BUILD_TYPE="${{ env.BUILD_TYPE }}" ^ + -D BUILD_SHARED_LIBS="${{ env.BUILD_SHARED_LIBS }}" ^ + -D CMAKE_C_FLAGS="/WX" ^ + -D CMAKE_CXX_FLAGS="/WX %EXTRA_CXX_FLAGS%" ^ + -D CMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake ^ + -D CMAKE_INSTALL_PREFIX="%PROJ_DIR%" ^ + -D PROJ_DB_CACHE_DIR=%PROJ_DB_CACHE_DIR% ^ + %CMAKE_UNITY_BUILD_OPT% .. ninja -v ninja install dir %PROJ_DIR%\bin @@ -142,17 +154,28 @@ jobs: mingw-w64-x86_64-curl mingw-w64-x86_64-gcc mingw-w64-x86_64-libtiff + mingw-w64-x86_64-python-yaml mingw-w64-x86_64-sqlite3 - name: Build run: | + mkdir -p $HOME/.ccache ccache -M 500M ccache -s PROJ_BUILD=${GITHUB_WORKSPACE}/build PROJ_DIR=${GITHUB_WORKSPACE}/proj_dir mkdir ${PROJ_BUILD} cd ${PROJ_BUILD} - cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DBUILD_SHARED_LIBS=${{ env.BUILD_SHARED_LIBS }} -DCMAKE_INSTALL_PREFIX="${PROJ_DIR}" -DCMAKE_C_FLAGS="-Werror" -DCMAKE_CXX_FLAGS="-Werror" -DUSE_CCACHE=ON -DCMAKE_UNITY_BUILD=ON -DPROJ_DB_CACHE_DIR=$HOME/.ccache .. + 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 Python3_ROOT_DIR=/mingw64 \ + .. make -j 2 make install ls ${PROJ_DIR}/bin diff --git a/cmake/ProjTest.cmake b/cmake/ProjTest.cmake index 3de3fb4ce1..1a5b78a76f 100644 --- a/cmake/ProjTest.cmake +++ b/cmake/ProjTest.cmake @@ -1,5 +1,5 @@ # -# add test with sh script +# Add command-line interface tests # function(proj_test_set_properties TESTNAME) @@ -14,20 +14,28 @@ function(proj_test_set_properties TESTNAME) PROPERTY ENVIRONMENT ${_env}) endfunction() -function(proj_add_test_script_sh SH_NAME BIN_USE) - if(UNIX) - get_filename_component(testname ${SH_NAME} NAME_WE) +function(proj_add_test_script_sh SH_NAME EXE_PATH) + set(testname ${SH_NAME}) - add_test(NAME "${testname}" - WORKING_DIRECTORY ${PROJ_BINARY_DIR}/test/cli - COMMAND bash ${PROJ_SOURCE_DIR}/test/cli/${SH_NAME} - ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${${BIN_USE}} - ) - proj_test_set_properties(${testname}) - - endif() + add_test(NAME ${testname} + WORKING_DIRECTORY ${PROJ_BINARY_DIR}/test/cli + COMMAND bash ${PROJ_SOURCE_DIR}/test/cli/${SH_NAME} "${${EXE_PATH}}" + ) + proj_test_set_properties(${testname}) endfunction() +function(proj_run_cli_test TESTFILE EXE_PATH) + set(testname ${TESTFILE}) + + add_test(NAME ${testname} + WORKING_DIRECTORY ${PROJ_BINARY_DIR}/test/cli + COMMAND ${Python3_EXECUTABLE} + ${PROJ_SOURCE_DIR}/test/cli/run_cli_test.py + --exe "${${EXE_PATH}}" + ${PROJ_SOURCE_DIR}/test/cli/${TESTFILE} + ) + proj_test_set_properties(${testname}) +endfunction() function(proj_add_gie_test TESTNAME TESTCASE) diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 85ed6ba8d4..8706a0dc1e 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -100,6 +100,10 @@ endforeach() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tests/egm96_15_downsampled.gtx ${CMAKE_CURRENT_BINARY_DIR}/for_tests/egm96_15.gtx COPYONLY) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tests/ntv2_0_downsampled.gsb ${CMAKE_CURRENT_BINARY_DIR}/for_tests/ntv2_0.gsb COPYONLY) +# test_cs2cs_datumfile has a special case +execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/for_tests/dir with space") +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tests/conus "${CMAKE_CURRENT_BINARY_DIR}/for_tests/dir with space/myconus" COPYONLY) + # #install # diff --git a/scripts/fix_typos.sh b/scripts/fix_typos.sh index 28a5597b5f..68a2617e12 100755 --- a/scripts/fix_typos.sh +++ b/scripts/fix_typos.sh @@ -46,7 +46,7 @@ if ! test -d fix_typos; then ) fi -EXCLUDED_FILES="*configure,config.status,config.sub,*/autom4te.cache/*,libtool,aclocal.m4,depcomp,ltmain.sh,*.pdf,./m4/*,./fix_typos/*,./docs/build/*,./src/*generated*,./test/googletest/*,./include/proj/internal/nlohmann/json.hpp,*.before_reformat,./test/cli/test27,./test/cli/test83,./test/cli/pj_out27.dist,./test/cli/pj_out83.dist,geodesic.h,geodesic.c,geodtest.c,./docs/source/spelling_wordlist.txt" +EXCLUDED_FILES="*configure,config.status,config.sub,*/autom4te.cache/*,libtool,aclocal.m4,depcomp,ltmain.sh,*.pdf,./m4/*,./fix_typos/*,./docs/build/*,./src/*generated*,./test/googletest/*,./include/proj/internal/nlohmann/json.hpp,*.before_reformat,geodesic.h,geodesic.c,geodtest.c,./docs/source/spelling_wordlist.txt" WORDS_WHITE_LIST="metres,als,lsat,twon,ang,PJD_ERR_LSAT_NOT_IN_RANGE,COLOR_GRAT,interm,Interm,Cartesian,cartesian,CARTESIAN,kilometre,centimetre,millimetre,millimetres,Australia,LINZ,LaTeX,BibTeX" python3 fix_typos/codespell/codespell.py -w -i 3 -q 2 -S $EXCLUDED_FILES \ diff --git a/src/4D_api.cpp b/src/4D_api.cpp index 861a77c99e..1965d47ea9 100644 --- a/src/4D_api.cpp +++ b/src/4D_api.cpp @@ -318,10 +318,10 @@ int pj_get_suggested_operation(PJ_CONTEXT *, if (spatialCriterionOK) { // The offshore test is for the "Test bug 245 (use +datum=carthage)" - // of testvarious. The long=10 lat=34 point belongs both to the - // onshore and offshore Tunisia area of uses, but is slightly - // onshore. So in a general way, prefer a onshore area to a - // offshore one. + // of test_cs2cs_various.yaml. The long=10 lat=34 point belongs + // both to the onshore and offshore Tunisia area of uses, but is + // slightly onshore. So in a general way, prefer a onshore area + // to a offshore one. if (iBest < 0 || (((alt.accuracy >= 0 && alt.accuracy < bestAccuracy) || // If two operations have the same accuracy, use diff --git a/src/apps/cs2cs.cpp b/src/apps/cs2cs.cpp index 8c91b683e3..ffc11bfed8 100644 --- a/src/apps/cs2cs.cpp +++ b/src/apps/cs2cs.cpp @@ -388,7 +388,7 @@ int main(int argc, char **argv) { } /* This is just to check that pj_init() is locale-safe */ - /* Used by nad/testvarious */ + /* Used by test/cli/test_cs2cs_locale.sh */ if (getenv("PROJ_USE_ENV_LOCALE") != nullptr) use_env_locale = 1; diff --git a/src/iso19111/operation/coordinateoperationfactory.cpp b/src/iso19111/operation/coordinateoperationfactory.cpp index 9d37b60506..126000dfca 100644 --- a/src/iso19111/operation/coordinateoperationfactory.cpp +++ b/src/iso19111/operation/coordinateoperationfactory.cpp @@ -3276,7 +3276,7 @@ void CoordinateOperationFactory::Private::createOperationsWithDatumPivot( // ... but when transforming between 2 IGNF CRS, we do just one single pass // by allowing directly all transformation. There is no strong reason for // that particular case, except that otherwise we'd get different results - // for thest test/cli/testIGNF script when transforming a point outside + // for test/cli/test_cs2cs_ignf.yaml when transforming a point outside // the area of validity... Not totally sure the behaviour we try to preserve // here with the particular case is fundamentally better than the general // case. The general case is needed typically for the RGNC91-93 -> RGNC15 diff --git a/test/cli/CMakeLists.txt b/test/cli/CMakeLists.txt index b136b05d75..dbd87df30b 100644 --- a/test/cli/CMakeLists.txt +++ b/test/cli/CMakeLists.txt @@ -1,22 +1,135 @@ # # test # -set(CS2CS_BIN "cs2cs") -set(PROJ_BIN "proj") -set(INVPROJ_BIN "invproj") -set(PROJINFO_BIN "projinfo") -set(CCT_BIN "cct") -set(PROJSYNC_BIN "projsync") -proj_add_test_script_sh("test27" PROJ_BIN) -proj_add_test_script_sh("test83" PROJ_BIN) -proj_add_test_script_sh("testproj" PROJ_BIN) -proj_add_test_script_sh("testinvproj" INVPROJ_BIN) -proj_add_test_script_sh("testvarious" CS2CS_BIN) -proj_add_test_script_sh("testdatumfile" CS2CS_BIN) -proj_add_test_script_sh("testIGNF" CS2CS_BIN) -proj_add_test_script_sh("testntv2" CS2CS_BIN) -proj_add_test_script_sh("testprojinfo" PROJINFO_BIN) -proj_add_test_script_sh("testcct" CCT_BIN) -if(BUILD_PROJSYNC_DATA) -proj_add_test_script_sh("test_projsync" PROJSYNC_BIN) +if(BUILD_CCT) + set(CCT_EXE "$") +endif() +if(BUILD_CS2CS) + set(CS2CS_EXE "$") +endif() +if(BUILD_PROJ) + set(PROJ_EXE "$") + if(UNIX) + # invproj is a symlink + # set(INVPROJ_EXE "$") # TODO: find working genexpr + set(INVPROJ_EXE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/invproj${CMAKE_EXECUTABLE_SUFFIX}") + else() + set(INVPROJ_EXE "$") + endif() +endif() +if(BUILD_PROJINFO) + set(PROJINFO_EXE "$") +endif() +if(BUILD_PROJSYNC) + set(PROJSYNC_EXE "$") +endif() + +if(UNIX) + if(BUILD_CS2CS) + proj_add_test_script_sh(test_cs2cs_locale.sh CS2CS_EXE) + endif() + if(BUILD_PROJINFO) + proj_add_test_script_sh(test_projinfo.sh PROJINFO_EXE) + endif() + if(BUILD_PROJSYNC) + proj_add_test_script_sh(test_projsync.sh PROJSYNC_EXE) + endif() +endif() + +macro(find_Python3_package PACKAGE VARIABLE) + if(NOT DEFINED "${VARIABLE}") + if(NOT CMAKE_REQUIRED_QUIET) + # CMake 3.17+ use CHECK_START/CHECK_PASS/CHECK_FAIL + message(STATUS "Looking for ${PACKAGE}") + endif() + if(Python3_VERSION VERSION_GREATER_EQUAL "3.8.0") + # importlib.metadata was added in version 3.8 + set(CMD "from importlib.metadata import version; print(version('${PACKAGE}'), end='')") + execute_process( + COMMAND ${Python3_EXECUTABLE} -c "${CMD}" + RESULT_VARIABLE EXIT_CODE + OUTPUT_VARIABLE ${PACKAGE}_VERSION + ERROR_QUIET + ) + else() + # importlib_metadata backport needed for older Python3 versions + execute_process( + COMMAND ${Python3_EXECUTABLE} -c "import importlib_metadata" + RESULT_VARIABLE EXIT_CODE + OUTPUT_QUIET ERROR_QUIET + ) + if(EXIT_CODE EQUAL 0) + set(CMD "from importlib_metadata import version; print(version('${PACKAGE}'), end='')") + execute_process( + COMMAND ${Python3_EXECUTABLE} -c "${CMD}" + RESULT_VARIABLE EXIT_CODE + OUTPUT_VARIABLE ${PACKAGE}_VERSION + ERROR_QUIET + ) + else() + message(WARNING "importlib_metadata backport package required for Python <3.8") + endif() + endif() + if(EXIT_CODE EQUAL 0) + if(NOT CMAKE_REQUIRED_QUIET) + message(STATUS "Looking for ${PACKAGE} - found version \"${${PACKAGE}_VERSION}\"") + endif() + set(${VARIABLE} 1 CACHE INTERNAL "Have package ${PACKAGE}") + else() + if(NOT CMAKE_REQUIRED_QUIET) + message(STATUS "Looking for ${PACKAGE} - not found") + endif() + set(${VARIABLE} "" CACHE INTERNAL "Have package ${PACKAGE}") + endif() + endif() +endmacro() + +# Evaluate if Python can be used for CLI testing +find_package(Python3 COMPONENTS Interpreter) +set(Python3_for_cli_tests OFF) +if(Python3_FOUND) + if(Python3_VERSION VERSION_GREATER_EQUAL "3.7.0") + find_Python3_package("ruamel.yaml" HAS_RUAMEL_YAML) + if(HAS_RUAMEL_YAML) + set(Python3_for_cli_tests ON) + else() + find_Python3_package("pyyaml" HAS_PYYAML) + if(HAS_PYYAML) + set(Python3_for_cli_tests ON) + endif() + endif() + endif() +endif() + +if(Python3_for_cli_tests) + if(BUILD_CCT) + proj_run_cli_test(test_cct.yaml CCT_EXE) + endif() + if(BUILD_CS2CS) + proj_run_cli_test(test_cs2cs_datumfile.yaml CS2CS_EXE) + proj_run_cli_test(test_cs2cs_flaky.yaml CS2CS_EXE) + proj_run_cli_test(test_cs2cs_ignf.yaml CS2CS_EXE) + proj_run_cli_test(test_cs2cs_ntv2.yaml CS2CS_EXE) + proj_run_cli_test(test_cs2cs_various.yaml CS2CS_EXE) + endif() + if(BUILD_PROJ) + proj_run_cli_test(test_proj.yaml PROJ_EXE) + proj_run_cli_test(test_proj_nad27.yaml PROJ_EXE) + proj_run_cli_test(test_proj_nad83.yaml PROJ_EXE) + proj_run_cli_test(test_invproj.yaml INVPROJ_EXE) + endif() + if(BUILD_PROJINFO) + proj_run_cli_test(test_projinfo.yaml PROJINFO_EXE) + endif() + + # auto-test run_cli_test.py if pytest available + find_Python3_package("pytest" HAS_PYTEST) + if(HAS_PYTEST) + add_test(NAME pytest_run_cli_test + COMMAND ${Python3_EXECUTABLE} -m pytest -vv + ${PROJ_SOURCE_DIR}/test/cli/run_cli_test.py + ) + endif() +else() + message(WARNING "Python/YAML command-line interface tests not run") endif() diff --git a/test/cli/input_with_utf8_bom.txt b/test/cli/input_with_utf8_bom.txt deleted file mode 100644 index 85077632d6..0000000000 --- a/test/cli/input_with_utf8_bom.txt +++ /dev/null @@ -1 +0,0 @@ -0 3 0 diff --git a/test/cli/ntv2_out.dist b/test/cli/ntv2_out.dist deleted file mode 100644 index 890a649b40..0000000000 --- a/test/cli/ntv2_out.dist +++ /dev/null @@ -1,29 +0,0 @@ -############################################################## -Point in the ONwinsor subgrid. -82d00'00.000"W 42d00'00.000"N 0.0 81d59'59.6104"W 42d0'0.1602"N 0.000 -82d00'01.000"W 42d00'00.000"N 0.0 82d0'0.6104"W 42d0'0.1602"N 0.000 -82d00'02.000"W 42d00'00.000"N 0.0 82d0'1.6104"W 42d0'0.1602"N 0.000 -84d00'00.000"W 42d00'00.000"N 0.0 83d59'59.8623"W 42d0'0.1807"N 0.000 -############################################################## -Try with NTv2 and NTv1 together ... falls back to NTv1 -99d00'00.000"W 65d00'00.000"N 0.0 99d0'1.5926"W 65d0'1.3478"N 0.000 -111d00'00.000"W 46d00'00.000"N 0.0 111d0'3.1897"W 45d59'59.7489"N 0.000 -111d00'00.000"W 47d30'00.000"N 0.0 111d0'2.8054"W 47d29'59.9899"N 0.000 -############################################################## -Switching between NTv2 subgrids --112.5839956 49.4914451 0 -112.58307621 49.49144267 0.00000000 -############################################################## -Interpolating very close (and sometimes a bit outside) to the edges a NTv2 subgrid (#209) --115.58333333 51.25000000 0 -115.58228512 51.24997866 0.00000000 --115.58333333 51.25000010 0 -115.58228512 51.24997876 0.00000000 --115.58333334 51.25000000 0 -115.58228513 51.24997866 0.00000000 --115.49166667 51.07500000 0 -115.49063575 51.07497568 0.00000000 --115.49166668 51.07500000 0 -115.49063576 51.07497568 0.00000000 --115.49166667 51.07499990 0 -115.49063575 51.07497558 0.00000000 -############################################################## -Attempt first with ntv2_0.gsb and then conus --111.5 45.26 -111.50079772 45.25992835 0.00000000 -############################################################## -NAD27 -> NAD83: 1st through ntv2, 2nd through conus -55d00'00.000"N 111d00'00.000"W 0.0 55d0'0.367"N 111d0'3.231"W 0.000 -39d00'00.000"N 111d00'00.000"W 0.0 38d59'59.912"N 111d0'2.604"W 0.000 diff --git a/test/cli/pj_out27.dist b/test/cli/pj_out27.dist deleted file mode 100644 index 632dfc62be..0000000000 --- a/test/cli/pj_out27.dist +++ /dev/null @@ -1,265 +0,0 @@ - -134d00'00.000 55d00'00.000 2615716.535 1156768.938 2615716.535 1156768.938 AK 1 GP1 - -133d40'00.000 57d00'00.000 2685642.815 1887198.473 2685642.815 1887198.473 AK 1 GP2 - -131d35'45.432 54d39'02.654 3124247.971 1035731.647 3124247.971 1035731.647 AK 1 GP3 - -129d32'30.000 54d32'30.000 3561180.429 1015414.284 3561180.429 1015414.284 AK 1 GP4 - -141d30'00.000 60d30'00.000 1275974.313 3248584.184 1275974.313 3248584.184 AK 1 GP6 - -142d00'00.000 56d30'30.000 500000.000 916085.508 500000.000 916085.508 AK 2 GP1 - -146d00'00.000 56d30'30.000 500000.000 916085.508 500000.000 916085.508 AK 3 GP1 - -150d00'00.000 56d30'30.000 500000.000 916085.508 500000.000 916085.508 AK 4 GP1 - -152d28'56.134 60d53'28.765 770312.640 2520850.030 770312.640 2520850.031 AK 5 GP1 - -154d00'00.000 56d30'30.000 500000.000 916085.508 500000.000 916085.508 AK 5 GP2 - -155d00'00.000 71d00'00.000 857636.168 6224356.319 857636.168 6224356.320 AK 6 GP1 - -158d00'00.000 71d00'00.000 500000.000 6215501.077 500000.000 6215501.078 AK 6 GP1 - -162d00'00.000 65d15'00.000 700000.000 4111525.685 700000.000 4111525.687 AK 7 GP1 - -166d00'00.000 65d15'00.000 500000.000 4111525.685 500000.000 4111525.687 AK 8 GP1 - -170d00'00.000 63d20'00.000 600000.000 3410550.007 600000.000 3410550.008 AK 9 GP1 - -164d02'30.000 54d27'30.000 5533424.392 1473805.123 5533424.392 1473805.123 AK10 GP1 - -176d00'00.000 52d30'00.000 3000000.000 547583.333 3000000.000 547583.333 AK10 GP2 - -85d50'00.000 31d20'00.000 500000.000 303093.746 500000.000 303093.746 AL E GP1 - -85d12'41.738 32d38'57.737 691376.573 782394.791 691376.573 782394.791 AL E GP2 - -86d36'58.670 34d48'58.708 264979.900 1571249.667 264979.900 1571249.667 AL E GP3 - -87d30'00.000 33d20'00.000 500000.000 1212487.425 500000.000 1212487.425 AL W GP1 - -87d30'00.000 33d20'30.000 500000.000 1215519.455 500000.000 1215519.455 AL W GP2 - -91d34'46.321 35d18'37.443 2125448.748 355890.988 2125448.748 355890.988 AR N GP1 - -92d04'11.625 35d19'34.269 1979150.162 361375.766 1979150.162 361375.766 AR N GP2 - -92d00'00.000 34d45'00.000 2000000.000 758096.040 2000000.000 758096.040 AR S GP1 - -92d00'00.000 33d15'00.000 2000000.000 212263.845 2000000.000 212263.845 AR S GP2 - -170d00'00.000 -14d16'00.000 500000.000 312234.650 500000.000 312234.650 AS GP1 - -166d50'38.406 -9d34'41.556 1640416.676 2007870.029 1640416.676 2007870.029 AS GP2 - -111d55'00.000 34d45'00.000 500000.000 1364267.386 500000.000 1364267.386 AZ C GP1 - -111d55'00.000 32d20'00.000 500000.000 484978.270 500000.000 484978.270 AZ C GP2 - -110d24'59.771 35d09'58.568 425301.125 1515853.425 425301.125 1515853.426 AZ E GP1 - -109d34'33.127 31d59'53.103 683147.830 363527.538 683147.830 363527.538 AZ E GP2 - -110d30'34.948 35d07'28.243 397422.297 1500739.241 397422.297 1500739.241 AZ E GP3 - -109d45'13.226 32d08'41.778 627823.092 416691.532 627823.092 416691.532 AZ E GP4 - -113d45'00.000 34d45'00.000 500000.000 1364312.866 500000.000 1364312.866 AZ W GP1 - -113d45'00.000 34d45'30.000 500000.000 1367345.603 500000.000 1367345.603 AZ W GP2 - -113d45'00.000 34d46'00.000 500000.000 1370378.345 500000.000 1370378.345 AZ W GP3 - -122d00'00.000 41d30'00.000 2000000.000 789314.699 2000000.000 789314.699 CA 1 GP1 - -122d00'00.000 41d30'30.000 2000000.000 792351.052 2000000.000 792351.052 CA 1 GP2 - -122d00'00.000 39d20'00.000 2000000.000 606975.074 2000000.000 606975.074 CA 2 GP1 - -122d00'00.000 39d20'30.000 2000000.000 610010.158 2000000.000 610010.158 CA 2 GP2 - -120d30'00.000 37d05'00.000 2000000.000 212394.029 2000000.000 212394.029 CA 3 GP1 - -121d22'26.019 37d30'30.324 1746516.910 368350.900 1746516.910 368350.900 CA 3 GP2 - -119d46'32.733 37d07'41.470 2211146.746 229541.692 2211146.746 229541.692 CA 3 GP3 - -119d38'26.434 36d55'48.009 2251190.696 157720.169 2251190.696 157720.169 CA 3 GP4 - -120d42'59.779 38d06'52.815 1937681.203 587984.757 1937681.203 587984.757 CA 3 GP5 - -119d00'00.000 36d20'00.000 2000000.000 364036.106 2000000.000 364036.106 CA 4 GP1 - -119d00'00.000 36d20'30.000 2000000.000 367069.711 2000000.000 367069.711 CA 4 GP2 - -118d00'00.000 34d45'00.000 2000000.000 454894.032 2000000.000 454894.032 CA 5 GP1 - -118d00'00.000 34d45'30.000 2000000.000 457926.735 2000000.000 457926.735 CA 5 GP2 - -116d15'00.000 33d20'00.000 2000000.000 424481.703 2000000.000 424481.703 CA 6 GP1 - -116d15'00.000 33d20'30.000 2000000.000 427513.796 2000000.000 427513.796 CA 6 GP2 - -118d20'00.000 34d30'00.000 4186692.580 4294365.712 4186692.580 4294365.712 CA 7 GP1 - -105d30'00.000 39d15'00.000 2000000.000 515936.228 2000000.000 515936.228 CO C GP1 - -105d30'00.000 39d15'30.000 2000000.000 518971.313 2000000.000 518971.313 CO C GP2 - -108d45'55.378 40d25'33.504 1091086.832 414752.176 1091086.832 414752.176 CO N GP1 - -105d14'45.588 40d12'42.711 2070940.652 320120.166 2070940.652 320120.166 CO N GP2 - -105d30'00.000 37d30'00.000 2000000.000 303425.100 2000000.000 303425.100 CO S GP1 - -105d30'00.000 37d30'30.000 2000000.000 306459.335 2000000.000 306459.335 CO S GP2 - -72d43'30.515 41d16'55.847 606832.139 163540.219 606832.139 163540.219 CT GP1 - -73d01'15.609 41d13'25.985 525446.203 142415.891 525446.203 142415.891 CT GP2 - -75d33'00.748 39d21'15.214 462235.881 493228.846 462235.881 493228.846 DE GP1 - -75d19'01.889 39d45'14.765 527969.596 638870.822 527969.596 638870.822 DE GP2 - -80d11'00.000 25d45'00.000 768810.056 515637.939 768810.056 515637.939 FL E GP1 - -82d45'52.412 29d39'06.589 2551254.254 241240.008 2551254.254 241240.008 FL N GP1 - -84d55'11.533 29d38'51.982 1866620.008 235814.655 1866620.008 235814.655 FL N GP2 - -82d38'00.000 27d47'00.000 295216.148 1254408.638 295216.148 1254408.638 FL W GP1 - -81d27'15.592 32d38'03.003 719287.314 958818.262 719287.314 958818.262 GA E GP1 - -83d15'39.990 33d29'58.626 166361.311 1274706.363 166361.311 1274706.363 GA E GP2 - -84d23'00.000 33d45'00.000 434141.824 1364117.672 434141.824 1364117.672 GA W GP1 - 144d44'55.503 13d28'20.879 164041.712 164041.680 164041.712 164041.680 GU GP1 - 144d38'07.193 13d20'20.538 123728.401 115623.086 123728.401 115623.086 GU GP2 - -155d59'16.911 19d37'23.477 332050.939 287068.342 332050.939 287068.342 HI 1 GP1 - -155d18'06.262 19d31'24.578 568270.061 250663.241 568270.061 250663.241 HI 1 GP2 - -155d30'00.000 19d42'00.000 500000.000 314722.985 500000.000 314722.985 HI 1 GP3 - -155d30'00.000 19d42'30.000 500000.000 317749.315 500000.000 317749.315 HI 1 GP4 - -156d40'00.000 20d42'00.000 500000.000 133170.903 500000.000 133170.903 HI 2 GP1 - -156d40'00.000 20d42'30.000 500000.000 136197.580 500000.000 136197.580 HI 2 GP2 - -158d00'00.000 21d30'00.000 500000.000 121078.981 500000.000 121078.981 HI 3 GP1 - -158d01'30.000 21d37'30.000 491508.215 166485.537 491508.215 166485.537 HI 3 GP2 - -159d30'00.000 22d05'00.000 500000.000 90816.138 500000.000 90816.138 HI 4 GP1 - -160d10'00.000 21d42'00.000 500000.000 12108.532 500000.000 12108.532 HI 5 GP1 - -93d28'33.966 42d44'50.101 2006419.316 454523.076 2006419.316 454523.076 IA N GP1 - -93d54'22.084 42d40'23.699 1890779.351 427816.212 1890779.351 427816.212 IA N GP2 - -93d37'00.000 41d35'00.000 1968081.762 576880.709 1968081.762 576880.709 IA S GP1 - -114d24'00.000 42d56'00.000 392878.009 461838.231 392878.009 461838.231 ID C GP1 - -111d42'29.824 43d48'07.616 621017.480 778569.749 621017.480 778569.749 ID E GP1 - -112d22'35.516 43d35'26.260 444398.356 701217.958 444398.356 701217.958 ID E GP2 - -116d22'02.592 48d07'50.941 349231.302 2357247.272 349231.302 2357247.272 ID W GP1 - -88d07'06.790 41d46'11.855 558591.507 1858801.531 558591.507 1858801.531 IL E GP1 - -88d41'35.208 40d43'37.202 400279.755 1478930.010 400279.755 1478930.010 IL E GP2 - -90d10'00.000 38d30'00.000 500000.000 667527.020 500000.000 667527.020 IL W GP1 - -85d40'00.000 40d00'00.000 500000.000 910470.785 500000.000 910470.786 IN E GP1 - -85d40'00.000 40d00'30.000 500000.000 913506.350 500000.000 913506.351 IN E GP2 - -86d14'27.780 40d00'12.690 339087.973 912273.324 339087.973 912273.325 IN E GP3 - -86d14'27.790 40d00'31.660 339099.565 914192.836 339099.565 914192.836 IN E GP4 - -86d14'28.103 40d00'47.412 339085.485 915786.883 339085.485 915786.883 IN E GP6 - -87d05'00.000 40d00'00.000 500000.000 910470.785 500000.000 910470.786 IN W GP1 - -87d05'00.000 40d00'30.000 500000.000 913506.350 500000.000 913506.351 IN W GP2 - -86d45'10.717 39d41'24.840 592969.921 797807.077 592969.921 797807.077 IN W GP3 - -87d41'44.075 37d54'24.755 323351.583 148732.658 323351.583 148732.658 IN W GP4 - -86d32'13.179 39d32'46.419 654071.692 745650.467 654071.692 745650.467 IN W GP5 - -87d25'26.675 38d26'17.646 402398.078 341828.410 402398.078 341828.410 IN W GP6 - -86d14'28.103 40d00'47.412 735905.989 916383.007 735905.989 916383.007 IN W GP7 - -86d14'27.780 40d00'12.690 735964.329 912869.812 735964.329 912869.812 IN W GP8 - -86d14'27.790 40d00'31.660 735945.409 914789.331 735945.409 914789.331 IN W GP9 - -96d47'54.567 38d58'52.096 2341555.463 238196.375 2341555.463 238196.375 KS N GP1 - -98d35'23.954 39d58'41.967 1834645.786 599682.614 1834645.786 599682.614 KS N GP2 - -97d21'00.000 37d42'00.000 2332714.529 378302.303 2332714.529 378302.303 KS S GP1 - -84d05'43.283 38d14'35.963 2044414.776 270720.831 2044414.776 270720.831 KY N GP1 - -84d26'49.265 39d04'03.099 1944057.054 570906.807 1944057.054 570906.807 KY N GP2 - -86d05'00.000 37d10'00.000 1902871.440 303569.007 1902871.440 303569.007 KY S GP1 - -91d34'46.483 31d57'26.243 2285456.159 470671.781 2285456.159 470671.781 LA N GP1 - -92d52'46.615 32d54'52.264 1883486.181 817905.853 1883486.181 817905.853 LA N GP2 - -91d29'09.480 31d56'44.721 2314527.078 466735.568 2314527.078 466735.568 LA N GP3 - -93d59'38.241 32d48'43.467 1540965.776 783590.902 1540965.776 783590.902 LA N GP4 - -89d00'00.000 28d50'00.000 2747176.527 68218.410 2747176.527 68218.410 LA S GP1 - -89d30'00.000 28d50'00.000 2587082.796 65307.429 2587082.796 65307.429 LA S GP2 - -89d29'59.999 29d19'59.994 2584173.994 247106.020 2584173.994 247106.020 LA S GP3 - -89d00'00.004 29d19'59.998 2743474.038 250002.972 2743474.038 250002.972 LA S GP4 - -89d10'23.487 29d20'32.615 2688234.966 252215.035 2688234.966 252215.035 LA S GP5 - -89d06'34.632 29d15'19.642 2709099.980 220994.973 2709099.980 220994.973 LA S GP6 - -89d01'33.803 29d07'47.918 2736661.987 175901.967 2736661.987 175901.967 LA S GP7 - -89d08'45.781 28d58'27.979 2699434.976 118600.021 2699434.976 118600.021 LA S GP9 - -70d30'00.000 41d30'00.000 200000.000 182180.613 200000.000 182180.613 MA I GP1 - -70d27'00.716 41d40'15.808 886823.958 246295.510 886823.958 246295.510 MA M GP1 - -73d25'59.173 42d06'06.860 75432.106 407473.253 75432.106 407473.253 MA M GP2 - -76d11'27.492 39d12'06.132 1029272.677 499353.154 1029272.677 499353.154 MD GP1 - -77d02'30.406 38d26'37.492 788033.549 222300.512 788033.549 222300.512 MD GP2 - -77d30'10.460 38d59'25.903 657055.715 421819.661 657055.715 421819.661 MD GP3 - -68d24'25.489 46d32'46.920 523379.868 989125.403 523379.868 989125.403 ME E GP1 - -68d37'29.366 47d02'12.659 468876.638 1168006.571 468876.638 1168006.571 ME E GP2 - -70d16'00.000 43d40'00.000 473538.933 303746.300 473538.933 303746.300 ME W GP1 - -85d40'00.000 44d45'00.000 1653612.784 525406.529 1653612.784 525406.529 MI C GP1 - -83d29'17.919 42d19'19.299 2228532.810 300724.433 2228532.810 300724.433 MI S GP1 - -83d35'24.656 42d20'02.682 2200944.119 304856.048 2200944.119 304856.048 MI S GP2 - -85d55'26.569 41d50'10.236 1566471.427 126614.633 1566471.427 126614.633 MI S GP3 - -85d45'59.490 41d49'22.346 1609315.113 120996.336 1609315.113 120996.336 MI S GP4 - -89d20'00.000 46d50'00.000 353999.488 1944621.410 353999.488 1944621.410 MI W GP1 - -91d27'51.183 47d08'19.177 2407087.310 237254.364 2407087.310 237254.364 MN N GP1 - -95d51'05.998 48d19'26.552 1330690.998 677229.560 1330690.998 677229.560 MN N GP2 - -92d30'00.000 38d15'00.000 500000.000 879833.618 500000.000 879833.618 MO C GP1 - -92d30'00.000 38d15'30.000 500000.000 882868.158 500000.000 882868.158 MO C GP2 - -91d42'04.297 37d22'05.932 150919.587 561018.126 150919.587 561018.127 MO E GP1 - -90d08'08.896 36d53'44.124 606497.861 386893.306 606497.861 386893.306 MO E GP2 - -94d30'00.000 38d15'00.000 500000.000 758504.732 500000.000 758504.732 MO W GP1 - -94d30'00.000 38d15'30.000 500000.000 761539.296 500000.000 761539.296 MO W GP2 - -89d10'14.013 30d30'51.338 393805.810 308399.629 393805.810 308399.629 MS E GP1 - -88d26'04.338 30d43'01.454 625321.316 382224.788 625321.316 382224.788 MS E GP2 - -90d10'00.000 32d17'00.000 551507.962 648697.041 551507.962 648697.041 MS W GP1 - -109d25'00.000 47d05'00.000 2020760.609 455889.692 2020760.609 455889.692 MT C GP1 - -106d29'11.521 47d52'21.103 2739443.845 332808.759 2739443.845 332808.759 MT N GP1 - -114d30'43.122 48d52'46.764 794693.447 725072.329 794693.447 725072.329 MT N GP2 - -109d15'00.000 45d39'00.000 2063931.561 601700.560 2063931.561 601700.560 MT S GP1 - -81d12'31.790 35d09'31.049 1339854.041 519988.737 1339854.041 519988.737 NC GP1 - -76d31'54.918 35d33'51.452 2733941.071 669408.798 2733941.071 669408.798 NC GP2 - -78d28'26.580 36d15'15.480 2155088.262 911860.343 2155088.262 911860.343 NC GP3 - -98d46'03.232 48d08'13.483 2422983.823 419525.823 2422983.823 419525.823 ND N GP1 - -101d18'21.456 47d39'18.935 1801367.700 240053.997 1801367.700 240053.997 ND N GP2 - -100d46'00.000 46d48'00.000 1933213.911 413422.204 1933213.911 413422.204 ND S GP1 - -96d17'52.930 42d04'48.305 3004688.243 293978.208 3004688.243 293978.208 NE N GP1 - -100d49'26.949 41d58'54.025 1775916.042 237340.591 1775916.042 237340.591 NE N GP2 - -96d43'00.000 40d49'00.000 2770252.364 431225.617 2770252.364 431225.617 NE S GP1 - -70d56'11.287 43d08'15.006 694907.496 233185.793 694907.496 233185.793 NH GP1 - -72d32'32.197 42d51'25.984 265213.564 131404.574 265213.564 131404.574 NH GP2 - -74d13'55.737 39d52'02.095 2121971.499 376878.657 2121971.499 376878.657 NJ GP1 - -74d51'24.058 41d12'07.401 1947709.569 862915.876 1947709.569 862915.876 NJ GP2 - -106d15'00.000 33d30'00.000 500000.000 909419.295 500000.000 909419.295 NM C GP1 - -106d15'00.000 33d30'30.000 500000.000 912451.306 500000.000 912451.306 NM C GP2 - -104d11'42.410 33d17'21.732 542236.924 832820.301 542236.924 832820.301 NM E GP1 - -104d47'37.948 33d22'32.349 359406.535 864495.731 359406.535 864495.732 NM E GP2 - -107d50'00.000 32d30'00.000 500000.000 545616.897 500000.000 545616.897 NM W GP1 - -107d50'00.000 32d30'30.000 500000.000 548648.466 500000.000 548648.466 NM W GP2 - -116d48'00.000 36d58'00.000 461048.286 806858.042 461048.286 806858.042 NV C GP1 - -114d49'09.337 35d43'09.299 726805.224 353637.053 726805.224 353637.053 NV E GP1 - -116d50'32.766 41d30'37.869 155162.931 2464191.578 155162.931 2464191.579 NV E GP2 - -119d49'00.000 39d32'00.000 152145.548 1743820.923 152145.548 1743820.924 NV W GP1 - -76d10'00.000 43d05'00.000 611313.134 1123706.620 611313.134 1123706.621 NY C GP1 - -74d02'53.671 42d17'01.775 577147.690 832219.885 577147.690 832219.885 NY E GP1 - -74d44'39.818 42d30'07.382 389148.814 911884.889 389148.814 911884.889 NY E GP2 - -73d02'36.247 40d47'50.624 2264860.626 209793.919 2264860.626 209793.919 NY L GP1 - -74d06'58.125 40d36'07.281 1967746.807 137190.013 1967746.807 137190.013 NY L GP2 - -74d00'00.000 40d45'00.000 2000000.000 191080.202 2000000.000 191080.202 NY L GP3 - -73d15'00.000 40d37'30.000 2208197.581 146431.086 2208197.581 146431.086 NY L GP4 - -73d22'30.000 40d45'00.000 2173173.707 191697.996 2173173.707 191697.996 NY L GP5 - -78d51'00.000 42d54'00.000 428547.567 1056727.674 428547.567 1056727.674 NY W GP1 - -80d49'28.238 40d17'50.894 2467363.986 234305.751 2467363.986 234305.751 OH N GP1 - -82d37'31.021 40d20'14.678 1965071.932 244391.910 1965071.932 244391.910 OH N GP2 - -84d15'00.000 39d45'00.000 1507970.925 642141.152 1507970.925 642141.152 OH S GP1 - -98d42'45.414 36d50'19.568 1791448.615 670119.442 1791448.615 670119.442 OK N GP1 - -95d38'44.046 35d20'36.925 2702176.218 133585.952 2702176.218 133585.952 OK N GP2 - -97d08'00.000 34d34'00.000 2260914.787 449942.599 2260914.787 449942.599 OK S GP1 - -123d41'00.000 45d31'00.000 1184216.898 690530.257 1184216.898 690530.257 OR N GP1 - -119d46'26.562 44d24'25.943 2189746.353 999672.239 2189746.353 999672.239 OR S GP1 - -121d09'56.105 44d23'08.924 1825970.576 991740.899 1825970.576 991740.899 OR S GP2 - -74d33'20.644 41d23'48.566 2876202.339 464358.775 2876202.339 464358.775 PA N GP1 - -78d09'48.121 40d51'35.455 1885652.438 252829.477 1885652.438 252829.477 PA N GP2 - -67d08'56.930 18d29'56.972 251990.753 242253.319 251990.753 242253.319 PR F GP1 - -66d52'30.000 18d15'00.000 346756.548 151479.295 346756.548 151479.295 PR F GP2 - -66d26'00.000 18d15'00.000 500000.000 151294.491 500000.000 151294.491 PR F GP3 - -66d26'00.000 18d30'00.000 500000.000 242074.012 500000.000 242074.012 PR F GP4 - -67d08'56.930 18d29'56.972 251990.753 242253.319 251990.753 242253.319 PR M GP1 - -66d52'30.000 18d15'00.000 346756.548 151479.295 346756.548 151479.295 PR M GP2 - -66d26'00.000 18d15'00.000 500000.000 151294.491 500000.000 151294.491 PR M GP3 - -66d26'00.000 18d30'00.000 500000.000 242074.012 500000.000 242074.012 PR M GP4 - -64d43'00.000 17d40'00.000 1097602.972 42283.509 1097602.972 42283.509 PS S GP1 - -71d16'00.833 41d32'24.848 563817.074 166563.592 563817.074 166563.592 RI GP1 - -71d37'13.730 41d23'53.266 466943.554 114721.079 466943.554 114721.079 RI GP2 - -80d32'30.000 34d32'30.000 2138028.224 561330.721 2138028.224 561330.721 SC N GP1 - -81d00'00.000 34d32'30.000 2000000.000 561019.077 2000000.000 561019.077 SC N GP2 - -80d32'30.000 33d32'30.000 2139661.529 621836.603 2139661.529 621836.603 SC S GP1 - -81d00'00.000 33d32'30.000 2000000.000 621532.356 2000000.000 621532.356 SC S GP2 - -99d12'21.983 44d06'08.121 2208566.880 99065.808 2208566.880 99065.808 SD N GP1 - -100d32'28.873 44d32'34.917 1858852.206 259207.243 1858852.206 259207.243 SD N GP2 - -103d14'00.000 44d06'00.000 1238344.555 657205.595 1238344.555 657205.595 SD S GP1 - -85d13'55.967 36d21'48.503 2226074.895 718522.870 2226074.895 718522.870 TN GP1 - -88d43'05.849 36d30'08.410 1201097.659 779285.593 1201097.659 779285.593 TN GP2 - -97d06'00.000 31d35'00.000 3006704.541 711708.204 3006704.541 711708.204 TX C GP1 - -100d33'06.303 34d39'35.684 2285173.373 241550.390 2285173.373 241550.390 TX N GP1 - -102d48'50.949 34d43'39.249 1605118.921 267430.718 1605118.921 267430.718 TX N GP2 - -97d30'00.000 25d55'00.000 2328727.194 92175.721 2328727.194 92175.721 TX S GP1 - -96d48'00.000 32d45'00.000 2215204.973 394833.169 2215204.973 394833.169 TXNC GP1 - -98d30'00.000 29d25'00.000 2159176.237 576022.948 2159176.237 576022.948 TXSC GP1 - -111d30'00.000 38d40'00.000 2000000.000 121415.345 2000000.000 121415.345 UT C GP1 - -111d30'00.000 38d40'30.000 2000000.000 124450.619 2000000.000 124450.619 UT C GP2 - -111d30'00.000 41d30'00.000 2000000.000 425057.445 2000000.000 425057.445 UT N GP1 - -111d30'00.000 41d30'30.000 2000000.000 428093.810 2000000.000 428093.810 UT N GP2 - -109d48'37.967 38d29'30.877 2483568.472 668988.098 2483568.472 668988.098 UT S GP1 - -113d52'56.922 37d09'18.788 1305706.243 186731.606 1305706.243 186731.606 UT S GP2 - -77d13'46.945 38d55'12.407 2361415.621 458962.786 2361415.621 458962.786 VA N GP1 - -79d18'51.557 38d09'59.020 1765875.433 183017.881 1765875.433 183017.881 VA N GP2 - -77d38'10.823 37d49'23.964 2249484.834 58221.695 2249484.834 58221.695 VA N GP3 - -79d26'19.475 37d47'25.852 1728704.621 46487.604 1728704.621 46487.604 VA N GP4 - -77d44'30.336 39d00'06.804 2215488.016 487135.448 2215488.016 487135.448 VA N GP6 - -77d43'47.013 38d59'55.454 2218917.620 486015.701 2218917.620 486015.701 VA N GP9 - -78d30'00.000 37d30'00.000 2000000.000 424763.516 2000000.000 424763.516 VA S GP1 - -78d30'00.000 37d30'30.000 2000000.000 427797.710 2000000.000 427797.710 VA S GP2 - -77d32'33.000 36d54'42.507 2279939.213 212030.192 2279939.213 212030.192 VA S GP3 - -77d21'55.732 38d04'53.901 2326572.191 638519.064 2326572.191 638519.064 VA S GP4 - -64d45'30.000 17d45'30.000 1082794.001 75432.552 1082794.001 75432.552 VI F GP1 - -66d26'00.000 17d45'56.426 500000.000 75432.505 500000.000 75432.505 VI F GP2 - -64d45'30.000 17d45'30.000 1082794.001 75432.552 1082794.001 75432.552 VI M GP1 - -66d26'00.000 17d45'56.426 500000.000 75432.505 500000.000 75432.505 VI M GP2 - -72d29'31.418 43d09'58.526 502118.227 242816.621 502118.227 242816.621 VT GP1 - -73d12'06.978 44d22'22.810 316451.963 683472.660 316451.963 683472.660 VT GP2 - -119d51'37.006 47d50'51.069 2238927.196 310658.148 2238927.196 310658.148 WA N GP1 - -123d59'49.087 48d09'29.131 1228043.506 438306.777 1228043.506 438306.777 WA N GP2 - -122d54'00.000 46d09'00.000 1391814.257 307059.945 1391814.257 307059.945 WA S GP1 - -88d04'00.000 44d30'00.000 2504399.560 249042.105 2504399.560 249042.105 WI C GP1 - -88d44'40.778 45d22'21.598 2322632.765 77666.151 2322632.765 77666.151 WI N GP1 - -92d12'19.275 45d48'35.812 1437681.450 242373.846 1437681.450 242373.846 WI N GP2 - -89d23'00.000 43d05'00.000 2164743.544 395445.420 2164743.544 395445.420 WI S GP1 - -77d53'39.269 39d14'39.339 2454764.840 275139.246 2454764.840 275139.246 WV N GP1 - -81d33'23.549 39d18'08.535 1418073.862 298900.611 1418073.862 298900.611 WV N GP2 - -77d30'10.460 38d59'25.903 2567632.286 184970.946 2567632.286 184970.946 WV N GP3 - -105d07'00.000 44d38'00.000 513016.009 1445570.354 513016.009 1445570.355 WY E GP1 - -105d31'02.882 43d30'40.600 406937.677 1036750.417 406937.677 1036750.418 WY E GP1 - -105d22'42.856 43d30'14.685 443778.141 1034002.062 443778.141 1034002.062 WY E GP2 - -105d28'42.827 43d36'33.391 417392.389 1072428.186 417392.389 1072428.186 WY E GP3 - -105d23'43.223 42d00'59.422 437860.186 491889.060 437860.186 491889.060 WY E GP4 - -104d35'06.686 42d34'50.366 656606.905 697923.643 656606.905 697923.643 WY E GP5 - -110d36'00.000 41d48'00.000 359125.204 413338.815 359125.204 413338.815 WY W GP1 - -106d13'03.224 41d36'14.640 805153.891 343496.745 805153.891 343496.746 WYEC GP1 - -108d01'56.720 41d51'57.518 309581.204 437731.262 309581.204 437731.262 WYEC GP2 - -108d24'00.000 43d02'00.000 593579.361 862553.590 593579.361 862553.590 WYWC GP1 diff --git a/test/cli/pj_out83.dist b/test/cli/pj_out83.dist deleted file mode 100644 index 726140f36e..0000000000 --- a/test/cli/pj_out83.dist +++ /dev/null @@ -1,225 +0,0 @@ - -134d00'00.000 55d00'00.000 2616018.154 1156379.643 2616018.154 1156379.643 AK 1 GP1 - -133d40'00.000 57d00'00.000 2685941.919 1886799.668 2685941.919 1886799.668 AK 1 GP2 - -131d35'45.432 54d39'02.654 3124531.426 1035343.511 3124531.426 1035343.511 AK 1 GP3 - -129d32'30.000 54d32'30.000 3561448.345 1015025.876 3561448.345 1015025.876 AK 1 GP4 - -141d30'00.000 60d30'00.000 1276328.587 3248159.207 1276328.587 3248159.207 AK 1 GP6 - -142d00'00.000 56d30'30.000 1640416.667 916074.824 1640416.667 916074.825 AK 2 GP1 - -146d00'00.000 56d30'30.000 1640416.667 916074.824 1640416.667 916074.825 AK 3 GP1 - -150d00'00.000 56d30'30.000 1640416.667 916074.824 1640416.667 916074.825 AK 4 GP1 - -152d28'56.134 60d53'28.765 1910718.662 2520810.679 1910718.662 2520810.680 AK 5 GP1 - -154d00'00.000 56d30'30.000 1640416.667 916074.824 1640416.667 916074.825 AK 5 GP2 - -155d00'00.000 71d00'00.000 1998036.998 6224208.215 1998036.998 6224208.217 AK 6 GP1 - -158d00'00.000 71d00'00.000 1640416.667 6215353.365 1640416.667 6215353.367 AK 6 GP1 - -162d00'00.000 65d15'00.000 1640416.667 4111446.440 1640416.667 4111446.441 AK 7 GP1 - -166d00'00.000 65d15'00.000 1640416.667 4111446.440 1640416.667 4111446.441 AK 8 GP1 - -170d00'00.000 63d20'00.000 1640416.667 3410489.716 1640416.667 3410489.717 AK 9 GP1 - -164d02'30.000 54d27'30.000 5814167.604 1473788.834 5814167.604 1473788.834 AK10 GP1 - -176d00'00.000 52d30'00.000 3280833.333 547580.542 3280833.333 547580.542 AK10 GP2 - -85d50'00.000 31d20'00.000 656166.667 303104.183 656166.667 303104.183 AL E GP1 - -85d12'41.738 32d38'57.737 847539.085 782420.807 847539.085 782420.807 AL E GP2 - -86d36'58.670 34d48'58.708 421151.975 1571298.908 421151.975 1571298.908 AL E GP3 - -87d30'00.000 33d20'00.000 1968500.000 1212527.586 1968500.000 1212527.587 AL W GP1 - -87d30'00.000 33d20'30.000 1968500.000 1215559.708 1968500.000 1215559.708 AL W GP2 - -91d34'46.321 35d18'37.443 1437779.156 355900.759 1437779.156 355900.759 AR N GP1 - -92d04'11.625 35d19'34.269 1291483.982 361385.695 1291483.982 361385.695 AR N GP2 - -92d00'00.000 34d45'00.000 1312333.333 2070451.744 1312333.333 2070451.744 AR S GP1 - -92d00'00.000 33d15'00.000 1312333.333 1524603.730 1312333.333 1524603.730 AR S GP2 - -111d55'00.000 34d45'00.000 699998.600 1364309.666 699998.600 1364309.666 AZ C GP1 - -111d55'00.000 32d20'00.000 699998.600 484994.340 699998.600 484994.340 AZ C GP2 - -110d24'59.771 35d09'58.568 625301.460 1515899.830 625301.460 1515899.830 AZ E GP1 - -109d34'33.127 31d59'53.103 883142.524 363539.663 883142.524 363539.663 AZ E GP2 - -110d30'34.948 35d07'28.243 597423.277 1500785.234 597423.277 1500785.235 AZ E GP3 - -109d45'13.226 32d08'41.778 827818.955 416705.394 827818.955 416705.394 AZ E GP4 - -113d45'00.000 34d45'00.000 699998.600 1364355.147 699998.600 1364355.147 AZ W GP1 - -113d45'00.000 34d45'30.000 699998.600 1367387.968 699998.600 1367387.968 AZ W GP2 - -113d45'00.000 34d46'00.000 699998.600 1370420.793 699998.600 1370420.793 AZ W GP3 - -122d00'00.000 41d30'00.000 6561666.667 2429744.729 6561666.667 2429744.729 CA 1 GP1 - -122d00'00.000 41d30'30.000 6561666.667 2432781.128 6561666.667 2432781.128 CA 1 GP2 - -122d00'00.000 39d20'00.000 6561666.667 2247404.250 6561666.667 2247404.250 CA 2 GP1 - -122d00'00.000 39d20'30.000 6561666.667 2250439.391 6561666.667 2250439.391 CA 2 GP2 - -120d30'00.000 37d05'00.000 6561666.667 1852815.760 6561666.667 1852815.760 CA 3 GP1 - -121d22'26.019 37d30'30.324 6308189.835 2008776.145 6308189.835 2008776.145 CA 3 GP2 - -119d46'32.733 37d07'41.470 6772808.251 1869963.783 6772808.251 1869963.783 CA 3 GP3 - -119d38'26.434 36d55'48.009 6812851.254 1798140.563 6812851.254 1798140.563 CA 3 GP4 - -120d42'59.779 38d06'52.815 6499349.432 2228414.867 6499349.432 2228414.867 CA 3 GP5 - -119d00'00.000 36d20'00.000 6561666.667 2004462.102 6561666.667 2004462.102 CA 4 GP1 - -119d00'00.000 36d20'30.000 6561666.667 2007495.782 6561666.667 2007495.782 CA 4 GP2 - -118d00'00.000 34d45'00.000 6561666.667 2095323.781 6561666.667 2095323.781 CA 5 GP1 - -118d00'00.000 34d45'30.000 6561666.667 2098356.568 6561666.667 2098356.568 CA 5 GP2 - -116d15'00.000 33d20'00.000 6561666.667 2064911.626 6561666.667 2064911.626 CA 6 GP1 - -116d15'00.000 33d20'30.000 6561666.667 2067943.810 6561666.667 2067943.810 CA 6 GP2 - -118d20'00.000 34d30'00.000 5933874.572 2495758.727 5933874.572 2495758.727 CA 7 GP1 - -105d30'00.000 39d15'00.000 3000000.000 1515946.820 3000000.000 1515946.820 CO C GP1 - -105d30'00.000 39d15'30.000 3000000.000 1518981.963 3000000.000 1518981.963 CO C GP2 - -108d45'55.378 40d25'33.504 2091110.958 1414758.884 2091110.958 1414758.884 CO N GP1 - -105d14'45.588 40d12'42.711 3070938.779 1320125.979 3070938.779 1320125.979 CO N GP2 - -105d30'00.000 37d30'00.000 3000000.000 1303432.168 3000000.000 1303432.168 CO S GP1 - -105d30'00.000 37d30'30.000 3000000.000 1306466.471 3000000.000 1306466.471 CO S GP2 - -72d43'30.515 41d16'55.847 1006831.954 663542.786 1006831.954 663542.786 CT GP1 - -73d01'15.609 41d13'25.985 925448.220 642418.129 925448.220 642418.129 CT GP2 - -75d33'00.748 39d21'15.214 618403.524 493238.843 618403.524 493238.843 DE GP1 - -75d19'01.889 39d45'14.765 684135.532 638883.528 684135.532 638883.528 DE GP2 - -82d45'52.412 29d39'06.589 2519743.236 241248.726 2519743.236 241248.726 FL N GP1 - -84d55'11.533 29d38'51.982 1835122.674 235823.399 1835122.674 235823.399 FL N GP2 - -81d27'15.592 32d38'03.003 875449.222 958850.568 875449.222 958850.568 GA E GP1 - -83d15'39.990 33d29'58.626 322535.391 1274748.301 322535.391 1274748.301 GA E GP2 - -155d59'16.911 19d37'23.477 1472470.137 287083.198 1472470.137 287083.198 HI 1 GP1 - -155d18'06.262 19d31'24.578 1708685.701 250676.240 1708685.701 250676.240 HI 1 GP2 - -155d30'00.000 19d42'00.000 1640416.667 314739.275 1640416.667 314739.275 HI 1 GP3 - -155d30'00.000 19d42'30.000 1640416.667 317765.760 1640416.667 317765.760 HI 1 GP4 - -156d40'00.000 20d42'00.000 1640416.667 133177.588 1640416.667 133177.588 HI 2 GP1 - -156d40'00.000 20d42'30.000 1640416.667 136204.417 1640416.667 136204.417 HI 2 GP2 - -158d00'00.000 21d30'00.000 1640416.667 121084.931 1640416.667 121084.931 HI 3 GP1 - -158d01'30.000 21d37'30.000 1631925.017 166493.704 1631925.017 166493.704 HI 3 GP2 - -159d30'00.000 22d05'00.000 1640416.667 90820.525 1640416.667 90820.525 HI 4 GP1 - -160d10'00.000 21d42'00.000 1640416.667 12109.121 1640416.667 12109.121 HI 5 GP1 - -93d28'33.966 42d44'50.101 4927669.136 3735362.601 4927669.136 3735362.601 IA N GP1 - -93d54'22.084 42d40'23.699 4812032.409 3708655.393 4812032.409 3708655.393 IA N GP2 - -111d42'29.824 43d48'07.616 777180.670 778579.414 777180.670 778579.414 ID E GP1 - -112d22'35.516 43d35'26.260 600566.613 701226.817 600566.613 701226.817 ID E GP2 - -116d22'02.592 48d07'50.941 2473902.726 2357266.576 2473902.726 2357266.577 ID W GP1 - -88d07'06.790 41d46'11.855 1042839.901 1858837.259 1042839.901 1858837.259 IL E GP1 - -88d41'35.208 40d43'37.202 884532.422 1478959.911 884532.422 1478959.912 IL E GP2 - -85d40'00.000 40d00'00.000 328083.333 1730697.447 328083.333 1730697.447 IN E GP1 - -85d40'00.000 40d00'30.000 328083.333 1733733.065 328083.333 1733733.066 IN E GP2 - -86d14'27.780 40d00'12.690 167175.533 1732499.995 167175.533 1732499.995 IN E GP3 - -86d14'27.790 40d00'31.660 167187.126 1734419.540 167187.126 1734419.540 IN E GP4 - -86d14'28.103 40d00'47.412 167173.047 1736013.615 167173.047 1736013.616 IN E GP6 - -87d05'00.000 40d00'00.000 2952750.000 1730697.447 2952750.000 1730697.447 IN W GP1 - -87d05'00.000 40d00'30.000 2952750.000 1733733.065 2952750.000 1733733.066 IN W GP2 - -86d45'10.717 39d41'24.840 3045717.498 1618031.699 3045717.498 1618031.699 IN W GP3 - -87d41'44.075 37d54'24.755 2776105.988 968944.255 2776105.988 968944.255 IN W GP4 - -86d32'13.179 39d32'46.419 3106817.690 1565874.112 3106817.690 1565874.113 IN W GP5 - -87d25'26.675 38d26'17.646 2855150.544 1162044.125 2855150.544 1162044.125 IN W GP6 - -86d14'28.103 40d00'47.412 3188649.790 1736609.724 3188649.790 1736609.724 IN W GP7 - -86d14'27.780 40d00'12.690 3188708.130 1733096.467 3188708.130 1733096.467 IN W GP8 - -86d14'27.790 40d00'31.660 3188689.210 1735016.020 3188689.210 1735016.020 IN W GP9 - -96d47'54.567 38d58'52.096 1653880.047 238201.110 1653880.047 238201.110 KS N GP1 - -98d35'23.954 39d58'41.967 1146983.460 599694.197 1146983.460 599694.197 KS N GP2 - -84d05'43.283 38d14'35.963 1684830.325 270726.733 1684830.325 270726.733 KY N GP1 - -84d26'49.265 39d04'03.099 1584475.157 570918.805 1584475.157 570918.805 KY N GP2 - -91d34'46.483 31d57'26.243 3566283.410 531318.874 3566283.410 531318.874 LA N GP1 - -92d52'46.615 32d54'52.264 3164322.062 878564.036 3164322.062 878564.036 LA N GP2 - -91d29'09.480 31d56'44.721 3595353.711 527382.519 3595353.711 527382.519 LA N GP3 - -93d59'38.241 32d48'43.467 2821809.119 844247.864 2821809.119 844247.864 LA N GP4 - -89d00'00.000 28d50'00.000 4027995.272 128836.330 4027995.272 128836.330 LA S GP1 - -89d30'00.000 28d50'00.000 3867904.667 125925.406 3867904.667 125925.406 LA S GP2 - -89d29'59.999 29d19'59.994 3864995.756 307730.820 3864995.756 307730.820 LA S GP3 - -89d00'00.004 29d19'59.998 4024292.645 310627.715 4024292.645 310627.715 LA S GP4 - -89d10'23.487 29d20'32.615 3969054.663 312839.922 3969054.663 312839.922 LA S GP5 - -89d06'34.632 29d15'19.642 3989919.298 281618.678 3989919.298 281618.678 LA S GP6 - -89d01'33.803 29d07'47.918 4017480.813 236523.957 4017480.813 236523.957 LA S GP7 - -89d08'45.781 28d58'27.979 3980254.597 179219.900 3980254.597 179219.900 LA S GP9 - -70d27'00.716 41d40'15.808 942982.782 2706924.168 942982.782 2706924.168 MA M GP1 - -73d25'59.173 42d06'06.860 131613.265 2868104.007 131613.265 2868104.007 MA M GP2 - -76d11'27.492 39d12'06.132 1541600.105 560062.872 1541600.105 560062.872 MD GP1 - -77d02'30.406 38d26'37.492 1300367.185 283004.738 1300367.185 283004.738 MD GP2 - -77d30'10.460 38d59'25.903 1169392.711 482527.897 1169392.711 482527.897 MD GP3 - -68d24'25.489 46d32'46.920 1007629.154 1049880.999 1007629.154 1049880.999 ME E GP1 - -68d37'29.366 47d02'12.659 953127.598 1228762.971 953127.598 1228762.971 ME E GP2 - -83d29'17.919 42d19'19.299 13360865.013 300809.378 13360865.013 300809.378 MI S GP1 - -83d35'24.656 42d20'02.682 13333276.507 304929.978 13333276.507 304929.978 MI S GP2 - -85d55'26.569 41d50'10.236 12698916.149 126441.631 12698916.149 126441.631 MI S GP3 - -85d45'59.490 41d49'22.346 12741759.240 120840.463 12741759.240 120840.463 MI S GP4 - -91d27'51.183 47d08'19.177 3031741.394 565338.600 3031741.394 565338.600 MN N GP1 - -95d51'05.998 48d19'26.552 1955378.869 1005314.701 1955378.869 1005314.701 MN N GP2 - -92d30'00.000 38d15'00.000 1640416.667 879854.176 1640416.667 879854.176 MO C GP1 - -92d30'00.000 38d15'30.000 1640416.667 882888.780 1640416.667 882888.780 MO C GP2 - -91d42'04.297 37d22'05.932 471136.507 561031.592 471136.507 561031.592 MO E GP1 - -90d08'08.896 36d53'44.124 926703.606 386902.829 926703.606 386902.829 MO E GP2 - -94d30'00.000 38d15'00.000 2788708.333 758522.219 2788708.333 758522.219 MO W GP1 - -94d30'00.000 38d15'30.000 2788708.333 761556.846 2788708.333 761556.846 MO W GP2 - -89d10'14.013 30d30'51.338 878059.046 369015.468 878059.046 369015.468 MS E GP1 - -88d26'04.338 30d43'01.454 1109567.483 442842.466 1109567.483 442842.466 MS E GP2 - -106d29'11.521 47d52'21.103 2707564.623 1334850.273 2707564.623 1334850.273 MT N GP1 - -114d30'43.122 48d52'46.764 763315.457 1726511.247 763315.457 1726511.247 MT N GP2 - -81d12'31.790 35d09'31.049 1339869.379 520003.003 1339869.379 520003.003 NC GP1 - -76d31'54.918 35d33'51.452 2733923.842 669426.932 2733923.842 669426.932 NC GP2 - -78d28'26.580 36d15'15.480 2155084.559 911885.081 2155084.559 911885.081 NC GP3 - -98d46'03.232 48d08'13.483 2391470.474 419526.909 2391470.474 419526.909 ND N GP1 - -101d18'21.456 47d39'18.935 1769873.906 240054.790 1769873.906 240054.790 ND N GP2 - -96d17'52.930 42d04'48.305 2644820.409 839912.565 2644820.409 839912.565 NE N GP1 - -100d49'26.949 41d58'54.025 1416403.828 783622.046 1416403.828 783622.046 NE N GP2 - -70d56'11.287 43d08'15.006 1179151.981 233188.619 1179151.981 233188.620 NH GP1 - -72d32'32.197 42d51'25.984 749470.166 131406.173 749470.166 131406.173 NH GP2 - -74d13'55.737 39d52'02.095 567304.543 376673.733 567304.543 376673.733 NJ GP1 - -74d51'24.058 41d12'07.401 393979.614 863010.549 393979.614 863010.549 NJ GP2 - -106d15'00.000 33d30'00.000 1640416.667 909448.493 1640416.667 909448.493 NM C GP1 - -106d15'00.000 33d30'30.000 1640416.667 912480.595 1640416.667 912480.595 NM C GP2 - -104d11'42.410 33d17'21.732 583573.491 832847.194 583573.491 832847.194 NM E GP1 - -104d47'37.948 33d22'32.349 400747.149 864523.566 400747.149 864523.566 NM E GP2 - -107d50'00.000 32d30'00.000 2723091.667 545634.896 2723091.667 545634.896 NM W GP1 - -107d50'00.000 32d30'30.000 2723091.667 548666.562 2723091.667 548666.562 NM W GP2 - -114d49'09.337 35d43'09.299 882966.545 26600313.129 882966.545 26600313.129 NV E GP1 - -116d50'32.766 41d30'37.869 311338.993 28710910.564 311338.993 28710910.565 NV E GP2 - -74d02'53.671 42d17'01.775 614362.369 1257287.611 614362.369 1257287.611 NY E GP1 - -74d44'39.818 42d30'07.382 426225.275 1336579.561 426225.275 1336579.561 NY E GP2 - -73d02'36.247 40d47'50.624 1249103.533 231235.845 1249103.533 231235.845 NY L GP1 - -74d06'58.125 40d36'07.281 951997.667 158630.811 951997.667 158630.811 NY L GP2 - -74d00'00.000 40d45'00.000 984250.000 212521.887 984250.000 212521.887 NY L GP3 - -73d15'00.000 40d37'30.000 1192442.028 167871.999 1192442.028 167871.999 NY L GP4 - -73d22'30.000 40d45'00.000 1157419.074 213139.664 1157419.074 213139.664 NY L GP5 - -80d49'28.238 40d17'50.894 2435851.621 234309.717 2435851.621 234309.717 OH N GP1 - -82d37'31.021 40d20'14.678 1933572.857 244396.244 1933572.857 244396.244 OH N GP2 - -98d42'45.414 36d50'19.568 1759953.675 670136.468 1759953.675 670136.468 OK N GP1 - -95d38'44.046 35d20'36.925 2670659.833 133589.112 2670659.833 133589.112 OK N GP2 - -119d46'26.562 44d24'25.943 5110990.827 999684.042 5110990.827 999684.042 OR S GP1 - -121d09'56.105 44d23'08.924 4747225.642 991752.635 4747225.642 991752.635 OR S GP2 - -74d33'20.644 41d23'48.566 2844678.533 464365.610 2844678.533 464365.610 PA N GP1 - -78d09'48.121 40d51'35.455 1854155.505 252833.700 1854155.505 252833.700 PA N GP2 - -67d08'56.930 18d29'56.972 408161.046 898432.808 408161.046 898432.808 PR F GP1 - -66d52'30.000 18d15'00.000 502925.440 807654.009 502925.440 807654.009 PR F GP2 - -66d26'00.000 18d15'00.000 656166.667 807469.207 656166.667 807469.207 PR F GP3 - -66d26'00.000 18d30'00.000 656166.667 898253.524 656166.667 898253.524 PR F GP4 - -67d08'56.930 18d29'56.972 408161.046 898432.808 408161.046 898432.808 PR M GP1 - -66d52'30.000 18d15'00.000 502925.440 807654.009 502925.440 807654.009 PR M GP2 - -66d26'00.000 18d15'00.000 656166.667 807469.207 656166.667 807469.207 PR M GP3 - -66d26'00.000 18d30'00.000 656166.667 898253.524 656166.667 898253.524 PR M GP4 - -71d16'00.833 41d32'24.848 391898.667 166566.121 391898.667 166566.121 RI GP1 - -71d37'13.730 41d23'53.266 295027.785 114722.837 295027.785 114722.837 RI GP2 - -80d32'30.000 34d32'30.000 2138015.480 985710.127 2138015.480 985710.127 SC N GP1 - -81d00'00.000 34d32'30.000 1999996.000 985404.077 1999996.000 985404.077 SC N GP2 - -80d32'30.000 33d32'30.000 2139629.138 621856.156 2139629.138 621856.156 SC S GP1 - -81d00'00.000 33d32'30.000 1999996.000 621546.527 1999996.000 621546.527 SC S GP2 - -99d12'21.983 44d06'08.121 2177060.848 99066.761 2177060.848 99066.761 SD N GP1 - -100d32'28.873 44d32'34.917 1827356.330 259209.712 1827356.330 259209.712 SD N GP2 - -85d13'55.967 36d21'48.503 2194569.476 739881.374 2194569.476 739881.374 TN GP1 - -88d43'05.849 36d30'08.410 1169616.875 800645.091 1169616.875 800645.091 TN GP2 - -100d33'06.303 34d39'35.684 941333.504 3522390.511 941333.504 3522390.511 TX N GP1 - -102d48'50.949 34d43'39.249 261294.654 3548271.494 261294.654 3548271.494 TX N GP2 - -111d30'00.000 38d40'00.000 1640416.667 6683084.515 1640416.667 6683084.515 UT C GP1 - -111d30'00.000 38d40'30.000 1640416.667 6686119.851 1640416.667 6686119.851 UT C GP2 - -111d30'00.000 41d30'00.000 1640416.667 3705897.565 1640416.667 3705897.565 UT N GP1 - -111d30'00.000 41d30'30.000 1640416.667 3708933.975 1640416.667 3708933.975 UT N GP2 - -109d48'37.967 38d29'30.877 2123972.902 10511502.846 2123972.902 10511502.846 UT S GP1 - -113d52'56.922 37d09'18.788 946139.893 10029235.592 946139.893 10029235.592 UT S GP2 - -77d13'46.945 38d55'12.407 11844323.043 7020638.975 11844323.043 7020638.975 VA N GP1 - -79d18'51.557 38d09'59.020 11248797.976 6744688.474 11248797.976 6744688.474 VA N GP2 - -77d38'10.823 37d49'23.964 11732395.294 6619889.590 11732395.294 6619889.590 VA N GP3 - -79d26'19.475 37d47'25.852 11211628.032 6608155.232 11211628.032 6608155.232 VA N GP4 - -77d44'30.336 39d00'06.804 11698399.159 7048812.266 11698399.159 7048812.266 VA N GP6 - -77d43'47.013 38d59'55.454 11701828.676 7047692.496 11701828.676 7047692.496 VA N GP9 - -78d30'00.000 37d30'00.000 11482916.667 3705606.876 11482916.667 3705606.876 VA S GP1 - -78d30'00.000 37d30'30.000 11482916.667 3708641.137 11482916.667 3708641.137 VA S GP2 - -77d32'33.000 36d54'42.507 11762849.074 3492868.579 11762849.074 3492868.579 VA S GP3 - -77d21'55.732 38d04'53.901 11809480.679 3919367.025 11809480.679 3919367.025 VA S GP4 - -64d45'30.000 17d45'30.000 1238952.313 631597.723 1238952.313 631597.723 VI F GP1 - -66d26'00.000 17d45'56.426 656166.667 631597.858 656166.667 631597.858 VI F GP2 - -64d45'30.000 17d45'30.000 1238952.313 631597.723 1238952.313 631597.723 VI M GP1 - -66d26'00.000 17d45'56.426 656166.667 631597.858 656166.667 631597.858 VI M GP2 - -72d29'31.418 43d09'58.526 1642534.834 242819.594 1642534.834 242819.594 VT GP1 - -73d12'06.978 44d22'22.810 1456873.971 683480.189 1456873.971 683480.189 VT GP2 - -119d51'37.006 47d50'51.069 1879336.368 310659.110 1879336.368 310659.110 WA N GP1 - -123d59'49.087 48d09'29.131 868484.545 438307.526 868484.545 438307.526 WA N GP2 - -88d44'40.778 45d22'21.598 2291123.165 77666.637 2291123.165 77666.637 WI N GP1 - -92d12'19.275 45d48'35.812 1406198.343 242375.264 1406198.343 242375.264 WI N GP2 - -77d53'39.269 39d14'39.339 2423253.113 275144.536 2423253.113 275144.536 WV N GP1 - -81d33'23.549 39d18'08.535 1386588.889 298906.239 1386588.889 298906.239 WV N GP2 - -77d30'10.460 38d59'25.903 2536117.742 184974.384 2536117.742 184974.384 WV N GP3 - -105d31'02.882 43d30'40.600 563107.342 1097477.489 563107.342 1097477.489 WY E GP1 - -105d22'42.856 43d30'14.685 599946.619 1094729.118 599946.619 1094729.119 WY E GP2 - -105d28'42.827 43d36'33.391 573561.723 1133155.513 573561.723 1133155.514 WY E GP3 - -105d23'43.223 42d00'59.422 594028.794 552611.396 594028.794 552611.396 WY E GP4 - -104d35'06.686 42d34'50.366 812768.620 758647.940 812768.620 758647.940 WY E GP5 - -106d13'03.224 41d36'14.640 1617477.770 732300.770 1617477.770 732300.770 WYEC GP1 - -108d01'56.720 41d51'57.518 1121920.469 826536.345 1121920.469 826536.345 WYEC GP2 diff --git a/test/cli/proj_outIGNF.dist b/test/cli/proj_outIGNF.dist deleted file mode 100644 index 35d053fad1..0000000000 --- a/test/cli/proj_outIGNF.dist +++ /dev/null @@ -1,40 +0,0 @@ -+init=IGNF:NTFG +to +init=IGNF:RGF93G - 3.300866856 43.4477976569 0.0000 3d18'0.915"E 43d26'52.077"N 0.000 -+init=IGNF:LAMBE +to +init=IGNF:LAMB93 - 600000.0000 2600545.4523 0.0000 652760.737 7033791.243 0.000 - 135638.3592 2418760.4094 0.0000 187194.062 6855928.882 0.000 - 998137.3947 2413822.2844 0.0000 1049052.258 6843776.562 0.000 - 600000.0000 2200000.0000 0.0000 649398.872 6633524.191 0.000 - 311552.5340 1906457.4840 0.0000 358799.172 6342652.486 0.000 - 960488.4138 1910172.8812 0.0000 1007068.686 6340907.237 0.000 - 600000.0000 1699510.8340 0.0000 645204.279 6133556.746 0.000 -1203792.5981 626873.17210 0.0000 1238837.253 5057451.037 0.000 -+init=IGNF:LAMBE +to +init=IGNF:GEOPORTALFXX - 600000.0000 2600545.4523 0.0000 179040.148 5610495.275 0.000 - 135638.3592 2418760.4094 0.0000 -303729.363 5410118.356 0.000 - 998137.3947 2413822.2844 0.0000 592842.792 5410120.554 0.000 - 600000.0000 2200000.0000 0.0000 179041.670 5209746.080 0.000 - 311552.5340 1906457.4840 0.0000 -96825.465 4909184.136 0.000 - 960488.4138 1910172.8812 0.0000 523880.019 4909191.141 0.000 - 600000.0000 1699510.8340 0.0000 179047.633 4708817.007 0.000 -1203792.5981 626873.17210 0.0000 658259.467 3623786.764 0.000 -+init=IGNF:RGF93G +to +init=IGNF:GEOPORTALFXX -2d20'11.4239243" 50d23'59.7718445" 0.0 179040.151 5610495.281 0.000 --3d57'49.4051448" 48d35'59.7121716" 0.0 -303729.365 5410118.352 0.000 -7d44'12.1439796" 48d35'59.7832558" 0.0 592842.794 5410120.550 0.000 -2d20'11.4951975" 46d47'59.8029841" 0.0 179041.668 5209746.077 0.000 --1d15'48.9240599" 44d05'59.8251878" 0.0 -96825.467 4909184.138 0.000 -6d50'12.2276489" 44d06'00.0517019" 0.0 523880.022 4909191.143 0.000 -2d20'11.7754730" 42d18'00.0824436" 0.0 179047.634 4708817.010 0.000 -9d32'12.6680218" 41d24'00.3542556" 0.0 730783.054 4608637.873 0.000 -+init=IGNF:RGF93G +to +init=IGNF:MILLER -2d20'11.4239243" 50d23'59.7718445" 0.0 260098.730 6140682.441 0.000 --3d57'49.4051448" 48d35'59.7121716" 0.0 -441239.699 5880610.004 0.000 -7d44'12.1439796" 48d35'59.7832558" 0.0 861246.246 5880612.827 0.000 -2d20'11.4951975" 46d47'59.8029841" 0.0 260100.934 5625762.156 0.000 --1d15'48.9240599" 44d05'59.8251878" 0.0 -140662.197 5252490.165 0.000 -6d50'12.2276489" 44d06'00.0517019" 0.0 761061.291 5252498.745 0.000 -2d20'11.7754730" 42d18'00.0824436" 0.0 260109.601 5009175.714 0.000 -9d32'12.6680218" 41d24'00.3542556" 0.0 1061637.534 4889066.592 0.000 -+init=IGNF:RGR92 +to +init=IGNF:REUN47 -3356123.5400 1303218.3090 5247430.6050 3353420.949 1304075.021 5248935.144 diff --git a/test/cli/proj_outIGNF.dist-real b/test/cli/proj_outIGNF.dist-real deleted file mode 100644 index ad80c0d3bf..0000000000 --- a/test/cli/proj_outIGNF.dist-real +++ /dev/null @@ -1,34 +0,0 @@ - 3d18'0.31206816" 43d26'52.07156484" 0.0 3d18'0.91471" 43d26'52.077" 0.000 - 600000.0000 2600545.4523 0.0000 652760.737 7033791.245 0.000 - 135638.3592 2418760.4094 0.0000 187194.062 6855928.882 0.000 - 998137.3947 2413822.2844 0.0000 1049052.257 6843776.562 0.000 - 600000.0000 2200000.0000 0.0000 649398.871 6633524.192 0.000 - 311552.5340 1906457.4840 0.0000 358799.172 6342652.486 0.000 - 960488.4138 1910172.8812 0.0000 1007068.686 6340907.237 0.000 - 600000.0000 1699510.8340 0.0000 645204.279 6133556.746 0.000 -1203792.5981 626873.17210 0.0000 1247610.438 6055822.838 0.000 - 600000.0000 2600545.4523 0.0000 179040.148 5610495.275 0.000 - 135638.3592 2418760.4094 0.0000 -303729.363 5410118.356 0.000 - 998137.3947 2413822.2844 0.0000 592842.792 5410120.554 0.000 - 600000.0000 2200000.0000 0.0000 179041.670 5209746.080 0.000 - 311552.5340 1906457.4840 0.0000 -96825.465 4909184.136 0.000 - 960488.4138 1910172.8812 0.0000 523880.019 4909191.141 0.000 - 600000.0000 1699510.8340 0.0000 179047.633 4708817.007 0.000 -1203792.5981 626873.17210 0.0000 658287.395 3623739.237 0.000 - 2d20'11.4239243" 50d23'59.7718445" 0.0 179040.151 5610495.281 0.000 --3d57'49.4051448" 48d35'59.7121716" 0.0 -303729.365 5410118.352 0.000 - 7d44'12.1439796" 48d35'59.7832558" 0.0 592842.794 5410120.550 0.000 - 2d20'11.4951975" 46d47'59.8029841" 0.0 179041.668 5209746.077 0.000 --1d15'48.9240599" 44d05'59.8251878" 0.0 -96825.467 4909184.138 0.000 - 6d50'12.2276489" 44d06'00.0517019" 0.0 523880.022 4909191.143 0.000 - 2d20'11.7754730" 42d18'00.0824436" 0.0 179047.634 4708817.010 0.000 - 9d32'12.6680218" 41d24'00.3542556" 0.0 730783.054 4608637.873 0.000 - 2d20'11.4239243" 50d23'59.7718445" 0.0 260098.730 6140682.441 0.000 --3d57'49.4051448" 48d35'59.7121716" 0.0 -441239.699 5880610.004 0.000 - 7d44'12.1439796" 48d35'59.7832558" 0.0 861246.246 5880612.827 0.000 - 2d20'11.4951975" 46d47'59.8029841" 0.0 260100.934 5625762.156 0.000 --1d15'48.9240599" 44d05'59.8251878" 0.0 -140662.197 5252490.165 0.000 - 6d50'12.2276489" 44d06'00.0517019" 0.0 761061.291 5252498.745 0.000 - 2d20'11.7754730" 42d18'00.0824436" 0.0 260109.601 5009175.714 0.000 - 9d32'12.6680218" 41d24'00.3542556" 0.0 1061637.534 4889066.592 0.000 -3356123.5400 1303218.3090 5247430.6050 3353421.023 1304074.545 5248934.985 diff --git a/test/cli/run_cli_test.py b/test/cli/run_cli_test.py new file mode 100755 index 0000000000..4731663a01 --- /dev/null +++ b/test/cli/run_cli_test.py @@ -0,0 +1,1465 @@ +#!/usr/bin/env python3 +"""Run a CLI test provided as a YAML file. + +Requirements +------------ + +- Python 3.7 or later +- Either ruamel.yaml (preferred) or pyyaml, from pip, conda or similar +- Self-testing needs pytest (`python3 -m pytest`) + +Usage +----- + +A minimal example to run all tests defined in `test_proj.yaml` is: +``` +$ python3 run_cli_test.py test_proj.yaml +``` + +To see full usages, run `python3 run_cli_test.py --help` + +Test file +--------- + +Test files are defined in YAML format, and are designed to run with one +executable. The top-level keys are: + +- `exe`: (required) executable name, e.g. `proj`. This can be overridden + from the command-line using (e.g.) `--exe /path/to/build/bin/proj` +- `env`: (optional) mapping of environment variables common to all tests +- `comment`: (optional) comment to describe purpose of tests +- `tests`: (required) list of tests, described next + +Each test item have the optional keys: + +- `args`: command-line arguments passed as a single string, or as a list of + individual string arguments +- `comment`: comment to describe the test +- `env`: mapping of environment variables +- `input`: standard input for program, either as string or bytes +- `stdout`: expected standard output from program, either as string or bytes +- `stderr`: expected standard error from program as a string +- `out`: expected combined `stdout` and `stderr` as a string; + this option can't be used with `stdout` and/or `stderr` +- `exitcode`: expected exit code (or return code) from the program, default 0 +- `skipif`: a Python expression to evaluate if test should be skipped; + to access the environment variable mapping, use (e.g.) `env.get('VAR')`; + other special variables include `byteorder` (either "big" or "little") and + `platform` (usually "linux", "darwin", or "win32") + +Each test may have additional features: + +- `file` - either a mapping or list of mappings with required keys `name` (str) + and `content` (str or bytes), used to specify create one or more files, + then removed after test. The `name` can specify a file to be written to the + current working directory, or an absolult path to another location. The + path may have a special `$tmpdir/file.txt` to write into a temporary + directory, described next. +- `tmpdir` - create a temporary directory, and copy zero or more files + listed in `copy`. + +Lastly, test resuls can be post-processed using several commands, processed +in the same order they are specified: + +- `grep`: capture lines that match pattern +- `grep-v`: capture lines that don't match pattern +- `sub`: substitute pattern with replacement, similar to `sed s/pat/repl/` +- `head`: select the first *n* lines +- `tail`: select the last *n* lines +- `sort`: sort the lines + +Development +----------- + +Running self-tests with pytest: +``` +python3 -m pytest run_cli_test.py -v +``` + +Running coverage scan: +``` +python3 -m coverage run --source=. -m pytest run_cli_test.py +python3 -m coverage html +``` +""" +############################################################################### +# +# Project: PROJ +# Purpose: Test command-line interface +# Author: Mike Taves +# +############################################################################### +# Copyright (c) 2024, Mike Taves +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +############################################################################### + +__author__ = "Mike Taves" +__version__ = "0.1" + +import difflib +import functools +import os +import re +import shlex +import shutil +import subprocess +import sys +import tempfile +from collections.abc import Mapping +from copy import deepcopy +from dataclasses import dataclass, field +from pathlib import Path +from textwrap import dedent +from typing import List, Optional, Union + +# at runtime, import either ruamel.yaml or pyyaml lib + +# always show unbuffered output +print = functools.partial(print, flush=True) + + +def sub_env_var(txt: str, env: dict) -> str: + """Substitute environment variables into string, if found. + + Also change pathsep for Windows from ':' to ';'. + """ + if os.pathsep != ":" and ":" in txt: + txt = txt.replace(":", os.pathsep) + if "$" not in txt: + return txt + pat_subvar = [ + (r"\$([a-zA-Z_]\w*)", "${var}"), # applies to $VAR + (r"\$\{([a-zA-Z_]\w*)\}", "${{{var}}}"), # and to ${VAR} + ] + for pat, subvar in pat_subvar: + for var in set(re.findall(pat, txt)): + if var in env: + txt = txt.replace(subvar.format(var=var), env[var]) + else: + print(f"env var {var} not found", file=sys.stderr) + if "$" not in txt: + return txt + return txt + + +def eval_skipif(expr: str, env: dict) -> bool: + """Evaluate an expression to determine if test should be skipped.""" + import ast + + if not expr: + return False + + # Add a few useful system constants + eval_env = {"env": env} + if "byteorder" in expr: + eval_env["byteorder"] = sys.byteorder # type: ignore + if "platform" in expr: + eval_env["platform"] = sys.platform # type: ignore + + # Declare "safe" ast node types + # fmt: off + safe_nodes = [ + "Expression", "Load", "Name", "Compare", "Subscript", "FormattedValue", "Index", + "Dict", "Set", "List", "Tuple", "Constant", "JoinedStr", "Num", "Str", "NameConstant", + "BoolOp", "BinOp", "UnaryOp", "IfExp", "And", "Or", + "Eq", "NotEq", "Lt", "LtE", "Gt", "GtE", "Is", "IsNot", "In", "NotIn", + "Add", "Sub", "Mult", "Div", "Mod", "FloorDiv", "Pow", + "Not", "BitOr", "BitAnd", "BitXor", "LShift", "RShift", "Invert", + ] + # fmt: on + expr_tree = ast.parse(expr, mode="eval") + # First scan to find acceptable nodes to ignore + ignore_ids = set() + for node in ast.walk(expr_tree): + if isinstance(node, ast.Call): + child_nodes = list(ast.iter_child_nodes(node)) + nnode = child_nodes[0] if len(child_nodes) > 0 else None + if isinstance(nnode, ast.Attribute) and 1 <= len(child_nodes) <= 3: + if nnode.value.id == "env" and nnode.attr == "get": # type: ignore + # Allow: env.get("key", "default") + ignore_ids.add(id(node)) + for child in child_nodes: + ignore_ids.add(id(child)) + # Second scan to raise issues with expression + for node in ast.walk(expr_tree): + if isinstance(node, ast.Name) and node.id not in eval_env: + raise ValueError(f"undefined name {node.id!r}") + elif id(node) in ignore_ids: + continue + node_name = type(node).__name__ + if node_name not in safe_nodes: + raise ValueError(f"unsafe expression {expr!r}, contains {node_name!r}") + + res = eval(expr, eval_env) + return bool(res) + + +@dataclass +class TmpDir: + """Create a temporary directory, and optionally copy files.""" + + copy: list = field(default_factory=list) + + def __post_init__(self): + self._prepared = False + if not isinstance(self.copy, list): + raise ValueError("tmpdir copy must be a list") + + def prepare(self, env): + """Create temporary directory and copy files into it.""" + if self._prepared: + return + self.strpth = tempfile.mkdtemp() + env["tmpdir"] = self.strpth # used by sub_env_var + self.pth = Path(self.strpth) + self.copy_files = [] + for idx, pth in enumerate(self.copy): + sub_pth = sub_env_var(pth, env) + if sub_pth != pth: + self.copy[idx] = sub_pth + src_pth = Path(sub_pth) + if not src_pth.exists(): + raise FileNotFoundError(f"cannot find {src_pth}") + dst_pth = self.pth / src_pth.name + if dst_pth.exists(): + raise FileExistsError(f"file exists {dst_pth}") + dst_pth.write_bytes(src_pth.read_bytes()) + self.copy_files.append(src_pth) + self._prepared = True + + def sub_var(self, txt) -> str: + """Substitute string with $tmpdir into this temporary path.""" + if not self._prepared: + raise ValueError(f"{self.__class__} not prepared") + if "$tmpdir" in txt: + txt = re.sub(r"(\$tmpdir)\b", self.strpth, txt) + return txt + + def cleanup(self): + if self._prepared: + shutil.rmtree(self.strpth) + self._prepared = False + + def __del__(self): + if hasattr(self, "cleanup"): + self.cleanup() + + +@dataclass +class File: + """Write a named file with content. + + File name should not already exist in filesystem. Path can + include "$tmpdir" if already using TmpDir. + """ + + name: str + content: Union[str, bytes] + + def __post_init__(self): + self._prepared = False + if not isinstance(self.name, (str, os.PathLike)): + raise ValueError("file name must be str or path-like") + if isinstance(self.content, str): + if len(self.content) > 0 and not self.content.endswith("\n"): + self.content += "\n" + elif not isinstance(self.content, bytes): + raise ValueError("file content must be str or bytes") + + def prepare(self, env): + if self._prepared: + return + self.name = sub_env_var(self.name, env) + self.pth = Path(self.name) + if self.pth.exists(): + raise FileExistsError(f"{self.name} exists!") + file_contents = self.content + if isinstance(file_contents, str): + self.pth.write_text(file_contents, encoding="utf-8") + else: + self.pth.write_bytes(file_contents) + self._prepared = True + + def cleanup(self): + if self._prepared: + if self.pth.exists(): + self.pth.unlink() + self._prepared = False + + def __del__(self): + if hasattr(self, "cleanup"): + self.cleanup() + + +@dataclass +class Test: + args: List[str] = field(default_factory=list) + comment: Optional[str] = None + env: dict = field(default_factory=dict) + input: Union[None, str, bytes] = None # or "in" + stdout: Union[None, List[str], bytes] = None + stderr: Union[None, List[str]] = None + out: Union[None, str, List[str]] = None + out_cmds: dict = field(default_factory=dict) + exitcode: int = 0 + skipif: Optional[str] = None + file: List[File] = field(default_factory=list) + tmpdir: Optional[TmpDir] = None + + __test__ = False # prevent pytest from autodiscover + expected_out_cmds = ["grep", "grep-v", "sub", "head", "tail", "sort"] + + @classmethod + def from_item(cls, verbose=0, **item): + cls_kwargs = {} + out_cmds = {} # keep order + for key in item.keys(): + value = item[key] + if key in cls.expected_out_cmds: + out_cmds[key] = value + else: + if key == "in": # rename reserved Python name + key = "input" + cls_kwargs[key] = value + return cls(**cls_kwargs, out_cmds=out_cmds) + + def __post_init__(self): + """Do some checks and modify data, but hold-off creating files etc.""" + self._prepared = False + self.skip = False + + if isinstance(self.args, str): + self.args = shlex.split(self.args) + if isinstance(self.input, str) and not self.input.endswith("\n"): + self.input += "\n" + + def text2list(text): + if not text: + return [] + if not text.endswith("\n"): + text += "\n" + return text.splitlines(keepends=True) + + self.check_stdout = self.stdout is not None + if self.check_stdout and isinstance(self.stdout, str): + self.stdout = text2list(self.stdout) + self.check_stderr = self.stderr is not None + if self.check_stderr and isinstance(self.stderr, str): + self.stderr = text2list(self.stderr) + self.check_out = self.out is not None + if self.check_out and isinstance(self.out, str): + if self.check_stdout or self.check_stderr: + raise ValueError("out cannot be used with stdout or stderr") + self.stdout = text2list(self.out) + + for key in self.env.keys(): + value = self.env[key] + if not isinstance(value, str): + self.env[key] = str(value) + + if self.tmpdir is not None and not isinstance(self.tmpdir, TmpDir): + self.tmpdir = TmpDir(**self.tmpdir) + + if self.file: + # make into list of File + if not isinstance(self.file, list): + self.file = [self.file] + for idx, file in enumerate(self.file): + if not isinstance(file, File): + self.file[idx] = File(**file) + + for key in list(self.out_cmds): + value = self.out_cmds[key] + if key in {"grep", "grep-v"}: + if isinstance(value, str): + self.out_cmds[key] = [value] + elif not isinstance(value, list): + raise ValueError( + f"unsupported grep type {type(value)} for {value}", + ) + elif key == "sub": + if ( + not isinstance(value, list) + or len(value) != 2 + or not all(isinstance(val, str) for val in value) + ): + raise ValueError("sub should be a list of 2 str") + + def prepare(self, exe: str, global_env: dict): + if not self._prepared: + self.exe = exe + self.global_env = global_env.copy() + if self.skipif is not None: + self.skip = eval_skipif(self.skipif, self.global_env) + if self.skip: + return + if self.tmpdir is not None: + self.tmpdir.prepare(self.global_env) + for idx, arg in enumerate(self.args): + arg2 = self.tmpdir.sub_var(arg) + if arg != arg2: + self.args[idx] = arg2 + for key in self.env.keys(): + self.env[key] = sub_env_var(str(self.env[key]), self.global_env) + self.global_env.update(self.env) + for file in self.file: + file.prepare(self.global_env) + self._prepared = True + + def get_cmd(self) -> str: + """Get an approximate POSIX shell command to replicate test.""" + if self.skip: + raise ValueError("test is skipped") + elif not self._prepared: + raise ValueError("test not prepared") + cmd = "" + if self.tmpdir is not None: + cmd += f"mkdir {shlex.quote(self.tmpdir.strpth)}\n" + for pth in self.tmpdir.copy_files: + cmd += f"cp {shlex.quote(str(pth))} {shlex.quote(self.tmpdir.strpth)}\n" + for file in self.file: + efile_name = shlex.quote(file.name) + file_content = file.content + if len(file_content) == 0: + cmd += f"touch {efile_name}\n" + elif isinstance(file_content, str): + num_file_lines = sum( + 1 if len(line) > 0 else 0 for line in file_content.splitlines() + ) + if num_file_lines == 1: + cmd += "echo " + file_content_rstrip = file_content.rstrip() + if file_content_rstrip.isprintable(): + cmd += shlex.quote(file_content_rstrip) + else: + # best attempt to capture Unicode and other + cmd += "-e " + repr(file_content_rstrip) + cmd += f" > {efile_name}\n" + else: + cmd += f"cat << EOF > {efile_name}\n{file_content}EOF\n" + elif isinstance(file_content, bytes): + cmd += f"printf {file_content.decode('utf-8')!r} > {efile_name}\n" + num_input = 0 + if isinstance(self.input, str): + num_input = sum( + 1 if len(line) > 0 else 0 for line in self.input.splitlines() + ) + if num_input == 1: + cmd += "echo " + input_rstrip = self.input.rstrip() + if input_rstrip.isprintable(): + cmd += shlex.quote(input_rstrip) + else: + # best attempt to capture Unicode and other + cmd += f"-e {input_rstrip!r}" + cmd += " | " + elif isinstance(self.input, bytes): + cmd += f"printf {repr(self.input)[1:]} | " + for key, value in self.env.items(): + cmd += f"{key}={shlex.quote(value)} " + cmd += shlex.quote(self.exe) + for arg in self.args: + cmd += " " + shlex.quote(arg) + if isinstance(self.input, str) and num_input > 1: + cmd += " < int: + """Run all tests.""" + failures = [] + num_fail = 0 + num_pass = 0 + num_skip = 0 + glob_env = glob_env.copy() + glob_env.update(self.env) + for num, test in enumerate(self.tests): + test.prepare(self.exe, glob_env) + if self.verbose > 1: + print("-" * 28) + print(f"Test {num + 1}" + (f": {test.comment}" if test.comment else "")) + print(test.get_cmd()) + if test.skip: + num_skip += 1 + if self.verbose == 1: + print("x", end="") + elif self.verbose > 1: + print(f"Test skipped: {test.skipif}") + continue + elif self.verbose > 1 and test.skipif is not None: + print(f"Test not skipped: {test.skipif}") + result = test.run() + if result.failed: + num_fail += 1 + result.num = num + if self.verbose == 1: + print("F", end="") + result.cmd = test.get_cmd() + failures.append(result) + elif self.verbose > 1: + print("Test failed", file=sys.stderr) + result.describe_nonfail() + result.describe_fail() + if exitfirst: + test.cleanup() + break + else: + num_pass += 1 + if self.verbose == 1: + print(".", end="") + elif self.verbose > 1: + result.describe_nonfail() + print("Test passed") + test.cleanup() + if self.verbose == 1: + print() + + # show/update failures after all tests have run + for result in failures: + if self.verbose == 1: + print("-" * 28) + print(f"Test {result.num + 1} failed", file=sys.stderr) + if result.expected.comment is not None: + print(f"comment: {result.expected.comment}") + if result.expected.skipif is not None: + print(f"Test not skipped: {result.expected.skipif}") + print(result.cmd) + result.describe_nonfail() + result.describe_fail() + if self.update: + result.update_expected(self) + + if self.update: + filename, data, yaml = self.filename, self.data, self.yaml # type: ignore + with open(filename, "w", encoding="utf-8") as fp: + yaml.dump(data, fp) + if self.verbose: + print(f"Updated {filename}") + + if self.verbose: + if self.verbose > 1 or num_fail > 0: + print("-" * 28) + msg_list = [] + if num_pass: + plr = "" if num_pass == 1 else "s" + msg_list.append(f"{num_pass} test{plr} passed") + if num_fail: + plr = "" if num_fail == 1 else "s" + msg_list.append(f"{num_fail} test{plr} failed") + if num_skip: + plr = "" if num_skip == 1 else "s" + msg_list.append(f"{num_skip} test{plr} skipped") + if len(self) > 1 and len(msg_list) == 1: + msg = f"All {msg_list[0]}" + else: + msg = ", ".join(msg_list) + if num_fail: + if self.verbose: + print(msg, file=sys.stderr) + return 1 + if self.verbose: + print(msg) + return 0 + + +def main(filename, exe=None, env=None, exitfirst=False, update=False, verbose=1): + tester = Tester.from_yaml(filename, update=update, verbose=verbose) + if exe is not None: + tester.exe = exe + glob_env = os.environ.copy() + # Add/update PWD, which may be out-of-sync + glob_env["PWD"] = str(Path.cwd()) + glob_env.update(tester.env) + if env is not None: + glob_env.update(env) + if verbose: + print("Relevant environment variables:") + for key, value in glob_env.items(): + if key.startswith("PROJ") or "NABLED" in key: + print(f" {key}={value}") + # Check exe + exe_path = Path(tester.exe) + full_exe_path = str(exe_path) + if exe_path.is_dir(): + raise FileNotFoundError(f"'{exe_path}' is a directory, not a path to an EXE") + elif tester.exe[1:3] == ":/": + # CMake passes paths with forward slashes, which breaks D:/path/to/invproj.exe + if full_exe_path[1:3] == ":/": # on MSYS2 force to :\ + full_exe_path = full_exe_path.replace("/", "\\") + tester.exe = full_exe_path + elif exe_path.is_absolute(): + if not exe_path.exists(): + raise FileNotFoundError(f"cannot find '{tester.exe}' (does not exist)") + else: + full_exe_path = shutil.which(tester.exe) + if full_exe_path is None: + raise FileNotFoundError(f"cannot find '{tester.exe}' (not found on PATH)") + if verbose: + print(f"Testing '{full_exe_path}'") + return tester.run(glob_env, exitfirst=exitfirst) + + +if __name__ == "__main__": + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument("filename") + parser.add_argument( + "--exe", help="path to executable; overrides exe from test file (if defined)" + ) + parser.add_argument( + "--env", action="append", help="environment variable, e.g. 'PROJ_NETWORK=ON'" + ) + parser.add_argument( + "-x", + "--exitfirst", + action="store_true", + help="exit instantly on first failed test", + ) + parser.add_argument( + "--update", + action="store_true", + help="update filename with new results", + ) + parser.add_argument( + "--verbose", + type=int, + default=1, + help="0 silent (except errors), 1 (default) some messages, 2 more more messages", + ) + args = parser.parse_args() + + if args.env is not None: + env_d = {} + for item in args.env: + if item.count("=") != 1: + raise ValueError(f"env {item!r} does not use KEY=VALUE style") + key, value = item.split("=") + env_d[key] = value + args.env = env_d + sys.exit(main(**vars(args))) + + +# %% Tests for this utility + + +def test_sub_env_var(): + env = {"foo": "baz"} + assert sub_env_var("foo=bar", env) == "foo=bar" + assert sub_env_var("$foo/bar", env) == "baz/bar" + assert sub_env_var("line with ${foo}. Or $foo.", env) == "line with baz. Or baz." + assert sub_env_var("what $food this?", env) == "what $food this?" + + +def test_eval_skipif(): + import pytest + + assert eval_skipif("", {}) is False + assert eval_skipif("0", {}) is False + assert eval_skipif("not True is False", {}) is True + assert eval_skipif("None is not True", {}) is True + env = {"foo": "bar"} + assert eval_skipif("env['foo'] == 'bar'", env) is True + assert eval_skipif("env['foo'][1] == 'a'", env) is True + assert eval_skipif("env.get('foo') == 'bar'", env) is True + assert eval_skipif("env.get('no') == 'bar'", env) is False + assert eval_skipif("env.get('no', 'bar') == 'bar'", env) is True + assert eval_skipif("""f"re{env['foo']}" == 'rebar'""", env) is True + assert eval_skipif("[1] != [2]", {}) is True + assert eval_skipif("1 in (1,)", {}) is True + assert eval_skipif("1 in {1, 2}", {}) is True + assert eval_skipif("1 not in {3: 4}", {}) is True + assert eval_skipif("2 - 1 < 2 + 1 * 2 and 1 / 2 <= 2 // 2", {}) is True + assert eval_skipif("1 > 2 ** 2 or 1 >= 2", {}) is False + assert eval_skipif("1 | 4 >> 1 if 4 % 1 << 2 else 2 & ~3 ^ 1", {}) is True + + # special values + assert eval_skipif("byteorder == 'little'", {}) is (sys.byteorder == "little") + assert eval_skipif("platform in ('linux', 'darwin')", {}) is ( + sys.platform in ("linux", "darwin") + ) + + # errors + with pytest.raises(ValueError, match="undefined name 'abs'"): + eval_skipif("abs == 'bar'", {}) # missing variable + with pytest.raises(ValueError, match="unsafe expression"): + eval_skipif("sys.exit()", {}) + with pytest.raises(ValueError, match="unsafe expression"): + eval_skipif("eval('sys.exit()')", {}) + with pytest.raises(ValueError, match="unsafe expression"): + eval_skipif("exec('sys.exit()')", {}) + with pytest.raises(ValueError, match="unsafe expression"): + eval_skipif("foo.upper() == 'X'", {"foo": "x"}) # Call, Attribute + + +def test_tmpdir(): + import pytest + + td = TmpDir() + assert td.copy == [] + env = {} + td.prepare(env) + td.prepare(env) # check subsequent call + assert list(env.keys()) == ["tmpdir"] + assert td.strpth == env["tmpdir"] + assert td.pth.exists() + td.cleanup() + assert not td.pth.exists() + + prevdir = Path().cwd() + with tempfile.TemporaryDirectory() as otd: + os.chdir(otd) + text_pth = Path("my file.txt") + text_pth.write_text("some\nlines\n") + bin_pth = Path("file.bits") + bin_pth.write_bytes(b"\x02\x03\x04\x05") + td = TmpDir(["my file.txt", "file.bits"]) + assert td.copy == ["my file.txt", "file.bits"] + td.prepare(env) + assert td.pth.exists() + assert set(pth.name for pth in td.pth.iterdir()) == {"my file.txt", "file.bits"} + assert text_pth.read_text() == (td.pth / "my file.txt").read_text() + assert bin_pth.read_bytes() == (td.pth / "file.bits").read_bytes() + assert td.sub_var("$tmpdir/my file.txt") == f"{td.strpth}/my file.txt" + assert td.sub_var("${tmpdir}/my file.txt") == "${tmpdir}/my file.txt" + assert td.sub_var("$tmpdirs/my file.txt") == "$tmpdirs/my file.txt" + td.cleanup() + assert not td.pth.exists() + os.chdir(prevdir) + + # errors + with pytest.raises(ValueError, match="copy must be a list"): + TmpDir("not a list") + td = TmpDir(["/not/a/file.txt"]) + with pytest.raises(ValueError, match="not prepared"): + td.sub_var("xyz") + with pytest.raises(FileNotFoundError, match=r"cannot find /not/a/file\.txt"): + td.prepare({}) + td = TmpDir(["$DIR/file.txt"]) + with pytest.raises(FileNotFoundError, match=r"cannot find /nope/file\.txt"): + td.prepare({"DIR": "/nope"}) + + +def test_file(): + import pytest + + prevdir = Path().cwd() + with tempfile.TemporaryDirectory() as otd: + os.chdir(otd) + td_pth = Path(otd) + + text_file = File("my file.txt", "some\nlines\n") + text_pth = td_pth / "my file.txt" + assert not text_pth.exists() + env = {} + text_file.prepare(env) + text_file.prepare(env) # check subsequent call + assert text_pth != text_file.pth + assert env == {} + assert text_pth.read_text() == "some\nlines\n" + text_file.cleanup() + assert not text_pth.exists() + + bin_file = File("file.bits", b"\x02\x03\x04\x05") + bin_file.prepare(env) + assert (td_pth / "file.bits").read_bytes() == b"\x02\x03\x04\x05" + bin_file.cleanup() + os.chdir(prevdir) + + # errors + with pytest.raises(ValueError, match="file name must be str or path-like"): + File(None, "some\nlines\n") + with pytest.raises(ValueError, match="file content must be str or bytes"): + File("my file.txt", None) + + +def test_tester_from_yaml(): + fd, fname = tempfile.mkstemp() + with os.fdopen(fd, "w") as fp: + fp.write( + dedent( + """\ + exe: cat + env: + FOO: 1 + tests: + - in: one + stdout: one + sort: + - env: + FOO: 2 + in: two + sub: ["w", "RrR"] + out: tRrRo + """ + ) + ) + tester = Tester.from_yaml(fname) + os.unlink(fname) + + assert tester.exe == "cat" + assert tester.env == {"FOO": "1"} + assert len(tester) == 2 + assert tester[0] == tester[-2] + assert tester[0] != tester[-1] + + tests = [ + Test(input="one", stdout="one", out_cmds={"sort": None}), + Test( + input="two", + out="tRrRo", + env={"FOO": "2"}, + out_cmds={"sub": ["w", "RrR"]}, + ), + ] + assert tester == Tester("cat", env={"FOO": 1}, tests=tests) + assert tester.run({}) == 0 + + +def test_tester_from_yaml_with_update(): + import pytest + + pytest.importorskip("ruamel.yaml") + fd, fname = tempfile.mkstemp() + with os.fdopen(fd, "w") as fp: + fp.write( + dedent( + """\ + exe: cat + env: + FOO: '1' + tests: + - in: | + this is the new expected result + over two lines + stdout: |- + replace me! + # some comment + - in: a b c + out: | + d e f + exitcode: 8 + - in: here it is + stderr: erase me + - in: "tab\\tline" + out: tabline + - in: !!binary | + AAAAAAAA4D8AAAAAAADQPw== + # base64.b64encode(np.array([0.5, 0.25]).tobytes()) + stdout: !!binary "" + """ + ) + ) + tester = Tester.from_yaml(fname, preferred="ruamel.yaml", update=True) + tester.run({}) + with open(fname, "r") as fp: + new = fp.read() + assert new == dedent( + """\ + exe: cat + env: + FOO: '1' + tests: + - in: | + this is the new expected result + over two lines + stdout: | + this is the new expected result + over two lines + # some comment + - in: a b c + out: | + a b c + exitcode: 0 + - in: here it is + stderr: '' + - in: "tab\\tline" + out: "tab\\tline" + - in: !!binary | + AAAAAAAA4D8AAAAAAADQPw== + # base64.b64encode(np.array([0.5, 0.25]).tobytes()) + stdout: !!binary | + AAAAAAAA4D8AAAAAAADQPw== + """ + ) + os.unlink(fname) + + +def test_test(): + import pytest + + # simple text pass + test = Test(input="text", stdout="text", env={"FOO": 1}) + test.prepare("cat", {}) + assert not test.skip + assert test.env == {"FOO": "1"} + assert test.get_cmd() == "echo text | FOO=1 cat" + result = test.run() + assert result, result.describe_fail() + assert result.failed == set() + assert result == TestResult(["text\n"], [], 0, test) + + # simple text fail + test = Test(input="\text", out="text") + test.prepare("cat", {}) + assert not test.skip + assert test.get_cmd() == r"echo -e '\text' | cat" + result = test.run() + assert not result + assert result.failed == {"out"} + assert result == TestResult(["\text\n"], [], 0, test) + + # multiple fails + test = Test("notafile", stdout="should be nothing", stderr="good file") + test.prepare("ls", {}) + assert test.get_cmd() == "ls notafile" + result = test.run() + assert not result + assert result.failed == {"exitcode", "stdout", "stderr"} + + # multi-lines + test = Test(input="one\ntwo", stdout="text") + test.prepare("cat", {}) + assert test.get_cmd() == dedent( + """\ + cat < file1.txt + printf 'two' > file2.txt + echo -e '\\ufeff02 1' > file3_with_bom.txt + cat << EOF > 'last file.txt' + 3 4 + 5 6 + EOF + ls -1 + rm file1.txt file2.txt file3_with_bom.txt 'last file.txt'""" + ) + result = test.run() + assert result, result.describe_fail() + test.cleanup() + os.chdir(prevdir) + + +def test_out_cmds(): + import pytest + + fd, fname = tempfile.mkstemp(suffix=".txt") + with os.fdopen(fd, "w") as fp: + fp.write("one\ntwo\nthree\nfour\n") + + test = Test(fname, out_cmds={"sort": None}, out="four\none\nthree\ntwo\n") + test.prepare("cat", {}) + assert test.get_cmd() == f"cat {fname} 2>&1 | sort" + result = test.run() + assert result, result.describe_fail() + + test = Test(fname, out_cmds={"grep": "o"}, stdout="one\ntwo\nfour\n") + test.prepare("cat", {}) + assert test.get_cmd() == f"cat {fname} | grep o" + result = test.run() + assert result, result.describe_fail() + + test = Test(fname, out_cmds={"grep": "none"}, stdout="") + test.prepare("cat", {}) + assert test.get_cmd() == f"cat {fname} | grep none" + result = test.run() + assert result, result.describe_fail() + + test = Test(fname, out_cmds={"grep-v": "o"}, stdout="three") + test.prepare("cat", {}) + assert test.get_cmd() == f"cat {fname} | grep -v o" + result = test.run() + assert result, result.describe_fail() + + test = Test( + fname, out_cmds={"sub": ["o", "OO"]}, stdout="OOne\ntwOO\nthree\nfOOur\n" + ) + test.prepare("cat", {}) + assert test.get_cmd() == f"cat {fname} | sed s/o/OO/" + result = test.run() + assert result, result.describe_fail() + + test = Test(fname, out_cmds={"head": 3, "sort": None}, stdout="one\nthree\ntwo\n") + test.prepare("cat", {}) + assert test.get_cmd() == f"cat {fname} | head -n 3 | sort" + result = test.run() + assert result, result.describe_fail() + + test = Test(fname, out_cmds={"tail": 1}, stdout="four") + test.prepare("cat", {}) + assert test.get_cmd() == f"cat {fname} | tail -n 1" + result = test.run() + assert result, result.describe_fail() + + # errors + with pytest.raises(ValueError, match="unsupported grep type"): + Test(fname, out_cmds={"grep": 1}) + with pytest.raises(ValueError, match="sub should be a list of 2 str"): + Test(fname, out_cmds={"sub": ["o"]}) + with pytest.raises(ValueError, match="sub should be a list of 2 str"): + Test(fname, out_cmds={"sub": [1, 2]}) + test = Test(fname, out_cmds={"silly": None}) + test.prepare("cat", {}) + with pytest.raises(NotImplementedError, match="unsupported out cmd: silly=None"): + test.get_cmd() + with pytest.raises(NotImplementedError, match="unsupported out cmd: silly=None"): + test.run() + os.unlink(fname) diff --git a/test/cli/td_out.dist b/test/cli/td_out.dist deleted file mode 100644 index df04269b03..0000000000 --- a/test/cli/td_out.dist +++ /dev/null @@ -1,45 +0,0 @@ -############################################################## -1st through ntv1, 2nd through conus -111d00'00.000"W 44d00'00.000"N 0.0 111d0'3.208"W 43d59'59.732"N 0.000 -111d00'00.000"W 39d00'00.000"N 0.0 111d0'2.604"W 38d59'59.912"N 0.000 -############################################################## -As above, but without ntv1 everything goes through conus file. -111d00'00.000"W 44d00'00.000"N 0.0 111d0'2.788"W 43d59'59.725"N 0.000 -111d00'00.000"W 39d00'00.000"N 0.0 111d0'2.604"W 38d59'59.912"N 0.000 -############################################################## -Test --bbox -141.01,40.04,-47.74,83.17 NAD27 NAD83 (using NTv2) -40d30'0.368"N 59d59'56.617"W 0.000 -############################################################## -Test --area "USA - CONUS including EEZ" NAD27 NAD83 (using conus) -43d59'59.725"N 111d0'2.788"W 0.000 -* * inf -############################################################## -Test MD used where available -79d58'00.000"W 37d02'00.000"N 0.0 79d58'0.005"W 37d1'59.998"N 0.000 -79d58'00.000"W 36d58'00.000"N 0.0 79d57'59.128"W 36d58'0.501"N 0.000 -79d58'00.000"W 37d02'00.000"N 0.0 79d57'59.126"W 37d2'0.501"N 0.000 -79d58'00.000"W 36d58'00.000"N 0.0 79d57'59.128"W 36d58'0.501"N 0.000 -############################################################## -Test that we use grid shift files even if we are right on the -edge or even a wee bit outside (#141). --5.5 52.0 -5.501106465528 51.999890470284 0.000000000000 --5.5000000000001 52.0000000000001 -5.501106465529 51.999890470284 0.000000000000 --5.4999 51.9999 -5.501006458305 51.999790470257 0.000000000000 --5.5001 52.0 -5.500100000000 52.000000000000 0.000000000000 --5.5 52.0 -5.498893534472 52.000109529716 0.000000000000 --5.5000000000001 52.0000000000001 -5.498893534472 52.000109529717 0.000000000000 --5.4999 51.9999 -5.498793593803 52.000009531513 0.000000000000 --5.5001 52.0 -5.500100000000 52.000000000000 0.000000000000 -############################################################## -NAD27 -> NAD83: 1st through ntv1 or ntv2, 2nd through conus -55d00'00.000"N 111d00'00.000"W 0.0 55.0001 -111.0009 0.0000 -39d00'00.000"N 111d00'00.000"W 0.0 39.0000 -111.0007 0.0000 -############################################################## -WGS84 (2D) -> WGS84+EGM96 -2dE 49dN 0 2.00 49.00 0.00 -############################################################## -WGS84 (3D) -> WGS84+EGM96 -2dE 49dN 0 2.00 49.00 -45.06 -############################################################## -WGS84 (2D), promoted to 3D -> WGS84+EGM96 -2dE 49dN 0 2.00 49.00 -45.06 diff --git a/test/cli/test27 b/test/cli/test27 deleted file mode 100755 index c2eaf8f56b..0000000000 --- a/test/cli/test27 +++ /dev/null @@ -1,852 +0,0 @@ -: -# Script to test most of the SPCS zones. -# This script generated from execution of NMD's program l176, where -# the second pair of numbers are respective easting and northing output. -# -# Proj will vary in the .001ft range with projections using Transverse -# Mercator due to greater precision of meridional distance function. -# -TEST_CLI_DIR=`dirname $0` -EXE=$1 - -usage() -{ - echo "Usage: ${0} " - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -if test -z "${PROJ_DATA}"; then - export PROJ_DATA="`dirname $0`/../../data" -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=proj_out27 -INIT_FILE=nad27 -# -echo "doing tests into file ${OUT}, please wait" -# -$EXE +units=us-ft +init=${INIT_FILE}:5001 -E -f '%.3f' >${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <" - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -if test -z "${PROJ_DATA}"; then - export PROJ_DATA="`dirname $0`/../../data" -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=proj_out83 -INIT_FILE=nad83 -# -echo "doing tests into file ${OUT}, please wait" -# -$EXE +units=us-ft +init=${INIT_FILE}:5001 -E -f '%.3f' >${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <" - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -if test -z "${PROJ_DATA}"; then - export PROJ_DATA="`dirname $0`/../../data" -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=proj_outIGNF - -INIT_FILE=IGNF -RES="-f %.3f" -# -echo "doing tests into file ${OUT}, please wait" -# -rm -f ${OUT} -echo "+init=${INIT_FILE}:NTFG +to +init=${INIT_FILE}:RGF93G" >>${OUT} -$EXE +init=${INIT_FILE}:NTFG +to +init=${INIT_FILE}:RGF93G -E >>${OUT} <>${OUT} -$EXE +init=${INIT_FILE}:LAMBE +to +init=${INIT_FILE}:LAMB93 -E $RES >>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} -$EXE +init=${INIT_FILE}:LAMBE +to +init=${INIT_FILE}:GEOPORTALFXX -E $RES >>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} -$EXE +init=${INIT_FILE}:RGF93G +to +init=${INIT_FILE}:GEOPORTALFXX -E $RES >>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} -$EXE +init=${INIT_FILE}:RGF93G +to +init=${INIT_FILE}:MILLER -E $RES >>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} <>${OUT} -$EXE +init=${INIT_FILE}:RGR92 +to +init=${INIT_FILE}:REUN47 -E $RES >>${OUT} < + Test various transformations depending on datum + files that are not always available +exe: cs2cs +env: + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES +tests: +- comment: 1st through ntv1, 2nd through conus + args: +proj=latlong +ellps=clrk66 +nadgrids=ntv1_can.dat,conus +to +proj=latlong +datum=NAD83 + in: | + 111d00'00.000"W 44d00'00.000"N 0.0 + 111d00'00.000"W 39d00'00.000"N 0.0 + out: |- + 111d0'3.208"W 43d59'59.732"N 0.000 + 111d0'2.604"W 38d59'59.912"N 0.000 +- comment: As above, but without ntv1 everything goes through conus file + # see data/CMakeLists.txt for "dir with space/myconus" + args: +proj=latlong +ellps=clrk66 '+nadgrids="dir with space/myconus"' +to +proj=latlong +datum=NAD83 + in: | + 111d00'00.000"W 44d00'00.000"N 0.0 + 111d00'00.000"W 39d00'00.000"N 0.0 + out: |- + 111d0'2.788"W 43d59'59.725"N 0.000 + 111d0'2.604"W 38d59'59.912"N 0.000 +- comment: Test --bbox -141.01,40.04,-47.74,83.17 NAD27 NAD83 (using NTv2) + args: --bbox -141.01,40.04,-47.74,83.17 NAD27 NAD83 + in: 40.5 -60 + out: | + 40d30'0.368"N 59d59'56.617"W 0.000 +- comment: Test --area "USA - CONUS including EEZ" NAD27 NAD83 (using conus) + args: --area "USA - CONUS including EEZ" NAD27 NAD83 + in: | + 44 -111 + 40.5 -60 + out: | + 43d59'59.725"N 111d0'2.788"W 0.000 + * * inf +- comment: Test MD used where available + args: +proj=latlong +ellps=clrk66 +nadgrids=MD,conus +to +proj=latlong +datum=NAD83 + in: | + 79d58'00.000"W 37d02'00.000"N 0.0 + 79d58'00.000"W 36d58'00.000"N 0.0 + out: |- + 79d58'0.005"W 37d1'59.998"N 0.000 + 79d57'59.128"W 36d58'0.501"N 0.000 +- comment: Similar to previous test, but using only conus + args: +proj=latlong +ellps=clrk66 +nadgrids=conus +to +proj=latlong +datum=NAD83 + in: | + 79d58'00.000"W 37d02'00.000"N 0.0 + 79d58'00.000"W 36d58'00.000"N 0.0 + out: |- + 79d57'59.126"W 37d2'0.501"N 0.000 + 79d57'59.128"W 36d58'0.501"N 0.000 +- comment: > + Test that we use grid shift files even if we are right on the + edge or even a wee bit outside (#141). + # Our test points are (1) right on mesh corner, (2) outside but within + # epsilon (3) inside a bit (4) outside by more than epsilon + args: +proj=latlong +ellps=WGS84 +nadgrids=ntf_r93.gsb,null +to +proj=latlong +datum=WGS84 -f %.12f + in: | + -5.5 52.0 + -5.5000000000001 52.0000000000001 + -5.4999 51.9999 + -5.5001 52.0 + out: |- + -5.501106465528 51.999890470284 0.000000000000 + -5.501106465529 51.999890470284 0.000000000000 + -5.501006458305 51.999790470257 0.000000000000 + -5.500100000000 52.000000000000 0.000000000000 +- comment: Inverted version of previous test + args: +proj=latlong +datum=WGS84 +to +proj=latlong +ellps=WGS84 +nadgrids=ntf_r93.gsb,null -f %.12f + in: | + -5.5 52.0 + -5.5000000000001 52.0000000000001 + -5.4999 51.9999 + -5.5001 52.0 + out: |- + -5.498893534472 52.000109529716 0.000000000000 + -5.498893534472 52.000109529717 0.000000000000 + -5.498793593803 52.000009531513 0.000000000000 + -5.500100000000 52.000000000000 0.000000000000 +- comment: "NAD27 -> NAD83: 1st through ntv1 or ntv2, 2nd through conus" + args: NAD27 NAD83 -f %.4f + in: | + 55d00'00.000"N 111d00'00.000"W 0.0 + 39d00'00.000"N 111d00'00.000"W 0.0 + out: |- + 55.0001 -111.0009 0.0000 + 39.0000 -111.0007 0.0000 +- comment: WGS84 (2D) -> WGS84+EGM96 + args: +init=epsg:4326 +to +init=epsg:4326 +geoidgrids=egm96_15.gtx + in: 2dE 49dN 0 + out: |- + 2.00 49.00 0.00 +- comment: WGS84 (3D) -> WGS84+EGM96 + args: +init=epsg:4979 +to +init=epsg:4326 +geoidgrids=egm96_15.gtx + in: 2dE 49dN 0 + out: |- + 2.00 49.00 -45.06 +- comment: WGS84 (2D), promoted to 3D -> WGS84+EGM96 + args: --3d +init=epsg:4326 +to +init=epsg:4326 +geoidgrids=egm96_15.gtx + in: 2dE 49dN 0 + out: |- + 2.00 49.00 -45.06 diff --git a/test/cli/test_cs2cs_flaky.yaml b/test/cli/test_cs2cs_flaky.yaml new file mode 100644 index 0000000000..e21bfcebf6 --- /dev/null +++ b/test/cli/test_cs2cs_flaky.yaml @@ -0,0 +1,39 @@ +comment: > + Do some testing of flaky transformation that do not depend on datum files. +exe: cs2cs +tests: +- comment: Test healpix inverse projection on sphere + args: > + +proj=latlong +a=1 +lon_0=0 +to + +proj=healpix +a=1 +lon_0=0 -f %.5f -I + in: | + 0 0.7853981633974483 + -1.5707963267948966 0 + out: |- + 0.00000 41.81031 0.00000 + -90.00000 0.00000 0.00000 +- args: > + +proj=latlong +a=5 +to + +proj=healpix +a=5 -f %.5f -I + in: | + 0.0 0.0 + 0.0 3.9269908169872414 + 0.0 -3.9269908169872414 + 7.853981633974483 0.0 + -7.853981633974483 0.0 + -15.707963267948966 0.0 + -11.780972450961723 7.853981633974483 + -11.780972450961723 -7.853981633974483 + 1.437378399445537 5.364369216432778 + 1.437378399445537 -5.364369216432778 + out: |- + 0.00000 0.00000 0.00000 + 0.00000 41.81031 0.00000 + 0.00000 -41.81031 0.00000 + 90.00000 0.00000 0.00000 + -90.00000 0.00000 0.00000 + -180.00000 0.00000 0.00000 + -180.00000 90.00000 0.00000 + -180.00000 -90.00000 0.00000 + 0.00000 60.00000 0.00000 + 0.00000 -60.00000 0.00000 diff --git a/test/cli/test_cs2cs_ignf.yaml b/test/cli/test_cs2cs_ignf.yaml new file mode 100644 index 0000000000..0b36df8793 --- /dev/null +++ b/test/cli/test_cs2cs_ignf.yaml @@ -0,0 +1,110 @@ +comment: > + Test some points in IGNF managed SRS. + The expected coordinates have been calculated by other means. +exe: cs2cs +env: + PROJ_NETWORK: ON +tests: +- args: +init=IGNF:NTFG +to +init=IGNF:RGF93G + in: 3.300866856 43.4477976569 0.0000 + out: | + 3d18'0.915"E 43d26'52.077"N 0.000 +- args: +init=IGNF:LAMBE +to +init=IGNF:LAMB93 -f %.3f + in: 600000.0000 2600545.4523 0.0000 + out: "652760.737\t7033791.243 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:LAMB93 -f %.3f + in: 135638.3592 2418760.4094 0.0000 + out: "187194.062\t6855928.882 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:LAMB93 -f %.3f + in: 998137.3947 2413822.2844 0.0000 + out: "1049052.258\t6843776.562 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:LAMB93 -f %.3f + in: 600000.0000 2200000.0000 0.0000 + out: "649398.872\t6633524.191 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:LAMB93 -f %.3f + in: 311552.5340 1906457.4840 0.0000 + out: "358799.172\t6342652.486 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:LAMB93 -f %.3f + in: 960488.4138 1910172.8812 0.0000 + out: "1007068.686\t6340907.237 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:LAMB93 -f %.3f + in: 600000.0000 1699510.8340 0.0000 + out: "645204.279\t6133556.746 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:LAMB93 -f %.3f + in: 1203792.5981 626873.17210 0.0000 + out: "1238837.253\t5057451.037 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 600000.0000 2600545.4523 0.0000 + out: "179040.148\t5610495.275 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 135638.3592 2418760.4094 0.0000 + out: "-303729.363\t5410118.356 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 998137.3947 2413822.2844 0.0000 + out: "592842.792\t5410120.554 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 600000.0000 2200000.0000 0.0000 + out: "179041.670\t5209746.080 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 311552.5340 1906457.4840 0.0000 + out: "-96825.465\t4909184.136 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 960488.4138 1910172.8812 0.0000 + out: "523880.019\t4909191.141 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 600000.0000 1699510.8340 0.0000 + out: "179047.633\t4708817.007 0.000" +- args: +init=IGNF:LAMBE +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 1203792.5981 626873.17210 0.0000 + out: "658259.467\t3623786.764 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 2d20'11.4239243" 50d23'59.7718445" 0.0 + out: "179040.151\t5610495.281 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:GEOPORTALFXX -f %.3f + in: -3d57'49.4051448" 48d35'59.7121716" 0.0 + out: "-303729.365\t5410118.352 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 7d44'12.1439796" 48d35'59.7832558" 0.0 + out: "592842.794\t5410120.550 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 2d20'11.4951975" 46d47'59.8029841" 0.0 + out: "179041.668\t5209746.077 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:GEOPORTALFXX -f %.3f + in: -1d15'48.9240599" 44d05'59.8251878" 0.0 + out: "-96825.467\t4909184.138 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 6d50'12.2276489" 44d06'00.0517019" 0.0 + out: "523880.022\t4909191.143 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 2d20'11.7754730" 42d18'00.0824436" 0.0 + out: "179047.634\t4708817.010 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:GEOPORTALFXX -f %.3f + in: 9d32'12.6680218" 41d24'00.3542556" 0.0 + out: "730783.054\t4608637.873 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:MILLER -f %.3f + in: 2d20'11.4239243" 50d23'59.7718445" 0.0 + out: "260098.730\t6140682.441 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:MILLER -f %.3f + in: -3d57'49.4051448" 48d35'59.7121716" 0.0 + out: "-441239.699\t5880610.004 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:MILLER -f %.3f + in: 7d44'12.1439796" 48d35'59.7832558" 0.0 + out: "861246.246\t5880612.827 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:MILLER -f %.3f + in: 2d20'11.4951975" 46d47'59.8029841" 0.0 + out: "260100.934\t5625762.156 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:MILLER -f %.3f + in: -1d15'48.9240599" 44d05'59.8251878" 0.0 + out: "-140662.197\t5252490.165 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:MILLER -f %.3f + in: 6d50'12.2276489" 44d06'00.0517019" 0.0 + out: "761061.291\t5252498.745 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:MILLER -f %.3f + in: 2d20'11.7754730" 42d18'00.0824436" 0.0 + out: "260109.601\t5009175.714 0.000" +- args: +init=IGNF:RGF93G +to +init=IGNF:MILLER -f %.3f + in: 9d32'12.6680218" 41d24'00.3542556" 0.0 + out: "1061637.534\t4889066.592 0.000" +- args: +init=IGNF:RGR92 +to +init=IGNF:REUN47 -f %.3f + in: 3356123.5400 1303218.3090 5247430.6050 + out: "3353420.949\t1304075.021 5248935.144" diff --git a/test/cli/test_cs2cs_locale.sh b/test/cli/test_cs2cs_locale.sh new file mode 100755 index 0000000000..8e711b22dd --- /dev/null +++ b/test/cli/test_cs2cs_locale.sh @@ -0,0 +1,124 @@ +#!/bin/bash + +# Script to do some locale testing. +# See test_cs2cs_various.yaml for general CLI testing. + +set -e + +TEST_CLI_DIR=$(dirname $0) +EXE=$1 +if test -z "${EXE}"; then + echo "Usage: ${0} " + exit 1 +fi +if test ! -x ${EXE}; then + echo "*** ERROR: Can not find '${EXE}' program!" + exit 1 +fi + +# Would be great to have a universale way of selecting a locale with +# a decimal separator that is not '.' +if command locale >/dev/null 2>/dev/null; then + if test `locale -a | grep fr_FR.utf8`; then + echo "Using locale with comma as decimal separator" + export LC_ALL=fr_FR.UTF-8 + export PROJ_USE_ENV_LOCALE=1 + fi +fi + +echo "============================================" +echo "Running ${0} using ${EXE}:" +echo "============================================" + +OUT=$(basename $0 .sh)_out + +# +echo "doing tests into file ${OUT}, please wait" +rm -f ${OUT} +# +echo "##############################################################" >> ${OUT} +echo Between two 3parameter approximations on same ellipsoid >> ${OUT} +# +$EXE +proj=latlong +ellps=bessel +towgs84=5,0,0 \ + +to +proj=latlong +ellps=bessel +towgs84=1,0,0 \ + -E >>${OUT} <> ${OUT} +echo Test input in grad >> ${OUT} +# +$EXE EPSG:4807 EPSG:27572 -E >>${OUT} <> ${OUT} +echo Test geocentric x/y/z generation. >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 \ + +to +proj=geocent +datum=WGS84 \ + -E >>${OUT} <> ${OUT} +echo Test geocentric x/y/z consumption. >> ${OUT} +# +$EXE +proj=geocent +datum=WGS84 \ + +to +proj=latlong +datum=WGS84 \ + -E >>${OUT} <> ${OUT} +echo Test conversion from geodetic latlong to geocentric latlong >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 \ + +to +proj=latlong +datum=WGS84 +geoc \ + -E >>${OUT} <> ${OUT} +echo Test conversion from geocentric latlong to geodetic latlong >> ${OUT} +# +$EXE +proj=latlong +datum=WGS84 +geoc \ + +to +proj=latlong +datum=WGS84 \ + -E >>${OUT} < + Test NTv2 support + + The expected output is modified to use a downsampled version of ntv2_0.gsb + found in PROJ's data/tests directory. +exe: cs2cs +env: + PROJ_NETWORK: NO + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES +tests: +- comment: Point in the ONwinsor subgrid + args: +proj=latlong +ellps=clrk66 +nadgrids=ntv2_0.gsb +to +proj=latlong +datum=NAD83 -w4 + in: | + 82d00'00.000"W 42d00'00.000"N 0.0 + 82d00'01.000"W 42d00'00.000"N 0.0 + 82d00'02.000"W 42d00'00.000"N 0.0 + 84d00'00.000"W 42d00'00.000"N 0.0 + out: | + 81d59'59.6104"W 42d0'0.1602"N 0.000 + 82d0'0.6104"W 42d0'0.1602"N 0.000 + 82d0'1.6104"W 42d0'0.1602"N 0.000 + 83d59'59.8623"W 42d0'0.1807"N 0.000 +- comment: Try with NTv2 and NTv1 together ... falls back to NTv1 + args: +proj=latlong +ellps=clrk66 +nadgrids=ntv2_0.gsb,ntv1_can.dat,conus +to +proj=latlong +datum=NAD83 -w4 + in: | + 99d00'00.000"W 65d00'00.000"N 0.0 + 111d00'00.000"W 46d00'00.000"N 0.0 + 111d00'00.000"W 47d30'00.000"N 0.0 + out: | + 99d0'1.5926"W 65d0'1.3478"N 0.000 + 111d0'3.1897"W 45d59'59.7489"N 0.000 + 111d0'2.8054"W 47d29'59.9899"N 0.000 +- comment: Switching between NTv2 subgrids + # Initial guess is in ALraymnd, going to parent CAwest afterwards + args: +proj=latlong +datum=NAD83 +to +proj=latlong +ellps=clrk66 +nadgrids=ntv2_0.gsb -d 8 + in: -112.5839956 49.4914451 0 + out: "-112.58307621\t49.49144267 0.00000000" +- comment: Interpolating very close (and sometimes a bit outside) to the edges a NTv2 subgrid (#209) + args: +proj=latlong +datum=NAD83 +to +proj=latlong +ellps=clrk66 +nadgrids=ntv2_0.gsb -d 8 + in: | + -115.58333333 51.25000000 0 + -115.58333333 51.25000010 0 + -115.58333334 51.25000000 0 + -115.49166667 51.07500000 0 + -115.49166668 51.07500000 0 + -115.49166667 51.07499990 0 + out: | + -115.58228512 51.24997866 0.00000000 + -115.58228512 51.24997876 0.00000000 + -115.58228513 51.24997866 0.00000000 + -115.49063575 51.07497568 0.00000000 + -115.49063576 51.07497568 0.00000000 + -115.49063575 51.07497558 0.00000000 +- comment: Attempt first with ntv2_0.gsb and then conus + args: +proj=longlat +datum=NAD27 +to +proj=longlat +datum=WGS84 -d 8 + in: -111.5 45.26 + out: "-111.50079772\t45.25992835 0.00000000" +- comment: "NAD27 -> NAD83: 1st through ntv2, 2nd through conus" + args: NAD27 NAD83 + in: | + 55d00'00.000"N 111d00'00.000"W 0.0 + 39d00'00.000"N 111d00'00.000"W 0.0 + out: | + 55d0'0.367"N 111d0'3.231"W 0.000 + 38d59'59.912"N 111d0'2.604"W 0.000 diff --git a/test/cli/test_cs2cs_various.yaml b/test/cli/test_cs2cs_various.yaml new file mode 100644 index 0000000000..b6c621c853 --- /dev/null +++ b/test/cli/test_cs2cs_various.yaml @@ -0,0 +1,1507 @@ +comment: > + Test various transformations that do not depend on datum files. +exe: cs2cs +tests: +- comment: Test raw ellipse to raw ellipse + args: +proj=latlong +ellps=clrk66 +to +proj=latlong +ellps=bessel + in: | + 79d58'00.000"W 37d02'00.000"N 0.0 + 79d58'00.000"W 36d58'00.000"N 0.0 + out: | + 79d58'W 37d2'N 0.000 + 79d58'W 36d58'N 0.000 +- comment: Test NAD27 to raw ellipse + args: +proj=latlong +datum=NAD27 +to +proj=latlong +ellps=bessel + in: 79d00'00.000"W 35d00'00.000"N 0.0 + out: | + 79dW 35dN 0.000 +- comment: Between two 3parameter approximations on same ellipsoid + args: +proj=latlong +ellps=bessel +towgs84=5,0,0 +to +proj=latlong +ellps=bessel +towgs84=1,0,0 + in: | + 0d00'00.000"W 0d00'00.000"N 0.0 + 79d00'00.000"W 45d00'00.000"N 0.0 + out: | + 0dE 0dN 0.000 + 78d59'59.821"W 44d59'59.983"N 0.000 +- comment: 3param to raw ellipsoid on same ellipsoid + args: +proj=latlong +ellps=bessel +towgs84=5,0,0 +to +proj=latlong +ellps=bessel + in: | + 0d00'00.000"W 0d00'00.000"N 0.0 + 79d00'00.000"W 45d00'00.000"N 0.0 + out: | + 0dE 0dN 0.000 + 79dW 45dN 0.000 +- comment: Test simple prime meridian handling + args: +proj=latlong +datum=WGS84 +pm=greenwich +to +proj=latlong +datum=WGS84 +pm=1 + in: | + 0d00'00.000"W 0d00'00.000"N 0.0 + 79d00'00.000"W 45d00'00.000"N 0.0 + out: | + 1dW 0dN 0.000 + 80dW 45dN 0.000 +- comment: Test support for the lon_wrap switch + args: +proj=latlong +datum=WGS84 +to +proj=latlong +datum=WGS84 +lon_wrap=180 + in: | + 1d00'00.000"W 10d00'00.000"N 0.0 + 0d00'00.000"W 10d00'00.000"N 0.0 + 0d00'00.000"E 10d00'00.000"N 0.0 + 1d00'00.000"E 45d00'00.000"N 0.0 + 179d00'00.000"E 45d00'00.000"N 0.0 + 181d00'00.000"E 45d00'00.000"N 0.0 + 350d00'00.000"E 45d00'00.000"N 0.0 + 370d00'00.000"E 45d00'00.000"N 0.0 + out: | + 359dE 10dN 0.000 + 0dE 10dN 0.000 + 0dE 10dN 0.000 + 1dE 45dN 0.000 + 179dE 45dN 0.000 + 181dE 45dN 0.000 + 350dE 45dN 0.000 + 10dE 45dN 0.000 +- comment: Test simple prime meridian handling within a projection + args: +proj=utm +zone=11 +datum=WGS84 +pm=3 +to +proj=latlong +datum=WGS84 +pm=1w + in: 500000 3000000 + out: | + 113dW 27d7'20.891"N 0.000 +- comment: Test input in grad + args: EPSG:4807 EPSG:27572 + in: 64.44444444 2.9586342556 + out: | + 760724.02 3457334.86 0.00 +- comment: Test geocentric x/y/z generation + args: +proj=latlong +datum=WGS84 +to +proj=geocent +datum=WGS84 + in: | + 0d00'00.001"W 0d00'00.001"N 0.0 + 0d00'00.001"W 0d00'00.001"N 10.0 + 79d00'00.000"W 45d00'00.000"N 0.0 + 45d00'00.000"W 89d59'59.990"N 0.0 + out: | + 6378137.00 -0.03 0.03 + 6378147.00 -0.03 0.03 + 861996.98 -4434590.01 4487348.41 + 0.22 -0.22 6356752.31 +- comment: Test geocentric x/y/z consumption + args: +proj=geocent +datum=WGS84 +to +proj=latlong +datum=WGS84 + in: | + 6378137.00 -0.00 0.00 + 6378147.00 -0.00 0.00 + 861996.98 -4434590.01 4487348.41 + 0.00 -0.00 6356752.31 + out: | + 0dE 0dN 0.000 + 0dE 0dN 10.000 + 79dW 45dN 0.001 + 0dE 90dN -0.004 +- comment: Test conversion from geodetic latlong to geocentric latlong + args: +proj=latlong +datum=WGS84 +to +proj=latlong +datum=WGS84 +geoc + in: | + 0d00'00.000"W 0d00'00.000"N 0.0 + 79d00'00.000"W 45d00'00.000"N 0.0 + 12d00'00.000"W 45d00'00.000"N 0.0 + 0d00'00.000"W 90d00'00.000"N 0.0 + out: | + 0dE 0dN 0.000 + 79dW 44d48'27.276"N 0.000 + 12dW 44d48'27.276"N 0.000 + 0dE 90dN 0.000 +- comment: Test conversion from geocentric latlong to geodetic latlong + args: +proj=latlong +datum=WGS84 +geoc +to +proj=latlong +datum=WGS84 + in: | + 0d00'00.000"W 0d00'00.000"N 0.0 + 79d00'00.000"W 44d48'27.276"N 0.000 + 12d00'00.000"W 44d48'27.276"N 0.0 + 0d00'00.000"W 90d00'00.000"N 0.0 + out: | + 0dE 0dN 0.000 + 79dW 45dN 0.000 + 12dW 45dN 0.000 + 0dE 90dN 0.000 +- comment: "Test stere projection (re: win32 ticket 12)" + args: +proj=latlong +datum=WGS84 +to +proj=stere +lat_0=90 +lon_0=0 +lat_ts=70 +datum=WGS84 + in: 105 40 + out: | + 5577808.93 1494569.40 0.00 +- comment: Test stere without lat_ts (#147) + args: +proj=latlong +datum=WGS84 +to +proj=stere +lat_0=40 +lon_0=10 +datum=WGS84 + in: 20 45 + out: | + 789468.08 602385.33 0.00 +- comment: "Test sts projection (re: ticket 12)" + args: +proj=latlong +ellps=WGS84 +to +proj=kav5 +ellps=WGS84 +units=m + in: 4.897000 52.371000 + out: | + 383646.09 5997047.89 0.00 +- comment: "Test sts projection (re: ticket 12) -- inverse" + args: +proj=kav5 +ellps=WGS84 +units=m +to +proj=latlong +ellps=WGS84 + in: 383646.088858 5997047.888175 + out: | + 4d53'49.2"E 52d22'15.6"N 0.000 +- comment: "Test RSO Borneo projection (re: ticket 62)" + args: > + +proj=latlong +a=6377298.556 +rf=300.8017 + +to +proj=omerc +a=6377298.556 +rf=300.8017 +lat_0=4 +lonc=115 + +alpha=53d18\'56.9537 +gamma=53d7\'48.3685 +k_0=0.99984 + +x_0=590476.87 +y_0=442857.65 + in: 116d2'11.12630 5d54'19.90183 + out: | + 704570.40 653979.68 0.00 +- comment: Test extended transverse mercator (#97) + args: > + +proj=etmerc +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 + +to +proj=latlong +datum=WGS84 + in: | + 10000 20000 + 500000 2000000 + 1000000 2000000 + 2000000 2000000 + 4000000 2000000 + out: | + 20dW 0dN 0.000 + 15d22'16.108"W 17d52'53.478"N 0.000 + 10d40'55.532"W 17d42'48.526"N 0.000 + 1d32'21.33"W 17d3'47.233"N 0.000 + 15d4'42.357"E 14d48'56.372"N 0.000 +- comment: Test extended transverse mercator inverse (#97) + args: > + +proj=latlong +datum=WGS84 +to + +proj=etmerc +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 + in: | + 0dN 0.000 + 15d22'16.108"W 17d52'53.478"N 0.000 + 10d40'55.532"W 17d42'48.526"N 0.000 + 1d32'21.33"W 17d3'47.233"N 0.000 + 15d4'42.357"E 14d48'56.372"N 0.000 +- comment: Test transverse mercator (#97) + args: > + +proj=tmerc +approx +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 + +to +proj=latlong +datum=WGS84 + in: | + 10000 20000 + 500000 2000000 + 1000000 2000000 + 2000000 2000000 + 4000000 2000000 + out: | + 20dW 0dN 0.000 + 15d22'16.108"W 17d52'53.478"N 0.000 + 10d40'55.532"W 17d42'48.526"N 0.000 + 1d32'21.399"W 17d3'47.244"N 0.000 + 15d4'6.539"E 14d49'7.331"N 0.000 +- comment: Test transverse mercator inverse (#97) + args: > + +proj=latlong +datum=WGS84 +to + +proj=tmerc +approx +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 + in: | + 0dN 0.000 + 15d22'16.108"W 17d52'53.478"N 0.000 + 10d40'55.532"W 17d42'48.526"N 0.000 + 1d32'21.33"W 17d3'47.233"N 0.000 + 15d4'42.357"E 14d48'56.372"N 0.000 + out: | + 2278812.96 20000.00 0.00 + 499999.99 2000000.01 0.00 + 999999.99 1999999.99 0.00 + 2000000.03 1999999.62 0.00 + 3999967.33 1999855.31 0.00 +- comment: Test robinson projection (#113) + args: +proj=latlong +datum=WGS84 +to +proj=robin +datum=WGS84 + in: | + -30 40 + -35 45 + 20 40 + out: | + -2612095.95 4276351.58 0.00 + -2963455.42 4805073.65 0.00 + 1741397.30 4276351.58 0.00 +- comment: Test robinson inverse projection (#113) + args: +proj=robin +datum=WGS84 +to +proj=latlong +datum=WGS84 + in: | + -2612095.95 4276351.58 0.00 + -2963455.42 4805073.65 0.00 + 1741397.30 4276351.58 0.00 + out: | + 30d0'0.004"W 40d0'0.066"N 0.000 + 35dW 45dN 0.000 + 20d0'0.002"E 40d0'0.066"N 0.000 +- comment: "Test hammer projection (pull request #329)" + args: +proj=latlong +datum=WGS84 +to +proj=hammer +datum=WGS84 + in: | + -30 40 + -35 45 + 20 40 + out: | + -2711575.08 4395506.62 0.00 + -2964412.70 4929091.33 0.00 + 1811748.54 4377349.50 0.00 +- comment: "Test hammer inverse projection (pull request #329)" + args: +proj=hammer +datum=WGS84 +to +proj=latlong +datum=WGS84 + in: | + -2711575.08 4395506.62 0.00 + -2964412.70 4929091.33 0.00 + 1811748.54 4377349.50 0.00 + out: | + 30dW 40dN 0.000 + 35dW 45dN 0.000 + 20dE 40dN 0.000 +- comment: Test healpix forward projection on sphere + args: +proj=latlong +R=1 +lon_0=0 +to +proj=healpix +R=1 +lon_0=0 -f %.5f + in: | + 0 41.81031 + -90 0 + out: | + 0.00000 0.78540 0.00000 + -1.57080 0.00000 0.00000 +- args: +proj=latlong +R=5 +to +proj=healpix +R=5 -f %.5f + in: | + 0 0 + 0 41.810314895778596 + 0 -41.810314895778596 + 90.0 0 + -90.0 0 + -180 0 + -180 90.0 + -180 -90.0 + 0 60.0 + 0 -60.0 + out: | + 0.00000 0.00000 0.00000 + 0.00000 3.92699 0.00000 + 0.00000 -3.92699 0.00000 + 7.85398 0.00000 0.00000 + -7.85398 0.00000 0.00000 + -15.70796 0.00000 0.00000 + -11.78097 7.85398 0.00000 + -11.78097 -7.85398 0.00000 + 1.43738 5.36437 0.00000 + 1.43738 -5.36437 0.00000 +- comment: Test healpix forward projection on ellipsoid + args: > + +proj=latlong +a=1 +lon_0=0 +ellps=WGS84 +to + +proj=healpix +a=1 +lon_0=0 +ellps=WGS84 -f %.5f + in: | + 0 41.937853904844985 + -90 0 + out: | + 0.00000 0.78452 0.00000 + -1.56904 0.00000 0.00000 +- args: > + +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882 +to + +proj=healpix +a=5 +e=0.8 +r_a=4.3220011711888882 -f %.5f + in: | + 0 0 + 0 41.810314895778596 + 0 -41.810314895778596 + 90.0 0 + -90.0 0 + -180 0 + -180 90.0 + -180 -90.0 + 0 60.0 + 0 -60.0 + out: | + 0.00000 0.00000 0.00000 + 0.00000 2.05479 0.00000 + 0.00000 -2.05479 0.00000 + 6.78898 0.00000 0.00000 + -6.78898 0.00000 0.00000 + -13.57797 0.00000 0.00000 + -10.18348 6.78898 0.00000 + -10.18348 -6.78898 0.00000 + 0.00000 3.35128 0.00000 + 0.00000 -3.35128 0.00000 +- comment: Test healpix inverse projection on ellipsoid + args: > + +proj=latlong +a=1 +lon_0=0 +ellps=WGS84 +to + +proj=healpix +a=1 +lon_0=0 +ellps=WGS84 -f %.5f -I + in: | + 0 0.7853981633974483 + -1.5707963267948966 0 + out: | + * * inf + -90.10072 0.00000 0.00000 +- args: > + +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882 +to + +proj=healpix +a=5 +e=0.8 +r_a=4.3220011711888882 -f %.5f -I + in: | + 0.0 0.0 + 0.0 2.0547874222147415 + 0.0 -2.0547874222147415 + 6.788983564106746 0.0 + -6.788983564106746 0.0 + -13.577967128213492 0.0 + -10.183475346160119 6.788983564106746 + -10.183475346160119 -6.788983564106746 + 0.0 3.351278550178025 + 0.0 -3.351278550178025 + out: | + 0.00000 0.00000 0.00000 + 0.00000 39.58811 0.00000 + 0.00000 -39.58811 0.00000 + 90.00000 0.00000 0.00000 + -90.00000 0.00000 0.00000 + -180.00000 0.00000 0.00000 + -180.00000 90.00000 0.00000 + -180.00000 -90.00000 0.00000 + 0.00000 59.23640 0.00000 + 0.00000 -59.23640 0.00000 +- comment: Test rHEALPix forward projection on sphere north=0 south=0 + args: > + +proj=latlong +R=5 +to + +proj=rhealpix +R=5 +north_square=0 +south_square=0 -f %.5f + in: | + -180 30.0 + -180 -25.714285714285715 + 0 0 + 60.0 41.809314895778598 + out: | + -15.70796 2.94524 0.00000 + -15.70796 -2.55579 0.00000 + 0.00000 0.00000 0.00000 + 5.23599 3.92691 0.00000 +- comment: Test rHEALPix forward projection on sphere north=1 south=1 + args: > + +proj=latlong +R=5 +to + +proj=rhealpix +R=5 +north_square=1 +south_square=1 -f %.5f + in: | + -180 30.0 + -180 -25.714285714285715 + 0 0 + 60.0 41.809314895778598 + out: | + -15.70796 2.94524 0.00000 + -15.70796 -2.55579 0.00000 + 0.00000 0.00000 0.00000 + 5.23599 3.92691 0.00000 +- comment: Test rHEALPix inverse projection on sphere north=0 south=0 + args: > + +proj=latlong +R=5 +to + +proj=rhealpix +R=5 +north_square=0 +south_square=0 -f %.5f -I + in: | + 0.0 0.0 + 0.0 3.9269908169872414 + 0.0 -3.9269908169872414 + 7.853981633974483 0.0 + -7.853981633974483 0.0 + out: | + 0.00000 0.00000 0.00000 + 0.00000 41.81031 0.00000 + 0.00000 -41.81031 0.00000 + 90.00000 0.00000 0.00000 + -90.00000 0.00000 0.00000 +- comment: Test rHEALPix inverse projection on sphere north=1 south=1 + args: > + +proj=latlong +R=5 +to + +proj=rhealpix +R=5 +north_square=1 +south_square=1 -f %.5f -I + in: | + 0.0 0.0 + 0.0 3.9269908169872414 + 0.0 -3.9269908169872414 + 7.853981633974483 0.0 + -7.853981633974483 0.0 + out: | + 0.00000 0.00000 0.00000 + 0.00000 41.81031 0.00000 + 0.00000 -41.81031 0.00000 + 90.00000 0.00000 0.00000 + -90.00000 0.00000 0.00000 +- comment: Test rHEALPix forward projection on ellipsoid north=0 south=0 + args: > + +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882 +to + +proj=rhealpix +a=5 +e=0.8 +r_a=4.3220011711888882 +north_square=0 +south_square=0 -f %.5f + in: | + 0 0 + 0 41.810314895778596 + 0 -41.810314895778596 + 90.0 0 + -90.0 0 + out: | + 0.00000 0.00000 0.00000 + 0.00000 2.05479 0.00000 + 0.00000 -2.05479 0.00000 + 6.78898 0.00000 0.00000 + -6.78898 0.00000 0.00000 +- comment: Test rHEALPix forward projection on ellipsoid north=1 south=1 + args: > + +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882 +to + +proj=rhealpix +a=5 +e=0.8 +r_a=4.3220011711888882 +north_square=1 +south_square=1 -f %.5f + in: | + 0 0 + 0 41.810314895778596 + 0 -41.810314895778596 + 90.0 0 + -90.0 0 + out: | + 0.00000 0.00000 0.00000 + 0.00000 2.05479 0.00000 + 0.00000 -2.05479 0.00000 + 6.78898 0.00000 0.00000 + -6.78898 0.00000 0.00000 +- comment: Test rHEALPix inverse projection on ellipsoid north=0 south=0 + args: > + +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882 +to + +proj=rhealpix +a=5 -I +e=0.8 +r_a=4.3220011711888882 +north_square=0 +south_square=0 -f %.5f + in: | + 0.0 0.0 + 0.0 2.0547874222147415 + 0.0 -2.0547874222147415 + 6.788983564106746 0.0 + -6.788983564106746 0.0 + out: | + 0.00000 0.00000 0.00000 + 0.00000 39.58811 0.00000 + 0.00000 -39.58811 0.00000 + 90.00000 0.00000 0.00000 + -90.00000 0.00000 0.00000 +- comment: Test rHEALPix inverse projection on ellipsoid north=1 south=1 + args: > + +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882 +to + +proj=rhealpix +a=5 -I +e=0.8 +r_a=4.3220011711888882 +north_square=1 +south_square=1 -f %.5f + in: | + 0.0 0.0 + 0.0 2.0547874222147415 + 0.0 -2.0547874222147415 + 6.788983564106746 0.0 + -6.788983564106746 0.0 + out: | + 0.00000 0.00000 0.00000 + 0.00000 39.58811 0.00000 + 0.00000 -39.58811 0.00000 + 90.00000 0.00000 0.00000 + -90.00000 0.00000 0.00000 +- comment: Test geos on a sphere + args: > + +proj=latlong +ellps=sphere +to + +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere + in: | + 16d11'8" 58d35'31" + -43d11'47" -22d54'30" + 18d25'26" -33d55'31" + 47d58'42" 29d22'11" + out: | + 849736.77 4960015.43 0.00 + -3780930.93 -2326595.36 0.00 + 1608689.65 -3412115.56 0.00 + 3825202.59 2885980.79 0.00 +- comment: Test geos on a ellipsoid + args: > + +proj=latlong +ellps=sphere +to + +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 + in: | + 16d11'8" 58d35'31" + -43d11'47" -22d54'30" + 18d25'26" -33d55'31" + 47d58'42" 29d22'11" + out: | + 852862.53 4945122.70 0.00 + -3787026.57 -2314765.32 0.00 + 1612331.00 -3397031.37 0.00 + 3832522.65 2872185.29 0.00 +- comment: Test inv geos on a sphere + args: > + +proj=latlong +ellps=sphere +to + +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere -I + in: | + 849736.77 4960015.43 + -3780930.93 -2326595.36 + 1608689.65 -3412115.56 + 3825202.59 2885980.79 + out: | + 16d11'8"E 58d35'31"N 0.000 + 43d11'47"W 22d54'30"S 0.000 + 18d25'26"E 33d55'31"S 0.000 + 47d58'42"E 29d22'11"N 0.000 +- comment: Test inv geos on a ellipsoid + args: > + +proj=latlong +ellps=sphere +to + +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 -I + in: | + 852862.53 4945122.70 + -3787026.57 -2314765.32 + 1612331.00 -3397031.37 + 3832522.65 2872185.29 + out: | + 16d11'8"E 58d35'31"N 0.000 + 43d11'47"W 22d54'30"S 0.000 + 18d25'26"E 33d55'31"S 0.000 + 47d58'42"E 29d22'11"N 0.000 +- comment: Test geos on a sphere with alternate sweep + args: > + +proj=latlong +ellps=sphere +to + +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere +sweep=x + in: | + 16d11'8" 58d35'31" + -43d11'47" -22d54'30" + 18d25'26" -33d55'31" + 47d58'42" 29d22'11" + out: | + 841586.28 4961396.21 0.00 + -3772913.22 -2339604.71 0.00 + 1601377.77 -3415545.15 0.00 + 3812722.89 2902474.62 0.00 +- comment: Test geos on a ellipsoid with alternate sweep + args: > + +proj=latlong +ellps=sphere +to + +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 +sweep=x + in: | + 16d11'8" 58d35'31" + -43d11'47" -22d54'30" + 18d25'26" -33d55'31" + 47d58'42" 29d22'11" + out: | + 844731.03 4946509.59 0.00 + -3779077.27 -2327750.87 0.00 + 1605067.15 -3400461.47 0.00 + 3820138.08 2888664.15 0.00 +- comment: Test inv geos on a sphere with alternate sweep + args: > + +proj=latlong +ellps=sphere +to + +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere +sweep=x -I + in: | + 841586.28 4961396.21 + -3772913.22 -2339604.71 + 1601377.77 -3415545.15 + 3812722.89 2902474.62 + out: | + 16d11'8"E 58d35'31"N 0.000 + 43d11'47"W 22d54'30"S 0.000 + 18d25'26"E 33d55'31"S 0.000 + 47d58'42"E 29d22'11"N 0.000 +- comment: Test inv geos on a ellipsoid with alternate sweep + args: > + +proj=latlong +ellps=sphere +to + +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 +sweep=x -I + in: | + 844731.03 4946509.59 + -3779077.27 -2327750.87 + 1605067.15 -3400461.47 + 3820138.08 2888664.15 + out: | + 16d11'8"E 58d35'31"N 0.000 + 43d11'47"W 22d54'30"S 0.000 + 18d25'26"E 33d55'31"S 0.000 + 47d58'42"E 29d22'11"N 0.000 +- comment: Test the Natural Earth Projection + args: > + +proj=latlong +a=6371008.7714 +b=6371008.7714 +to + +proj=natearth +a=6371008.7714 +b=6371008.7714 -f %.7f + in: | + 0.0 0.0 0 0.0 0.0 + 0.0 22.5 0 0.0 2525419.569383768 + 0.0 45.0 0 0.0 5052537.389973222 + 0.0 67.5 0 0.0 7400065.6562573705 + 0.0 90.0 0 0.0 9062062.394736718 + 45.0 0.0 0 4356790.016612169 0.0 + 45.0 22.5 0 4253309.544984069 2525419.569383768 + 45.0 45.0 0 3924521.5829515466 5052537.389973222 + 45.0 67.5 0 3354937.47115583 7400065.6562573705 + 45.0 90.0 0 2397978.2448443635 9062062.394736718 + 90.0 0.0 0 8713580.033224339 0.0 + 90.0 22.5 0 8506619.089968137 2525419.569383768 + 90.0 45.0 0 7849043.165903093 5052537.389973222 + 90.0 67.5 0 6709874.94231166 7400065.6562573705 + 90.0 90.0 0 4795956.489688727 9062062.394736718 + 135.0 0.0 0 1.3070370049836507E7 0.0 + 135.0 22.5 0 1.2759928634952208E7 2525419.569383768 + 135.0 45.0 0 1.177356474885464E7 5052537.389973222 + 135.0 67.5 0 1.0064812413467491E7 7400065.6562573705 + 135.0 90.0 0 7193934.734533091 9062062.394736718 + 180.0 0.0 0 1.7427160066448677E7 0.0 + 180.0 22.5 0 1.7013238179936275E7 2525419.569383768 + 180.0 45.0 0 1.5698086331806187E7 5052537.389973222 + 180.0 67.5 0 1.341974988462332E7 7400065.6562573705 + 180.0 90.0 0 9591912.979377454 9062062.394736718 + out: | + 0.0000000 0.0000000 0.0000000 0.0 0.0 + 0.0000000 2525419.5693838 0.0000000 0.0 2525419.569383768 + 0.0000000 5052537.3899732 0.0000000 0.0 5052537.389973222 + 0.0000000 7400065.6562574 0.0000000 0.0 7400065.6562573705 + 0.0000000 9062062.3947367 0.0000000 0.0 9062062.394736718 + 4356790.0166122 0.0000000 0.0000000 4356790.016612169 0.0 + 4253309.5449841 2525419.5693838 0.0000000 4253309.544984069 2525419.569383768 + 3924521.5829515 5052537.3899732 0.0000000 3924521.5829515466 5052537.389973222 + 3354937.4711558 7400065.6562574 0.0000000 3354937.47115583 7400065.6562573705 + 2397978.2448444 9062062.3947367 0.0000000 2397978.2448443635 9062062.394736718 + 8713580.0332243 0.0000000 0.0000000 8713580.033224339 0.0 + 8506619.0899681 2525419.5693838 0.0000000 8506619.089968137 2525419.569383768 + 7849043.1659031 5052537.3899732 0.0000000 7849043.165903093 5052537.389973222 + 6709874.9423117 7400065.6562574 0.0000000 6709874.94231166 7400065.6562573705 + 4795956.4896887 9062062.3947367 0.0000000 4795956.489688727 9062062.394736718 + 13070370.0498365 0.0000000 0.0000000 1.3070370049836507E7 0.0 + 12759928.6349522 2525419.5693838 0.0000000 1.2759928634952208E7 2525419.569383768 + 11773564.7488546 5052537.3899732 0.0000000 1.177356474885464E7 5052537.389973222 + 10064812.4134675 7400065.6562574 0.0000000 1.0064812413467491E7 7400065.6562573705 + 7193934.7345331 9062062.3947367 0.0000000 7193934.734533091 9062062.394736718 + 17427160.0664487 0.0000000 0.0000000 1.7427160066448677E7 0.0 + 17013238.1799363 2525419.5693838 0.0000000 1.7013238179936275E7 2525419.569383768 + 15698086.3318062 5052537.3899732 0.0000000 1.5698086331806187E7 5052537.389973222 + 13419749.8846233 7400065.6562574 0.0000000 1.341974988462332E7 7400065.6562573705 + 9591912.9793775 9062062.3947367 0.0000000 9591912.979377454 9062062.394736718 +- comment: Test the Natural Earth II Projection + args: > + +proj=latlong +a=6371008.7714 +b=6371008.7714 +to + +proj=natearth2 +a=6371008.7714 +b=6371008.7714 -f %.7f + in: | + 0.0 0.0 0 0.00000000 0.00000000 + 0.0 22.5 0 0.00000000 2531453.57080958 + 0.0 45.0 0 0.00000000 5051471.50086845 + 0.0 67.5 0 0.00000000 7395411.22478983 + 0.0 90.0 0 0.00000000 9073776.52662810 + 45.0 0.0 0 4239151.18200719 0.00000000 + 45.0 22.5 0 4138348.61904244 2531453.57080958 + 45.0 45.0 0 3830621.33880773 5051471.50086845 + 45.0 67.5 0 3158326.32836996 7395411.22478983 + 45.0 90.0 0 957973.37034235 9073776.52662810 + 90.0 0.0 0 8478302.36401439 0.00000000 + 90.0 22.5 0 8276697.23808488 2531453.57080958 + 90.0 45.0 0 7661242.67761547 5051471.50086845 + 90.0 67.5 0 6316652.65673992 7395411.22478983 + 90.0 90.0 0 1915946.74068470 9073776.52662810 + 135.0 0.0 0 12717453.54602160 0.00000000 + 135.0 22.5 0 12415045.85712730 2531453.57080958 + 135.0 45.0 0 11491864.01642320 5051471.50086845 + 135.0 67.5 0 9474978.98510988 7395411.22478983 + 135.0 90.0 0 2873920.11102705 9073776.52662810 + 180.0 0.0 0 16956604.72802880 0.00000000 + 180.0 22.5 0 16553394.47616980 2531453.57080958 + 180.0 45.0 0 15322485.35523090 5051471.50086845 + 180.0 67.5 0 12633305.31347990 7395411.22478983 + 180.0 90.0 0 3831893.48136940 9073776.52662810 + out: | + 0.0000000 0.0000000 0.0000000 0.00000000 0.00000000 + 0.0000000 2531453.5708096 0.0000000 0.00000000 2531453.57080958 + 0.0000000 5051471.5008684 0.0000000 0.00000000 5051471.50086845 + 0.0000000 7395411.2247898 0.0000000 0.00000000 7395411.22478983 + 0.0000000 9073776.5266281 0.0000000 0.00000000 9073776.52662810 + 4239151.1820072 0.0000000 0.0000000 4239151.18200719 0.00000000 + 4138348.6190424 2531453.5708096 0.0000000 4138348.61904244 2531453.57080958 + 3830621.3388077 5051471.5008684 0.0000000 3830621.33880773 5051471.50086845 + 3158326.3283700 7395411.2247898 0.0000000 3158326.32836996 7395411.22478983 + 957973.3703423 9073776.5266281 0.0000000 957973.37034235 9073776.52662810 + 8478302.3640144 0.0000000 0.0000000 8478302.36401439 0.00000000 + 8276697.2380849 2531453.5708096 0.0000000 8276697.23808488 2531453.57080958 + 7661242.6776155 5051471.5008684 0.0000000 7661242.67761547 5051471.50086845 + 6316652.6567399 7395411.2247898 0.0000000 6316652.65673992 7395411.22478983 + 1915946.7406847 9073776.5266281 0.0000000 1915946.74068470 9073776.52662810 + 12717453.5460216 0.0000000 0.0000000 12717453.54602160 0.00000000 + 12415045.8571273 2531453.5708096 0.0000000 12415045.85712730 2531453.57080958 + 11491864.0164232 5051471.5008684 0.0000000 11491864.01642320 5051471.50086845 + 9474978.9851099 7395411.2247898 0.0000000 9474978.98510988 7395411.22478983 + 2873920.1110270 9073776.5266281 0.0000000 2873920.11102705 9073776.52662810 + 16956604.7280288 0.0000000 0.0000000 16956604.72802880 0.00000000 + 16553394.4761698 2531453.5708096 0.0000000 16553394.47616980 2531453.57080958 + 15322485.3552309 5051471.5008684 0.0000000 15322485.35523090 5051471.50086845 + 12633305.3134798 7395411.2247898 0.0000000 12633305.31347990 7395411.22478983 + 3831893.4813694 9073776.5266281 0.0000000 3831893.48136940 9073776.52662810 +- comment: Test the Compact Miller projection + args: > + +proj=latlong +a=6371008.7714 +b=6371008.7714 +to + +proj=comill +a=6371008.7714 +b=6371008.7714 -f %.7f + in: | + 0.0 0.0 0 0.0 0.0 + 0.0 22.5 0 0.0 2537439.6610749415 + 0.0 45.0 0 0.0 5391682.432264133 + 0.0 67.5 0 0.0 8661480.510260897 + 0.0 90.0 0 0.0 12009484.264916677 + 45.0 0.0 0 5003778.588046594 0.0 + 45.0 22.5 0 5003778.588046594 2537439.6610749415 + 45.0 45.0 0 5003778.588046594 5391682.432264133 + 45.0 67.5 0 5003778.588046594 8661480.510260897 + 45.0 90.0 0 5003778.588046594 12009484.264916677 + 90.0 0.0 0 10007557.176093187 0.0 + 90.0 22.5 0 10007557.176093187 2537439.6610749415 + 90.0 45.0 0 10007557.176093187 5391682.432264133 + 90.0 67.5 0 10007557.176093187 8661480.510260897 + 90.0 90.0 0 10007557.176093187 12009484.264916677 + 135.0 0.0 0 15011335.76413978 0.0 + 135.0 22.5 0 15011335.76413978 2537439.6610749415 + 135.0 45.0 0 15011335.76413978 5391682.432264133 + 135.0 67.5 0 15011335.76413978 8661480.510260897 + 135.0 90.0 0 15011335.76413978 12009484.264916677 + 180.0 0.0 0 20015114.352186374 0.0 + 180.0 22.5 0 20015114.352186374 2537439.6610749415 + 180.0 45.0 0 20015114.352186374 5391682.432264133 + 180.0 67.5 0 20015114.352186374 8661480.510260897 + 180.0 90.0 0 20015114.352186374 12009484.264916677 + out: | + 0.0000000 0.0000000 0.0000000 0.0 0.0 + 0.0000000 2537439.6610749 0.0000000 0.0 2537439.6610749415 + 0.0000000 5391682.4322641 0.0000000 0.0 5391682.432264133 + 0.0000000 8661480.5102609 0.0000000 0.0 8661480.510260897 + 0.0000000 12009484.2649167 0.0000000 0.0 12009484.264916677 + 5003778.5880466 0.0000000 0.0000000 5003778.588046594 0.0 + 5003778.5880466 2537439.6610749 0.0000000 5003778.588046594 2537439.6610749415 + 5003778.5880466 5391682.4322641 0.0000000 5003778.588046594 5391682.432264133 + 5003778.5880466 8661480.5102609 0.0000000 5003778.588046594 8661480.510260897 + 5003778.5880466 12009484.2649167 0.0000000 5003778.588046594 12009484.264916677 + 10007557.1760932 0.0000000 0.0000000 10007557.176093187 0.0 + 10007557.1760932 2537439.6610749 0.0000000 10007557.176093187 2537439.6610749415 + 10007557.1760932 5391682.4322641 0.0000000 10007557.176093187 5391682.432264133 + 10007557.1760932 8661480.5102609 0.0000000 10007557.176093187 8661480.510260897 + 10007557.1760932 12009484.2649167 0.0000000 10007557.176093187 12009484.264916677 + 15011335.7641398 0.0000000 0.0000000 15011335.76413978 0.0 + 15011335.7641398 2537439.6610749 0.0000000 15011335.76413978 2537439.6610749415 + 15011335.7641398 5391682.4322641 0.0000000 15011335.76413978 5391682.432264133 + 15011335.7641398 8661480.5102609 0.0000000 15011335.76413978 8661480.510260897 + 15011335.7641398 12009484.2649167 0.0000000 15011335.76413978 12009484.264916677 + 20015114.3521864 0.0000000 0.0000000 20015114.352186374 0.0 + 20015114.3521864 2537439.6610749 0.0000000 20015114.352186374 2537439.6610749415 + 20015114.3521864 5391682.4322641 0.0000000 20015114.352186374 5391682.432264133 + 20015114.3521864 8661480.5102609 0.0000000 20015114.352186374 8661480.510260897 + 20015114.3521864 12009484.2649167 0.0000000 20015114.352186374 12009484.264916677 +- comment: Test pconic (#148) + args: > + +proj=latlong +datum=WGS84 +to + +proj=pconic +units=m +lat_1=20n +lat_2=60n +lon_0=60W +datum=WGS84 + in: -70.4 -23.65 + out: | + -2240096.40 -6940342.15 0.00 +- args: > + +proj=pconic +units=m +lat_1=20n +lat_2=60n +lon_0=60W +datum=WGS84 +to + +proj=latlong +datum=WGS84 + in: -2240096.40 -6940342.15 + out: | + 70d24'W 23d39'S 0.000 +- comment: Test laea + args: > + +proj=laea +lat_0=45 +lon_0=-100 +units=m +datum=WGS84 +to + +proj=latlong +datum=WGS84 -f %.12f + in: -6086629.0 4488761.0 + out: | + 156.058637988599 37.765458298678 0.000000000000 +- comment: Test forward calcofi projection + args: +proj=latlong +ellps=clrk66 +to +proj=calcofi +ellps=clrk66 + in: | + 120d40'42.273"W 38d56'50.766"N + 121d9'W 34d9'N + 123d59'56.066"W 30d25'4.617"N + out: | + 60.00 20.00 0.00 + 80.00 60.00 0.00 + 90.00 120.00 0.00 +- comment: Test inverse calcofi projection + args: +proj=calcofi +ellps=clrk66 +to +proj=longlat +ellps=clrk66 + in: | + 60 20 + 80 60 + 90 120 + out: | + 120d40'42.273"W 38d56'50.766"N 0.000 + 121d9'W 34d9'N 0.000 + 123d59'56.066"W 30d25'4.617"N 0.000 +- comment: Check inverse error handling with ob_tran (#225) + args: +proj=ob_tran +o_proj=moll +a=6378137 +es=0 +o_lon_p=0 +o_lat_p=0 +lon_0=180 + in: | + 300000 400000 + 20000000 30000000 + out: | + 42d45'22.377"W 85d35'28.083"N 0.000 + * * inf +- comment: Test inverse handling + args: -I +proj=ob_tran +o_proj=moll +a=6378137 +es=0 +o_lon_p=0 +o_lat_p=0 +lon_0=180 + in: 10 20 + out: | + -1384841.19 7581707.88 0.00 +- comment: Test MGI datum gives expected results (#207) + args: +proj=latlong +datum=WGS84 +to +init=epsg:31284 -f %.7f + in: 16.33 48.20 + out: | + 595710.3731286 5357598.4645652 0.0000000 +- comment: Test omerc sensitivity with locations 90d from origin (#114) + args: > + +proj=latlong +ellps=WGS84 +to + +proj=omerc +ellps=WGS84 +lon_1=62.581150 +lat_1=74.856102 +lon_2=53.942810 +lat_2=74.905884 +units=km +no_rot -f %.8f + in: | + 56.958381652832 72.8798 + 56.9584 72.8798 + out: | + -9985.16336453 -227.67701050 0.00000000 + 9985.16263662 -227.67701050 0.00000000 +- comment: Test omerc differences between poles (#190) - north pole + args: > + +proj=latlong +ellps=WGS84 +to + +proj=omerc +ellps=WGS84 +datum=WGS84 +no_rot +lon_1=-27 +lat_1=70 +lon_2=-38 +lat_2=80 +lat_0=70 -f %.3f + in: | + -27 70 + -27 80 + -27 89.9 + 163 89.9 + 163 80 + out: | + 7846957.203 0.000 0.000 + 8944338.041 204911.652 0.000 + 10033520.737 402158.063 0.000 + 10055728.173 404099.799 0.000 + 11163496.121 397796.828 0.000 +- comment: Test omerc differences between poles (#190) - south pole + args: > + +proj=latlong +ellps=WGS84 +to + +proj=omerc +ellps=WGS84 +datum=WGS84 +no_rot +lon_1=-27 +lat_1=-70 +lon_2=-38 +lat_2=-80 +lat_0=-70 -f %.3f + in: | + -27 -70 + -27 -80 + -27 -89.9 + 163 -89.9 + 163 -80 + out: | + -7846957.203 0.000 0.000 + -8944338.041 204911.652 0.000 + -10033520.737 402158.063 0.000 + -10055728.173 404099.799 0.000 + -11163496.121 397796.828 0.000 +- comment: Test qsc + args: > + +proj=latlong +datum=WGS84 +to + +proj=qsc +datum=WGS84 -f %.7f + in: 13 -10 + out: | + 2073986.9490881 -1680858.2722243 0.0000000 +- comment: Test inv qsc + args: > + +proj=qsc +datum=WGS84 +to + +proj=latlong +datum=WGS84 -f %.13f + in: | + 2073986.94908809568733 -1680858.27222427958623 + out: | + 13.0000000000000 -10.0000000000000 0.0000000000000 +- comment: Test bug 229 + args: > + +init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84 +towgs84=0,0,0 +to + +proj=latlong +datum=WGS84 -f %.13f + in: 13 -10 + out: | + 13.0000000000000 -10.0000000000000 0.0000000000000 +- comment: Test bug 229 (2) + args: +init=epsg:4326 +to +init=epsg:4326 -f %.13f + in: 13 -10 + out: | + 13.0000000000000 -10.0000000000000 0.0000000000000 +- comment: Test bug 244 + args: > + +init=epsg:4326 +to + +proj=aeqd +lon_0=130.0 +lat_0=40.0 +a=6378137 +b=6378137 +units=m -f %.8f + in: -140.100000 -87.000000 + out: | + 987122.41833028 -14429896.53953091 0.00000000 +- comment: Test bug 244 (2) + args: > + +proj=aeqd +lon_0=130.0 +lat_0=40.0 +a=6378137 +b=6378137 +units=m +to + +init=epsg:4326 -f %.11f + in: 987122.418330284 -14429896.539530909 + out: | + -140.10000000000 -87.00000000000 0.00000000000 +- comment: Test bug 245 (use +datum=carthage) + args: > + +proj=longlat +datum=WGS84 +to + +proj=utm +zone=32 +datum=carthage -f %.7f + in: 10 34 + out: | + 592302.9819461 3762148.7340609 0.0000000 +- comment: Test bug 245 (use expansion of +datum=carthage) + args: > + +proj=longlat +datum=WGS84 +to + +proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-263.0,6.0,431.0 -f %.7f + in: 10 34 + out: | + 592302.9819461 3762148.7340609 0.0000000 +- comment: Test SCH forward projection + args: > + +proj=latlong +datum=WGS84 +to + +proj=sch +datum=WGS84 +plat_0=30.0 +plon_0=45.0 +phdg_0=-12.0 +nodefs -f %.7f + in: | + 0.0 0.0 + 0.0 90.0 + 45.0 45.0 + 45.1 44.9 + 44.9 45.1 + 30.0 45.0 + out: | + -1977112.0305592 5551475.1418378 6595.7256583 + 6618337.9734775 -1152927.4060894 10055.1157181 + 1630035.5650122 -342353.6396475 128.3445654 + 1617547.4295637 -347855.9734973 125.4645102 + 1642526.7453121 -336878.8571851 131.3265616 + 1974596.2356203 787409.8217445 773.0028577 +- comment: Test SCH inverse projection + args: > + +proj=sch +datum=WGS84 +plat_0=30.0 +plon_0=45.0 +phdg_0=-12.0 +nodefs +to + +proj=latlong +datum=WGS84 -f %.6f + in: | + 0. 0. 2. + 0. 1000. + 1000. 0. + 1000. 1000. + out: | + 45.000000 30.000000 2.000000 + 44.989863 29.998124 -0.000362 + 44.997845 30.008824 -0.000000 + 44.987707 30.006948 -0.000523 +- comment: "Test issue #316 (switch utm to use etmerc)" + args: > + +proj=latlong +datum=WGS84 +to + +proj=utm +zone=35 +datum=WGS84 -f %.6f + in: 0 83 + out: | + 145723.870553 9300924.845226 0.000000 +- comment: "Test issue #316 (switch utm to use etmerc)" + args: > + +proj=latlong +datum=WGS84 +to + +proj=etmerc +datum=WGS84 +k=0.9996 +lon_0=27 +x_0=500000 -f %.6f + in: 0 83 + out: | + 145723.870553 9300924.845226 0.000000 +- comment: Test nzmg forward projection + args: > + +proj=latlong +datum=WGS84 +to + +proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=WGS84 +units=m -f %.7f + in: 175. -40. 0. + out: | + 2680778.5726797 6132228.0764513 0.0000000 +- comment: Test nzmg inverse projection + args: > + +proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=WGS84 +units=m +to + +proj=latlong +datum=WGS84 -f %.7f + in: 2680778.57267967 6132228.07645127 0. + out: | + 175.0000000 -40.0000000 0.0000000 +- comment: Test patterson forward projection + args: > + +proj=latlong +datum=WGS84 +to + +proj=patterson +a=6371008.7714 +b=6371008.7714 +units=m -f %0.8f + in: | + -180 90 + -135 67.5 + -90 45 + -45 22.5 + 0 0 + 45 -22.5 + 90 -45 + 135 -67.5 + 180 -90 + out: | + -20015114.35218637 11409566.82283130 0.00000000 + -15011335.76413978 8729502.05411184 0.00000000 + -10007557.17609319 5366413.42115378 0.00000000 + -5003778.58804659 2551415.72966934 0.00000000 + 0.00000000 0.00000000 0.00000000 + 5003778.58804659 -2551415.72966934 0.00000000 + 10007557.17609319 -5366413.42115378 0.00000000 + 15011335.76413978 -8729502.05411184 0.00000000 + 20015114.35218637 -11409566.82283130 0.00000000 +- comment: Test patterson inverse projection + args: > + +proj=patterson +a=6371008.7714 +b=6371008.7714 +units=m +to + +proj=latlong +datum=WGS84 -f %0.3f + in: | + -20015114.352186374 11409566.822831295 + -15011335.76413978 8729502.054111844 + -10007557.176093187 5366413.421153781 + -5003778.588046594 2551415.729669344 + 0.0 0.0 + 5003778.588046594 -2551415.729669344 + 10007557.176093187 -5366413.421153781 + 15011335.76413978 -8729502.054111844 + 20015114.352186374 -11409566.822831295 + out: | + -180.000 90.000 0.000 + -135.000 67.500 0.000 + -90.000 45.000 0.000 + -45.000 22.500 0.000 + 0.000 0.000 0.000 + 45.000 -22.500 0.000 + 90.000 -45.000 0.000 + 135.000 -67.500 0.000 + 180.000 -90.000 0.000 +- comment: "Test Web Mercator to avoid issue #834 in the future" + args: > + +proj=utm +zone=15 +datum=NAD83 +to + +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null -f %0.3f + in: 487147.594520173 4934316.46263998 + out: | + -10370728.796 5552839.742 0.000 +- comment: Test vto_meter + args: > + +proj=longlat +a=1 +b=1 +vto_meter=1000 +to + +proj=longlat +a=1 +b=1 -f %0.3f + in: 0 0 1 + out: | + 0.000 0.000 1000.000 +- args: > + +proj=merc +a=1 +b=1 +vto_meter=1000 +to + +proj=longlat +a=1 +b=1 -f %0.3f + in: 0 0 1 + out: | + 0.000 0.000 1000.000 +- args: > + +proj=longlat +a=1 +b=1 +to + +proj=longlat +a=1 +b=1 +vto_meter=1000 -f %0.3f + in: 0 0 1000 + out: | + 0.000 0.000 1.000 +- args: > + +proj=longlat +a=1 +b=1 +to + +proj=merc +a=1 +b=1 +vto_meter=1000 -f %0.3f + in: 0 0 1000 + out: | + 0.000 0.000 1.000 +- comment: "Test EPSG:4326 to EPSG:32631" + # Input is latitude, longitude order + args: EPSG:4326 +to EPSG:32631 + in: 49 3 0 + out: | + 500000.00 5427455.78 0.00 +- comment: "Test EPSG:32631 to EPSG:4326" + # Output is latitude, longitude order + args: EPSG:32631 EPSG:4326 + in: 400000 5000000 0 + out: | + 45d8'47.014"N 1d43'40.681"E 0.000 +- comment: Check we allow ellipsoids up to a 0.59% relative difference in size + args: +proj=longlat +R=3376200 +to IAU_2015:49935 + in: 0 -90 + out: | + 0.00 0.00 0.00 +- comment: "Test EPSG:4896 to EPSG:7930" + # Here we test that 4D coordinates are handled by cs2cs. Due to backwards + # compatibility, the t-component is not written to STDOUT as part of the + # coordinate data, but rather as part of the string that follows the xyz + # components. This is only seen by users when the -E option is used. Which + # means that this test also experience that behavior. + args: EPSG:4896 EPSG:7930 -f %.4f -E + in: | + 3496737.2679 743254.4507 5264462.9620 2019.0 + 3496737.2679 743254.4507 5264462.9620 2029.0 + out: | + 3496737.2679 743254.4507 5264462.9620 3496737.7857 743254.0394 5264462.6437 2019.0 + 3496737.2679 743254.4507 5264462.9620 3496737.9401 743253.8861 5264462.5497 2029.0 +- comment: Test ITRF2000 to ITRF1993 + # Here we test that HUGE_VAL is passed as the time value if not explicitly + # specified + args: ITRF2000 ITRF1993 -f %.7f -E + in: | + 59.4967 -117.61748 329.396 + 59.4967 -117.61748 329.396 1988 + out: | + 59.4967 -117.61748 329.396 59.4967002 -117.6174799 329.3845529 + 59.4967 -117.61748 329.396 59.4967002 -117.6174799 329.3845529 1988 +- comment: Check ob_tran with o_proj=longlat (#1525) + args: > + +proj=longlat +ellps=GRS80 +to + +proj=ob_tran +o_proj=longlat +lon_0=10 +o_lat_p=90 +ellps=GRS80 -f %.7f + in: -122 46 + out: | + -132.0000000 46.0000000 0.0000000 +- comment: Test inverse handling + args: > + +proj=longlat +ellps=GRS80 +to + +proj=ob_tran +o_proj=longlat +lon_0=10 +o_lat_p=90 +ellps=GRS80 -I -f %.7f + in: -122 46 + out: | + -112.0000000 46.0000000 0.0000000 +- args: +init=epsg:4326 +over +to +init=epsg:3857 +over -f %.7f + in: -181 49 + out: | + -20148827.8335825 6274861.3940066 0.0000000 +- args: > + +proj=longlat +over +datum=WGS84 +to + proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +over -f %.7f + in: -181 49 + out: | + -20148827.8335825 6274861.3940066 0.0000000 +- comment: Test EPSG:xxxx EPSG:yyyy filename + file: + name: tmp.txt + content: 2 49 + args: EPSG:4326 EPSG:4326 tmp.txt -E + out: | + 2 49 2dN 49dE 0.000 +- comment: Test Colombia Urban + args: EPSG:4686 EPSG:6247 -f %.3f + in: 4.8 -74.25 + out: | + 122543.174 80859.033 0.000 +- comment: Test effect of --authority (GH-2442) - use the EPSG:8076 operation + args: ITRF96 ITRF2014 + in: 49 2 + out: | + 49d0'0.002"N 2dE 0.018 +- comment: Test effect of --authority (GH-2442) - a no-op + args: --authority PROJ ITRF96 ITRF2014 + in: 49 2 + out: | + 49dN 2dE 0.000 +- comment: Test effect of --accuracy + env: + PROJ_DISPLAY_PROGRAM_NAME: NO + args: --accuracy 0.05 EPSG:4326 EPSG:4258 + exitcode: 3 + stderr: |2 + + cannot initialize transformation + cause: (null) + program abnormally terminated +- comment: Test effect of --no-ballpark + env: + PROJ_DISPLAY_PROGRAM_NAME: NO + args: --no-ballpark EPSG:4267 EPSG:4258 + exitcode: 3 + stderr: |2 + + cannot initialize transformation + cause: (null) + program abnormally terminated +- comment: Check that we can use a transformation spanning the antimeridian (should use Pulkovo 1942 to WGS 84 (20)) + args: '"Pulkovo 1942" "WGS 84"' + in: | + 50 179.999999999 + 50 -179.999999999 + out: | + 49d59'59.36"N 179d59'52.133"W 0.000 + 49d59'59.36"N 179d59'52.133"W 0.000 +- args: 'EPSG:2636 "WGS 84"' + in: | + 5540944.47 499999.999 + 5540944.47 500000.001 + out: | + 49d59'59.36"N 179d59'52.133"W 0.000 + 49d59'59.36"N 179d59'52.133"W 0.000 +- comment: Check that we select the operation that has the smallest area of use, when 2 have the same accuracy + args: 'EPSG:4326 "NAD83(HARN)"' + in: 34 -120 + out: | + 33d59'59.983"N 119d59'59.955"W 0.000 +- comment: Check that we promote CRS specified by name to 3D when the other one is 3D + env: + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: '"WGS 84" "WGS 84 + EGM96 height" -d 3' + in: 49 2 50 + out: | + 49.000 2.000 4.936 +- args: '"WGS 84 + EGM96 height" "WGS 84" -d 3' + env: + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + in: 49 2 0 + out: | + 49.000 2.000 45.064 +- comment: Test input file with UTF-8 BOM marker + file: + name: input_file2_with_utf8_bom.txt + content: "\uFEFF0 3 0\n" + args: EPSG:4326 EPSG:32631 input_file2_with_utf8_bom.txt -d 3 + # no BOM with output + out: "500000.000\t0.000 0.000" +- comment: Test cs2cs -W0 + args: -W0 +proj=latlong +datum=WGS84 +to +proj=latlong +datum=WGS84 + in: 0 0 + out: | + 0d00'00"E 0d00'00"N 0.000 +- comment: Test cs2cs -W8 + args: -W8 +proj=latlong +datum=WGS84 +to +proj=latlong +datum=WGS84 + in: 0 0 + out: | + 0d00'00.00000000"E 0d00'00.00000000"N 0.000 +- comment: Test cs2cs -W + env: + PROJ_DISPLAY_PROGRAM_NAME: NO + args: -W +proj=latlong +datum=WGS84 +to +proj=latlong +datum=WGS84 + exitcode: 1 + stderr: |2 + + -W argument missing or not in range [0,8] + program abnormally terminated +- comment: Test cs2cs -W9 + env: + PROJ_DISPLAY_PROGRAM_NAME: NO + args: -W9 +proj=latlong +datum=WGS84 +to +proj=latlong +datum=WGS84 + exitcode: 1 + stderr: |2 + + -W argument missing or not in range [0,8] + program abnormally terminated +- comment: Test cs2cs -W10 + env: + PROJ_DISPLAY_PROGRAM_NAME: NO + args: -W10 +proj=latlong +datum=WGS84 +to +proj=latlong +datum=WGS84 + exitcode: 1 + stderr: |2 + + -W argument missing or not in range [0,8] + program abnormally terminated +- comment: Test cs2cs --only-best (grid missing) for NTF to RGF93 + args: --only-best NTF RGF93 -E + in: 49 2 0 + stderr: | + Attempt to use coordinate operation NTF to RGF93 v1 (1) failed. Grid fr_ign_gr3df97a.tif is not available. Consult https://proj.org/resource_files.html for guidance. + stdout: | + 49 2 0 * * inf +- comment: Test cs2cs --only-best (working) for EPSG:4326+5773 to EPSG:4979 + env: + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: --only-best EPSG:4326+5773 EPSG:4979 + in: 49 2 0 + out: | + 49dN 2dE 45.064 +- comment: Test cs2cs --only-best (working) for EPSG:4326 to GDA94 + args: --only-best EPSG:4326 GDA94 + in: -30 152 0 + out: | + 30dS 152dE 0.000 +- comment: Test cs2cs --only-best (working) for GDA94 to EPSG:4326 + args: --only-best GDA94 EPSG:4326 + in: -30 152 0 + out: | + 30dS 152dE 0.000 +- comment: Test cs2cs --only-best (working) for EPSG:4326 to GDA2020 + args: --only-best EPSG:4326 GDA2020 + in: -30 152 0 + out: | + 30dS 152dE 0.000 +- comment: Test cs2cs --only-best (working) for GDA2020 to EPSG:4326 + args: --only-best GDA2020 EPSG:4326 + in: -30 152 0 + out: | + 30dS 152dE 0.000 +- comment: Test cs2cs (grid missing) for EPSG:4326+3855 to EPSG:4979 + env: + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: EPSG:4326+3855 EPSG:4979 + in: 49 2 0 + out: | + 49dN 2dE 0.000 +- comment: Test cs2cs --only-best=no (grid missing) for EPSG:4326+3855 to EPSG:4979 + env: + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: --only-best=no EPSG:4326+3855 EPSG:4979 + in: 49 2 0 + out: | + 49dN 2dE 0.000 +- comment: Test cs2cs --only-best (grid missing) for EPSG:4326+3855 to EPSG:4979 + env: + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: --only-best EPSG:4326+3855 EPSG:4979 + in: 49 2 0 + stderr: | + Attempt to use coordinate operation Inverse of WGS 84 to EGM2008 height (1) failed. Grid us_nga_egm08_25.tif is not available. Consult https://proj.org/resource_files.html for guidance. + stdout: | + * * inf +- comment: Test cs2cs --only-best=yes (grid missing) for EPSG:4326+3855 to EPSG:4979 + env: + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: --only-best=yes EPSG:4326+3855 EPSG:4979 + in: 49 2 0 + stderr: | + Attempt to use coordinate operation Inverse of WGS 84 to EGM2008 height (1) failed. Grid us_nga_egm08_25.tif is not available. Consult https://proj.org/resource_files.html for guidance. + stdout: | + * * inf +- comment: Test cs2cs (grid missing) with PROJ_ONLY_BEST_DEFAULT=YES for EPSG:4326+3855 to EPSG:4979 + env: + PROJ_ONLY_BEST_DEFAULT: YES + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: EPSG:4326+3855 EPSG:4979 + in: 49 2 0 + stderr: | + Attempt to use coordinate operation Inverse of WGS 84 to EGM2008 height (1) failed. Grid us_nga_egm08_25.tif is not available. Consult https://proj.org/resource_files.html for guidance. + stdout: | + * * inf +- comment: Test cs2cs (grid missing) with only_best_default=on in proj.ini + file: + name: proj.ini + content: only_best_default=on + env: + PROJ_DATA: $PWD:$PROJ_DATA + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: EPSG:4326+3855 EPSG:4979 + in: 49 2 0 + stderr: | + Attempt to use coordinate operation Inverse of WGS 84 to EGM2008 height (1) failed. Grid us_nga_egm08_25.tif is not available. Consult https://proj.org/resource_files.html for guidance. + stdout: | + * * inf +- comment: Test cs2cs --only-best (grid missing) + env: + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: --only-best NAD27 NAD83 + in: 40 -100 0 + stderr: | + Attempt to use coordinate operation NAD27 to NAD83 (7) failed. Grid us_noaa_nadcon5_nad27_nad83_1986_conus.tif is not available. Consult https://proj.org/resource_files.html for guidance. + stdout: | + * * inf +- comment: Test cs2cs --only-best --no-ballpark (grid missing) + env: + PROJ_DISPLAY_PROGRAM_NAME: NO + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: --only-best --no-ballpark EPSG:4326+3855 EPSG:4979 + exitcode: 3 + stderr: | + Attempt to use coordinate operation Inverse of WGS 84 to EGM2008 height (1) failed. Grid us_nga_egm08_25.tif is not available. Consult https://proj.org/resource_files.html for guidance. + + cannot initialize transformation + cause: File not found or invalid + program abnormally terminated +- comment: Test cs2cs (grid missing) with scenario of GH-3607 that we are using the 'NAD27 to WGS 84 (6)' DMA-ConusW transformation + tmpdir: + copy: + - $PROJ_DATA/proj.db + env: + PROJ_DATA: $tmpdir + args: +proj=latlong +datum=WGS84 +to +proj=utm +zone=10 +datum=NAD27 + in: | + -111.5 45.25919444444 + -111.5 45.25919444444 + out: | + 1402288.54 5076296.64 0.00 + 1402288.54 5076296.64 0.00 +- comment: Test cs2cs (grid missing) with scenario of GH-3613 that we are using a WGS 84 intermediate to do NAD27 to NAD83 + tmpdir: + copy: + - $PROJ_DATA/proj.db + env: + PROJ_DATA: $tmpdir + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: EPSG:26915 EPSG:26715 + in: | + 569704.5660295591 4269024.671083651 + 569704.5660295591 4269024.671083651 + out: | + 569720.46 4268813.88 0.00 + 569720.46 4268813.88 0.00 +- comment: Test cs2cs (grid missing) with scenario of https://lists.osgeo.org/pipermail/proj/2023-April/011003.html + tmpdir: + copy: + - $PROJ_DATA/proj.db + env: + PROJ_DATA: $tmpdir + PROJ_DEBUG: 2 + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: EPSG:4326+5773 EPSG:4326+5782 + in: 39 -3 0 + grep-v: pj_open_lib + stderr: | + Attempt to use coordinate operation Inverse of WGS 84 to EGM96 height (1) + ETRS89 to Alicante height (1) using ETRS89 to WGS 84 (1) failed. Grid es_ign_egm08-rednap.tif is not available. Consult https://proj.org/resource_files.html for guidance. Grid us_nga_egm96_15.tif is not available. Consult https://proj.org/resource_files.html for guidance. This might become an error in a future PROJ major release. Set the ONLY_BEST option to YES or NO. This warning will no longer be emitted (for the current transformation instance). + Using coordinate operation Transformation from EGM96 height to Alicante height (ballpark vertical transformation) + stdout: | + 39.00 -3.00 0.00 +- comment: Test cs2cs (grid missing) --only-best=no with scenario of https://lists.osgeo.org/pipermail/proj/2023-April/011003.html + tmpdir: + copy: + - $PROJ_DATA/proj.db + env: + PROJ_DATA: $tmpdir + PROJ_DEBUG: 2 + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: --only-best=no EPSG:4326+5773 EPSG:4326+5782 + in: 39 -3 0 + grep-v: pj_open_lib + out: | + 39.00 -3.00 0.00 +- comment: Test cs2cs (grid missing) --only-best with scenario of https://lists.osgeo.org/pipermail/proj/2023-April/011003.html + tmpdir: + copy: + - $PROJ_DATA/proj.db + env: + PROJ_DATA: $tmpdir + PROJ_DEBUG: 2 + PROJ_DISPLAY_PROGRAM_NAME: NO + PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY: YES + args: --only-best EPSG:4326+5773 EPSG:4326+5782 + in: 39 -3 0 + grep-v: pj_open_lib + stderr: | + Attempt to use coordinate operation Inverse of WGS 84 to EGM96 height (1) + ETRS89 to Alicante height (1) using ETRS89 to WGS 84 (1) failed. Grid es_ign_egm08-rednap.tif is not available. Consult https://proj.org/resource_files.html for guidance. Grid us_nga_egm96_15.tif is not available. Consult https://proj.org/resource_files.html for guidance. + + cannot initialize transformation + cause: File not found or invalid + program abnormally terminated + stdout: "" + exitcode: 3 +- comment: Test cs2cs grid missing with @gridname + args: +proj=longlat +datum=WGS84 +units=m +geoidgrids=@i_dont_exist.tif +vunits=m +no_defs +type=crs +to EPSG:4979 + in: 2 49 0 + out: | + 49dN 2dE 0.000 +- comment: Test cs2cs geographic -> geocentric using BETA2007.gsb grid + args: EPSG:4746 EPSG:4978 + in: 50.5 10 0 + out: | + 4003461.55 705832.08 4898267.79 +- comment: Test cs2cs geocentric -> geographic using BETA2007.gsb grid + args: EPSG:4978 EPSG:4746 + in: 4003461.55 705832.08 4898267.79 + out: | + 50d30'N 10dE -0.001 +- comment: Test cs2cs geographic -> geocentric, normally using BETA2007.gsb grid but missing + tmpdir: + copy: + - $PROJ_DATA/proj.db + env: + PROJ_DATA: $tmpdir + args: EPSG:4746 EPSG:4978 + in: 50.5 10 0 + out: | + 4003461.37 705832.04 4898267.94 +- comment: Test cs2cs geocentric -> geographic, normally using BETA2007.gsb grid but missing + tmpdir: + copy: + - $PROJ_DATA/proj.db + env: + PROJ_DATA: $tmpdir + args: EPSG:4978 EPSG:4746 + in: 4003461.37 705832.04 4898267.94 + out: | + 50d30'N 10dE -0.002 +- comment: Test cs2cs geographic -> geocentric outside BETA2007.gsb grid + args: EPSG:4746 EPSG:4978 + in: 49 2 0 + out: | + 4189881.02 146313.87 4790558.75 +- comment: Test cs2cs geocentric -> geographic outside BETA2007.gsb grid + args: EPSG:4978 EPSG:4746 + in: 4189881.02 146313.87 4790558.75 + out: | + 49dN 2dE 0.002 +- comment: Test Similarity Transformation (example from EPSG Guidance Note 7.2) + args: -d 3 EPSG:23031 EPSG:25831 + in: 300000 4500000 + out: | + 299905.060 4499796.515 0.000 +- comment: Test inverse of Similarity Transformation (example from EPSG Guidance Note 7.2) + args: -d 3 EPSG:25831 EPSG:23031 + in: 299905.060 4499796.515 + out: | + 300000.000 4500000.000 0.000 +- comment: Test Similarity Transformation through CompoundCRS +# Cf https://github.com/OSGeo/PROJ/issues/3854#issuecomment-1689964773 + args: -d 3 EPSG:3912 EPSG:3794 + in: 477134.28 95134.21 + out: | + 476763.303 95620.222 0.000 +- args: -d 3 EPSG:3912+EPSG:5779 EPSG:3794+EPSG:8690 + in: 477134.28 95134.21 5 + out: | + 476763.303 95620.222 5.000 +- comment: Test --s_epoch + args: -d 8 --s_epoch 2022 "ITRF2014" "GDA2020" + in: -30 150 + out: | + -30.00000099 149.99999956 0.00031880 +- comment: Test --t_epoch + args: -d 8 --t_epoch 2022 "GDA2020" "ITRF2014" -E + in: -30 150 + out: | + -30 150 -29.99999901 150.00000044 -0.00031879 +- args: > + +proj=topocentric +datum=WGS84 +X_0=-3982059.42 +Y_0=3331314.88 +Z_0=3692463.58 +no_defs +type=crs +to + EPSG:4978 -d 3 -E + in: 0 0 0 + out: | + 0 0 0 -3982059.420 3331314.880 3692463.580 +- comment: > + Test cs2cs EPSG:5488 (RGAF09) to EPSG:4559+5757 (RRAF 1991 / UTM zone 20N + Guadeloupe 1988 height) + + Check that we use the horizontal transformation for Guadeloupe (RRAF 1991 to RGAF09 (2)), and not the one for Martinique + skipif: env.get("TIFF_ENABLED") == "NO" + env: + PROJ_DATA: ${PROJ_DATA}:${PROJ_DATA}/tests + args: -d 3 EPSG:5488 EPSG:4559+5757 + in: 16.248285304 -61.484212843 53.073 + out: | + 661991.318 1796999.201 93.846 diff --git a/test/cli/test_invproj.yaml b/test/cli/test_invproj.yaml new file mode 100644 index 0000000000..548deb6b28 --- /dev/null +++ b/test/cli/test_invproj.yaml @@ -0,0 +1,6 @@ +comment: Test basic capabilities of the invproj command +exe: invproj +tests: +- args: +proj=tmerc +ellps=GRS80 -E -f %.3f + in: 146339.48 5431555.61 + out: "146339.48 5431555.61\t2.000\t49.000" diff --git a/test/cli/test_proj.yaml b/test/cli/test_proj.yaml new file mode 100644 index 0000000000..188759f446 --- /dev/null +++ b/test/cli/test_proj.yaml @@ -0,0 +1,21 @@ +comment: Test basic capabilities of the proj command +exe: proj +tests: +- args: +ellps=WGS84 +proj=ob_tran +o_proj=latlon +o_lon_p=0.0 +o_lat_p=90.0 +lon_0=360.0 +to_meter=0.0174532925199433 +no_defs -E -f %.3f + in: 2 49 + out: "2 49\t2.000\t49.000" +- comment: Test CRS option + args: EPSG:32620 -S + in: -63 0 + out: "500000.00\t0.00\t<0.9996 0.9996 0.9992 0 0.9996 0.9996>" +- comment: Test projection factors on projected CRS with non-Greenwhich prime meridian + args: EPSG:27571 -S + in: 2.33722917 49.5 + # On some architectures the angular distortion (omega) of EPSG:27571 is + # not exactly 0, but 8.53878e-07 + sub: ["8.53878e-07", "0"] + out: "600000.00\t1200000.00\t<0.999877 0.999877 0.999755 0 0.999877 0.999877>" +- comment: Test projection factors on compound CRS with a projected CRS + args: EPSG:5972 -S + in: 9 0 + out: "500000.00\t0.00\t<0.9996 0.9996 0.9992 0 0.9996 0.9996>" diff --git a/test/cli/test_proj_nad27.yaml b/test/cli/test_proj_nad27.yaml new file mode 100644 index 0000000000..16475b3229 --- /dev/null +++ b/test/cli/test_proj_nad27.yaml @@ -0,0 +1,806 @@ +comment: > + These tests are from an old script "test27" from the 1990s used to test + nad27 init files with most of the SPCS zones. + + It was originally generated from execution of NMD's program l176, where the + second pair of numbers are respective easting and northing output. + + Original versions of proj varied in the .001ft range with projections using + Transverse Mercator due to greater precision of meridional distance function. +exe: proj +tests: +- args: +units=us-ft +init=nad27:5001 -E -f %.3f + in: -134d00'00.000 55d00'00.000 2615716.535 1156768.938 AK 1 GP1 + out: "-134d00'00.000 55d00'00.000\t2615716.535\t1156768.938 2615716.535 1156768.938 AK 1 GP1" +- args: +units=us-ft +init=nad27:5001 -f %.3f + in: -133d40'00.000 57d00'00.000 2685642.815 1887198.473 AK 1 GP2 + out: "2685642.815\t1887198.473 2685642.815 1887198.473 AK 1 GP2" +- args: +units=us-ft +init=nad27:5001 -f %.3f + in: -131d35'45.432 54d39'02.654 3124247.971 1035731.647 AK 1 GP3 + out: "3124247.971\t1035731.647 3124247.971 1035731.647 AK 1 GP3" +- args: +units=us-ft +init=nad27:5001 -f %.3f + in: -129d32'30.000 54d32'30.000 3561180.429 1015414.284 AK 1 GP4 + out: "3561180.429\t1015414.284 3561180.429 1015414.284 AK 1 GP4" +- args: +units=us-ft +init=nad27:5001 -f %.3f + in: -141d30'00.000 60d30'00.000 1275974.313 3248584.184 AK 1 GP6 + out: "1275974.313\t3248584.184 1275974.313 3248584.184 AK 1 GP6" +- args: +units=us-ft +init=nad27:5002 -f %.3f + in: -142d00'00.000 56d30'30.000 500000.000 916085.508 AK 2 GP1 + out: "500000.000\t916085.508 500000.000 916085.508 AK 2 GP1" +- args: +units=us-ft +init=nad27:5003 -f %.3f + in: -146d00'00.000 56d30'30.000 500000.000 916085.508 AK 3 GP1 + out: "500000.000\t916085.508 500000.000 916085.508 AK 3 GP1" +- args: +units=us-ft +init=nad27:5004 -f %.3f + in: -150d00'00.000 56d30'30.000 500000.000 916085.508 AK 4 GP1 + out: "500000.000\t916085.508 500000.000 916085.508 AK 4 GP1" +- args: +units=us-ft +init=nad27:5005 -f %.3f + in: -152d28'56.134 60d53'28.765 770312.640 2520850.031 AK 5 GP1 + out: "770312.640\t2520850.030 770312.640 2520850.031 AK 5 GP1" +- args: +units=us-ft +init=nad27:5005 -f %.3f + in: -154d00'00.000 56d30'30.000 500000.000 916085.508 AK 5 GP2 + out: "500000.000\t916085.508 500000.000 916085.508 AK 5 GP2" +- args: +units=us-ft +init=nad27:5006 -f %.3f + in: -155d00'00.000 71d00'00.000 857636.168 6224356.320 AK 6 GP1 + out: "857636.168\t6224356.319 857636.168 6224356.320 AK 6 GP1" +- args: +units=us-ft +init=nad27:5006 -f %.3f + in: -158d00'00.000 71d00'00.000 500000.000 6215501.078 AK 6 GP1 + out: "500000.000\t6215501.077 500000.000 6215501.078 AK 6 GP1" +- args: +units=us-ft +init=nad27:5007 -f %.3f + in: -162d00'00.000 65d15'00.000 700000.000 4111525.687 AK 7 GP1 + out: "700000.000\t4111525.685 700000.000 4111525.687 AK 7 GP1" +- args: +units=us-ft +init=nad27:5008 -f %.3f + in: -166d00'00.000 65d15'00.000 500000.000 4111525.687 AK 8 GP1 + out: "500000.000\t4111525.685 500000.000 4111525.687 AK 8 GP1" +- args: +units=us-ft +init=nad27:5009 -f %.3f + in: -170d00'00.000 63d20'00.000 600000.000 3410550.008 AK 9 GP1 + out: "600000.000\t3410550.007 600000.000 3410550.008 AK 9 GP1" +- args: +units=us-ft +init=nad27:5010 -f %.3f + in: -164d02'30.000 54d27'30.000 5533424.392 1473805.123 AK10 GP1 + out: "5533424.392\t1473805.123 5533424.392 1473805.123 AK10 GP1" +- args: +units=us-ft +init=nad27:5010 -f %.3f + in: -176d00'00.000 52d30'00.000 3000000.000 547583.333 AK10 GP2 + out: "3000000.000\t547583.333 3000000.000 547583.333 AK10 GP2" +- args: +units=us-ft +init=nad27:101 -f %.3f + in: -85d50'00.000 31d20'00.000 500000.000 303093.746 AL E GP1 + out: "500000.000\t303093.746 500000.000 303093.746 AL E GP1" +- args: +units=us-ft +init=nad27:101 -f %.3f + in: -85d12'41.738 32d38'57.737 691376.573 782394.791 AL E GP2 + out: "691376.573\t782394.791 691376.573 782394.791 AL E GP2" +- args: +units=us-ft +init=nad27:101 -f %.3f + in: -86d36'58.670 34d48'58.708 264979.900 1571249.667 AL E GP3 + out: "264979.900\t1571249.667 264979.900 1571249.667 AL E GP3" +- args: +units=us-ft +init=nad27:102 -f %.3f + in: -87d30'00.000 33d20'00.000 500000.000 1212487.425 AL W GP1 + out: "500000.000\t1212487.425 500000.000 1212487.425 AL W GP1" +- args: +units=us-ft +init=nad27:102 -f %.3f + in: -87d30'00.000 33d20'30.000 500000.000 1215519.455 AL W GP2 + out: "500000.000\t1215519.455 500000.000 1215519.455 AL W GP2" +- args: +units=us-ft +init=nad27:301 -f %.3f + in: -91d34'46.321 35d18'37.443 2125448.748 355890.988 AR N GP1 + out: "2125448.748\t355890.988 2125448.748 355890.988 AR N GP1" +- args: +units=us-ft +init=nad27:301 -f %.3f + in: -92d04'11.625 35d19'34.269 1979150.162 361375.766 AR N GP2 + out: "1979150.162\t361375.766 1979150.162 361375.766 AR N GP2" +- args: +units=us-ft +init=nad27:302 -f %.3f + in: -92d00'00.000 34d45'00.000 2000000.000 758096.040 AR S GP1 + out: "2000000.000\t758096.040 2000000.000 758096.040 AR S GP1" +- args: +units=us-ft +init=nad27:302 -f %.3f + in: -92d00'00.000 33d15'00.000 2000000.000 212263.845 AR S GP2 + out: "2000000.000\t212263.845 2000000.000 212263.845 AR S GP2" +- args: +units=us-ft +init=nad27:5300 -f %.3f + in: -170d00'00.000 -14d16'00.000 500000.000 312234.650 AS GP1 + out: "500000.000\t312234.650 500000.000 312234.650 AS GP1" +- args: +units=us-ft +init=nad27:5300 -f %.3f + in: -166d50'38.406 -9d34'41.556 1640416.676 2007870.029 AS GP2 + out: "1640416.676\t2007870.029 1640416.676 2007870.029 AS GP2" +- args: +units=us-ft +init=nad27:202 -f %.3f + in: -111d55'00.000 34d45'00.000 500000.000 1364267.386 AZ C GP1 + out: "500000.000\t1364267.386 500000.000 1364267.386 AZ C GP1" +- args: +units=us-ft +init=nad27:202 -f %.3f + in: -111d55'00.000 32d20'00.000 500000.000 484978.270 AZ C GP2 + out: "500000.000\t484978.270 500000.000 484978.270 AZ C GP2" +- args: +units=us-ft +init=nad27:201 -f %.3f + in: -110d24'59.771 35d09'58.568 425301.125 1515853.426 AZ E GP1 + out: "425301.125\t1515853.425 425301.125 1515853.426 AZ E GP1" +- args: +units=us-ft +init=nad27:201 -f %.3f + in: -109d34'33.127 31d59'53.103 683147.830 363527.538 AZ E GP2 + out: "683147.830\t363527.538 683147.830 363527.538 AZ E GP2" +- args: +units=us-ft +init=nad27:201 -f %.3f + in: -110d30'34.948 35d07'28.243 397422.297 1500739.241 AZ E GP3 + out: "397422.297\t1500739.241 397422.297 1500739.241 AZ E GP3" +- args: +units=us-ft +init=nad27:201 -f %.3f + in: -109d45'13.226 32d08'41.778 627823.092 416691.532 AZ E GP4 + out: "627823.092\t416691.532 627823.092 416691.532 AZ E GP4" +- args: +units=us-ft +init=nad27:203 -f %.3f + in: -113d45'00.000 34d45'00.000 500000.000 1364312.866 AZ W GP1 + out: "500000.000\t1364312.866 500000.000 1364312.866 AZ W GP1" +- args: +units=us-ft +init=nad27:203 -f %.3f + in: -113d45'00.000 34d45'30.000 500000.000 1367345.603 AZ W GP2 + out: "500000.000\t1367345.603 500000.000 1367345.603 AZ W GP2" +- args: +units=us-ft +init=nad27:203 -f %.3f + in: -113d45'00.000 34d46'00.000 500000.000 1370378.345 AZ W GP3 + out: "500000.000\t1370378.345 500000.000 1370378.345 AZ W GP3" +- args: +units=us-ft +init=nad27:401 -f %.3f + in: -122d00'00.000 41d30'00.000 2000000.000 789314.699 CA 1 GP1 + out: "2000000.000\t789314.699 2000000.000 789314.699 CA 1 GP1" +- args: +units=us-ft +init=nad27:401 -f %.3f + in: -122d00'00.000 41d30'30.000 2000000.000 792351.052 CA 1 GP2 + out: "2000000.000\t792351.052 2000000.000 792351.052 CA 1 GP2" +- args: +units=us-ft +init=nad27:402 -f %.3f + in: -122d00'00.000 39d20'00.000 2000000.000 606975.074 CA 2 GP1 + out: "2000000.000\t606975.074 2000000.000 606975.074 CA 2 GP1" +- args: +units=us-ft +init=nad27:402 -f %.3f + in: -122d00'00.000 39d20'30.000 2000000.000 610010.158 CA 2 GP2 + out: "2000000.000\t610010.158 2000000.000 610010.158 CA 2 GP2" +- args: +units=us-ft +init=nad27:403 -f %.3f + in: -120d30'00.000 37d05'00.000 2000000.000 212394.029 CA 3 GP1 + out: "2000000.000\t212394.029 2000000.000 212394.029 CA 3 GP1" +- args: +units=us-ft +init=nad27:403 -f %.3f + in: -121d22'26.019 37d30'30.324 1746516.910 368350.900 CA 3 GP2 + out: "1746516.910\t368350.900 1746516.910 368350.900 CA 3 GP2" +- args: +units=us-ft +init=nad27:403 -f %.3f + in: -119d46'32.733 37d07'41.470 2211146.746 229541.692 CA 3 GP3 + out: "2211146.746\t229541.692 2211146.746 229541.692 CA 3 GP3" +- args: +units=us-ft +init=nad27:403 -f %.3f + in: -119d38'26.434 36d55'48.009 2251190.696 157720.169 CA 3 GP4 + out: "2251190.696\t157720.169 2251190.696 157720.169 CA 3 GP4" +- args: +units=us-ft +init=nad27:403 -f %.3f + in: -120d42'59.779 38d06'52.815 1937681.203 587984.757 CA 3 GP5 + out: "1937681.203\t587984.757 1937681.203 587984.757 CA 3 GP5" +- args: +units=us-ft +init=nad27:404 -f %.3f + in: -119d00'00.000 36d20'00.000 2000000.000 364036.106 CA 4 GP1 + out: "2000000.000\t364036.106 2000000.000 364036.106 CA 4 GP1" +- args: +units=us-ft +init=nad27:404 -f %.3f + in: -119d00'00.000 36d20'30.000 2000000.000 367069.711 CA 4 GP2 + out: "2000000.000\t367069.711 2000000.000 367069.711 CA 4 GP2" +- args: +units=us-ft +init=nad27:405 -f %.3f + in: -118d00'00.000 34d45'00.000 2000000.000 454894.032 CA 5 GP1 + out: "2000000.000\t454894.032 2000000.000 454894.032 CA 5 GP1" +- args: +units=us-ft +init=nad27:405 -f %.3f + in: -118d00'00.000 34d45'30.000 2000000.000 457926.735 CA 5 GP2 + out: "2000000.000\t457926.735 2000000.000 457926.735 CA 5 GP2" +- args: +units=us-ft +init=nad27:406 -f %.3f + in: -116d15'00.000 33d20'00.000 2000000.000 424481.703 CA 6 GP1 + out: "2000000.000\t424481.703 2000000.000 424481.703 CA 6 GP1" +- args: +units=us-ft +init=nad27:406 -f %.3f + in: -116d15'00.000 33d20'30.000 2000000.000 427513.796 CA 6 GP2 + out: "2000000.000\t427513.796 2000000.000 427513.796 CA 6 GP2" +- args: +units=us-ft +init=nad27:407 -f %.3f + in: -118d20'00.000 34d30'00.000 4186692.580 4294365.712 CA 7 GP1 + out: "4186692.580\t4294365.712 4186692.580 4294365.712 CA 7 GP1" +- args: +units=us-ft +init=nad27:502 -f %.3f + in: -105d30'00.000 39d15'00.000 2000000.000 515936.228 CO C GP1 + out: "2000000.000\t515936.228 2000000.000 515936.228 CO C GP1" +- args: +units=us-ft +init=nad27:502 -f %.3f + in: -105d30'00.000 39d15'30.000 2000000.000 518971.313 CO C GP2 + out: "2000000.000\t518971.313 2000000.000 518971.313 CO C GP2" +- args: +units=us-ft +init=nad27:501 -f %.3f + in: -108d45'55.378 40d25'33.504 1091086.832 414752.176 CO N GP1 + out: "1091086.832\t414752.176 1091086.832 414752.176 CO N GP1" +- args: +units=us-ft +init=nad27:501 -f %.3f + in: -105d14'45.588 40d12'42.711 2070940.652 320120.166 CO N GP2 + out: "2070940.652\t320120.166 2070940.652 320120.166 CO N GP2" +- args: +units=us-ft +init=nad27:503 -f %.3f + in: -105d30'00.000 37d30'00.000 2000000.000 303425.100 CO S GP1 + out: "2000000.000\t303425.100 2000000.000 303425.100 CO S GP1" +- args: +units=us-ft +init=nad27:503 -f %.3f + in: -105d30'00.000 37d30'30.000 2000000.000 306459.335 CO S GP2 + out: "2000000.000\t306459.335 2000000.000 306459.335 CO S GP2" +- args: +units=us-ft +init=nad27:600 -f %.3f + in: -72d43'30.515 41d16'55.847 606832.139 163540.219 CT GP1 + out: "606832.139\t163540.219 606832.139 163540.219 CT GP1" +- args: +units=us-ft +init=nad27:600 -f %.3f + in: -73d01'15.609 41d13'25.985 525446.203 142415.891 CT GP2 + out: "525446.203\t142415.891 525446.203 142415.891 CT GP2" +- args: +units=us-ft +init=nad27:700 -f %.3f + in: -75d33'00.748 39d21'15.214 462235.881 493228.846 DE GP1 + out: "462235.881\t493228.846 462235.881 493228.846 DE GP1" +- args: +units=us-ft +init=nad27:700 -f %.3f + in: -75d19'01.889 39d45'14.765 527969.596 638870.822 DE GP2 + out: "527969.596\t638870.822 527969.596 638870.822 DE GP2" +- args: +units=us-ft +init=nad27:901 -f %.3f + in: -80d11'00.000 25d45'00.000 768810.056 515637.939 FL E GP1 + out: "768810.056\t515637.939 768810.056 515637.939 FL E GP1" +- args: +units=us-ft +init=nad27:903 -f %.3f + in: -82d45'52.412 29d39'06.589 2551254.254 241240.008 FL N GP1 + out: "2551254.254\t241240.008 2551254.254 241240.008 FL N GP1" +- args: +units=us-ft +init=nad27:903 -f %.3f + in: -84d55'11.533 29d38'51.982 1866620.008 235814.655 FL N GP2 + out: "1866620.008\t235814.655 1866620.008 235814.655 FL N GP2" +- args: +units=us-ft +init=nad27:902 -f %.3f + in: -82d38'00.000 27d47'00.000 295216.148 1254408.638 FL W GP1 + out: "295216.148\t1254408.638 295216.148 1254408.638 FL W GP1" +- args: +units=us-ft +init=nad27:1001 -f %.3f + in: -81d27'15.592 32d38'03.003 719287.314 958818.262 GA E GP1 + out: "719287.314\t958818.262 719287.314 958818.262 GA E GP1" +- args: +units=us-ft +init=nad27:1001 -f %.3f + in: -83d15'39.990 33d29'58.626 166361.311 1274706.363 GA E GP2 + out: "166361.311\t1274706.363 166361.311 1274706.363 GA E GP2" +- args: +units=us-ft +init=nad27:1002 -f %.3f + in: -84d23'00.000 33d45'00.000 434141.824 1364117.672 GA W GP1 + out: "434141.824\t1364117.672 434141.824 1364117.672 GA W GP1" +- args: +units=us-ft +init=nad27:5400 -f %.3f + in: 144d44'55.503 13d28'20.879 164041.712 164041.680 GU GP1 + out: "164041.712\t164041.680 164041.712 164041.680 GU GP1" +- args: +units=us-ft +init=nad27:5400 -f %.3f + in: 144d38'07.193 13d20'20.538 123728.401 115623.086 GU GP2 + out: "123728.401\t115623.086 123728.401 115623.086 GU GP2" +- args: +units=us-ft +init=nad27:5101 -f %.3f + in: -155d59'16.911 19d37'23.477 332050.939 287068.342 HI 1 GP1 + out: "332050.939\t287068.342 332050.939 287068.342 HI 1 GP1" +- args: +units=us-ft +init=nad27:5101 -f %.3f + in: -155d18'06.262 19d31'24.578 568270.061 250663.241 HI 1 GP2 + out: "568270.061\t250663.241 568270.061 250663.241 HI 1 GP2" +- args: +units=us-ft +init=nad27:5101 -f %.3f + in: -155d30'00.000 19d42'00.000 500000.000 314722.985 HI 1 GP3 + out: "500000.000\t314722.985 500000.000 314722.985 HI 1 GP3" +- args: +units=us-ft +init=nad27:5101 -f %.3f + in: -155d30'00.000 19d42'30.000 500000.000 317749.315 HI 1 GP4 + out: "500000.000\t317749.315 500000.000 317749.315 HI 1 GP4" +- args: +units=us-ft +init=nad27:5102 -f %.3f + in: -156d40'00.000 20d42'00.000 500000.000 133170.903 HI 2 GP1 + out: "500000.000\t133170.903 500000.000 133170.903 HI 2 GP1" +- args: +units=us-ft +init=nad27:5102 -f %.3f + in: -156d40'00.000 20d42'30.000 500000.000 136197.580 HI 2 GP2 + out: "500000.000\t136197.580 500000.000 136197.580 HI 2 GP2" +- args: +units=us-ft +init=nad27:5103 -f %.3f + in: -158d00'00.000 21d30'00.000 500000.000 121078.981 HI 3 GP1 + out: "500000.000\t121078.981 500000.000 121078.981 HI 3 GP1" +- args: +units=us-ft +init=nad27:5103 -f %.3f + in: -158d01'30.000 21d37'30.000 491508.215 166485.537 HI 3 GP2 + out: "491508.215\t166485.537 491508.215 166485.537 HI 3 GP2" +- args: +units=us-ft +init=nad27:5104 -f %.3f + in: -159d30'00.000 22d05'00.000 500000.000 90816.138 HI 4 GP1 + out: "500000.000\t90816.138 500000.000 90816.138 HI 4 GP1" +- args: +units=us-ft +init=nad27:5105 -f %.3f + in: -160d10'00.000 21d42'00.000 500000.000 12108.532 HI 5 GP1 + out: "500000.000\t12108.532 500000.000 12108.532 HI 5 GP1" +- args: +units=us-ft +init=nad27:1401 -f %.3f + in: -93d28'33.966 42d44'50.101 2006419.316 454523.076 IA N GP1 + out: "2006419.316\t454523.076 2006419.316 454523.076 IA N GP1" +- args: +units=us-ft +init=nad27:1401 -f %.3f + in: -93d54'22.084 42d40'23.699 1890779.351 427816.212 IA N GP2 + out: "1890779.351\t427816.212 1890779.351 427816.212 IA N GP2" +- args: +units=us-ft +init=nad27:1402 -f %.3f + in: -93d37'00.000 41d35'00.000 1968081.762 576880.709 IA S GP1 + out: "1968081.762\t576880.709 1968081.762 576880.709 IA S GP1" +- args: +units=us-ft +init=nad27:1102 -f %.3f + in: -114d24'00.000 42d56'00.000 392878.009 461838.231 ID C GP1 + out: "392878.009\t461838.231 392878.009 461838.231 ID C GP1" +- args: +units=us-ft +init=nad27:1101 -f %.3f + in: -111d42'29.824 43d48'07.616 621017.480 778569.749 ID E GP1 + out: "621017.480\t778569.749 621017.480 778569.749 ID E GP1" +- args: +units=us-ft +init=nad27:1101 -f %.3f + in: -112d22'35.516 43d35'26.260 444398.356 701217.958 ID E GP2 + out: "444398.356\t701217.958 444398.356 701217.958 ID E GP2" +- args: +units=us-ft +init=nad27:1103 -f %.3f + in: -116d22'02.592 48d07'50.941 349231.302 2357247.272 ID W GP1 + out: "349231.302\t2357247.272 349231.302 2357247.272 ID W GP1" +- args: +units=us-ft +init=nad27:1201 -f %.3f + in: -88d07'06.790 41d46'11.855 558591.507 1858801.531 IL E GP1 + out: "558591.507\t1858801.531 558591.507 1858801.531 IL E GP1" +- args: +units=us-ft +init=nad27:1201 -f %.3f + in: -88d41'35.208 40d43'37.202 400279.755 1478930.010 IL E GP2 + out: "400279.755\t1478930.010 400279.755 1478930.010 IL E GP2" +- args: +units=us-ft +init=nad27:1202 -f %.3f + in: -90d10'00.000 38d30'00.000 500000.000 667527.020 IL W GP1 + out: "500000.000\t667527.020 500000.000 667527.020 IL W GP1" +- args: +units=us-ft +init=nad27:1301 -f %.3f + in: -85d40'00.000 40d00'00.000 500000.000 910470.786 IN E GP1 + out: "500000.000\t910470.785 500000.000 910470.786 IN E GP1" +- args: +units=us-ft +init=nad27:1301 -f %.3f + in: -85d40'00.000 40d00'30.000 500000.000 913506.351 IN E GP2 + out: "500000.000\t913506.350 500000.000 913506.351 IN E GP2" +- args: +units=us-ft +init=nad27:1301 -f %.3f + in: -86d14'27.780 40d00'12.690 339087.973 912273.325 IN E GP3 + out: "339087.973\t912273.324 339087.973 912273.325 IN E GP3" +- args: +units=us-ft +init=nad27:1301 -f %.3f + in: -86d14'27.790 40d00'31.660 339099.565 914192.836 IN E GP4 + out: "339099.565\t914192.836 339099.565 914192.836 IN E GP4" +- args: +units=us-ft +init=nad27:1301 -f %.3f + in: -86d14'28.103 40d00'47.412 339085.485 915786.883 IN E GP6 + out: "339085.485\t915786.883 339085.485 915786.883 IN E GP6" +- args: +units=us-ft +init=nad27:1302 -f %.3f + in: -87d05'00.000 40d00'00.000 500000.000 910470.786 IN W GP1 + out: "500000.000\t910470.785 500000.000 910470.786 IN W GP1" +- args: +units=us-ft +init=nad27:1302 -f %.3f + in: -87d05'00.000 40d00'30.000 500000.000 913506.351 IN W GP2 + out: "500000.000\t913506.350 500000.000 913506.351 IN W GP2" +- args: +units=us-ft +init=nad27:1302 -f %.3f + in: -86d45'10.717 39d41'24.840 592969.921 797807.077 IN W GP3 + out: "592969.921\t797807.077 592969.921 797807.077 IN W GP3" +- args: +units=us-ft +init=nad27:1302 -f %.3f + in: -87d41'44.075 37d54'24.755 323351.583 148732.658 IN W GP4 + out: "323351.583\t148732.658 323351.583 148732.658 IN W GP4" +- args: +units=us-ft +init=nad27:1302 -f %.3f + in: -86d32'13.179 39d32'46.419 654071.692 745650.467 IN W GP5 + out: "654071.692\t745650.467 654071.692 745650.467 IN W GP5" +- args: +units=us-ft +init=nad27:1302 -f %.3f + in: -87d25'26.675 38d26'17.646 402398.078 341828.410 IN W GP6 + out: "402398.078\t341828.410 402398.078 341828.410 IN W GP6" +- args: +units=us-ft +init=nad27:1302 -f %.3f + in: -86d14'28.103 40d00'47.412 735905.989 916383.007 IN W GP7 + out: "735905.989\t916383.007 735905.989 916383.007 IN W GP7" +- args: +units=us-ft +init=nad27:1302 -f %.3f + in: -86d14'27.780 40d00'12.690 735964.329 912869.812 IN W GP8 + out: "735964.329\t912869.812 735964.329 912869.812 IN W GP8" +- args: +units=us-ft +init=nad27:1302 -f %.3f + in: -86d14'27.790 40d00'31.660 735945.409 914789.331 IN W GP9 + out: "735945.409\t914789.331 735945.409 914789.331 IN W GP9" +- args: +units=us-ft +init=nad27:1501 -f %.3f + in: -96d47'54.567 38d58'52.096 2341555.463 238196.375 KS N GP1 + out: "2341555.463\t238196.375 2341555.463 238196.375 KS N GP1" +- args: +units=us-ft +init=nad27:1501 -f %.3f + in: -98d35'23.954 39d58'41.967 1834645.786 599682.614 KS N GP2 + out: "1834645.786\t599682.614 1834645.786 599682.614 KS N GP2" +- args: +units=us-ft +init=nad27:1502 -f %.3f + in: -97d21'00.000 37d42'00.000 2332714.529 378302.303 KS S GP1 + out: "2332714.529\t378302.303 2332714.529 378302.303 KS S GP1" +- args: +units=us-ft +init=nad27:1601 -f %.3f + in: -84d05'43.283 38d14'35.963 2044414.776 270720.831 KY N GP1 + out: "2044414.776\t270720.831 2044414.776 270720.831 KY N GP1" +- args: +units=us-ft +init=nad27:1601 -f %.3f + in: -84d26'49.265 39d04'03.099 1944057.054 570906.807 KY N GP2 + out: "1944057.054\t570906.807 1944057.054 570906.807 KY N GP2" +- args: +units=us-ft +init=nad27:1602 -f %.3f + in: -86d05'00.000 37d10'00.000 1902871.440 303569.007 KY S GP1 + out: "1902871.440\t303569.007 1902871.440 303569.007 KY S GP1" +- args: +units=us-ft +init=nad27:1701 -f %.3f + in: -91d34'46.483 31d57'26.243 2285456.159 470671.781 LA N GP1 + out: "2285456.159\t470671.781 2285456.159 470671.781 LA N GP1" +- args: +units=us-ft +init=nad27:1701 -f %.3f + in: -92d52'46.615 32d54'52.264 1883486.181 817905.853 LA N GP2 + out: "1883486.181\t817905.853 1883486.181 817905.853 LA N GP2" +- args: +units=us-ft +init=nad27:1701 -f %.3f + in: -91d29'09.480 31d56'44.721 2314527.078 466735.568 LA N GP3 + out: "2314527.078\t466735.568 2314527.078 466735.568 LA N GP3" +- args: +units=us-ft +init=nad27:1701 -f %.3f + in: -93d59'38.241 32d48'43.467 1540965.776 783590.902 LA N GP4 + out: "1540965.776\t783590.902 1540965.776 783590.902 LA N GP4" +- args: +units=us-ft +init=nad27:1702 -f %.3f + in: -89d00'00.000 28d50'00.000 2747176.527 68218.410 LA S GP1 + out: "2747176.527\t68218.410 2747176.527 68218.410 LA S GP1" +- args: +units=us-ft +init=nad27:1702 -f %.3f + in: -89d30'00.000 28d50'00.000 2587082.796 65307.429 LA S GP2 + out: "2587082.796\t65307.429 2587082.796 65307.429 LA S GP2" +- args: +units=us-ft +init=nad27:1702 -f %.3f + in: -89d29'59.999 29d19'59.994 2584173.994 247106.020 LA S GP3 + out: "2584173.994\t247106.020 2584173.994 247106.020 LA S GP3" +- args: +units=us-ft +init=nad27:1702 -f %.3f + in: -89d00'00.004 29d19'59.998 2743474.038 250002.972 LA S GP4 + out: "2743474.038\t250002.972 2743474.038 250002.972 LA S GP4" +- args: +units=us-ft +init=nad27:1702 -f %.3f + in: -89d10'23.487 29d20'32.615 2688234.966 252215.035 LA S GP5 + out: "2688234.966\t252215.035 2688234.966 252215.035 LA S GP5" +- args: +units=us-ft +init=nad27:1702 -f %.3f + in: -89d06'34.632 29d15'19.642 2709099.980 220994.973 LA S GP6 + out: "2709099.980\t220994.973 2709099.980 220994.973 LA S GP6" +- args: +units=us-ft +init=nad27:1702 -f %.3f + in: -89d01'33.803 29d07'47.918 2736661.987 175901.967 LA S GP7 + out: "2736661.987\t175901.967 2736661.987 175901.967 LA S GP7" +- args: +units=us-ft +init=nad27:1702 -f %.3f + in: -89d08'45.781 28d58'27.979 2699434.976 118600.021 LA S GP9 + out: "2699434.976\t118600.021 2699434.976 118600.021 LA S GP9" +- args: +units=us-ft +init=nad27:2002 -f %.3f + in: -70d30'00.000 41d30'00.000 200000.000 182180.613 MA I GP1 + out: "200000.000\t182180.613 200000.000 182180.613 MA I GP1" +- args: +units=us-ft +init=nad27:2001 -f %.3f + in: -70d27'00.716 41d40'15.808 886823.958 246295.510 MA M GP1 + out: "886823.958\t246295.510 886823.958 246295.510 MA M GP1" +- args: +units=us-ft +init=nad27:2001 -f %.3f + in: -73d25'59.173 42d06'06.860 75432.106 407473.253 MA M GP2 + out: "75432.106\t407473.253 75432.106 407473.253 MA M GP2" +- args: +units=us-ft +init=nad27:1900 -f %.3f + in: -76d11'27.492 39d12'06.132 1029272.677 499353.154 MD GP1 + out: "1029272.677\t499353.154 1029272.677 499353.154 MD GP1" +- args: +units=us-ft +init=nad27:1900 -f %.3f + in: -77d02'30.406 38d26'37.492 788033.549 222300.512 MD GP2 + out: "788033.549\t222300.512 788033.549 222300.512 MD GP2" +- args: +units=us-ft +init=nad27:1900 -f %.3f + in: -77d30'10.460 38d59'25.903 657055.715 421819.661 MD GP3 + out: "657055.715\t421819.661 657055.715 421819.661 MD GP3" +- args: +units=us-ft +init=nad27:1801 -f %.3f + in: -68d24'25.489 46d32'46.920 523379.868 989125.403 ME E GP1 + out: "523379.868\t989125.403 523379.868 989125.403 ME E GP1" +- args: +units=us-ft +init=nad27:1801 -f %.3f + in: -68d37'29.366 47d02'12.659 468876.638 1168006.571 ME E GP2 + out: "468876.638\t1168006.571 468876.638 1168006.571 ME E GP2" +- args: +units=us-ft +init=nad27:1802 -f %.3f + in: -70d16'00.000 43d40'00.000 473538.933 303746.300 ME W GP1 + out: "473538.933\t303746.300 473538.933 303746.300 ME W GP1" +- args: +units=us-ft +init=nad27:2112 -f %.3f + in: -85d40'00.000 44d45'00.000 1653612.784 525406.529 MI C GP1 + out: "1653612.784\t525406.529 1653612.784 525406.529 MI C GP1" +- args: +units=us-ft +init=nad27:2113 -f %.3f + in: -83d29'17.919 42d19'19.299 2228532.810 300724.433 MI S GP1 + out: "2228532.810\t300724.433 2228532.810 300724.433 MI S GP1" +- args: +units=us-ft +init=nad27:2113 -f %.3f + in: -83d35'24.656 42d20'02.682 2200944.119 304856.048 MI S GP2 + out: "2200944.119\t304856.048 2200944.119 304856.048 MI S GP2" +- args: +units=us-ft +init=nad27:2113 -f %.3f + in: -85d55'26.569 41d50'10.236 1566471.427 126614.633 MI S GP3 + out: "1566471.427\t126614.633 1566471.427 126614.633 MI S GP3" +- args: +units=us-ft +init=nad27:2113 -f %.3f + in: -85d45'59.490 41d49'22.346 1609315.113 120996.336 MI S GP4 + out: "1609315.113\t120996.336 1609315.113 120996.336 MI S GP4" +- args: +units=us-ft +init=nad27:2103 -f %.3f + in: -89d20'00.000 46d50'00.000 353999.488 1944621.410 MI W GP1 + out: "353999.488\t1944621.410 353999.488 1944621.410 MI W GP1" +- args: +units=us-ft +init=nad27:2201 -f %.3f + in: -91d27'51.183 47d08'19.177 2407087.310 237254.364 MN N GP1 + out: "2407087.310\t237254.364 2407087.310 237254.364 MN N GP1" +- args: +units=us-ft +init=nad27:2201 -f %.3f + in: -95d51'05.998 48d19'26.552 1330690.998 677229.560 MN N GP2 + out: "1330690.998\t677229.560 1330690.998 677229.560 MN N GP2" +- args: +units=us-ft +init=nad27:2402 -f %.3f + in: -92d30'00.000 38d15'00.000 500000.000 879833.618 MO C GP1 + out: "500000.000\t879833.618 500000.000 879833.618 MO C GP1" +- args: +units=us-ft +init=nad27:2402 -f %.3f + in: -92d30'00.000 38d15'30.000 500000.000 882868.158 MO C GP2 + out: "500000.000\t882868.158 500000.000 882868.158 MO C GP2" +- args: +units=us-ft +init=nad27:2401 -f %.3f + in: -91d42'04.297 37d22'05.932 150919.587 561018.127 MO E GP1 + out: "150919.587\t561018.126 150919.587 561018.127 MO E GP1" +- args: +units=us-ft +init=nad27:2401 -f %.3f + in: -90d08'08.896 36d53'44.124 606497.861 386893.306 MO E GP2 + out: "606497.861\t386893.306 606497.861 386893.306 MO E GP2" +- args: +units=us-ft +init=nad27:2403 -f %.3f + in: -94d30'00.000 38d15'00.000 500000.000 758504.732 MO W GP1 + out: "500000.000\t758504.732 500000.000 758504.732 MO W GP1" +- args: +units=us-ft +init=nad27:2403 -f %.3f + in: -94d30'00.000 38d15'30.000 500000.000 761539.296 MO W GP2 + out: "500000.000\t761539.296 500000.000 761539.296 MO W GP2" +- args: +units=us-ft +init=nad27:2301 -f %.3f + in: -89d10'14.013 30d30'51.338 393805.810 308399.629 MS E GP1 + out: "393805.810\t308399.629 393805.810 308399.629 MS E GP1" +- args: +units=us-ft +init=nad27:2301 -f %.3f + in: -88d26'04.338 30d43'01.454 625321.316 382224.788 MS E GP2 + out: "625321.316\t382224.788 625321.316 382224.788 MS E GP2" +- args: +units=us-ft +init=nad27:2302 -f %.3f + in: -90d10'00.000 32d17'00.000 551507.962 648697.041 MS W GP1 + out: "551507.962\t648697.041 551507.962 648697.041 MS W GP1" +- args: +units=us-ft +init=nad27:2502 -f %.3f + in: -109d25'00.000 47d05'00.000 2020760.609 455889.692 MT C GP1 + out: "2020760.609\t455889.692 2020760.609 455889.692 MT C GP1" +- args: +units=us-ft +init=nad27:2501 -f %.3f + in: -106d29'11.521 47d52'21.103 2739443.845 332808.759 MT N GP1 + out: "2739443.845\t332808.759 2739443.845 332808.759 MT N GP1" +- args: +units=us-ft +init=nad27:2501 -f %.3f + in: -114d30'43.122 48d52'46.764 794693.447 725072.329 MT N GP2 + out: "794693.447\t725072.329 794693.447 725072.329 MT N GP2" +- args: +units=us-ft +init=nad27:2503 -f %.3f + in: -109d15'00.000 45d39'00.000 2063931.561 601700.560 MT S GP1 + out: "2063931.561\t601700.560 2063931.561 601700.560 MT S GP1" +- args: +units=us-ft +init=nad27:3200 -f %.3f + in: -81d12'31.790 35d09'31.049 1339854.041 519988.737 NC GP1 + out: "1339854.041\t519988.737 1339854.041 519988.737 NC GP1" +- args: +units=us-ft +init=nad27:3200 -f %.3f + in: -76d31'54.918 35d33'51.452 2733941.071 669408.798 NC GP2 + out: "2733941.071\t669408.798 2733941.071 669408.798 NC GP2" +- args: +units=us-ft +init=nad27:3200 -f %.3f + in: -78d28'26.580 36d15'15.480 2155088.262 911860.343 NC GP3 + out: "2155088.262\t911860.343 2155088.262 911860.343 NC GP3" +- args: +units=us-ft +init=nad27:3301 -f %.3f + in: -98d46'03.232 48d08'13.483 2422983.823 419525.823 ND N GP1 + out: "2422983.823\t419525.823 2422983.823 419525.823 ND N GP1" +- args: +units=us-ft +init=nad27:3301 -f %.3f + in: -101d18'21.456 47d39'18.935 1801367.700 240053.997 ND N GP2 + out: "1801367.700\t240053.997 1801367.700 240053.997 ND N GP2" +- args: +units=us-ft +init=nad27:3302 -f %.3f + in: -100d46'00.000 46d48'00.000 1933213.911 413422.204 ND S GP1 + out: "1933213.911\t413422.204 1933213.911 413422.204 ND S GP1" +- args: +units=us-ft +init=nad27:2601 -f %.3f + in: -96d17'52.930 42d04'48.305 3004688.243 293978.208 NE N GP1 + out: "3004688.243\t293978.208 3004688.243 293978.208 NE N GP1" +- args: +units=us-ft +init=nad27:2601 -f %.3f + in: -100d49'26.949 41d58'54.025 1775916.042 237340.591 NE N GP2 + out: "1775916.042\t237340.591 1775916.042 237340.591 NE N GP2" +- args: +units=us-ft +init=nad27:2602 -f %.3f + in: -96d43'00.000 40d49'00.000 2770252.364 431225.617 NE S GP1 + out: "2770252.364\t431225.617 2770252.364 431225.617 NE S GP1" +- args: +units=us-ft +init=nad27:2800 -f %.3f + in: -70d56'11.287 43d08'15.006 694907.496 233185.793 NH GP1 + out: "694907.496\t233185.793 694907.496 233185.793 NH GP1" +- args: +units=us-ft +init=nad27:2800 -f %.3f + in: -72d32'32.197 42d51'25.984 265213.564 131404.574 NH GP2 + out: "265213.564\t131404.574 265213.564 131404.574 NH GP2" +- args: +units=us-ft +init=nad27:2900 -f %.3f + in: -74d13'55.737 39d52'02.095 2121971.499 376878.657 NJ GP1 + out: "2121971.499\t376878.657 2121971.499 376878.657 NJ GP1" +- args: +units=us-ft +init=nad27:2900 -f %.3f + in: -74d51'24.058 41d12'07.401 1947709.569 862915.876 NJ GP2 + out: "1947709.569\t862915.876 1947709.569 862915.876 NJ GP2" +- args: +units=us-ft +init=nad27:3002 -f %.3f + in: -106d15'00.000 33d30'00.000 500000.000 909419.295 NM C GP1 + out: "500000.000\t909419.295 500000.000 909419.295 NM C GP1" +- args: +units=us-ft +init=nad27:3002 -f %.3f + in: -106d15'00.000 33d30'30.000 500000.000 912451.306 NM C GP2 + out: "500000.000\t912451.306 500000.000 912451.306 NM C GP2" +- args: +units=us-ft +init=nad27:3001 -f %.3f + in: -104d11'42.410 33d17'21.732 542236.924 832820.301 NM E GP1 + out: "542236.924\t832820.301 542236.924 832820.301 NM E GP1" +- args: +units=us-ft +init=nad27:3001 -f %.3f + in: -104d47'37.948 33d22'32.349 359406.535 864495.732 NM E GP2 + out: "359406.535\t864495.731 359406.535 864495.732 NM E GP2" +- args: +units=us-ft +init=nad27:3003 -f %.3f + in: -107d50'00.000 32d30'00.000 500000.000 545616.897 NM W GP1 + out: "500000.000\t545616.897 500000.000 545616.897 NM W GP1" +- args: +units=us-ft +init=nad27:3003 -f %.3f + in: -107d50'00.000 32d30'30.000 500000.000 548648.466 NM W GP2 + out: "500000.000\t548648.466 500000.000 548648.466 NM W GP2" +- args: +units=us-ft +init=nad27:2702 -f %.3f + in: -116d48'00.000 36d58'00.000 461048.286 806858.042 NV C GP1 + out: "461048.286\t806858.042 461048.286 806858.042 NV C GP1" +- args: +units=us-ft +init=nad27:2701 -f %.3f + in: -114d49'09.337 35d43'09.299 726805.224 353637.053 NV E GP1 + out: "726805.224\t353637.053 726805.224 353637.053 NV E GP1" +- args: +units=us-ft +init=nad27:2701 -f %.3f + in: -116d50'32.766 41d30'37.869 155162.931 2464191.579 NV E GP2 + out: "155162.931\t2464191.578 155162.931 2464191.579 NV E GP2" +- args: +units=us-ft +init=nad27:2703 -f %.3f + in: -119d49'00.000 39d32'00.000 152145.548 1743820.924 NV W GP1 + out: "152145.548\t1743820.923 152145.548 1743820.924 NV W GP1" +- args: +units=us-ft +init=nad27:3102 -f %.3f + in: -76d10'00.000 43d05'00.000 611313.134 1123706.621 NY C GP1 + out: "611313.134\t1123706.620 611313.134 1123706.621 NY C GP1" +- args: +units=us-ft +init=nad27:3101 -f %.3f + in: -74d02'53.671 42d17'01.775 577147.690 832219.885 NY E GP1 + out: "577147.690\t832219.885 577147.690 832219.885 NY E GP1" +- args: +units=us-ft +init=nad27:3101 -f %.3f + in: -74d44'39.818 42d30'07.382 389148.814 911884.889 NY E GP2 + out: "389148.814\t911884.889 389148.814 911884.889 NY E GP2" +- args: +units=us-ft +init=nad27:3104 -f %.3f + in: -73d02'36.247 40d47'50.624 2264860.626 209793.919 NY L GP1 + out: "2264860.626\t209793.919 2264860.626 209793.919 NY L GP1" +- args: +units=us-ft +init=nad27:3104 -f %.3f + in: -74d06'58.125 40d36'07.281 1967746.807 137190.013 NY L GP2 + out: "1967746.807\t137190.013 1967746.807 137190.013 NY L GP2" +- args: +units=us-ft +init=nad27:3104 -f %.3f + in: -74d00'00.000 40d45'00.000 2000000.000 191080.202 NY L GP3 + out: "2000000.000\t191080.202 2000000.000 191080.202 NY L GP3" +- args: +units=us-ft +init=nad27:3104 -f %.3f + in: -73d15'00.000 40d37'30.000 2208197.581 146431.086 NY L GP4 + out: "2208197.581\t146431.086 2208197.581 146431.086 NY L GP4" +- args: +units=us-ft +init=nad27:3104 -f %.3f + in: -73d22'30.000 40d45'00.000 2173173.707 191697.996 NY L GP5 + out: "2173173.707\t191697.996 2173173.707 191697.996 NY L GP5" +- args: +units=us-ft +init=nad27:3103 -f %.3f + in: -78d51'00.000 42d54'00.000 428547.567 1056727.674 NY W GP1 + out: "428547.567\t1056727.674 428547.567 1056727.674 NY W GP1" +- args: +units=us-ft +init=nad27:3401 -f %.3f + in: -80d49'28.238 40d17'50.894 2467363.986 234305.751 OH N GP1 + out: "2467363.986\t234305.751 2467363.986 234305.751 OH N GP1" +- args: +units=us-ft +init=nad27:3401 -f %.3f + in: -82d37'31.021 40d20'14.678 1965071.932 244391.910 OH N GP2 + out: "1965071.932\t244391.910 1965071.932 244391.910 OH N GP2" +- args: +units=us-ft +init=nad27:3402 -f %.3f + in: -84d15'00.000 39d45'00.000 1507970.925 642141.152 OH S GP1 + out: "1507970.925\t642141.152 1507970.925 642141.152 OH S GP1" +- args: +units=us-ft +init=nad27:3501 -f %.3f + in: -98d42'45.414 36d50'19.568 1791448.615 670119.442 OK N GP1 + out: "1791448.615\t670119.442 1791448.615 670119.442 OK N GP1" +- args: +units=us-ft +init=nad27:3501 -f %.3f + in: -95d38'44.046 35d20'36.925 2702176.218 133585.952 OK N GP2 + out: "2702176.218\t133585.952 2702176.218 133585.952 OK N GP2" +- args: +units=us-ft +init=nad27:3502 -f %.3f + in: -97d08'00.000 34d34'00.000 2260914.787 449942.599 OK S GP1 + out: "2260914.787\t449942.599 2260914.787 449942.599 OK S GP1" +- args: +units=us-ft +init=nad27:3601 -f %.3f + in: -123d41'00.000 45d31'00.000 1184216.898 690530.257 OR N GP1 + out: "1184216.898\t690530.257 1184216.898 690530.257 OR N GP1" +- args: +units=us-ft +init=nad27:3602 -f %.3f + in: -119d46'26.562 44d24'25.943 2189746.353 999672.239 OR S GP1 + out: "2189746.353\t999672.239 2189746.353 999672.239 OR S GP1" +- args: +units=us-ft +init=nad27:3602 -f %.3f + in: -121d09'56.105 44d23'08.924 1825970.576 991740.899 OR S GP2 + out: "1825970.576\t991740.899 1825970.576 991740.899 OR S GP2" +- args: +units=us-ft +init=nad27:3701 -f %.3f + in: -74d33'20.644 41d23'48.566 2876202.339 464358.775 PA N GP1 + out: "2876202.339\t464358.775 2876202.339 464358.775 PA N GP1" +- args: +units=us-ft +init=nad27:3701 -f %.3f + in: -78d09'48.121 40d51'35.455 1885652.438 252829.477 PA N GP2 + out: "1885652.438\t252829.477 1885652.438 252829.477 PA N GP2" +- args: +units=us-ft +init=nad27:5201 -f %.3f + in: -67d08'56.930 18d29'56.972 251990.753 242253.319 PR F GP1 + out: "251990.753\t242253.319 251990.753 242253.319 PR F GP1" +- args: +units=us-ft +init=nad27:5201 -f %.3f + in: -66d52'30.000 18d15'00.000 346756.548 151479.295 PR F GP2 + out: "346756.548\t151479.295 346756.548 151479.295 PR F GP2" +- args: +units=us-ft +init=nad27:5201 -f %.3f + in: -66d26'00.000 18d15'00.000 500000.000 151294.491 PR F GP3 + out: "500000.000\t151294.491 500000.000 151294.491 PR F GP3" +- args: +units=us-ft +init=nad27:5201 -f %.3f + in: -66d26'00.000 18d30'00.000 500000.000 242074.012 PR F GP4 + out: "500000.000\t242074.012 500000.000 242074.012 PR F GP4" +- args: +units=us-ft +init=nad27:5201 -f %.3f + in: -67d08'56.930 18d29'56.972 251990.753 242253.319 PR M GP1 + out: "251990.753\t242253.319 251990.753 242253.319 PR M GP1" +- args: +units=us-ft +init=nad27:5201 -f %.3f + in: -66d52'30.000 18d15'00.000 346756.548 151479.295 PR M GP2 + out: "346756.548\t151479.295 346756.548 151479.295 PR M GP2" +- args: +units=us-ft +init=nad27:5201 -f %.3f + in: -66d26'00.000 18d15'00.000 500000.000 151294.491 PR M GP3 + out: "500000.000\t151294.491 500000.000 151294.491 PR M GP3" +- args: +units=us-ft +init=nad27:5201 -f %.3f + in: -66d26'00.000 18d30'00.000 500000.000 242074.012 PR M GP4 + out: "500000.000\t242074.012 500000.000 242074.012 PR M GP4" +- args: +units=us-ft +init=nad27:5202 -f %.3f + in: -64d43'00.000 17d40'00.000 1097602.972 42283.509 PS S GP1 + out: "1097602.972\t42283.509 1097602.972 42283.509 PS S GP1" +- args: +units=us-ft +init=nad27:3800 -f %.3f + in: -71d16'00.833 41d32'24.848 563817.074 166563.592 RI GP1 + out: "563817.074\t166563.592 563817.074 166563.592 RI GP1" +- args: +units=us-ft +init=nad27:3800 -f %.3f + in: -71d37'13.730 41d23'53.266 466943.554 114721.079 RI GP2 + out: "466943.554\t114721.079 466943.554 114721.079 RI GP2" +- args: +units=us-ft +init=nad27:3901 -f %.3f + in: -80d32'30.000 34d32'30.000 2138028.224 561330.721 SC N GP1 + out: "2138028.224\t561330.721 2138028.224 561330.721 SC N GP1" +- args: +units=us-ft +init=nad27:3901 -f %.3f + in: -81d00'00.000 34d32'30.000 2000000.000 561019.077 SC N GP2 + out: "2000000.000\t561019.077 2000000.000 561019.077 SC N GP2" +- args: +units=us-ft +init=nad27:3902 -f %.3f + in: -80d32'30.000 33d32'30.000 2139661.529 621836.603 SC S GP1 + out: "2139661.529\t621836.603 2139661.529 621836.603 SC S GP1" +- args: +units=us-ft +init=nad27:3902 -f %.3f + in: -81d00'00.000 33d32'30.000 2000000.000 621532.356 SC S GP2 + out: "2000000.000\t621532.356 2000000.000 621532.356 SC S GP2" +- args: +units=us-ft +init=nad27:4001 -f %.3f + in: -99d12'21.983 44d06'08.121 2208566.880 99065.808 SD N GP1 + out: "2208566.880\t99065.808 2208566.880 99065.808 SD N GP1" +- args: +units=us-ft +init=nad27:4001 -f %.3f + in: -100d32'28.873 44d32'34.917 1858852.206 259207.243 SD N GP2 + out: "1858852.206\t259207.243 1858852.206 259207.243 SD N GP2" +- args: +units=us-ft +init=nad27:4002 -f %.3f + in: -103d14'00.000 44d06'00.000 1238344.555 657205.595 SD S GP1 + out: "1238344.555\t657205.595 1238344.555 657205.595 SD S GP1" +- args: +units=us-ft +init=nad27:4100 -f %.3f + in: -85d13'55.967 36d21'48.503 2226074.895 718522.870 TN GP1 + out: "2226074.895\t718522.870 2226074.895 718522.870 TN GP1" +- args: +units=us-ft +init=nad27:4100 -f %.3f + in: -88d43'05.849 36d30'08.410 1201097.659 779285.593 TN GP2 + out: "1201097.659\t779285.593 1201097.659 779285.593 TN GP2" +- args: +units=us-ft +init=nad27:4203 -f %.3f + in: -97d06'00.000 31d35'00.000 3006704.541 711708.204 TX C GP1 + out: "3006704.541\t711708.204 3006704.541 711708.204 TX C GP1" +- args: +units=us-ft +init=nad27:4201 -f %.3f + in: -100d33'06.303 34d39'35.684 2285173.373 241550.390 TX N GP1 + out: "2285173.373\t241550.390 2285173.373 241550.390 TX N GP1" +- args: +units=us-ft +init=nad27:4201 -f %.3f + in: -102d48'50.949 34d43'39.249 1605118.921 267430.718 TX N GP2 + out: "1605118.921\t267430.718 1605118.921 267430.718 TX N GP2" +- args: +units=us-ft +init=nad27:4205 -f %.3f + in: -97d30'00.000 25d55'00.000 2328727.194 92175.721 TX S GP1 + out: "2328727.194\t92175.721 2328727.194 92175.721 TX S GP1" +- args: +units=us-ft +init=nad27:4202 -f %.3f + in: -96d48'00.000 32d45'00.000 2215204.973 394833.169 TXNC GP1 + out: "2215204.973\t394833.169 2215204.973 394833.169 TXNC GP1" +- args: +units=us-ft +init=nad27:4204 -f %.3f + in: -98d30'00.000 29d25'00.000 2159176.237 576022.948 TXSC GP1 + out: "2159176.237\t576022.948 2159176.237 576022.948 TXSC GP1" +- args: +units=us-ft +init=nad27:4302 -f %.3f + in: -111d30'00.000 38d40'00.000 2000000.000 121415.345 UT C GP1 + out: "2000000.000\t121415.345 2000000.000 121415.345 UT C GP1" +- args: +units=us-ft +init=nad27:4302 -f %.3f + in: -111d30'00.000 38d40'30.000 2000000.000 124450.619 UT C GP2 + out: "2000000.000\t124450.619 2000000.000 124450.619 UT C GP2" +- args: +units=us-ft +init=nad27:4301 -f %.3f + in: -111d30'00.000 41d30'00.000 2000000.000 425057.445 UT N GP1 + out: "2000000.000\t425057.445 2000000.000 425057.445 UT N GP1" +- args: +units=us-ft +init=nad27:4301 -f %.3f + in: -111d30'00.000 41d30'30.000 2000000.000 428093.810 UT N GP2 + out: "2000000.000\t428093.810 2000000.000 428093.810 UT N GP2" +- args: +units=us-ft +init=nad27:4303 -f %.3f + in: -109d48'37.967 38d29'30.877 2483568.472 668988.098 UT S GP1 + out: "2483568.472\t668988.098 2483568.472 668988.098 UT S GP1" +- args: +units=us-ft +init=nad27:4303 -f %.3f + in: -113d52'56.922 37d09'18.788 1305706.243 186731.606 UT S GP2 + out: "1305706.243\t186731.606 1305706.243 186731.606 UT S GP2" +- args: +units=us-ft +init=nad27:4501 -f %.3f + in: -77d13'46.945 38d55'12.407 2361415.621 458962.786 VA N GP1 + out: "2361415.621\t458962.786 2361415.621 458962.786 VA N GP1" +- args: +units=us-ft +init=nad27:4501 -f %.3f + in: -79d18'51.557 38d09'59.020 1765875.433 183017.881 VA N GP2 + out: "1765875.433\t183017.881 1765875.433 183017.881 VA N GP2" +- args: +units=us-ft +init=nad27:4501 -f %.3f + in: -77d38'10.823 37d49'23.964 2249484.834 58221.695 VA N GP3 + out: "2249484.834\t58221.695 2249484.834 58221.695 VA N GP3" +- args: +units=us-ft +init=nad27:4501 -f %.3f + in: -79d26'19.475 37d47'25.852 1728704.621 46487.604 VA N GP4 + out: "1728704.621\t46487.604 1728704.621 46487.604 VA N GP4" +- args: +units=us-ft +init=nad27:4501 -f %.3f + in: -77d44'30.336 39d00'06.804 2215488.016 487135.448 VA N GP6 + out: "2215488.016\t487135.448 2215488.016 487135.448 VA N GP6" +- args: +units=us-ft +init=nad27:4501 -f %.3f + in: -77d43'47.013 38d59'55.454 2218917.620 486015.701 VA N GP9 + out: "2218917.620\t486015.701 2218917.620 486015.701 VA N GP9" +- args: +units=us-ft +init=nad27:4502 -f %.3f + in: -78d30'00.000 37d30'00.000 2000000.000 424763.516 VA S GP1 + out: "2000000.000\t424763.516 2000000.000 424763.516 VA S GP1" +- args: +units=us-ft +init=nad27:4502 -f %.3f + in: -78d30'00.000 37d30'30.000 2000000.000 427797.710 VA S GP2 + out: "2000000.000\t427797.710 2000000.000 427797.710 VA S GP2" +- args: +units=us-ft +init=nad27:4502 -f %.3f + in: -77d32'33.000 36d54'42.507 2279939.213 212030.192 VA S GP3 + out: "2279939.213\t212030.192 2279939.213 212030.192 VA S GP3" +- args: +units=us-ft +init=nad27:4502 -f %.3f + in: -77d21'55.732 38d04'53.901 2326572.191 638519.064 VA S GP4 + out: "2326572.191\t638519.064 2326572.191 638519.064 VA S GP4" +- args: +units=us-ft +init=nad27:5202 -f %.3f + in: -64d45'30.000 17d45'30.000 1082794.001 75432.552 VI F GP1 + out: "1082794.001\t75432.552 1082794.001 75432.552 VI F GP1" +- args: +units=us-ft +init=nad27:5202 -f %.3f + in: -66d26'00.000 17d45'56.426 500000.000 75432.505 VI F GP2 + out: "500000.000\t75432.505 500000.000 75432.505 VI F GP2" +- args: +units=us-ft +init=nad27:5202 -f %.3f + in: -64d45'30.000 17d45'30.000 1082794.001 75432.552 VI M GP1 + out: "1082794.001\t75432.552 1082794.001 75432.552 VI M GP1" +- args: +units=us-ft +init=nad27:5202 -f %.3f + in: -66d26'00.000 17d45'56.426 500000.000 75432.505 VI M GP2 + out: "500000.000\t75432.505 500000.000 75432.505 VI M GP2" +- args: +units=us-ft +init=nad27:4400 -f %.3f + in: -72d29'31.418 43d09'58.526 502118.227 242816.621 VT GP1 + out: "502118.227\t242816.621 502118.227 242816.621 VT GP1" +- args: +units=us-ft +init=nad27:4400 -f %.3f + in: -73d12'06.978 44d22'22.810 316451.963 683472.660 VT GP2 + out: "316451.963\t683472.660 316451.963 683472.660 VT GP2" +- args: +units=us-ft +init=nad27:4601 -f %.3f + in: -119d51'37.006 47d50'51.069 2238927.196 310658.148 WA N GP1 + out: "2238927.196\t310658.148 2238927.196 310658.148 WA N GP1" +- args: +units=us-ft +init=nad27:4601 -f %.3f + in: -123d59'49.087 48d09'29.131 1228043.506 438306.777 WA N GP2 + out: "1228043.506\t438306.777 1228043.506 438306.777 WA N GP2" +- args: +units=us-ft +init=nad27:4602 -f %.3f + in: -122d54'00.000 46d09'00.000 1391814.257 307059.945 WA S GP1 + out: "1391814.257\t307059.945 1391814.257 307059.945 WA S GP1" +- args: +units=us-ft +init=nad27:4802 -f %.3f + in: -88d04'00.000 44d30'00.000 2504399.560 249042.105 WI C GP1 + out: "2504399.560\t249042.105 2504399.560 249042.105 WI C GP1" +- args: +units=us-ft +init=nad27:4801 -f %.3f + in: -88d44'40.778 45d22'21.598 2322632.765 77666.151 WI N GP1 + out: "2322632.765\t77666.151 2322632.765 77666.151 WI N GP1" +- args: +units=us-ft +init=nad27:4801 -f %.3f + in: -92d12'19.275 45d48'35.812 1437681.450 242373.846 WI N GP2 + out: "1437681.450\t242373.846 1437681.450 242373.846 WI N GP2" +- args: +units=us-ft +init=nad27:4803 -f %.3f + in: -89d23'00.000 43d05'00.000 2164743.544 395445.420 WI S GP1 + out: "2164743.544\t395445.420 2164743.544 395445.420 WI S GP1" +- args: +units=us-ft +init=nad27:4701 -f %.3f + in: -77d53'39.269 39d14'39.339 2454764.840 275139.246 WV N GP1 + out: "2454764.840\t275139.246 2454764.840 275139.246 WV N GP1" +- args: +units=us-ft +init=nad27:4701 -f %.3f + in: -81d33'23.549 39d18'08.535 1418073.862 298900.611 WV N GP2 + out: "1418073.862\t298900.611 1418073.862 298900.611 WV N GP2" +- args: +units=us-ft +init=nad27:4701 -f %.3f + in: -77d30'10.460 38d59'25.903 2567632.286 184970.946 WV N GP3 + out: "2567632.286\t184970.946 2567632.286 184970.946 WV N GP3" +- args: +units=us-ft +init=nad27:4901 -f %.3f + in: -105d07'00.000 44d38'00.000 513016.009 1445570.355 WY E GP1 + out: "513016.009\t1445570.354 513016.009 1445570.355 WY E GP1" +- args: +units=us-ft +init=nad27:4901 -f %.3f + in: -105d31'02.882 43d30'40.600 406937.677 1036750.418 WY E GP1 + out: "406937.677\t1036750.417 406937.677 1036750.418 WY E GP1" +- args: +units=us-ft +init=nad27:4901 -f %.3f + in: -105d22'42.856 43d30'14.685 443778.141 1034002.062 WY E GP2 + out: "443778.141\t1034002.062 443778.141 1034002.062 WY E GP2" +- args: +units=us-ft +init=nad27:4901 -f %.3f + in: -105d28'42.827 43d36'33.391 417392.389 1072428.186 WY E GP3 + out: "417392.389\t1072428.186 417392.389 1072428.186 WY E GP3" +- args: +units=us-ft +init=nad27:4901 -f %.3f + in: -105d23'43.223 42d00'59.422 437860.186 491889.060 WY E GP4 + out: "437860.186\t491889.060 437860.186 491889.060 WY E GP4" +- args: +units=us-ft +init=nad27:4901 -f %.3f + in: -104d35'06.686 42d34'50.366 656606.905 697923.643 WY E GP5 + out: "656606.905\t697923.643 656606.905 697923.643 WY E GP5" +- args: +units=us-ft +init=nad27:4904 -f %.3f + in: -110d36'00.000 41d48'00.000 359125.204 413338.815 WY W GP1 + out: "359125.204\t413338.815 359125.204 413338.815 WY W GP1" +- args: +units=us-ft +init=nad27:4902 -f %.3f + in: -106d13'03.224 41d36'14.640 805153.891 343496.746 WYEC GP1 + out: "805153.891\t343496.745 805153.891 343496.746 WYEC GP1" +- args: +units=us-ft +init=nad27:4902 -f %.3f + in: -108d01'56.720 41d51'57.518 309581.204 437731.262 WYEC GP2 + out: "309581.204\t437731.262 309581.204 437731.262 WYEC GP2" +- args: +units=us-ft +init=nad27:4903 -f %.3f + in: -108d24'00.000 43d02'00.000 593579.361 862553.590 WYWC GP1 + out: "593579.361\t862553.590 593579.361 862553.590 WYWC GP1" diff --git a/test/cli/test_proj_nad83.yaml b/test/cli/test_proj_nad83.yaml new file mode 100644 index 0000000000..cca0116096 --- /dev/null +++ b/test/cli/test_proj_nad83.yaml @@ -0,0 +1,686 @@ +comment: > + These tests are from an old script "test83" from the 1990s used to test + nad83 init files with most of the SPCS zones. + + It was originally generated from execution of NMD's program l176, where the + second pair of numbers are respective easting and northing output. + + Original versions of proj varied in the .001ft range with projections using + Transverse Mercator due to greater precision of meridional distance function. +exe: proj +tests: +- args: +units=us-ft +init=nad83:5001 -E -f %.3f + in: -134d00'00.000 55d00'00.000 2616018.154 1156379.643 AK 1 GP1 + out: "-134d00'00.000 55d00'00.000\t2616018.154\t1156379.643 2616018.154 1156379.643 AK 1 GP1" +- args: +units=us-ft +init=nad83:5001 -f %.3f + in: -133d40'00.000 57d00'00.000 2685941.919 1886799.668 AK 1 GP2 + out: "2685941.919\t1886799.668 2685941.919 1886799.668 AK 1 GP2" +- args: +units=us-ft +init=nad83:5001 -f %.3f + in: -131d35'45.432 54d39'02.654 3124531.426 1035343.511 AK 1 GP3 + out: "3124531.426\t1035343.511 3124531.426 1035343.511 AK 1 GP3" +- args: +units=us-ft +init=nad83:5001 -f %.3f + in: -129d32'30.000 54d32'30.000 3561448.345 1015025.876 AK 1 GP4 + out: "3561448.345\t1015025.876 3561448.345 1015025.876 AK 1 GP4" +- args: +units=us-ft +init=nad83:5001 -f %.3f + in: -141d30'00.000 60d30'00.000 1276328.587 3248159.207 AK 1 GP6 + out: "1276328.587\t3248159.207 1276328.587 3248159.207 AK 1 GP6" +- args: +units=us-ft +init=nad83:5002 -f %.3f + in: -142d00'00.000 56d30'30.000 1640416.667 916074.825 AK 2 GP1 + out: "1640416.667\t916074.824 1640416.667 916074.825 AK 2 GP1" +- args: +units=us-ft +init=nad83:5003 -f %.3f + in: -146d00'00.000 56d30'30.000 1640416.667 916074.825 AK 3 GP1 + out: "1640416.667\t916074.824 1640416.667 916074.825 AK 3 GP1" +- args: +units=us-ft +init=nad83:5004 -f %.3f + in: -150d00'00.000 56d30'30.000 1640416.667 916074.825 AK 4 GP1 + out: "1640416.667\t916074.824 1640416.667 916074.825 AK 4 GP1" +- args: +units=us-ft +init=nad83:5005 -f %.3f + in: -152d28'56.134 60d53'28.765 1910718.662 2520810.680 AK 5 GP1 + out: "1910718.662\t2520810.679 1910718.662 2520810.680 AK 5 GP1" +- args: +units=us-ft +init=nad83:5005 -f %.3f + in: -154d00'00.000 56d30'30.000 1640416.667 916074.825 AK 5 GP2 + out: "1640416.667\t916074.824 1640416.667 916074.825 AK 5 GP2" +- args: +units=us-ft +init=nad83:5006 -f %.3f + in: -155d00'00.000 71d00'00.000 1998036.998 6224208.217 AK 6 GP1 + out: "1998036.998\t6224208.215 1998036.998 6224208.217 AK 6 GP1" +- args: +units=us-ft +init=nad83:5006 -f %.3f + in: -158d00'00.000 71d00'00.000 1640416.667 6215353.367 AK 6 GP1 + out: "1640416.667\t6215353.365 1640416.667 6215353.367 AK 6 GP1" +- args: +units=us-ft +init=nad83:5007 -f %.3f + in: -162d00'00.000 65d15'00.000 1640416.667 4111446.441 AK 7 GP1 + out: "1640416.667\t4111446.440 1640416.667 4111446.441 AK 7 GP1" +- args: +units=us-ft +init=nad83:5008 -f %.3f + in: -166d00'00.000 65d15'00.000 1640416.667 4111446.441 AK 8 GP1 + out: "1640416.667\t4111446.440 1640416.667 4111446.441 AK 8 GP1" +- args: +units=us-ft +init=nad83:5009 -f %.3f + in: -170d00'00.000 63d20'00.000 1640416.667 3410489.717 AK 9 GP1 + out: "1640416.667\t3410489.716 1640416.667 3410489.717 AK 9 GP1" +- args: +units=us-ft +init=nad83:5010 -f %.3f + in: -164d02'30.000 54d27'30.000 5814167.604 1473788.834 AK10 GP1 + out: "5814167.604\t1473788.834 5814167.604 1473788.834 AK10 GP1" +- args: +units=us-ft +init=nad83:5010 -f %.3f + in: -176d00'00.000 52d30'00.000 3280833.333 547580.542 AK10 GP2 + out: "3280833.333\t547580.542 3280833.333 547580.542 AK10 GP2" +- args: +units=us-ft +init=nad83:101 -f %.3f + in: -85d50'00.000 31d20'00.000 656166.667 303104.183 AL E GP1 + out: "656166.667\t303104.183 656166.667 303104.183 AL E GP1" +- args: +units=us-ft +init=nad83:101 -f %.3f + in: -85d12'41.738 32d38'57.737 847539.085 782420.807 AL E GP2 + out: "847539.085\t782420.807 847539.085 782420.807 AL E GP2" +- args: +units=us-ft +init=nad83:101 -f %.3f + in: -86d36'58.670 34d48'58.708 421151.975 1571298.908 AL E GP3 + out: "421151.975\t1571298.908 421151.975 1571298.908 AL E GP3" +- args: +units=us-ft +init=nad83:102 -f %.3f + in: -87d30'00.000 33d20'00.000 1968500.000 1212527.587 AL W GP1 + out: "1968500.000\t1212527.586 1968500.000 1212527.587 AL W GP1" +- args: +units=us-ft +init=nad83:102 -f %.3f + in: -87d30'00.000 33d20'30.000 1968500.000 1215559.708 AL W GP2 + out: "1968500.000\t1215559.708 1968500.000 1215559.708 AL W GP2" +- args: +units=us-ft +init=nad83:301 -f %.3f + in: -91d34'46.321 35d18'37.443 1437779.156 355900.759 AR N GP1 + out: "1437779.156\t355900.759 1437779.156 355900.759 AR N GP1" +- args: +units=us-ft +init=nad83:301 -f %.3f + in: -92d04'11.625 35d19'34.269 1291483.982 361385.695 AR N GP2 + out: "1291483.982\t361385.695 1291483.982 361385.695 AR N GP2" +- args: +units=us-ft +init=nad83:302 -f %.3f + in: -92d00'00.000 34d45'00.000 1312333.333 2070451.744 AR S GP1 + out: "1312333.333\t2070451.744 1312333.333 2070451.744 AR S GP1" +- args: +units=us-ft +init=nad83:302 -f %.3f + in: -92d00'00.000 33d15'00.000 1312333.333 1524603.730 AR S GP2 + out: "1312333.333\t1524603.730 1312333.333 1524603.730 AR S GP2" +- args: +units=us-ft +init=nad83:202 -f %.3f + in: -111d55'00.000 34d45'00.000 699998.600 1364309.666 AZ C GP1 + out: "699998.600\t1364309.666 699998.600 1364309.666 AZ C GP1" +- args: +units=us-ft +init=nad83:202 -f %.3f + in: -111d55'00.000 32d20'00.000 699998.600 484994.340 AZ C GP2 + out: "699998.600\t484994.340 699998.600 484994.340 AZ C GP2" +- args: +units=us-ft +init=nad83:201 -f %.3f + in: -110d24'59.771 35d09'58.568 625301.460 1515899.830 AZ E GP1 + out: "625301.460\t1515899.830 625301.460 1515899.830 AZ E GP1" +- args: +units=us-ft +init=nad83:201 -f %.3f + in: -109d34'33.127 31d59'53.103 883142.524 363539.663 AZ E GP2 + out: "883142.524\t363539.663 883142.524 363539.663 AZ E GP2" +- args: +units=us-ft +init=nad83:201 -f %.3f + in: -110d30'34.948 35d07'28.243 597423.277 1500785.235 AZ E GP3 + out: "597423.277\t1500785.234 597423.277 1500785.235 AZ E GP3" +- args: +units=us-ft +init=nad83:201 -f %.3f + in: -109d45'13.226 32d08'41.778 827818.955 416705.394 AZ E GP4 + out: "827818.955\t416705.394 827818.955 416705.394 AZ E GP4" +- args: +units=us-ft +init=nad83:203 -f %.3f + in: -113d45'00.000 34d45'00.000 699998.600 1364355.147 AZ W GP1 + out: "699998.600\t1364355.147 699998.600 1364355.147 AZ W GP1" +- args: +units=us-ft +init=nad83:203 -f %.3f + in: -113d45'00.000 34d45'30.000 699998.600 1367387.968 AZ W GP2 + out: "699998.600\t1367387.968 699998.600 1367387.968 AZ W GP2" +- args: +units=us-ft +init=nad83:203 -f %.3f + in: -113d45'00.000 34d46'00.000 699998.600 1370420.793 AZ W GP3 + out: "699998.600\t1370420.793 699998.600 1370420.793 AZ W GP3" +- args: +units=us-ft +init=nad83:401 -f %.3f + in: -122d00'00.000 41d30'00.000 6561666.667 2429744.729 CA 1 GP1 + out: "6561666.667\t2429744.729 6561666.667 2429744.729 CA 1 GP1" +- args: +units=us-ft +init=nad83:401 -f %.3f + in: -122d00'00.000 41d30'30.000 6561666.667 2432781.128 CA 1 GP2 + out: "6561666.667\t2432781.128 6561666.667 2432781.128 CA 1 GP2" +- args: +units=us-ft +init=nad83:402 -f %.3f + in: -122d00'00.000 39d20'00.000 6561666.667 2247404.250 CA 2 GP1 + out: "6561666.667\t2247404.250 6561666.667 2247404.250 CA 2 GP1" +- args: +units=us-ft +init=nad83:402 -f %.3f + in: -122d00'00.000 39d20'30.000 6561666.667 2250439.391 CA 2 GP2 + out: "6561666.667\t2250439.391 6561666.667 2250439.391 CA 2 GP2" +- args: +units=us-ft +init=nad83:403 -f %.3f + in: -120d30'00.000 37d05'00.000 6561666.667 1852815.760 CA 3 GP1 + out: "6561666.667\t1852815.760 6561666.667 1852815.760 CA 3 GP1" +- args: +units=us-ft +init=nad83:403 -f %.3f + in: -121d22'26.019 37d30'30.324 6308189.835 2008776.145 CA 3 GP2 + out: "6308189.835\t2008776.145 6308189.835 2008776.145 CA 3 GP2" +- args: +units=us-ft +init=nad83:403 -f %.3f + in: -119d46'32.733 37d07'41.470 6772808.251 1869963.783 CA 3 GP3 + out: "6772808.251\t1869963.783 6772808.251 1869963.783 CA 3 GP3" +- args: +units=us-ft +init=nad83:403 -f %.3f + in: -119d38'26.434 36d55'48.009 6812851.254 1798140.563 CA 3 GP4 + out: "6812851.254\t1798140.563 6812851.254 1798140.563 CA 3 GP4" +- args: +units=us-ft +init=nad83:403 -f %.3f + in: -120d42'59.779 38d06'52.815 6499349.432 2228414.867 CA 3 GP5 + out: "6499349.432\t2228414.867 6499349.432 2228414.867 CA 3 GP5" +- args: +units=us-ft +init=nad83:404 -f %.3f + in: -119d00'00.000 36d20'00.000 6561666.667 2004462.102 CA 4 GP1 + out: "6561666.667\t2004462.102 6561666.667 2004462.102 CA 4 GP1" +- args: +units=us-ft +init=nad83:404 -f %.3f + in: -119d00'00.000 36d20'30.000 6561666.667 2007495.782 CA 4 GP2 + out: "6561666.667\t2007495.782 6561666.667 2007495.782 CA 4 GP2" +- args: +units=us-ft +init=nad83:405 -f %.3f + in: -118d00'00.000 34d45'00.000 6561666.667 2095323.781 CA 5 GP1 + out: "6561666.667\t2095323.781 6561666.667 2095323.781 CA 5 GP1" +- args: +units=us-ft +init=nad83:405 -f %.3f + in: -118d00'00.000 34d45'30.000 6561666.667 2098356.568 CA 5 GP2 + out: "6561666.667\t2098356.568 6561666.667 2098356.568 CA 5 GP2" +- args: +units=us-ft +init=nad83:406 -f %.3f + in: -116d15'00.000 33d20'00.000 6561666.667 2064911.626 CA 6 GP1 + out: "6561666.667\t2064911.626 6561666.667 2064911.626 CA 6 GP1" +- args: +units=us-ft +init=nad83:406 -f %.3f + in: -116d15'00.000 33d20'30.000 6561666.667 2067943.810 CA 6 GP2 + out: "6561666.667\t2067943.810 6561666.667 2067943.810 CA 6 GP2" +- args: +units=us-ft +init=nad83:406 -f %.3f + in: -118d20'00.000 34d30'00.000 5933874.572 2495758.727 CA 7 GP1 + out: "5933874.572\t2495758.727 5933874.572 2495758.727 CA 7 GP1" +- args: +units=us-ft +init=nad83:502 -f %.3f + in: -105d30'00.000 39d15'00.000 3000000.000 1515946.820 CO C GP1 + out: "3000000.000\t1515946.820 3000000.000 1515946.820 CO C GP1" +- args: +units=us-ft +init=nad83:502 -f %.3f + in: -105d30'00.000 39d15'30.000 3000000.000 1518981.963 CO C GP2 + out: "3000000.000\t1518981.963 3000000.000 1518981.963 CO C GP2" +- args: +units=us-ft +init=nad83:501 -f %.3f + in: -108d45'55.378 40d25'33.504 2091110.958 1414758.884 CO N GP1 + out: "2091110.958\t1414758.884 2091110.958 1414758.884 CO N GP1" +- args: +units=us-ft +init=nad83:501 -f %.3f + in: -105d14'45.588 40d12'42.711 3070938.779 1320125.979 CO N GP2 + out: "3070938.779\t1320125.979 3070938.779 1320125.979 CO N GP2" +- args: +units=us-ft +init=nad83:503 -f %.3f + in: -105d30'00.000 37d30'00.000 3000000.000 1303432.168 CO S GP1 + out: "3000000.000\t1303432.168 3000000.000 1303432.168 CO S GP1" +- args: +units=us-ft +init=nad83:503 -f %.3f + in: -105d30'00.000 37d30'30.000 3000000.000 1306466.471 CO S GP2 + out: "3000000.000\t1306466.471 3000000.000 1306466.471 CO S GP2" +- args: +units=us-ft +init=nad83:600 -f %.3f + in: -72d43'30.515 41d16'55.847 1006831.954 663542.786 CT GP1 + out: "1006831.954\t663542.786 1006831.954 663542.786 CT GP1" +- args: +units=us-ft +init=nad83:600 -f %.3f + in: -73d01'15.609 41d13'25.985 925448.220 642418.129 CT GP2 + out: "925448.220\t642418.129 925448.220 642418.129 CT GP2" +- args: +units=us-ft +init=nad83:700 -f %.3f + in: -75d33'00.748 39d21'15.214 618403.524 493238.843 DE GP1 + out: "618403.524\t493238.843 618403.524 493238.843 DE GP1" +- args: +units=us-ft +init=nad83:700 -f %.3f + in: -75d19'01.889 39d45'14.765 684135.532 638883.528 DE GP2 + out: "684135.532\t638883.528 684135.532 638883.528 DE GP2" +- args: +units=us-ft +init=nad83:903 -f %.3f + in: -82d45'52.412 29d39'06.589 2519743.236 241248.726 FL N GP1 + out: "2519743.236\t241248.726 2519743.236 241248.726 FL N GP1" +- args: +units=us-ft +init=nad83:903 -f %.3f + in: -84d55'11.533 29d38'51.982 1835122.674 235823.399 FL N GP2 + out: "1835122.674\t235823.399 1835122.674 235823.399 FL N GP2" +- args: +units=us-ft +init=nad83:1001 -f %.3f + in: -81d27'15.592 32d38'03.003 875449.222 958850.568 GA E GP1 + out: "875449.222\t958850.568 875449.222 958850.568 GA E GP1" +- args: +units=us-ft +init=nad83:1001 -f %.3f + in: -83d15'39.990 33d29'58.626 322535.391 1274748.301 GA E GP2 + out: "322535.391\t1274748.301 322535.391 1274748.301 GA E GP2" +- args: +units=us-ft +init=nad83:5101 -f %.3f + in: -155d59'16.911 19d37'23.477 1472470.137 287083.198 HI 1 GP1 + out: "1472470.137\t287083.198 1472470.137 287083.198 HI 1 GP1" +- args: +units=us-ft +init=nad83:5101 -f %.3f + in: -155d18'06.262 19d31'24.578 1708685.701 250676.240 HI 1 GP2 + out: "1708685.701\t250676.240 1708685.701 250676.240 HI 1 GP2" +- args: +units=us-ft +init=nad83:5101 -f %.3f + in: -155d30'00.000 19d42'00.000 1640416.667 314739.275 HI 1 GP3 + out: "1640416.667\t314739.275 1640416.667 314739.275 HI 1 GP3" +- args: +units=us-ft +init=nad83:5101 -f %.3f + in: -155d30'00.000 19d42'30.000 1640416.667 317765.760 HI 1 GP4 + out: "1640416.667\t317765.760 1640416.667 317765.760 HI 1 GP4" +- args: +units=us-ft +init=nad83:5102 -f %.3f + in: -156d40'00.000 20d42'00.000 1640416.667 133177.588 HI 2 GP1 + out: "1640416.667\t133177.588 1640416.667 133177.588 HI 2 GP1" +- args: +units=us-ft +init=nad83:5102 -f %.3f + in: -156d40'00.000 20d42'30.000 1640416.667 136204.417 HI 2 GP2 + out: "1640416.667\t136204.417 1640416.667 136204.417 HI 2 GP2" +- args: +units=us-ft +init=nad83:5103 -f %.3f + in: -158d00'00.000 21d30'00.000 1640416.667 121084.931 HI 3 GP1 + out: "1640416.667\t121084.931 1640416.667 121084.931 HI 3 GP1" +- args: +units=us-ft +init=nad83:5103 -f %.3f + in: -158d01'30.000 21d37'30.000 1631925.017 166493.704 HI 3 GP2 + out: "1631925.017\t166493.704 1631925.017 166493.704 HI 3 GP2" +- args: +units=us-ft +init=nad83:5104 -f %.3f + in: -159d30'00.000 22d05'00.000 1640416.667 90820.525 HI 4 GP1 + out: "1640416.667\t90820.525 1640416.667 90820.525 HI 4 GP1" +- args: +units=us-ft +init=nad83:5105 -f %.3f + in: -160d10'00.000 21d42'00.000 1640416.667 12109.121 HI 5 GP1 + out: "1640416.667\t12109.121 1640416.667 12109.121 HI 5 GP1" +- args: +units=us-ft +init=nad83:1401 -f %.3f + in: -93d28'33.966 42d44'50.101 4927669.136 3735362.601 IA N GP1 + out: "4927669.136\t3735362.601 4927669.136 3735362.601 IA N GP1" +- args: +units=us-ft +init=nad83:1401 -f %.3f + in: -93d54'22.084 42d40'23.699 4812032.409 3708655.393 IA N GP2 + out: "4812032.409\t3708655.393 4812032.409 3708655.393 IA N GP2" +- args: +units=us-ft +init=nad83:1101 -f %.3f + in: -111d42'29.824 43d48'07.616 777180.670 778579.414 ID E GP1 + out: "777180.670\t778579.414 777180.670 778579.414 ID E GP1" +- args: +units=us-ft +init=nad83:1101 -f %.3f + in: -112d22'35.516 43d35'26.260 600566.613 701226.817 ID E GP2 + out: "600566.613\t701226.817 600566.613 701226.817 ID E GP2" +- args: +units=us-ft +init=nad83:1103 -f %.3f + in: -116d22'02.592 48d07'50.941 2473902.726 2357266.577 ID W GP1 + out: "2473902.726\t2357266.576 2473902.726 2357266.577 ID W GP1" +- args: +units=us-ft +init=nad83:1201 -f %.3f + in: -88d07'06.790 41d46'11.855 1042839.901 1858837.259 IL E GP1 + out: "1042839.901\t1858837.259 1042839.901 1858837.259 IL E GP1" +- args: +units=us-ft +init=nad83:1201 -f %.3f + in: -88d41'35.208 40d43'37.202 884532.422 1478959.912 IL E GP2 + out: "884532.422\t1478959.911 884532.422 1478959.912 IL E GP2" +- args: +units=us-ft +init=nad83:1301 -f %.3f + in: -85d40'00.000 40d00'00.000 328083.333 1730697.447 IN E GP1 + out: "328083.333\t1730697.447 328083.333 1730697.447 IN E GP1" +- args: +units=us-ft +init=nad83:1301 -f %.3f + in: -85d40'00.000 40d00'30.000 328083.333 1733733.066 IN E GP2 + out: "328083.333\t1733733.065 328083.333 1733733.066 IN E GP2" +- args: +units=us-ft +init=nad83:1301 -f %.3f + in: -86d14'27.780 40d00'12.690 167175.533 1732499.995 IN E GP3 + out: "167175.533\t1732499.995 167175.533 1732499.995 IN E GP3" +- args: +units=us-ft +init=nad83:1301 -f %.3f + in: -86d14'27.790 40d00'31.660 167187.126 1734419.540 IN E GP4 + out: "167187.126\t1734419.540 167187.126 1734419.540 IN E GP4" +- args: +units=us-ft +init=nad83:1301 -f %.3f + in: -86d14'28.103 40d00'47.412 167173.047 1736013.616 IN E GP6 + out: "167173.047\t1736013.615 167173.047 1736013.616 IN E GP6" +- args: +units=us-ft +init=nad83:1302 -f %.3f + in: -87d05'00.000 40d00'00.000 2952750.000 1730697.447 IN W GP1 + out: "2952750.000\t1730697.447 2952750.000 1730697.447 IN W GP1" +- args: +units=us-ft +init=nad83:1302 -f %.3f + in: -87d05'00.000 40d00'30.000 2952750.000 1733733.066 IN W GP2 + out: "2952750.000\t1733733.065 2952750.000 1733733.066 IN W GP2" +- args: +units=us-ft +init=nad83:1302 -f %.3f + in: -86d45'10.717 39d41'24.840 3045717.498 1618031.699 IN W GP3 + out: "3045717.498\t1618031.699 3045717.498 1618031.699 IN W GP3" +- args: +units=us-ft +init=nad83:1302 -f %.3f + in: -87d41'44.075 37d54'24.755 2776105.988 968944.255 IN W GP4 + out: "2776105.988\t968944.255 2776105.988 968944.255 IN W GP4" +- args: +units=us-ft +init=nad83:1302 -f %.3f + in: -86d32'13.179 39d32'46.419 3106817.690 1565874.113 IN W GP5 + out: "3106817.690\t1565874.112 3106817.690 1565874.113 IN W GP5" +- args: +units=us-ft +init=nad83:1302 -f %.3f + in: -87d25'26.675 38d26'17.646 2855150.544 1162044.125 IN W GP6 + out: "2855150.544\t1162044.125 2855150.544 1162044.125 IN W GP6" +- args: +units=us-ft +init=nad83:1302 -f %.3f + in: -86d14'28.103 40d00'47.412 3188649.790 1736609.724 IN W GP7 + out: "3188649.790\t1736609.724 3188649.790 1736609.724 IN W GP7" +- args: +units=us-ft +init=nad83:1302 -f %.3f + in: -86d14'27.780 40d00'12.690 3188708.130 1733096.467 IN W GP8 + out: "3188708.130\t1733096.467 3188708.130 1733096.467 IN W GP8" +- args: +units=us-ft +init=nad83:1302 -f %.3f + in: -86d14'27.790 40d00'31.660 3188689.210 1735016.020 IN W GP9 + out: "3188689.210\t1735016.020 3188689.210 1735016.020 IN W GP9" +- args: +units=us-ft +init=nad83:1501 -f %.3f + in: -96d47'54.567 38d58'52.096 1653880.047 238201.110 KS N GP1 + out: "1653880.047\t238201.110 1653880.047 238201.110 KS N GP1" +- args: +units=us-ft +init=nad83:1501 -f %.3f + in: -98d35'23.954 39d58'41.967 1146983.460 599694.197 KS N GP2 + out: "1146983.460\t599694.197 1146983.460 599694.197 KS N GP2" +- args: +units=us-ft +init=nad83:1601 -f %.3f + in: -84d05'43.283 38d14'35.963 1684830.325 270726.733 KY N GP1 + out: "1684830.325\t270726.733 1684830.325 270726.733 KY N GP1" +- args: +units=us-ft +init=nad83:1601 -f %.3f + in: -84d26'49.265 39d04'03.099 1584475.157 570918.805 KY N GP2 + out: "1584475.157\t570918.805 1584475.157 570918.805 KY N GP2" +- args: +units=us-ft +init=nad83:1701 -f %.3f + in: -91d34'46.483 31d57'26.243 3566283.410 531318.874 LA N GP1 + out: "3566283.410\t531318.874 3566283.410 531318.874 LA N GP1" +- args: +units=us-ft +init=nad83:1701 -f %.3f + in: -92d52'46.615 32d54'52.264 3164322.062 878564.036 LA N GP2 + out: "3164322.062\t878564.036 3164322.062 878564.036 LA N GP2" +- args: +units=us-ft +init=nad83:1701 -f %.3f + in: -91d29'09.480 31d56'44.721 3595353.711 527382.519 LA N GP3 + out: "3595353.711\t527382.519 3595353.711 527382.519 LA N GP3" +- args: +units=us-ft +init=nad83:1701 -f %.3f + in: -93d59'38.241 32d48'43.467 2821809.119 844247.864 LA N GP4 + out: "2821809.119\t844247.864 2821809.119 844247.864 LA N GP4" +- args: +units=us-ft +init=nad83:1702 -f %.3f + in: -89d00'00.000 28d50'00.000 4027995.272 128836.330 LA S GP1 + out: "4027995.272\t128836.330 4027995.272 128836.330 LA S GP1" +- args: +units=us-ft +init=nad83:1702 -f %.3f + in: -89d30'00.000 28d50'00.000 3867904.667 125925.406 LA S GP2 + out: "3867904.667\t125925.406 3867904.667 125925.406 LA S GP2" +- args: +units=us-ft +init=nad83:1702 -f %.3f + in: -89d29'59.999 29d19'59.994 3864995.756 307730.820 LA S GP3 + out: "3864995.756\t307730.820 3864995.756 307730.820 LA S GP3" +- args: +units=us-ft +init=nad83:1702 -f %.3f + in: -89d00'00.004 29d19'59.998 4024292.645 310627.715 LA S GP4 + out: "4024292.645\t310627.715 4024292.645 310627.715 LA S GP4" +- args: +units=us-ft +init=nad83:1702 -f %.3f + in: -89d10'23.487 29d20'32.615 3969054.663 312839.922 LA S GP5 + out: "3969054.663\t312839.922 3969054.663 312839.922 LA S GP5" +- args: +units=us-ft +init=nad83:1702 -f %.3f + in: -89d06'34.632 29d15'19.642 3989919.298 281618.678 LA S GP6 + out: "3989919.298\t281618.678 3989919.298 281618.678 LA S GP6" +- args: +units=us-ft +init=nad83:1702 -f %.3f + in: -89d01'33.803 29d07'47.918 4017480.813 236523.957 LA S GP7 + out: "4017480.813\t236523.957 4017480.813 236523.957 LA S GP7" +- args: +units=us-ft +init=nad83:1702 -f %.3f + in: -89d08'45.781 28d58'27.979 3980254.597 179219.900 LA S GP9 + out: "3980254.597\t179219.900 3980254.597 179219.900 LA S GP9" +- args: +units=us-ft +init=nad83:2001 -f %.3f + in: -70d27'00.716 41d40'15.808 942982.782 2706924.168 MA M GP1 + out: "942982.782\t2706924.168 942982.782 2706924.168 MA M GP1" +- args: +units=us-ft +init=nad83:2001 -f %.3f + in: -73d25'59.173 42d06'06.860 131613.265 2868104.007 MA M GP2 + out: "131613.265\t2868104.007 131613.265 2868104.007 MA M GP2" +- args: +units=us-ft +init=nad83:1900 -f %.3f + in: -76d11'27.492 39d12'06.132 1541600.105 560062.872 MD GP1 + out: "1541600.105\t560062.872 1541600.105 560062.872 MD GP1" +- args: +units=us-ft +init=nad83:1900 -f %.3f + in: -77d02'30.406 38d26'37.492 1300367.185 283004.738 MD GP2 + out: "1300367.185\t283004.738 1300367.185 283004.738 MD GP2" +- args: +units=us-ft +init=nad83:1900 -f %.3f + in: -77d30'10.460 38d59'25.903 1169392.711 482527.897 MD GP3 + out: "1169392.711\t482527.897 1169392.711 482527.897 MD GP3" +- args: +units=us-ft +init=nad83:1801 -f %.3f + in: -68d24'25.489 46d32'46.920 1007629.154 1049880.999 ME E GP1 + out: "1007629.154\t1049880.999 1007629.154 1049880.999 ME E GP1" +- args: +units=us-ft +init=nad83:1801 -f %.3f + in: -68d37'29.366 47d02'12.659 953127.598 1228762.971 ME E GP2 + out: "953127.598\t1228762.971 953127.598 1228762.971 ME E GP2" +- args: +units=us-ft +init=nad83:2113 -f %.3f + in: -83d29'17.919 42d19'19.299 13360865.013 300809.378 MI S GP1 + out: "13360865.013\t300809.378 13360865.013 300809.378 MI S GP1" +- args: +units=us-ft +init=nad83:2113 -f %.3f + in: -83d35'24.656 42d20'02.682 13333276.507 304929.978 MI S GP2 + out: "13333276.507\t304929.978 13333276.507 304929.978 MI S GP2" +- args: +units=us-ft +init=nad83:2113 -f %.3f + in: -85d55'26.569 41d50'10.236 12698916.149 126441.631 MI S GP3 + out: "12698916.149\t126441.631 12698916.149 126441.631 MI S GP3" +- args: +units=us-ft +init=nad83:2113 -f %.3f + in: -85d45'59.490 41d49'22.346 12741759.240 120840.463 MI S GP4 + out: "12741759.240\t120840.463 12741759.240 120840.463 MI S GP4" +- args: +units=us-ft +init=nad83:2201 -f %.3f + in: -91d27'51.183 47d08'19.177 3031741.394 565338.600 MN N GP1 + out: "3031741.394\t565338.600 3031741.394 565338.600 MN N GP1" +- args: +units=us-ft +init=nad83:2201 -f %.3f + in: -95d51'05.998 48d19'26.552 1955378.869 1005314.701 MN N GP2 + out: "1955378.869\t1005314.701 1955378.869 1005314.701 MN N GP2" +- args: +units=us-ft +init=nad83:2402 -f %.3f + in: -92d30'00.000 38d15'00.000 1640416.667 879854.176 MO C GP1 + out: "1640416.667\t879854.176 1640416.667 879854.176 MO C GP1" +- args: +units=us-ft +init=nad83:2402 -f %.3f + in: -92d30'00.000 38d15'30.000 1640416.667 882888.780 MO C GP2 + out: "1640416.667\t882888.780 1640416.667 882888.780 MO C GP2" +- args: +units=us-ft +init=nad83:2401 -f %.3f + in: -91d42'04.297 37d22'05.932 471136.507 561031.592 MO E GP1 + out: "471136.507\t561031.592 471136.507 561031.592 MO E GP1" +- args: +units=us-ft +init=nad83:2401 -f %.3f + in: -90d08'08.896 36d53'44.124 926703.606 386902.829 MO E GP2 + out: "926703.606\t386902.829 926703.606 386902.829 MO E GP2" +- args: +units=us-ft +init=nad83:2403 -f %.3f + in: -94d30'00.000 38d15'00.000 2788708.333 758522.219 MO W GP1 + out: "2788708.333\t758522.219 2788708.333 758522.219 MO W GP1" +- args: +units=us-ft +init=nad83:2403 -f %.3f + in: -94d30'00.000 38d15'30.000 2788708.333 761556.846 MO W GP2 + out: "2788708.333\t761556.846 2788708.333 761556.846 MO W GP2" +- args: +units=us-ft +init=nad83:2301 -f %.3f + in: -89d10'14.013 30d30'51.338 878059.046 369015.468 MS E GP1 + out: "878059.046\t369015.468 878059.046 369015.468 MS E GP1" +- args: +units=us-ft +init=nad83:2301 -f %.3f + in: -88d26'04.338 30d43'01.454 1109567.483 442842.466 MS E GP2 + out: "1109567.483\t442842.466 1109567.483 442842.466 MS E GP2" +- args: +units=us-ft +init=nad83:2500 -f %.3f + in: -106d29'11.521 47d52'21.103 2707564.623 1334850.273 MT N GP1 + out: "2707564.623\t1334850.273 2707564.623 1334850.273 MT N GP1" +- args: +units=us-ft +init=nad83:2500 -f %.3f + in: -114d30'43.122 48d52'46.764 763315.457 1726511.247 MT N GP2 + out: "763315.457\t1726511.247 763315.457 1726511.247 MT N GP2" +- args: +units=us-ft +init=nad83:3200 -f %.3f + in: -81d12'31.790 35d09'31.049 1339869.379 520003.003 NC GP1 + out: "1339869.379\t520003.003 1339869.379 520003.003 NC GP1" +- args: +units=us-ft +init=nad83:3200 -f %.3f + in: -76d31'54.918 35d33'51.452 2733923.842 669426.932 NC GP2 + out: "2733923.842\t669426.932 2733923.842 669426.932 NC GP2" +- args: +units=us-ft +init=nad83:3200 -f %.3f + in: -78d28'26.580 36d15'15.480 2155084.559 911885.081 NC GP3 + out: "2155084.559\t911885.081 2155084.559 911885.081 NC GP3" +- args: +units=us-ft +init=nad83:3301 -f %.3f + in: -98d46'03.232 48d08'13.483 2391470.474 419526.909 ND N GP1 + out: "2391470.474\t419526.909 2391470.474 419526.909 ND N GP1" +- args: +units=us-ft +init=nad83:3301 -f %.3f + in: -101d18'21.456 47d39'18.935 1769873.906 240054.790 ND N GP2 + out: "1769873.906\t240054.790 1769873.906 240054.790 ND N GP2" +- args: +units=us-ft +init=nad83:2600 -f %.3f + in: -96d17'52.930 42d04'48.305 2644820.409 839912.565 NE N GP1 + out: "2644820.409\t839912.565 2644820.409 839912.565 NE N GP1" +- args: +units=us-ft +init=nad83:2600 -f %.3f + in: -100d49'26.949 41d58'54.025 1416403.828 783622.046 NE N GP2 + out: "1416403.828\t783622.046 1416403.828 783622.046 NE N GP2" +- args: +units=us-ft +init=nad83:2800 -f %.3f + in: -70d56'11.287 43d08'15.006 1179151.981 233188.620 NH GP1 + out: "1179151.981\t233188.619 1179151.981 233188.620 NH GP1" +- args: +units=us-ft +init=nad83:2800 -f %.3f + in: -72d32'32.197 42d51'25.984 749470.166 131406.173 NH GP2 + out: "749470.166\t131406.173 749470.166 131406.173 NH GP2" +- args: +units=us-ft +init=nad83:2900 -f %.3f + in: -74d13'55.737 39d52'02.095 567304.543 376673.733 NJ GP1 + out: "567304.543\t376673.733 567304.543 376673.733 NJ GP1" +- args: +units=us-ft +init=nad83:2900 -f %.3f + in: -74d51'24.058 41d12'07.401 393979.614 863010.549 NJ GP2 + out: "393979.614\t863010.549 393979.614 863010.549 NJ GP2" +- args: +units=us-ft +init=nad83:3002 -f %.3f + in: -106d15'00.000 33d30'00.000 1640416.667 909448.493 NM C GP1 + out: "1640416.667\t909448.493 1640416.667 909448.493 NM C GP1" +- args: +units=us-ft +init=nad83:3002 -f %.3f + in: -106d15'00.000 33d30'30.000 1640416.667 912480.595 NM C GP2 + out: "1640416.667\t912480.595 1640416.667 912480.595 NM C GP2" +- args: +units=us-ft +init=nad83:3001 -f %.3f + in: -104d11'42.410 33d17'21.732 583573.491 832847.194 NM E GP1 + out: "583573.491\t832847.194 583573.491 832847.194 NM E GP1" +- args: +units=us-ft +init=nad83:3001 -f %.3f + in: -104d47'37.948 33d22'32.349 400747.149 864523.566 NM E GP2 + out: "400747.149\t864523.566 400747.149 864523.566 NM E GP2" +- args: +units=us-ft +init=nad83:3003 -f %.3f + in: -107d50'00.000 32d30'00.000 2723091.667 545634.896 NM W GP1 + out: "2723091.667\t545634.896 2723091.667 545634.896 NM W GP1" +- args: +units=us-ft +init=nad83:3003 -f %.3f + in: -107d50'00.000 32d30'30.000 2723091.667 548666.562 NM W GP2 + out: "2723091.667\t548666.562 2723091.667 548666.562 NM W GP2" +- args: +units=us-ft +init=nad83:2701 -f %.3f + in: -114d49'09.337 35d43'09.299 882966.545 26600313.129 NV E GP1 + out: "882966.545\t26600313.129 882966.545 26600313.129 NV E GP1" +- args: +units=us-ft +init=nad83:2701 -f %.3f + in: -116d50'32.766 41d30'37.869 311338.993 28710910.565 NV E GP2 + out: "311338.993\t28710910.564 311338.993 28710910.565 NV E GP2" +- args: +units=us-ft +init=nad83:3101 -f %.3f + in: -74d02'53.671 42d17'01.775 614362.369 1257287.611 NY E GP1 + out: "614362.369\t1257287.611 614362.369 1257287.611 NY E GP1" +- args: +units=us-ft +init=nad83:3101 -f %.3f + in: -74d44'39.818 42d30'07.382 426225.275 1336579.561 NY E GP2 + out: "426225.275\t1336579.561 426225.275 1336579.561 NY E GP2" +- args: +units=us-ft +init=nad83:3104 -f %.3f + in: -73d02'36.247 40d47'50.624 1249103.533 231235.845 NY L GP1 + out: "1249103.533\t231235.845 1249103.533 231235.845 NY L GP1" +- args: +units=us-ft +init=nad83:3104 -f %.3f + in: -74d06'58.125 40d36'07.281 951997.667 158630.811 NY L GP2 + out: "951997.667\t158630.811 951997.667 158630.811 NY L GP2" +- args: +units=us-ft +init=nad83:3104 -f %.3f + in: -74d00'00.000 40d45'00.000 984250.000 212521.887 NY L GP3 + out: "984250.000\t212521.887 984250.000 212521.887 NY L GP3" +- args: +units=us-ft +init=nad83:3104 -f %.3f + in: -73d15'00.000 40d37'30.000 1192442.028 167871.999 NY L GP4 + out: "1192442.028\t167871.999 1192442.028 167871.999 NY L GP4" +- args: +units=us-ft +init=nad83:3104 -f %.3f + in: -73d22'30.000 40d45'00.000 1157419.074 213139.664 NY L GP5 + out: "1157419.074\t213139.664 1157419.074 213139.664 NY L GP5" +- args: +units=us-ft +init=nad83:3401 -f %.3f + in: -80d49'28.238 40d17'50.894 2435851.621 234309.717 OH N GP1 + out: "2435851.621\t234309.717 2435851.621 234309.717 OH N GP1" +- args: +units=us-ft +init=nad83:3401 -f %.3f + in: -82d37'31.021 40d20'14.678 1933572.857 244396.244 OH N GP2 + out: "1933572.857\t244396.244 1933572.857 244396.244 OH N GP2" +- args: +units=us-ft +init=nad83:3501 -f %.3f + in: -98d42'45.414 36d50'19.568 1759953.675 670136.468 OK N GP1 + out: "1759953.675\t670136.468 1759953.675 670136.468 OK N GP1" +- args: +units=us-ft +init=nad83:3501 -f %.3f + in: -95d38'44.046 35d20'36.925 2670659.833 133589.112 OK N GP2 + out: "2670659.833\t133589.112 2670659.833 133589.112 OK N GP2" +- args: +units=us-ft +init=nad83:3602 -f %.3f + in: -119d46'26.562 44d24'25.943 5110990.827 999684.042 OR S GP1 + out: "5110990.827\t999684.042 5110990.827 999684.042 OR S GP1" +- args: +units=us-ft +init=nad83:3602 -f %.3f + in: -121d09'56.105 44d23'08.924 4747225.642 991752.635 OR S GP2 + out: "4747225.642\t991752.635 4747225.642 991752.635 OR S GP2" +- args: +units=us-ft +init=nad83:3701 -f %.3f + in: -74d33'20.644 41d23'48.566 2844678.533 464365.610 PA N GP1 + out: "2844678.533\t464365.610 2844678.533 464365.610 PA N GP1" +- args: +units=us-ft +init=nad83:3701 -f %.3f + in: -78d09'48.121 40d51'35.455 1854155.505 252833.700 PA N GP2 + out: "1854155.505\t252833.700 1854155.505 252833.700 PA N GP2" +- args: +units=us-ft +init=nad83:5200 -f %.3f + in: -67d08'56.930 18d29'56.972 408161.046 898432.808 PR F GP1 + out: "408161.046\t898432.808 408161.046 898432.808 PR F GP1" +- args: +units=us-ft +init=nad83:5200 -f %.3f + in: -66d52'30.000 18d15'00.000 502925.440 807654.009 PR F GP2 + out: "502925.440\t807654.009 502925.440 807654.009 PR F GP2" +- args: +units=us-ft +init=nad83:5200 -f %.3f + in: -66d26'00.000 18d15'00.000 656166.667 807469.207 PR F GP3 + out: "656166.667\t807469.207 656166.667 807469.207 PR F GP3" +- args: +units=us-ft +init=nad83:5200 -f %.3f + in: -66d26'00.000 18d30'00.000 656166.667 898253.524 PR F GP4 + out: "656166.667\t898253.524 656166.667 898253.524 PR F GP4" +- args: +units=us-ft +init=nad83:5200 -f %.3f + in: -67d08'56.930 18d29'56.972 408161.046 898432.808 PR M GP1 + out: "408161.046\t898432.808 408161.046 898432.808 PR M GP1" +- args: +units=us-ft +init=nad83:5200 -f %.3f + in: -66d52'30.000 18d15'00.000 502925.440 807654.009 PR M GP2 + out: "502925.440\t807654.009 502925.440 807654.009 PR M GP2" +- args: +units=us-ft +init=nad83:5200 -f %.3f + in: -66d26'00.000 18d15'00.000 656166.667 807469.207 PR M GP3 + out: "656166.667\t807469.207 656166.667 807469.207 PR M GP3" +- args: +units=us-ft +init=nad83:5200 -f %.3f + in: -66d26'00.000 18d30'00.000 656166.667 898253.524 PR M GP4 + out: "656166.667\t898253.524 656166.667 898253.524 PR M GP4" +- args: +units=us-ft +init=nad83:3800 -f %.3f + in: -71d16'00.833 41d32'24.848 391898.667 166566.121 RI GP1 + out: "391898.667\t166566.121 391898.667 166566.121 RI GP1" +- args: +units=us-ft +init=nad83:3800 -f %.3f + in: -71d37'13.730 41d23'53.266 295027.785 114722.837 RI GP2 + out: "295027.785\t114722.837 295027.785 114722.837 RI GP2" +- args: +units=us-ft +init=nad83:3900 -f %.3f + in: -80d32'30.000 34d32'30.000 2138015.480 985710.127 SC N GP1 + out: "2138015.480\t985710.127 2138015.480 985710.127 SC N GP1" +- args: +units=us-ft +init=nad83:3900 -f %.3f + in: -81d00'00.000 34d32'30.000 1999996.000 985404.077 SC N GP2 + out: "1999996.000\t985404.077 1999996.000 985404.077 SC N GP2" +- args: +units=us-ft +init=nad83:3900 -f %.3f + in: -80d32'30.000 33d32'30.000 2139629.138 621856.156 SC S GP1 + out: "2139629.138\t621856.156 2139629.138 621856.156 SC S GP1" +- args: +units=us-ft +init=nad83:3900 -f %.3f + in: -81d00'00.000 33d32'30.000 1999996.000 621546.527 SC S GP2 + out: "1999996.000\t621546.527 1999996.000 621546.527 SC S GP2" +- args: +units=us-ft +init=nad83:4001 -f %.3f + in: -99d12'21.983 44d06'08.121 2177060.848 99066.761 SD N GP1 + out: "2177060.848\t99066.761 2177060.848 99066.761 SD N GP1" +- args: +units=us-ft +init=nad83:4001 -f %.3f + in: -100d32'28.873 44d32'34.917 1827356.330 259209.712 SD N GP2 + out: "1827356.330\t259209.712 1827356.330 259209.712 SD N GP2" +- args: +units=us-ft +init=nad83:4100 -f %.3f + in: -85d13'55.967 36d21'48.503 2194569.476 739881.374 TN GP1 + out: "2194569.476\t739881.374 2194569.476 739881.374 TN GP1" +- args: +units=us-ft +init=nad83:4100 -f %.3f + in: -88d43'05.849 36d30'08.410 1169616.875 800645.091 TN GP2 + out: "1169616.875\t800645.091 1169616.875 800645.091 TN GP2" +- args: +units=us-ft +init=nad83:4201 -f %.3f + in: -100d33'06.303 34d39'35.684 941333.504 3522390.511 TX N GP1 + out: "941333.504\t3522390.511 941333.504 3522390.511 TX N GP1" +- args: +units=us-ft +init=nad83:4201 -f %.3f + in: -102d48'50.949 34d43'39.249 261294.654 3548271.494 TX N GP2 + out: "261294.654\t3548271.494 261294.654 3548271.494 TX N GP2" +- args: +units=us-ft +init=nad83:4302 -f %.3f + in: -111d30'00.000 38d40'00.000 1640416.667 6683084.515 UT C GP1 + out: "1640416.667\t6683084.515 1640416.667 6683084.515 UT C GP1" +- args: +units=us-ft +init=nad83:4302 -f %.3f + in: -111d30'00.000 38d40'30.000 1640416.667 6686119.851 UT C GP2 + out: "1640416.667\t6686119.851 1640416.667 6686119.851 UT C GP2" +- args: +units=us-ft +init=nad83:4301 -f %.3f + in: -111d30'00.000 41d30'00.000 1640416.667 3705897.565 UT N GP1 + out: "1640416.667\t3705897.565 1640416.667 3705897.565 UT N GP1" +- args: +units=us-ft +init=nad83:4301 -f %.3f + in: -111d30'00.000 41d30'30.000 1640416.667 3708933.975 UT N GP2 + out: "1640416.667\t3708933.975 1640416.667 3708933.975 UT N GP2" +- args: +units=us-ft +init=nad83:4303 -f %.3f + in: -109d48'37.967 38d29'30.877 2123972.902 10511502.846 UT S GP1 + out: "2123972.902\t10511502.846 2123972.902 10511502.846 UT S GP1" +- args: +units=us-ft +init=nad83:4303 -f %.3f + in: -113d52'56.922 37d09'18.788 946139.893 10029235.592 UT S GP2 + out: "946139.893\t10029235.592 946139.893 10029235.592 UT S GP2" +- args: +units=us-ft +init=nad83:4501 -f %.3f + in: -77d13'46.945 38d55'12.407 11844323.043 7020638.975 VA N GP1 + out: "11844323.043\t7020638.975 11844323.043 7020638.975 VA N GP1" +- args: +units=us-ft +init=nad83:4501 -f %.3f + in: -79d18'51.557 38d09'59.020 11248797.976 6744688.474 VA N GP2 + out: "11248797.976\t6744688.474 11248797.976 6744688.474 VA N GP2" +- args: +units=us-ft +init=nad83:4501 -f %.3f + in: -77d38'10.823 37d49'23.964 11732395.294 6619889.590 VA N GP3 + out: "11732395.294\t6619889.590 11732395.294 6619889.590 VA N GP3" +- args: +units=us-ft +init=nad83:4501 -f %.3f + in: -79d26'19.475 37d47'25.852 11211628.032 6608155.232 VA N GP4 + out: "11211628.032\t6608155.232 11211628.032 6608155.232 VA N GP4" +- args: +units=us-ft +init=nad83:4501 -f %.3f + in: -77d44'30.336 39d00'06.804 11698399.159 7048812.266 VA N GP6 + out: "11698399.159\t7048812.266 11698399.159 7048812.266 VA N GP6" +- args: +units=us-ft +init=nad83:4501 -f %.3f + in: -77d43'47.013 38d59'55.454 11701828.676 7047692.496 VA N GP9 + out: "11701828.676\t7047692.496 11701828.676 7047692.496 VA N GP9" +- args: +units=us-ft +init=nad83:4502 -f %.3f + in: -78d30'00.000 37d30'00.000 11482916.667 3705606.876 VA S GP1 + out: "11482916.667\t3705606.876 11482916.667 3705606.876 VA S GP1" +- args: +units=us-ft +init=nad83:4502 -f %.3f + in: -78d30'00.000 37d30'30.000 11482916.667 3708641.137 VA S GP2 + out: "11482916.667\t3708641.137 11482916.667 3708641.137 VA S GP2" +- args: +units=us-ft +init=nad83:4502 -f %.3f + in: -77d32'33.000 36d54'42.507 11762849.074 3492868.579 VA S GP3 + out: "11762849.074\t3492868.579 11762849.074 3492868.579 VA S GP3" +- args: +units=us-ft +init=nad83:4502 -f %.3f + in: -77d21'55.732 38d04'53.901 11809480.679 3919367.025 VA S GP4 + out: "11809480.679\t3919367.025 11809480.679 3919367.025 VA S GP4" +- args: +units=us-ft +init=nad83:5200 -f %.3f + in: -64d45'30.000 17d45'30.000 1238952.313 631597.723 VI F GP1 + out: "1238952.313\t631597.723 1238952.313 631597.723 VI F GP1" +- args: +units=us-ft +init=nad83:5200 -f %.3f + in: -66d26'00.000 17d45'56.426 656166.667 631597.858 VI F GP2 + out: "656166.667\t631597.858 656166.667 631597.858 VI F GP2" +- args: +units=us-ft +init=nad83:5200 -f %.3f + in: -64d45'30.000 17d45'30.000 1238952.313 631597.723 VI M GP1 + out: "1238952.313\t631597.723 1238952.313 631597.723 VI M GP1" +- args: +units=us-ft +init=nad83:5200 -f %.3f + in: -66d26'00.000 17d45'56.426 656166.667 631597.858 VI M GP2 + out: "656166.667\t631597.858 656166.667 631597.858 VI M GP2" +- args: +units=us-ft +init=nad83:4400 -f %.3f + in: -72d29'31.418 43d09'58.526 1642534.834 242819.594 VT GP1 + out: "1642534.834\t242819.594 1642534.834 242819.594 VT GP1" +- args: +units=us-ft +init=nad83:4400 -f %.3f + in: -73d12'06.978 44d22'22.810 1456873.971 683480.189 VT GP2 + out: "1456873.971\t683480.189 1456873.971 683480.189 VT GP2" +- args: +units=us-ft +init=nad83:4601 -f %.3f + in: -119d51'37.006 47d50'51.069 1879336.368 310659.110 WA N GP1 + out: "1879336.368\t310659.110 1879336.368 310659.110 WA N GP1" +- args: +units=us-ft +init=nad83:4601 -f %.3f + in: -123d59'49.087 48d09'29.131 868484.545 438307.526 WA N GP2 + out: "868484.545\t438307.526 868484.545 438307.526 WA N GP2" +- args: +units=us-ft +init=nad83:4801 -f %.3f + in: -88d44'40.778 45d22'21.598 2291123.165 77666.637 WI N GP1 + out: "2291123.165\t77666.637 2291123.165 77666.637 WI N GP1" +- args: +units=us-ft +init=nad83:4801 -f %.3f + in: -92d12'19.275 45d48'35.812 1406198.343 242375.264 WI N GP2 + out: "1406198.343\t242375.264 1406198.343 242375.264 WI N GP2" +- args: +units=us-ft +init=nad83:4701 -f %.3f + in: -77d53'39.269 39d14'39.339 2423253.113 275144.536 WV N GP1 + out: "2423253.113\t275144.536 2423253.113 275144.536 WV N GP1" +- args: +units=us-ft +init=nad83:4701 -f %.3f + in: -81d33'23.549 39d18'08.535 1386588.889 298906.239 WV N GP2 + out: "1386588.889\t298906.239 1386588.889 298906.239 WV N GP2" +- args: +units=us-ft +init=nad83:4701 -f %.3f + in: -77d30'10.460 38d59'25.903 2536117.742 184974.384 WV N GP3 + out: "2536117.742\t184974.384 2536117.742 184974.384 WV N GP3" +- args: +units=us-ft +init=nad83:4901 -f %.3f + in: -105d31'02.882 43d30'40.600 563107.342 1097477.489 WY E GP1 + out: "563107.342\t1097477.489 563107.342 1097477.489 WY E GP1" +- args: +units=us-ft +init=nad83:4901 -f %.3f + in: -105d22'42.856 43d30'14.685 599946.619 1094729.119 WY E GP2 + out: "599946.619\t1094729.118 599946.619 1094729.119 WY E GP2" +- args: +units=us-ft +init=nad83:4901 -f %.3f + in: -105d28'42.827 43d36'33.391 573561.723 1133155.514 WY E GP3 + out: "573561.723\t1133155.513 573561.723 1133155.514 WY E GP3" +- args: +units=us-ft +init=nad83:4901 -f %.3f + in: -105d23'43.223 42d00'59.422 594028.794 552611.396 WY E GP4 + out: "594028.794\t552611.396 594028.794 552611.396 WY E GP4" +- args: +units=us-ft +init=nad83:4901 -f %.3f + in: -104d35'06.686 42d34'50.366 812768.620 758647.940 WY E GP5 + out: "812768.620\t758647.940 812768.620 758647.940 WY E GP5" +- args: +units=us-ft +init=nad83:4902 -f %.3f + in: -106d13'03.224 41d36'14.640 1617477.770 732300.770 WYEC GP1 + out: "1617477.770\t732300.770 1617477.770 732300.770 WYEC GP1" +- args: +units=us-ft +init=nad83:4902 -f %.3f + in: -108d01'56.720 41d51'57.518 1121920.469 826536.345 WYEC GP2 + out: "1121920.469\t826536.345 1121920.469 826536.345 WYEC GP2" diff --git a/test/cli/test_projinfo.sh b/test/cli/test_projinfo.sh new file mode 100755 index 0000000000..46d9907a6e --- /dev/null +++ b/test/cli/test_projinfo.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# Test projinfo using specific sh commands +# See test_projinfo.yaml for general CLI testing. + +set -e + +TEST_CLI_DIR=$(dirname $0) +EXE=$1 +if test -z "${EXE}"; then + echo "Usage: ${0} " + exit 1 +fi +if test ! -x ${EXE}; then + echo "*** ERROR: Can not find '${EXE}' program!" + exit 1 +fi + +echo "============================================" +echo "Running ${0} using ${EXE}:" +echo "============================================" + +OUT=$(basename $0 .sh)_out + +echo "doing tests into file ${OUT}, please wait" +rm -f ${OUT} +# +echo "##############################################################" >> ${OUT} +echo "Testing PROJ_AUX_DB environment variable" >> ${OUT} +rm -f tmp_projinfo_aux.db +$EXE --dump-db-structure --output-id HOBU:XXXX EPSG:4326 | sqlite3 tmp_projinfo_aux.db +export PROJ_AUX_DB=tmp_projinfo_aux.db +$EXE HOBU:XXXX >>${OUT} +unset PROJ_AUX_DB +rm -f tmp_projinfo_aux.db +echo "" >>${OUT} + + +############################################################################## +# Done! +# do 'diff' with distribution results +echo "diff ${OUT} with ${OUT}.dist" +diff -u -b ${OUT} ${TEST_CLI_DIR}/${OUT}.dist +if [ $? -ne 0 ] ; then + echo "" + echo "PROBLEMS HAVE OCCURRED" + echo "test file ${OUT} saved" + exit 100 +else + echo "TEST OK" + echo "test file ${OUT} removed" + rm -f ${OUT} + exit 0 +fi diff --git a/test/cli/test_projinfo.yaml b/test/cli/test_projinfo.yaml new file mode 100644 index 0000000000..b01ec90c13 --- /dev/null +++ b/test/cli/test_projinfo.yaml @@ -0,0 +1,1761 @@ +comment: > + Test basic capabilities of the projinfo command. + + See test_projinfo.sh for other advanced testing. +exe: projinfo +env: + PROJINFO_NO_GRID_CHECK: YES +tests: +- args: EPSG:4326 + out: | + PROJ.4 string: + +proj=longlat +datum=WGS84 +no_defs +type=crs + + WKT2:2019 string: + GEOGCRS["WGS 84", + 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)"], + MEMBER["World Geodetic System 1984 (G2139)"], + MEMBER["World Geodetic System 1984 (G2296)"], + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1]], + ENSEMBLEACCURACY[2.0]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + USAGE[ + SCOPE["Horizontal component of 3D system."], + AREA["World."], + BBOX[-90,-180,90,180]], + ID["EPSG",4326]] +- args: -o WKT1_GDAL EPSG:4326 + out: |+ + WKT1:GDAL string: + GEOGCS["WGS 84", + DATUM["WGS_1984", + SPHEROID["WGS 84",6378137,298.257223563, + AUTHORITY["EPSG","7030"]], + AUTHORITY["EPSG","6326"]], + PRIMEM["Greenwich",0, + AUTHORITY["EPSG","8901"]], + UNIT["degree",0.0174532925199433, + AUTHORITY["EPSG","9122"]], + AUTHORITY["EPSG","4326"]] + +- args: -o WKT2_2015 EPSG:4326 + out: | + WKT2:2015 string: + GEODCRS["WGS 84", + DATUM["World Geodetic System 1984", + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + SCOPE["Horizontal component of 3D system."], + AREA["World."], + BBOX[-90,-180,90,180], + ID["EPSG",4326]] +- args: -o WKT2_2019 EPSG:4326 + out: | + WKT2:2019 string: + GEOGCRS["WGS 84", + 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)"], + MEMBER["World Geodetic System 1984 (G2139)"], + MEMBER["World Geodetic System 1984 (G2296)"], + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1]], + ENSEMBLEACCURACY[2.0]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + USAGE[ + SCOPE["Horizontal component of 3D system."], + AREA["World."], + BBOX[-90,-180,90,180]], + ID["EPSG",4326]] +- args: -o ALL EPSG:4326 + stdout: | + PROJ.4 string: + +proj=longlat +datum=WGS84 +no_defs +type=crs + + WKT2:2015 string: + GEODCRS["WGS 84", + DATUM["World Geodetic System 1984", + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + SCOPE["Horizontal component of 3D system."], + AREA["World."], + BBOX[-90,-180,90,180], + ID["EPSG",4326]] + + WKT2:2019 string: + GEOGCRS["WGS 84", + 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)"], + MEMBER["World Geodetic System 1984 (G2139)"], + MEMBER["World Geodetic System 1984 (G2296)"], + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1]], + ENSEMBLEACCURACY[2.0]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + USAGE[ + SCOPE["Horizontal component of 3D system."], + AREA["World."], + BBOX[-90,-180,90,180]], + ID["EPSG",4326]] + + WKT1:GDAL string: + GEOGCS["WGS 84", + DATUM["WGS_1984", + SPHEROID["WGS 84",6378137,298.257223563, + AUTHORITY["EPSG","7030"]], + AUTHORITY["EPSG","6326"]], + PRIMEM["Greenwich",0, + AUTHORITY["EPSG","8901"]], + UNIT["degree",0.0174532925199433, + AUTHORITY["EPSG","9122"]], + AUTHORITY["EPSG","4326"]] + + + WKT1:ESRI string: + GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] + + + PROJJSON: + { + "$schema": "https://proj.org/schemas/v0.7/projjson.schema.json", + "type": "GeographicCRS", + "name": "WGS 84", + "datum_ensemble": { + "name": "World Geodetic System 1984 ensemble", + "members": [ + { + "name": "World Geodetic System 1984 (Transit)", + "id": { + "authority": "EPSG", + "code": 1166 + } + }, + { + "name": "World Geodetic System 1984 (G730)", + "id": { + "authority": "EPSG", + "code": 1152 + } + }, + { + "name": "World Geodetic System 1984 (G873)", + "id": { + "authority": "EPSG", + "code": 1153 + } + }, + { + "name": "World Geodetic System 1984 (G1150)", + "id": { + "authority": "EPSG", + "code": 1154 + } + }, + { + "name": "World Geodetic System 1984 (G1674)", + "id": { + "authority": "EPSG", + "code": 1155 + } + }, + { + "name": "World Geodetic System 1984 (G1762)", + "id": { + "authority": "EPSG", + "code": 1156 + } + }, + { + "name": "World Geodetic System 1984 (G2139)", + "id": { + "authority": "EPSG", + "code": 1309 + } + }, + { + "name": "World Geodetic System 1984 (G2296)", + "id": { + "authority": "EPSG", + "code": 1383 + } + } + ], + "ellipsoid": { + "name": "WGS 84", + "semi_major_axis": 6378137, + "inverse_flattening": 298.257223563 + }, + "accuracy": "2.0", + "id": { + "authority": "EPSG", + "code": 6326 + } + }, + "coordinate_system": { + "subtype": "ellipsoidal", + "axis": [ + { + "name": "Geodetic latitude", + "abbreviation": "Lat", + "direction": "north", + "unit": "degree" + }, + { + "name": "Geodetic longitude", + "abbreviation": "Lon", + "direction": "east", + "unit": "degree" + } + ] + }, + "scope": "Horizontal component of 3D system.", + "area": "World.", + "bbox": { + "south_latitude": -90, + "west_longitude": -180, + "north_latitude": 90, + "east_longitude": 180 + }, + "id": { + "authority": "EPSG", + "code": 4326 + } + } +- args: > + "+proj=merc +lat_ts=5 +datum=WGS84 +type=crs" --output-id HOBU:MY_CRS -o SQL -q + out: | + INSERT INTO geodetic_crs VALUES('HOBU','GEODETIC_CRS_MY_CRS','unknown','','geographic 2D','EPSG','6424','EPSG','6326',NULL,0); + INSERT INTO usage VALUES('HOBU','USAGE_GEODETIC_CRS_MY_CRS','geodetic_crs','HOBU','GEODETIC_CRS_MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); + INSERT INTO conversion VALUES('HOBU','CONVERSION_MY_CRS','unknown','','EPSG','9805','Mercator (variant B)','EPSG','8823','Latitude of 1st standard parallel',5,'EPSG','9122','EPSG','8802','Longitude of natural origin',0,'EPSG','9122','EPSG','8806','False easting',0,'EPSG','9001','EPSG','8807','False northing',0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + INSERT INTO usage VALUES('HOBU','USAGE_CONVERSION_MY_CRS','conversion','HOBU','CONVERSION_MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); + INSERT INTO projected_crs VALUES('HOBU','MY_CRS','unknown','','EPSG','4400','HOBU','GEODETIC_CRS_MY_CRS','HOBU','CONVERSION_MY_CRS',NULL,0); + INSERT INTO usage VALUES('HOBU','USAGE_PROJECTED_CRS_MY_CRS','projected_crs','HOBU','MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); +- args: > + "+proj=merc +lat_ts=5 +datum=WGS84 +type=crs" --output-id HOBU:MY_CRS --authority HOBU + -o SQL -q + out: | + INSERT INTO ellipsoid VALUES('HOBU','ELLPS_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','WGS 84','','IAU_2015','399',6378137,'EPSG','9001',298.257223563,NULL,0); + INSERT INTO prime_meridian VALUES('HOBU','PM_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','Greenwich',0,'EPSG','9122',0); + INSERT INTO geodetic_datum VALUES('HOBU','GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','World Geodetic System 1984','','HOBU','ELLPS_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','HOBU','PM_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS',NULL,NULL,NULL,NULL,NULL,0); + INSERT INTO usage VALUES('HOBU','USAGE_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','geodetic_datum','HOBU','GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); + INSERT INTO geodetic_crs VALUES('HOBU','GEODETIC_CRS_MY_CRS','unknown','','geographic 2D','EPSG','6424','HOBU','GEODETIC_DATUM_GEODETIC_CRS_MY_CRS',NULL,0); + INSERT INTO usage VALUES('HOBU','USAGE_GEODETIC_CRS_MY_CRS','geodetic_crs','HOBU','GEODETIC_CRS_MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); + INSERT INTO conversion VALUES('HOBU','CONVERSION_MY_CRS','unknown','','EPSG','9805','Mercator (variant B)','EPSG','8823','Latitude of 1st standard parallel',5,'EPSG','9122','EPSG','8802','Longitude of natural origin',0,'EPSG','9122','EPSG','8806','False easting',0,'EPSG','9001','EPSG','8807','False northing',0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + INSERT INTO usage VALUES('HOBU','USAGE_CONVERSION_MY_CRS','conversion','HOBU','CONVERSION_MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); + INSERT INTO projected_crs VALUES('HOBU','MY_CRS','unknown','','EPSG','4400','HOBU','GEODETIC_CRS_MY_CRS','HOBU','CONVERSION_MY_CRS',NULL,0); + INSERT INTO usage VALUES('HOBU','USAGE_PROJECTED_CRS_MY_CRS','projected_crs','HOBU','MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); +- args: -s EPSG:4326 -t EPSG:32631 --single-line + out: | + Candidate operations found: 1 + ------------------------------------- + Operation No. 1: + + EPSG:16031, UTM zone 31N, 0 m, Between 0°E and 6°E, northern hemisphere between equator and 84°N, onshore and offshore. + + PROJ string: + +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=utm +zone=31 +ellps=WGS84 + + WKT2:2019 string: + CONVERSION["UTM zone 31N",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",0.9996,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",500000,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]],ID["EPSG",16031]] +- args: --source-crs NAD27 --target-crs NAD83 + out: | + Candidate operations found: 1 + Note: using '--spatial-test intersects' would bring more results (10) + ------------------------------------- + Operation No. 1: + + unknown id, Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, World, has ballpark transformation + + PROJ string: + +proj=noop + + WKT2:2019 string: + COORDINATEOPERATION["Ballpark geographic offset from NAD27 to NAD83", + 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]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4267]]], + TARGETCRS[ + GEOGCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4269]]], + METHOD["Geographic2D offsets", + ID["EPSG",9619]], + PARAMETER["Latitude offset",0, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8601]], + PARAMETER["Longitude offset",0, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8602]], + USAGE[ + SCOPE["unknown"], + AREA["World"], + BBOX[-90,-180,90,180]]] +- args: -s NAD27 -t NAD83 --grid-check none --spatial-test intersects --summary --hide-ballpark + out: | + Candidate operations found: 9 + DERIVED_FROM(EPSG):1313, NAD27 to NAD83 (4), 1.5 m, Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast west of 44°W and north of 40°N. + DERIVED_FROM(EPSG):1312, NAD27 to NAD83 (3), 2.0 m, Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast west of 44°W and north of 40°N. + DERIVED_FROM(EPSG):1241, NAD27 to NAD83 (1), 0.15 m, United States (USA) - CONUS including EEZ - onshore and offshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico (GoM) OCS. + DERIVED_FROM(EPSG):8555, NAD27 to NAD83 (7), 0.15 m, United States (USA) - CONUS onshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico offshore continental shelf (GoM OCS). + DERIVED_FROM(EPSG):1243, NAD27 to NAD83 (2), 0.5 m, United States (USA) - Alaska including EEZ. + DERIVED_FROM(EPSG):8549, NAD27 to NAD83 (8), 0.5 m, United States (USA) - Alaska. + DERIVED_FROM(EPSG):1573, NAD27 to NAD83 (6), 1.5 m, Canada - Quebec. + EPSG:1462, NAD27 to NAD83 (5), 2.0 m, Canada - Quebec. + EPSG:9111, NAD27 to NAD83 (9), 1.5 m, Canada - Saskatchewan. +- args: -s NAD27 -t NAD83 --grid-check none --spatial-test intersects + out: | + Candidate operations found: 10 + ------------------------------------- + Operation No. 1: + + DERIVED_FROM(EPSG):1313, NAD27 to NAD83 (4), 1.5 m, Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast west of 44°W and north of 40°N. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=hgridshift +grids=ca_nrc_ntv2_0.tif + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 + + WKT2:2019 string: + COORDINATEOPERATION["NAD27 to NAD83 (4)", + 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]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4267]]], + TARGETCRS[ + GEOGCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4269]]], + METHOD["HORIZONTAL_SHIFT_GTIFF"], + PARAMETERFILE["Latitude and longitude difference file","ca_nrc_ntv2_0.tif"], + OPERATIONACCURACY[1.5], + USAGE[ + SCOPE["Transformation of coordinates at 1m to 2m level of accuracy."], + AREA["Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast west of 44°W and north of 40°N."], + BBOX[40,-141.01,83.17,-44]], + ID["DERIVED_FROM(EPSG)",1313], + REMARK["Uses NTv2 data files. Replaces NTv1 (transformation code 1312) except in Quebec. Input expects longitudes to be positive west; EPSG GeogCRS NAD27 (code 4267) and (code 4269) have longitudes positive east. May be used as tfm to WGS 84 - see code 1693."]] + + ------------------------------------- + Operation No. 2: + + DERIVED_FROM(EPSG):1312, NAD27 to NAD83 (3), 2.0 m, Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast west of 44°W and north of 40°N. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=hgridshift +grids=ca_nrc_ntv1_can.tif + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 + + WKT2:2019 string: + COORDINATEOPERATION["NAD27 to NAD83 (3)", + 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]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4267]]], + TARGETCRS[ + GEOGCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4269]]], + METHOD["HORIZONTAL_SHIFT_GTIFF"], + PARAMETERFILE["Latitude and longitude difference file","ca_nrc_ntv1_can.tif"], + OPERATIONACCURACY[2.0], + USAGE[ + SCOPE["Historic record only - now superseded - see remarks."], + AREA["Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast west of 44°W and north of 40°N."], + BBOX[40,-141.01,83.17,-44]], + ID["DERIVED_FROM(EPSG)",1312], + REMARK["Uses NTv1 method. Replaced in Quebec by code 1462 and elsewhere in 1997 by NTv2 (transformation code 1313). Input expects longitudes to be positive west; EPSG GeogCRS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east."]] + + ------------------------------------- + Operation No. 3: + + DERIVED_FROM(EPSG):1241, NAD27 to NAD83 (1), 0.15 m, United States (USA) - CONUS including EEZ - onshore and offshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico (GoM) OCS. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=hgridshift +grids=us_noaa_conus.tif + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 + + WKT2:2019 string: + COORDINATEOPERATION["NAD27 to NAD83 (1)", + 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]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4267]]], + TARGETCRS[ + GEOGCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4269]]], + METHOD["HORIZONTAL_SHIFT_GTIFF"], + PARAMETERFILE["Latitude and longitude difference file","us_noaa_conus.tif"], + OPERATIONACCURACY[0.15], + USAGE[ + SCOPE["Transformation of coordinates at 0.2m level of accuracy."], + AREA["United States (USA) - CONUS including EEZ - onshore and offshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico (GoM) OCS."], + BBOX[23.81,-129.17,49.38,-65.69]], + ID["DERIVED_FROM(EPSG)",1241], + REMARK["Uses NADCON method which expects longitudes positive west; EPSG GeogCRS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east. For application in Gulf of Mexico refer to IOGP report 373-26."]] + + ------------------------------------- + Operation No. 4: + + DERIVED_FROM(EPSG):8555, NAD27 to NAD83 (7), 0.15 m, United States (USA) - CONUS onshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico offshore continental shelf (GoM OCS). + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=gridshift +grids=us_noaa_nadcon5_nad27_nad83_1986_conus.tif + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 + + WKT2:2019 string: + COORDINATEOPERATION["NAD27 to NAD83 (7)", + 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]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4267]]], + TARGETCRS[ + GEOGCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4269]]], + METHOD["GENERAL_SHIFT_GTIFF"], + PARAMETERFILE["Latitude and longitude difference file","us_noaa_nadcon5_nad27_nad83_1986_conus.tif"], + OPERATIONACCURACY[0.15], + USAGE[ + SCOPE["Geodesy."], + AREA["United States (USA) - CONUS onshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico offshore continental shelf (GoM OCS)."], + BBOX[23.82,-124.79,49.38,-66.91]], + ID["DERIVED_FROM(EPSG)",8555], + REMARK["NADCON5 method expects longitudes 0-360°; source and target CRS longitudes in range ±180°. Accuracy at 67% confidence level is 0.15m onshore, 1m nearshore and undetermined farther offshore. For application in Gulf of Mexico refer to IOGP report 373-26."]] + + ------------------------------------- + Operation No. 5: + + DERIVED_FROM(EPSG):1243, NAD27 to NAD83 (2), 0.5 m, United States (USA) - Alaska including EEZ. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=hgridshift +grids=us_noaa_alaska.tif + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 + + WKT2:2019 string: + COORDINATEOPERATION["NAD27 to NAD83 (2)", + 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]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4267]]], + TARGETCRS[ + GEOGCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4269]]], + METHOD["HORIZONTAL_SHIFT_GTIFF"], + PARAMETERFILE["Latitude and longitude difference file","us_noaa_alaska.tif"], + OPERATIONACCURACY[0.5], + USAGE[ + SCOPE["Geodesy."], + AREA["United States (USA) - Alaska including EEZ."], + BBOX[47.88,167.65,74.71,-129.99]], + ID["DERIVED_FROM(EPSG)",1243], + REMARK["Uses NADCON method which expects longitudes positive west; EPSG GeogCRS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east. May be used as transformation to WGS 84 - see NAD27 to WGS 84 (85) (code 15864)."]] + + ------------------------------------- + Operation No. 6: + + DERIVED_FROM(EPSG):8549, NAD27 to NAD83 (8), 0.5 m, United States (USA) - Alaska. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=gridshift +grids=us_noaa_nadcon5_nad27_nad83_1986_alaska.tif + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 + + WKT2:2019 string: + COORDINATEOPERATION["NAD27 to NAD83 (8)", + 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]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4267]]], + TARGETCRS[ + GEOGCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4269]]], + METHOD["GENERAL_SHIFT_GTIFF"], + PARAMETERFILE["Latitude and longitude difference file","us_noaa_nadcon5_nad27_nad83_1986_alaska.tif"], + OPERATIONACCURACY[0.5], + USAGE[ + SCOPE["Geodesy."], + AREA["United States (USA) - Alaska."], + BBOX[51.3,172.42,71.4,-129.99]], + ID["DERIVED_FROM(EPSG)",8549], + REMARK["Uses NADCON5 method which expects longitudes positive east in range 0-360°; source and target CRSs have longitudes positive east in range -180° to +180°. Accuracy at 67% confidence level is 0.5m onshore, 5m nearshore and undetermined farther offshore."]] + + ------------------------------------- + Operation No. 7: + + DERIVED_FROM(EPSG):1573, NAD27 to NAD83 (6), 1.5 m, Canada - Quebec. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=hgridshift +grids=ca_que_mern_na27na83.tif + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 + + WKT2:2019 string: + COORDINATEOPERATION["NAD27 to NAD83 (6)", + 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]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4267]]], + TARGETCRS[ + GEOGCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4269]]], + METHOD["HORIZONTAL_SHIFT_GTIFF"], + PARAMETERFILE["Latitude and longitude difference file","ca_que_mern_na27na83.tif"], + OPERATIONACCURACY[1.5], + USAGE[ + SCOPE["Transformation of coordinates at 1m to 2m level of accuracy."], + AREA["Canada - Quebec."], + BBOX[44.99,-79.85,62.62,-57.1]], + ID["DERIVED_FROM(EPSG)",1573], + REMARK["Also distributed with file name QUE27-83.gsb. Replaces NAD27 to NAD83 (5) (code 1462). Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east."]] + + ------------------------------------- + Operation No. 8: + + EPSG:1462, NAD27 to NAD83 (5), 2.0 m, Canada - Quebec. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=hgridshift +grids=GS2783v1.QUE + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 + + WKT2:2019 string: + COORDINATEOPERATION["NAD27 to NAD83 (5)", + VERSION["SGQ-Can QC NT1"], + 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]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4267]]], + TARGETCRS[ + GEOGCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4269]]], + METHOD["NTv1", + ID["EPSG",9614]], + PARAMETERFILE["Latitude and longitude difference file","GS2783v1.QUE"], + OPERATIONACCURACY[2.0], + USAGE[ + SCOPE["Historic record only - now superseded - see remarks."], + AREA["Canada - Quebec."], + BBOX[44.99,-79.85,62.62,-57.1]], + ID["EPSG",1462], + REMARK["Densification for Quebec of code 1312. Replaced by NAD27 to NAD83 (6) (code 1573). Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east."]] + + ------------------------------------- + Operation No. 9: + + EPSG:9111, NAD27 to NAD83 (9), 1.5 m, Canada - Saskatchewan. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=hgridshift +grids=SK27-83.gsb + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 + + WKT2:2019 string: + COORDINATEOPERATION["NAD27 to NAD83 (9)", + VERSION["ISC-Can SK"], + 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]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4267]]], + TARGETCRS[ + GEOGCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4269]]], + METHOD["NTv2", + ID["EPSG",9615]], + PARAMETERFILE["Latitude and longitude difference file","SK27-83.gsb"], + OPERATIONACCURACY[1.5], + USAGE[ + SCOPE["Geodesy."], + AREA["Canada - Saskatchewan."], + BBOX[49,-110,60.01,-101.34]], + ID["EPSG",9111]] + + ------------------------------------- + Operation No. 10: + + unknown id, Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, World, has ballpark transformation + + PROJ string: + +proj=noop + + WKT2:2019 string: + COORDINATEOPERATION["Ballpark geographic offset from NAD27 to NAD83", + 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]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4267]]], + TARGETCRS[ + GEOGCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4269]]], + METHOD["Geographic2D offsets", + ID["EPSG",9619]], + PARAMETER["Latitude offset",0, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8601]], + PARAMETER["Longitude offset",0, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8602]], + USAGE[ + SCOPE["unknown"], + AREA["World"], + BBOX[-90,-180,90,180]]] +- args: -s EPSG:4230 -t EPSG:4258 --bbox 8,54.51,15.24,57.8 --summary + out: | + Candidate operations found: 1 + Note: using '--spatial-test intersects' would bring more results (2) + EPSG:1626, ED50 to ETRS89 (4), 1.0 m, Denmark - onshore. +- args: -s EPSG:23031 -t EPSG:4326 --bbox -13.87,34.91,-7.24,41.88 --crs-extent-use none --summary + out: | + Candidate operations found: 1 + Note: using '--spatial-test intersects' would bring more results (9) + unknown id, Inverse of UTM zone 31N + ED50 to WGS 84 (42), 5 m, Portugal - mainland - offshore. +- args: -s EPSG:4230 -t EPSG:4258 --area EPSG:3237 --summary + out: | + Candidate operations found: 1 + EPSG:1626, ED50 to ETRS89 (4), 1.0 m, Denmark - onshore. +- args: -s EPSG:4230 -t EPSG:4258 --area 'Denmark - onshore' --summary + out: | + Candidate operations found: 1 + EPSG:1626, ED50 to ETRS89 (4), 1.0 m, Denmark - onshore. +- comment: several match + args: -s EPSG:4230 -t EPSG:4258 --area 'Denmark -' --summary + stderr: | + Several candidates area of use matching provided name : + EPSG:2531 : Denmark - Jutland and Funen - onshore. + EPSG:2532 : Denmark - Zealand and Lolland (onshore). + EPSG:2533 : Denmark - Bornholm onshore. + EPSG:3237 : Denmark - onshore. + EPSG:3471 : Denmark - onshore west of 12°E - Zealand, Jutland, Fuen and Lolland. + EPSG:3472 : Denmark - onshore east of 12°E - Zealand and Falster, Bornholm. + EPSG:3631 : Denmark - Jutland onshore west of 10°E. + EPSG:3632 : Denmark - onshore - Jutland east of 9°E and Funen. + EPSG:4575 : Denmark - onshore Jutland, Funen, Zealand and Lolland. + EPSG:4693 : Denmark - onshore - Copenhagen and surrounding area. + EPSG:4694 : Denmark - onshore northern Schleswig and surrounding islands (i.e. Jutland south of the pre-1920 border near the Kongea river). + EPSG:4756 : Denmark - offshore. + exitcode: 1 +- args: -s EPSG:4230 -t EPSG:4258 --area no_match --summary + stderr: No area of use matching provided name + exitcode: 1 +- args: -s EPSG:4230 -t EPSG:4258 --area WRONG:CODE --summary + stderr: "Area of use retrieval failed: extent not found" + exitcode: 1 +- comment: Testing deprecated CRS + args: EPSG:26591 + out: | + Warning: object is deprecated + Alternative non-deprecated CRS: + EPSG:3003 + + PROJ.4 string: + +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs +type=crs + + WKT2:2019 string: + PROJCRS["Monte Mario (Rome) / Italy zone 1", + BASEGEOGCRS["Monte Mario (Rome)", + DATUM["Monte Mario (Rome)", + ELLIPSOID["International 1924",6378388,297, + LENGTHUNIT["metre",1]]], + PRIMEM["Rome",12.4523333333333, + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4806]], + CONVERSION["Italy zone 1", + METHOD["Transverse Mercator", + ID["EPSG",9807]], + PARAMETER["Latitude of natural origin",0, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8801]], + PARAMETER["Longitude of natural origin",9, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8802]], + PARAMETER["Scale factor at natural origin",0.9996, + SCALEUNIT["unity",1], + ID["EPSG",8805]], + PARAMETER["False easting",1500000, + LENGTHUNIT["metre",1], + ID["EPSG",8806]], + PARAMETER["False northing",0, + LENGTHUNIT["metre",1], + ID["EPSG",8807]]], + CS[Cartesian,2], + AXIS["easting (X)",east, + ORDER[1], + LENGTHUNIT["metre",1]], + AXIS["northing (Y)",north, + ORDER[2], + LENGTHUNIT["metre",1]], + USAGE[ + SCOPE["Engineering survey, topographic mapping."], + AREA["Italy - onshore and offshore - west of 12°E."], + BBOX[36.53,5.93,47.04,12]], + ID["EPSG",26591]] +- comment: Testing non compliant WKT1 + args: | + 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563]],UNIT["degree",0.0174532925199433]]' + out: | + Warning: GEOGCS should have a PRIMEM node + Grammar error: Parsing error : syntax error, unexpected UNIT, expecting PRIMEM. Error occurred around: + HEROID["WGS 84",6378137,298.257223563]],UNIT["degree",0.0174532925199433]] + ^ + 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, + ID["EPSG",9001]]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8901]], + CS[ellipsoidal,2], + AXIS["longitude",east, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["latitude",north, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]] +- comment: Testing CRS with towgs84 + args: -o PROJ EPSG:25832 + out: | + PROJ.4 string: + +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs +type=crs +- comment: Testing RH2000 height to SWEREF99 + args: -s EPSG:5613 -t EPSG:4977 + out: | + Candidate operations found: 2 + ------------------------------------- + Operation No. 1: + + INVERSE(DERIVED_FROM(PROJ)):EPSG_4977_TO_EPSG_5613, Inverse of SWEREF99 to RH2000 height, unknown accuracy, Sweden - onshore. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=vgridshift +grids=se_lantmateriet_SWEN17_RH2000.tif +multiplier=1 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 + + WKT2:2019 string: + COORDINATEOPERATION["Inverse of SWEREF99 to RH2000 height", + SOURCECRS[ + VERTCRS["RH2000 height", + DYNAMIC[ + FRAMEEPOCH[2000]], + VDATUM["Rikets hojdsystem 2000"], + CS[vertical,1], + AXIS["gravity-related height (H)",up, + LENGTHUNIT["metre",1]], + ID["EPSG",5613]]], + TARGETCRS[ + GEOGCRS["SWEREF99", + DATUM["SWEREF99", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,3], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["ellipsoidal height (h)",up, + ORDER[3], + LENGTHUNIT["metre",1]], + ID["EPSG",4977]]], + METHOD["Inverse of Geographic3D to GravityRelatedHeight (gtx)", + ID["INVERSE(EPSG)",9665]], + PARAMETERFILE["Geoid (height correction) model file","se_lantmateriet_SWEN17_RH2000.tif"], + USAGE[ + SCOPE["Not known."], + AREA["Sweden - onshore."], + BBOX[55.28,10.93,69.07,24.17]], + ID["INVERSE(DERIVED_FROM(PROJ))","EPSG_4977_TO_EPSG_5613"]] + + ------------------------------------- + Operation No. 2: + + unknown id, Transformation from RH2000 height to SWEREF99 (ballpark vertical transformation, without ellipsoid height to vertical height correction), unknown accuracy, World, has ballpark transformation + + PROJ string: + +proj=noop + + WKT2:2019 string: + COORDINATEOPERATION["Transformation from RH2000 height to SWEREF99 (ballpark vertical transformation, without ellipsoid height to vertical height correction)", + SOURCECRS[ + VERTCRS["RH2000 height", + DYNAMIC[ + FRAMEEPOCH[2000]], + VDATUM["Rikets hojdsystem 2000"], + CS[vertical,1], + AXIS["gravity-related height (H)",up, + LENGTHUNIT["metre",1]], + ID["EPSG",5613]]], + TARGETCRS[ + GEOGCRS["SWEREF99", + DATUM["SWEREF99", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,3], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["ellipsoidal height (h)",up, + ORDER[3], + LENGTHUNIT["metre",1]], + ID["EPSG",4977]]], + METHOD["Change of Vertical Unit", + ID["EPSG",1069]], + PARAMETER["Unit conversion scalar",1, + SCALEUNIT["unity",1], + ID["EPSG",1051]], + USAGE[ + SCOPE["unknown"], + AREA["World"], + BBOX[-90,-180,90,180]]] +- comment: Testing NAD83(2011) + NAVD88 height -> NAD83(2011) + args: -s EPSG:6349 -t EPSG:6319 --spatial-test intersects -o PROJ + out: | + Candidate operations found: 3 + ------------------------------------- + Operation No. 1: + + unknown id, Inverse of NAD83(2011) to NAVD88 height (3), 0.015 m, United States (USA) - CONUS onshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=vgridshift +grids=us_noaa_g2018u0.tif +multiplier=1 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 + + ------------------------------------- + Operation No. 2: + + unknown id, Inverse of NAD83(2011) to NAVD88 height (2), 0.02 m, United States (USA) - Alaska. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=vgridshift +grids=us_noaa_g2012ba0.tif +multiplier=1 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 + + ------------------------------------- + Operation No. 3: + + unknown id, Transformation from NAVD88 height to NAD83(2011) (ballpark vertical transformation, without ellipsoid height to vertical height correction), unknown accuracy, World, has ballpark transformation + + PROJ string: + +proj=noop +- comment: Testing NGF IGN69 height to RGF93 + args: -s EPSG:5720 -t EPSG:4965 -o PROJ + out: | + Candidate operations found: 2 + ------------------------------------- + Operation No. 1: + + INVERSE(DERIVED_FROM(EPSG)):10000, Inverse of RGF93 v1 to NGF-IGN69 height (1), 0.5 m, France - mainland onshore. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=vgridshift +grids=fr_ign_RAF18.tif +multiplier=1 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 + + ------------------------------------- + Operation No. 2: + + unknown id, Transformation from NGF-IGN69 height to RGF93 v1 (ballpark vertical transformation, without ellipsoid height to vertical height correction), unknown accuracy, World, has ballpark transformation + + PROJ string: + +proj=noop +- args: EPSG:32631 --3d + out: | + PROJ.4 string: + +proj=utm +zone=31 +datum=WGS84 +units=m +no_defs +type=crs + + WKT2:2019 string: + PROJCRS["WGS 84 / UTM zone 31N", + BASEGEOGCRS["WGS 84", + 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)"], + MEMBER["World Geodetic System 1984 (G2139)"], + MEMBER["World Geodetic System 1984 (G2296)"], + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1]], + ENSEMBLEACCURACY[2.0]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4979]], + CONVERSION["UTM zone 31N", + METHOD["Transverse Mercator", + ID["EPSG",9807]], + PARAMETER["Latitude of natural origin",0, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8801]], + PARAMETER["Longitude of natural origin",3, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8802]], + PARAMETER["Scale factor at natural origin",0.9996, + SCALEUNIT["unity",1], + ID["EPSG",8805]], + PARAMETER["False easting",500000, + LENGTHUNIT["metre",1], + ID["EPSG",8806]], + PARAMETER["False northing",0, + LENGTHUNIT["metre",1], + ID["EPSG",8807]], + ID["EPSG",16031]], + CS[Cartesian,3], + AXIS["(E)",east, + ORDER[1], + LENGTHUNIT["metre",1, + ID["EPSG",9001]]], + AXIS["(N)",north, + ORDER[2], + LENGTHUNIT["metre",1, + ID["EPSG",9001]]], + AXIS["ellipsoidal height (h)",up, + ORDER[3], + LENGTHUNIT["metre",1, + ID["EPSG",9001]]], + USAGE[ + SCOPE["unknown"], + AREA["Between 0°E and 6°E, northern hemisphere between equator and 84°N, onshore and offshore. Algeria. Andorra. Belgium. Benin. Burkina Faso. Denmark - North Sea. France. Germany - North Sea. Ghana. Luxembourg. Mali. Netherlands. Niger. Nigeria. Norway. Spain. Togo. United Kingdom (UK) - North Sea."], + BBOX[0,0,84,6]], + REMARK["Promoted to 3D from EPSG:32631"]] +- args: -s "WGS 84" -t "WGS 84 + EGM96 height" --hide-ballpark --summary + out: | + Candidate operations found: 1 + unknown id, WGS 84 to EGM96 height (1), 1 m, World. +- args: -s "WGS 84 + EGM96 height" -t "WGS 84" --hide-ballpark --summary + out: | + Candidate operations found: 1 + unknown id, Inverse of WGS 84 to EGM96 height (1), 1 m, World. +- args: -s EPSG:32631 -t EPSG:4326+3855 --summary + out: | + Candidate operations found: 1 + unknown id, Inverse of UTM zone 31N + Inverse of Null geographic offset from WGS 84 to WGS 84, 0 m, World. +- args: -s EPSG:32631 -t EPSG:4326+3855 --3d --summary + out: | + Candidate operations found: 3 + unknown id, Inverse of UTM zone 31N + WGS 84 to EGM2008 height (1), 1 m, World. + unknown id, Inverse of UTM zone 31N + WGS 84 to EGM2008 height (2), 0.5 m, World. + unknown id, Inverse of UTM zone 31N + Inverse of Transformation from EGM2008 height to WGS 84 (ballpark vertical transformation, without ellipsoid height to vertical height correction), unknown accuracy, World., has ballpark transformation +- args: -s EPSG:4326 -t EPSG:32661 --normalize-axis-order -o PROJ -q --single-line + comment: "Undocumented option: --normalize-axis-order" + out: | + +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=stere +lat_0=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 +- args: -s EPSG:4936 -t EPSG:4978 --spatial-test intersects --summary + out: | + Candidate operations found: 2 + unknown id, Ballpark geocentric translation from ETRS89 to WGS 84, unknown accuracy, World, has ballpark transformation + INVERSE(EPSG):9225, Inverse of WGS 84 to ETRS89 (2), 0.1 m, Germany - offshore North Sea. Netherlands - offshore east of 5E. +- args: -s "+proj=longlat +datum=WGS84 +geoidgrids=@foo.gtx +type=crs" -t EPSG:4979 -o PROJ -q + out: | + +proj=pipeline + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=vgridshift +grids=@foo.gtx +multiplier=1 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 +- args: -s "AGD66" -t "WGS 84 (G1762)" --spatial-test intersects --summary + out: | + Candidate operations found: 19 + unknown id, AGD66 to WGS 84 (18) + WGS 84 to WGS 84 (G1762), 5 m, Australia - offshore including EEZ. + unknown id, AGD66 to WGS 84 (16) + WGS 84 to WGS 84 (G1762), 7 m, Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Tasmania; Western Australia; Victoria. + unknown id, AGD66 to WGS 84 (20) + WGS 84 to WGS 84 (G1762), 11 m, Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Tasmania; Western Australia; Victoria. + unknown id, AGD66 to WGS 84 (15) + WGS 84 to WGS 84 (G1762), 5 m, Australia - Northern Territory. + unknown id, AGD66 to WGS 84 (13) + WGS 84 to WGS 84 (G1762), 5 m, Australia - New South Wales and Victoria. + unknown id, AGD66 to WGS 84 (21) + WGS 84 to WGS 84 (G1762), 7 m, Papua New Guinea - mainland onshore. + unknown id, AGD66 to WGS 84 (14) + WGS 84 to WGS 84 (G1762), 5 m, Australia - Tasmania including islands - onshore. + unknown id, AGD66 to WGS 84 (19) + WGS 84 to WGS 84 (G1762), 4 m, Papua New Guinea - Papuan fold and thrust belt. + unknown id, AGD66 to WGS 84 (22) + WGS 84 to WGS 84 (G1762), 6 m, Papua New Guinea - Papuan fold and thrust belt. + unknown id, AGD66 to WGS 84 (23) + WGS 84 to WGS 84 (G1762), 6 m, Papua New Guinea - North Fly area (between 5°04'S and 6°36'S and west of 141°32'E). + unknown id, AGD66 to WGS 84 (12) + WGS 84 to WGS 84 (G1762), 5 m, Australia - Australian Capital Territory. + unknown id, AGD66 to GDA94 (11) + GDA94 to GDA2020 (2) + Conversion from GDA2020 (geog2D) to GDA2020 (geocentric) + GDA2020 to WGS 84 (G1762) (1) + Conversion from WGS 84 (G1762) (geocentric) to WGS 84 (G1762) (geog2D), 0.75 m, Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Tasmania; Western Australia; Victoria. + unknown id, AGD66 to GDA94 (12) + GDA94 to GDA2020 (2) + Conversion from GDA2020 (geog2D) to GDA2020 (geocentric) + GDA2020 to WGS 84 (G1762) (1) + Conversion from WGS 84 (G1762) (geocentric) to WGS 84 (G1762) (geog2D), 3.25 m, Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Tasmania; Western Australia; Victoria. + unknown id, AGD66 to WGS 84 (17) + WGS 84 to WGS 84 (G1762), 4.9 m, Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Tasmania; Western Australia; Victoria. + unknown id, AGD66 to GDA94 (9) + GDA94 to GDA2020 (2) + Conversion from GDA2020 (geog2D) to GDA2020 (geocentric) + GDA2020 to WGS 84 (G1762) (1) + Conversion from WGS 84 (G1762) (geocentric) to WGS 84 (G1762) (geog2D), 1.25 m, Australia - Northern Territory. + unknown id, AGD66 to GDA94 (4) + GDA94 to GDA2020 (2) + Conversion from GDA2020 (geog2D) to GDA2020 (geocentric) + GDA2020 to WGS 84 (G1762) (1) + Conversion from WGS 84 (G1762) (geocentric) to WGS 84 (G1762) (geog2D), 1.25 m, Australia - New South Wales and Victoria. + unknown id, AGD66 to GDA94 (8) + GDA94 to GDA2020 (2) + Conversion from GDA2020 (geog2D) to GDA2020 (geocentric) + GDA2020 to WGS 84 (G1762) (1) + Conversion from WGS 84 (G1762) (geocentric) to WGS 84 (G1762) (geog2D), 1.25 m, Australia - Tasmania including islands - onshore. + unknown id, AGD66 to GDA94 (19) + GDA94 to GDA2020 (2) + Conversion from GDA2020 (geog2D) to GDA2020 (geocentric) + GDA2020 to WGS 84 (G1762) (1) + Conversion from WGS 84 (G1762) (geocentric) to WGS 84 (G1762) (geog2D), 0.75 m, Australia - Australian Capital Territory. + unknown id, Ballpark geographic offset from AGD66 to WGS 84 (G1762), unknown accuracy, World, has ballpark transformation +- args: -s EPSG:31467 -t ETRS89 --spatial-test intersects --grid-check none --bbox 8,48,9,49 --summary + out: | + Candidate operations found: 4 + unknown id, Inverse of 3-degree Gauss-Kruger zone 3 + DHDN to ETRS89 (9), 0.1 m, Germany - Baden-Wurttemberg. + unknown id, Inverse of 3-degree Gauss-Kruger zone 3 + DHDN to ETRS89 (8), 0.9 m, Germany - onshore - states of Baden-Wurtemberg, Bayern, Berlin, Brandenburg, Bremen, Hamburg, Hessen, Mecklenburg-Vorpommern, Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Sachsen, Sachsen-Anhalt, Schleswig-Holstein, Thuringen. + unknown id, Inverse of 3-degree Gauss-Kruger zone 3 + DHDN to ETRS89 (3), 1 m, Germany - states of former West Germany - south of 50°20'N. + unknown id, Inverse of 3-degree Gauss-Kruger zone 3 + DHDN to ETRS89 (2), 3 m, Germany - states of former West Germany onshore - Baden-Wurtemberg, Bayern, Bremen, Hamburg, Hessen, Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Schleswig-Holstein. +- args: -s "GDA94" -t "AHD height" --grid-check none -o PROJ --spatial-test intersects + out: | + Candidate operations found: 1 + ------------------------------------- + Operation No. 1: + + DERIVED_FROM(EPSG):5656, GDA94 to AHD height (49), 0.15 m, Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Western Australia; Victoria. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +inv +proj=vgridshift +grids=au_ga_AUSGeoid09_V1.01.tif +multiplier=1 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 +- args: -s "GDA2020" -t "AHD height" --grid-check none -o PROJ --spatial-test intersects + out: | + Candidate operations found: 1 + ------------------------------------- + Operation No. 1: + + DERIVED_FROM(EPSG):8451, GDA2020 to AHD height (1), 0.15 m, Australia - Australian Capital Territory, New South Wales, Northern Territory, Queensland, South Australia, Tasmania, Western Australia and Victoria - onshore. Christmas Island - onshore. Cocos and Keeling Islands - onshore. + + PROJ string: + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +inv +proj=vgridshift +grids=au_ga_AUSGeoid2020_20180201.tif + +multiplier=1 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 +- args: -k ellipsoid WGS84 + out: | + PROJ string: + +ellps=WGS84 + + WKT2:2019 string: + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1], + ID["EPSG",7030]] +- args: -k ellipsoid EPSG:7030 + out: | + PROJ string: + +ellps=WGS84 + + WKT2:2019 string: + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1], + ID["EPSG",7030]] +- args: -k datum WGS84 + out: | + WKT2:2019 string: + DATUM["World Geodetic System 1984", + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1]], + ID["EPSG",6326]] +- args: -k datum EPSG:6326 + out: | + WKT2:2019 string: + DATUM["World Geodetic System 1984", + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1]], + ID["EPSG",6326]] +- args: -k ensemble WGS84 + out: | + WKT2:2019 string: + ENSEMBLE["World Geodetic System 1984 ensemble", + MEMBER["World Geodetic System 1984 (Transit)", + ID["EPSG",1166]], + MEMBER["World Geodetic System 1984 (G730)", + ID["EPSG",1152]], + MEMBER["World Geodetic System 1984 (G873)", + ID["EPSG",1153]], + MEMBER["World Geodetic System 1984 (G1150)", + ID["EPSG",1154]], + MEMBER["World Geodetic System 1984 (G1674)", + ID["EPSG",1155]], + MEMBER["World Geodetic System 1984 (G1762)", + ID["EPSG",1156]], + MEMBER["World Geodetic System 1984 (G2139)", + ID["EPSG",1309]], + MEMBER["World Geodetic System 1984 (G2296)", + ID["EPSG",1383]], + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1], + ID["EPSG",7030]], + ENSEMBLEACCURACY[2.0], + ID["EPSG",6326]] +- args: -k operation EPSG:8457 -o PROJ -q + out: | + +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=bessel + +step +proj=helmert +x=674.374 +y=15.056 +z=405.346 + +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 +- args: D_WGS_1984 + out: | + WKT2:2019 string: + ENSEMBLE["World Geodetic System 1984 ensemble", + MEMBER["World Geodetic System 1984 (Transit)", + ID["EPSG",1166]], + MEMBER["World Geodetic System 1984 (G730)", + ID["EPSG",1152]], + MEMBER["World Geodetic System 1984 (G873)", + ID["EPSG",1153]], + MEMBER["World Geodetic System 1984 (G1150)", + ID["EPSG",1154]], + MEMBER["World Geodetic System 1984 (G1674)", + ID["EPSG",1155]], + MEMBER["World Geodetic System 1984 (G1762)", + ID["EPSG",1156]], + MEMBER["World Geodetic System 1984 (G2139)", + ID["EPSG",1309]], + MEMBER["World Geodetic System 1984 (G2296)", + ID["EPSG",1383]], + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1], + ID["EPSG",7030]], + ENSEMBLEACCURACY[2.0], + ID["EPSG",6326]] +- args: -k datum D_WGS_1984 + out: | + WKT2:2019 string: + DATUM["World Geodetic System 1984", + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1]], + ID["EPSG",6326]] +- args: --searchpaths + comment: Hard to test content +- args: --remote-data + env: + PROJ_NETWORK: OFF + out: | + Status: disabled + Reason: not enabled in proj.ini or PROJ_NETWORK=ON not specified +- args: --remote-data + env: + PROJ_NETWORK: ON + comment: Hard to test content +- args: --accuracy 0.05 -s EPSG:4326 -t EPSG:4258 + out: | + Candidate operations found: 0 +###################### +# NZGD2000 -> ITRFxx # +###################### +- args: -s NZGD2000 -t ITRF96 -o PROJ -q --spatial-test intersects --hide-ballpark + out: | + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=defmodel +model=nz_linz_nzgd2000-20180701.json + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 +- args: -s NZGD2000 -t ITRF97 -o PROJ -q --spatial-test intersects --hide-ballpark + out: | + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=defmodel +model=nz_linz_nzgd2000-20000101.json + +step +proj=cart +ellps=GRS80 + +step +inv +proj=helmert +x=0 +y=-0.00051 +z=0.01553 +rx=-0.00016508 + +ry=0.00026897 +rz=5.984e-05 +s=-0.00151099 +dx=0.00069 +dy=-0.0001 + +dz=0.00186 +drx=-1.347e-05 +dry=1.514e-05 +drz=-2.7e-07 +ds=-0.00019201 + +t_epoch=2000 +convention=position_vector + +step +inv +proj=cart +ellps=GRS80 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 +- args: -s NZGD2000 -t ITRF2000 -o PROJ -q --spatial-test intersects --hide-ballpark + out: | + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=defmodel +model=nz_linz_nzgd2000-20000101.json + +step +proj=cart +ellps=GRS80 + +step +inv +proj=helmert +x=0.0067 +y=0.00379 +z=-0.00717 +rx=-0.00016508 + +ry=0.00026897 +rz=0.00011984 +s=6.901e-05 +dx=0.00069 +dy=-0.0007 + +dz=0.00046 +drx=-1.347e-05 +dry=1.514e-05 +drz=1.973e-05 +ds=-0.00018201 + +t_epoch=2000 +convention=position_vector + +step +inv +proj=cart +ellps=GRS80 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 +- args: -s NZGD2000 -t ITRF2005 -o PROJ -q --spatial-test intersects --hide-ballpark + out: | + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=defmodel +model=nz_linz_nzgd2000-20000101.json + +step +proj=cart +ellps=GRS80 + +step +inv +proj=helmert +x=0.0068 +y=0.00299 +z=-0.01297 +rx=-0.00016508 + +ry=0.00026897 +rz=0.00011984 +s=0.00046901 +dx=0.00049 +dy=-0.0006 + +dz=-0.00134 +drx=-1.347e-05 +dry=1.514e-05 +drz=1.973e-05 + +ds=-0.00010201 +t_epoch=2000 +convention=position_vector + +step +inv +proj=cart +ellps=GRS80 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 +- args: -s NZGD2000 -t ITRF2008 -o PROJ -q --spatial-test intersects --hide-ballpark + out: | + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=defmodel +model=nz_linz_nzgd2000-20171201.json + +step +proj=cart +ellps=GRS80 + +step +inv +proj=helmert +x=0.0048 +y=0.00209 +z=-0.01767 +rx=-0.00016508 + +ry=0.00026897 +rz=0.00011984 +s=0.00140901 +dx=0.00079 +dy=-0.0006 + +dz=-0.00134 +drx=-1.347e-05 +dry=1.514e-05 +drz=1.973e-05 + +ds=-0.00010201 +t_epoch=2000 +convention=position_vector + +step +inv +proj=cart +ellps=GRS80 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 +- args: -s NZGD2000 -t ITRF2014 -o PROJ -q --spatial-test intersects --hide-ballpark + out: | + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=defmodel +model=nz_linz_nzgd2000-20180701.json + +step +proj=cart +ellps=GRS80 + +step +inv +proj=helmert +x=0.0064 +y=0.00399 +z=-0.01427 +rx=-0.00016508 + +ry=0.00026897 +rz=0.00011984 +s=0.00108901 +dx=0.00079 +dy=-0.0006 + +dz=-0.00144 +drx=-1.347e-05 +dry=1.514e-05 +drz=1.973e-05 +ds=-7.201e-05 + +t_epoch=2000 +convention=position_vector + +step +inv +proj=cart +ellps=GRS80 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 +###################### +# Finland TINs +###################### +- args: -s "KKJ / Finland Uniform Coordinate System" -t "ETRS89 / TM35FIN(E,N)" --grid-check none -o PROJ -q + out: | + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=tinshift +file=fi_nls_ykj_etrs35fin.json +- args: -s KKJ -t ETRS89 -o PROJ --grid-check none -q + out: | + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl + +step +proj=tinshift +file=fi_nls_ykj_etrs35fin.json + +step +inv +proj=utm +zone=35 +ellps=GRS80 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 +- args: -s "KKJ + N43 height" -t "KKJ + N60 height" --grid-check none -o PROJ -q + out: | + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl + +step +proj=tinshift +file=fi_nls_n43_n60.json + +step +inv +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 +- args: -s "KKJ + N60 height" -t "KKJ + N2000 height" --grid-check none -o PROJ -q + out: | + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl + +step +proj=tinshift +file=fi_nls_n60_n2000.json + +step +inv +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 +# Advanced ! +- args: -s "KKJ + N43 height" -t "ETRS89 + N2000 height" --grid-check none -o PROJ -q + out: | + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=unitconvert +xy_in=deg +xy_out=rad + +step +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl + +step +proj=tinshift +file=fi_nls_n43_n60.json + +step +proj=tinshift +file=fi_nls_n60_n2000.json + +step +proj=tinshift +file=fi_nls_ykj_etrs35fin.json + +step +inv +proj=utm +zone=35 +ellps=GRS80 + +step +proj=unitconvert +xy_in=rad +xy_out=deg + +step +proj=axisswap +order=2,1 +# Advanced ! +- args: -s "KKJ / Finland Uniform Coordinate System + N43 height" -t "ETRS89 / TM35FIN(E,N) + N2000 height" --grid-check none -o PROJ -q + out: | + +proj=pipeline + +step +proj=axisswap +order=2,1 + +step +proj=tinshift +file=fi_nls_n43_n60.json + +step +proj=tinshift +file=fi_nls_n60_n2000.json + +step +proj=tinshift +file=fi_nls_ykj_etrs35fin.json +# Advanced ! +- args: -s "ETRS89 / TM35FIN(E,N) + N2000 height" -t "KKJ / Finland Uniform Coordinate System + N43 height" --grid-check none -o PROJ -q + out: | + +proj=pipeline + +step +inv +proj=tinshift +file=fi_nls_ykj_etrs35fin.json + +step +inv +proj=tinshift +file=fi_nls_n60_n2000.json + +step +inv +proj=tinshift +file=fi_nls_n43_n60.json + +step +proj=axisswap +order=2,1 +- comment: Quick check of NKG transformations + args: -s EPSG:7789 -t EPSG:4936 --area EPSG:1080 --summary --hide-ballpark + out: | + Candidate operations found: 1 + NKG:ITRF2014_TO_DK, ITRF2014 to ETRS89(DK), 0.01 m, Denmark - onshore and offshore. +- args: --dump-db-structure + head: 5 + out: | + CREATE TABLE metadata( + key TEXT NOT NULL PRIMARY KEY CHECK (length(key) >= 1), + value TEXT NOT NULL + ) WITHOUT ROWID; + CREATE TABLE unit_of_measure( +- args: --dump-db-structure --output-id HOBU:XXXX EPSG:4326 + tail: 4 + out: | + INSERT INTO metadata VALUES('DATABASE.LAYOUT.VERSION.MAJOR',1); + INSERT INTO metadata VALUES('DATABASE.LAYOUT.VERSION.MINOR',4); + INSERT INTO geodetic_crs VALUES('HOBU','XXXX','WGS 84','','geographic 2D','EPSG','6422','EPSG','6326',NULL,0); + INSERT INTO usage VALUES('HOBU','USAGE_GEODETIC_CRS_XXXX','geodetic_crs','HOBU','XXXX','EPSG','1262','EPSG','1183'); +- args: -s EPSG:23030 -t EPSG:25830 --bbox -6,40,-5,41 --grid-check known_available --hide-ballpark --summary + comment: > + Checks that ED50 to ETRS89 (12) is in the output + (superseded transformation, but replacements has unknown grid) + out: | + Candidate operations found: 2 + unknown id, Inverse of UTM zone 30N + ED50 to ETRS89 (12) + UTM zone 30N, 0.2 m, Spain - mainland, Balearic Islands, Ceuta and Melila - onshore. + unknown id, Inverse of UTM zone 30N + ED50 to ETRS89 (7) + UTM zone 30N, 1.5 m, Spain - onshore mainland except northwest (north of 41°30'N and west of 4°30'W). +- args: --list-crs + grep: EPSG:32632|ESRI:103668|OGC + out: | + EPSG:32632 "WGS 84 / UTM zone 32N" + ESRI:103668 "NAD_1983_HARN_Adj_MN_Ramsey_Meters" + OGC:CRS27 "NAD27 (CRS27)" + OGC:CRS83 "NAD83 (CRS83)" + OGC:CRS84 "WGS 84 (CRS84)" + OGC:CRS84h "WGS 84 longitude-latitude-height" +- args: --list-crs --authority OGC,EPSG + grep: EPSG:4326|OGC + out: | + OGC:CRS27 "NAD27 (CRS27)" + OGC:CRS83 "NAD83 (CRS83)" + OGC:CRS84 "WGS 84 (CRS84)" + OGC:CRS84h "WGS 84 longitude-latitude-height" + EPSG:4326 "WGS 84" +- args: --list-crs + grep: deprecated + sort: + out: +- args: --list-crs vertical --bbox 0,40,1,41 --spatial-test intersects + grep: Alicante|NAVD88 + sort: + out: EPSG:5782 "Alicante height" +- args: --list-crs vertical --bbox -10,35,5,45 --spatial-test contains + grep: Alicante|NAVD88 + sort: + out: EPSG:5782 "Alicante height" +- args: --list-crs --area Spain --spatial-test intersects + grep: EPSG:9505|EPSG:9398|EPSG:4258|EPSG:5703 + sort: + out: | + EPSG:4258 "ETRS89" + EPSG:9398 "Tenerife height" + EPSG:9505 "ETRS89 + Alicante height" +- args: --list-crs --area Spain --spatial-test contains + grep: EPSG:9505|EPSG:9398|EPSG:4258|EPSG:5703 + sort: + out: | + EPSG:9398 "Tenerife height" + EPSG:9505 "ETRS89 + Alicante height" +- args: --list-crs --area Spain + grep: EPSG:9505|EPSG:9398|EPSG:4258|EPSG:5703 + sort: + out: | + EPSG:9398 "Tenerife height" + EPSG:9505 "ETRS89 + Alicante height" +- args: --list-crs geodetic + grep: EPSG:4326|EPSG:4979|EPSG:4978 + sort: + out: | + EPSG:4326 "WGS 84" + EPSG:4978 "WGS 84" + EPSG:4979 "WGS 84" +- args: --list-crs geographic + grep: EPSG:4326|EPSG:4979|EPSG:4978 + sort: + out: | + EPSG:4326 "WGS 84" + EPSG:4979 "WGS 84" +- args: --list-crs geocentric,geographic_3d + grep: EPSG:4326|EPSG:4979|EPSG:4978 + sort: + out: | + EPSG:4978 "WGS 84" + EPSG:4979 "WGS 84" +- args: --list-crs geographic_2d,allow_deprecated --bbox -100,40,-90,41 --spatial-test intersects + grep: + - deprecated + - NAD83\(FBN\)|GCS_IGS08 + 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: + out: EPSG:6512 "NAD83(2011) / Missouri East" +- comment: Test case where --area has several matches + args: --list-crs projected --area France + grep: RGF93 v1 / Lambert-93|UTM zone 11N + sort: + out: EPSG:2154 "RGF93 v1 / Lambert-93" +- comment: > + Test North-Macedonia CRS for which there are several MGI 1901 -> WGS 84 Helmert + transformations but only one matches the extent of the CRS + args: EPSG:9945 -o PROJ -q + out: +proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=500000 +y_0=-4000000 +ellps=bessel +towgs84=521.748,229.489,590.921,4.029,4.488,-15.521,-9.78 +units=m +no_defs +type=crs +- args: -s "NAD83(CSRS)v7" --s_epoch 1997 -t "NAD83(CSRS)v7" --t_epoch 2010 --summary --hide-ballpark --spatial-test intersects + out: | + Candidate operations found: 1 + unknown id, Null geographic offset from NAD83(CSRS)v7 (geog2D) to NAD83(CSRS)v7 (geog3D) + Canada velocity grid v7 from epoch 1997 to epoch 2010 + Null geographic offset from NAD83(CSRS)v7 (geog3D) to NAD83(CSRS)v7 (geog2D), 0.01 m, Canada - onshore - Alberta; British Columbia (BC); Manitoba; New Brunswick (NB); Newfoundland and Labrador; Northwest Territories (NWT); Nova Scotia (NS); Nunavut; Ontario; Prince Edward Island (PEI); Quebec; Saskatchewan; Yukon. diff --git a/test/cli/test_projinfo_out.dist b/test/cli/test_projinfo_out.dist new file mode 100644 index 0000000000..f6ebd55c05 --- /dev/null +++ b/test/cli/test_projinfo_out.dist @@ -0,0 +1,34 @@ +############################################################## +Testing PROJ_AUX_DB environment variable +PROJ.4 string: ++proj=longlat +datum=WGS84 +no_defs +type=crs + +WKT2:2019 string: +GEOGCRS["WGS 84", + 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)"], + MEMBER["World Geodetic System 1984 (G2139)"], + MEMBER["World Geodetic System 1984 (G2296)"], + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1]], + ENSEMBLEACCURACY[2.0]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + USAGE[ + SCOPE["Horizontal component of 3D system."], + AREA["World."], + BBOX[-90,-180,90,180]], + ID["HOBU","XXXX"]] + diff --git a/test/cli/test_projsync b/test/cli/test_projsync.sh similarity index 98% rename from test/cli/test_projsync rename to test/cli/test_projsync.sh index d2c9bec0d4..0349854723 100755 --- a/test/cli/test_projsync +++ b/test/cli/test_projsync.sh @@ -1,20 +1,15 @@ -: +#!/bin/bash + # Test projsync -TEST_CLI_DIR=`dirname $0` -EXE=$1 - -usage() -{ - echo "Usage: ${0} " - echo - exit 1 -} +set -e +TEST_CLI_DIR=$(dirname $0) +EXE=$1 if test -z "${EXE}"; then - EXE=../../src/projsync + echo "Usage: ${0} " + exit 1 fi - if test ! -x ${EXE}; then echo "*** ERROR: Can not find '${EXE}' program!" exit 1 @@ -210,6 +205,7 @@ cat ${TMP_OUT} | grep "Skipping removed_in_1.7 as it is no longer useful startin cat ${TMP_OUT} | grep "Skipping added_in_99_99.tif as it is only useful starting with PROJ-data 99.99" >/dev/null || (cat ${TMP_OUT}; exit 100) cat ${TMP_OUT} | grep "Would download https://cdn.proj.org/without_version.tif" >/dev/null || (cat ${TMP_OUT}; exit 100) +# Cleanup rm -rf ${PROJ_USER_WRITABLE_DIRECTORY} rm ${TMP_OUT} diff --git a/test/cli/testcct b/test/cli/testcct deleted file mode 100755 index c3e90d82c1..0000000000 --- a/test/cli/testcct +++ /dev/null @@ -1,184 +0,0 @@ -: -# Test cct - -TEST_CLI_DIR=`dirname $0` -EXE=$1 - -usage() -{ - echo "Usage: ${0} " - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cct -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=testcct_out - -rm -f ${OUT} - -echo "Testing cct -d 8 +proj=merc +R=1" >> ${OUT} -echo "90 45" 0 | $EXE -d 8 +proj=merc +R=1 >>${OUT} -echo "" >>${OUT} - -# tests without specifying the number of decimals (by default: 10 for radians and degrees, 4 for meters) -echo "Testing echo 0.5 2 | cct -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad" >> ${OUT} -echo 0.5 2 | $EXE -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad >> ${OUT} - -echo "Testing echo 0.5 2 | cct -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=deg" >> ${OUT} -echo 0.5 2 | $EXE -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=deg >> ${OUT} - -echo "Testing echo 0.5 2 | cct -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=m +xy_out=km" >> ${OUT} -echo 0.5 2 | $EXE -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=m +xy_out=km >> ${OUT} -echo "" >> ${OUT} - -# tests for which the number of decimals has been specified (-d 6) -echo "Testing echo 0.5 2 | cct -d 6 -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad" >> ${OUT} -echo 0.5 2 | $EXE -d 6 -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad >> ${OUT} - -echo "Testing echo 0.5 2 | cct -d 6 -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=deg" >> ${OUT} -echo 0.5 2 | $EXE -d 6 -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=deg >> ${OUT} - -echo "Testing echo 0.5 2 | cct -d 6 -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=m +xy_out=km" >> ${OUT} -echo 0.5 2 | $EXE -d 6 -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=m +xy_out=km >> ${OUT} -echo "" >> ${OUT} - -echo "Test cct with object code initialization" >> ${OUT} -echo "3541657.3778 948984.2343 5201383.5231 2020.5" | $EXE EPSG:8366 >>${OUT} - -echo "Test cct with object that is not a CRS" >> ${OUT} -export NOT_A_TRANSFORMATION='GEOGCRS["WGS 84",DATUM["World Geodetic System 1984 (G2139)",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ANGLEUNIT["degree",0.0174532925199433]]]' -echo "0 0 0" | $EXE "$NOT_A_TRANSFORMATION" >>${OUT} 2>&1 - -echo "Test cct with object name initialization" >> ${OUT} -echo "3541657.3778 948984.2343 5201383.5231 2020.5" | $EXE "ITRF2014 to ETRF2014 (1)" >>${OUT} - -echo "Test cct with object code initialization and file input" >> ${OUT} -echo "3541657.3778 948984.2343 5201383.5231 2020.5" > a -echo "3541658.0000 948985.0000 5201384.0000 2020.5" > b -$EXE EPSG:8366 a b >>${OUT} -/bin/rm a b - -cat > in.wkt <> ${OUT} -echo "3541657.3778 948984.2343 5201383.5231 2020.5" | $EXE @in.wkt >>${OUT} -rm in.wkt - -echo "Test cct with input file with UTF-8 BOM marker" >> ${OUT} -$EXE +proj=noop ${TEST_CLI_DIR}/input_with_utf8_bom.txt >> ${OUT} - -# do 'diff' with distribution results -echo "diff ${OUT} with testcct_out.dist" -diff -u ${OUT} ${TEST_CLI_DIR}/testcct_out.dist -if [ $? -ne 0 ] ; then - echo "" - echo "PROBLEMS HAVE OCCURRED" - echo "test file ${OUT} saved" - echo - exit 100 -else - echo "TEST OK" - echo "test file ${OUT} removed" - echo - /bin/rm -f ${OUT} - exit 0 -fi diff --git a/test/cli/testcct_out.dist b/test/cli/testcct_out.dist deleted file mode 100644 index e7c1270c01..0000000000 --- a/test/cli/testcct_out.dist +++ /dev/null @@ -1,30 +0,0 @@ -Testing cct -d 8 +proj=merc +R=1 - 1.57079633 0.88137359 0.00000000 inf - -Testing echo 0.5 2 | cct -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad - 0.5000000000 2.0000000000 0.0000 0.0000 -Testing echo 0.5 2 | cct -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=deg - 0.5000000000 2.0000000000 0.0000 0.0000 -Testing echo 0.5 2 | cct -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=m +xy_out=km - 0.0005 0.0020 0.0000 0.0000 - -Testing echo 0.5 2 | cct -d 6 -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad - 0.500000 2.000000 0.000000 0.0000 -Testing echo 0.5 2 | cct -d 6 -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=deg - 0.500000 2.000000 0.000000 0.0000 -Testing echo 0.5 2 | cct -d 6 -z 0 -t 0 +proj=pipeline +step +proj=unitconvert +xy_in=m +xy_out=km - 0.000500 0.002000 0.000000 0.0000 - -Test cct with object code initialization - 3541657.9112 948983.7503 5201383.2482 2020.5000 -Test cct with object that is not a CRS -cct: Input object is not a coordinate operation, but a CRS. -Test cct with object name initialization - 3541657.9112 948983.7503 5201383.2482 2020.5000 -Test cct with object code initialization and file input - 3541657.9112 948983.7503 5201383.2482 2020.5000 - 3541658.5334 948984.5160 5201383.7251 2020.5000 -Test cct with WKT in a file - 3541657.9112 948983.7503 5201383.2482 2020.5000 -Test cct with input file with UTF-8 BOM marker - 0.0000 3.0000 0.0000 inf diff --git a/test/cli/testdatumfile b/test/cli/testdatumfile deleted file mode 100755 index a155520d79..0000000000 --- a/test/cli/testdatumfile +++ /dev/null @@ -1,170 +0,0 @@ -: -# Script to do some testing of various transformations depending on datum -# files that are not always available. -# -# -TEST_CLI_DIR=`dirname $0` -EXE=$1 - -usage() -{ - echo "Usage: ${0} " - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -mkdir "dir with \" space" -if test -f "${PROJ_DATA}/conus"; then - cp "${PROJ_DATA}/conus" "dir with \" space/myconus" -else - cp "`dirname $0`/../../data/conus" "dir with \" space/myconus" -fi - -OUT=td_out -#EXE=../src/cs2cs -# -echo "doing tests into file ${OUT}, please wait" -rm -f ${OUT} -# -echo "##############################################################" >> ${OUT} -echo 1st through ntv1, 2nd through conus >> ${OUT} -# -$EXE +proj=latlong +ellps=clrk66 +nadgrids=ntv1_can.dat,conus \ - +to +proj=latlong +datum=NAD83 \ - -E >>${OUT} <> ${OUT} -echo As above, but without ntv1 everything goes through conus file. >> ${OUT} -# -$EXE +proj=latlong +ellps=clrk66 '+nadgrids="./dir with "" space/myconus"' \ - +to +proj=latlong +datum=NAD83 \ - -E >>${OUT} <> ${OUT} -echo "Test --bbox -141.01,40.04,-47.74,83.17 NAD27 NAD83 (using NTv2)" >> ${OUT} -$EXE --bbox -141.01,40.04,-47.74,83.17 NAD27 NAD83 >>${OUT} <> ${OUT} -echo "Test --area \"USA - CONUS including EEZ\" NAD27 NAD83 (using conus)" >> ${OUT} -$EXE --area "USA - CONUS including EEZ" NAD27 NAD83 >>${OUT} <> ${OUT} -echo Test MD used where available >> ${OUT} -# -$EXE +proj=latlong +ellps=clrk66 +nadgrids=MD,conus \ - +to +proj=latlong +datum=NAD83 \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test that we use grid shift files even if we are right on the" >> ${OUT} -echo "edge or even a wee bit outside (#141)." >> ${OUT} -# -# Our test points are (1) right on mesh corner, (2) outside but within -# epsilon (3) inside a bit (4) outside by more than epsilon -# -$EXE +proj=latlong +ellps=WGS84 +nadgrids=ntf_r93.gsb,null \ - +to +proj=latlong +datum=WGS84 \ - -E -f "%.12f" >>${OUT} <>${OUT} <> ${OUT} -echo "NAD27 -> NAD83: 1st through ntv1 or ntv2, 2nd through conus" >> ${OUT} -# -$EXE NAD27 NAD83 -E -f "%.4f" >>${OUT} <> ${OUT} -echo "WGS84 (2D) -> WGS84+EGM96" >> ${OUT} -# -$EXE +init=epsg:4326 +to +init=epsg:4326 +geoidgrids=egm96_15.gtx -E >>${OUT} <> ${OUT} -echo "WGS84 (3D) -> WGS84+EGM96" >> ${OUT} -# -$EXE +init=epsg:4979 +to +init=epsg:4326 +geoidgrids=egm96_15.gtx -E >>${OUT} <> ${OUT} -echo "WGS84 (2D), promoted to 3D -> WGS84+EGM96" >> ${OUT} -# -$EXE --3d +init=epsg:4326 +to +init=epsg:4326 +geoidgrids=egm96_15.gtx -E >>${OUT} <" - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=tf_out -#EXE=../src/cs2cs -# -echo "doing tests into file ${OUT}, please wait" -rm -f ${OUT} -# -echo "Test healpix inverse projection on sphere" >> ${OUT} -$EXE +proj=latlong +a=1 +lon_0=0 \ - +to +proj=healpix +a=1 +lon_0=0 -f '%.'5'f' -I\ - -E >>${OUT} <>${OUT} <" - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/invproj -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -if test -z "${PROJ_DATA}"; then - export PROJ_DATA="`dirname $0`/../../data" -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=testinvproj_out -# -echo "doing tests into file ${OUT}, please wait" -# -$EXE +proj=tmerc +ellps=GRS80 -E -f '%.3f' >${OUT} <" - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=ntv2_out -#EXE=../src/cs2cs -# -echo "doing tests into file ${OUT}, please wait" -rm -f ${OUT} -# -echo "##############################################################" >> ${OUT} -echo Point in the ONwinsor subgrid. >> ${OUT} -# -$EXE +proj=latlong +ellps=clrk66 +nadgrids=ntv2_0.gsb \ - +to +proj=latlong +datum=NAD83 -E -w4 >>${OUT} <> ${OUT} -echo Try with NTv2 and NTv1 together ... falls back to NTv1 >> ${OUT} -# -$EXE +proj=latlong +ellps=clrk66 +nadgrids=ntv2_0.gsb,ntv1_can.dat,conus \ - +to +proj=latlong +datum=NAD83 -E -w4 >>${OUT} <> ${OUT} -echo Switching between NTv2 subgrids >> ${OUT} -# Initial guess is in ALraymnd, going to parent CAwest afterwards -$EXE +proj=latlong +datum=NAD83 +to +proj=latlong +ellps=clrk66 +nadgrids=ntv2_0.gsb -E -d 8 >>${OUT} <> ${OUT} -echo "Interpolating very close (and sometimes a bit outside) to the edges a NTv2 subgrid (#209)" >> ${OUT} -$EXE +proj=latlong +datum=NAD83 +to +proj=latlong +ellps=clrk66 +nadgrids=ntv2_0.gsb -E -d 8 >>${OUT} <> ${OUT} -echo Attempt first with ntv2_0.gsb and then conus >> ${OUT} -$EXE +proj=longlat +datum=NAD27 +to +proj=longlat +datum=WGS84 -E -d 8 >>${OUT} <> ${OUT} -echo "NAD27 -> NAD83: 1st through ntv2, 2nd through conus" >> ${OUT} -# -$EXE NAD27 NAD83 -E >>${OUT} <" - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/proj -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -if test -z "${PROJ_DATA}"; then - export PROJ_DATA="`dirname $0`/../../data" -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=testproj_out -# -echo "doing tests into file ${OUT}, please wait" -# -$EXE +ellps=WGS84 +proj=ob_tran +o_proj=latlon +o_lon_p=0.0 +o_lat_p=90.0 +lon_0=360.0 +to_meter=0.0174532925199433 +no_defs -E -f '%.3f' >${OUT} <>${OUT} <>${OUT} <>${OUT} < ${OUT}.tmp -mv ${OUT}.tmp ${OUT} - -# -# do 'diff' with distribution results -echo "diff ${OUT} with testproj_out.dist" -diff -u -b ${OUT} ${TEST_CLI_DIR}/testproj_out.dist -if [ $? -ne 0 ] ; then - echo "" - echo "PROBLEMS HAVE OCCURRED" - echo "test file ${OUT} saved" - echo - exit 100 -else - echo "TEST OK" - echo "test file ${OUT} removed" - echo - /bin/rm -f ${OUT} - exit 0 -fi diff --git a/test/cli/testproj_out.dist b/test/cli/testproj_out.dist deleted file mode 100644 index f7b6036a8a..0000000000 --- a/test/cli/testproj_out.dist +++ /dev/null @@ -1,4 +0,0 @@ -2 49 2.000 49.000 -500000.00 0.00 <0.9996 0.9996 0.9992 0 0.9996 0.9996> -600000.00 1200000.00 <0.999877 0.999877 0.999755 0 0.999877 0.999877> -500000.00 0.00 <0.9996 0.9996 0.9992 0 0.9996 0.9996> diff --git a/test/cli/testprojinfo b/test/cli/testprojinfo deleted file mode 100755 index 2188b19c34..0000000000 --- a/test/cli/testprojinfo +++ /dev/null @@ -1,412 +0,0 @@ -: -# Test projinfo - -TEST_CLI_DIR=`dirname $0` -EXE=$1 - -usage() -{ - echo "Usage: ${0} " - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/projinfo -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=testprojinfo_out - -rm -f ${OUT} - -export PROJINFO_NO_GRID_CHECK=YES - -echo "Testing projinfo EPSG:4326" >> ${OUT} -$EXE EPSG:4326 >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo -o WKT1_GDAL EPSG:4326" >> ${OUT} -$EXE -o WKT1_GDAL EPSG:4326 >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo -o WKT2_2015 EPSG:4326" >> ${OUT} -$EXE -o WKT2_2015 EPSG:4326 >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo -o WKT2_2019 EPSG:4326" >> ${OUT} -$EXE -o WKT2_2019 EPSG:4326 >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo -o ALL EPSG:4326" >> ${OUT} -$EXE -o ALL EPSG:4326 >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo \"+proj=merc +lat_ts=5 +datum=WGS84 +type=crs\" --output-id HOBU:MY_CRS -o SQL -q" >> ${OUT} -$EXE "+proj=merc +lat_ts=5 +datum=WGS84 +type=crs" --output-id HOBU:MY_CRS -o SQL -q >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo \"+proj=merc +lat_ts=5 +datum=WGS84 +type=crs\" --output-id HOBU:MY_CRS --authority HOBU -o SQL -q" >> ${OUT} -$EXE "+proj=merc +lat_ts=5 +datum=WGS84 +type=crs" --output-id HOBU:MY_CRS --authority HOBU -o SQL -q >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo -s EPSG:4326 -t EPSG:32631 --single-line" >> ${OUT} -$EXE -s EPSG:4326 -t EPSG:32631 --single-line >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo --source-crs NAD27 --target-crs NAD83" >> ${OUT} -$EXE --source-crs NAD27 --target-crs NAD83 >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo -s NAD27 -t NAD83 --grid-check none --spatial-test intersects --summary --hide-ballpark" >> ${OUT} -$EXE -s NAD27 -t NAD83 --grid-check none --spatial-test intersects --summary --hide-ballpark >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo -s NAD27 -t NAD83 --grid-check none --spatial-test intersects" >> ${OUT} -$EXE -s NAD27 -t NAD83 --grid-check none --spatial-test intersects >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo -s EPSG:4230 -t EPSG:4258 --bbox 8,54.51,15.24,57.8 --summary" >> ${OUT} -$EXE -s EPSG:4230 -t EPSG:4258 --bbox 8,54.51,15.24,57.8 --summary >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo -s EPSG:23031 -t EPSG:4326 --bbox -13.87,34.91,-7.24,41.88 --crs-extent-use none --summary" >> ${OUT} -$EXE -s EPSG:23031 -t EPSG:4326 --bbox -13.87,34.91,-7.24,41.88 --crs-extent-use none --summary >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo -s EPSG:4230 -t EPSG:4258 --area EPSG:3237 --summary" >> ${OUT} -$EXE -s EPSG:4230 -t EPSG:4258 --area EPSG:3237 --summary >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo -s EPSG:4230 -t EPSG:4258 --area 'Denmark - onshore' --summary" >> ${OUT} -$EXE -s EPSG:4230 -t EPSG:4258 --area 'Denmark - onshore' --summary >>${OUT} -echo "" >>${OUT} - -# several match -echo "Testing projinfo -s EPSG:4230 -t EPSG:4258 --area 'Denmark -' --summary" >> ${OUT} -$EXE -s EPSG:4230 -t EPSG:4258 --area 'Denmark -' --summary >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing projinfo -s EPSG:4230 -t EPSG:4258 --area no_match --summary" >> ${OUT} -$EXE -s EPSG:4230 -t EPSG:4258 --area no_match --summary >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing projinfo -s EPSG:4230 -t EPSG:4258 --area WRONG:CODE --summary" >> ${OUT} -$EXE -s EPSG:4230 -t EPSG:4258 --area WRONG:CODE --summary >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing deprecated CRS: projinfo EPSG:26591" >> ${OUT} -$EXE EPSG:26591 >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing non compliant WKT1" >> ${OUT} -$EXE 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563]],UNIT["degree",0.0174532925199433]]' >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing CRS with towgs84: projinfo -o PROJ EPSG:25832" >> ${OUT} -$EXE -o PROJ EPSG:25832 >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing RH2000 height to SWEREF99: projinfo -s EPSG:5613 -t EPSG:4977" >> ${OUT} -$EXE -s EPSG:5613 -t EPSG:4977 >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing NAD83(2011) + NAVD88 height -> NAD83(2011) : projinfo -s EPSG:6349 -t EPSG:6319 --spatial-test intersects -o PROJ" >> ${OUT} -$EXE -s EPSG:6349 -t EPSG:6319 --spatial-test intersects -o PROJ >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing NGF IGN69 height to RGF93: projinfo -s EPSG:5720 -t EPSG:4965 -o PROJ" >> ${OUT} -$EXE -s EPSG:5720 -t EPSG:4965 -o PROJ >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing EPSG:32631 --3d" >> ${OUT} -$EXE EPSG:32631 --3d >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing -s "WGS 84" -t "WGS 84 + EGM96 height" --hide-ballpark --summary" >> ${OUT} -$EXE -s "WGS 84" -t "WGS 84 + EGM96 height" --hide-ballpark --summary >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing -s "WGS 84 + EGM96 height" -t "WGS 84" --hide-ballpark --summary" >> ${OUT} -$EXE -s "WGS 84 + EGM96 height" -t "WGS 84" --hide-ballpark --summary >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing -s EPSG:32631 -t EPSG:4326+3855 --summary" >> ${OUT} -$EXE -s EPSG:32631 -t EPSG:4326+3855 --summary >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing -s EPSG:32631 -t EPSG:4326+3855 --3d --summary" >> ${OUT} -$EXE -s EPSG:32631 -t EPSG:4326+3855 --3d --summary >>${OUT} 2>&1 -echo "" >>${OUT} - -# Undocumented option: --normalize-axis-order -echo "Testing -s EPSG:4326 -t EPSG:32661 --normalize-axis-order -o PROJ -q --single-line" >> ${OUT} -$EXE -s EPSG:4326 -t EPSG:32661 --normalize-axis-order -o PROJ -q --single-line >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing -s EPSG:4936 -t EPSG:4978 --spatial-test intersects --summary where WGS 84 to ETRS89 (2) uses a transformation method not supported by PROJ currently (time-specific Helmert), and thus must be sorted last" >> ${OUT} -$EXE -s EPSG:4936 -t EPSG:4978 --spatial-test intersects --summary >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing -s "+proj=longlat +datum=WGS84 +geoidgrids=@foo.gtx +type=crs" -t EPSG:4979 -o PROJ -q" >> ${OUT} -$EXE -s "+proj=longlat +datum=WGS84 +geoidgrids=@foo.gtx +type=crs" -t EPSG:4979 -o PROJ -q >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -s "AGD66" -t "WGS 84 (G1762)" --spatial-test intersects --summary. Should include a transformation through GDA2020' >> ${OUT} -$EXE -s "AGD66" -t "WGS 84 (G1762)" --spatial-test intersects --summary >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -s EPSG:31467 -t ETRS89 --spatial-test intersects --grid-check none --bbox 8,48,9,49 --summary. Should include both DHDN to ETRS89 (8) and DHDN to ETRS89 (BWTA2017)' >> ${OUT} -$EXE -s EPSG:31467 -t ETRS89 --spatial-test intersects --grid-check none --bbox 8,48,9,49 --summary >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -s "GDA94" -t "AHD height" --grid-check none -o PROJ --spatial-test intersects' >> ${OUT} -$EXE -s "GDA94" -t "AHD height" --grid-check none -o PROJ --spatial-test intersects >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -s "GDA2020" -t "AHD height" --grid-check none -o PROJ --spatial-test intersects' >> ${OUT} -$EXE -s "GDA2020" -t "AHD height" --grid-check none -o PROJ --spatial-test intersects >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -k ellipsoid WGS84' >> ${OUT} -$EXE -k ellipsoid WGS84 >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -k ellipsoid EPSG:7030' >> ${OUT} -$EXE -k ellipsoid EPSG:7030 >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -k datum WGS84' >> ${OUT} -$EXE -k datum WGS84 >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -k datum EPSG:6326' >> ${OUT} -$EXE -k datum EPSG:6326 >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -k ensemble WGS84' >> ${OUT} -$EXE -k ensemble WGS84 >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -k operation EPSG:8457 -o PROJ -q' >> ${OUT} -$EXE -k operation EPSG:8457 -o PROJ -q >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing D_WGS_1984' >> ${OUT} -$EXE D_WGS_1984 >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -k datum D_WGS_1984' >> ${OUT} -$EXE -k datum D_WGS_1984 >>${OUT} 2>&1 -echo "" >>${OUT} - -# Testing --searchpaths -if ! $EXE --searchpaths > testprojinfo_out_searchpaths.txt; then - echo "--searchpaths failed" - exit 100 -fi -# Hard to test content of testprojinfo_out_searchpaths.txt -rm testprojinfo_out_searchpaths.txt - -# Testing --remote-data -if ! $EXE --remote-data > testprojinfo_out_remotedata.txt; then - echo "--remote-data failed" - exit 100 -fi -# Hard to test content of testprojinfo_out_remotedata.txt -rm testprojinfo_out_remotedata.txt - -# Testing --remote-data -export PROJ_NETWORK=ON -if ! $EXE --remote-data > testprojinfo_out_remotedata.txt; then - echo "--remote-data failed" - exit 100 -fi -# Hard to test content of testprojinfo_out_remotedata.txt -rm testprojinfo_out_remotedata.txt -unset PROJ_NETWORK - -echo 'Testing --accuracy 0.05 -s EPSG:4326 -t EPSG:4258' >> ${OUT} -$EXE --accuracy 0.05 -s EPSG:4326 -t EPSG:4258 >>${OUT} 2>&1 -echo "" >>${OUT} - -###################### -# NZGD2000 -> ITRFxx # -###################### -echo 'Testing -s NZGD2000 -t ITRF96 -o PROJ -q --spatial-test intersects --hide-ballpark' >> ${OUT} -$EXE -s NZGD2000 -t ITRF96 -o PROJ -q --spatial-test intersects --hide-ballpark >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -s NZGD2000 -t ITRF97 -o PROJ -q --spatial-test intersects --hide-ballpark' >> ${OUT} -$EXE -s NZGD2000 -t ITRF97 -o PROJ -q --spatial-test intersects --hide-ballpark >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -s NZGD2000 -t ITRF2000 -o PROJ -q --spatial-test intersects --hide-ballpark' >> ${OUT} -$EXE -s NZGD2000 -t ITRF2000 -o PROJ -q --spatial-test intersects --hide-ballpark >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -s NZGD2000 -t ITRF2005 -o PROJ -q --spatial-test intersects --hide-ballpark' >> ${OUT} -$EXE -s NZGD2000 -t ITRF2005 -o PROJ -q --spatial-test intersects --hide-ballpark >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -s NZGD2000 -t ITRF2008 -o PROJ -q --spatial-test intersects --hide-ballpark' >> ${OUT} -$EXE -s NZGD2000 -t ITRF2008 -o PROJ -q --spatial-test intersects --hide-ballpark >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -s NZGD2000 -t ITRF2014 -o PROJ -q --spatial-test intersects --hide-ballpark' >> ${OUT} -$EXE -s NZGD2000 -t ITRF2014 -o PROJ -q --spatial-test intersects --hide-ballpark >>${OUT} 2>&1 -echo "" >>${OUT} - -###################### -# Finland TINs -###################### - -echo 'Testing -s "KKJ / Finland Uniform Coordinate System" -t "ETRS89 / TM35FIN(E,N)" --grid-check none -o PROJ -q' >> ${OUT} -$EXE -s "KKJ / Finland Uniform Coordinate System" -t "ETRS89 / TM35FIN(E,N)" --grid-check none -o PROJ -q >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -s KKJ -t ETRS89 -o PROJ --grid-check none -q' >> ${OUT} -$EXE -s KKJ -t ETRS89 -o PROJ --grid-check none -q >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -s "KKJ + N43 height" -t "KKJ + N60 height" --grid-check none -o PROJ -q' >> ${OUT} -$EXE -s "KKJ + N43 height" -t "KKJ + N60 height" --grid-check none -o PROJ -q >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing -s "KKJ + N60 height" -t "KKJ + N2000 height" --grid-check none -o PROJ -q' >> ${OUT} -$EXE -s "KKJ + N60 height" -t "KKJ + N2000 height" --grid-check none -o PROJ -q >>${OUT} 2>&1 -echo "" >>${OUT} - -# Advanced ! -echo 'Testing -s "KKJ + N43 height" -t "ETRS89 + N2000 height" --grid-check none -o PROJ -q' >> ${OUT} -$EXE -s "KKJ + N43 height" -t "ETRS89 + N2000 height" --grid-check none -o PROJ -q >>${OUT} 2>&1 -echo "" >>${OUT} - -# Advanced ! -echo 'Testing -s "KKJ / Finland Uniform Coordinate System + N43 height" -t "ETRS89 / TM35FIN(E,N) + N2000 height" --grid-check none -o PROJ -q' >> ${OUT} -$EXE -s "KKJ / Finland Uniform Coordinate System + N43 height" -t "ETRS89 / TM35FIN(E,N) + N2000 height" --grid-check none -o PROJ -q >>${OUT} 2>&1 -echo "" >>${OUT} - -# Advanced ! -echo 'Testing -s "ETRS89 / TM35FIN(E,N) + N2000 height" -t "KKJ / Finland Uniform Coordinate System + N43 height" --grid-check none -o PROJ -q' >> ${OUT} -$EXE -s "ETRS89 / TM35FIN(E,N) + N2000 height" -t "KKJ / Finland Uniform Coordinate System + N43 height" --grid-check none -o PROJ -q >>${OUT} 2>&1 -echo "" >>${OUT} - -# Quick check of NKG transformations -echo 'Testing NKG: -s EPSG:7789 -t EPSG:4936 --area EPSG:1080 --summary --hide-ballpark' >> ${OUT} -$EXE -s EPSG:7789 -t EPSG:4936 --area EPSG:1080 --summary --hide-ballpark >>${OUT} 2>&1 -echo "" >>${OUT} - -echo "Testing projinfo --dump-db-structure | head -n 5" >> ${OUT} -$EXE --dump-db-structure | head -n 5 >>${OUT} -echo "" >>${OUT} - -echo "Testing projinfo --dump-db-structure --output-id HOBU:XXXX EPSG:4326 | tail -n 4" >> ${OUT} -$EXE --dump-db-structure --output-id HOBU:XXXX EPSG:4326 | tail -n 4 >>${OUT} -echo "" >>${OUT} - -echo "Testing PROJ_AUX_DB environment variable" >> ${OUT} -rm -f tmp_projinfo_aux.db -$EXE --dump-db-structure --output-id HOBU:XXXX EPSG:4326 | sqlite3 tmp_projinfo_aux.db -export PROJ_AUX_DB=tmp_projinfo_aux.db -$EXE HOBU:XXXX >>${OUT} -unset PROJ_AUX_DB -rm -f tmp_projinfo_aux.db -echo "" >>${OUT} - -echo 'Testing -s EPSG:23030 -t EPSG:25830 --bbox -6,40,-5,41 --grid-check known_available --hide-ballpark --summary' >> ${OUT} -echo 'Checks that ED50 to ETRS89 (12) is in the output (superseded transformation, but replacements has unknown grid)' >> ${OUT} -$EXE -s EPSG:23030 -t EPSG:25830 --bbox -6,40,-5,41 --grid-check known_available --hide-ballpark --summary >>${OUT} 2>&1 -echo "" >>${OUT} - -echo 'Testing --list-crs | grep "EPSG:32632\|ESRI:103668\|OGC"' >> ${OUT} -$EXE --list-crs | grep "EPSG:32632\|ESRI:103668\|OGC" >> ${OUT} -echo "" >>${OUT} - -echo 'Testing --list-crs --authority OGC,EPSG | grep "EPSG:4326\|OGC"' >> ${OUT} -$EXE --list-crs --authority OGC,EPSG | grep "EPSG:4326\|OGC" >> ${OUT} -echo "" >>${OUT} - -echo 'Testing --list-crs | grep deprecated | sort' >> ${OUT} -$EXE --list-crs | grep deprecated | sort >> ${OUT} -echo "" >>${OUT} - -echo 'Testing --list-crs vertical --bbox 0,40,1,41 --spatial-test intersects | grep "Alicante\|NAVD88" | sort' >> ${OUT} -$EXE --list-crs vertical --bbox 0,40,1,41 --spatial-test intersects | grep "Alicante\|NAVD88" | sort >> ${OUT} -echo "" >>${OUT} - -echo 'Testing --list-crs vertical --bbox -10,35,5,45 --spatial-test contains | grep "Alicante\|NAVD88" | sort' >> ${OUT} -$EXE --list-crs vertical --bbox -10,35,5,45 --spatial-test contains | grep "Alicante\|NAVD88" | sort >> ${OUT} -echo "" >>${OUT} - -echo 'Testing --list-crs --area Spain --spatial-test intersects | grep "EPSG:9505\|EPSG:9398\|EPSG:4258\|EPSG:5703" | sort' >> ${OUT} -$EXE --list-crs --area Spain --spatial-test intersects | grep "EPSG:9505\|EPSG:9398\|EPSG:4258\|EPSG:5703" | sort >> ${OUT} -echo "" >>${OUT} - -echo 'Testing --list-crs --area Spain --spatial-test contains | grep "EPSG:9505\|EPSG:9398\|EPSG:4258\|EPSG:5703" | sort' >> ${OUT} -$EXE --list-crs --area Spain --spatial-test contains | grep "EPSG:9505\|EPSG:9398\|EPSG:4258\|EPSG:5703" | sort >> ${OUT} -echo "" >>${OUT} - -echo 'Testing --list-crs --area Spain | grep "EPSG:9505\|EPSG:9398\|EPSG:4258\|EPSG:5703" | sort' >> ${OUT} -$EXE --list-crs --area Spain | grep "EPSG:9505\|EPSG:9398\|EPSG:4258\|EPSG:5703" | sort >> ${OUT} -echo "" >>${OUT} - -echo 'Testing --list-crs geodetic | grep "EPSG:4326\|EPSG:4979\|EPSG:4978" | sort' >> ${OUT} -$EXE --list-crs geodetic | grep "EPSG:4326\|EPSG:4979\|EPSG:4978" | sort >> ${OUT} -echo "" >>${OUT} - -echo 'Testing --list-crs geographic | grep "EPSG:4326\|EPSG:4979\|EPSG:4978" | sort' >> ${OUT} -$EXE --list-crs geographic | grep "EPSG:4326\|EPSG:4979\|EPSG:4978" | sort >> ${OUT} -echo "" >>${OUT} - -echo 'Testing --list-crs geocentric,geographic_3d | grep "EPSG:4326\|EPSG:4979\|EPSG:4978" | sort' >> ${OUT} -$EXE --list-crs geocentric,geographic_3d | grep "EPSG:4326\|EPSG:4979\|EPSG:4978" | sort >> ${OUT} -echo "" >>${OUT} - -echo 'Testing --list-crs geographic_2d,allow_deprecated --bbox -100,40,-90,41 --spatial-test intersects | grep deprecated | grep "NAD83(FBN)\|GCS_IGS08" | sort' >> ${OUT} -$EXE --list-crs geographic_2d,allow_deprecated --bbox -100,40,-90,41 --spatial-test intersects | grep deprecated | grep "NAD83(FBN)\|GCS_IGS08" | sort >> ${OUT} -echo "" >>${OUT} - -echo 'Testing --list-crs projected --bbox -100,40,-90,41 --spatial-test intersects | grep "(2011).*Missouri East\|York" | sort' >> ${OUT} -$EXE --list-crs projected --bbox -100,40,-90,41 --spatial-test intersects | grep "(2011).*Missouri East\|York" | sort >> ${OUT} -echo "" >>${OUT} - -# Test case where --area has several matches -echo 'Testing --list-crs projected --area France | grep "RGF93 v1 / Lambert-93\|UTM zone 11N" | sort' >> ${OUT} -$EXE --list-crs projected --area France | grep "RGF93 v1 / Lambert-93\|UTM zone 11N" | sort >> ${OUT} -echo "" >>${OUT} - -# Test North-Macedonia CRS for which there are several MGI 1901 -> WGS 84 Helmert transformations -# but only one matches the extent of the CRS -echo 'Testing EPSG:9945 -o PROJ -q' >> ${OUT} -$EXE EPSG:9945 -o PROJ -q >> ${OUT} -echo "" >>${OUT} - -echo 'Testing -s "NAD83(CSRS)v7" --s_epoch 1997 -t "NAD83(CSRS)v7" --t_epoch 2010 --summary --hide-ballpark --spatial-test intersects' >> ${OUT} -$EXE -s "NAD83(CSRS)v7" --s_epoch 1997 -t "NAD83(CSRS)v7" --t_epoch 2010 --summary --hide-ballpark --spatial-test intersects >> ${OUT} -echo "" >>${OUT} - -# do 'diff' with distribution results -echo "diff ${OUT} with testprojinfo_out.dist" -diff -u ${OUT} ${TEST_CLI_DIR}/testprojinfo_out.dist -if [ $? -ne 0 ] ; then - echo "" - echo "PROBLEMS HAVE OCCURRED" - echo "test file ${OUT} saved" - echo - exit 100 -else - echo "TEST OK" - echo "test file ${OUT} removed" - echo - /bin/rm -f ${OUT} - exit 0 -fi diff --git a/test/cli/testprojinfo_out.dist b/test/cli/testprojinfo_out.dist deleted file mode 100644 index 2c458d5f87..0000000000 --- a/test/cli/testprojinfo_out.dist +++ /dev/null @@ -1,1720 +0,0 @@ -Testing projinfo EPSG:4326 -PROJ.4 string: -+proj=longlat +datum=WGS84 +no_defs +type=crs - -WKT2:2019 string: -GEOGCRS["WGS 84", - 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)"], - MEMBER["World Geodetic System 1984 (G2139)"], - MEMBER["World Geodetic System 1984 (G2296)"], - ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1]], - ENSEMBLEACCURACY[2.0]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - USAGE[ - SCOPE["Horizontal component of 3D system."], - AREA["World."], - BBOX[-90,-180,90,180]], - ID["EPSG",4326]] - -Testing projinfo -o WKT1_GDAL EPSG:4326 -WKT1:GDAL string: -GEOGCS["WGS 84", - DATUM["WGS_1984", - SPHEROID["WGS 84",6378137,298.257223563, - AUTHORITY["EPSG","7030"]], - AUTHORITY["EPSG","6326"]], - PRIMEM["Greenwich",0, - AUTHORITY["EPSG","8901"]], - UNIT["degree",0.0174532925199433, - AUTHORITY["EPSG","9122"]], - AUTHORITY["EPSG","4326"]] - - -Testing projinfo -o WKT2_2015 EPSG:4326 -WKT2:2015 string: -GEODCRS["WGS 84", - DATUM["World Geodetic System 1984", - ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - SCOPE["Horizontal component of 3D system."], - AREA["World."], - BBOX[-90,-180,90,180], - ID["EPSG",4326]] - -Testing projinfo -o WKT2_2019 EPSG:4326 -WKT2:2019 string: -GEOGCRS["WGS 84", - 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)"], - MEMBER["World Geodetic System 1984 (G2139)"], - MEMBER["World Geodetic System 1984 (G2296)"], - ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1]], - ENSEMBLEACCURACY[2.0]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - USAGE[ - SCOPE["Horizontal component of 3D system."], - AREA["World."], - BBOX[-90,-180,90,180]], - ID["EPSG",4326]] - -Testing projinfo -o ALL EPSG:4326 -PROJ.4 string: -+proj=longlat +datum=WGS84 +no_defs +type=crs - -WKT2:2015 string: -GEODCRS["WGS 84", - DATUM["World Geodetic System 1984", - ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - SCOPE["Horizontal component of 3D system."], - AREA["World."], - BBOX[-90,-180,90,180], - ID["EPSG",4326]] - -WKT2:2019 string: -GEOGCRS["WGS 84", - 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)"], - MEMBER["World Geodetic System 1984 (G2139)"], - MEMBER["World Geodetic System 1984 (G2296)"], - ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1]], - ENSEMBLEACCURACY[2.0]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - USAGE[ - SCOPE["Horizontal component of 3D system."], - AREA["World."], - BBOX[-90,-180,90,180]], - ID["EPSG",4326]] - -WKT1:GDAL string: -GEOGCS["WGS 84", - DATUM["WGS_1984", - SPHEROID["WGS 84",6378137,298.257223563, - AUTHORITY["EPSG","7030"]], - AUTHORITY["EPSG","6326"]], - PRIMEM["Greenwich",0, - AUTHORITY["EPSG","8901"]], - UNIT["degree",0.0174532925199433, - AUTHORITY["EPSG","9122"]], - AUTHORITY["EPSG","4326"]] - - -WKT1:ESRI string: -GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]] - - -PROJJSON: -{ - "$schema": "https://proj.org/schemas/v0.7/projjson.schema.json", - "type": "GeographicCRS", - "name": "WGS 84", - "datum_ensemble": { - "name": "World Geodetic System 1984 ensemble", - "members": [ - { - "name": "World Geodetic System 1984 (Transit)", - "id": { - "authority": "EPSG", - "code": 1166 - } - }, - { - "name": "World Geodetic System 1984 (G730)", - "id": { - "authority": "EPSG", - "code": 1152 - } - }, - { - "name": "World Geodetic System 1984 (G873)", - "id": { - "authority": "EPSG", - "code": 1153 - } - }, - { - "name": "World Geodetic System 1984 (G1150)", - "id": { - "authority": "EPSG", - "code": 1154 - } - }, - { - "name": "World Geodetic System 1984 (G1674)", - "id": { - "authority": "EPSG", - "code": 1155 - } - }, - { - "name": "World Geodetic System 1984 (G1762)", - "id": { - "authority": "EPSG", - "code": 1156 - } - }, - { - "name": "World Geodetic System 1984 (G2139)", - "id": { - "authority": "EPSG", - "code": 1309 - } - }, - { - "name": "World Geodetic System 1984 (G2296)", - "id": { - "authority": "EPSG", - "code": 1383 - } - } - ], - "ellipsoid": { - "name": "WGS 84", - "semi_major_axis": 6378137, - "inverse_flattening": 298.257223563 - }, - "accuracy": "2.0", - "id": { - "authority": "EPSG", - "code": 6326 - } - }, - "coordinate_system": { - "subtype": "ellipsoidal", - "axis": [ - { - "name": "Geodetic latitude", - "abbreviation": "Lat", - "direction": "north", - "unit": "degree" - }, - { - "name": "Geodetic longitude", - "abbreviation": "Lon", - "direction": "east", - "unit": "degree" - } - ] - }, - "scope": "Horizontal component of 3D system.", - "area": "World.", - "bbox": { - "south_latitude": -90, - "west_longitude": -180, - "north_latitude": 90, - "east_longitude": 180 - }, - "id": { - "authority": "EPSG", - "code": 4326 - } -} - -Testing projinfo "+proj=merc +lat_ts=5 +datum=WGS84 +type=crs" --output-id HOBU:MY_CRS -o SQL -q -INSERT INTO geodetic_crs VALUES('HOBU','GEODETIC_CRS_MY_CRS','unknown','','geographic 2D','EPSG','6424','EPSG','6326',NULL,0); -INSERT INTO usage VALUES('HOBU','USAGE_GEODETIC_CRS_MY_CRS','geodetic_crs','HOBU','GEODETIC_CRS_MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); -INSERT INTO conversion VALUES('HOBU','CONVERSION_MY_CRS','unknown','','EPSG','9805','Mercator (variant B)','EPSG','8823','Latitude of 1st standard parallel',5,'EPSG','9122','EPSG','8802','Longitude of natural origin',0,'EPSG','9122','EPSG','8806','False easting',0,'EPSG','9001','EPSG','8807','False northing',0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); -INSERT INTO usage VALUES('HOBU','USAGE_CONVERSION_MY_CRS','conversion','HOBU','CONVERSION_MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); -INSERT INTO projected_crs VALUES('HOBU','MY_CRS','unknown','','EPSG','4400','HOBU','GEODETIC_CRS_MY_CRS','HOBU','CONVERSION_MY_CRS',NULL,0); -INSERT INTO usage VALUES('HOBU','USAGE_PROJECTED_CRS_MY_CRS','projected_crs','HOBU','MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); - -Testing projinfo "+proj=merc +lat_ts=5 +datum=WGS84 +type=crs" --output-id HOBU:MY_CRS --authority HOBU -o SQL -q -INSERT INTO ellipsoid VALUES('HOBU','ELLPS_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','WGS 84','','IAU_2015','399',6378137,'EPSG','9001',298.257223563,NULL,0); -INSERT INTO prime_meridian VALUES('HOBU','PM_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','Greenwich',0,'EPSG','9122',0); -INSERT INTO geodetic_datum VALUES('HOBU','GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','World Geodetic System 1984','','HOBU','ELLPS_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','HOBU','PM_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS',NULL,NULL,NULL,NULL,NULL,0); -INSERT INTO usage VALUES('HOBU','USAGE_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','geodetic_datum','HOBU','GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); -INSERT INTO geodetic_crs VALUES('HOBU','GEODETIC_CRS_MY_CRS','unknown','','geographic 2D','EPSG','6424','HOBU','GEODETIC_DATUM_GEODETIC_CRS_MY_CRS',NULL,0); -INSERT INTO usage VALUES('HOBU','USAGE_GEODETIC_CRS_MY_CRS','geodetic_crs','HOBU','GEODETIC_CRS_MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); -INSERT INTO conversion VALUES('HOBU','CONVERSION_MY_CRS','unknown','','EPSG','9805','Mercator (variant B)','EPSG','8823','Latitude of 1st standard parallel',5,'EPSG','9122','EPSG','8802','Longitude of natural origin',0,'EPSG','9122','EPSG','8806','False easting',0,'EPSG','9001','EPSG','8807','False northing',0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); -INSERT INTO usage VALUES('HOBU','USAGE_CONVERSION_MY_CRS','conversion','HOBU','CONVERSION_MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); -INSERT INTO projected_crs VALUES('HOBU','MY_CRS','unknown','','EPSG','4400','HOBU','GEODETIC_CRS_MY_CRS','HOBU','CONVERSION_MY_CRS',NULL,0); -INSERT INTO usage VALUES('HOBU','USAGE_PROJECTED_CRS_MY_CRS','projected_crs','HOBU','MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); - -Testing projinfo -s EPSG:4326 -t EPSG:32631 --single-line -Candidate operations found: 1 -------------------------------------- -Operation No. 1: - -EPSG:16031, UTM zone 31N, 0 m, Between 0°E and 6°E, northern hemisphere between equator and 84°N, onshore and offshore. - -PROJ string: -+proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=utm +zone=31 +ellps=WGS84 - -WKT2:2019 string: -CONVERSION["UTM zone 31N",METHOD["Transverse Mercator",ID["EPSG",9807]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["Scale factor at natural origin",0.9996,SCALEUNIT["unity",1],ID["EPSG",8805]],PARAMETER["False easting",500000,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]],ID["EPSG",16031]] - -Testing projinfo --source-crs NAD27 --target-crs NAD83 -Candidate operations found: 1 -Note: using '--spatial-test intersects' would bring more results (10) -------------------------------------- -Operation No. 1: - -unknown id, Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, World, has ballpark transformation - -PROJ string: -+proj=noop - -WKT2:2019 string: -COORDINATEOPERATION["Ballpark geographic offset from NAD27 to NAD83", - 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]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4267]]], - TARGETCRS[ - GEOGCRS["NAD83", - DATUM["North American Datum 1983", - ELLIPSOID["GRS 1980",6378137,298.257222101, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4269]]], - METHOD["Geographic2D offsets", - ID["EPSG",9619]], - PARAMETER["Latitude offset",0, - ANGLEUNIT["degree",0.0174532925199433], - ID["EPSG",8601]], - PARAMETER["Longitude offset",0, - ANGLEUNIT["degree",0.0174532925199433], - ID["EPSG",8602]], - USAGE[ - SCOPE["unknown"], - AREA["World"], - BBOX[-90,-180,90,180]]] - -Testing projinfo -s NAD27 -t NAD83 --grid-check none --spatial-test intersects --summary --hide-ballpark -Candidate operations found: 9 -DERIVED_FROM(EPSG):1313, NAD27 to NAD83 (4), 1.5 m, Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast west of 44°W and north of 40°N. -DERIVED_FROM(EPSG):1312, NAD27 to NAD83 (3), 2.0 m, Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast west of 44°W and north of 40°N. -DERIVED_FROM(EPSG):1241, NAD27 to NAD83 (1), 0.15 m, United States (USA) - CONUS including EEZ - onshore and offshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico (GoM) OCS. -DERIVED_FROM(EPSG):8555, NAD27 to NAD83 (7), 0.15 m, United States (USA) - CONUS onshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico offshore continental shelf (GoM OCS). -DERIVED_FROM(EPSG):1243, NAD27 to NAD83 (2), 0.5 m, United States (USA) - Alaska including EEZ. -DERIVED_FROM(EPSG):8549, NAD27 to NAD83 (8), 0.5 m, United States (USA) - Alaska. -DERIVED_FROM(EPSG):1573, NAD27 to NAD83 (6), 1.5 m, Canada - Quebec. -EPSG:1462, NAD27 to NAD83 (5), 2.0 m, Canada - Quebec. -EPSG:9111, NAD27 to NAD83 (9), 1.5 m, Canada - Saskatchewan. - -Testing projinfo -s NAD27 -t NAD83 --grid-check none --spatial-test intersects -Candidate operations found: 10 -------------------------------------- -Operation No. 1: - -DERIVED_FROM(EPSG):1313, NAD27 to NAD83 (4), 1.5 m, Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast west of 44°W and north of 40°N. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=hgridshift +grids=ca_nrc_ntv2_0.tif - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -WKT2:2019 string: -COORDINATEOPERATION["NAD27 to NAD83 (4)", - 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]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4267]]], - TARGETCRS[ - GEOGCRS["NAD83", - DATUM["North American Datum 1983", - ELLIPSOID["GRS 1980",6378137,298.257222101, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4269]]], - METHOD["HORIZONTAL_SHIFT_GTIFF"], - PARAMETERFILE["Latitude and longitude difference file","ca_nrc_ntv2_0.tif"], - OPERATIONACCURACY[1.5], - USAGE[ - SCOPE["Transformation of coordinates at 1m to 2m level of accuracy."], - AREA["Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast west of 44°W and north of 40°N."], - BBOX[40,-141.01,83.17,-44]], - ID["DERIVED_FROM(EPSG)",1313], - REMARK["Uses NTv2 data files. Replaces NTv1 (transformation code 1312) except in Quebec. Input expects longitudes to be positive west; EPSG GeogCRS NAD27 (code 4267) and (code 4269) have longitudes positive east. May be used as tfm to WGS 84 - see code 1693."]] - -------------------------------------- -Operation No. 2: - -DERIVED_FROM(EPSG):1312, NAD27 to NAD83 (3), 2.0 m, Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast west of 44°W and north of 40°N. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=hgridshift +grids=ca_nrc_ntv1_can.tif - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -WKT2:2019 string: -COORDINATEOPERATION["NAD27 to NAD83 (3)", - 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]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4267]]], - TARGETCRS[ - GEOGCRS["NAD83", - DATUM["North American Datum 1983", - ELLIPSOID["GRS 1980",6378137,298.257222101, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4269]]], - METHOD["HORIZONTAL_SHIFT_GTIFF"], - PARAMETERFILE["Latitude and longitude difference file","ca_nrc_ntv1_can.tif"], - OPERATIONACCURACY[2.0], - USAGE[ - SCOPE["Historic record only - now superseded - see remarks."], - AREA["Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast west of 44°W and north of 40°N."], - BBOX[40,-141.01,83.17,-44]], - ID["DERIVED_FROM(EPSG)",1312], - REMARK["Uses NTv1 method. Replaced in Quebec by code 1462 and elsewhere in 1997 by NTv2 (transformation code 1313). Input expects longitudes to be positive west; EPSG GeogCRS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east."]] - -------------------------------------- -Operation No. 3: - -DERIVED_FROM(EPSG):1241, NAD27 to NAD83 (1), 0.15 m, United States (USA) - CONUS including EEZ - onshore and offshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico (GoM) OCS. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=hgridshift +grids=us_noaa_conus.tif - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -WKT2:2019 string: -COORDINATEOPERATION["NAD27 to NAD83 (1)", - 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]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4267]]], - TARGETCRS[ - GEOGCRS["NAD83", - DATUM["North American Datum 1983", - ELLIPSOID["GRS 1980",6378137,298.257222101, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4269]]], - METHOD["HORIZONTAL_SHIFT_GTIFF"], - PARAMETERFILE["Latitude and longitude difference file","us_noaa_conus.tif"], - OPERATIONACCURACY[0.15], - USAGE[ - SCOPE["Transformation of coordinates at 0.2m level of accuracy."], - AREA["United States (USA) - CONUS including EEZ - onshore and offshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico (GoM) OCS."], - BBOX[23.81,-129.17,49.38,-65.69]], - ID["DERIVED_FROM(EPSG)",1241], - REMARK["Uses NADCON method which expects longitudes positive west; EPSG GeogCRS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east. For application in Gulf of Mexico refer to IOGP report 373-26."]] - -------------------------------------- -Operation No. 4: - -DERIVED_FROM(EPSG):8555, NAD27 to NAD83 (7), 0.15 m, United States (USA) - CONUS onshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico offshore continental shelf (GoM OCS). - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=gridshift +grids=us_noaa_nadcon5_nad27_nad83_1986_conus.tif - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -WKT2:2019 string: -COORDINATEOPERATION["NAD27 to NAD83 (7)", - 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]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4267]]], - TARGETCRS[ - GEOGCRS["NAD83", - DATUM["North American Datum 1983", - ELLIPSOID["GRS 1980",6378137,298.257222101, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4269]]], - METHOD["GENERAL_SHIFT_GTIFF"], - PARAMETERFILE["Latitude and longitude difference file","us_noaa_nadcon5_nad27_nad83_1986_conus.tif"], - OPERATIONACCURACY[0.15], - USAGE[ - SCOPE["Geodesy."], - AREA["United States (USA) - CONUS onshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico offshore continental shelf (GoM OCS)."], - BBOX[23.82,-124.79,49.38,-66.91]], - ID["DERIVED_FROM(EPSG)",8555], - REMARK["NADCON5 method expects longitudes 0-360°; source and target CRS longitudes in range ±180°. Accuracy at 67% confidence level is 0.15m onshore, 1m nearshore and undetermined farther offshore. For application in Gulf of Mexico refer to IOGP report 373-26."]] - -------------------------------------- -Operation No. 5: - -DERIVED_FROM(EPSG):1243, NAD27 to NAD83 (2), 0.5 m, United States (USA) - Alaska including EEZ. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=hgridshift +grids=us_noaa_alaska.tif - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -WKT2:2019 string: -COORDINATEOPERATION["NAD27 to NAD83 (2)", - 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]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4267]]], - TARGETCRS[ - GEOGCRS["NAD83", - DATUM["North American Datum 1983", - ELLIPSOID["GRS 1980",6378137,298.257222101, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4269]]], - METHOD["HORIZONTAL_SHIFT_GTIFF"], - PARAMETERFILE["Latitude and longitude difference file","us_noaa_alaska.tif"], - OPERATIONACCURACY[0.5], - USAGE[ - SCOPE["Geodesy."], - AREA["United States (USA) - Alaska including EEZ."], - BBOX[47.88,167.65,74.71,-129.99]], - ID["DERIVED_FROM(EPSG)",1243], - REMARK["Uses NADCON method which expects longitudes positive west; EPSG GeogCRS NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east. May be used as transformation to WGS 84 - see NAD27 to WGS 84 (85) (code 15864)."]] - -------------------------------------- -Operation No. 6: - -DERIVED_FROM(EPSG):8549, NAD27 to NAD83 (8), 0.5 m, United States (USA) - Alaska. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=gridshift +grids=us_noaa_nadcon5_nad27_nad83_1986_alaska.tif - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -WKT2:2019 string: -COORDINATEOPERATION["NAD27 to NAD83 (8)", - 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]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4267]]], - TARGETCRS[ - GEOGCRS["NAD83", - DATUM["North American Datum 1983", - ELLIPSOID["GRS 1980",6378137,298.257222101, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4269]]], - METHOD["GENERAL_SHIFT_GTIFF"], - PARAMETERFILE["Latitude and longitude difference file","us_noaa_nadcon5_nad27_nad83_1986_alaska.tif"], - OPERATIONACCURACY[0.5], - USAGE[ - SCOPE["Geodesy."], - AREA["United States (USA) - Alaska."], - BBOX[51.3,172.42,71.4,-129.99]], - ID["DERIVED_FROM(EPSG)",8549], - REMARK["Uses NADCON5 method which expects longitudes positive east in range 0-360°; source and target CRSs have longitudes positive east in range -180° to +180°. Accuracy at 67% confidence level is 0.5m onshore, 5m nearshore and undetermined farther offshore."]] - -------------------------------------- -Operation No. 7: - -DERIVED_FROM(EPSG):1573, NAD27 to NAD83 (6), 1.5 m, Canada - Quebec. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=hgridshift +grids=ca_que_mern_na27na83.tif - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -WKT2:2019 string: -COORDINATEOPERATION["NAD27 to NAD83 (6)", - 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]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4267]]], - TARGETCRS[ - GEOGCRS["NAD83", - DATUM["North American Datum 1983", - ELLIPSOID["GRS 1980",6378137,298.257222101, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4269]]], - METHOD["HORIZONTAL_SHIFT_GTIFF"], - PARAMETERFILE["Latitude and longitude difference file","ca_que_mern_na27na83.tif"], - OPERATIONACCURACY[1.5], - USAGE[ - SCOPE["Transformation of coordinates at 1m to 2m level of accuracy."], - AREA["Canada - Quebec."], - BBOX[44.99,-79.85,62.62,-57.1]], - ID["DERIVED_FROM(EPSG)",1573], - REMARK["Also distributed with file name QUE27-83.gsb. Replaces NAD27 to NAD83 (5) (code 1462). Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east."]] - -------------------------------------- -Operation No. 8: - -EPSG:1462, NAD27 to NAD83 (5), 2.0 m, Canada - Quebec. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=hgridshift +grids=GS2783v1.QUE - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -WKT2:2019 string: -COORDINATEOPERATION["NAD27 to NAD83 (5)", - VERSION["SGQ-Can QC NT1"], - 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]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4267]]], - TARGETCRS[ - GEOGCRS["NAD83", - DATUM["North American Datum 1983", - ELLIPSOID["GRS 1980",6378137,298.257222101, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4269]]], - METHOD["NTv1", - ID["EPSG",9614]], - PARAMETERFILE["Latitude and longitude difference file","GS2783v1.QUE"], - OPERATIONACCURACY[2.0], - USAGE[ - SCOPE["Historic record only - now superseded - see remarks."], - AREA["Canada - Quebec."], - BBOX[44.99,-79.85,62.62,-57.1]], - ID["EPSG",1462], - REMARK["Densification for Quebec of code 1312. Replaced by NAD27 to NAD83 (6) (code 1573). Uses NT method which expects longitudes positive west; EPSG GeogCRSs NAD27 (code 4267) and NAD83 (code 4269) have longitudes positive east."]] - -------------------------------------- -Operation No. 9: - -EPSG:9111, NAD27 to NAD83 (9), 1.5 m, Canada - Saskatchewan. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=hgridshift +grids=SK27-83.gsb - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -WKT2:2019 string: -COORDINATEOPERATION["NAD27 to NAD83 (9)", - VERSION["ISC-Can SK"], - 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]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4267]]], - TARGETCRS[ - GEOGCRS["NAD83", - DATUM["North American Datum 1983", - ELLIPSOID["GRS 1980",6378137,298.257222101, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4269]]], - METHOD["NTv2", - ID["EPSG",9615]], - PARAMETERFILE["Latitude and longitude difference file","SK27-83.gsb"], - OPERATIONACCURACY[1.5], - USAGE[ - SCOPE["Geodesy."], - AREA["Canada - Saskatchewan."], - BBOX[49,-110,60.01,-101.34]], - ID["EPSG",9111]] - -------------------------------------- -Operation No. 10: - -unknown id, Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, World, has ballpark transformation - -PROJ string: -+proj=noop - -WKT2:2019 string: -COORDINATEOPERATION["Ballpark geographic offset from NAD27 to NAD83", - 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]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4267]]], - TARGETCRS[ - GEOGCRS["NAD83", - DATUM["North American Datum 1983", - ELLIPSOID["GRS 1980",6378137,298.257222101, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4269]]], - METHOD["Geographic2D offsets", - ID["EPSG",9619]], - PARAMETER["Latitude offset",0, - ANGLEUNIT["degree",0.0174532925199433], - ID["EPSG",8601]], - PARAMETER["Longitude offset",0, - ANGLEUNIT["degree",0.0174532925199433], - ID["EPSG",8602]], - USAGE[ - SCOPE["unknown"], - AREA["World"], - BBOX[-90,-180,90,180]]] - -Testing projinfo -s EPSG:4230 -t EPSG:4258 --bbox 8,54.51,15.24,57.8 --summary -Candidate operations found: 1 -Note: using '--spatial-test intersects' would bring more results (2) -EPSG:1626, ED50 to ETRS89 (4), 1.0 m, Denmark - onshore. - -Testing projinfo -s EPSG:23031 -t EPSG:4326 --bbox -13.87,34.91,-7.24,41.88 --crs-extent-use none --summary -Candidate operations found: 1 -Note: using '--spatial-test intersects' would bring more results (9) -unknown id, Inverse of UTM zone 31N + ED50 to WGS 84 (42), 5 m, Portugal - mainland - offshore. - -Testing projinfo -s EPSG:4230 -t EPSG:4258 --area EPSG:3237 --summary -Candidate operations found: 1 -EPSG:1626, ED50 to ETRS89 (4), 1.0 m, Denmark - onshore. - -Testing projinfo -s EPSG:4230 -t EPSG:4258 --area 'Denmark - onshore' --summary -Candidate operations found: 1 -EPSG:1626, ED50 to ETRS89 (4), 1.0 m, Denmark - onshore. - -Testing projinfo -s EPSG:4230 -t EPSG:4258 --area 'Denmark -' --summary -Several candidates area of use matching provided name : - EPSG:2531 : Denmark - Jutland and Funen - onshore. - EPSG:2532 : Denmark - Zealand and Lolland (onshore). - EPSG:2533 : Denmark - Bornholm onshore. - EPSG:3237 : Denmark - onshore. - EPSG:3471 : Denmark - onshore west of 12°E - Zealand, Jutland, Fuen and Lolland. - EPSG:3472 : Denmark - onshore east of 12°E - Zealand and Falster, Bornholm. - EPSG:3631 : Denmark - Jutland onshore west of 10°E. - EPSG:3632 : Denmark - onshore - Jutland east of 9°E and Funen. - EPSG:4575 : Denmark - onshore Jutland, Funen, Zealand and Lolland. - EPSG:4693 : Denmark - onshore - Copenhagen and surrounding area. - EPSG:4694 : Denmark - onshore northern Schleswig and surrounding islands (i.e. Jutland south of the pre-1920 border near the Kongea river). - EPSG:4756 : Denmark - offshore. - -Testing projinfo -s EPSG:4230 -t EPSG:4258 --area no_match --summary -No area of use matching provided name - -Testing projinfo -s EPSG:4230 -t EPSG:4258 --area WRONG:CODE --summary -Area of use retrieval failed: extent not found - -Testing deprecated CRS: projinfo EPSG:26591 -Warning: object is deprecated -Alternative non-deprecated CRS: - EPSG:3003 - -PROJ.4 string: -+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +pm=rome +units=m +no_defs +type=crs - -WKT2:2019 string: -PROJCRS["Monte Mario (Rome) / Italy zone 1", - BASEGEOGCRS["Monte Mario (Rome)", - DATUM["Monte Mario (Rome)", - ELLIPSOID["International 1924",6378388,297, - LENGTHUNIT["metre",1]]], - PRIMEM["Rome",12.4523333333333, - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4806]], - CONVERSION["Italy zone 1", - METHOD["Transverse Mercator", - ID["EPSG",9807]], - PARAMETER["Latitude of natural origin",0, - ANGLEUNIT["degree",0.0174532925199433], - ID["EPSG",8801]], - PARAMETER["Longitude of natural origin",9, - ANGLEUNIT["degree",0.0174532925199433], - ID["EPSG",8802]], - PARAMETER["Scale factor at natural origin",0.9996, - SCALEUNIT["unity",1], - ID["EPSG",8805]], - PARAMETER["False easting",1500000, - LENGTHUNIT["metre",1], - ID["EPSG",8806]], - PARAMETER["False northing",0, - LENGTHUNIT["metre",1], - ID["EPSG",8807]]], - CS[Cartesian,2], - AXIS["easting (X)",east, - ORDER[1], - LENGTHUNIT["metre",1]], - AXIS["northing (Y)",north, - ORDER[2], - LENGTHUNIT["metre",1]], - USAGE[ - SCOPE["Engineering survey, topographic mapping."], - AREA["Italy - onshore and offshore - west of 12°E."], - BBOX[36.53,5.93,47.04,12]], - ID["EPSG",26591]] - -Testing non compliant WKT1 -Warning: GEOGCS should have a PRIMEM node -Grammar error: Parsing error : syntax error, unexpected UNIT, expecting PRIMEM. Error occurred around: -HEROID["WGS 84",6378137,298.257223563]],UNIT["degree",0.0174532925199433]] - ^ -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, - ID["EPSG",9001]]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433], - ID["EPSG",8901]], - CS[ellipsoidal,2], - AXIS["longitude",east, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["latitude",north, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]]] - -Testing CRS with towgs84: projinfo -o PROJ EPSG:25832 -PROJ.4 string: -+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs +type=crs - -Testing RH2000 height to SWEREF99: projinfo -s EPSG:5613 -t EPSG:4977 -Candidate operations found: 2 -------------------------------------- -Operation No. 1: - -INVERSE(DERIVED_FROM(PROJ)):EPSG_4977_TO_EPSG_5613, Inverse of SWEREF99 to RH2000 height, unknown accuracy, Sweden - onshore. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=vgridshift +grids=se_lantmateriet_SWEN17_RH2000.tif +multiplier=1 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -WKT2:2019 string: -COORDINATEOPERATION["Inverse of SWEREF99 to RH2000 height", - SOURCECRS[ - VERTCRS["RH2000 height", - DYNAMIC[ - FRAMEEPOCH[2000]], - VDATUM["Rikets hojdsystem 2000"], - CS[vertical,1], - AXIS["gravity-related height (H)",up, - LENGTHUNIT["metre",1]], - ID["EPSG",5613]]], - TARGETCRS[ - GEOGCRS["SWEREF99", - DATUM["SWEREF99", - ELLIPSOID["GRS 1980",6378137,298.257222101, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,3], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["ellipsoidal height (h)",up, - ORDER[3], - LENGTHUNIT["metre",1]], - ID["EPSG",4977]]], - METHOD["Inverse of Geographic3D to GravityRelatedHeight (gtx)", - ID["INVERSE(EPSG)",9665]], - PARAMETERFILE["Geoid (height correction) model file","se_lantmateriet_SWEN17_RH2000.tif"], - USAGE[ - SCOPE["Not known."], - AREA["Sweden - onshore."], - BBOX[55.28,10.93,69.07,24.17]], - ID["INVERSE(DERIVED_FROM(PROJ))","EPSG_4977_TO_EPSG_5613"]] - -------------------------------------- -Operation No. 2: - -unknown id, Transformation from RH2000 height to SWEREF99 (ballpark vertical transformation, without ellipsoid height to vertical height correction), unknown accuracy, World, has ballpark transformation - -PROJ string: -+proj=noop - -WKT2:2019 string: -COORDINATEOPERATION["Transformation from RH2000 height to SWEREF99 (ballpark vertical transformation, without ellipsoid height to vertical height correction)", - SOURCECRS[ - VERTCRS["RH2000 height", - DYNAMIC[ - FRAMEEPOCH[2000]], - VDATUM["Rikets hojdsystem 2000"], - CS[vertical,1], - AXIS["gravity-related height (H)",up, - LENGTHUNIT["metre",1]], - ID["EPSG",5613]]], - TARGETCRS[ - GEOGCRS["SWEREF99", - DATUM["SWEREF99", - ELLIPSOID["GRS 1980",6378137,298.257222101, - LENGTHUNIT["metre",1]]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,3], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["ellipsoidal height (h)",up, - ORDER[3], - LENGTHUNIT["metre",1]], - ID["EPSG",4977]]], - METHOD["Change of Vertical Unit", - ID["EPSG",1069]], - PARAMETER["Unit conversion scalar",1, - SCALEUNIT["unity",1], - ID["EPSG",1051]], - USAGE[ - SCOPE["unknown"], - AREA["World"], - BBOX[-90,-180,90,180]]] - -Testing NAD83(2011) + NAVD88 height -> NAD83(2011) : projinfo -s EPSG:6349 -t EPSG:6319 --spatial-test intersects -o PROJ -Candidate operations found: 3 -------------------------------------- -Operation No. 1: - -unknown id, Inverse of NAD83(2011) to NAVD88 height (3), 0.015 m, United States (USA) - CONUS onshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=vgridshift +grids=us_noaa_g2018u0.tif +multiplier=1 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -------------------------------------- -Operation No. 2: - -unknown id, Inverse of NAD83(2011) to NAVD88 height (2), 0.02 m, United States (USA) - Alaska. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=vgridshift +grids=us_noaa_g2012ba0.tif +multiplier=1 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -------------------------------------- -Operation No. 3: - -unknown id, Transformation from NAVD88 height to NAD83(2011) (ballpark vertical transformation, without ellipsoid height to vertical height correction), unknown accuracy, World, has ballpark transformation - -PROJ string: -+proj=noop - -Testing NGF IGN69 height to RGF93: projinfo -s EPSG:5720 -t EPSG:4965 -o PROJ -Candidate operations found: 2 -------------------------------------- -Operation No. 1: - -INVERSE(DERIVED_FROM(EPSG)):10000, Inverse of RGF93 v1 to NGF-IGN69 height (1), 0.5 m, France - mainland onshore. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=vgridshift +grids=fr_ign_RAF18.tif +multiplier=1 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -------------------------------------- -Operation No. 2: - -unknown id, Transformation from NGF-IGN69 height to RGF93 v1 (ballpark vertical transformation, without ellipsoid height to vertical height correction), unknown accuracy, World, has ballpark transformation - -PROJ string: -+proj=noop - -Testing EPSG:32631 --3d -PROJ.4 string: -+proj=utm +zone=31 +datum=WGS84 +units=m +no_defs +type=crs - -WKT2:2019 string: -PROJCRS["WGS 84 / UTM zone 31N", - BASEGEOGCRS["WGS 84", - 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)"], - MEMBER["World Geodetic System 1984 (G2139)"], - MEMBER["World Geodetic System 1984 (G2296)"], - ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1]], - ENSEMBLEACCURACY[2.0]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - ID["EPSG",4979]], - CONVERSION["UTM zone 31N", - METHOD["Transverse Mercator", - ID["EPSG",9807]], - PARAMETER["Latitude of natural origin",0, - ANGLEUNIT["degree",0.0174532925199433], - ID["EPSG",8801]], - PARAMETER["Longitude of natural origin",3, - ANGLEUNIT["degree",0.0174532925199433], - ID["EPSG",8802]], - PARAMETER["Scale factor at natural origin",0.9996, - SCALEUNIT["unity",1], - ID["EPSG",8805]], - PARAMETER["False easting",500000, - LENGTHUNIT["metre",1], - ID["EPSG",8806]], - PARAMETER["False northing",0, - LENGTHUNIT["metre",1], - ID["EPSG",8807]], - ID["EPSG",16031]], - CS[Cartesian,3], - AXIS["(E)",east, - ORDER[1], - LENGTHUNIT["metre",1, - ID["EPSG",9001]]], - AXIS["(N)",north, - ORDER[2], - LENGTHUNIT["metre",1, - ID["EPSG",9001]]], - AXIS["ellipsoidal height (h)",up, - ORDER[3], - LENGTHUNIT["metre",1, - ID["EPSG",9001]]], - USAGE[ - SCOPE["unknown"], - AREA["Between 0°E and 6°E, northern hemisphere between equator and 84°N, onshore and offshore. Algeria. Andorra. Belgium. Benin. Burkina Faso. Denmark - North Sea. France. Germany - North Sea. Ghana. Luxembourg. Mali. Netherlands. Niger. Nigeria. Norway. Spain. Togo. United Kingdom (UK) - North Sea."], - BBOX[0,0,84,6]], - REMARK["Promoted to 3D from EPSG:32631"]] - -Testing -s WGS 84 -t WGS 84 + EGM96 height --hide-ballpark --summary -Candidate operations found: 1 -unknown id, WGS 84 to EGM96 height (1), 1 m, World. - -Testing -s WGS 84 + EGM96 height -t WGS 84 --hide-ballpark --summary -Candidate operations found: 1 -unknown id, Inverse of WGS 84 to EGM96 height (1), 1 m, World. - -Testing -s EPSG:32631 -t EPSG:4326+3855 --summary -Candidate operations found: 1 -unknown id, Inverse of UTM zone 31N + Inverse of Null geographic offset from WGS 84 to WGS 84, 0 m, World. - -Testing -s EPSG:32631 -t EPSG:4326+3855 --3d --summary -Candidate operations found: 3 -unknown id, Inverse of UTM zone 31N + WGS 84 to EGM2008 height (1), 1 m, World. -unknown id, Inverse of UTM zone 31N + WGS 84 to EGM2008 height (2), 0.5 m, World. -unknown id, Inverse of UTM zone 31N + Inverse of Transformation from EGM2008 height to WGS 84 (ballpark vertical transformation, without ellipsoid height to vertical height correction), unknown accuracy, World., has ballpark transformation - -Testing -s EPSG:4326 -t EPSG:32661 --normalize-axis-order -o PROJ -q --single-line -+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=stere +lat_0=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +ellps=WGS84 - -Testing -s EPSG:4936 -t EPSG:4978 --spatial-test intersects --summary where WGS 84 to ETRS89 (2) uses a transformation method not supported by PROJ currently (time-specific Helmert), and thus must be sorted last -Candidate operations found: 2 -unknown id, Ballpark geocentric translation from ETRS89 to WGS 84, unknown accuracy, World, has ballpark transformation -INVERSE(EPSG):9225, Inverse of WGS 84 to ETRS89 (2), 0.1 m, Germany - offshore North Sea. Netherlands - offshore east of 5E. - -Testing -s +proj=longlat +datum=WGS84 +geoidgrids=@foo.gtx +type=crs -t EPSG:4979 -o PROJ -q -+proj=pipeline - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=vgridshift +grids=@foo.gtx +multiplier=1 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -Testing -s "AGD66" -t "WGS 84 (G1762)" --spatial-test intersects --summary. Should include a transformation through GDA2020 -Candidate operations found: 19 -unknown id, AGD66 to WGS 84 (18) + WGS 84 to WGS 84 (G1762), 5 m, Australia - offshore including EEZ. -unknown id, AGD66 to WGS 84 (16) + WGS 84 to WGS 84 (G1762), 7 m, Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Tasmania; Western Australia; Victoria. -unknown id, AGD66 to WGS 84 (20) + WGS 84 to WGS 84 (G1762), 11 m, Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Tasmania; Western Australia; Victoria. -unknown id, AGD66 to WGS 84 (15) + WGS 84 to WGS 84 (G1762), 5 m, Australia - Northern Territory. -unknown id, AGD66 to WGS 84 (13) + WGS 84 to WGS 84 (G1762), 5 m, Australia - New South Wales and Victoria. -unknown id, AGD66 to WGS 84 (21) + WGS 84 to WGS 84 (G1762), 7 m, Papua New Guinea - mainland onshore. -unknown id, AGD66 to WGS 84 (14) + WGS 84 to WGS 84 (G1762), 5 m, Australia - Tasmania including islands - onshore. -unknown id, AGD66 to WGS 84 (19) + WGS 84 to WGS 84 (G1762), 4 m, Papua New Guinea - Papuan fold and thrust belt. -unknown id, AGD66 to WGS 84 (22) + WGS 84 to WGS 84 (G1762), 6 m, Papua New Guinea - Papuan fold and thrust belt. -unknown id, AGD66 to WGS 84 (23) + WGS 84 to WGS 84 (G1762), 6 m, Papua New Guinea - North Fly area (between 5°04'S and 6°36'S and west of 141°32'E). -unknown id, AGD66 to WGS 84 (12) + WGS 84 to WGS 84 (G1762), 5 m, Australia - Australian Capital Territory. -unknown id, AGD66 to GDA94 (11) + GDA94 to GDA2020 (2) + Conversion from GDA2020 (geog2D) to GDA2020 (geocentric) + GDA2020 to WGS 84 (G1762) (1) + Conversion from WGS 84 (G1762) (geocentric) to WGS 84 (G1762) (geog2D), 0.75 m, Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Tasmania; Western Australia; Victoria. -unknown id, AGD66 to GDA94 (12) + GDA94 to GDA2020 (2) + Conversion from GDA2020 (geog2D) to GDA2020 (geocentric) + GDA2020 to WGS 84 (G1762) (1) + Conversion from WGS 84 (G1762) (geocentric) to WGS 84 (G1762) (geog2D), 3.25 m, Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Tasmania; Western Australia; Victoria. -unknown id, AGD66 to WGS 84 (17) + WGS 84 to WGS 84 (G1762), 4.9 m, Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Tasmania; Western Australia; Victoria. -unknown id, AGD66 to GDA94 (9) + GDA94 to GDA2020 (2) + Conversion from GDA2020 (geog2D) to GDA2020 (geocentric) + GDA2020 to WGS 84 (G1762) (1) + Conversion from WGS 84 (G1762) (geocentric) to WGS 84 (G1762) (geog2D), 1.25 m, Australia - Northern Territory. -unknown id, AGD66 to GDA94 (4) + GDA94 to GDA2020 (2) + Conversion from GDA2020 (geog2D) to GDA2020 (geocentric) + GDA2020 to WGS 84 (G1762) (1) + Conversion from WGS 84 (G1762) (geocentric) to WGS 84 (G1762) (geog2D), 1.25 m, Australia - New South Wales and Victoria. -unknown id, AGD66 to GDA94 (8) + GDA94 to GDA2020 (2) + Conversion from GDA2020 (geog2D) to GDA2020 (geocentric) + GDA2020 to WGS 84 (G1762) (1) + Conversion from WGS 84 (G1762) (geocentric) to WGS 84 (G1762) (geog2D), 1.25 m, Australia - Tasmania including islands - onshore. -unknown id, AGD66 to GDA94 (19) + GDA94 to GDA2020 (2) + Conversion from GDA2020 (geog2D) to GDA2020 (geocentric) + GDA2020 to WGS 84 (G1762) (1) + Conversion from WGS 84 (G1762) (geocentric) to WGS 84 (G1762) (geog2D), 0.75 m, Australia - Australian Capital Territory. -unknown id, Ballpark geographic offset from AGD66 to WGS 84 (G1762), unknown accuracy, World, has ballpark transformation - -Testing -s EPSG:31467 -t ETRS89 --spatial-test intersects --grid-check none --bbox 8,48,9,49 --summary. Should include both DHDN to ETRS89 (8) and DHDN to ETRS89 (BWTA2017) -Candidate operations found: 4 -unknown id, Inverse of 3-degree Gauss-Kruger zone 3 + DHDN to ETRS89 (9), 0.1 m, Germany - Baden-Wurttemberg. -unknown id, Inverse of 3-degree Gauss-Kruger zone 3 + DHDN to ETRS89 (8), 0.9 m, Germany - onshore - states of Baden-Wurtemberg, Bayern, Berlin, Brandenburg, Bremen, Hamburg, Hessen, Mecklenburg-Vorpommern, Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Sachsen, Sachsen-Anhalt, Schleswig-Holstein, Thuringen. -unknown id, Inverse of 3-degree Gauss-Kruger zone 3 + DHDN to ETRS89 (3), 1 m, Germany - states of former West Germany - south of 50°20'N. -unknown id, Inverse of 3-degree Gauss-Kruger zone 3 + DHDN to ETRS89 (2), 3 m, Germany - states of former West Germany onshore - Baden-Wurtemberg, Bayern, Bremen, Hamburg, Hessen, Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Schleswig-Holstein. - -Testing -s "GDA94" -t "AHD height" --grid-check none -o PROJ --spatial-test intersects -Candidate operations found: 1 -------------------------------------- -Operation No. 1: - -DERIVED_FROM(EPSG):5656, GDA94 to AHD height (49), 0.15 m, Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Western Australia; Victoria. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +inv +proj=vgridshift +grids=au_ga_AUSGeoid09_V1.01.tif +multiplier=1 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -Testing -s "GDA2020" -t "AHD height" --grid-check none -o PROJ --spatial-test intersects -Candidate operations found: 1 -------------------------------------- -Operation No. 1: - -DERIVED_FROM(EPSG):8451, GDA2020 to AHD height (1), 0.15 m, Australia - Australian Capital Territory, New South Wales, Northern Territory, Queensland, South Australia, Tasmania, Western Australia and Victoria - onshore. Christmas Island - onshore. Cocos and Keeling Islands - onshore. - -PROJ string: -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +inv +proj=vgridshift +grids=au_ga_AUSGeoid2020_20180201.tif - +multiplier=1 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -Testing -k ellipsoid WGS84 -PROJ string: -+ellps=WGS84 - -WKT2:2019 string: -ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1], - ID["EPSG",7030]] - -Testing -k ellipsoid EPSG:7030 -PROJ string: -+ellps=WGS84 - -WKT2:2019 string: -ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1], - ID["EPSG",7030]] - -Testing -k datum WGS84 -WKT2:2019 string: -DATUM["World Geodetic System 1984", - ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1]], - ID["EPSG",6326]] - -Testing -k datum EPSG:6326 -WKT2:2019 string: -DATUM["World Geodetic System 1984", - ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1]], - ID["EPSG",6326]] - -Testing -k ensemble WGS84 -WKT2:2019 string: -ENSEMBLE["World Geodetic System 1984 ensemble", - MEMBER["World Geodetic System 1984 (Transit)", - ID["EPSG",1166]], - MEMBER["World Geodetic System 1984 (G730)", - ID["EPSG",1152]], - MEMBER["World Geodetic System 1984 (G873)", - ID["EPSG",1153]], - MEMBER["World Geodetic System 1984 (G1150)", - ID["EPSG",1154]], - MEMBER["World Geodetic System 1984 (G1674)", - ID["EPSG",1155]], - MEMBER["World Geodetic System 1984 (G1762)", - ID["EPSG",1156]], - MEMBER["World Geodetic System 1984 (G2139)", - ID["EPSG",1309]], - MEMBER["World Geodetic System 1984 (G2296)", - ID["EPSG",1383]], - ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1], - ID["EPSG",7030]], - ENSEMBLEACCURACY[2.0], - ID["EPSG",6326]] - -Testing -k operation EPSG:8457 -o PROJ -q -+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=bessel - +step +proj=helmert +x=674.374 +y=15.056 +z=405.346 - +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 - -Testing D_WGS_1984 -WKT2:2019 string: -ENSEMBLE["World Geodetic System 1984 ensemble", - MEMBER["World Geodetic System 1984 (Transit)", - ID["EPSG",1166]], - MEMBER["World Geodetic System 1984 (G730)", - ID["EPSG",1152]], - MEMBER["World Geodetic System 1984 (G873)", - ID["EPSG",1153]], - MEMBER["World Geodetic System 1984 (G1150)", - ID["EPSG",1154]], - MEMBER["World Geodetic System 1984 (G1674)", - ID["EPSG",1155]], - MEMBER["World Geodetic System 1984 (G1762)", - ID["EPSG",1156]], - MEMBER["World Geodetic System 1984 (G2139)", - ID["EPSG",1309]], - MEMBER["World Geodetic System 1984 (G2296)", - ID["EPSG",1383]], - ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1], - ID["EPSG",7030]], - ENSEMBLEACCURACY[2.0], - ID["EPSG",6326]] - -Testing -k datum D_WGS_1984 -WKT2:2019 string: -DATUM["World Geodetic System 1984", - ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1]], - ID["EPSG",6326]] - -Testing --accuracy 0.05 -s EPSG:4326 -t EPSG:4258 -Candidate operations found: 0 - -Testing -s NZGD2000 -t ITRF96 -o PROJ -q --spatial-test intersects --hide-ballpark -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=defmodel +model=nz_linz_nzgd2000-20180701.json - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -Testing -s NZGD2000 -t ITRF97 -o PROJ -q --spatial-test intersects --hide-ballpark -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=defmodel +model=nz_linz_nzgd2000-20000101.json - +step +proj=cart +ellps=GRS80 - +step +inv +proj=helmert +x=0 +y=-0.00051 +z=0.01553 +rx=-0.00016508 - +ry=0.00026897 +rz=5.984e-05 +s=-0.00151099 +dx=0.00069 +dy=-0.0001 - +dz=0.00186 +drx=-1.347e-05 +dry=1.514e-05 +drz=-2.7e-07 +ds=-0.00019201 - +t_epoch=2000 +convention=position_vector - +step +inv +proj=cart +ellps=GRS80 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -Testing -s NZGD2000 -t ITRF2000 -o PROJ -q --spatial-test intersects --hide-ballpark -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=defmodel +model=nz_linz_nzgd2000-20000101.json - +step +proj=cart +ellps=GRS80 - +step +inv +proj=helmert +x=0.0067 +y=0.00379 +z=-0.00717 +rx=-0.00016508 - +ry=0.00026897 +rz=0.00011984 +s=6.901e-05 +dx=0.00069 +dy=-0.0007 - +dz=0.00046 +drx=-1.347e-05 +dry=1.514e-05 +drz=1.973e-05 +ds=-0.00018201 - +t_epoch=2000 +convention=position_vector - +step +inv +proj=cart +ellps=GRS80 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -Testing -s NZGD2000 -t ITRF2005 -o PROJ -q --spatial-test intersects --hide-ballpark -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=defmodel +model=nz_linz_nzgd2000-20000101.json - +step +proj=cart +ellps=GRS80 - +step +inv +proj=helmert +x=0.0068 +y=0.00299 +z=-0.01297 +rx=-0.00016508 - +ry=0.00026897 +rz=0.00011984 +s=0.00046901 +dx=0.00049 +dy=-0.0006 - +dz=-0.00134 +drx=-1.347e-05 +dry=1.514e-05 +drz=1.973e-05 - +ds=-0.00010201 +t_epoch=2000 +convention=position_vector - +step +inv +proj=cart +ellps=GRS80 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -Testing -s NZGD2000 -t ITRF2008 -o PROJ -q --spatial-test intersects --hide-ballpark -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=defmodel +model=nz_linz_nzgd2000-20171201.json - +step +proj=cart +ellps=GRS80 - +step +inv +proj=helmert +x=0.0048 +y=0.00209 +z=-0.01767 +rx=-0.00016508 - +ry=0.00026897 +rz=0.00011984 +s=0.00140901 +dx=0.00079 +dy=-0.0006 - +dz=-0.00134 +drx=-1.347e-05 +dry=1.514e-05 +drz=1.973e-05 - +ds=-0.00010201 +t_epoch=2000 +convention=position_vector - +step +inv +proj=cart +ellps=GRS80 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -Testing -s NZGD2000 -t ITRF2014 -o PROJ -q --spatial-test intersects --hide-ballpark -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=defmodel +model=nz_linz_nzgd2000-20180701.json - +step +proj=cart +ellps=GRS80 - +step +inv +proj=helmert +x=0.0064 +y=0.00399 +z=-0.01427 +rx=-0.00016508 - +ry=0.00026897 +rz=0.00011984 +s=0.00108901 +dx=0.00079 +dy=-0.0006 - +dz=-0.00144 +drx=-1.347e-05 +dry=1.514e-05 +drz=1.973e-05 +ds=-7.201e-05 - +t_epoch=2000 +convention=position_vector - +step +inv +proj=cart +ellps=GRS80 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -Testing -s "KKJ / Finland Uniform Coordinate System" -t "ETRS89 / TM35FIN(E,N)" --grid-check none -o PROJ -q -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=tinshift +file=fi_nls_ykj_etrs35fin.json - -Testing -s KKJ -t ETRS89 -o PROJ --grid-check none -q -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl - +step +proj=tinshift +file=fi_nls_ykj_etrs35fin.json - +step +inv +proj=utm +zone=35 +ellps=GRS80 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -Testing -s "KKJ + N43 height" -t "KKJ + N60 height" --grid-check none -o PROJ -q -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl - +step +proj=tinshift +file=fi_nls_n43_n60.json - +step +inv +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -Testing -s "KKJ + N60 height" -t "KKJ + N2000 height" --grid-check none -o PROJ -q -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl - +step +proj=tinshift +file=fi_nls_n60_n2000.json - +step +inv +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -Testing -s "KKJ + N43 height" -t "ETRS89 + N2000 height" --grid-check none -o PROJ -q -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=unitconvert +xy_in=deg +xy_out=rad - +step +proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 +ellps=intl - +step +proj=tinshift +file=fi_nls_n43_n60.json - +step +proj=tinshift +file=fi_nls_n60_n2000.json - +step +proj=tinshift +file=fi_nls_ykj_etrs35fin.json - +step +inv +proj=utm +zone=35 +ellps=GRS80 - +step +proj=unitconvert +xy_in=rad +xy_out=deg - +step +proj=axisswap +order=2,1 - -Testing -s "KKJ / Finland Uniform Coordinate System + N43 height" -t "ETRS89 / TM35FIN(E,N) + N2000 height" --grid-check none -o PROJ -q -+proj=pipeline - +step +proj=axisswap +order=2,1 - +step +proj=tinshift +file=fi_nls_n43_n60.json - +step +proj=tinshift +file=fi_nls_n60_n2000.json - +step +proj=tinshift +file=fi_nls_ykj_etrs35fin.json - -Testing -s "ETRS89 / TM35FIN(E,N) + N2000 height" -t "KKJ / Finland Uniform Coordinate System + N43 height" --grid-check none -o PROJ -q -+proj=pipeline - +step +inv +proj=tinshift +file=fi_nls_ykj_etrs35fin.json - +step +inv +proj=tinshift +file=fi_nls_n60_n2000.json - +step +inv +proj=tinshift +file=fi_nls_n43_n60.json - +step +proj=axisswap +order=2,1 - -Testing NKG: -s EPSG:7789 -t EPSG:4936 --area EPSG:1080 --summary --hide-ballpark -Candidate operations found: 1 -NKG:ITRF2014_TO_DK, ITRF2014 to ETRS89(DK), 0.01 m, Denmark - onshore and offshore. - -Testing projinfo --dump-db-structure | head -n 5 -CREATE TABLE metadata( - key TEXT NOT NULL PRIMARY KEY CHECK (length(key) >= 1), - value TEXT NOT NULL -) WITHOUT ROWID; -CREATE TABLE unit_of_measure( - -Testing projinfo --dump-db-structure --output-id HOBU:XXXX EPSG:4326 | tail -n 4 -INSERT INTO metadata VALUES('DATABASE.LAYOUT.VERSION.MAJOR',1); -INSERT INTO metadata VALUES('DATABASE.LAYOUT.VERSION.MINOR',4); -INSERT INTO geodetic_crs VALUES('HOBU','XXXX','WGS 84','','geographic 2D','EPSG','6422','EPSG','6326',NULL,0); -INSERT INTO usage VALUES('HOBU','USAGE_GEODETIC_CRS_XXXX','geodetic_crs','HOBU','XXXX','EPSG','1262','EPSG','1183'); - -Testing PROJ_AUX_DB environment variable -PROJ.4 string: -+proj=longlat +datum=WGS84 +no_defs +type=crs - -WKT2:2019 string: -GEOGCRS["WGS 84", - 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)"], - MEMBER["World Geodetic System 1984 (G2139)"], - MEMBER["World Geodetic System 1984 (G2296)"], - ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1]], - ENSEMBLEACCURACY[2.0]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433]], - CS[ellipsoidal,2], - AXIS["geodetic latitude (Lat)",north, - ORDER[1], - ANGLEUNIT["degree",0.0174532925199433]], - AXIS["geodetic longitude (Lon)",east, - ORDER[2], - ANGLEUNIT["degree",0.0174532925199433]], - USAGE[ - SCOPE["Horizontal component of 3D system."], - AREA["World."], - BBOX[-90,-180,90,180]], - ID["HOBU","XXXX"]] - -Testing -s EPSG:23030 -t EPSG:25830 --bbox -6,40,-5,41 --grid-check known_available --hide-ballpark --summary -Checks that ED50 to ETRS89 (12) is in the output (superseded transformation, but replacements has unknown grid) -Candidate operations found: 2 -unknown id, Inverse of UTM zone 30N + ED50 to ETRS89 (12) + UTM zone 30N, 0.2 m, Spain - mainland, Balearic Islands, Ceuta and Melila - onshore. -unknown id, Inverse of UTM zone 30N + ED50 to ETRS89 (7) + UTM zone 30N, 1.5 m, Spain - onshore mainland except northwest (north of 41°30'N and west of 4°30'W). - -Testing --list-crs | grep "EPSG:32632\|ESRI:103668\|OGC" -EPSG:32632 "WGS 84 / UTM zone 32N" -ESRI:103668 "NAD_1983_HARN_Adj_MN_Ramsey_Meters" -OGC:CRS27 "NAD27 (CRS27)" -OGC:CRS83 "NAD83 (CRS83)" -OGC:CRS84 "WGS 84 (CRS84)" -OGC:CRS84h "WGS 84 longitude-latitude-height" - -Testing --list-crs --authority OGC,EPSG | grep "EPSG:4326\|OGC" -OGC:CRS27 "NAD27 (CRS27)" -OGC:CRS83 "NAD83 (CRS83)" -OGC:CRS84 "WGS 84 (CRS84)" -OGC:CRS84h "WGS 84 longitude-latitude-height" -EPSG:4326 "WGS 84" - -Testing --list-crs | grep deprecated | sort - -Testing --list-crs vertical --bbox 0,40,1,41 --spatial-test intersects | grep "Alicante\|NAVD88" | sort -EPSG:5782 "Alicante height" - -Testing --list-crs vertical --bbox -10,35,5,45 --spatial-test contains | grep "Alicante\|NAVD88" | sort -EPSG:5782 "Alicante height" - -Testing --list-crs --area Spain --spatial-test intersects | grep "EPSG:9505\|EPSG:9398\|EPSG:4258\|EPSG:5703" | sort -EPSG:4258 "ETRS89" -EPSG:9398 "Tenerife height" -EPSG:9505 "ETRS89 + Alicante height" - -Testing --list-crs --area Spain --spatial-test contains | grep "EPSG:9505\|EPSG:9398\|EPSG:4258\|EPSG:5703" | sort -EPSG:9398 "Tenerife height" -EPSG:9505 "ETRS89 + Alicante height" - -Testing --list-crs --area Spain | grep "EPSG:9505\|EPSG:9398\|EPSG:4258\|EPSG:5703" | sort -EPSG:9398 "Tenerife height" -EPSG:9505 "ETRS89 + Alicante height" - -Testing --list-crs geodetic | grep "EPSG:4326\|EPSG:4979\|EPSG:4978" | sort -EPSG:4326 "WGS 84" -EPSG:4978 "WGS 84" -EPSG:4979 "WGS 84" - -Testing --list-crs geographic | grep "EPSG:4326\|EPSG:4979\|EPSG:4978" | sort -EPSG:4326 "WGS 84" -EPSG:4979 "WGS 84" - -Testing --list-crs geocentric,geographic_3d | grep "EPSG:4326\|EPSG:4979\|EPSG:4978" | sort -EPSG:4978 "WGS 84" -EPSG:4979 "WGS 84" - -Testing --list-crs geographic_2d,allow_deprecated --bbox -100,40,-90,41 --spatial-test intersects | grep deprecated | grep "NAD83(FBN)\|GCS_IGS08" | sort -EPSG:8449 "NAD83(FBN)" [deprecated] -ESRI:104010 "GCS_IGS08" [deprecated] - -Testing --list-crs projected --bbox -100,40,-90,41 --spatial-test intersects | grep "(2011).*Missouri East\|York" | sort -EPSG:6512 "NAD83(2011) / Missouri East" - -Testing --list-crs projected --area France | grep "RGF93 v1 / Lambert-93\|UTM zone 11N" | sort -EPSG:2154 "RGF93 v1 / Lambert-93" - -Testing EPSG:9945 -o PROJ -q -+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=500000 +y_0=-4000000 +ellps=bessel +towgs84=521.748,229.489,590.921,4.029,4.488,-15.521,-9.78 +units=m +no_defs +type=crs - -Testing -s "NAD83(CSRS)v7" --s_epoch 1997 -t "NAD83(CSRS)v7" --t_epoch 2010 --summary --hide-ballpark --spatial-test intersects -Candidate operations found: 1 -unknown id, Null geographic offset from NAD83(CSRS)v7 (geog2D) to NAD83(CSRS)v7 (geog3D) + Canada velocity grid v7 from epoch 1997 to epoch 2010 + Null geographic offset from NAD83(CSRS)v7 (geog3D) to NAD83(CSRS)v7 (geog2D), 0.01 m, Canada - onshore - Alberta; British Columbia (BC); Manitoba; New Brunswick (NB); Newfoundland and Labrador; Northwest Territories (NWT); Nova Scotia (NS); Nunavut; Ontario; Prince Edward Island (PEI); Quebec; Saskatchewan; Yukon. - diff --git a/test/cli/testvarious b/test/cli/testvarious deleted file mode 100755 index 45c00cfa02..0000000000 --- a/test/cli/testvarious +++ /dev/null @@ -1,1396 +0,0 @@ -: -# Script to do some testing of various transformation that do not depend -# on datum files. -# -# -TEST_CLI_DIR=`dirname $0` -EXE=$1 - -usage() -{ - echo "Usage: ${0} " - echo - exit 1 -} - -if test -z "${EXE}"; then - EXE=../../src/cs2cs -fi - -if test ! -x ${EXE}; then - echo "*** ERROR: Can not find '${EXE}' program!" - exit 1 -fi - -if test -z "${PROJ_DATA}"; then - export PROJ_DATA="`dirname $0`/../../data" -fi - -# Would be great to have a universale way of selecting a locale with -# a decimal separator that is not '.' -if command locale >/dev/null 2>/dev/null; then - if test `locale -a | grep fr_FR.utf8`; then - echo "Using locale with comma as decimal separator" - export LC_ALL=fr_FR.UTF-8 - export PROJ_USE_ENV_LOCALE=1 - fi -fi - -echo "============================================" -echo "Running ${0} using ${EXE}:" -echo "============================================" - -OUT=tv_out - -# -echo "doing tests into file ${OUT}, please wait" -rm -f ${OUT} -# -echo "##############################################################" >> ${OUT} -echo Test raw ellipse to raw ellipse >> ${OUT} -# -$EXE +proj=latlong +ellps=clrk66 \ - +to +proj=latlong +ellps=bessel \ - -E >>${OUT} <> ${OUT} -echo Test NAD27 to raw ellipse >> ${OUT} -# -$EXE +proj=latlong +datum=NAD27 \ - +to +proj=latlong +ellps=bessel \ - -E >>${OUT} <> ${OUT} -echo Between two 3parameter approximations on same ellipsoid >> ${OUT} -# -$EXE +proj=latlong +ellps=bessel +towgs84=5,0,0 \ - +to +proj=latlong +ellps=bessel +towgs84=1,0,0 \ - -E >>${OUT} <> ${OUT} -echo 3param to raw ellipsoid on same ellipsoid >> ${OUT} -# -$EXE +proj=latlong +ellps=bessel +towgs84=5,0,0 \ - +to +proj=latlong +ellps=bessel \ - -E >>${OUT} <> ${OUT} -echo Test simple prime meridian handling. >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 +pm=greenwich \ - +to +proj=latlong +datum=WGS84 +pm=1 \ - -E >>${OUT} <> ${OUT} -echo Test support for the lon_wrap switch. >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=latlong +datum=WGS84 +lon_wrap=180 \ - -E >>${OUT} <> ${OUT} -echo Test simple prime meridian handling within a projection. >> ${OUT} -# -$EXE +proj=utm +zone=11 +datum=WGS84 +pm=3 \ - +to +proj=latlong +datum=WGS84 +pm=1w \ - -E >>${OUT} <> ${OUT} -echo Test input in grad >> ${OUT} -# -$EXE EPSG:4807 EPSG:27572 -E >>${OUT} <> ${OUT} -echo Test geocentric x/y/z generation. >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=geocent +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo Test geocentric x/y/z consumption. >> ${OUT} -# -$EXE +proj=geocent +datum=WGS84 \ - +to +proj=latlong +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo Test conversion from geodetic latlong to geocentric latlong >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=latlong +datum=WGS84 +geoc \ - -E >>${OUT} <> ${OUT} -echo Test conversion from geocentric latlong to geodetic latlong >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 +geoc \ - +to +proj=latlong +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo "Test stere projection (re: win32 ticket 12)" >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=stere +lat_0=90 +lon_0=0 +lat_ts=70 +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo "Test stere without lat_ts (#147)" >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=stere +lat_0=40 +lon_0=10 +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo "Test sts projection (re: ticket 12)" >> ${OUT} -# -$EXE +proj=latlong +ellps=WGS84 \ - +to +proj=kav5 +ellps=WGS84 +units=m \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test RSO Borneo projection (re: ticket 62)" >> ${OUT} -# -$EXE +proj=latlong +a=6377298.556 +rf=300.8017 \ - +to +proj=omerc +a=6377298.556 +rf=300.8017 +lat_0=4 +lonc=115 \ - +alpha=53d18\'56.9537 +gamma=53d7\'48.3685 +k_0=0.99984 \ - +x_0=590476.87 +y_0=442857.65 \ - -E >>${OUT} <> ${OUT} -echo "Test extended transverse mercator (#97)" >> ${OUT} -# -$EXE +proj=etmerc +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 \ - +to +proj=latlong +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo "Test extended transverse mercator inverse (#97)" >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=etmerc +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 \ - -E >>${OUT} <> ${OUT} -echo "Test transverse mercator (#97)" >> ${OUT} -# -$EXE +proj=tmerc +approx +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 \ - +to +proj=latlong +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo "Test transverse mercator inverse (#97)" >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=tmerc +approx +k=0.998 +lon_0=-20 +datum=WGS84 +x_0=10000 +y_0=20000 \ - -E >>${OUT} <> ${OUT} -echo "Test robinson projection (#113)" >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=robin +datum=WGS84 \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test hammer projection (pull request #329)" >> ${OUT} -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=hammer +datum=WGS84 \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test healpix forward projection on sphere" >> ${OUT} -$EXE +proj=latlong +R=1 +lon_0=0 \ - +to +proj=healpix +R=1 +lon_0=0 -f '%.'5'f' \ - -E >>${OUT} <>${OUT} <> ${OUT} -$EXE +proj=latlong +a=1 +lon_0=0 +ellps=WGS84 \ - +to +proj=healpix +a=1 +lon_0=0 +ellps=WGS84 -f '%.'5'f' \ - -E >>${OUT} <>${OUT} <> ${OUT} -$EXE +proj=latlong +a=1 +lon_0=0 +ellps=WGS84 \ - +to +proj=healpix +a=1 +lon_0=0 +ellps=WGS84 -f '%.'5'f' -I\ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test rHEALPix forward projection on sphere north=0 south=0" >> ${OUT} -$EXE +proj=latlong +R=5 \ - +to +proj=rhealpix +R=5 +north_square=0 +south_square=0 -f '%.'5'f' \ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix forward projection on sphere north=1 south=1" >> ${OUT} -$EXE +proj=latlong +R=5 \ - +to +proj=rhealpix +R=5 +north_square=1 +south_square=1 -f '%.'5'f' \ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix inverse projection on sphere north=0 south=0" >> ${OUT} -$EXE +proj=latlong +R=5 \ - +to +proj=rhealpix +R=5 +north_square=0 +south_square=0 -f '%.'5'f' -I\ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix inverse projection on sphere north=1 south=1" >> ${OUT} -$EXE +proj=latlong +R=5 \ - +to +proj=rhealpix +R=5 +north_square=1 +south_square=1 -f '%.'5'f' -I\ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix forward projection on ellipsoid north=0 south=0" >> ${OUT} -$EXE +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882\ - +to +proj=rhealpix +a=5 +e=0.8 +r_a=4.3220011711888882 +north_square=0 +south_square=0 -f '%.'5'f' \ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix forward projection on ellipsoid north=1 south=1" >> ${OUT} -$EXE +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882\ - +to +proj=rhealpix +a=5 +e=0.8 +r_a=4.3220011711888882 +north_square=1 +south_square=1 -f '%.'5'f' \ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix inverse projection on ellipsoid north=0 south=0" >> ${OUT} -$EXE +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882\ - +to +proj=rhealpix +a=5 -I +e=0.8 +r_a=4.3220011711888882 +north_square=0 +south_square=0 -f '%.'5'f'\ - -E >>${OUT} <> ${OUT} -echo "Test rHEALPix inverse projection on ellipsoid north=1 south=1" >> ${OUT} -$EXE +proj=latlong +a=5 +e=0.8 +r_a=4.3220011711888882\ - +to +proj=rhealpix +a=5 -I +e=0.8 +r_a=4.3220011711888882 +north_square=1 +south_square=1 -f '%.'5'f'\ - -E >>${OUT} <> ${OUT} -echo "Test geos projection" >> ${OUT} -echo "Test geos on a sphere" >> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere -I -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 -I -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere +sweep=x -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 +sweep=x -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=sphere +sweep=x -I -E >>${OUT} <> ${OUT} -$EXE +proj=latlong +ellps=sphere \ - +to +proj=geos +h=35785831.0 +lon_0=0 +ellps=WGS84 +sweep=x -I -E >>${OUT} <> ${OUT} -echo "Test the Natural Earth Projection" >> ${OUT} -$EXE +proj=latlong +a=6371008.7714 +b=6371008.7714 \ - +to +proj=natearth +a=6371008.7714 +b=6371008.7714 -f '%.'7'f' \ - -E >>${OUT} <> ${OUT} -echo "Test the Natural Earth II Projection" >> ${OUT} -$EXE +proj=latlong +a=6371008.7714 +b=6371008.7714 \ - +to +proj=natearth2 +a=6371008.7714 +b=6371008.7714 -f '%.'7'f' \ - -E >>${OUT} <> ${OUT} -echo "Test the Compact Miller projection" >> ${OUT} -$EXE +proj=latlong +a=6371008.7714 +b=6371008.7714 \ - +to +proj=comill +a=6371008.7714 +b=6371008.7714 -f '%.'7'f' \ - -E >>${OUT} <> ${OUT} -echo "Test pconic (#148)" >> ${OUT} -# -$EXE +proj=latlong +datum=WGS84 \ - +to +proj=pconic +units=m +lat_1=20n +lat_2=60n +lon_0=60W +datum=WGS84 \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test laea" >> ${OUT} -# -$EXE -f '%.12f' \ - +proj=laea +lat_0=45 +lon_0=-100 +units=m +datum=WGS84 \ - +to +proj=latlong +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo "Test forward calcofi projection" >> ${OUT} -$EXE +proj=latlong +ellps=clrk66 \ - +to +proj=calcofi +ellps=clrk66 \ - -E >>${OUT} <> ${OUT} -$EXE +proj=calcofi +ellps=clrk66 \ - +to +proj=longlat +ellps=clrk66 \ - -E >>${OUT} <> ${OUT} -echo "Check inverse error handling with ob_tran (#225)" >> ${OUT} -$EXE +proj=ob_tran \ - +o_proj=moll +a=6378137 +es=0 +o_lon_p=0 +o_lat_p=0 +lon_0=180 \ - -E >>${OUT} <> ${OUT} -$EXE -I +proj=ob_tran \ - +o_proj=moll +a=6378137 +es=0 +o_lon_p=0 +o_lat_p=0 +lon_0=180 \ - -E >>${OUT} <> ${OUT} -echo "Test MGI datum gives expected results (#207)" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=latlong +datum=WGS84 \ - +to +init=epsg:31284 \ - -E >>${OUT} <> ${OUT} -echo "Test omerc sensitivity with locations 90d from origin(#114)" >> ${OUT} -# -$EXE -f '%.8f' \ - +proj=latlong +ellps=WGS84 \ - +to +proj=omerc +ellps=WGS84 +lon_1=62.581150 +lat_1=74.856102 \ - +lon_2=53.942810 +lat_2=74.905884 +units=km +no_rot \ - -E >>${OUT} <> ${OUT} -echo "Test omerc differences between poles (#190)" >> ${OUT} -# First, north pole. -$EXE -f '%.3f' \ - +proj=latlong +ellps=WGS84 \ - +to +proj=omerc +ellps=WGS84 +datum=WGS84 +no_rot \ - +lon_1=-27 +lat_1=70 +lon_2=-38 +lat_2=80 +lat_0=70 \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test qsc" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=latlong +datum=WGS84 \ - +to +proj=qsc +datum=WGS84 \ - -E >>${OUT} <>${OUT} <> ${OUT} -echo "Test bug 229" >> ${OUT} -# -$EXE -f '%.13f' \ - +init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84 +towgs84=0,0,0 \ - +to +proj=latlong +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo "Test bug 229 (2)" >> ${OUT} -# -$EXE -f '%.13f' \ - +init=epsg:4326 +to +init=epsg:4326 \ - -E >>${OUT} <> ${OUT} -echo "Test bug 244 " >> ${OUT} -# -$EXE -f '%.8f' \ - +init=epsg:4326 \ - +to +proj=aeqd +lon_0=130.0 +lat_0=40.0 +a=6378137 +b=6378137 +units=m \ - -E >>${OUT} <> ${OUT} -echo "Test bug 244 (2)" >> ${OUT} -# -$EXE -f '%.11f' \ - +proj=aeqd +lon_0=130.0 +lat_0=40.0 +a=6378137 +b=6378137 +units=m \ - +to +init=epsg:4326 \ - -E >>${OUT} <> ${OUT} -echo "Test bug 245 (use +datum=carthage)" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=longlat +datum=WGS84 +to +proj=utm +zone=32 +datum=carthage \ - -E >>${OUT} <> ${OUT} -echo "Test bug 245 (use expansion of +datum=carthage)" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=longlat +datum=WGS84 +to +proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-263.0,6.0,431.0 \ - -E >>${OUT} <> ${OUT} -echo "Test SCH forward projection" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=latlong +datum=WGS84 +to +proj=sch +datum=WGS84 +plat_0=30.0 +plon_0=45.0 \ - +phdg_0=-12.0 +nodefs \ - -E >> ${OUT} <> ${OUT} -echo "Test SCH inverse projection" >> ${OUT} -# -$EXE -f '%.6f' \ - +proj=sch +datum=WGS84 +plat_0=30.0 +plon_0=45.0 +phdg_0=-12.0 +nodefs +to \ - +proj=latlong +datum=WGS84 \ - -E >> ${OUT} <> ${OUT} -echo "Test issue #316 (switch utm to use etmerc)" >> ${OUT} -# -$EXE -f '%.6f' \ - +proj=latlong +datum=WGS84 +to +proj=utm +zone=35 +datum=WGS84 \ - -E >>${OUT} <> ${OUT} -echo "Test issue #316 (switch utm to use etmerc)" >> ${OUT} -# -$EXE -f '%.6f' \ - +proj=latlong +datum=WGS84 +to +proj=etmerc +datum=WGS84 +k=0.9996 +lon_0=27 +x_0=500000 -f %.6f \ - -E >>${OUT} <> ${OUT} -echo "Test nzmg forward projection" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=latlong +datum=WGS84 +to \ - +proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=WGS84 +units=m \ - -E >> ${OUT} <> ${OUT} -echo "Test nzmg inverse projection" >> ${OUT} -# -$EXE -f '%.7f' \ - +proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=WGS84 +units=m +to \ - +proj=latlong +datum=WGS84 \ - -E >> ${OUT} <> ${OUT} -echo "Test patterson forward projection" >> ${OUT} -# -$EXE -f '%0.8f' \ - +proj=latlong +datum=WGS84 \ - +to +proj=patterson +a=6371008.7714 +b=6371008.7714 +units=m \ - -E >> ${OUT} <> ${OUT} -echo "Test patterson inverse projection" >> ${OUT} -# -$EXE -f '%0.3f' \ - +proj=patterson +a=6371008.7714 +b=6371008.7714 +units=m \ - +to +proj=latlong +datum=WGS84 \ - -E >> ${OUT} <> ${OUT} -echo "Test Web Mercator to avoid issue #834 in the future" >> ${OUT} -# -$EXE -f '%0.3f' \ - +proj=utm +zone=15 +datum=NAD83 \ - +to +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 \ - +k=1.0 +units=m +nadgrids=@null \ - -E >> ${OUT} <> ${OUT} -echo "Test vto_meter" >> ${OUT} -# -$EXE -f '%0.3f' \ - +proj=longlat +a=1 +b=1 +vto_meter=1000 \ - +to +proj=longlat +a=1 +b=1 \ - -E >> ${OUT} <> ${OUT} <> ${OUT} <> ${OUT} <> ${OUT} -echo "Test EPSG:4326 to EPSG:32631" >> ${OUT} -# Input is latitude, longitude order -$EXE EPSG:4326 +to EPSG:32631 -E >> ${OUT} <> ${OUT} -echo "Test EPSG:32631 to EPSG:4326" >> ${OUT} -# Input is latitude, longitude order -$EXE EPSG:32631 EPSG:4326 -E >> ${OUT} <> ${OUT} -echo "Check we allow ellipsoids up to a 0.59% relative difference in size" >> ${OUT} - -$EXE +proj=longlat +R=3376200 +to IAU_2015:49935 -E >> ${OUT} <> ${OUT} -echo "Test EPSG:4896 to EPSG:7930" >> ${OUT} -# Here we test that 4D coordinates are handled by cs2cs. Due to backwards -# compatibility, the t-component is not written to STDOUT as part of the -# coordinate data, but rather as part of the string that follows the xyz -# components. This is only seen by users when the -E option is used. Which -# means that this test also experience that behavior. -$EXE -f %.4f EPSG:4896 EPSG:7930 -E >> ${OUT} <> ${OUT} -echo "Test ITRF2000 to ITRF1993" >> ${OUT} -# Here we test that HUGE_VAL is passed as the time value if not explicitly -# specified -$EXE -f %.7f ITRF2000 ITRF1993 -E >> ${OUT} <> ${OUT} -echo "Check ob_tran with o_proj=longlat (#1525)" >> ${OUT} -$EXE -f %.7f +proj=longlat +ellps=GRS80 +to +proj=ob_tran +o_proj=longlat +lon_0=10 +o_lat_p=90 +ellps=GRS80 -E >>${OUT} <> ${OUT} -$EXE -f %.7f -I +proj=longlat +ellps=GRS80 +to +proj=ob_tran +o_proj=longlat +lon_0=10 +o_lat_p=90 +ellps=GRS80 -E >>${OUT} <> ${OUT} -echo "Check +init=epsg:4326 +over +to +init=epsg:3857 +over" >> ${OUT} -$EXE -f %.7f +init=epsg:4326 +over +to +init=epsg:3857 +over -E >>${OUT} <> ${OUT} -echo "Check +proj=longlat +over +datum=WGS84 +to proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +over" >> ${OUT} -$EXE -f %.7f +proj=longlat +over +datum=WGS84 +to proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +over -E >>${OUT} <> ${OUT} -echo "Test EPSG:xxxx EPSG:yyyy filename" >> ${OUT} -echo "2 49" > tmp.txt -$EXE EPSG:4326 EPSG:4326 tmp.txt -E >> ${OUT} -rm tmp.txt - -echo "##############################################################" >> ${OUT} -echo "Test Colombia Urban" >> ${OUT} -$EXE -f %.3f EPSG:4686 EPSG:6247 -E >> ${OUT} <> ${OUT} -echo "Test effect of --authority (https://github.com/OSGeo/PROJ/issues/2442)" >> ${OUT} -echo "The first result should use the EPSG:8076 operation" >> ${OUT} -echo "and the second one a no-op" >> ${OUT} -$EXE -E ITRF96 ITRF2014 >> ${OUT} <> ${OUT} <> ${OUT} -echo "Test effect of --accuracy" >> ${OUT} -$EXE -E --accuracy 0.05 EPSG:4326 EPSG:4258 >> ${OUT} <> ${OUT} -echo "Test effect of --no-ballpark" >> ${OUT} -$EXE -E --no-ballpark EPSG:4267 EPSG:4258 >> ${OUT} <> ${OUT} -echo "Check that we can use a transformation spanning the antimeridian (should use Pulkovo 1942 to WGS 84 (20))" >> ${OUT} -$EXE -E "Pulkovo 1942" "WGS 84" >> ${OUT} <> ${OUT} -echo "Check that we can use a transformation spanning the antimeridian (should use Pulkovo 1942 to WGS 84 (20))" >> ${OUT} -$EXE -E EPSG:2636 "WGS 84" >> ${OUT} <> ${OUT} -echo "Check that we select the operation that has the smallest area of use, when 2 have the same accuracy" >> ${OUT} -$EXE -E EPSG:4326 "NAD83(HARN)" >> ${OUT} <> ${OUT} -echo "Check that we promote CRS specified by name to 3D when the other one is 3D" >> ${OUT} -$EXE -d 3 -E "WGS 84" "WGS 84 + EGM96 height" >> ${OUT} <> ${OUT} <> ${OUT} -echo "Test input file with UTF-8 BOM marker" >> ${OUT} -$EXE -d 3 -E EPSG:4326 EPSG:32631 ${TEST_CLI_DIR}/input_with_utf8_bom.txt >> ${OUT} - -echo "##############################################################" >> ${OUT} -echo "Test cs2cs -W0" >> ${OUT} -# -$EXE -W0 +proj=latlong +datum=WGS84 +to +proj=latlong +datum=WGS84 -E >>${OUT} <> ${OUT} -echo "Test cs2cs -W8" >> ${OUT} -# -$EXE -W8 +proj=latlong +datum=WGS84 +to +proj=latlong +datum=WGS84 -E >>${OUT} <> ${OUT} -echo "Test cs2cs -W" >> ${OUT} -# -PROJ_DISPLAY_PROGRAM_NAME=NO $EXE -W +proj=latlong +datum=WGS84 +to +proj=latlong +datum=WGS84 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs -W9" >> ${OUT} -# -PROJ_DISPLAY_PROGRAM_NAME=NO $EXE -W9 +proj=latlong +datum=WGS84 +to +proj=latlong +datum=WGS84 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs -W10" >> ${OUT} -# -PROJ_DISPLAY_PROGRAM_NAME=NO $EXE -W10 +proj=latlong +datum=WGS84 +to +proj=latlong +datum=WGS84 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs --only-best (grid missing) for NTF to RGF93" >> ${OUT} -# -$EXE --only-best NTF RGF93 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs --only-best (working) for EPSG:4326+5773 to EPSG:4979" >> ${OUT} -# -$EXE --only-best EPSG:4326+5773 EPSG:4979 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs --only-best (working) for EPSG:4326 to GDA94 " >> ${OUT} -# -$EXE --only-best EPSG:4326 GDA94 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs --only-best (working) for GDA94 to EPSG:4326 " >> ${OUT} -# -$EXE --only-best GDA94 EPSG:4326 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs --only-best (working) for EPSG:4326 to GDA2020 " >> ${OUT} -# -$EXE --only-best EPSG:4326 GDA2020 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs --only-best (working) for GDA2020 to EPSG:4326 " >> ${OUT} -# -$EXE --only-best GDA2020 EPSG:4326 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs (grid missing) for EPSG:4326+3855 to EPSG:4979" >> ${OUT} -# -$EXE EPSG:4326+3855 EPSG:4979 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs --only-best=no (grid missing) for EPSG:4326+3855 to EPSG:4979" >> ${OUT} -# -$EXE --only-best=no EPSG:4326+3855 EPSG:4979 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs --only-best (grid missing) for EPSG:4326+3855 to EPSG:4979" >> ${OUT} -# -$EXE --only-best EPSG:4326+3855 EPSG:4979 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs --only-best=yes (grid missing) for EPSG:4326+3855 to EPSG:4979" >> ${OUT} -# -$EXE --only-best=yes EPSG:4326+3855 EPSG:4979 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs (grid missing) with PROJ_ONLY_BEST_DEFAULT=YES for EPSG:4326+3855 to EPSG:4979" >> ${OUT} -# -PROJ_ONLY_BEST_DEFAULT=YES $EXE EPSG:4326+3855 EPSG:4979 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs (grid missing) with only_best_default=on in proj.ini" >> ${OUT} - -echo "only_best_default=on" > proj.ini - -# -PROJ_DATA=$PWD:$PROJ_DATA $EXE EPSG:4326+3855 EPSG:4979 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs --only-best (grid missing)" >> ${OUT} -# -$EXE --only-best NAD27 NAD83 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs --only-best --no-ballpark (grid missing)" >> ${OUT} -# -PROJ_DISPLAY_PROGRAM_NAME=NO $EXE --only-best --no-ballpark EPSG:4326+3855 EPSG:4979 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs (grid missing) with scenario of https://github.com/OSGeo/PROJ/issues/3607 that we are using the 'NAD27 to WGS 84 (6)' DMA-ConusW transformation" >> ${OUT} - -mkdir tmp_dir -cp $PROJ_DATA/proj.db tmp_dir - -PROJ_DATA=tmp_dir $EXE +proj=latlong +datum=WGS84 +to +proj=utm +zone=10 +datum=NAD27 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs (grid missing) with scenario of https://github.com/OSGeo/PROJ/issues/3613 that we are using a WGS 84 intermediate to do NAD27 to NAD83" >> ${OUT} - -mkdir tmp_dir -cp $PROJ_DATA/proj.db tmp_dir - -PROJ_DATA=tmp_dir $EXE EPSG:26915 EPSG:26715 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs (grid missing) with scenario of https://lists.osgeo.org/pipermail/proj/2023-April/011003.html" >> ${OUT} - -mkdir tmp_dir -cp $PROJ_DATA/proj.db tmp_dir - -echo 39 -3 0 | PROJ_DATA=tmp_dir PROJ_DEBUG=2 $EXE EPSG:4326+5773 EPSG:4326+5782 -E 2>&1|grep -v pj_open_lib >> ${OUT} - -rm -rf tmp_dir - -echo "##############################################################" >> ${OUT} -echo "Test cs2cs (grid missing) --only-best=no with scenario of https://lists.osgeo.org/pipermail/proj/2023-April/011003.html" >> ${OUT} - -mkdir tmp_dir -cp $PROJ_DATA/proj.db tmp_dir - -echo 39 -3 0 | PROJ_DATA=tmp_dir PROJ_DEBUG=2 $EXE --only-best=no EPSG:4326+5773 EPSG:4326+5782 -E 2>&1|grep -v pj_open_lib >> ${OUT} - -rm -rf tmp_dir - -echo "##############################################################" >> ${OUT} -echo "Test cs2cs (grid missing) --only-best with scenario of https://lists.osgeo.org/pipermail/proj/2023-April/011003.html" >> ${OUT} - -mkdir tmp_dir -cp $PROJ_DATA/proj.db tmp_dir - -echo 39 -3 0 | PROJ_DISPLAY_PROGRAM_NAME=NO PROJ_DATA=tmp_dir PROJ_DEBUG=2 $EXE --only-best EPSG:4326+5773 EPSG:4326+5782 -E 2>&1|grep -v pj_open_lib >> ${OUT} - -rm -rf tmp_dir - -echo "##############################################################" >> ${OUT} -echo "Test cs2cs grid missing with @gridname" >> ${OUT} - -$EXE +proj=longlat +datum=WGS84 +units=m +geoidgrids=@i_dont_exist.tif +vunits=m +no_defs +type=crs +to EPSG:4979 >> ${OUT} <> ${OUT} -echo "Test cs2cs geographic -> geocentric using BETA2007.gsb grid" >> ${OUT} - -$EXE EPSG:4746 EPSG:4978 >> ${OUT} <> ${OUT} -echo "Test cs2cs geocentric -> geographic using BETA2007.gsb grid" >> ${OUT} - -$EXE EPSG:4978 EPSG:4746 >> ${OUT} <> ${OUT} -echo "Test cs2cs geographic -> geocentric, normally using BETA2007.gsb grid but missing" >> ${OUT} - -mkdir tmp_dir -cp $PROJ_DATA/proj.db tmp_dir - -PROJ_DATA=tmp_dir $EXE EPSG:4746 EPSG:4978 >> ${OUT} <> ${OUT} -echo "Test cs2cs geocentric -> geographic, normally using BETA2007.gsb grid but missing" >> ${OUT} - -mkdir tmp_dir -cp $PROJ_DATA/proj.db tmp_dir - -PROJ_DATA=tmp_dir $EXE EPSG:4978 EPSG:4746 >> ${OUT} <> ${OUT} -echo "Test cs2cs geographic -> geocentric outside BETA2007.gsb grid" >> ${OUT} - -$EXE EPSG:4746 EPSG:4978 >> ${OUT} <> ${OUT} -echo "Test cs2cs geocentric -> geographic outside BETA2007.gsb grid" >> ${OUT} - -$EXE EPSG:4978 EPSG:4746 >> ${OUT} <> ${OUT} -echo "Test Similarity Transformation (example from EPSG Guidance Note 7.2)" >> ${OUT} -# -$EXE -d 3 EPSG:23031 EPSG:25831 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test inverse of Similarity Transformation (example from EPSG Guidance Note 7.2)" >> ${OUT} -# -$EXE -d 3 EPSG:25831 EPSG:23031 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test Similarity Transformation through CompoundCRS" >> ${OUT} -# Cf https://github.com/OSGeo/PROJ/issues/3854#issuecomment-1689964773 -# -$EXE -d 3 EPSG:3912 EPSG:3794 -E >>${OUT} 2>&1 <>${OUT} 2>&1 <> ${OUT} -echo "Test --s_epoch" >> ${OUT} -# -$EXE -d 8 --s_epoch 2022 "ITRF2014" "GDA2020" -E >>${OUT} 2>&1 <> ${OUT} -echo "Test --t_epoch" >> ${OUT} -# -$EXE -d 8 --t_epoch 2022 "GDA2020" "ITRF2014" -E >>${OUT} 2>&1 <> ${OUT} -echo "Test +proj=topocentric +datum=WGS84 +X_0=-3982059.42 +Y_0=3331314.88 +Z_0=3692463.58 +no_defs +type=crs +to EPSG:4978" >> ${OUT} -# -$EXE -d 3 +proj=topocentric +datum=WGS84 +X_0=-3982059.42 +Y_0=3331314.88 +Z_0=3692463.58 +no_defs +type=crs +to EPSG:4978 -E >>${OUT} 2>&1 <> ${OUT} -echo "Test cs2cs EPSG:5488 (RGAF09) to EPSG:4559+5757 (RRAF 1991 / UTM zone 20N + Guadeloupe 1988 height)" >> ${OUT} -echo "Check that we use the horizontal transformation for Guadeloupe (RRAF 1991 to RGAF09 (2)), and not the one for Martinique" >> ${OUT} -# -if test "${TIFF_ENABLED}" = "YES"; then -PROJ_DATA=${PROJ_DATA}:${PROJ_DATA}/tests $EXE -d 3 EPSG:5488 EPSG:4559+5757 >> ${OUT} <> ${OUT} -fi - - -# Done! -# do 'diff' with distribution results -echo "diff ${OUT} with ${OUT}.dist" -diff -u -b ${OUT} ${TEST_CLI_DIR}/${OUT}.dist -if [ $? -ne 0 ] ; then - echo "" - echo "PROBLEMS HAVE OCCURRED" - echo "test file ${OUT} saved" - echo - echo "----------------------------------------------------------" - echo "${OUT}" - echo "----------------------------------------------------------" - cat ${OUT} - echo "----------------------------------------------------------" - exit 100 -else - echo "TEST OK" - echo "test file ${OUT} removed" - echo - /bin/rm -f ${OUT} - exit 0 -fi diff --git a/test/cli/tf_out.dist b/test/cli/tf_out.dist deleted file mode 100644 index 9f1778e723..0000000000 --- a/test/cli/tf_out.dist +++ /dev/null @@ -1,13 +0,0 @@ -Test healpix inverse projection on sphere -0 0.7853981633974483 0.00000 41.81031 0.00000 --1.5707963267948966 0 -90.00000 0.00000 0.00000 -0.0 0.0 0.00000 0.00000 0.00000 -0.0 3.9269908169872414 0.00000 41.81031 0.00000 -0.0 -3.9269908169872414 0.00000 -41.81031 0.00000 -7.853981633974483 0.0 90.00000 0.00000 0.00000 --7.853981633974483 0.0 -90.00000 0.00000 0.00000 --15.707963267948966 0.0 -180.00000 0.00000 0.00000 --11.780972450961723 7.853981633974483 -180.00000 90.00000 0.00000 --11.780972450961723 -7.853981633974483 -180.00000 -90.00000 0.00000 -1.437378399445537 5.364369216432778 0.00000 60.00000 0.00000 -1.437378399445537 -5.364369216432778 0.00000 -60.00000 0.00000 diff --git a/test/cli/tv_out.dist b/test/cli/tv_out.dist deleted file mode 100644 index 5e748b87f7..0000000000 --- a/test/cli/tv_out.dist +++ /dev/null @@ -1,655 +0,0 @@ -############################################################## -Test raw ellipse to raw ellipse -79d58'00.000"W 37d02'00.000"N 0.0 79d58'W 37d2'N 0.000 -79d58'00.000"W 36d58'00.000"N 0.0 79d58'W 36d58'N 0.000 -############################################################## -Test NAD27 to raw ellipse -79d00'00.000"W 35d00'00.000"N 0.0 79dW 35dN 0.000 -############################################################## -Between two 3parameter approximations on same ellipsoid -0d00'00.000"W 0d00'00.000"N 0.0 0dE 0dN 0.000 -79d00'00.000"W 45d00'00.000"N 0.0 78d59'59.821"W 44d59'59.983"N 0.000 -############################################################## -3param to raw ellipsoid on same ellipsoid -0d00'00.000"W 0d00'00.000"N 0.0 0dE 0dN 0.000 -79d00'00.000"W 45d00'00.000"N 0.0 79dW 45dN 0.000 -############################################################## -Test simple prime meridian handling. -0d00'00.000"W 0d00'00.000"N 0.0 1dW 0dN 0.000 -79d00'00.000"W 45d00'00.000"N 0.0 80dW 45dN 0.000 -############################################################## -Test support for the lon_wrap switch. -1d00'00.000"W 10d00'00.000"N 0.0 359dE 10dN 0.000 -0d00'00.000"W 10d00'00.000"N 0.0 0dE 10dN 0.000 -0d00'00.000"E 10d00'00.000"N 0.0 0dE 10dN 0.000 -1d00'00.000"E 45d00'00.000"N 0.0 1dE 45dN 0.000 -179d00'00.000"E 45d00'00.000"N 0.0 179dE 45dN 0.000 -181d00'00.000"E 45d00'00.000"N 0.0 181dE 45dN 0.000 -350d00'00.000"E 45d00'00.000"N 0.0 350dE 45dN 0.000 -370d00'00.000"E 45d00'00.000"N 0.0 10dE 45dN 0.000 -############################################################## -Test simple prime meridian handling within a projection. -500000 3000000 113dW 27d7'20.891"N 0.000 -############################################################## -Test input in grad -64.44444444 2.9586342556 760724.02 3457334.86 0.00 -############################################################## -Test geocentric x/y/z generation. -0d00'00.001"W 0d00'00.001"N 0.0 6378137.00 -0.03 0.03 -0d00'00.001"W 0d00'00.001"N 10.0 6378147.00 -0.03 0.03 -79d00'00.000"W 45d00'00.000"N 0.0 861996.98 -4434590.01 4487348.41 -45d00'00.000"W 89d59'59.990"N 0.0 0.22 -0.22 6356752.31 -############################################################## -Test geocentric x/y/z consumption. -6378137.00 -0.00 0.00 0dE 0dN 0.000 -6378147.00 -0.00 0.00 0dE 0dN 10.000 -861996.98 -4434590.01 4487348.41 79dW 45dN 0.001 -0.00 -0.00 6356752.31 0dE 90dN -0.004 -############################################################# -Test conversion from geodetic latlong to geocentric latlong -0d00'00.000"W 0d00'00.000"N 0.0 0dE 0dN 0.000 -79d00'00.000"W 45d00'00.000"N 0.0 79dW 44d48'27.276"N 0.000 -12d00'00.000"W 45d00'00.000"N 0.0 12dW 44d48'27.276"N 0.000 -0d00'00.000"W 90d00'00.000"N 0.0 0dE 90dN 0.000 -############################################################# -Test conversion from geocentric latlong to geodetic latlong -0d00'00.000"W 0d00'00.000"N 0.0 0dE 0dN 0.000 -79d00'00.000"W 44d48'27.276"N 0.000 79dW 45dN 0.000 -12d00'00.000"W 44d48'27.276"N 0.0 12dW 45dN 0.000 -0d00'00.000"W 90d00'00.000"N 0.0 0dE 90dN 0.000 -############################################################## -Test stere projection (re: win32 ticket 12) -105 40 5577808.93 1494569.40 0.00 -############################################################## -Test stere without lat_ts (#147) -20 45 789468.08 602385.33 0.00 -############################################################## -Test sts projection (re: ticket 12) -4.897000 52.371000 383646.09 5997047.89 0.00 -383646.088858 5997047.888175 4d53'49.2"E 52d22'15.6"N 0.000 -############################################################## -Test RSO Borneo projection (re: ticket 62) -116d2'11.12630 5d54'19.90183 704570.40 653979.68 0.00 -############################################################## -Test extended transverse mercator (#97) -10000 20000 20dW 0dN 0.000 -500000 2000000 15d22'16.108"W 17d52'53.478"N 0.000 -1000000 2000000 10d40'55.532"W 17d42'48.526"N 0.000 -2000000 2000000 1d32'21.33"W 17d3'47.233"N 0.000 -4000000 2000000 15d4'42.357"E 14d48'56.372"N 0.000 -############################################################## -Test extended transverse mercator inverse (#97) -0dN 0.000 2278817.00 20000.00 0.00 -15d22'16.108"W 17d52'53.478"N 0.000 499999.99 2000000.01 0.00 -10d40'55.532"W 17d42'48.526"N 0.000 999999.99 1999999.99 0.00 -1d32'21.33"W 17d3'47.233"N 0.000 2000000.00 1999999.99 0.00 -15d4'42.357"E 14d48'56.372"N 0.000 4000000.00 2000000.01 0.00 -############################################################## -Test transverse mercator (#97) -10000 20000 20dW 0dN 0.000 -500000 2000000 15d22'16.108"W 17d52'53.478"N 0.000 -1000000 2000000 10d40'55.532"W 17d42'48.526"N 0.000 -2000000 2000000 1d32'21.399"W 17d3'47.244"N 0.000 -4000000 2000000 15d4'6.539"E 14d49'7.331"N 0.000 -############################################################## -Test transverse mercator inverse (#97) -0dN 0.000 2278812.96 20000.00 0.00 -15d22'16.108"W 17d52'53.478"N 0.000 499999.99 2000000.01 0.00 -10d40'55.532"W 17d42'48.526"N 0.000 999999.99 1999999.99 0.00 -1d32'21.33"W 17d3'47.233"N 0.000 2000000.03 1999999.62 0.00 -15d4'42.357"E 14d48'56.372"N 0.000 3999967.33 1999855.31 0.00 -############################################################## -Test robinson projection (#113) --30 40 -2612095.95 4276351.58 0.00 --35 45 -2963455.42 4805073.65 0.00 -20 40 1741397.30 4276351.58 0.00 --2612095.95 4276351.58 0.00 30d0'0.004"W 40d0'0.066"N 0.000 --2963455.42 4805073.65 0.00 35dW 45dN 0.000 -1741397.30 4276351.58 0.00 20d0'0.002"E 40d0'0.066"N 0.000 -############################################################## -Test hammer projection (pull request #329) --30 40 -2711575.08 4395506.62 0.00 --35 45 -2964412.70 4929091.33 0.00 -20 40 1811748.54 4377349.50 0.00 --2711575.08 4395506.62 0.00 30dW 40dN 0.000 --2964412.70 4929091.33 0.00 35dW 45dN 0.000 -1811748.54 4377349.50 0.00 20dE 40dN 0.000 -############################################################## -Test healpix forward projection on sphere -0 41.81031 0.00000 0.78540 0.00000 --90 0 -1.57080 0.00000 0.00000 -0 0 0.00000 0.00000 0.00000 -0 41.810314895778596 0.00000 3.92699 0.00000 -0 -41.810314895778596 0.00000 -3.92699 0.00000 -90.0 0 7.85398 0.00000 0.00000 --90.0 0 -7.85398 0.00000 0.00000 --180 0 -15.70796 0.00000 0.00000 --180 90.0 -11.78097 7.85398 0.00000 --180 -90.0 -11.78097 -7.85398 0.00000 -0 60.0 1.43738 5.36437 0.00000 -0 -60.0 1.43738 -5.36437 0.00000 -Test healpix forward projection on ellipsoid -0 41.937853904844985 0.00000 0.78452 0.00000 --90 0 -1.56904 0.00000 0.00000 -0 0 0.00000 0.00000 0.00000 -0 41.810314895778596 0.00000 2.05479 0.00000 -0 -41.810314895778596 0.00000 -2.05479 0.00000 -90.0 0 6.78898 0.00000 0.00000 --90.0 0 -6.78898 0.00000 0.00000 --180 0 -13.57797 0.00000 0.00000 --180 90.0 -10.18348 6.78898 0.00000 --180 -90.0 -10.18348 -6.78898 0.00000 -0 60.0 0.00000 3.35128 0.00000 -0 -60.0 0.00000 -3.35128 0.00000 -Test healpix inverse projection on ellipsoid -0 0.7853981633974483 * * inf --1.5707963267948966 0 -90.10072 0.00000 0.00000 -0.0 0.0 0.00000 0.00000 0.00000 -0.0 2.0547874222147415 0.00000 39.58811 0.00000 -0.0 -2.0547874222147415 0.00000 -39.58811 0.00000 -6.788983564106746 0.0 90.00000 0.00000 0.00000 --6.788983564106746 0.0 -90.00000 0.00000 0.00000 --13.577967128213492 0.0 -180.00000 0.00000 0.00000 --10.183475346160119 6.788983564106746 -180.00000 90.00000 0.00000 --10.183475346160119 -6.788983564106746 -180.00000 -90.00000 0.00000 -0.0 3.351278550178025 0.00000 59.23640 0.00000 -0.0 -3.351278550178025 0.00000 -59.23640 0.00000 -############################################################## -Test rHEALPix forward projection on sphere north=0 south=0 --180 30.0 -15.70796 2.94524 0.00000 --180 -25.714285714285715 -15.70796 -2.55579 0.00000 -0 0 0.00000 0.00000 0.00000 -60.0 41.809314895778598 5.23599 3.92691 0.00000 -############################################################## -Test rHEALPix forward projection on sphere north=1 south=1 --180 30.0 -15.70796 2.94524 0.00000 --180 -25.714285714285715 -15.70796 -2.55579 0.00000 -0 0 0.00000 0.00000 0.00000 -60.0 41.809314895778598 5.23599 3.92691 0.00000 -############################################################## -Test rHEALPix inverse projection on sphere north=0 south=0 -0.0 0.0 0.00000 0.00000 0.00000 -0.0 3.9269908169872414 0.00000 41.81031 0.00000 -0.0 -3.9269908169872414 0.00000 -41.81031 0.00000 -7.853981633974483 0.0 90.00000 0.00000 0.00000 --7.853981633974483 0.0 -90.00000 0.00000 0.00000 -############################################################## -Test rHEALPix inverse projection on sphere north=1 south=1 -0.0 0.0 0.00000 0.00000 0.00000 -0.0 3.9269908169872414 0.00000 41.81031 0.00000 -0.0 -3.9269908169872414 0.00000 -41.81031 0.00000 -7.853981633974483 0.0 90.00000 0.00000 0.00000 --7.853981633974483 0.0 -90.00000 0.00000 0.00000 -############################################################## -Test rHEALPix forward projection on ellipsoid north=0 south=0 -0 0 0.00000 0.00000 0.00000 -0 41.810314895778596 0.00000 2.05479 0.00000 -0 -41.810314895778596 0.00000 -2.05479 0.00000 -90.0 0 6.78898 0.00000 0.00000 --90.0 0 -6.78898 0.00000 0.00000 -############################################################## -Test rHEALPix forward projection on ellipsoid north=1 south=1 -0 0 0.00000 0.00000 0.00000 -0 41.810314895778596 0.00000 2.05479 0.00000 -0 -41.810314895778596 0.00000 -2.05479 0.00000 -90.0 0 6.78898 0.00000 0.00000 --90.0 0 -6.78898 0.00000 0.00000 -############################################################## -Test rHEALPix inverse projection on ellipsoid north=0 south=0 -0.0 0.0 0.00000 0.00000 0.00000 -0.0 2.0547874222147415 0.00000 39.58811 0.00000 -0.0 -2.0547874222147415 0.00000 -39.58811 0.00000 -6.788983564106746 0.0 90.00000 0.00000 0.00000 --6.788983564106746 0.0 -90.00000 0.00000 0.00000 -############################################################## -Test rHEALPix inverse projection on ellipsoid north=1 south=1 -0.0 0.0 0.00000 0.00000 0.00000 -0.0 2.0547874222147415 0.00000 39.58811 0.00000 -0.0 -2.0547874222147415 0.00000 -39.58811 0.00000 -6.788983564106746 0.0 90.00000 0.00000 0.00000 --6.788983564106746 0.0 -90.00000 0.00000 0.00000 -############################################################## -Test geos projection -Test geos on a sphere -16d11'8" 58d35'31" 849736.77 4960015.43 0.00 --43d11'47" -22d54'30" -3780930.93 -2326595.36 0.00 -18d25'26" -33d55'31" 1608689.65 -3412115.56 0.00 -47d58'42" 29d22'11" 3825202.59 2885980.79 0.00 -Test geos on a ellipsoid -16d11'8" 58d35'31" 852862.53 4945122.70 0.00 --43d11'47" -22d54'30" -3787026.57 -2314765.32 0.00 -18d25'26" -33d55'31" 1612331.00 -3397031.37 0.00 -47d58'42" 29d22'11" 3832522.65 2872185.29 0.00 -Test inv geos on a sphere -849736.77 4960015.43 16d11'8"E 58d35'31"N 0.000 --3780930.93 -2326595.36 43d11'47"W 22d54'30"S 0.000 -1608689.65 -3412115.56 18d25'26"E 33d55'31"S 0.000 -3825202.59 2885980.79 47d58'42"E 29d22'11"N 0.000 -Test inv geos on a ellipsoid -852862.53 4945122.70 16d11'8"E 58d35'31"N 0.000 --3787026.57 -2314765.32 43d11'47"W 22d54'30"S 0.000 -1612331.00 -3397031.37 18d25'26"E 33d55'31"S 0.000 -3832522.65 2872185.29 47d58'42"E 29d22'11"N 0.000 -Test geos on a sphere with alternate sweep -16d11'8" 58d35'31" 841586.28 4961396.21 0.00 --43d11'47" -22d54'30" -3772913.22 -2339604.71 0.00 -18d25'26" -33d55'31" 1601377.77 -3415545.15 0.00 -47d58'42" 29d22'11" 3812722.89 2902474.62 0.00 -Test geos on a ellipsoid with alternate sweep -16d11'8" 58d35'31" 844731.03 4946509.59 0.00 --43d11'47" -22d54'30" -3779077.27 -2327750.87 0.00 -18d25'26" -33d55'31" 1605067.15 -3400461.47 0.00 -47d58'42" 29d22'11" 3820138.08 2888664.15 0.00 -Test inv geos on a sphere with alternate sweep -841586.28 4961396.21 16d11'8"E 58d35'31"N 0.000 --3772913.22 -2339604.71 43d11'47"W 22d54'30"S 0.000 -1601377.77 -3415545.15 18d25'26"E 33d55'31"S 0.000 -3812722.89 2902474.62 47d58'42"E 29d22'11"N 0.000 -Test inv geos on a ellipsoid with alternate sweep -844731.03 4946509.59 16d11'8"E 58d35'31"N 0.000 --3779077.27 -2327750.87 43d11'47"W 22d54'30"S 0.000 -1605067.15 -3400461.47 18d25'26"E 33d55'31"S 0.000 -3820138.08 2888664.15 47d58'42"E 29d22'11"N 0.000 -############################################################## -Test the Natural Earth Projection -0.0 0.0 0 0.0000000 0.0000000 0.0000000 0.0 0.0 -0.0 22.5 0 0.0000000 2525419.5693838 0.0000000 0.0 2525419.569383768 -0.0 45.0 0 0.0000000 5052537.3899732 0.0000000 0.0 5052537.389973222 -0.0 67.5 0 0.0000000 7400065.6562574 0.0000000 0.0 7400065.6562573705 -0.0 90.0 0 0.0000000 9062062.3947367 0.0000000 0.0 9062062.394736718 -45.0 0.0 0 4356790.0166122 0.0000000 0.0000000 4356790.016612169 0.0 -45.0 22.5 0 4253309.5449841 2525419.5693838 0.0000000 4253309.544984069 2525419.569383768 -45.0 45.0 0 3924521.5829515 5052537.3899732 0.0000000 3924521.5829515466 5052537.389973222 -45.0 67.5 0 3354937.4711558 7400065.6562574 0.0000000 3354937.47115583 7400065.6562573705 -45.0 90.0 0 2397978.2448444 9062062.3947367 0.0000000 2397978.2448443635 9062062.394736718 -90.0 0.0 0 8713580.0332243 0.0000000 0.0000000 8713580.033224339 0.0 -90.0 22.5 0 8506619.0899681 2525419.5693838 0.0000000 8506619.089968137 2525419.569383768 -90.0 45.0 0 7849043.1659031 5052537.3899732 0.0000000 7849043.165903093 5052537.389973222 -90.0 67.5 0 6709874.9423117 7400065.6562574 0.0000000 6709874.94231166 7400065.6562573705 -90.0 90.0 0 4795956.4896887 9062062.3947367 0.0000000 4795956.489688727 9062062.394736718 -135.0 0.0 0 13070370.0498365 0.0000000 0.0000000 1.3070370049836507E7 0.0 -135.0 22.5 0 12759928.6349522 2525419.5693838 0.0000000 1.2759928634952208E7 2525419.569383768 -135.0 45.0 0 11773564.7488546 5052537.3899732 0.0000000 1.177356474885464E7 5052537.389973222 -135.0 67.5 0 10064812.4134675 7400065.6562574 0.0000000 1.0064812413467491E7 7400065.6562573705 -135.0 90.0 0 7193934.7345331 9062062.3947367 0.0000000 7193934.734533091 9062062.394736718 -180.0 0.0 0 17427160.0664487 0.0000000 0.0000000 1.7427160066448677E7 0.0 -180.0 22.5 0 17013238.1799363 2525419.5693838 0.0000000 1.7013238179936275E7 2525419.569383768 -180.0 45.0 0 15698086.3318062 5052537.3899732 0.0000000 1.5698086331806187E7 5052537.389973222 -180.0 67.5 0 13419749.8846233 7400065.6562574 0.0000000 1.341974988462332E7 7400065.6562573705 -180.0 90.0 0 9591912.9793775 9062062.3947367 0.0000000 9591912.979377454 9062062.394736718 -############################################################## -Test the Natural Earth II Projection -0.0 0.0 0 0.0000000 0.0000000 0.0000000 0.00000000 0.00000000 -0.0 22.5 0 0.0000000 2531453.5708096 0.0000000 0.00000000 2531453.57080958 -0.0 45.0 0 0.0000000 5051471.5008684 0.0000000 0.00000000 5051471.50086845 -0.0 67.5 0 0.0000000 7395411.2247898 0.0000000 0.00000000 7395411.22478983 -0.0 90.0 0 0.0000000 9073776.5266281 0.0000000 0.00000000 9073776.52662810 -45.0 0.0 0 4239151.1820072 0.0000000 0.0000000 4239151.18200719 0.00000000 -45.0 22.5 0 4138348.6190424 2531453.5708096 0.0000000 4138348.61904244 2531453.57080958 -45.0 45.0 0 3830621.3388077 5051471.5008684 0.0000000 3830621.33880773 5051471.50086845 -45.0 67.5 0 3158326.3283700 7395411.2247898 0.0000000 3158326.32836996 7395411.22478983 -45.0 90.0 0 957973.3703423 9073776.5266281 0.0000000 957973.37034235 9073776.52662810 -90.0 0.0 0 8478302.3640144 0.0000000 0.0000000 8478302.36401439 0.00000000 -90.0 22.5 0 8276697.2380849 2531453.5708096 0.0000000 8276697.23808488 2531453.57080958 -90.0 45.0 0 7661242.6776155 5051471.5008684 0.0000000 7661242.67761547 5051471.50086845 -90.0 67.5 0 6316652.6567399 7395411.2247898 0.0000000 6316652.65673992 7395411.22478983 -90.0 90.0 0 1915946.7406847 9073776.5266281 0.0000000 1915946.74068470 9073776.52662810 -135.0 0.0 0 12717453.5460216 0.0000000 0.0000000 12717453.54602160 0.00000000 -135.0 22.5 0 12415045.8571273 2531453.5708096 0.0000000 12415045.85712730 2531453.57080958 -135.0 45.0 0 11491864.0164232 5051471.5008684 0.0000000 11491864.01642320 5051471.50086845 -135.0 67.5 0 9474978.9851099 7395411.2247898 0.0000000 9474978.98510988 7395411.22478983 -135.0 90.0 0 2873920.1110270 9073776.5266281 0.0000000 2873920.11102705 9073776.52662810 -180.0 0.0 0 16956604.7280288 0.0000000 0.0000000 16956604.72802880 0.00000000 -180.0 22.5 0 16553394.4761698 2531453.5708096 0.0000000 16553394.47616980 2531453.57080958 -180.0 45.0 0 15322485.3552309 5051471.5008684 0.0000000 15322485.35523090 5051471.50086845 -180.0 67.5 0 12633305.3134798 7395411.2247898 0.0000000 12633305.31347990 7395411.22478983 -180.0 90.0 0 3831893.4813694 9073776.5266281 0.0000000 3831893.48136940 9073776.52662810 -############################################################## -Test the Compact Miller projection -0.0 0.0 0 0.0000000 0.0000000 0.0000000 0.0 0.0 -0.0 22.5 0 0.0000000 2537439.6610749 0.0000000 0.0 2537439.6610749415 -0.0 45.0 0 0.0000000 5391682.4322641 0.0000000 0.0 5391682.432264133 -0.0 67.5 0 0.0000000 8661480.5102609 0.0000000 0.0 8661480.510260897 -0.0 90.0 0 0.0000000 12009484.2649167 0.0000000 0.0 12009484.264916677 -45.0 0.0 0 5003778.5880466 0.0000000 0.0000000 5003778.588046594 0.0 -45.0 22.5 0 5003778.5880466 2537439.6610749 0.0000000 5003778.588046594 2537439.6610749415 -45.0 45.0 0 5003778.5880466 5391682.4322641 0.0000000 5003778.588046594 5391682.432264133 -45.0 67.5 0 5003778.5880466 8661480.5102609 0.0000000 5003778.588046594 8661480.510260897 -45.0 90.0 0 5003778.5880466 12009484.2649167 0.0000000 5003778.588046594 12009484.264916677 -90.0 0.0 0 10007557.1760932 0.0000000 0.0000000 10007557.176093187 0.0 -90.0 22.5 0 10007557.1760932 2537439.6610749 0.0000000 10007557.176093187 2537439.6610749415 -90.0 45.0 0 10007557.1760932 5391682.4322641 0.0000000 10007557.176093187 5391682.432264133 -90.0 67.5 0 10007557.1760932 8661480.5102609 0.0000000 10007557.176093187 8661480.510260897 -90.0 90.0 0 10007557.1760932 12009484.2649167 0.0000000 10007557.176093187 12009484.264916677 -135.0 0.0 0 15011335.7641398 0.0000000 0.0000000 15011335.76413978 0.0 -135.0 22.5 0 15011335.7641398 2537439.6610749 0.0000000 15011335.76413978 2537439.6610749415 -135.0 45.0 0 15011335.7641398 5391682.4322641 0.0000000 15011335.76413978 5391682.432264133 -135.0 67.5 0 15011335.7641398 8661480.5102609 0.0000000 15011335.76413978 8661480.510260897 -135.0 90.0 0 15011335.7641398 12009484.2649167 0.0000000 15011335.76413978 12009484.264916677 -180.0 0.0 0 20015114.3521864 0.0000000 0.0000000 20015114.352186374 0.0 -180.0 22.5 0 20015114.3521864 2537439.6610749 0.0000000 20015114.352186374 2537439.6610749415 -180.0 45.0 0 20015114.3521864 5391682.4322641 0.0000000 20015114.352186374 5391682.432264133 -180.0 67.5 0 20015114.3521864 8661480.5102609 0.0000000 20015114.352186374 8661480.510260897 -180.0 90.0 0 20015114.3521864 12009484.2649167 0.0000000 20015114.352186374 12009484.264916677 -############################################################## -Test pconic (#148) --70.4 -23.65 -2240096.40 -6940342.15 0.00 --2240096.40 -6940342.15 70d24'W 23d39'S 0.000 -############################################################## -Test laea --6086629.0 4488761.0 156.058637988599 37.765458298678 0.000000000000 -############################################################## -Test forward calcofi projection -120d40'42.273"W 38d56'50.766"N 60.00 20.00 0.00 -121d9'W 34d9'N 80.00 60.00 0.00 -123d59'56.066"W 30d25'4.617"N 90.00 120.00 0.00 -Test inverse calcofi projection -60 20 120d40'42.273"W 38d56'50.766"N 0.000 -80 60 121d9'W 34d9'N 0.000 -90 120 123d59'56.066"W 30d25'4.617"N 0.000 -############################################################## -Check inverse error handling with ob_tran (#225) -300000 400000 42d45'22.377"W 85d35'28.083"N 0.000 -20000000 30000000 * * inf -Test inverse handling -10 20 -1384841.19 7581707.88 0.00 -############################################################## -Test MGI datum gives expected results (#207) -16.33 48.20 595710.3731286 5357598.4645652 0.0000000 -############################################################## -Test omerc sensitivity with locations 90d from origin(#114) -56.958381652832 72.8798 -9985.16336453 -227.67701050 0.00000000 -56.9584 72.8798 9985.16263662 -227.67701050 0.00000000 -############################################################## -Test omerc differences between poles (#190) --27 70 7846957.203 0.000 0.000 --27 80 8944338.041 204911.652 0.000 --27 89.9 10033520.737 402158.063 0.000 -163 89.9 10055728.173 404099.799 0.000 -163 80 11163496.121 397796.828 0.000 --27 -70 -7846957.203 0.000 0.000 --27 -80 -8944338.041 204911.652 0.000 --27 -89.9 -10033520.737 402158.063 0.000 -163 -89.9 -10055728.173 404099.799 0.000 -163 -80 -11163496.121 397796.828 0.000 -############################################################## -Test qsc -13 -10 2073986.9490881 -1680858.2722243 0.0000000 -2073986.94908809568733 -1680858.27222427958623 13.0000000000000 -10.0000000000000 0.0000000000000 -############################################################## -Test bug 229 -13 -10 13.0000000000000 -10.0000000000000 0.0000000000000 -############################################################## -Test bug 229 (2) -13 -10 13.0000000000000 -10.0000000000000 0.0000000000000 -############################################################## -Test bug 244 --140.100000 -87.000000 987122.41833028 -14429896.53953091 0.00000000 -############################################################## -Test bug 244 (2) -987122.418330284 -14429896.539530909 -140.10000000000 -87.00000000000 0.00000000000 -############################################################## -Test bug 245 (use +datum=carthage) -10 34 592302.9819461 3762148.7340609 0.0000000 -############################################################## -Test bug 245 (use expansion of +datum=carthage) -10 34 592302.9819461 3762148.7340609 0.0000000 -############################################################## -Test SCH forward projection -0.0 0.0 -1977112.0305592 5551475.1418378 6595.7256583 -0.0 90.0 6618337.9734775 -1152927.4060894 10055.1157181 -45.0 45.0 1630035.5650122 -342353.6396475 128.3445654 -45.1 44.9 1617547.4295637 -347855.9734973 125.4645102 -44.9 45.1 1642526.7453121 -336878.8571851 131.3265616 -30.0 45.0 1974596.2356203 787409.8217445 773.0028577 -############################################################## -Test SCH inverse projection -0. 0. 2. 45.000000 30.000000 2.000000 -0. 1000. 44.989863 29.998124 -0.000362 -1000. 0. 44.997845 30.008824 -0.000000 -1000. 1000. 44.987707 30.006948 -0.000523 -############################################################## -Test issue #316 (switch utm to use etmerc) -0 83 145723.870553 9300924.845226 0.000000 -############################################################## -Test issue #316 (switch utm to use etmerc) -0 83 145723.870553 9300924.845226 0.000000 -############################################################## -Test nzmg forward projection -175. -40. 0. 2680778.5726797 6132228.0764513 0.0000000 -############################################################## -Test nzmg inverse projection -2680778.57267967 6132228.07645127 0. 175.0000000 -40.0000000 0.0000000 -############################################################## -Test patterson forward projection --180 90 -20015114.35218637 11409566.82283130 0.00000000 --135 67.5 -15011335.76413978 8729502.05411184 0.00000000 --90 45 -10007557.17609319 5366413.42115378 0.00000000 --45 22.5 -5003778.58804659 2551415.72966934 0.00000000 -0 0 0.00000000 0.00000000 0.00000000 -45 -22.5 5003778.58804659 -2551415.72966934 0.00000000 -90 -45 10007557.17609319 -5366413.42115378 0.00000000 -135 -67.5 15011335.76413978 -8729502.05411184 0.00000000 -180 -90 20015114.35218637 -11409566.82283130 0.00000000 -############################################################## -Test patterson inverse projection --20015114.352186374 11409566.822831295 -180.000 90.000 0.000 --15011335.76413978 8729502.054111844 -135.000 67.500 0.000 --10007557.176093187 5366413.421153781 -90.000 45.000 0.000 --5003778.588046594 2551415.729669344 -45.000 22.500 0.000 -0.0 0.0 0.000 0.000 0.000 -5003778.588046594 -2551415.729669344 45.000 -22.500 0.000 -10007557.176093187 -5366413.421153781 90.000 -45.000 0.000 -15011335.76413978 -8729502.054111844 135.000 -67.500 0.000 -20015114.352186374 -11409566.822831295 180.000 -90.000 0.000 -############################################################## -Test Web Mercator to avoid issue #834 in the future -487147.594520173 4934316.46263998 -10370728.796 5552839.742 0.000 -############################################################## -Test vto_meter -0 0 1 0.000 0.000 1000.000 -0 0 1 0.000 0.000 1000.000 -0 0 1000 0.000 0.000 1.000 -0 0 1000 0.000 0.000 1.000 -############################################################## -Test EPSG:4326 to EPSG:32631 -49 3 0 500000.00 5427455.78 0.00 -############################################################## -Test EPSG:32631 to EPSG:4326 -400000 5000000 0 45d8'47.014"N 1d43'40.681"E 0.000 -############################################################## -Check we allow ellipsoids up to a 0.59% relative difference in size -0 -90 0.00 0.00 0.00 -############################################################## -Test EPSG:4896 to EPSG:7930 -3496737.2679 743254.4507 5264462.9620 3496737.7857 743254.0394 5264462.6437 2019.0 -3496737.2679 743254.4507 5264462.9620 3496737.9401 743253.8861 5264462.5497 2029.0 -############################################################## -Test ITRF2000 to ITRF1993 -59.4967 -117.61748 329.396 59.4967002 -117.6174799 329.3845529 -59.4967 -117.61748 329.396 59.4967002 -117.6174799 329.3845529 1988 -############################################################## -Check ob_tran with o_proj=longlat (#1525) --122 46 -132.0000000 46.0000000 0.0000000 -Test inverse handling --122 46 -112.0000000 46.0000000 0.0000000 -############################################################## -Check +init=epsg:4326 +over +to +init=epsg:3857 +over --181 49 -20148827.8335825 6274861.3940066 0.0000000 -############################################################## -Check +proj=longlat +over +datum=WGS84 +to proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +over --181 49 -20148827.8335825 6274861.3940066 0.0000000 -############################################################## -Test EPSG:xxxx EPSG:yyyy filename -2 49 2dN 49dE 0.000 -############################################################## -Test Colombia Urban -4.8 -74.25 122543.174 80859.033 0.000 -############################################################## -Test effect of --authority (https://github.com/OSGeo/PROJ/issues/2442) -The first result should use the EPSG:8076 operation -and the second one a no-op -49 2 49d0'0.002"N 2dE 0.018 -49 2 49dN 2dE 0.000 -############################################################## -Test effect of --accuracy -############################################################## -Test effect of --no-ballpark -############################################################## -Check that we can use a transformation spanning the antimeridian (should use Pulkovo 1942 to WGS 84 (20)) -50 179.999999999 49d59'59.36"N 179d59'52.133"W 0.000 -50 -179.999999999 49d59'59.36"N 179d59'52.133"W 0.000 -############################################################## -Check that we can use a transformation spanning the antimeridian (should use Pulkovo 1942 to WGS 84 (20)) -5540944.47 499999.999 49d59'59.36"N 179d59'52.133"W 0.000 -5540944.47 500000.001 49d59'59.36"N 179d59'52.133"W 0.000 -############################################################## -Check that we select the operation that has the smallest area of use, when 2 have the same accuracy -34 -120 33d59'59.983"N 119d59'59.955"W 0.000 -############################################################## -Check that we promote CRS specified by name to 3D when the other one is 3D -49 2 50 49.000 2.000 4.936 -49 2 0 49.000 2.000 45.064 -############################################################## -Test input file with UTF-8 BOM marker -0 3 0 500000.000 0.000 0.000 -############################################################## -Test cs2cs -W0 -0 0 0d00'00"E 0d00'00"N 0.000 -############################################################## -Test cs2cs -W8 -0 0 0d00'00.00000000"E 0d00'00.00000000"N 0.000 -############################################################## -Test cs2cs -W - --W argument missing or not in range [0,8] -program abnormally terminated -############################################################## -Test cs2cs -W9 - --W argument missing or not in range [0,8] -program abnormally terminated -############################################################## -Test cs2cs -W10 - --W argument missing or not in range [0,8] -program abnormally terminated -############################################################## -Test cs2cs --only-best (grid missing) for NTF to RGF93 -Attempt to use coordinate operation NTF to RGF93 v1 (1) failed. Grid fr_ign_gr3df97a.tif is not available. Consult https://proj.org/resource_files.html for guidance. -49 2 0 * * inf -############################################################## -Test cs2cs --only-best (working) for EPSG:4326+5773 to EPSG:4979 -49 2 0 49dN 2dE 45.064 -############################################################## -Test cs2cs --only-best (working) for EPSG:4326 to GDA94 --30 152 0 30dS 152dE 0.000 -############################################################## -Test cs2cs --only-best (working) for GDA94 to EPSG:4326 --30 152 0 30dS 152dE 0.000 -############################################################## -Test cs2cs --only-best (working) for EPSG:4326 to GDA2020 --30 152 0 30dS 152dE 0.000 -############################################################## -Test cs2cs --only-best (working) for GDA2020 to EPSG:4326 --30 152 0 30dS 152dE 0.000 -############################################################## -Test cs2cs (grid missing) for EPSG:4326+3855 to EPSG:4979 -49 2 0 49dN 2dE 0.000 -############################################################## -Test cs2cs --only-best=no (grid missing) for EPSG:4326+3855 to EPSG:4979 -49 2 0 49dN 2dE 0.000 -############################################################## -Test cs2cs --only-best (grid missing) for EPSG:4326+3855 to EPSG:4979 -Attempt to use coordinate operation Inverse of WGS 84 to EGM2008 height (1) failed. Grid us_nga_egm08_25.tif is not available. Consult https://proj.org/resource_files.html for guidance. -49 2 0 * * inf -############################################################## -Test cs2cs --only-best=yes (grid missing) for EPSG:4326+3855 to EPSG:4979 -Attempt to use coordinate operation Inverse of WGS 84 to EGM2008 height (1) failed. Grid us_nga_egm08_25.tif is not available. Consult https://proj.org/resource_files.html for guidance. -49 2 0 * * inf -############################################################## -Test cs2cs (grid missing) with PROJ_ONLY_BEST_DEFAULT=YES for EPSG:4326+3855 to EPSG:4979 -Attempt to use coordinate operation Inverse of WGS 84 to EGM2008 height (1) failed. Grid us_nga_egm08_25.tif is not available. Consult https://proj.org/resource_files.html for guidance. -49 2 0 * * inf -############################################################## -Test cs2cs (grid missing) with only_best_default=on in proj.ini -Attempt to use coordinate operation Inverse of WGS 84 to EGM2008 height (1) failed. Grid us_nga_egm08_25.tif is not available. Consult https://proj.org/resource_files.html for guidance. -49 2 0 * * inf -############################################################## -Test cs2cs --only-best (grid missing) -Attempt to use coordinate operation NAD27 to NAD83 (7) failed. Grid us_noaa_nadcon5_nad27_nad83_1986_conus.tif is not available. Consult https://proj.org/resource_files.html for guidance. -40 -100 0 * * inf -############################################################## -Test cs2cs --only-best --no-ballpark (grid missing) -Attempt to use coordinate operation Inverse of WGS 84 to EGM2008 height (1) failed. Grid us_nga_egm08_25.tif is not available. Consult https://proj.org/resource_files.html for guidance. - -cannot initialize transformation -cause: File not found or invalid -program abnormally terminated -############################################################## -Test cs2cs (grid missing) with scenario of https://github.com/OSGeo/PROJ/issues/3607 that we are using the 'NAD27 to WGS 84 (6)' DMA-ConusW transformation --111.5 45.25919444444 1402288.54 5076296.64 0.00 --111.5 45.25919444444 1402288.54 5076296.64 0.00 -############################################################## -Test cs2cs (grid missing) with scenario of https://github.com/OSGeo/PROJ/issues/3613 that we are using a WGS 84 intermediate to do NAD27 to NAD83 -569704.5660295591 4269024.671083651 569720.46 4268813.88 0.00 -569704.5660295591 4269024.671083651 569720.46 4268813.88 0.00 -############################################################## -Test cs2cs (grid missing) with scenario of https://lists.osgeo.org/pipermail/proj/2023-April/011003.html -Attempt to use coordinate operation Inverse of WGS 84 to EGM96 height (1) + ETRS89 to Alicante height (1) using ETRS89 to WGS 84 (1) failed. Grid es_ign_egm08-rednap.tif is not available. Consult https://proj.org/resource_files.html for guidance. Grid us_nga_egm96_15.tif is not available. Consult https://proj.org/resource_files.html for guidance. This might become an error in a future PROJ major release. Set the ONLY_BEST option to YES or NO. This warning will no longer be emitted (for the current transformation instance). -Using coordinate operation Transformation from EGM96 height to Alicante height (ballpark vertical transformation) -39 -3 0 39.00 -3.00 0.00 -############################################################## -Test cs2cs (grid missing) --only-best=no with scenario of https://lists.osgeo.org/pipermail/proj/2023-April/011003.html -39 -3 0 39.00 -3.00 0.00 -############################################################## -Test cs2cs (grid missing) --only-best with scenario of https://lists.osgeo.org/pipermail/proj/2023-April/011003.html -Attempt to use coordinate operation Inverse of WGS 84 to EGM96 height (1) + ETRS89 to Alicante height (1) using ETRS89 to WGS 84 (1) failed. Grid es_ign_egm08-rednap.tif is not available. Consult https://proj.org/resource_files.html for guidance. Grid us_nga_egm96_15.tif is not available. Consult https://proj.org/resource_files.html for guidance. - -cannot initialize transformation -cause: File not found or invalid -program abnormally terminated -############################################################## -Test cs2cs grid missing with @gridname -49dN 2dE 0.000 -############################################################## -Test cs2cs geographic -> geocentric using BETA2007.gsb grid -4003461.55 705832.08 4898267.79 -############################################################## -Test cs2cs geocentric -> geographic using BETA2007.gsb grid -50d30'N 10dE -0.001 -############################################################## -Test cs2cs geographic -> geocentric, normally using BETA2007.gsb grid but missing -4003461.37 705832.04 4898267.94 -############################################################## -Test cs2cs geocentric -> geographic, normally using BETA2007.gsb grid but missing -50d30'N 10dE -0.002 -############################################################## -Test cs2cs geographic -> geocentric outside BETA2007.gsb grid -4189881.02 146313.87 4790558.75 -############################################################## -Test cs2cs geocentric -> geographic outside BETA2007.gsb grid -49dN 2dE 0.002 -############################################################## -Test Similarity Transformation (example from EPSG Guidance Note 7.2) -300000 4500000 299905.060 4499796.515 0.000 -############################################################## -Test inverse of Similarity Transformation (example from EPSG Guidance Note 7.2) -299905.060 4499796.515 300000.000 4500000.000 0.000 -############################################################## -Test Similarity Transformation through CompoundCRS -477134.28 95134.21 476763.303 95620.222 0.000 -477134.28 95134.21 5 476763.303 95620.222 5.000 -############################################################## -Test --s_epoch --30 150 -30.00000099 149.99999956 0.00031880 -############################################################## -Test --t_epoch --30 150 -29.99999901 150.00000044 -0.00031879 -############################################################## -Test +proj=topocentric +datum=WGS84 +X_0=-3982059.42 +Y_0=3331314.88 +Z_0=3692463.58 +no_defs +type=crs +to EPSG:4978 -0 0 0 -3982059.420 3331314.880 3692463.580 -############################################################## -Test cs2cs EPSG:5488 (RGAF09) to EPSG:4559+5757 (RRAF 1991 / UTM zone 20N + Guadeloupe 1988 height) -Check that we use the horizontal transformation for Guadeloupe (RRAF 1991 to RGAF09 (2)), and not the one for Martinique -661991.318 1796999.201 93.846 diff --git a/travis/before_install_pip.sh b/travis/before_install_pip.sh index 3685bbf760..91a0af5335 100755 --- a/travis/before_install_pip.sh +++ b/travis/before_install_pip.sh @@ -4,7 +4,6 @@ # "global" before_install script. # Configure Python pip -python3 -m pip install --user --upgrade "pip < 21.0" -echo `python3 -m pip --version` python3 -m pip config --user set global.progress_bar off -python3 -m pip install --user jsonschema +python3 -m pip install --user --upgrade pip +python3 -m pip install --user jsonschema pyyaml pytest diff --git a/travis/linux_generic/before_install.sh b/travis/linux_generic/before_install.sh index f3e595c3e9..871c67bcf5 100755 --- a/travis/linux_generic/before_install.sh +++ b/travis/linux_generic/before_install.sh @@ -10,4 +10,4 @@ sudo apt-get install -qq \ libsqlite3-dev \ libtiff-dev libwebp-dev \ libcurl4-openssl-dev libnghttp2-dev libidn2-dev librtmp-dev libssh-dev \ - libpsl-dev libssl-dev libkrb5-dev comerr-dev libldap2-dev libbrotli-dev + libpsl-dev libssl-dev libkrb5-dev comerr-dev libldap2-dev libbrotli-dev