aboutsummaryrefslogtreecommitdiff
path: root/test/unit/test_factory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/test_factory.cpp')
-rw-r--r--test/unit/test_factory.cpp127
1 files changed, 74 insertions, 53 deletions
diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp
index 80de017f..91024d62 100644
--- a/test/unit/test_factory.cpp
+++ b/test/unit/test_factory.cpp
@@ -150,7 +150,8 @@ TEST(factory, AuthorityFactory_createPrimeMeridian) {
EXPECT_THROW(factory->createPrimeMeridian("-1"),
NoSuchAuthorityCodeException);
EXPECT_TRUE(nn_dynamic_pointer_cast<PrimeMeridian>(
- factory->createObject("8903")) != nullptr);
+ AuthorityFactory::create(DatabaseContext::create(), "ESRI")
+ ->createObject("108900")) != nullptr);
auto pm = factory->createPrimeMeridian("8903");
ASSERT_EQ(pm->identifiers().size(), 1U);
EXPECT_EQ(pm->identifiers()[0]->code(), "8903");
@@ -660,13 +661,13 @@ TEST(factory, AuthorityFactory_createCoordinateOperation_helmert_3) {
NoSuchAuthorityCodeException);
auto op = factory->createCoordinateOperation("1113", false);
EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()),
- "+proj=pipeline +step +proj=push +v_3 +step +proj=axisswap "
- "+order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step "
- "+inv +proj=longlat +a=6378249.145 +rf=293.4663077 +step "
- "+proj=cart +a=6378249.145 +rf=293.4663077 +step +proj=helmert "
- "+x=-143 +y=-90 +z=-294 +step +inv +proj=cart +ellps=WGS84 +step "
- "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap "
- "+order=2,1 +step +proj=pop +v_3");
+ "+proj=pipeline +step +proj=axisswap +order=2,1 +step "
+ "+proj=unitconvert +xy_in=deg +xy_out=rad +step +inv "
+ "+proj=longlat +a=6378249.145 +rf=293.4663077 +step +proj=push "
+ "+v_3 +step +proj=cart +a=6378249.145 +rf=293.4663077 +step "
+ "+proj=helmert +x=-143 +y=-90 +z=-294 +step +inv +proj=cart "
+ "+ellps=WGS84 +step +proj=pop +v_3 +step +proj=unitconvert "
+ "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1");
}
// ---------------------------------------------------------------------------
@@ -675,13 +676,13 @@ TEST(factory, AuthorityFactory_createCoordinateOperation_helmert_7_CF) {
auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG");
auto op = factory->createCoordinateOperation("7676", false);
EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()),
- "+proj=pipeline +step +proj=push +v_3 +step +proj=axisswap "
- "+order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step "
- "+proj=cart +ellps=bessel +step +proj=helmert +x=577.88891 "
+ "+proj=pipeline +step +proj=axisswap +order=2,1 +step "
+ "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=push +v_3 "
+ "+step +proj=cart +ellps=bessel +step +proj=helmert +x=577.88891 "
"+y=165.22205 +z=391.18289 +rx=-4.9145 +ry=0.94729 +rz=13.05098 "
"+s=7.78664 +convention=coordinate_frame +step +inv +proj=cart "
- "+ellps=WGS84 +step +proj=unitconvert +xy_in=rad +xy_out=deg "
- "+step +proj=axisswap +order=2,1 +step +proj=pop +v_3");
+ "+ellps=WGS84 +step +proj=pop +v_3 +step +proj=unitconvert "
+ "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1");
}
// ---------------------------------------------------------------------------
@@ -717,6 +718,7 @@ TEST(factory, AuthorityFactory_createCoordinateOperation_helmert_15_CF) {
auto op = factory->createCoordinateOperation("6276", false);
auto expected =
"COORDINATEOPERATION[\"ITRF2008 to GDA94 (1)\",\n"
+ " VERSION[\"GA-Aus 2010\"],\n"
" SOURCECRS[\n"
" GEODCRS[\"ITRF2008\",\n"
" DATUM[\"International Terrestrial Reference Frame "
@@ -734,7 +736,8 @@ TEST(factory, AuthorityFactory_createCoordinateOperation_helmert_15_CF) {
" LENGTHUNIT[\"metre\",1]],\n"
" AXIS[\"(Z)\",geocentricZ,\n"
" ORDER[3],\n"
- " LENGTHUNIT[\"metre\",1]]]],\n"
+ " LENGTHUNIT[\"metre\",1]],\n"
+ " ID[\"EPSG\",5332]]],\n"
" TARGETCRS[\n"
" GEODCRS[\"GDA94\",\n"
" DATUM[\"Geocentric Datum of Australia 1994\",\n"
@@ -751,7 +754,8 @@ TEST(factory, AuthorityFactory_createCoordinateOperation_helmert_15_CF) {
" LENGTHUNIT[\"metre\",1]],\n"
" AXIS[\"(Z)\",geocentricZ,\n"
" ORDER[3],\n"
- " LENGTHUNIT[\"metre\",1]]]],\n"
+ " LENGTHUNIT[\"metre\",1]],\n"
+ " ID[\"EPSG\",4938]]],\n"
" METHOD[\"Time-dependent Coordinate Frame rotation (geocen)\",\n"
" ID[\"EPSG\",1056]],\n"
" PARAMETER[\"X-axis translation\",-84.68,\n"
@@ -852,15 +856,15 @@ TEST(factory,
EXPECT_TRUE(so->validateParameters().empty());
EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()),
- "+proj=pipeline +step +proj=push +v_3 +step +proj=axisswap "
- "+order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step "
- "+proj=cart +ellps=bessel +step +proj=molobadekas +x=593.032 "
- "+y=26 +z=478.741 +rx=0.409394387439237 +ry=-0.359705195614311 "
- "+rz=1.86849100035057 +s=4.0772 +px=3903453.148 +py=368135.313 "
- "+pz=5012970.306 +convention=coordinate_frame +step +inv "
- "+proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad "
- "+xy_out=deg +step +proj=axisswap +order=2,1 +step +proj=pop "
- "+v_3");
+ "+proj=pipeline +step +proj=axisswap +order=2,1 +step "
+ "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=push +v_3 "
+ "+step +proj=cart +ellps=bessel +step +proj=molobadekas "
+ "+x=593.032 +y=26 +z=478.741 +rx=0.409394387439237 "
+ "+ry=-0.359705195614311 +rz=1.86849100035057 +s=4.0772 "
+ "+px=3903453.148 +py=368135.313 +pz=5012970.306 "
+ "+convention=coordinate_frame +step +inv +proj=cart +ellps=GRS80 "
+ "+step +proj=pop +v_3 +step +proj=unitconvert +xy_in=rad "
+ "+xy_out=deg +step +proj=axisswap +order=2,1");
}
// ---------------------------------------------------------------------------
@@ -872,6 +876,7 @@ TEST(
auto op = factory->createCoordinateOperation("1295", false);
auto expected =
"COORDINATEOPERATION[\"RGNC91-93 to NEA74 Noumea (4)\",\n"
+ " VERSION[\"ESRI-Ncl 0.05m\"],\n"
" SOURCECRS[\n"
" GEOGCRS[\"RGNC91-93\",\n"
" DATUM[\"Reseau Geodesique de Nouvelle Caledonie 91-93\",\n"
@@ -885,7 +890,8 @@ TEST(
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
" AXIS[\"geodetic longitude (Lon)\",east,\n"
" ORDER[2],\n"
- " ANGLEUNIT[\"degree\",0.0174532925199433]]]],\n"
+ " ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
+ " ID[\"EPSG\",4749]]],\n"
" TARGETCRS[\n"
" GEOGCRS[\"NEA74 Noumea\",\n"
" DATUM[\"NEA74 Noumea\",\n"
@@ -899,7 +905,8 @@ TEST(
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
" AXIS[\"geodetic longitude (Lon)\",east,\n"
" ORDER[2],\n"
- " ANGLEUNIT[\"degree\",0.0174532925199433]]]],\n"
+ " ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
+ " ID[\"EPSG\",4644]]],\n"
" METHOD[\"NTv2\",\n"
" ID[\"EPSG\",9615]],\n"
" PARAMETERFILE[\"Latitude and longitude difference "
@@ -939,6 +946,7 @@ TEST(factory, AuthorityFactory_createCoordinateOperation_other_transformation) {
auto op = factory->createCoordinateOperation("1884", false);
auto expected =
"COORDINATEOPERATION[\"S-JTSK (Ferro) to S-JTSK (1)\",\n"
+ " VERSION[\"EPSG-Cze\"],\n"
" SOURCECRS[\n"
" GEOGCRS[\"S-JTSK (Ferro)\",\n"
" DATUM[\"System of the Unified Trigonometrical Cadastral "
@@ -953,7 +961,8 @@ TEST(factory, AuthorityFactory_createCoordinateOperation_other_transformation) {
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
" AXIS[\"geodetic longitude (Lon)\",east,\n"
" ORDER[2],\n"
- " ANGLEUNIT[\"degree\",0.0174532925199433]]]],\n"
+ " ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
+ " ID[\"EPSG\",4818]]],\n"
" TARGETCRS[\n"
" GEOGCRS[\"S-JTSK\",\n"
" DATUM[\"System of the Unified Trigonometrical Cadastral "
@@ -968,7 +977,8 @@ TEST(factory, AuthorityFactory_createCoordinateOperation_other_transformation) {
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
" AXIS[\"geodetic longitude (Lon)\",east,\n"
" ORDER[2],\n"
- " ANGLEUNIT[\"degree\",0.0174532925199433]]]],\n"
+ " ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
+ " ID[\"EPSG\",4156]]],\n"
" METHOD[\"Longitude rotation\",\n"
" ID[\"EPSG\",9601]],\n"
" PARAMETER[\"Longitude offset\",-17.6666666666667,\n"
@@ -1465,7 +1475,7 @@ class FactoryWithTmpDatabase : public ::testing::Test {
"'EPSG','4326','EPSG','1262',44.0,-143."
"0,-90.0,-294.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
- "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
<< last_error();
ASSERT_TRUE(execute(
@@ -1474,7 +1484,8 @@ class FactoryWithTmpDatabase : public ::testing::Test {
"'EPSG','9615'"
",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',1.0,'EPSG','"
"8656','Latitude and longitude difference "
- "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
+ "0);"))
<< last_error();
ASSERT_TRUE(execute(
@@ -1491,7 +1502,7 @@ class FactoryWithTmpDatabase : public ::testing::Test {
"offset',-17.4,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
- "NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
<< last_error();
ASSERT_TRUE(execute(
@@ -1499,7 +1510,7 @@ class FactoryWithTmpDatabase : public ::testing::Test {
"VALUES('EPSG','DUMMY_CONCATENATED','name',NULL,NULL,"
"'EPSG','4326','EPSG'"
",'4326','EPSG','1262',NULL,'EPSG','DUMMY_OTHER_TRANSFORMATION'"
- ",'EPSG','DUMMY_OTHER_TRANSFORMATION',NULL,NULL,0);"))
+ ",'EPSG','DUMMY_OTHER_TRANSFORMATION',NULL,NULL,NULL,0);"))
<< last_error();
}
@@ -1507,12 +1518,20 @@ class FactoryWithTmpDatabase : public ::testing::Test {
const auto vals = std::vector<std::string>{"SOURCE", "TARGET", "PIVOT"};
for (const auto &val : vals) {
+ ASSERT_TRUE(
+ execute("INSERT INTO geodetic_datum "
+ "VALUES('FOO','" +
+ val + "','" + val +
+ "','',NULL,"
+ "'EPSG','7030','EPSG','8901','EPSG','1262',0);"))
+ << last_error();
ASSERT_TRUE(execute("INSERT INTO geodetic_crs "
"VALUES('NS_" +
val + "','" + val + "','" + val +
"',NULL,NULL,'geographic 2D','EPSG','6422',"
- "'EPSG','6326',"
- "'EPSG','1262',NULL,0);"))
+ "'FOO','" +
+ val + "',"
+ "'EPSG','1262',NULL,0);"))
<< last_error();
}
}
@@ -1530,7 +1549,7 @@ class FactoryWithTmpDatabase : public ::testing::Test {
"','EPSG'"
",'1262',1.0,0,0,0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
- "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
<< last_error();
}
@@ -1838,7 +1857,7 @@ TEST_F(FactoryWithTmpDatabase,
"'EPSG','9615'"
",'NTv2','EPSG','4326','OTHER','OTHER_4326','EPSG','1262',1.0,'EPSG','"
"8656','Latitude and longitude difference "
- "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
<< last_error();
{
auto res = factoryGeneral->createFromCoordinateReferenceSystemCodes(
@@ -1870,7 +1889,7 @@ TEST_F(FactoryWithTmpDatabase,
"'EPSG','9615'"
",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',10.0,'EPSG','"
"8656','Latitude and longitude difference "
- "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
<< last_error();
ASSERT_TRUE(
@@ -1879,7 +1898,8 @@ TEST_F(FactoryWithTmpDatabase,
"TRANSFORMATION_1M_SMALL_EXTENT',NULL,NULL,'EPSG','9615'"
",'NTv2','EPSG','4326','EPSG','4326','EPSG','2060',1.0,'EPSG','"
"8656','Latitude and longitude difference "
- "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,"
+ "NULL,0);"))
<< last_error();
ASSERT_TRUE(execute(
@@ -1888,7 +1908,7 @@ TEST_F(FactoryWithTmpDatabase,
"'EPSG','9615'"
",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',1.0,'EPSG','"
"8656','Latitude and longitude difference "
- "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
<< last_error();
ASSERT_TRUE(
@@ -1897,7 +1917,8 @@ TEST_F(FactoryWithTmpDatabase,
"TRANSFORMATION_0.5M_DEPRECATED',NULL,NULL,'EPSG','9615'"
",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',1.0,'EPSG','"
"8656','Latitude and longitude difference "
- "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1);"))
+ "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,"
+ "NULL,1);"))
<< last_error();
auto factoryOTHER =
@@ -2000,7 +2021,7 @@ TEST_F(FactoryWithTmpDatabase, AuthorityFactory_proj_based_transformation) {
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
- "NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
<< last_error();
auto factoryOTHER =
@@ -2061,7 +2082,7 @@ TEST_F(FactoryWithTmpDatabase, AuthorityFactory_wkt_based_transformation) {
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
- "NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
<< last_error();
auto factoryOTHER =
@@ -2071,12 +2092,12 @@ TEST_F(FactoryWithTmpDatabase, AuthorityFactory_wkt_based_transformation) {
ASSERT_EQ(res.size(), 1U);
EXPECT_EQ(res[0]->nameStr(), "My WKT string based op");
EXPECT_EQ(res[0]->exportToPROJString(PROJStringFormatter::create().get()),
- "+proj=pipeline +step +proj=push +v_3 +step +proj=axisswap "
- "+order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step "
- "+proj=cart +ellps=WGS84 +step +proj=helmert +x=1 +y=2 +z=3 "
- "+step +inv +proj=cart +ellps=WGS84 +step +proj=unitconvert "
- "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 +step "
- "+proj=pop +v_3");
+ "+proj=pipeline +step +proj=axisswap +order=2,1 +step "
+ "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=push +v_3 "
+ "+step +proj=cart +ellps=WGS84 +step +proj=helmert +x=1 +y=2 "
+ "+z=3 +step +inv +proj=cart +ellps=WGS84 +step +proj=pop +v_3 "
+ "+step +proj=unitconvert +xy_in=rad +xy_out=deg +step "
+ "+proj=axisswap +order=2,1");
}
// ---------------------------------------------------------------------------
@@ -2096,7 +2117,7 @@ TEST_F(FactoryWithTmpDatabase,
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
- "NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
<< last_error();
auto factoryOTHER =
@@ -2123,7 +2144,7 @@ TEST_F(FactoryWithTmpDatabase,
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
- "NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
<< last_error();
auto factoryOTHER =
@@ -2613,7 +2634,7 @@ TEST_F(FactoryWithTmpDatabase,
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
- "NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
<< last_error();
ASSERT_TRUE(
@@ -2625,7 +2646,7 @@ TEST_F(FactoryWithTmpDatabase,
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
"NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,"
- "NULL,NULL,NULL,NULL,NULL,NULL,0);"))
+ "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"))
<< last_error();
auto dbContext = DatabaseContext::create(m_ctxt);
@@ -2792,7 +2813,7 @@ TEST(factory, getMetadata) {
EXPECT_EQ(ctxt->getMetadata("i_do_not_exist"), nullptr);
const char *IGNF_VERSION = ctxt->getMetadata("IGNF.VERSION");
ASSERT_TRUE(IGNF_VERSION != nullptr);
- EXPECT_EQ(std::string(IGNF_VERSION), "3.0.2");
+ EXPECT_EQ(std::string(IGNF_VERSION), "3.0.3");
}
// ---------------------------------------------------------------------------