aboutsummaryrefslogtreecommitdiff
path: root/test/unit/test_operation.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2018-12-28 11:39:45 +0100
committerEven Rouault <even.rouault@spatialys.com>2018-12-28 11:39:45 +0100
commitc8cce384a175edc666de388e3e9307a8cd5c9501 (patch)
tree4fb8c53d716408c41b05d33913b3991f85488edf /test/unit/test_operation.cpp
parentd669631ad36641e49fca9e96a4bdd5e590efa239 (diff)
downloadPROJ-c8cce384a175edc666de388e3e9307a8cd5c9501.tar.gz
PROJ-c8cce384a175edc666de388e3e9307a8cd5c9501.zip
Make createOperation() better work with BoundCRS (to take into account the extent of their base CRS)
Diffstat (limited to 'test/unit/test_operation.cpp')
-rw-r--r--test/unit/test_operation.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp
index 636db7a7..1030ba93 100644
--- a/test/unit/test_operation.cpp
+++ b/test/unit/test_operation.cpp
@@ -5534,6 +5534,98 @@ TEST(operation, boundCRS_to_boundCRS_unralated_hub) {
// ---------------------------------------------------------------------------
+TEST(operation, boundCRS_with_basecrs_with_extent_to_geogCRS) {
+
+ auto wkt =
+ "BOUNDCRS[\n"
+ " SOURCECRS[\n"
+ " PROJCRS[\"NAD83 / California zone 3 (ftUS)\",\n"
+ " BASEGEODCRS[\"NAD83\",\n"
+ " DATUM[\"North American Datum 1983\",\n"
+ " ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n"
+ " LENGTHUNIT[\"metre\",1]]],\n"
+ " PRIMEM[\"Greenwich\",0,\n"
+ " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n"
+ " CONVERSION[\"SPCS83 California zone 3 (US Survey "
+ "feet)\",\n"
+ " METHOD[\"Lambert Conic Conformal (2SP)\",\n"
+ " ID[\"EPSG\",9802]],\n"
+ " PARAMETER[\"Latitude of false origin\",36.5,\n"
+ " ANGLEUNIT[\"degree\",0.0174532925199433],\n"
+ " ID[\"EPSG\",8821]],\n"
+ " PARAMETER[\"Longitude of false origin\",-120.5,\n"
+ " ANGLEUNIT[\"degree\",0.0174532925199433],\n"
+ " ID[\"EPSG\",8822]],\n"
+ " PARAMETER[\"Latitude of 1st standard parallel\","
+ " 38.4333333333333,\n"
+ " ANGLEUNIT[\"degree\",0.0174532925199433],\n"
+ " ID[\"EPSG\",8823]],\n"
+ " PARAMETER[\"Latitude of 2nd standard parallel\","
+ " 37.0666666666667,\n"
+ " ANGLEUNIT[\"degree\",0.0174532925199433],\n"
+ " ID[\"EPSG\",8824]],\n"
+ " PARAMETER[\"Easting at false origin\",6561666.667,\n"
+ " LENGTHUNIT[\"US survey foot\","
+ " 0.304800609601219],\n"
+ " ID[\"EPSG\",8826]],\n"
+ " PARAMETER[\"Northing at false origin\",1640416.667,\n"
+ " LENGTHUNIT[\"US survey foot\","
+ " 0.304800609601219],\n"
+ " ID[\"EPSG\",8827]]],\n"
+ " CS[Cartesian,2],\n"
+ " AXIS[\"easting (X)\",east,\n"
+ " ORDER[1],\n"
+ " LENGTHUNIT[\"US survey foot\","
+ " 0.304800609601219]],\n"
+ " AXIS[\"northing (Y)\",north,\n"
+ " ORDER[2],\n"
+ " LENGTHUNIT[\"US survey foot\","
+ " 0.304800609601219]],\n"
+ " SCOPE[\"unknown\"],\n"
+ " AREA[\"USA - California - SPCS - 3\"],\n"
+ " BBOX[36.73,-123.02,38.71,-117.83],\n"
+ " ID[\"EPSG\",2227]]],\n"
+ " TARGETCRS[\n"
+ " GEODCRS[\"WGS 84\",\n"
+ " DATUM[\"World Geodetic System 1984\",\n"
+ " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n"
+ " LENGTHUNIT[\"metre\",1]]],\n"
+ " PRIMEM[\"Greenwich\",0,\n"
+ " ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
+ " CS[ellipsoidal,2],\n"
+ " AXIS[\"latitude\",north,\n"
+ " ORDER[1],\n"
+ " ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
+ " AXIS[\"longitude\",east,\n"
+ " ORDER[2],\n"
+ " ANGLEUNIT[\"degree\",0.0174532925199433]],\n"
+ " ID[\"EPSG\",4326]]],\n"
+ " ABRIDGEDTRANSFORMATION[\"NAD83 to WGS 84 (1)\",\n"
+ " METHOD[\"Geocentric translations (geog2D domain)\",\n"
+ " ID[\"EPSG\",9603]],\n"
+ " PARAMETER[\"X-axis translation\",0,\n"
+ " ID[\"EPSG\",8605]],\n"
+ " PARAMETER[\"Y-axis translation\",0,\n"
+ " ID[\"EPSG\",8606]],\n"
+ " PARAMETER[\"Z-axis translation\",0,\n"
+ " ID[\"EPSG\",8607]],\n"
+ " SCOPE[\"unknown\"],\n"
+ " AREA[\"North America - Canada and USA (CONUS, Alaska "
+ "mainland)\"],\n"
+ " BBOX[23.81,-172.54,86.46,-47.74],\n"
+ " ID[\"EPSG\",1188]]]";
+ auto obj = WKTParser().createFromWKT(wkt);
+ auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(obj);
+ ASSERT_TRUE(boundCRS != nullptr);
+ auto op = CoordinateOperationFactory::create()->createOperation(
+ NN_CHECK_ASSERT(boundCRS), GeographicCRS::EPSG_4326);
+ ASSERT_TRUE(op != nullptr);
+ EXPECT_EQ(op->nameStr(), "Inverse of SPCS83 California zone 3 (US Survey "
+ "feet) + NAD83 to WGS 84 (1)");
+}
+
+// ---------------------------------------------------------------------------
+
static VerticalCRSNNPtr createVerticalCRS() {
PropertyMap propertiesVDatum;
propertiesVDatum.set(Identifier::CODESPACE_KEY, "EPSG")