diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2021-09-28 14:47:08 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2021-09-28 14:47:08 +0200 |
| commit | f982d9d3104731727c445930bf14008d1c572d0a (patch) | |
| tree | 1f9a9febc6e759ccee0f120bffaee25b2fe1b3dd /test | |
| parent | bc30adc7d84aa07a551391f722c1ab7bcaae60ee (diff) | |
| download | PROJ-f982d9d3104731727c445930bf14008d1c572d0a.tar.gz PROJ-f982d9d3104731727c445930bf14008d1c572d0a.zip | |
Database: add IAU_2015 CRS
Diffstat (limited to 'test')
| -rw-r--r-- | test/cli/testprojinfo_out.dist | 2 | ||||
| -rw-r--r-- | test/unit/test_c_api.cpp | 12 | ||||
| -rw-r--r-- | test/unit/test_factory.cpp | 90 |
3 files changed, 93 insertions, 11 deletions
diff --git a/test/cli/testprojinfo_out.dist b/test/cli/testprojinfo_out.dist index a21e7501..0c9673a0 100644 --- a/test/cli/testprojinfo_out.dist +++ b/test/cli/testprojinfo_out.dist @@ -270,7 +270,7 @@ INSERT INTO projected_crs VALUES('HOBU','MY_CRS','unknown','','EPSG','4400','HOB INSERT INTO usage VALUES('HOBU','USAGE_PROJECTED_CRS_MY_CRS','projected_crs','HOBU','MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); Testing projinfo "+proj=merc +lat_ts=5 +datum=WGS84 +type=crs" --output-id HOBU:MY_CRS --authority HOBU -o SQL -q -INSERT INTO ellipsoid VALUES('HOBU','ELLPS_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','WGS 84','','PROJ','EARTH',6378137,'EPSG','9001',298.257223563,NULL,0); +INSERT INTO ellipsoid VALUES('HOBU','ELLPS_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','WGS 84','','IAU_2015','399',6378137,'EPSG','9001',298.257223563,NULL,0); INSERT INTO prime_meridian VALUES('HOBU','PM_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','Greenwich',0,'EPSG','9122',0); INSERT INTO geodetic_datum VALUES('HOBU','GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','World Geodetic System 1984','','HOBU','ELLPS_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','HOBU','PM_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS',NULL,NULL,NULL,NULL,0); INSERT INTO usage VALUES('HOBU','USAGE_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','geodetic_datum','HOBU','GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index 1049ce35..aceae656 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -1357,14 +1357,16 @@ TEST_F(CApi, proj_get_authorities_from_database) { ASSERT_TRUE(list[1] != nullptr); EXPECT_EQ(list[1], std::string("ESRI")); ASSERT_TRUE(list[2] != nullptr); - EXPECT_EQ(list[2], std::string("IGNF")); + EXPECT_EQ(list[2], std::string("IAU_2015")); ASSERT_TRUE(list[3] != nullptr); - EXPECT_EQ(list[3], std::string("NKG")); + EXPECT_EQ(list[3], std::string("IGNF")); ASSERT_TRUE(list[4] != nullptr); - EXPECT_EQ(list[4], std::string("OGC")); + EXPECT_EQ(list[4], std::string("NKG")); ASSERT_TRUE(list[5] != nullptr); - EXPECT_EQ(list[5], std::string("PROJ")); - EXPECT_EQ(list[6], nullptr); + EXPECT_EQ(list[5], std::string("OGC")); + ASSERT_TRUE(list[6] != nullptr); + EXPECT_EQ(list[6], std::string("PROJ")); + EXPECT_EQ(list[7], nullptr); } // --------------------------------------------------------------------------- diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp index 9319968d..a3156faf 100644 --- a/test/unit/test_factory.cpp +++ b/test/unit/test_factory.cpp @@ -1561,6 +1561,86 @@ TEST(factory, AuthorityFactory_getDescriptionText) { // --------------------------------------------------------------------------- +TEST(factory, AuthorityFactory_IAU_2015) { + auto factory = + AuthorityFactory::create(DatabaseContext::create(), "IAU_2015"); + + { + auto crs = factory->createGeographicCRS("19900"); + EXPECT_EQ(crs->nameStr(), "Mercury (2015) - Sphere / Ocentric"); + + const auto ellps = crs->ellipsoid(); + EXPECT_TRUE(ellps->isSphere()); + EXPECT_NEAR(ellps->semiMajorAxis().value(), 2440530.0, 1e-6); + + const auto &axisList = crs->coordinateSystem()->axisList(); + EXPECT_EQ(axisList.size(), 2U); + + EXPECT_EQ(*(axisList[0]->name()->description()), "Geodetic latitude"); + EXPECT_EQ(axisList[0]->abbreviation(), "Lat"); + EXPECT_EQ(axisList[0]->direction(), AxisDirection::NORTH); + EXPECT_EQ(axisList[0]->unit(), UnitOfMeasure::DEGREE); + + EXPECT_EQ(*(axisList[1]->name()->description()), "Geodetic longitude"); + EXPECT_EQ(axisList[1]->abbreviation(), "Lon"); + EXPECT_EQ(axisList[1]->direction(), AxisDirection::EAST); + EXPECT_EQ(axisList[1]->unit(), UnitOfMeasure::DEGREE); + } + + { + auto crs = factory->createGeographicCRS("19901"); + EXPECT_EQ(crs->nameStr(), "Mercury (2015) / Ographic"); + + const auto ellps = crs->ellipsoid(); + EXPECT_TRUE(!ellps->isSphere()); + EXPECT_NEAR(ellps->semiMajorAxis().value(), 2440530.0, 1e-6); + EXPECT_NEAR(ellps->computeSemiMinorAxis().value(), 2438260.0, 1e-6); + + const auto &axisList = crs->coordinateSystem()->axisList(); + EXPECT_EQ(axisList.size(), 2U); + + EXPECT_EQ(*(axisList[0]->name()->description()), "Geodetic latitude"); + EXPECT_EQ(axisList[0]->abbreviation(), "Lat"); + EXPECT_EQ(axisList[0]->direction(), AxisDirection::NORTH); + EXPECT_EQ(axisList[0]->unit(), UnitOfMeasure::DEGREE); + + EXPECT_EQ(*(axisList[1]->name()->description()), "Geodetic longitude"); + EXPECT_EQ(axisList[1]->abbreviation(), "Lon"); + EXPECT_EQ(axisList[1]->direction(), AxisDirection::WEST); // WEST ! + EXPECT_EQ(axisList[1]->unit(), UnitOfMeasure::DEGREE); + } + + { + auto crs = factory->createGeodeticCRS("19902"); + EXPECT_EQ(crs->nameStr(), "Mercury (2015) / Ocentric"); + EXPECT_TRUE(dynamic_cast<GeographicCRS *>(crs.get()) == nullptr); + + const auto ellps = crs->ellipsoid(); + EXPECT_TRUE(!ellps->isSphere()); + EXPECT_NEAR(ellps->semiMajorAxis().value(), 2440530.0, 1e-6); + EXPECT_NEAR(ellps->computeSemiMinorAxis().value(), 2438260.0, 1e-6); + + const auto &cs = crs->coordinateSystem(); + EXPECT_TRUE(dynamic_cast<SphericalCS *>(cs.get()) != nullptr); + const auto &axisList = cs->axisList(); + EXPECT_EQ(axisList.size(), 2U); + + EXPECT_EQ(*(axisList[0]->name()->description()), + "Planetocentric latitude"); + EXPECT_EQ(axisList[0]->abbreviation(), "U"); + EXPECT_EQ(axisList[0]->direction(), AxisDirection::NORTH); + EXPECT_EQ(axisList[0]->unit(), UnitOfMeasure::DEGREE); + + EXPECT_EQ(*(axisList[1]->name()->description()), + "Planetocentric longitude"); + EXPECT_EQ(axisList[1]->abbreviation(), "V"); + EXPECT_EQ(axisList[1]->direction(), AxisDirection::EAST); + EXPECT_EQ(axisList[1]->unit(), UnitOfMeasure::DEGREE); + } +} + +// --------------------------------------------------------------------------- + class FactoryWithTmpDatabase : public ::testing::Test { protected: void SetUp() override { sqlite3_open(":memory:", &m_ctxt); } @@ -3950,10 +4030,9 @@ TEST(factory, objectInsertion) { const auto sql = ctxt->getInsertStatementsFor(crs, "HOBU", "XXXX", true); ASSERT_EQ(sql.size(), 5U); - EXPECT_EQ( - sql[0], - "INSERT INTO ellipsoid VALUES('HOBU','1','my " - "ellipsoid','','PROJ','EARTH',6378137,'EPSG','9001',295,NULL,0);"); + EXPECT_EQ(sql[0], "INSERT INTO ellipsoid VALUES('HOBU','1','my " + "ellipsoid','','IAU_2015','399',6378137,'EPSG','9001'" + ",295,NULL,0);"); const auto identified = crs->identify(AuthorityFactory::create(ctxt, std::string())); ASSERT_EQ(identified.size(), 1U); @@ -3986,7 +4065,8 @@ TEST(factory, objectInsertion) { ASSERT_EQ(sql.size(), 5U); EXPECT_EQ(sql[0], "INSERT INTO ellipsoid " "VALUES('HOBU','ELLPS_GEODETIC_DATUM_XXXX','my " - "ellipsoid','','PROJ','EARTH',6378137,'EPSG','9001'," + "ellipsoid','','IAU_2015','399',6378137," + "'EPSG','9001'," "NULL,6378136,0);"); const auto identified = crs->identify(AuthorityFactory::create(ctxt, std::string())); |
