aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/iso19111/io.cpp3
-rw-r--r--test/unit/test_crs.cpp13
2 files changed, 16 insertions, 0 deletions
diff --git a/src/iso19111/io.cpp b/src/iso19111/io.cpp
index c84ea2f3..7329758a 100644
--- a/src/iso19111/io.cpp
+++ b/src/iso19111/io.cpp
@@ -6899,6 +6899,7 @@ PROJStringParser::Private::buildGeographicCRS(int iStep, int iUnitConvert,
getNumericValue(getParamValue(step, "lon_0")) != 0.0)) {
props.set("EXTENSION_PROJ4", projString_);
}
+ props.set("IMPLICIT_CS", true);
return GeographicCRS::create(props, datum, cs);
}
@@ -7389,6 +7390,8 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
props.set("EXTENSION_PROJ4", projString_);
}
+ props.set("IMPLICIT_CS", true);
+
CRSNNPtr crs = ProjectedCRS::create(props, geogCRS, NN_NO_CHECK(conv), cs);
if (!hasParamValue(step, "geoidgrids") &&
diff --git a/test/unit/test_crs.cpp b/test/unit/test_crs.cpp
index d7303df9..fbbd4f64 100644
--- a/test/unit/test_crs.cpp
+++ b/test/unit/test_crs.cpp
@@ -1498,6 +1498,19 @@ TEST(crs, geodeticcrs_identify_db) {
->identify(factory);
ASSERT_EQ(res.size(), 0U);
}
+ {
+ // Test identification from PROJ string
+ auto obj = PROJStringParser().createFromPROJString(
+ "+proj=longlat +datum=WGS84 +type=crs");
+ auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+ auto res = crs->identify(factory);
+ ASSERT_EQ(res.size(), 1U);
+ ASSERT_TRUE(!res.front().first->identifiers().empty());
+ EXPECT_EQ(*res.front().first->identifiers()[0]->codeSpace(), "EPSG");
+ EXPECT_EQ(res.front().first->identifiers()[0]->code(), "4326");
+ EXPECT_EQ(res.front().second, 70);
+ }
}
// ---------------------------------------------------------------------------