diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2019-05-12 09:03:48 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2019-05-12 09:03:48 +0200 |
| commit | 004e26293e258a9144e6e1d33049eb1753b82b89 (patch) | |
| tree | 85d32c33798a6a944e70699c972185a9fab90d9d | |
| parent | cd2f5b38046b7775feae08dfc8d8b1e59c1689f2 (diff) | |
| download | PROJ-004e26293e258a9144e6e1d33049eb1753b82b89.tar.gz PROJ-004e26293e258a9144e6e1d33049eb1753b82b89.zip | |
Fix identification of GeodeticCRS expressed by PROJ string for EPSG authority
| -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); + } } // --------------------------------------------------------------------------- |
