diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2020-04-22 19:25:07 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2020-04-22 19:54:45 +0200 |
| commit | 34a6fef7deb4260b4dabdd71a76f8d2aa262406c (patch) | |
| tree | 311a514d986f197eeb9857fe372e8ccacf6d9cd1 /src/iso19111/coordinateoperation.cpp | |
| parent | d9934eb07fb38ad57f40eb6c308fcbbf0f713d86 (diff) | |
| download | PROJ-34a6fef7deb4260b4dabdd71a76f8d2aa262406c.tar.gz PROJ-34a6fef7deb4260b4dabdd71a76f8d2aa262406c.zip | |
PROJ4 string import: take into correctly non-metre unit when the string looks like the one for WGS 84 / Pseudo Mercator (fixes https://github.com/OSGeo/gdal/issues/2433) (#2174)
Diffstat (limited to 'src/iso19111/coordinateoperation.cpp')
| -rw-r--r-- | src/iso19111/coordinateoperation.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/iso19111/coordinateoperation.cpp b/src/iso19111/coordinateoperation.cpp index f61215d0..883e2f32 100644 --- a/src/iso19111/coordinateoperation.cpp +++ b/src/iso19111/coordinateoperation.cpp @@ -5821,6 +5821,24 @@ static bool createPROJ4WebMercator(const Conversion *conv, return false; } + std::string units("m"); + auto targetCRS = conv->targetCRS(); + auto targetProjCRS = + dynamic_cast<const crs::ProjectedCRS *>(targetCRS.get()); + if (targetProjCRS) { + const auto &axisList = targetProjCRS->coordinateSystem()->axisList(); + const auto &unit = axisList[0]->unit(); + if (!unit._isEquivalentTo(common::UnitOfMeasure::METRE, + util::IComparable::Criterion::EQUIVALENT)) { + auto projUnit = unit.exportToPROJString(); + if (!projUnit.empty()) { + units = projUnit; + } else { + return false; + } + } + } + formatter->addStep("merc"); const double a = geogCRS->ellipsoid()->semiMajorAxis().getSIValue(); formatter->addParam("a", a); @@ -5830,7 +5848,7 @@ static bool createPROJ4WebMercator(const Conversion *conv, formatter->addParam("x_0", falseEasting); formatter->addParam("y_0", falseNorthing); formatter->addParam("k", 1.0); - formatter->addParam("units", "m"); + formatter->addParam("units", units); formatter->addParam("nadgrids", "@null"); formatter->addParam("wktext"); formatter->addParam("no_defs"); |
