aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2018-12-07 19:53:48 +0100
committerEven Rouault <even.rouault@spatialys.com>2018-12-07 19:53:48 +0100
commit23127c01ad535902665a975da81e27c389bb7aeb (patch)
treed6cc90dfe1069425824de40fbe42342a1afca9bd /test
parent706fac8bc70312f5729e2f3aeeb4f67ecb211b1d (diff)
parent29b522b4b80b43fe03cb1a955789676eec8051e7 (diff)
downloadPROJ-23127c01ad535902665a975da81e27c389bb7aeb.tar.gz
PROJ-23127c01ad535902665a975da81e27c389bb7aeb.zip
Merge remote-tracking branch 'rouault/gdalbarn'
Diffstat (limited to 'test')
-rwxr-xr-xtest/cli/testprojinfo4
-rw-r--r--test/cli/testprojinfo_out.dist98
-rw-r--r--test/unit/test_c_api.cpp43
-rw-r--r--test/unit/test_crs.cpp159
-rw-r--r--test/unit/test_operation.cpp8
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()));