aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2021-02-10 18:53:54 +0100
committerGitHub <noreply@github.com>2021-02-10 18:53:54 +0100
commit755d6d396ec29fdfa72d26bad28a9b17d8e1b4c6 (patch)
tree5851e1d6d383db1b802b949603ea28813bd80ca0 /src
parent36d8691b20bb0caeb87be262a9b1f0d088ccffd0 (diff)
parent836af9dcf12c3870e8a412c97f6968b69c4b3bad (diff)
downloadPROJ-755d6d396ec29fdfa72d26bad28a9b17d8e1b4c6.tar.gz
PROJ-755d6d396ec29fdfa72d26bad28a9b17d8e1b4c6.zip
Merge pull request #2524 from rouault/fix_2510
Fix handling of +proj=ob_tran +o_proj=longlat combined with +over (fixes #2510)
Diffstat (limited to 'src')
-rw-r--r--src/iso19111/crs.cpp16
-rw-r--r--src/iso19111/io.cpp17
2 files changed, 20 insertions, 13 deletions
diff --git a/src/iso19111/crs.cpp b/src/iso19111/crs.cpp
index 9d58f733..1ac60d88 100644
--- a/src/iso19111/crs.cpp
+++ b/src/iso19111/crs.cpp
@@ -5757,11 +5757,17 @@ void DerivedGeographicCRS::_exportToPROJString(
{
const auto &l_conv = derivingConversionRef();
const auto &methodName = l_conv->method()->nameStr();
- if (methodName == "PROJ ob_tran o_proj=longlat" ||
- methodName == "PROJ ob_tran o_proj=lonlat" ||
- methodName == "PROJ ob_tran o_proj=latlong" ||
- methodName == "PROJ ob_tran o_proj=latlon" ||
- ci_equal(methodName,
+
+ for (const char *substr :
+ {"PROJ ob_tran o_proj=longlat", "PROJ ob_tran o_proj=lonlat",
+ "PROJ ob_tran o_proj=latlon", "PROJ ob_tran o_proj=latlong"}) {
+ if (starts_with(methodName, substr)) {
+ l_conv->_exportToPROJString(formatter);
+ return;
+ }
+ }
+
+ if (ci_equal(methodName,
PROJ_WKT2_NAME_METHOD_POLE_ROTATION_GRIB_CONVENTION)) {
l_conv->_exportToPROJString(formatter);
return;
diff --git a/src/iso19111/io.cpp b/src/iso19111/io.cpp
index c0844608..6ea6316c 100644
--- a/src/iso19111/io.cpp
+++ b/src/iso19111/io.cpp
@@ -9674,14 +9674,15 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS(
parameters, values)
.as_nullable();
- if (is_in_stringlist(methodName, "PROJ ob_tran o_proj=longlat,"
- "PROJ ob_tran o_proj=lonlat,"
- "PROJ ob_tran o_proj=latlon,"
- "PROJ ob_tran o_proj=latlong")) {
- return DerivedGeographicCRS::create(
- PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"),
- geogCRS, NN_NO_CHECK(conv),
- buildEllipsoidalCS(iStep, iUnitConvert, iAxisSwap, false));
+ for (const char *substr :
+ {"PROJ ob_tran o_proj=longlat", "PROJ ob_tran o_proj=lonlat",
+ "PROJ ob_tran o_proj=latlon", "PROJ ob_tran o_proj=latlong"}) {
+ if (starts_with(methodName, substr)) {
+ return DerivedGeographicCRS::create(
+ PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"),
+ geogCRS, NN_NO_CHECK(conv),
+ buildEllipsoidalCS(iStep, iUnitConvert, iAxisSwap, false));
+ }
}
}