diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2018-11-22 21:32:51 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2018-11-22 21:32:51 +0100 |
| commit | b9d50247190e7b9ecd849ab260eb45edca3236cb (patch) | |
| tree | 1a82cbecf9a1d6e66b6f5f36a41cac6208bdb494 /test/unit | |
| parent | 85a4e9149152dd97463651496854f9ecbd720b84 (diff) | |
| download | PROJ-b9d50247190e7b9ecd849ab260eb45edca3236cb.tar.gz PROJ-b9d50247190e7b9ecd849ab260eb45edca3236cb.zip | |
Fix transformation between geographic CRS that differ by axis order and units
Diffstat (limited to 'test/unit')
| -rw-r--r-- | test/unit/test_io.cpp | 14 | ||||
| -rw-r--r-- | test/unit/test_operation.cpp | 30 |
2 files changed, 44 insertions, 0 deletions
diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index 00da162c..6ccd5578 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -5381,6 +5381,20 @@ TEST(io, projstringformatter_cart_grs80_wgs84) { // --------------------------------------------------------------------------- +TEST(io, projstringformatter_axisswap_unitconvert_axisswap) { + auto fmt = PROJStringFormatter::create(); + fmt->addStep("axisswap"); + fmt->addParam("order", "2,1"); + fmt->addStep("unitconvert"); + fmt->addParam("xy_in", "rad"); + fmt->addParam("xy_out", "deg"); + fmt->addStep("axisswap"); + fmt->addParam("order", "2,1"); + EXPECT_EQ(fmt->toString(), "+proj=unitconvert +xy_in=rad +xy_out=deg"); +} + +// --------------------------------------------------------------------------- + TEST(io, projparse_longlat) { auto expected = "GEODCRS[\"unknown\",\n" diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp index e62eddf9..528aa6b8 100644 --- a/test/unit/test_operation.cpp +++ b/test/unit/test_operation.cpp @@ -1142,6 +1142,36 @@ TEST(operation, transformation_createTOWGS84) { // --------------------------------------------------------------------------- +TEST(operation, createAxisOrderReversal) { + + auto latLongDeg = GeographicCRS::create( + PropertyMap(), GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)); + auto longLatDeg = GeographicCRS::create( + PropertyMap(), GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLongitudeLatitude(UnitOfMeasure::DEGREE)); + { + auto op = CoordinateOperationFactory::create()->createOperation( + latLongDeg, longLatDeg); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=axisswap +order=2,1"); + } + { + auto longLatRad = GeographicCRS::create( + PropertyMap(), GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLongitudeLatitude(UnitOfMeasure::RADIAN)); + auto op = CoordinateOperationFactory::create()->createOperation( + longLatRad, latLongDeg); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg"); + } +} + +// --------------------------------------------------------------------------- + TEST(operation, utm_export) { auto conv = Conversion::createUTM(PropertyMap(), 1, false); EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), |
