diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2018-12-01 17:29:19 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2018-12-01 17:53:15 +0100 |
| commit | 18dbc00dc30db7ca5fa7bd6a00115628324dcd0c (patch) | |
| tree | 79da69c780a09929397179dc1e2bd37a10dfe6ad /src/io.cpp | |
| parent | fa11a21801ac1f8afaa768390c46f5226089b090 (diff) | |
| download | PROJ-18dbc00dc30db7ca5fa7bd6a00115628324dcd0c.tar.gz PROJ-18dbc00dc30db7ca5fa7bd6a00115628324dcd0c.zip | |
importFromWKT: deal with uncommon formulation of EPSG:3857
Diffstat (limited to 'src/io.cpp')
| -rw-r--r-- | src/io.cpp | 28 |
1 files changed, 21 insertions, 7 deletions
@@ -3299,6 +3299,18 @@ ConversionNNPtr WKTParser::Private::buildProjectionStandard( // --------------------------------------------------------------------------- +static ProjectedCRSNNPtr createPseudoMercator(PropertyMap &props) { + auto conversion = Conversion::createPopularVisualisationPseudoMercator( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), Angle(0), + Angle(0), Length(0), Length(0)); + props.set(IdentifiedObject::NAME_KEY, "WGS 84 / Pseudo-Mercator"); + return ProjectedCRS::create( + props, GeographicCRS::EPSG_4326, conversion, + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + ProjectedCRSNNPtr WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) { @@ -3312,13 +3324,15 @@ WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) { auto props = buildProperties(node); if (isNull(conversionNode) && hasWebMercPROJ4String(node, projectionNode)) { - auto conversion = Conversion::createPopularVisualisationPseudoMercator( - PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), Angle(0), - Angle(0), Length(0), Length(0)); - props.set(IdentifiedObject::NAME_KEY, "WGS 84 / Pseudo-Mercator"); - return ProjectedCRS::create( - props, GeographicCRS::EPSG_4326, conversion, - CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + return createPseudoMercator(props); + } + + const std::string projectedCRSName = stripQuotes(nodeP->children()[0]); + // Particular case for corrupted ESRI WKT generated by older GDAL versions + // https://trac.osgeo.org/gdal/changeset/30732 + if (metadata::Identifier::isEquivalentName(projectedCRSName.c_str(), + "WGS_84_Pseudo_Mercator")) { + return createPseudoMercator(props); } auto &baseGeodCRSNode = |
