diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2020-06-06 20:35:00 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2020-06-06 22:24:13 +0200 |
| commit | a96e8f5f4e2a2145656c533271d1461ea077a35d (patch) | |
| tree | 9993c3df25f84090872931319ea76b7815850c48 /test | |
| parent | 325d8e157dc4e5132b843c1a799897a92f096044 (diff) | |
| download | PROJ-a96e8f5f4e2a2145656c533271d1461ea077a35d.tar.gz PROJ-a96e8f5f4e2a2145656c533271d1461ea077a35d.zip | |
createOperations(): changes so that EPSG:9635 'Geog3D to Geog2D+GravityRelatedHeight (US .gtx)' method used by Slovakian geoids correctly deal with axis order and unit conversion, to be used as 'standalone'. Also improves when using directly 'Geographic3D to GravityRelatedHeight' method
Diffstat (limited to 'test')
| -rw-r--r-- | test/cli/testprojinfo_out.dist | 10 | ||||
| -rw-r--r-- | test/unit/test_operation.cpp | 96 |
2 files changed, 85 insertions, 21 deletions
diff --git a/test/cli/testprojinfo_out.dist b/test/cli/testprojinfo_out.dist index 9e03b003..f532a8ec 100644 --- a/test/cli/testprojinfo_out.dist +++ b/test/cli/testprojinfo_out.dist @@ -903,7 +903,7 @@ 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=vgridshift +grids=se_lantmateriet_SWEN17_RH2000.tif +multiplier=1 ++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", @@ -967,7 +967,7 @@ Operation No. 1: INVERSE(DERIVED_FROM(EPSG)):8885, Inverse of RGF93 to NGF-IGN69 height (3), 0.01 m, France - mainland onshore PROJ string: -+proj=vgridshift +grids=fr_ign_RAF18.tif +multiplier=1 ++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: @@ -975,7 +975,7 @@ Operation No. 2: INVERSE(EPSG):10000, Inverse of RGF93 to NGF-IGN69 height (1), 0.5 m, France - mainland onshore PROJ string: -+proj=vgridshift +grids=ggf97a.txt +multiplier=1 ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift +grids=ggf97a.txt +multiplier=1 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 Testing EPSG:32631 --3d PROJ.4 string: @@ -1081,7 +1081,7 @@ Operation No. 1: DERIVED_FROM(EPSG):5656, GDA94 to AHD height (49), 0.03 m, Australia - mainland PROJ string: -+proj=pipeline +step +inv +proj=vgridshift +grids=au_ga_AUSGeoid09_V1.01.tif +multiplier=1 ++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 @@ -1091,7 +1091,7 @@ Operation No. 1: DERIVED_FROM(EPSG):8451, GDA2020 to AHD height (1), 0.03 m, Australia Christmas and Cocos - onshore PROJ string: -+proj=pipeline +step +inv +proj=vgridshift +grids=au_ga_AUSGeoid2020_20180201.tif +multiplier=1 ++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: diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp index 51bbf50b..676ed8d7 100644 --- a/test/unit/test_operation.cpp +++ b/test/unit/test_operation.cpp @@ -4819,12 +4819,18 @@ TEST(operation, vertCRS_to_geogCRS_context) { authFactory->createCoordinateReferenceSystem("4979"), // WGS 84 ctxt); ASSERT_EQ(list.size(), 2U); - EXPECT_EQ(list[1]->exportToPROJString( - PROJStringFormatter::create( - PROJStringFormatter::Convention::PROJ_5, - authFactory->databaseContext()) - .get()), - "+proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1"); + EXPECT_EQ( + list[1]->exportToPROJString( + PROJStringFormatter::create( + PROJStringFormatter::Convention::PROJ_5, + authFactory->databaseContext()) + .get()), + "+proj=pipeline " + "+step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+step +proj=axisswap +order=2,1"); } { auto ctxt = @@ -4837,7 +4843,12 @@ TEST(operation, vertCRS_to_geogCRS_context) { ASSERT_EQ(list.size(), 2U); EXPECT_EQ( list[0]->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1"); + "+proj=pipeline " + "+step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+step +proj=axisswap +order=2,1"); } { auto ctxt = @@ -4850,9 +4861,13 @@ TEST(operation, vertCRS_to_geogCRS_context) { ASSERT_EQ(list.size(), 2U); EXPECT_EQ( list[0]->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=pipeline +step +inv +proj=vgridshift " - "+grids=us_nga_egm08_25.tif " - "+multiplier=1"); + "+proj=pipeline " + "+step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +inv +proj=vgridshift +grids=us_nga_egm08_25.tif " + "+multiplier=1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+step +proj=axisswap +order=2,1"); } { auto ctxt = @@ -4877,7 +4892,41 @@ TEST(operation, vertCRS_to_geogCRS_context) { ASSERT_EQ(list.size(), 1U); EXPECT_EQ( list[0]->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=vgridshift +grids=nz_linz_nzgeoid2016.tif +multiplier=1"); + "+proj=pipeline " + "+step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=vgridshift +grids=nz_linz_nzgeoid2016.tif " + "+multiplier=1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+step +proj=axisswap +order=2,1"); + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, geog3DCRS_to_geog2DCRS_plus_vertCRS_context) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + { + auto ctxt = + CoordinateOperationContext::create(authFactory, nullptr, 0.0); + ctxt->setSpatialCriterion( + CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION); + auto list = CoordinateOperationFactory::create()->createOperations( + // ETRS89 (3D) + authFactory->createCoordinateReferenceSystem("4937"), + // ETRS89 + Baltic 1957 height + authFactory->createCoordinateReferenceSystem("8360"), ctxt); + ASSERT_GE(list.size(), 1U); + EXPECT_EQ( + list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline " + "+step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +inv +proj=vgridshift " + "+grids=sk_gku_Slovakia_ETRS89h_to_Baltic1957.tif +multiplier=1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+step +proj=axisswap +order=2,1"); } } @@ -6774,7 +6823,13 @@ static BoundCRSNNPtr createBoundVerticalCRS() { TEST(operation, transformation_height_to_PROJ_string) { auto transf = createBoundVerticalCRS()->transformation(); EXPECT_EQ(transf->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1"); + "+proj=pipeline " + "+step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=vgridshift +grids=us_nga_egm08_25.tif " + "+multiplier=1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+step +proj=axisswap +order=2,1"); auto grids = transf->gridsNeeded(DatabaseContext::create(), false); ASSERT_EQ(grids.size(), 1U); @@ -6843,8 +6898,13 @@ TEST(operation, transformation_Geographic3D_to_GravityRelatedHeight_gtx) { // Check that we correctly inverse files in the case of // "Geographic3D to GravityRelatedHeight (US .gtx)" EXPECT_EQ(transf->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=pipeline +step +inv +proj=vgridshift " - "+grids=naptrans2008.gtx +multiplier=1"); + "+proj=pipeline " + "+step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +inv +proj=vgridshift " + "+grids=naptrans2008.gtx +multiplier=1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+step +proj=axisswap +order=2,1"); } // --------------------------------------------------------------------------- @@ -10710,6 +10770,10 @@ TEST(operation, // Test that even if the .gtx file is unknown, we export in the correct // direction EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=pipeline +step +inv +proj=vgridshift +grids=foo.gtx " - "+multiplier=1"); + "+proj=pipeline " + "+step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +inv +proj=vgridshift +grids=foo.gtx +multiplier=1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+step +proj=axisswap +order=2,1"); } |
