diff options
| -rw-r--r-- | src/iso19111/io.cpp | 3 | ||||
| -rw-r--r-- | test/unit/test_crs.cpp | 13 |
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); + } } // --------------------------------------------------------------------------- |
