diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2019-05-06 19:45:27 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2019-05-06 20:21:27 +0200 |
| commit | 61cf8c5b29c82ab7e46b207bd125eaad49c03021 (patch) | |
| tree | 0d02cecceb233a94fa931caa47aed2c33543c53b /src/iso19111/io.cpp | |
| parent | 5e98fed78205605ccb01ab4310d3cba292de73b4 (diff) | |
| download | PROJ-61cf8c5b29c82ab7e46b207bd125eaad49c03021.tar.gz PROJ-61cf8c5b29c82ab7e46b207bd125eaad49c03021.zip | |
createOperations(): for 'Amersfoort / RD New + NAP height' (EPSG:7415) to ETRS89 (EPSG:4937), make sure that the vgridshift is applied first (ie on Amersfoort datum) before the hgridshift
Diffstat (limited to 'src/iso19111/io.cpp')
| -rw-r--r-- | src/iso19111/io.cpp | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/iso19111/io.cpp b/src/iso19111/io.cpp index e072a66f..c84ea2f3 100644 --- a/src/iso19111/io.cpp +++ b/src/iso19111/io.cpp @@ -3818,7 +3818,7 @@ CRSNNPtr WKTParser::Private::buildVerticalCRS(const WKTNodeNNPtr &node) { Transformation::createGravityRelatedHeightToGeographic3D( PropertyMap().set(IdentifiedObject::NAME_KEY, transformationName), - crs, GeographicCRS::EPSG_4979, + crs, GeographicCRS::EPSG_4979, nullptr, stripQuotes(extensionChildren[1]), std::vector<PositionalAccuracyNNPtr>()); return nn_static_pointer_cast<CRS>(BoundCRS::create( @@ -4922,7 +4922,7 @@ struct PROJStringFormatter::Private { }; std::vector<InversionStackElt> inversionStack_{InversionStackElt()}; bool omitProjLongLatIfPossible_ = false; - bool omitZUnitConversion_ = false; + std::vector<bool> omitZUnitConversion_{false}; DatabaseContextPtr dbContext_{}; bool useApproxTMerc_ = false; bool addNoDefs_ = true; @@ -5939,15 +5939,21 @@ bool PROJStringFormatter::omitProjLongLatIfPossible() const { // --------------------------------------------------------------------------- -void PROJStringFormatter::setOmitZUnitConversion(bool omit) { - assert(d->omitZUnitConversion_ ^ omit); - d->omitZUnitConversion_ = omit; +void PROJStringFormatter::pushOmitZUnitConversion() { + d->omitZUnitConversion_.push_back(true); +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::popOmitZUnitConversion() { + assert(d->omitZUnitConversion_.size() > 1); + d->omitZUnitConversion_.pop_back(); } // --------------------------------------------------------------------------- bool PROJStringFormatter::omitZUnitConversion() const { - return d->omitZUnitConversion_; + return d->omitZUnitConversion_.back(); } // --------------------------------------------------------------------------- @@ -6995,7 +7001,7 @@ PROJStringParser::Private::buildBoundOrCompoundCRSIfNeeded(int iStep, Transformation::createGravityRelatedHeightToGeographic3D( PropertyMap().set(IdentifiedObject::NAME_KEY, "unknown to WGS84 ellipsoidal height"), - crs, GeographicCRS::EPSG_4979, geoidgrids, + crs, GeographicCRS::EPSG_4979, nullptr, geoidgrids, std::vector<PositionalAccuracyNNPtr>()); auto boundvcrs = BoundCRS::create(vcrs, GeographicCRS::EPSG_4979, transformation); |
