aboutsummaryrefslogtreecommitdiff
path: root/src/iso19111/datum.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-05-16 15:36:06 +0200
committerEven Rouault <even.rouault@spatialys.com>2020-05-16 15:36:06 +0200
commitf57475aa3b26bf4a5cbf94b579c93a72a54558eb (patch)
treea0c55de798d32c69a0311ae4cab6b319a47a5d4e /src/iso19111/datum.cpp
parent330b2066244f77f89995a1aa195ef4323948a9b9 (diff)
downloadPROJ-f57475aa3b26bf4a5cbf94b579c93a72a54558eb.tar.gz
PROJ-f57475aa3b26bf4a5cbf94b579c93a72a54558eb.zip
Allow importing WKT1 COMPD_CS with a VERT_DATUM[Ellipsoid,2002], and exporting it back as such (on the same object) (fixes #2228)
Diffstat (limited to 'src/iso19111/datum.cpp')
-rw-r--r--src/iso19111/datum.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/iso19111/datum.cpp b/src/iso19111/datum.cpp
index 03abb0d7..33eb81fa 100644
--- a/src/iso19111/datum.cpp
+++ b/src/iso19111/datum.cpp
@@ -1788,6 +1788,9 @@ operator=(const RealizationMethod &other) {
//! @cond Doxygen_Suppress
struct VerticalReferenceFrame::Private {
util::optional<RealizationMethod> realizationMethod_{};
+
+ // 2005 = CS_VD_GeoidModelDerived from OGC 01-009
+ std::string wkt1DatumType_{"2005"};
};
//! @endcond
@@ -1837,12 +1840,21 @@ VerticalReferenceFrameNNPtr VerticalReferenceFrame::create(
realizationMethodIn));
rf->setAnchor(anchor);
rf->setProperties(properties);
+ properties.getStringValue("VERT_DATUM_TYPE", rf->d->wkt1DatumType_);
return rf;
}
// ---------------------------------------------------------------------------
//! @cond Doxygen_Suppress
+const std::string &VerticalReferenceFrame::getWKT1DatumType() const {
+ return d->wkt1DatumType_;
+}
+//! @endcond
+
+// ---------------------------------------------------------------------------
+
+//! @cond Doxygen_Suppress
void VerticalReferenceFrame::_exportToWKT(
io::WKTFormatter *formatter) const // throw(FormattingException)
{
@@ -1861,7 +1873,7 @@ void VerticalReferenceFrame::_exportToWKT(
if (isWKT2) {
Datum::getPrivate()->exportAnchorDefinition(formatter);
} else if (!formatter->useESRIDialect()) {
- formatter->add(2005); // CS_VD_GeoidModelDerived from OGC 01-009
+ formatter->add(d->wkt1DatumType_);
const auto &extension = formatter->getVDatumExtension();
if (!extension.empty()) {
formatter->startNode(io::WKTConstants::EXTENSION, false);