diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2018-12-04 14:46:41 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2018-12-04 14:46:41 +0100 |
| commit | d06c1c55c1c3fc7209abdbdfbf2e3cf34f18cf98 (patch) | |
| tree | 98fe336a41f1397280ee665d08040339967d711b /test | |
| parent | addf30e4446fd39891fd5bdcb22413ed41e0913b (diff) | |
| download | PROJ-d06c1c55c1c3fc7209abdbdfbf2e3cf34f18cf98.tar.gz PROJ-d06c1c55c1c3fc7209abdbdfbf2e3cf34f18cf98.zip | |
Improve recognition of WKT1 datum names
Diffstat (limited to 'test')
| -rw-r--r-- | test/unit/test_c_api.cpp | 21 | ||||
| -rw-r--r-- | test/unit/test_factory.cpp | 20 | ||||
| -rw-r--r-- | test/unit/test_io.cpp | 53 | ||||
| -rw-r--r-- | test/unit/test_metadata.cpp | 6 |
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")); } |
