aboutsummaryrefslogtreecommitdiff
path: root/src/iso19111/coordinateoperation.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-07-09 00:11:28 +0200
committerEven Rouault <even.rouault@spatialys.com>2020-07-09 00:11:28 +0200
commit5c9bd6e722e2ccfd4048633239756b85b901c9f2 (patch)
tree0fccc5711ecd671b9f5b6657faa0183b28bc6f1a /src/iso19111/coordinateoperation.cpp
parentcf3caffd458d3ad6122c47e58799c98cf865e1b6 (diff)
downloadPROJ-5c9bd6e722e2ccfd4048633239756b85b901c9f2.tar.gz
PROJ-5c9bd6e722e2ccfd4048633239756b85b901c9f2.zip
PROJ string export of +proj=krovak +czech: make sure we export +czech instead of +axis=swu (fixes #2299)
Diffstat (limited to 'src/iso19111/coordinateoperation.cpp')
-rw-r--r--src/iso19111/coordinateoperation.cpp31
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);