diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2020-07-09 11:50:44 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-09 11:50:44 +0200 |
| commit | 668fb0aacd46db2c4aaadb557b14443eee028405 (patch) | |
| tree | 67e0e2c041687bb62471c3c624c33a7d15b47f79 /src | |
| parent | 24624869b426b6e436697ee4f7b116f5db823c66 (diff) | |
| parent | 5c9bd6e722e2ccfd4048633239756b85b901c9f2 (diff) | |
| download | PROJ-668fb0aacd46db2c4aaadb557b14443eee028405.tar.gz PROJ-668fb0aacd46db2c4aaadb557b14443eee028405.zip | |
Merge pull request #2300 from rouault/krovak_czech
PROJ string export of +proj=krovak +czech: make sure we export +czech…
Diffstat (limited to 'src')
| -rw-r--r-- | src/iso19111/coordinateoperation.cpp | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/src/iso19111/coordinateoperation.cpp b/src/iso19111/coordinateoperation.cpp index 482e6e6d..dd8658fb 100644 --- a/src/iso19111/coordinateoperation.cpp +++ b/src/iso19111/coordinateoperation.cpp @@ -6282,6 +6282,8 @@ void Conversion::_exportToPROJString( bEllipsoidParametersDone = true; } + auto l_targetCRS = targetCRS(); + bool bAxisSpecFound = false; if (!bConversionDone) { const MethodMapping *mapping = getMapping(l_method.get()); @@ -6291,14 +6293,32 @@ void Conversion::_exportToPROJString( formatter->addParam("approx"); } if (mapping->proj_name_aux) { + bool addAux = true; if (internal::starts_with(mapping->proj_name_aux, "axis=")) { + if (mapping->epsg_code == EPSG_CODE_METHOD_KROVAK) { + auto projCRS = dynamic_cast<const crs::ProjectedCRS *>( + l_targetCRS.get()); + if (projCRS) { + const auto &axisList = + projCRS->coordinateSystem()->axisList(); + if (axisList[0]->direction() == + cs::AxisDirection::WEST && + axisList[1]->direction() == + cs::AxisDirection::SOUTH) { + formatter->addParam("czech"); + addAux = false; + } + } + } bAxisSpecFound = true; } - auto kv = split(mapping->proj_name_aux, '='); - if (kv.size() == 2) { - formatter->addParam(kv[0], kv[1]); - } else { - formatter->addParam(mapping->proj_name_aux); + if (addAux) { + auto kv = split(mapping->proj_name_aux, '='); + if (kv.size() == 2) { + formatter->addParam(kv[0], kv[1]); + } else { + formatter->addParam(mapping->proj_name_aux); + } } } @@ -6352,7 +6372,6 @@ void Conversion::_exportToPROJString( } } - auto l_targetCRS = targetCRS(); if (l_targetCRS && applyTargetCRSModifiers) { crs::CRS *horiz = l_targetCRS.get(); const auto compound = dynamic_cast<const crs::CompoundCRS *>(horiz); |
