aboutsummaryrefslogtreecommitdiff
path: root/test/unit/test_factory.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2021-04-22 22:51:31 +0200
committerEven Rouault <even.rouault@spatialys.com>2021-04-23 01:07:04 +0200
commitf6abb7d75c647013dd83a82361b96c202e615d90 (patch)
tree6743cf5b5feab06004e85ff55f654cd1671a6dc9 /test/unit/test_factory.cpp
parentc6dba3fffb80fe6394f51aae0762f7e5db6d9edf (diff)
downloadPROJ-f6abb7d75c647013dd83a82361b96c202e615d90.tar.gz
PROJ-f6abb7d75c647013dd83a82361b96c202e615d90.zip
Database: update to EPSG v10.019
Non-trivial updates: - some vertical CRS are now encoded as DerivedVerticalCRS. e.g EPSG:8228 "NAVD88 height (ft)", with base EPSG:5703 "NAVD88 height". As we don't have support in our PROJ db model for DerivedVerticalCRS, modify the import script to 'resolve' the derivation up to the original datum. - Method EPSG:1069 'Change of Vertical Unit' is no longer used. It is replaced by a generic-purpose EPSG:1104 method that doesn't take any conversion factor. And generic conversions EPSG:7812 and EPSG:7813 are now used in concatenated operations, which require code changes as well.
Diffstat (limited to 'test/unit/test_factory.cpp')
-rw-r--r--test/unit/test_factory.cpp38
1 files changed, 37 insertions, 1 deletions
diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp
index 02033a8a..c10c4697 100644
--- a/test/unit/test_factory.cpp
+++ b/test/unit/test_factory.cpp
@@ -1261,7 +1261,7 @@ TEST(
auto operations = concatenated->operations();
ASSERT_EQ(operations.size(), 2U);
EXPECT_TRUE(operations[0]->isEquivalentTo(
- factory->createCoordinateOperation("7972", false).get()));
+ factory->createCoordinateOperation("7813", false).get()));
EXPECT_TRUE(operations[1]->isEquivalentTo(
factory->createCoordinateOperation("7969", false).get()));
}
@@ -1270,6 +1270,42 @@ TEST(
TEST(
factory,
+ AuthorityFactory_createCoordinateOperation_concatenated_operation_step_2_and_3_are_conversion) {
+ auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG");
+ auto op = factory->createCoordinateOperation("7987", false);
+ auto concatenated = nn_dynamic_pointer_cast<ConcatenatedOperation>(op);
+ ASSERT_TRUE(concatenated != nullptr);
+ auto operations = concatenated->operations();
+ ASSERT_EQ(operations.size(), 3U);
+ EXPECT_TRUE(operations[0]->isEquivalentTo(
+ factory->createCoordinateOperation("7980", false).get()));
+ EXPECT_TRUE(operations[1]->isEquivalentTo(
+ factory->createCoordinateOperation("7812", false).get()));
+ EXPECT_TRUE(operations[2]->isEquivalentTo(
+ factory->createCoordinateOperation("7813", false).get()));
+
+ EXPECT_EQ(operations[1]->targetCRS()->nameStr(), "KOC WD depth");
+ EXPECT_EQ(operations[2]->sourceCRS()->nameStr(),
+ operations[1]->targetCRS()->nameStr());
+ EXPECT_EQ(
+ concatenated->exportToPROJString(PROJStringFormatter::create().get()),
+ "+proj=pipeline "
+ "+step +proj=geogoffset +dh=-4.74 "
+ "+step +proj=axisswap +order=1,2,-3 "
+ "+step +proj=unitconvert +z_in=m +z_out=ft");
+
+ EXPECT_EQ(concatenated->inverse()->exportToPROJString(
+ PROJStringFormatter::create().get()),
+ "+proj=pipeline "
+ "+step +proj=unitconvert +z_in=ft +z_out=m "
+ "+step +proj=axisswap +order=1,2,-3 "
+ "+step +proj=geogoffset +dh=4.74");
+}
+
+// ---------------------------------------------------------------------------
+
+TEST(
+ factory,
AuthorityFactory_createCoordinateOperation_concatenated_operation_epsg_9103) {
auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG");
auto op = factory->createCoordinateOperation("9103", false);