From 8869f7036efb879620a7e42f9c159a5bb07511cb Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 4 Dec 2018 16:51:55 +0100 Subject: export to WKT1 of geocentric CRS: do not emit a TOWGS84 node if the datum is WGS84 --- src/crs.cpp | 5 +++++ test/unit/test_crs.cpp | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/crs.cpp b/src/crs.cpp index d4d98fa4..9f1f53c7 100644 --- a/src/crs.cpp +++ b/src/crs.cpp @@ -372,6 +372,11 @@ CRSNNPtr CRS::createBoundCRSToWGS84IfPossible( auto geogCRS = extractGeographicCRS(); auto hubCRS = util::nn_static_pointer_cast(GeographicCRS::EPSG_4326); if (geodCRS && !geogCRS) { + if (geodCRS->_isEquivalentTo( + GeographicCRS::EPSG_4978.get(), + util::IComparable::Criterion::EQUIVALENT)) { + return thisAsCRS; + } hubCRS = util::nn_static_pointer_cast(GeodeticCRS::EPSG_4978); } else if (!geogCRS || geogCRS->_isEquivalentTo( diff --git a/test/unit/test_crs.cpp b/test/unit/test_crs.cpp index 3f044de0..e0505fea 100644 --- a/test/unit/test_crs.cpp +++ b/test/unit/test_crs.cpp @@ -1115,6 +1115,29 @@ TEST(crs, geocentricCRS_as_WKT1_GDAL) { // --------------------------------------------------------------------------- +TEST(crs, EPSG_4978_as_WKT1_GDAL_with_database) { + auto crs = GeodeticCRS::EPSG_4978; + auto wkt = crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL, + DatabaseContext::create()) + .get()); + EXPECT_EQ(wkt, "GEOCCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Geocentric X\",OTHER],\n" + " AXIS[\"Geocentric Y\",OTHER],\n" + " AXIS[\"Geocentric Z\",NORTH],\n" + " AUTHORITY[\"EPSG\",\"4978\"]]"); +} + +// --------------------------------------------------------------------------- + TEST(crs, geocentricCRS_as_PROJ_string) { auto crs = createGeocentric(); EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), -- cgit v1.2.3