diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2020-03-25 17:55:46 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-03-25 17:55:46 +0100 |
| commit | b3fe4a04edd2fb141b2faf4c4cb9bc24b430849d (patch) | |
| tree | 43e67a483c7e5bd7577a34a35dea545328195484 /src | |
| parent | 60ed38a2483cf6fe44f2fdf7b75844c9fff2c92c (diff) | |
| parent | 2eb726f0e169c41cb9881dd49cb172e8e34325e8 (diff) | |
| download | PROJ-b3fe4a04edd2fb141b2faf4c4cb9bc24b430849d.tar.gz PROJ-b3fe4a04edd2fb141b2faf4c4cb9bc24b430849d.zip | |
Merge pull request #2091 from PROJ-BOT/backport-2090-to-6.3
[Backport 6.3] EngineeringCRS: when exporting to WKT1_GDAL, output unit and axis (fixes https://github.com/OSGeo/gdal/issues/2347)
Diffstat (limited to 'src')
| -rw-r--r-- | src/iso19111/crs.cpp | 34 |
1 files changed, 12 insertions, 22 deletions
diff --git a/src/iso19111/crs.cpp b/src/iso19111/crs.cpp index 1c3db81e..6f77f833 100644 --- a/src/iso19111/crs.cpp +++ b/src/iso19111/crs.cpp @@ -310,17 +310,15 @@ CRSNNPtr CRS::alterCSLinearUnit(const common::UnitOfMeasure &unit) const { auto cartCS = util::nn_dynamic_pointer_cast<cs::CartesianCS>( engCRS->coordinateSystem()); if (cartCS) { - auto props = createPropertyMap(this); - props.set("FORCE_OUTPUT_CS", true); - return EngineeringCRS::create(props, engCRS->datum(), + return EngineeringCRS::create(createPropertyMap(this), + engCRS->datum(), cartCS->alterUnit(unit)); } else { auto vertCS = util::nn_dynamic_pointer_cast<cs::VerticalCS>( engCRS->coordinateSystem()); if (vertCS) { - auto props = createPropertyMap(this); - props.set("FORCE_OUTPUT_CS", true); - return EngineeringCRS::create(props, engCRS->datum(), + return EngineeringCRS::create(createPropertyMap(this), + engCRS->datum(), vertCS->alterUnit(unit)); } } @@ -5316,9 +5314,7 @@ bool TemporalCRS::_isEquivalentTo( // --------------------------------------------------------------------------- //! @cond Doxygen_Suppress -struct EngineeringCRS::Private { - bool forceOutputCS_ = false; -}; +struct EngineeringCRS::Private {}; //! @endcond // --------------------------------------------------------------------------- @@ -5376,17 +5372,6 @@ EngineeringCRS::create(const util::PropertyMap &properties, crs->assignSelf(crs); crs->setProperties(properties); - const auto pVal = properties.get("FORCE_OUTPUT_CS"); - if (pVal) { - if (const auto genVal = - dynamic_cast<const util::BoxedValue *>(pVal->get())) { - if (genVal->type() == util::BoxedValue::Type::BOOLEAN && - genVal->booleanValue()) { - crs->d->forceOutputCS_ = true; - } - } - } - return crs; } @@ -5401,11 +5386,16 @@ void EngineeringCRS::_exportToWKT(io::WKTFormatter *formatter) const { formatter->addQuotedString(nameStr()); if (isWKT2 || !datum()->nameStr().empty()) { datum()->_exportToWKT(formatter); - coordinateSystem()->_exportToWKT(formatter); } - if (!isWKT2 && d->forceOutputCS_) { + if (!isWKT2) { coordinateSystem()->axisList()[0]->unit()._exportToWKT(formatter); } + + const auto oldAxisOutputRule = formatter->outputAxis(); + formatter->setOutputAxis(io::WKTFormatter::OutputAxisRule::YES); + coordinateSystem()->_exportToWKT(formatter); + formatter->setOutputAxis(oldAxisOutputRule); + ObjectUsage::baseExportToWKT(formatter); formatter->endNode(); } |
