aboutsummaryrefslogtreecommitdiff
path: root/test/unit/test_crs.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-05-14 00:25:42 +0200
committerGitHub <noreply@github.com>2020-05-14 00:25:42 +0200
commit0c9cf39297a24d5e56aa488820a5ba3edaace90e (patch)
treef277183066a322b4ebf09c8d0192f569b1b8d108 /test/unit/test_crs.cpp
parent475e7fd9f11af184e7e1e1618b3e1bb110a79714 (diff)
parent4e9d559d6c1cdb2ea9ace5894088b26332ad9a42 (diff)
downloadPROJ-0c9cf39297a24d5e56aa488820a5ba3edaace90e.tar.gz
PROJ-0c9cf39297a24d5e56aa488820a5ba3edaace90e.zip
Merge pull request #2215 from rouault/fix_2214
ProjectedCRS::identify(): fix identification of EPSG:3059 (fixes #2214)
Diffstat (limited to 'test/unit/test_crs.cpp')
-rw-r--r--test/unit/test_crs.cpp50
1 files changed, 46 insertions, 4 deletions
diff --git a/test/unit/test_crs.cpp b/test/unit/test_crs.cpp
index 270e7f95..c00556a7 100644
--- a/test/unit/test_crs.cpp
+++ b/test/unit/test_crs.cpp
@@ -2303,7 +2303,7 @@ TEST(crs, projectedCRS_identify_db) {
auto res = crs->identify(factoryEPSG);
ASSERT_EQ(res.size(), 1U);
EXPECT_EQ(res.front().first->getEPSGCode(), 3044);
- EXPECT_EQ(res.front().second, 25);
+ EXPECT_EQ(res.front().second, 50);
}
{
// Identify from a WKT1 string, without explicit axis
@@ -2397,7 +2397,7 @@ TEST(crs, projectedCRS_identify_db) {
auto res = crs->identify(factoryEPSG);
EXPECT_EQ(res.size(), 1U);
EXPECT_EQ(res.front().first->getEPSGCode(), 2327);
- EXPECT_EQ(res.front().second, 50);
+ EXPECT_EQ(res.front().second, 70);
}
{
// EPSG:6646 as PROJ.4 string, using clrk80 which is pretty generic
@@ -2439,7 +2439,7 @@ TEST(crs, projectedCRS_identify_db) {
for (const auto &pair : res) {
if (pair.first->identifiers()[0]->code() == "102039") {
found = true;
- EXPECT_EQ(pair.second, 25);
+ EXPECT_EQ(pair.second, 50);
break;
}
}
@@ -2574,6 +2574,48 @@ TEST(crs, projectedCRS_identify_db) {
EXPECT_EQ(res.front().first->getEPSGCode(), 2154);
EXPECT_EQ(res.front().second, 70);
}
+ {
+ // Test identification of LKS92_Latvia_TM (#2214)
+ auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT(
+ "PROJCS[\"LKS92_Latvia_TM\",GEOGCS[\"GCS_LKS92\","
+ "DATUM[\"D_Latvia_1992\","
+ "SPHEROID[\"GRS_1980\",6378137,298.257222101]],"
+ "PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.017453292519943295]],"
+ "PROJECTION[\"Transverse_Mercator\"],"
+ "PARAMETER[\"latitude_of_origin\",0],"
+ "PARAMETER[\"central_meridian\",24],"
+ "PARAMETER[\"scale_factor\",0.9996],"
+ "PARAMETER[\"false_easting\",500000],"
+ "PARAMETER[\"false_northing\",-6000000],"
+ "UNIT[\"Meter\",1]]");
+ auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+ auto res = crs->identify(factoryEPSG);
+ ASSERT_EQ(res.size(), 1U);
+ EXPECT_EQ(res.front().first->getEPSGCode(), 3059);
+ EXPECT_EQ(res.front().second, 90);
+ }
+ {
+ // Test identification of CRS where everything but datum names matches
+ auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT(
+ "PROJCS[\"WGS_1984_UTM_Zone_31N\",GEOGCS[\"GCS_WGS_1984\","
+ "DATUM[\"wrong_datum_name\","
+ "SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],"
+ "PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],"
+ "PROJECTION[\"Transverse_Mercator\"],"
+ "PARAMETER[\"False_Easting\",500000.0],"
+ "PARAMETER[\"False_Northing\",0.0],"
+ "PARAMETER[\"Central_Meridian\",3.0],"
+ "PARAMETER[\"Scale_Factor\",0.9996],"
+ "PARAMETER[\"Latitude_Of_Origin\",0.0],"
+ "UNIT[\"Meter\",1.0]]");
+ auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+ auto res = crs->identify(factoryEPSG);
+ ASSERT_EQ(res.size(), 1U);
+ EXPECT_EQ(res.front().first->getEPSGCode(), 32631);
+ EXPECT_EQ(res.front().second, 60);
+ }
}
// ---------------------------------------------------------------------------
@@ -4121,7 +4163,7 @@ TEST(crs, boundCRS_identify_db) {
EXPECT_EQ(boundCRS->baseCRS()->getEPSGCode(), 2106);
EXPECT_EQ(boundCRS->transformation()->nameStr(),
"NZGD2000 to WGS 84 (1)");
- EXPECT_EQ(res.front().second, 50);
+ EXPECT_EQ(res.front().second, 70);
}
{