aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2018-12-04 14:46:41 +0100
committerEven Rouault <even.rouault@spatialys.com>2018-12-04 14:46:41 +0100
commitd06c1c55c1c3fc7209abdbdfbf2e3cf34f18cf98 (patch)
tree98fe336a41f1397280ee665d08040339967d711b /test
parentaddf30e4446fd39891fd5bdcb22413ed41e0913b (diff)
downloadPROJ-d06c1c55c1c3fc7209abdbdfbf2e3cf34f18cf98.tar.gz
PROJ-d06c1c55c1c3fc7209abdbdfbf2e3cf34f18cf98.zip
Improve recognition of WKT1 datum names
Diffstat (limited to 'test')
-rw-r--r--test/unit/test_c_api.cpp21
-rw-r--r--test/unit/test_factory.cpp20
-rw-r--r--test/unit/test_io.cpp53
-rw-r--r--test/unit/test_metadata.cpp6
4 files changed, 95 insertions, 5 deletions
diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp
index 7db38601..f0480ebe 100644
--- a/test/unit/test_c_api.cpp
+++ b/test/unit/test_c_api.cpp
@@ -1604,6 +1604,27 @@ TEST_F(CApi, proj_obj_create_geographic_crs) {
EXPECT_TRUE(proj_obj_is_equivalent_to(obj, objRef, PJ_COMP_EQUIVALENT));
}
+
+ // Datum with GDAL_WKT1 spelling: database query in alias_name table
+ {
+ auto crs = proj_obj_create_geographic_crs(
+ m_ctxt, "S-JTSK (Ferro)",
+ "System_Jednotne_Trigonometricke_Site_Katastralni_Ferro",
+ "Bessel 1841", 6377397.155, 299.1528128, "Ferro",
+ -17.66666666666667, "Degree", 0.0174532925199433, cs);
+ ObjectKeeper keeper(crs);
+ ASSERT_NE(crs, nullptr);
+
+ auto datum = proj_obj_crs_get_datum(m_ctxt, crs);
+ ASSERT_NE(datum, nullptr);
+ ObjectKeeper keeper_datum(datum);
+
+ auto datum_name = proj_obj_get_name(datum);
+ ASSERT_TRUE(datum_name != nullptr);
+ EXPECT_EQ(datum_name,
+ std::string("System of the Unified Trigonometrical Cadastral "
+ "Network (Ferro)"));
+ }
}
// ---------------------------------------------------------------------------
diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp
index c30111ce..d3976688 100644
--- a/test/unit/test_factory.cpp
+++ b/test/unit/test_factory.cpp
@@ -2522,7 +2522,7 @@ TEST(factory, getOfficialNameFromAlias) {
{
auto officialName = factory->getOfficialNameFromAlias(
- "GCS_WGS_1984", std::string(), std::string(), outTableName,
+ "GCS_WGS_1984", std::string(), std::string(), false, outTableName,
outAuthName, outCode);
EXPECT_EQ(officialName, "WGS 84");
EXPECT_EQ(outTableName, "geodetic_crs");
@@ -2532,8 +2532,8 @@ TEST(factory, getOfficialNameFromAlias) {
{
auto officialName = factory->getOfficialNameFromAlias(
- "GCS_WGS_1984", "geodetic_crs", "ESRI", outTableName, outAuthName,
- outCode);
+ "GCS_WGS_1984", "geodetic_crs", "ESRI", false, outTableName,
+ outAuthName, outCode);
EXPECT_EQ(officialName, "WGS 84");
EXPECT_EQ(outTableName, "geodetic_crs");
EXPECT_EQ(outAuthName, "EPSG");
@@ -2542,10 +2542,20 @@ TEST(factory, getOfficialNameFromAlias) {
{
auto officialName = factory->getOfficialNameFromAlias(
- "no match", std::string(), std::string(), outTableName, outAuthName,
- outCode);
+ "no match", std::string(), std::string(), false, outTableName,
+ outAuthName, outCode);
EXPECT_EQ(officialName, "");
}
+
+ {
+ auto officialName = factory->getOfficialNameFromAlias(
+ "System_Jednotne_Trigonometricke_Site_Katastralni_Ferro",
+ "geodetic_datum", std::string(), true, outTableName, outAuthName,
+ outCode);
+ EXPECT_EQ(
+ officialName,
+ "System of the Unified Trigonometrical Cadastral Network (Ferro)");
+ }
}
// ---------------------------------------------------------------------------
diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp
index 606d57a3..243add6f 100644
--- a/test/unit/test_io.cpp
+++ b/test/unit/test_io.cpp
@@ -460,6 +460,59 @@ TEST(wkt_parse, wkt1_EPSG_4807_grad_mess) {
// ---------------------------------------------------------------------------
+TEST(wkt_parse, wkt1_geographic_old_datum_name_from_EPSG_code) {
+ auto wkt =
+ "GEOGCS[\"S-JTSK (Ferro)\",\n"
+ " "
+ "DATUM[\"System_Jednotne_Trigonometricke_Site_Katastralni_Ferro\",\n"
+ " SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,\n"
+ " AUTHORITY[\"EPSG\",\"7004\"]],\n"
+ " AUTHORITY[\"EPSG\",\"6818\"]],\n"
+ " PRIMEM[\"Ferro\",-17.66666666666667,\n"
+ " AUTHORITY[\"EPSG\",\"8909\"]],\n"
+ " UNIT[\"degree\",0.0174532925199433,\n"
+ " AUTHORITY[\"EPSG\",\"9122\"]],\n"
+ " AUTHORITY[\"EPSG\",\"4818\"]]";
+ auto obj = WKTParser()
+ .attachDatabaseContext(DatabaseContext::create())
+ .createFromWKT(wkt);
+ auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+
+ auto datum = crs->datum();
+ EXPECT_EQ(
+ datum->nameStr(),
+ "System of the Unified Trigonometrical Cadastral Network (Ferro)");
+}
+
+// ---------------------------------------------------------------------------
+
+TEST(wkt_parse, wkt1_geographic_old_datum_name_witout_EPSG_code) {
+ auto wkt =
+ "GEOGCS[\"S-JTSK (Ferro)\",\n"
+ " "
+ "DATUM[\"System_Jednotne_Trigonometricke_Site_Katastralni_Ferro\",\n"
+ " SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,\n"
+ " AUTHORITY[\"EPSG\",\"7004\"]]],\n"
+ " PRIMEM[\"Ferro\",-17.66666666666667,\n"
+ " AUTHORITY[\"EPSG\",\"8909\"]],\n"
+ " UNIT[\"degree\",0.0174532925199433,\n"
+ " AUTHORITY[\"EPSG\",\"9122\"]],\n"
+ " AUTHORITY[\"EPSG\",\"4818\"]]";
+ auto obj = WKTParser()
+ .attachDatabaseContext(DatabaseContext::create())
+ .createFromWKT(wkt);
+ auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+
+ auto datum = crs->datum();
+ EXPECT_EQ(
+ datum->nameStr(),
+ "System of the Unified Trigonometrical Cadastral Network (Ferro)");
+}
+
+// ---------------------------------------------------------------------------
+
static std::string contentWKT2_EPSG_4326(
"[\"WGS 84\",\n"
" DATUM[\"World Geodetic System 1984\",\n"
diff --git a/test/unit/test_metadata.cpp b/test/unit/test_metadata.cpp
index 96b8cbff..137e8e42 100644
--- a/test/unit/test_metadata.cpp
+++ b/test/unit/test_metadata.cpp
@@ -385,4 +385,10 @@ TEST(metadata, id) {
TEST(metadata, Identifier_isEquivalentName) {
EXPECT_TRUE(Identifier::isEquivalentName("Central_Meridian",
"Central_- ()/Meridian"));
+
+ EXPECT_TRUE(Identifier::isEquivalentName("\xc3\xa1", "a"));
+
+ EXPECT_TRUE(Identifier::isEquivalentName("a", "\xc3\xa1"));
+
+ EXPECT_TRUE(Identifier::isEquivalentName("\xc3\xa4", "\xc3\xa1"));
}