diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2022-01-11 11:28:16 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-11 11:28:16 +0100 |
| commit | 10fc60fdce62520230039345db0446738e77afca (patch) | |
| tree | 60847a7efd86daecaaa88bf630edaf8dfccb4a96 /src/iso19111/operation/conversion.cpp | |
| parent | c6c2a3b22ddef30a29cfc48ca810ee1a54385242 (diff) | |
| parent | 7afaa7a400bd3e6a8550a5c6a3d0da88b3861e38 (diff) | |
| download | PROJ-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.cpp | 24 |
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) { |
