diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2019-01-05 19:56:03 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2019-01-05 19:56:03 +0100 |
| commit | 0fbe7cf33c308c4b7c81e65e18b90e9d773ba333 (patch) | |
| tree | e0bdd52d3ebb96edd97df9a8e385fc9af6dd15c2 /src/iso19111/crs.cpp | |
| parent | 3ea468222fdabdae3aa5b47439d6b3bfb0a93c8e (diff) | |
| parent | b62fdee0f34d960527af8fb0a8bf6344fcf78d4b (diff) | |
| download | PROJ-0fbe7cf33c308c4b7c81e65e18b90e9d773ba333.tar.gz PROJ-0fbe7cf33c308c4b7c81e65e18b90e9d773ba333.zip | |
Merge remote-tracking branch 'rouault/gdalbarn'
Diffstat (limited to 'src/iso19111/crs.cpp')
| -rw-r--r-- | src/iso19111/crs.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/iso19111/crs.cpp b/src/iso19111/crs.cpp index eec36fee..190291de 100644 --- a/src/iso19111/crs.cpp +++ b/src/iso19111/crs.cpp @@ -1046,17 +1046,21 @@ GeodeticCRS::create(const util::PropertyMap &properties, //! @cond Doxygen_Suppress void GeodeticCRS::_exportToWKT(io::WKTFormatter *formatter) const { const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; - formatter->startNode(isWKT2 ? ((formatter->use2018Keywords() && - dynamic_cast<const GeographicCRS *>(this)) - ? io::WKTConstants::GEOGCRS - : io::WKTConstants::GEODCRS) - : isGeocentric() ? io::WKTConstants::GEOCCS - : io::WKTConstants::GEOGCS, + const bool isGeographic = + dynamic_cast<const GeographicCRS *>(this) != nullptr; + formatter->startNode(isWKT2 + ? ((formatter->use2018Keywords() && isGeographic) + ? io::WKTConstants::GEOGCRS + : io::WKTConstants::GEODCRS) + : isGeocentric() ? io::WKTConstants::GEOCCS + : io::WKTConstants::GEOGCS, !identifiers().empty()); auto l_name = nameStr(); const auto &cs = coordinateSystem(); const auto &axisList = cs->axisList(); + const auto oldAxisOutputRule = formatter->outputAxis(); + if (formatter->useESRIDialect()) { if (axisList.size() != 2) { io::FormattingException::Throw( @@ -1083,7 +1087,13 @@ void GeodeticCRS::_exportToWKT(io::WKTFormatter *formatter) const { } } } + } else if (!isWKT2 && formatter->isStrict() && isGeographic && + axisList.size() != 2 && + oldAxisOutputRule != io::WKTFormatter::OutputAxisRule::NO) { + io::FormattingException::Throw( + "WKT1 does not support Geographic 3D CRS."); } + if (!isWKT2 && !formatter->useESRIDialect() && isDeprecated()) { l_name += " (deprecated)"; } @@ -1098,7 +1108,6 @@ void GeodeticCRS::_exportToWKT(io::WKTFormatter *formatter) const { unit._exportToWKT(formatter); } - const auto oldAxisOutputRule = formatter->outputAxis(); if (oldAxisOutputRule == io::WKTFormatter::OutputAxisRule::WKT1_GDAL_EPSG_STYLE && isGeocentric()) { |
