diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/cli/testprojinfo_out.dist | 39 | ||||
| -rw-r--r-- | test/unit/test_c_api.cpp | 7 | ||||
| -rw-r--r-- | test/unit/test_factory.cpp | 343 |
3 files changed, 266 insertions, 123 deletions
diff --git a/test/cli/testprojinfo_out.dist b/test/cli/testprojinfo_out.dist index 5d36f42e..7aa1c59f 100644 --- a/test/cli/testprojinfo_out.dist +++ b/test/cli/testprojinfo_out.dist @@ -17,7 +17,7 @@ GEOGCRS["WGS 84", ORDER[2], ANGLEUNIT["degree",0.0174532925199433]], USAGE[ - SCOPE["unknown"], + SCOPE["Horizontal component of 3D system."], AREA["World"], BBOX[-90,-180,90,180]], ID["EPSG",4326]] @@ -51,6 +51,7 @@ GEODCRS["WGS 84", AXIS["geodetic longitude (Lon)",east, ORDER[2], ANGLEUNIT["degree",0.0174532925199433]], + SCOPE["Horizontal component of 3D system."], AREA["World"], BBOX[-90,-180,90,180], ID["EPSG",4326]] @@ -71,7 +72,7 @@ GEOGCRS["WGS 84", ORDER[2], ANGLEUNIT["degree",0.0174532925199433]], USAGE[ - SCOPE["unknown"], + SCOPE["Horizontal component of 3D system."], AREA["World"], BBOX[-90,-180,90,180]], ID["EPSG",4326]] @@ -94,6 +95,7 @@ GEODCRS["WGS 84", AXIS["geodetic longitude (Lon)",east, ORDER[2], ANGLEUNIT["degree",0.0174532925199433]], + SCOPE["Horizontal component of 3D system."], AREA["World"], BBOX[-90,-180,90,180], ID["EPSG",4326]] @@ -113,7 +115,7 @@ GEOGCRS["WGS 84", ORDER[2], ANGLEUNIT["degree",0.0174532925199433]], USAGE[ - SCOPE["unknown"], + SCOPE["Horizontal component of 3D system."], AREA["World"], BBOX[-90,-180,90,180]], ID["EPSG",4326]] @@ -166,6 +168,7 @@ PROJJSON: } ] }, + "scope": "Horizontal component of 3D system.", "area": "World", "bbox": { "south_latitude": -90, @@ -373,7 +376,7 @@ COORDINATEOPERATION["NAD27 to NAD83 (4)", PARAMETERFILE["Latitude and longitude difference file","ca_nrc_ntv2_0.tif"], OPERATIONACCURACY[1.5], USAGE[ - SCOPE["Accuracy 1-2 metres."], + SCOPE["Transformation of coordinates at 1m to 2m level of accuracy."], AREA["Canada - NAD27"], BBOX[40.04,-141.01,83.17,-47.74]], ID["DERIVED_FROM(EPSG)",1313]] @@ -422,7 +425,7 @@ COORDINATEOPERATION["NAD27 to NAD83 (1)", PARAMETERFILE["Latitude and longitude difference file","us_noaa_conus.tif"], OPERATIONACCURACY[0.15], USAGE[ - SCOPE["Accuracy at 67% confidence level is 0.15m onshore, 5m nearshore and undetermined farther offshore."], + SCOPE["Transformation of coordinates at 0.2m level of accuracy."], AREA["USA - CONUS including EEZ"], BBOX[23.81,-129.17,49.38,-65.69]], ID["DERIVED_FROM(EPSG)",1241]] @@ -471,7 +474,7 @@ COORDINATEOPERATION["NAD27 to NAD83 (2)", PARAMETERFILE["Latitude and longitude difference file","us_noaa_alaska.tif"], OPERATIONACCURACY[0.5], USAGE[ - SCOPE["Accuracy at 67% confidence level is 0.5m onshore, 5m nearshore and undetermined farther offshore."], + SCOPE["Geodesy."], AREA["USA - Alaska including EEZ"], BBOX[47.88,167.65,74.71,-129.99]], ID["DERIVED_FROM(EPSG)",1243]] @@ -520,7 +523,7 @@ COORDINATEOPERATION["NAD27 to NAD83 (6)", PARAMETERFILE["Latitude and longitude difference file","ca_que_mern_na27na83.tif"], OPERATIONACCURACY[1.5], USAGE[ - SCOPE["Accuracy 1-2 metres."], + SCOPE["Transformation of coordinates at 1m to 2m level of accuracy."], AREA["Canada - Quebec"], BBOX[44.99,-79.85,62.62,-57.1]], ID["DERIVED_FROM(EPSG)",1573]] @@ -623,7 +626,7 @@ COORDINATEOPERATION["NAD27 to NAD83 (9)", PARAMETERFILE["Latitude and longitude difference file","SK27-83.gsb"], OPERATIONACCURACY[1.5], USAGE[ - SCOPE["Spatial referencing."], + SCOPE["Geodesy."], AREA["Canada - Saskatchewan"], BBOX[49,-110,60.01,-101.34]], ID["EPSG",9111]] @@ -727,7 +730,7 @@ COORDINATEOPERATION["NAD27 to NAD83 (7)", PARAMETERFILE["Longitude difference file","nadcon5.nad27.nad83_1986.conus.lon.trn.20160901.b"], OPERATIONACCURACY[0.15], USAGE[ - SCOPE["Spatial referencing."], + SCOPE["Geodesy."], AREA["USA - CONUS and GoM"], BBOX[23.82,-124.79,49.38,-66.91]], ID["EPSG",8555], @@ -779,7 +782,7 @@ COORDINATEOPERATION["NAD27 to NAD83 (8)", PARAMETERFILE["Longitude difference file","nadcon5.nad27.nad83_1986.alaska.lon.trn.20160901.b"], OPERATIONACCURACY[0.5], USAGE[ - SCOPE["Spatial referencing."], + SCOPE["Geodesy."], AREA["USA - Alaska"], BBOX[51.3,172.42,71.4,-129.99]], ID["EPSG",8549], @@ -816,7 +819,7 @@ Testing projinfo -s EPSG:4230 -t EPSG:4258 --area no_match --summary No area of use matching provided name Testing projinfo -s EPSG:4230 -t EPSG:4258 --area WRONG:CODE --summary -Area of use retrieval failed: area not found +Area of use retrieval failed: extent not found Testing deprecated CRS: projinfo EPSG:26591 Warning: object is deprecated @@ -861,7 +864,7 @@ PROJCRS["Monte Mario (Rome) / Italy zone 1", ORDER[2], LENGTHUNIT["metre",1]], USAGE[ - SCOPE["unknown"], + SCOPE["Engineering survey, topographic mapping."], AREA["Italy - west of 12°E"], BBOX[36.53,5.94,47.04,12]], ID["EPSG",26591]] @@ -936,7 +939,7 @@ COORDINATEOPERATION["Inverse of SWEREF99 to RH2000 height", ID["INVERSE(EPSG)",9665]], PARAMETERFILE["Geoid (height correction) model file","se_lantmateriet_SWEN17_RH2000.tif"], USAGE[ - SCOPE["unknown"], + SCOPE["Not known."], AREA["Sweden - onshore"], BBOX[55.28,10.93,69.07,24.17]], ID["INVERSE(DERIVED_FROM(PROJ))","EPSG_4977_TO_EPSG_5613"]] @@ -960,7 +963,7 @@ PROJ string: +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift +grids=us_noaa_g2012ba0.tif +multiplier=1 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 Testing NGF IGN69 height to RGF93: projinfo -s EPSG:5720 -t EPSG:4965 -o PROJ -Candidate operations found: 2 +Candidate operations found: 1 ------------------------------------- Operation No. 1: @@ -969,14 +972,6 @@ INVERSE(DERIVED_FROM(EPSG)):8885, Inverse of RGF93 to NGF-IGN69 height (3), 0.01 PROJ string: +proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift +grids=fr_ign_RAF18.tif +multiplier=1 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 -------------------------------------- -Operation No. 2: - -INVERSE(EPSG):10000, Inverse of RGF93 to NGF-IGN69 height (1), 0.5 m, France - mainland onshore - -PROJ string: -+proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift +grids=ggf97a.txt +multiplier=1 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 - Testing EPSG:32631 --3d PROJ.4 string: +proj=utm +zone=31 +datum=WGS84 +units=m +no_defs +type=crs diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index 564833db..5c0ac699 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -3792,8 +3792,8 @@ TEST_F(CApi, proj_get_scope) { auto scope = proj_get_scope(co); ASSERT_NE(scope, nullptr); EXPECT_EQ(scope, - std::string("Conformal transformation of GDA94 coordinates " - "that have been derived through GNSS CORS.")); + std::string("Transformation of GDA94 coordinates that have " + "been derived through GNSS CORS.")); } // Conversion @@ -3807,8 +3807,7 @@ TEST_F(CApi, proj_get_scope) { auto scope = proj_get_scope(co); ASSERT_NE(scope, nullptr); EXPECT_EQ(scope, - std::string("Large and medium scale topographic mapping " - "and engineering survey.")); + std::string("Engineering survey, topographic mapping.")); } { diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp index c34723f2..8881402c 100644 --- a/test/unit/test_factory.cpp +++ b/test/unit/test_factory.cpp @@ -835,14 +835,14 @@ TEST(factory, AuthorityFactory_createCoordinateOperation_helmert_15_CF) { " ID[\"EPSG\",1047]],\n" " OPERATIONACCURACY[0.03],\n" " USAGE[\n" - " SCOPE[\"Geodesy. RMS residuals 5mm north, 8mm east and 28mm " - "vertical, maximum residuals 10mm north, 13mm east and 51mm " - "vertical.\"],\n" + " SCOPE[\"Geodesy.\"],\n" " AREA[\"Australia - onshore and EEZ\"],\n" " BBOX[-47.2,109.23,-8.88,163.2]],\n" " ID[\"EPSG\",6276],\n" - " REMARK[\"Scale difference in ppb and scale difference rate in " - "ppb/yr where 1/billion = 1E-9 or nm/m.\"]]"; + " REMARK[\"RMS residuals 5mm north, 8mm east and 28mm vertical, " + "maximum residuals 10mm north, 13mm east and 51mm vertical. Scale " + "difference in ppb and scale difference rate in ppb/yr where " + "1/billion = 1E-9 or nm/m.\"]]"; EXPECT_EQ( op->exportToWKT( @@ -943,12 +943,12 @@ TEST( "file\",\"RGNC1991_NEA74Noumea.gsb\"],\n" " OPERATIONACCURACY[0.05],\n" " USAGE[\n" - " SCOPE[\"Accuracy 5-10cm.\"],\n" + " SCOPE[\"Geodesy.\"],\n" " AREA[\"New Caledonia - Grande Terre - Noumea\"],\n" " BBOX[-22.37,166.35,-22.19,166.54]],\n" " ID[\"EPSG\",1295],\n" " REMARK[\"Emulation using NTv2 method of tfm NEA74 Noumea to " - "RGNC91-93 (3) (code 9328). Note reversal of sign of parameter values " + "RGNC91-93 (3) (code 15943). Note reversal of sign of parameter values " "in grid file.\"]]"; EXPECT_EQ( op->exportToWKT( @@ -1415,11 +1415,14 @@ class FactoryWithTmpDatabase : public ::testing::Test { "0);")) << last_error(); ASSERT_TRUE( - execute("INSERT INTO area " + execute("INSERT INTO extent " "VALUES('EPSG','1262','World','World.',-90.0,90.0,-180." "0,180.0,0);")) << last_error(); ASSERT_TRUE( + execute("INSERT INTO scope VALUES('EPSG','1024','Not known.',0);")) + << last_error(); + ASSERT_TRUE( execute("INSERT INTO prime_meridian " "VALUES('EPSG','8901','Greenwich',0.0,'EPSG','9102',0);")) << last_error(); @@ -1434,12 +1437,20 @@ class FactoryWithTmpDatabase : public ::testing::Test { << last_error(); ASSERT_TRUE( execute("INSERT INTO geodetic_datum " - "VALUES('EPSG','6326','World Geodetic System 1984','',NULL," - "'EPSG','7030','EPSG','8901','EPSG','1262',NULL,0);")) + "VALUES('EPSG','6326','World Geodetic System 1984',''," + "'EPSG','7030','EPSG','8901',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'geodetic_datum_6326_usage','geodetic_datum'," + "'EPSG','6326','EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE( execute("INSERT INTO vertical_datum VALUES('EPSG','1027','EGM2008 " - "geoid',NULL,NULL,'EPSG','1262',NULL,0);")) + "geoid',NULL,NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'vertical_datum_1027_usage','vertical_datum'," + "'EPSG','1027','EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute("INSERT INTO coordinate_system " "VALUES('EPSG','6422','ellipsoidal',2);")) @@ -1454,8 +1465,12 @@ class FactoryWithTmpDatabase : public ::testing::Test { << last_error(); ASSERT_TRUE( execute("INSERT INTO geodetic_crs VALUES('EPSG','4326','WGS " - "84',NULL,NULL,'geographic " - "2D','EPSG','6422','EPSG','6326','EPSG','1262',NULL,0);")) + "84',NULL,'geographic " + "2D','EPSG','6422','EPSG','6326',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'geodetic_crs4326_usage','geodetic_crs'," + "'EPSG','4326','EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute("INSERT INTO coordinate_system " @@ -1467,8 +1482,11 @@ class FactoryWithTmpDatabase : public ::testing::Test { << last_error(); ASSERT_TRUE( execute("INSERT INTO vertical_crs VALUES('EPSG','3855','EGM2008 " - "height',NULL,NULL,'EPSG','6499','EPSG','1027','EPSG'," - "'1262',0);")) + "height',NULL,'EPSG','6499','EPSG','1027',0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'vertical_crs3855_usage','vertical_crs'," + "'EPSG','3855','EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute("INSERT INTO unit_of_measure " @@ -1477,13 +1495,13 @@ class FactoryWithTmpDatabase : public ::testing::Test { << last_error(); ASSERT_TRUE(execute( - "INSERT INTO area VALUES('EPSG','1933','World - N hemisphere - " + "INSERT INTO extent VALUES('EPSG','1933','World - N hemisphere - " "0°E to 6°E','',0.0,84.0,0.0,6.0,0);")) << last_error(); ASSERT_TRUE(execute( "INSERT INTO conversion VALUES('EPSG','16031','UTM zone " - "31N',NULL,NULL,'EPSG','1933','EPSG','9807','Transverse " + "31N',NULL,'EPSG','9807','Transverse " "Mercator','EPSG','8801','Latitude " "of " "natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of " @@ -1495,9 +1513,13 @@ class FactoryWithTmpDatabase : public ::testing::Test { "NULL," "NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'conversion16031_usage','conversion'," + "'EPSG','16031','EPSG','1933','EPSG','1024');")) + << last_error(); ASSERT_TRUE(execute( - "INSERT INTO area VALUES('EPSG','2060','World - N hemisphere - " + "INSERT INTO extent VALUES('EPSG','2060','World - N hemisphere - " "0°E to 6°E - by country','',0.0,84.0,0.0,6.0,0);")) << last_error(); @@ -1517,36 +1539,56 @@ class FactoryWithTmpDatabase : public ::testing::Test { ASSERT_TRUE(execute("INSERT INTO projected_crs " "VALUES('EPSG','32631','WGS 84 / UTM zone " - "31N',NULL,NULL,'EPSG','4400','EPSG','4326'," - "'EPSG','16031','" - "EPSG','2060',NULL,0);")) + "31N',NULL,'EPSG','4400','EPSG','4326'," + "'EPSG','16031',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'projected_crs32631_usage','projected_crs'," + "'EPSG','32631','EPSG','2060','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute( "INSERT INTO compound_crs VALUES('EPSG','MY_COMPOUND','WGS 84 + " - "EGM2008 geoid height',NULL,NULL,'EPSG','4326','EPSG','3855'," - "'EPSG','1262',0);")) + "EGM2008 geoid height',NULL,'EPSG','4326','EPSG','3855',0);")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('EPSG'," + "'compound_crsMY_COMPOUND_usage','compound_crs'," + "'EPSG','MY_COMPOUND','EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute( "INSERT INTO helmert_transformation " - "VALUES('EPSG','DUMMY_HELMERT','name',NULL,NULL,'EPSG','9603','" + "VALUES('EPSG','DUMMY_HELMERT','name',NULL,'EPSG','9603','" "Geocentric translations (geog2D domain)','EPSG','4326'," - "'EPSG','4326','EPSG','1262',44.0,-143." + "'EPSG','4326',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,NULL,0);")) << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('EPSG'," + "'helmert_transformation_DUMMY_HELMERT_usage'," + "'helmert_transformation'," + "'EPSG','DUMMY_HELMERT','EPSG','1262','EPSG','1024');")) + << last_error(); ASSERT_TRUE(execute( "INSERT INTO grid_transformation " - "VALUES('EPSG','DUMMY_GRID_TRANSFORMATION','name',NULL,NULL," + "VALUES('EPSG','DUMMY_GRID_TRANSFORMATION','name',NULL," "'EPSG','9615'" - ",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',1.0,'EPSG','" + ",'NTv2','EPSG','4326','EPSG','4326',1.0,'EPSG','" "8656','Latitude and longitude difference " "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL," "0);")) << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('EPSG'," + "'grid_transformation_DUMMY_GRID_TRANSFORMATION_usage'," + "'grid_transformation'," + "'EPSG','DUMMY_GRID_TRANSFORMATION'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); ASSERT_TRUE(execute( "INSERT INTO unit_of_measure VALUES('EPSG','9110','sexagesimal " @@ -1555,21 +1597,33 @@ class FactoryWithTmpDatabase : public ::testing::Test { ASSERT_TRUE(execute( "INSERT INTO other_transformation " - "VALUES('EPSG','DUMMY_OTHER_TRANSFORMATION','name',NULL,NULL," + "VALUES('EPSG','DUMMY_OTHER_TRANSFORMATION','name',NULL," "'EPSG','9601','Longitude rotation'," - "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,'EPSG'" + "'EPSG','4326','EPSG','4326',0.0,'EPSG'" ",'8602','Longitude " "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,NULL,0);")) << last_error(); - ASSERT_TRUE( - execute("INSERT INTO concatenated_operation " - "VALUES('EPSG','DUMMY_CONCATENATED','name',NULL,NULL," - "'EPSG','4326','EPSG'" - ",'4326','EPSG','1262',NULL,NULL,0);")) + execute("INSERT INTO usage VALUES('EPSG'," + "'other_transformation_DUMMY_OTHER_TRANSFORMATION_usage'," + "'other_transformation'," + "'EPSG','DUMMY_OTHER_TRANSFORMATION'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO concatenated_operation " + "VALUES('EPSG','DUMMY_CONCATENATED','name',NULL," + "'EPSG','4326','EPSG'" + ",'4326',NULL,NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'concatenated_operation_DUMMY_CONCATENATED_usage'," + "'concatenated_operation'," + "'EPSG','DUMMY_CONCATENATED'," + "'EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute("INSERT INTO concatenated_operation_step " @@ -1587,20 +1641,35 @@ 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',NULL,0);")) + ASSERT_TRUE(execute("INSERT INTO geodetic_datum " + "VALUES('FOO','" + + val + "','" + val + + "',''," + "'EPSG','7030','EPSG','8901',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('FOO'," + "'geodetic_datum_" + + val + "_usage'," + "'geodetic_datum'," + "'FOO','" + + val + "'," + "'EPSG','1262','EPSG','1024');")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO geodetic_crs " "VALUES('NS_" + val + "','" + val + "','" + val + - "',NULL,NULL,'geographic 2D','EPSG','6422'," + "',NULL,'geographic 2D','EPSG','6422'," "'FOO','" + - val + "'," - "'EPSG','1262',NULL,0);")) + val + "',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('FOO'," + "'geodetic_crs_" + + val + "_usage'," + "'geodetic_crs'," + "'NS_" + + val + "','" + val + + "','EPSG','1262','EPSG','1024');")) << last_error(); } } @@ -1612,14 +1681,21 @@ class FactoryWithTmpDatabase : public ::testing::Test { "INSERT INTO helmert_transformation " "VALUES('OTHER','" + src + "_" + dst + "','Transformation from " + src + " to " + dst + - "',NULL,NULL,'EPSG','9603','" + "',NULL,'EPSG','9603','" "Geocentric translations (geog2D domain)','NS_" + src + "','" + src + "','NS_" + dst + "','" + dst + - "','EPSG'" - ",'1262',1.0,0,0,0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL," + "',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,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'helmert_transformation" + + src + '_' + dst + "_usage'," + "'helmert_transformation'," + "'OTHER','" + + src + "_" + dst + "'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); } void checkSourceToOther() { @@ -1886,14 +1962,22 @@ TEST_F(FactoryWithTmpDatabase, ASSERT_TRUE( execute("INSERT INTO geodetic_crs VALUES('OTHER','OTHER_4326','WGS " - "84',NULL,NULL,'geographic " - "2D','EPSG','6422','EPSG','6326','EPSG','1262',NULL,0);")) + "84',NULL,'geographic " + "2D','EPSG','6422','EPSG','6326',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'geodetic_crs_OTHER_4326_usage','geodetic_crs'," + "'OTHER','OTHER_4326','EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute("INSERT INTO projected_crs " "VALUES('OTHER','OTHER_32631','WGS 84 / UTM zone " - "31N',NULL,NULL,'EPSG','4400','OTHER','OTHER_4326'," - "'EPSG','16031','EPSG','2060',NULL,0);")) + "31N',NULL,'EPSG','4400','OTHER','OTHER_4326'," + "'EPSG','16031',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'projected_crs_OTHER_32631_usage','projected_crs'," + "'OTHER','OTHER_32631','EPSG','2060','EPSG','1024');")) << last_error(); auto factoryGeneral = AuthorityFactory::create( @@ -1924,12 +2008,19 @@ TEST_F(FactoryWithTmpDatabase, ASSERT_TRUE(execute( "INSERT INTO grid_transformation " - "VALUES('OTHER','OTHER_GRID_TRANSFORMATION','name',NULL,NULL," + "VALUES('OTHER','OTHER_GRID_TRANSFORMATION','name',NULL," "'EPSG','9615'" - ",'NTv2','EPSG','4326','OTHER','OTHER_4326','EPSG','1262',1.0,'EPSG','" + ",'NTv2','EPSG','4326','OTHER','OTHER_4326',1.0,'EPSG','" "8656','Latitude and longitude difference " "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute( + "INSERT INTO usage VALUES('OTHER'," + "'grid_transformation_OTHER_GRID_TRANSFORMATION_usage'," + "'grid_transformation'," + "'OTHER','OTHER_GRID_TRANSFORMATION','EPSG','1262','EPSG','1024');")) + << last_error(); + { auto res = factoryGeneral->createFromCoordinateReferenceSystemCodes( "EPSG", "4326", "OTHER", "OTHER_4326", false, false, false, false); @@ -1956,41 +2047,67 @@ TEST_F(FactoryWithTmpDatabase, ASSERT_TRUE(execute( "INSERT INTO grid_transformation " - "VALUES('OTHER','TRANSFORMATION_10M','TRANSFORMATION_10M',NULL,NULL," + "VALUES('OTHER','TRANSFORMATION_10M','TRANSFORMATION_10M',NULL," "'EPSG','9615'" - ",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',10.0,'EPSG','" + ",'NTv2','EPSG','4326','EPSG','4326',10.0,'EPSG','" "8656','Latitude and longitude difference " "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('OTHER'," + "'grid_transformation_TTRANSFORMATION_10M_usage'," + "'grid_transformation'," + "'OTHER','TRANSFORMATION_10M','EPSG','1262','EPSG','1024');")) + << last_error(); ASSERT_TRUE( execute("INSERT INTO grid_transformation " "VALUES('OTHER','TRANSFORMATION_1M_SMALL_EXTENT','" - "TRANSFORMATION_1M_SMALL_EXTENT',NULL,NULL,'EPSG','9615'" - ",'NTv2','EPSG','4326','EPSG','4326','EPSG','2060',1.0,'EPSG','" + "TRANSFORMATION_1M_SMALL_EXTENT',NULL,'EPSG','9615'" + ",'NTv2','EPSG','4326','EPSG','4326',1.0,'EPSG','" "8656','Latitude and longitude difference " "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL," "NULL,0);")) << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('OTHER'," + "'grid_transformation_TRANSFORMATION_1M_SMALL_EXTENT_usage'," + "'grid_transformation'," + "'OTHER','TRANSFORMATION_1M_SMALL_EXTENT'," + "'EPSG','2060','EPSG','1024');")) + << last_error(); ASSERT_TRUE(execute( "INSERT INTO grid_transformation " - "VALUES('OTHER','TRANSFORMATION_1M','TRANSFORMATION_1M',NULL,NULL," + "VALUES('OTHER','TRANSFORMATION_1M','TRANSFORMATION_1M',NULL," "'EPSG','9615'" - ",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',1.0,'EPSG','" + ",'NTv2','EPSG','4326','EPSG','4326',1.0,'EPSG','" "8656','Latitude and longitude difference " "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('OTHER'," + "'grid_transformation_TRANSFORMATION_1M_usage'," + "'grid_transformation'," + "'OTHER','TRANSFORMATION_1M','EPSG','1262','EPSG','1024');")) + << last_error(); ASSERT_TRUE( execute("INSERT INTO grid_transformation " "VALUES('OTHER','TRANSFORMATION_0.5M_DEPRECATED','" - "TRANSFORMATION_0.5M_DEPRECATED',NULL,NULL,'EPSG','9615'" - ",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',1.0,'EPSG','" + "TRANSFORMATION_0.5M_DEPRECATED',NULL,'EPSG','9615'" + ",'NTv2','EPSG','4326','EPSG','4326',1.0,'EPSG','" "8656','Latitude and longitude difference " "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL," "NULL,1);")) << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('OTHER'," + "'grid_transformation_TRANSFORMATION_0.5M_DEPRECATED_usage'," + "'grid_transformation'," + "'OTHER','TRANSFORMATION_0.5M_DEPRECATED'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); @@ -2086,14 +2203,20 @@ TEST_F(FactoryWithTmpDatabase, AuthorityFactory_proj_based_transformation) { ASSERT_TRUE(execute( "INSERT INTO other_transformation " - "VALUES('OTHER','FOO','My PROJ string based op',NULL,NULL,'PROJ'," + "VALUES('OTHER','FOO','My PROJ string based op',NULL,'PROJ'," "'PROJString','+proj=pipeline +ellps=WGS84 +step +proj=longlat'," - "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL," + "'EPSG','4326','EPSG','4326',0.0,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,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'other_transformation_FOO_usage'," + "'other_transformation'," + "'OTHER','FOO'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); @@ -2145,16 +2268,22 @@ TEST_F(FactoryWithTmpDatabase, AuthorityFactory_wkt_based_transformation) { ASSERT_TRUE( execute("INSERT INTO other_transformation " - "VALUES('OTHER','FOO','My WKT string based op',NULL,NULL," + "VALUES('OTHER','FOO','My WKT string based op',NULL," "'PROJ','WKT','" + std::string(wkt) + "'," - "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL," + "'EPSG','4326','EPSG','4326',0.0,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,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'other_transformation_FOO_usage'," + "'other_transformation'," + "'OTHER','FOO'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); @@ -2180,16 +2309,22 @@ TEST_F(FactoryWithTmpDatabase, ASSERT_TRUE( execute("INSERT INTO other_transformation " - "VALUES('OTHER','FOO','My WKT string based op',NULL,NULL," + "VALUES('OTHER','FOO','My WKT string based op',NULL," "'PROJ','WKT','" + std::string("invalid_wkt") + "'," - "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL," + "'EPSG','4326','EPSG','4326',0.0,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,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'other_transformation_FOO_usage'," + "'other_transformation'," + "'OTHER','FOO'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); @@ -2208,16 +2343,22 @@ TEST_F(FactoryWithTmpDatabase, ASSERT_TRUE( execute("INSERT INTO other_transformation " - "VALUES('OTHER','FOO','My WKT string based op',NULL,NULL," + "VALUES('OTHER','FOO','My WKT string based op',NULL," "'PROJ','WKT','" + std::string("LOCAL_CS[\"foo\"]") + "'," - "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL," + "'EPSG','4326','EPSG','4326',0.0,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,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'other_transformation_FOO_usage'," + "'other_transformation'," + "'OTHER','FOO'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); @@ -2297,40 +2438,40 @@ TEST_F(FactoryWithTmpDatabase, custom_geodetic_crs) { populateWithFakeEPSG(); ASSERT_TRUE(execute("INSERT INTO geodetic_crs VALUES('TEST_NS','TEST','my " - "name TEST',NULL,NULL,'geographic 2D'," - "NULL,NULL,NULL,NULL,NULL,NULL,'+proj=longlat +a=2 " + "name TEST',NULL,'geographic 2D'," + "NULL,NULL,NULL,NULL,'+proj=longlat +a=2 " "+rf=300',0);")) << last_error(); ASSERT_TRUE(execute("INSERT INTO geodetic_crs VALUES" "('TEST_NS','TEST_BOUND'," - "'my name TEST',NULL,NULL,'geographic 2D'," - "NULL,NULL,NULL,NULL,NULL,NULL,'+proj=longlat +a=2 " + "'my name TEST',NULL,'geographic 2D'," + "NULL,NULL,NULL,NULL,'+proj=longlat +a=2 " "+rf=300 +towgs84=1,2,3',0);")) << last_error(); ASSERT_TRUE(execute("INSERT INTO geodetic_crs VALUES('TEST_NS','TEST_GC'," - "'my name',NULL,NULL,'geocentric',NULL,NULL,NULL,NULL," + "'my name',NULL,'geocentric',NULL,NULL," "NULL,NULL,'+proj=geocent +a=2 +rf=300',0);")) << last_error(); ASSERT_TRUE(execute( "INSERT INTO geodetic_crs " "VALUES('TEST_NS','TEST_REF_ANOTHER','my name TEST_REF_ANOTHER'," - "NULL,NULL," - "'geographic 2D',NULL,NULL,NULL,NULL,NULL,NULL,'TEST_NS:TEST',0);")) + "NULL," + "'geographic 2D',NULL,NULL,NULL,NULL,'TEST_NS:TEST',0);")) << last_error(); ASSERT_TRUE(execute("INSERT INTO geodetic_crs " - "VALUES('TEST_NS','TEST_WRONG','my name',NULL,NULL," - "'geographic 2D',NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST_WRONG','my name',NULL," + "'geographic 2D',NULL,NULL,NULL,NULL," "'+proj=merc',0);")) << last_error(); ASSERT_TRUE(execute( "INSERT INTO geodetic_crs " - "VALUES('TEST_NS','TEST_RECURSIVE','my name',NULL,NULL,'geographic 2D'," - "NULL,NULL,NULL,NULL,NULL,NULL,'TEST_NS:TEST_RECURSIVE',0);")) + "VALUES('TEST_NS','TEST_RECURSIVE','my name',NULL,'geographic 2D'," + "NULL,NULL,NULL,NULL,'TEST_NS:TEST_RECURSIVE',0);")) << last_error(); auto factory = @@ -2383,42 +2524,42 @@ TEST_F(FactoryWithTmpDatabase, custom_projected_crs) { populateWithFakeEPSG(); ASSERT_TRUE(execute("INSERT INTO projected_crs " - "VALUES('TEST_NS','TEST','my name',NULL,NULL,NULL," - "NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST','my name',NULL,NULL," + "NULL,NULL,NULL,NULL,NULL," "'+proj=mbt_s +unused_flag',0);")) << last_error(); ASSERT_TRUE(execute("INSERT INTO projected_crs " - "VALUES('TEST_NS','TEST_BOUND','my name',NULL,NULL," - "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST_BOUND','my name',NULL," + "NULL,NULL,NULL,NULL,NULL,NULL," "'+proj=mbt_s +unused_flag +towgs84=1,2,3',0);")) << last_error(); ASSERT_TRUE(execute("INSERT INTO projected_crs " - "VALUES('TEST_NS','TEST_WRONG','my name',NULL,NULL," - "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST_WRONG','my name',NULL," + "NULL,NULL,NULL,NULL,NULL,NULL," "'+proj=longlat',0);")) << last_error(); // Unknown ellipsoid ASSERT_TRUE(execute("INSERT INTO projected_crs " - "VALUES('TEST_NS','TEST_MERC','merc',NULL,NULL,NULL," - "NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST_MERC','merc',NULL,NULL," + "NULL,NULL,NULL,NULL,NULL," "'+proj=merc +x_0=0 +R=1',0);")) << last_error(); // Well-known ellipsoid ASSERT_TRUE(execute("INSERT INTO projected_crs " - "VALUES('TEST_NS','TEST_MERC2','merc2',NULL,NULL,NULL," - "NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST_MERC2','merc2',NULL,NULL," + "NULL,NULL,NULL,NULL,NULL," "'+proj=merc +x_0=0 +ellps=GRS80',0);")) << last_error(); // WKT1_GDAL ASSERT_TRUE( execute("INSERT INTO projected_crs " - "VALUES('TEST_NS','TEST_WKT1_GDAL','WKT1_GDAL',NULL,NULL,NULL," - "NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST_WKT1_GDAL','WKT1_GDAL',NULL,NULL," + "NULL,NULL,NULL,NULL,NULL," "'" "PROJCS[\"unknown\",\n" " GEOGCS[\"unknown\",\n" @@ -2578,8 +2719,8 @@ TEST(factory, attachExtraDatabases_auxiliary) { sqlite3_exec( dbAux, "INSERT INTO geodetic_crs VALUES('OTHER','OTHER_4326','WGS " - "84',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6326'," - "'EPSG','1262',NULL,0);", + "84',NULL,'geographic 2D','EPSG','6422','EPSG','6326'," + "NULL,0);", nullptr, nullptr, nullptr) == SQLITE_OK); ASSERT_TRUE(sqlite3_exec(dbAux, "COMMIT", nullptr, nullptr, nullptr) == SQLITE_OK); @@ -2704,26 +2845,34 @@ TEST_F(FactoryWithTmpDatabase, ASSERT_TRUE( execute("INSERT INTO other_transformation " "VALUES('OTHER','PARTIAL_AREA_PERFECT_ACCURACY'," - "'PARTIAL_AREA_PERFECT_ACCURACY',NULL,NULL,'PROJ'," + "'PARTIAL_AREA_PERFECT_ACCURACY',NULL,'PROJ'," "'PROJString','+proj=helmert +x=1'," - "'EPSG','4326','EPSG','4326','EPSG','1933',0.0,NULL,NULL,NULL," + "'EPSG','4326','EPSG','4326',0.0,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,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER', " + "'1','other_transformation','OTHER','PARTIAL_AREA_" + "PERFECT_ACCURACY','EPSG','1933','EPSG','1024')")) + << last_error(); ASSERT_TRUE( execute("INSERT INTO other_transformation " "VALUES('OTHER','WHOLE_AREA_APPROX_ACCURACY'," - "'WHOLE_AREA_APPROX_ACCURACY',NULL,NULL,'PROJ'," + "'WHOLE_AREA_APPROX_ACCURACY',NULL,'PROJ'," "'PROJString','+proj=helmert +x=2'," - "'EPSG','4326','EPSG','4326','EPSG','1262',1.0,NULL,NULL,NULL," + "'EPSG','4326','EPSG','4326',1.0,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,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER', " + "'2','other_transformation','OTHER','WHOLE_AREA_APPROX_" + "ACCURACY','EPSG','1262','EPSG','1024')")) + << last_error(); auto dbContext = DatabaseContext::create(m_ctxt); auto authFactory = |
