From d18c1972dfe480847353c03a5c4aa259e7d1b482 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 20 Oct 2020 14:43:57 +0200 Subject: Orthographic projection: do not add f=0 to PROJ string if the ellipsoid is a sphere (fixes GDAL PDS4 tests) --- src/iso19111/coordinateoperation.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src') diff --git a/src/iso19111/coordinateoperation.cpp b/src/iso19111/coordinateoperation.cpp index 184ff435..3577b6ff 100644 --- a/src/iso19111/coordinateoperation.cpp +++ b/src/iso19111/coordinateoperation.cpp @@ -6332,6 +6332,27 @@ void Conversion::_exportToPROJString( } bAxisSpecFound = true; } + + // No need to add explicit f=0 if the ellipsoid is a sphere + if (strcmp(mapping->proj_name_aux, "f=0") == 0) { + crs::CRS *horiz = l_sourceCRS.get(); + const auto compound = + dynamic_cast(horiz); + if (compound) { + const auto &components = + compound->componentReferenceSystems(); + if (!components.empty()) { + horiz = components.front().get(); + } + } + + auto geogCRS = + dynamic_cast(horiz); + if (geogCRS && geogCRS->ellipsoid()->isSphere()) { + addAux = false; + } + } + if (addAux) { auto kv = split(mapping->proj_name_aux, '='); if (kv.size() == 2) { -- cgit v1.2.3