aboutsummaryrefslogtreecommitdiff
path: root/src/iso19111/crs.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-01-05 19:56:03 +0100
committerEven Rouault <even.rouault@spatialys.com>2019-01-05 19:56:03 +0100
commit0fbe7cf33c308c4b7c81e65e18b90e9d773ba333 (patch)
treee0bdd52d3ebb96edd97df9a8e385fc9af6dd15c2 /src/iso19111/crs.cpp
parent3ea468222fdabdae3aa5b47439d6b3bfb0a93c8e (diff)
parentb62fdee0f34d960527af8fb0a8bf6344fcf78d4b (diff)
downloadPROJ-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.cpp23
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()) {