diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2019-11-03 10:46:36 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2019-11-03 11:38:39 +0100 |
| commit | ff69c7e4535e869d0d9c6831c50d2f0fd2d288ca (patch) | |
| tree | 24b5426266ea44ec5ed40f60a058d5db6b2f0330 /test/unit/test_io.cpp | |
| parent | 0923704ba34100643b7bce270c332fa2c430224c (diff) | |
| download | PROJ-ff69c7e4535e869d0d9c6831c50d2f0fd2d288ca.tar.gz PROJ-ff69c7e4535e869d0d9c6831c50d2f0fd2d288ca.zip | |
Import from WKT: add tweaks for Lidar WKT1 VERT_CS that embeds geoid model in CRS name
Diffstat (limited to 'test/unit/test_io.cpp')
| -rw-r--r-- | test/unit/test_io.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index 6bb93e97..79851695 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -2031,6 +2031,71 @@ TEST(wkt_parse, vertcrs_WKT1_GDAL_minimum) { // --------------------------------------------------------------------------- +TEST(wkt_parse, vertcrs_WKT1_LAS_ftUS) { + auto wkt = "VERT_CS[\"NAVD88 - Geoid03 (Feet)\"," + " VERT_DATUM[\"unknown\",2005]," + " UNIT[\"US survey foot\",0.3048006096012192," + " AUTHORITY[\"EPSG\",\"9003\"]]," + " AXIS[\"Up\",UP]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<VerticalCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->nameStr(), "NAVD88 height (ftUS)"); + ASSERT_EQ(crs->identifiers().size(), 1U); + EXPECT_EQ(crs->identifiers()[0]->code(), "6360"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "EPSG"); + + const auto &geoidModel = crs->geoidModel(); + ASSERT_TRUE(!geoidModel.empty()); + EXPECT_EQ(geoidModel[0]->nameStr(), "GEOID03"); + + auto datum = crs->datum(); + EXPECT_EQ(datum->nameStr(), "North American Vertical Datum 1988"); + ASSERT_EQ(datum->identifiers().size(), 1U); + EXPECT_EQ(datum->identifiers()[0]->code(), "5103"); + EXPECT_EQ(*(datum->identifiers()[0]->codeSpace()), "EPSG"); + + const auto &axis = crs->coordinateSystem()->axisList()[0]; + EXPECT_EQ(axis->direction(), AxisDirection::UP); + EXPECT_EQ(axis->unit().name(), "US survey foot"); + EXPECT_NEAR(axis->unit().conversionToSI(), 0.3048006096012192, 1e-16); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, vertcrs_WKT1_LAS_metre) { + auto wkt = "VERT_CS[\"NAVD88 via Geoid09\"," + " VERT_DATUM[\"unknown\",2005]," + " UNIT[\"metre\",1.0," + " AUTHORITY[\"EPSG\",\"9001\"]]," + " AXIS[\"Up\",UP]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<VerticalCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->nameStr(), "NAVD88 height"); + ASSERT_EQ(crs->identifiers().size(), 1U); + EXPECT_EQ(crs->identifiers()[0]->code(), "5703"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "EPSG"); + + const auto &geoidModel = crs->geoidModel(); + ASSERT_TRUE(!geoidModel.empty()); + EXPECT_EQ(geoidModel[0]->nameStr(), "GEOID09"); + + auto datum = crs->datum(); + EXPECT_EQ(datum->nameStr(), "North American Vertical Datum 1988"); + ASSERT_EQ(datum->identifiers().size(), 1U); + EXPECT_EQ(datum->identifiers()[0]->code(), "5103"); + EXPECT_EQ(*(datum->identifiers()[0]->codeSpace()), "EPSG"); + + const auto &axis = crs->coordinateSystem()->axisList()[0]; + EXPECT_EQ(axis->direction(), AxisDirection::UP); + EXPECT_EQ(axis->unit(), UnitOfMeasure::METRE); +} + +// --------------------------------------------------------------------------- + TEST(wkt_parse, dynamic_vertical_reference_frame) { auto obj = WKTParser().createFromWKT( "VERTCRS[\"RH2000\"," |
