aboutsummaryrefslogtreecommitdiff
path: root/src/iso19111/operation/conversion.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2022-01-11 11:28:16 +0100
committerGitHub <noreply@github.com>2022-01-11 11:28:16 +0100
commit10fc60fdce62520230039345db0446738e77afca (patch)
tree60847a7efd86daecaaa88bf630edaf8dfccb4a96 /src/iso19111/operation/conversion.cpp
parentc6c2a3b22ddef30a29cfc48ca810ee1a54385242 (diff)
parent7afaa7a400bd3e6a8550a5c6a3d0da88b3861e38 (diff)
downloadPROJ-10fc60fdce62520230039345db0446738e77afca.tar.gz
PROJ-10fc60fdce62520230039345db0446738e77afca.zip
Merge pull request #3014 from rouault/fix_3011
peirce_q: rename +type parameter wrongly introduced in 8.2.1 to +shape (fixes #3011)
Diffstat (limited to 'src/iso19111/operation/conversion.cpp')
-rw-r--r--src/iso19111/operation/conversion.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/iso19111/operation/conversion.cpp b/src/iso19111/operation/conversion.cpp
index 77e703f3..6bccf182 100644
--- a/src/iso19111/operation/conversion.cpp
+++ b/src/iso19111/operation/conversion.cpp
@@ -3839,6 +3839,30 @@ void Conversion::_exportToPROJString(
formatter->addParam("x_0", falseEasting);
formatter->addParam("y_0", falseNorthing);
bConversionDone = true;
+ } else if (ci_equal(methodName,
+ PROJ_WKT2_NAME_METHOD_PEIRCE_QUINCUNCIAL_SQUARE) ||
+ ci_equal(methodName,
+ PROJ_WKT2_NAME_METHOD_PEIRCE_QUINCUNCIAL_DIAMOND)) {
+ const auto &scaleFactor = parameterValueMeasure(
+ EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN);
+ if (scaleFactor.unit().type() != common::UnitOfMeasure::Type::UNKNOWN &&
+ std::fabs(scaleFactor.getSIValue() - 1.0) > 1e-10) {
+ throw io::FormattingException(
+ "Only scale factor = 1 handled for Peirce Quincuncial");
+ }
+ const double latitudeOfOriginDeg =
+ parameterValue(EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN)
+ ->value()
+ .unit()
+ .type() != common::UnitOfMeasure::Type::UNKNOWN
+ ? parameterValueNumeric(
+ EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN,
+ common::UnitOfMeasure::DEGREE)
+ : 90.0;
+ if (std::fabs(latitudeOfOriginDeg - 90.0) > 1e-10) {
+ throw io::FormattingException("Only latitude of natural origin = "
+ "90 handled for Peirce Quincuncial");
+ }
} else if (formatter->convention() ==
io::PROJStringFormatter::Convention::PROJ_5 &&
isZUnitConversion) {