diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2018-12-07 19:53:48 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2018-12-07 19:53:48 +0100 |
| commit | 23127c01ad535902665a975da81e27c389bb7aeb (patch) | |
| tree | d6cc90dfe1069425824de40fbe42342a1afca9bd /test | |
| parent | 706fac8bc70312f5729e2f3aeeb4f67ecb211b1d (diff) | |
| parent | 29b522b4b80b43fe03cb1a955789676eec8051e7 (diff) | |
| download | PROJ-23127c01ad535902665a975da81e27c389bb7aeb.tar.gz PROJ-23127c01ad535902665a975da81e27c389bb7aeb.zip | |
Merge remote-tracking branch 'rouault/gdalbarn'
Diffstat (limited to 'test')
| -rwxr-xr-x | test/cli/testprojinfo | 4 | ||||
| -rw-r--r-- | test/cli/testprojinfo_out.dist | 98 | ||||
| -rw-r--r-- | test/unit/test_c_api.cpp | 43 | ||||
| -rw-r--r-- | test/unit/test_crs.cpp | 159 | ||||
| -rw-r--r-- | test/unit/test_operation.cpp | 8 |
5 files changed, 233 insertions, 79 deletions
diff --git a/test/cli/testprojinfo b/test/cli/testprojinfo index 90829fdd..ea0dcc2d 100755 --- a/test/cli/testprojinfo +++ b/test/cli/testprojinfo @@ -74,6 +74,10 @@ echo "Testing projinfo -s EPSG:4230 -t EPSG:4258 --area WRONG:CODE --summary" >> $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} + # do 'diff' with distribution results echo "diff ${OUT} with testprojinfo_out.dist" diff -u ${OUT} ${TEST_CLI_DIR}/testprojinfo_out.dist diff --git a/test/cli/testprojinfo_out.dist b/test/cli/testprojinfo_out.dist index f3d4854a..40035489 100644 --- a/test/cli/testprojinfo_out.dist +++ b/test/cli/testprojinfo_out.dist @@ -110,12 +110,11 @@ CONVERSION["UTM zone 31N", ID["EPSG",16031]] Testing projinfo -s NAD27 -t NAD83 --grid-check none --spatial-test intersects --summary -Candidate operations found: 8 +Candidate operations found: 7 DERIVED_FROM(EPSG):1312, NAD27 to NAD83 (3), 1.0 m, Canada DERIVED_FROM(EPSG):1313, NAD27 to NAD83 (4), 1.5 m, Canada - NAD27 DERIVED_FROM(EPSG):1241, NAD27 to NAD83 (1), 0.15 m, USA - CONUS including EEZ DERIVED_FROM(EPSG):1243, NAD27 to NAD83 (2), 0.5 m, USA - Alaska including EEZ -ESRI:108003, NAD_1927_To_NAD_1983_PR_VI, 0.05 m, Caribbean - Puerto Rico and Virgin Islands - onshore unknown id, Null geographic offset from NAD27 to NAD83, unknown accuracy, World EPSG:1462, NAD27 to NAD83 (5), 1.0 m, Canada - Quebec EPSG:1573, NAD27 to NAD83 (6), 1.5 m, Canada - Quebec @@ -306,52 +305,6 @@ COORDINATEOPERATION["NAD27 to NAD83 (2)", ------------------------------------- Operation n°5: -ESRI:108003, NAD_1927_To_NAD_1983_PR_VI, 0.05 m, Caribbean - Puerto Rico and Virgin Islands - onshore - -PROJ string: -+proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=prvi +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 - -WKT2_2015 string: -COORDINATEOPERATION["NAD_1927_To_NAD_1983_PR_VI", - SOURCECRS[ - GEODCRS["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]]]], - TARGETCRS[ - GEODCRS["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]]]], - METHOD["NTv2", - ID["EPSG",9615]], - PARAMETERFILE["Latitude and longitude difference file","prvi"], - OPERATIONACCURACY[0.05], - AREA["Caribbean - Puerto Rico and Virgin Islands - onshore"], - BBOX[17.62,-67.97,18.78,-64.25], - ID["ESRI",108003]] - -------------------------------------- -Operation n°6: - unknown id, Null geographic offset from NAD27 to NAD83, unknown accuracy, World PROJ string: @@ -405,7 +358,7 @@ COORDINATEOPERATION["Null geographic offset from NAD27 to NAD83", BBOX[-90,-180,90,180]] ------------------------------------- -Operation n°7: +Operation n°6: EPSG:1462, NAD27 to NAD83 (5), 1.0 m, Canada - Quebec @@ -451,7 +404,7 @@ COORDINATEOPERATION["NAD27 to NAD83 (5)", ID["EPSG",1462]] ------------------------------------- -Operation n°8: +Operation n°7: EPSG:1573, NAD27 to NAD83 (6), 1.5 m, Canada - Quebec @@ -525,3 +478,48 @@ No area of use matching provided name Testing projinfo -s EPSG:4230 -t EPSG:4258 --area WRONG:CODE --summary Area of use retrieval failed: area not found +Testing deprecated CRS: projinfo EPSG:26591 +Warning: object is deprecated +Alternative non-deprecated CRS: + EPSG:3003 + +PROJ string: ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +inv +proj=longlat +ellps=intl +pm=rome +step +proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_0=0 +ellps=intl +pm=rome + +WKT2_2015 string: +PROJCRS["Monte Mario (Rome) / Italy zone 1", + BASEGEODCRS["Monte Mario (Rome)", + DATUM["Monte Mario (Rome)", + ELLIPSOID["International 1924",6378388,297, + LENGTHUNIT["metre",1]]], + PRIMEM["Rome",12.4523333333333, + ANGLEUNIT["degree",0.0174532925199433]]], + 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]], + AREA["Italy - west of 12°E"], + BBOX[36.53,5.94,47.04,12], + ID["EPSG",26591]] + diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index 42d00fa6..e9782ae8 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -402,7 +402,7 @@ TEST_F(CApi, proj_obj_crs_create_bound_crs_to_WGS84) { ObjectKeeper keeper(crs); ASSERT_NE(crs, nullptr); - auto res = proj_obj_crs_create_bound_crs_to_WGS84(m_ctxt, crs); + auto res = proj_obj_crs_create_bound_crs_to_WGS84(m_ctxt, crs, nullptr); ObjectKeeper keeper_res(res); ASSERT_NE(res, nullptr); @@ -447,7 +447,7 @@ TEST_F(CApi, proj_obj_crs_create_bound_crs_to_WGS84_on_invalid_type) { ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); - auto res = proj_obj_crs_create_bound_crs_to_WGS84(m_ctxt, obj); + auto res = proj_obj_crs_create_bound_crs_to_WGS84(m_ctxt, obj, nullptr); ASSERT_EQ(res, nullptr); } @@ -1146,7 +1146,7 @@ TEST_F(CApi, proj_obj_create_operations) { ASSERT_NE(res, nullptr); ObjListKeeper keeper_res(res); - EXPECT_EQ(proj_obj_list_get_count(res), 8); + EXPECT_EQ(proj_obj_list_get_count(res), 7); EXPECT_EQ(proj_obj_list_get(m_ctxt, res, -1), nullptr); EXPECT_EQ(proj_obj_list_get(m_ctxt, res, proj_obj_list_get_count(res)), @@ -1247,7 +1247,7 @@ TEST_F(CApi, proj_obj_create_operations_with_pivot) { // Restrict pivot to JGD2000 { - auto ctxt = proj_create_operation_factory_context(m_ctxt, nullptr); + auto ctxt = proj_create_operation_factory_context(m_ctxt, "any"); ASSERT_NE(ctxt, nullptr); ContextKeeper keeper_ctxt(ctxt); @@ -1263,7 +1263,7 @@ TEST_F(CApi, proj_obj_create_operations_with_pivot) { proj_obj_create_operations(m_ctxt, source_crs, target_crs, ctxt); ASSERT_NE(res, nullptr); ObjListKeeper keeper_res(res); - // includes 2 results from ESRI + // includes results from ESRI EXPECT_EQ(proj_obj_list_get_count(res), 5); auto op = proj_obj_list_get(m_ctxt, res, 0); ASSERT_NE(op, nullptr); @@ -2552,4 +2552,37 @@ TEST_F(CApi, proj_obj_convert_conversion_to_other_method) { } } +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_get_non_deprecated) { + auto crs = proj_obj_create_from_database( + m_ctxt, "EPSG", "4226", PJ_OBJ_CATEGORY_CRS, false, nullptr); + ObjectKeeper keeper(crs); + ASSERT_NE(crs, nullptr); + + auto list = proj_obj_get_non_deprecated(m_ctxt, crs); + ASSERT_NE(list, nullptr); + ObjListKeeper keeper_list(list); + EXPECT_EQ(proj_obj_list_get_count(list), 2); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_query_geodetic_crs_from_datum) { + { + auto list = proj_obj_query_geodetic_crs_from_datum( + m_ctxt, nullptr, "EPSG", "6326", nullptr); + ASSERT_NE(list, nullptr); + ObjListKeeper keeper_list(list); + EXPECT_GE(proj_obj_list_get_count(list), 3); + } + { + auto list = proj_obj_query_geodetic_crs_from_datum( + m_ctxt, "EPSG", "EPSG", "6326", "geographic 2D"); + ASSERT_NE(list, nullptr); + ObjListKeeper keeper_list(list); + EXPECT_EQ(proj_obj_list_get_count(list), 1); + } +} + } // namespace diff --git a/test/unit/test_crs.cpp b/test/unit/test_crs.cpp index 44b84401..6ed002a9 100644 --- a/test/unit/test_crs.cpp +++ b/test/unit/test_crs.cpp @@ -339,6 +339,28 @@ TEST(crs, EPSG_4326_as_WKT1_GDAL_with_axis) { // --------------------------------------------------------------------------- +TEST(crs, EPSG_4326_from_db_as_WKT1_GDAL_with_axis) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto crs = factory->createCoordinateReferenceSystem("4326"); + auto wkt = crs->exportToWKT( + &(WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL) + ->setOutputAxis(WKTFormatter::OutputAxisRule::YES))); + EXPECT_EQ(wkt, "GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST],\n" + " AUTHORITY[\"EPSG\",\"4326\"]]"); +} + +// --------------------------------------------------------------------------- + TEST(crs, EPSG_4326_as_WKT1_ESRI_with_database) { auto crs = GeographicCRS::EPSG_4326; WKTFormatterNNPtr f(WKTFormatter::create( @@ -1777,6 +1799,38 @@ TEST(crs, projectedCRS_as_PROJ_string) { // --------------------------------------------------------------------------- +TEST(crs, projectedCRS_Krovak_EPSG_5221_as_PROJ_string) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto crs = factory->createProjectedCRS("5221"); + // 30deg 17' 17.30311'' = 30.28813975277777776 + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +inv +proj=longlat +ellps=bessel +pm=ferro " + "+step +proj=krovak +lat_0=49.5 +lon_0=42.5 " + "+alpha=30.2881397527778 +k=0.9999 +x_0=0 +y_0=0 " + "+ellps=bessel +pm=ferro"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, projectedCRS_Krovak_with_approximate_alpha_as_PROJ_string) { + // 30deg 17' 17.303'' = 30.288139722222223 as used in GDAL WKT1 + auto obj = PROJStringParser().createFromPROJString( + "+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.28813972222222 " + "+k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +pm=ferro +units=m +no_defs"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +inv +proj=longlat +ellps=bessel +pm=ferro " + "+step +proj=krovak +lat_0=49.5 +lon_0=42.5 " + "+alpha=30.2881397222222 +k=0.9999 +x_0=0 +y_0=0 " + "+ellps=bessel +pm=ferro"); +} + +// --------------------------------------------------------------------------- + TEST(crs, projectedCRS_identify_no_db) { { // Hard-coded case: WGS 84 / UTM. No name @@ -2433,7 +2487,7 @@ TEST(crs, Krovak_North_Orientated_as_WKT1_ESRI) { "PARAMETER[\"False_Northing\",0.0]," "PARAMETER[\"Pseudo_Standard_Parallel_1\",78.5]," "PARAMETER[\"Scale_Factor\",1.0]," - "PARAMETER[\"Azimuth\",30.2881397222222]," + "PARAMETER[\"Azimuth\",30.2881397527778]," "PARAMETER[\"Longitude_Of_Center\",0.0]," "PARAMETER[\"Latitude_Of_Center\",0.0]," "PARAMETER[\"X_Scale\",-1.0]," @@ -2465,7 +2519,7 @@ TEST(crs, Krovak_as_WKT1_ESRI) { "PARAMETER[\"False_Northing\",0.0]," "PARAMETER[\"Pseudo_Standard_Parallel_1\",78.5]," "PARAMETER[\"Scale_Factor\",1.0]," - "PARAMETER[\"Azimuth\",30.2881397222222]," + "PARAMETER[\"Azimuth\",30.2881397527778]," "PARAMETER[\"Longitude_Of_Center\",0.0]," "PARAMETER[\"Latitude_Of_Center\",0.0]," "PARAMETER[\"X_Scale\",1.0]," @@ -3425,9 +3479,8 @@ TEST(crs, boundCRS_crs_link) { EXPECT_TRUE(baseCRS->isEquivalentTo(GeographicCRS::EPSG_4267.get())); EXPECT_TRUE(baseCRS->canonicalBoundCRS() != nullptr); - EXPECT_TRUE( - baseCRS->createBoundCRSToWGS84IfPossible(nullptr)->isEquivalentTo( - baseCRS->canonicalBoundCRS().get())); + EXPECT_TRUE(baseCRS->createBoundCRSToWGS84IfPossible(nullptr, false) + ->isEquivalentTo(baseCRS->canonicalBoundCRS().get())); } { @@ -4726,26 +4779,28 @@ TEST(crs, crs_createBoundCRSToWGS84IfPossible) { auto factory = AuthorityFactory::create(dbContext, "EPSG"); { auto crs_4326 = factory->createCoordinateReferenceSystem("4326"); - EXPECT_EQ(crs_4326->createBoundCRSToWGS84IfPossible(dbContext), + EXPECT_EQ(crs_4326->createBoundCRSToWGS84IfPossible(dbContext, false), crs_4326); } { auto crs_32631 = factory->createCoordinateReferenceSystem("32631"); - EXPECT_EQ(crs_32631->createBoundCRSToWGS84IfPossible(dbContext), + EXPECT_EQ(crs_32631->createBoundCRSToWGS84IfPossible(dbContext, false), crs_32631); } { // Pulkovo 42 East Germany auto crs_5670 = factory->createCoordinateReferenceSystem("5670"); - EXPECT_EQ(crs_5670->createBoundCRSToWGS84IfPossible(dbContext), + EXPECT_EQ(crs_5670->createBoundCRSToWGS84IfPossible(dbContext, false), crs_5670); } { // Pulkovo 42 Romania auto crs_3844 = factory->createCoordinateReferenceSystem("3844"); - auto bound = crs_3844->createBoundCRSToWGS84IfPossible(dbContext); + auto bound = + crs_3844->createBoundCRSToWGS84IfPossible(dbContext, false); EXPECT_NE(bound, crs_3844); - EXPECT_EQ(bound->createBoundCRSToWGS84IfPossible(dbContext), bound); + EXPECT_EQ(bound->createBoundCRSToWGS84IfPossible(dbContext, false), + bound); auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(bound); ASSERT_TRUE(boundCRS != nullptr); EXPECT_EQ(boundCRS->exportToPROJString( @@ -4760,9 +4815,11 @@ TEST(crs, crs_createBoundCRSToWGS84IfPossible) { { // Pulkovo 42 Poland auto crs_2171 = factory->createCoordinateReferenceSystem("2171"); - auto bound = crs_2171->createBoundCRSToWGS84IfPossible(dbContext); + auto bound = + crs_2171->createBoundCRSToWGS84IfPossible(dbContext, false); EXPECT_NE(bound, crs_2171); - EXPECT_EQ(bound->createBoundCRSToWGS84IfPossible(dbContext), bound); + EXPECT_EQ(bound->createBoundCRSToWGS84IfPossible(dbContext, false), + bound); auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(bound); ASSERT_TRUE(boundCRS != nullptr); EXPECT_EQ(boundCRS->exportToPROJString( @@ -4777,9 +4834,11 @@ TEST(crs, crs_createBoundCRSToWGS84IfPossible) { { // NTF (Paris) auto crs_4807 = factory->createCoordinateReferenceSystem("4807"); - auto bound = crs_4807->createBoundCRSToWGS84IfPossible(dbContext); + auto bound = + crs_4807->createBoundCRSToWGS84IfPossible(dbContext, false); EXPECT_NE(bound, crs_4807); - EXPECT_EQ(bound->createBoundCRSToWGS84IfPossible(dbContext), bound); + EXPECT_EQ(bound->createBoundCRSToWGS84IfPossible(dbContext, false), + bound); auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(bound); ASSERT_TRUE(boundCRS != nullptr); EXPECT_EQ(boundCRS->exportToPROJString( @@ -4792,9 +4851,11 @@ TEST(crs, crs_createBoundCRSToWGS84IfPossible) { { // NTF (Paris) / Lambert zone II + NGF-IGN69 height auto crs_7421 = factory->createCoordinateReferenceSystem("7421"); - auto bound = crs_7421->createBoundCRSToWGS84IfPossible(dbContext); + auto bound = + crs_7421->createBoundCRSToWGS84IfPossible(dbContext, false); EXPECT_NE(bound, crs_7421); - EXPECT_EQ(bound->createBoundCRSToWGS84IfPossible(dbContext), bound); + EXPECT_EQ(bound->createBoundCRSToWGS84IfPossible(dbContext, false), + bound); auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(bound); ASSERT_TRUE(boundCRS != nullptr); EXPECT_EQ(boundCRS->exportToPROJString( @@ -4808,13 +4869,13 @@ TEST(crs, crs_createBoundCRSToWGS84IfPossible) { } { auto crs = createVerticalCRS(); - EXPECT_EQ(crs->createBoundCRSToWGS84IfPossible(dbContext), crs); + EXPECT_EQ(crs->createBoundCRSToWGS84IfPossible(dbContext, false), crs); } { auto factoryIGNF = AuthorityFactory::create(DatabaseContext::create(), "IGNF"); auto crs = factoryIGNF->createCoordinateReferenceSystem("TERA50STEREO"); - auto bound = crs->createBoundCRSToWGS84IfPossible(dbContext); + auto bound = crs->createBoundCRSToWGS84IfPossible(dbContext, false); EXPECT_NE(bound, crs); auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(bound); ASSERT_TRUE(boundCRS != nullptr); @@ -4830,7 +4891,7 @@ TEST(crs, crs_createBoundCRSToWGS84IfPossible) { auto factoryIGNF = AuthorityFactory::create(DatabaseContext::create(), "IGNF"); auto crs = factoryIGNF->createCoordinateReferenceSystem("PGP50"); - auto bound = crs->createBoundCRSToWGS84IfPossible(dbContext); + auto bound = crs->createBoundCRSToWGS84IfPossible(dbContext, false); EXPECT_NE(bound, crs); auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(bound); ASSERT_TRUE(boundCRS != nullptr); @@ -4841,6 +4902,11 @@ TEST(crs, crs_createBoundCRSToWGS84IfPossible) { "+proj=geocent +ellps=intl " "+towgs84=324.8,153.6,172.1,0,0,0,0 +units=m +no_defs"); } + { + auto crs = factory->createCoordinateReferenceSystem("4269"); // NAD83 + auto bound = crs->createBoundCRSToWGS84IfPossible(dbContext, false); + EXPECT_EQ(bound, crs); + } } // --------------------------------------------------------------------------- @@ -5023,3 +5089,58 @@ TEST(crs, alterParametersLinearUnit) { << wkt; } } + +// --------------------------------------------------------------------------- + +TEST(crs, getNonDeprecated) { + auto dbContext = DatabaseContext::create(); + auto factory = AuthorityFactory::create(dbContext, "EPSG"); + + { + // No id + auto crs = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto list = crs->getNonDeprecated(dbContext); + ASSERT_EQ(list.size(), 0); + } + + { + // Non-deprecated + auto crs = factory->createGeodeticCRS("4326"); + auto list = crs->getNonDeprecated(dbContext); + ASSERT_EQ(list.size(), 0); + } + + { + // Non supported CRS type + auto crs = BoundCRS::createFromTOWGS84( + createProjected(), std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto list = crs->getNonDeprecated(dbContext); + ASSERT_EQ(list.size(), 0); + } + + { + auto crs = factory->createGeodeticCRS("4226"); + auto list = crs->getNonDeprecated(dbContext); + ASSERT_EQ(list.size(), 2); + } + + { + auto crs = factory->createProjectedCRS("26591"); + auto list = crs->getNonDeprecated(dbContext); + ASSERT_EQ(list.size(), 1); + } + + { + auto crs = factory->createVerticalCRS("5704"); + auto list = crs->getNonDeprecated(dbContext); + ASSERT_EQ(list.size(), 1); + } + { + auto crs = factory->createCompoundCRS("7401"); + auto list = crs->getNonDeprecated(dbContext); + ASSERT_EQ(list.size(), 1); + } +} diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp index 057f1717..e5734cd1 100644 --- a/test/unit/test_operation.cpp +++ b/test/unit/test_operation.cpp @@ -5941,7 +5941,7 @@ TEST(operation, IGNF_LAMB1_TO_EPSG_4326) { AuthorityFactory::create(DatabaseContext::create(), "EPSG") ->createCoordinateReferenceSystem("4326"), ctxt); - ASSERT_GE(list2.size(), 4U); + ASSERT_GE(list2.size(), 3U); EXPECT_EQ(replaceAll(list2[0]->exportToPROJString( PROJStringFormatter::create().get()), @@ -5950,10 +5950,8 @@ TEST(operation, IGNF_LAMB1_TO_EPSG_4326) { // The second entry in list2 (list2[1]) uses the // weird +pm=2.33720833333333 from "NTF (Paris) to NTF (2)" - // and the third one uses the ESRI geographic offset method with another - // value - // so skip to the 4th method - EXPECT_EQ(replaceAll(list2[3]->exportToPROJString( + // so skip to the 3th method + EXPECT_EQ(replaceAll(list2[2]->exportToPROJString( PROJStringFormatter::create().get()), "0.999877341", "0.99987734"), list[1]->exportToPROJString(PROJStringFormatter::create().get())); |
