aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-08-09 17:10:20 +0200
committerEven Rouault <even.rouault@spatialys.com>2019-08-09 17:41:23 +0200
commitf0d766e45640800412c08a7cb9ab4f8823d88d05 (patch)
tree1973086c9f52043d61fb1a71cbbc1c3a794c3afc /test
parent81bd57dfd8cfae609288643d1b09a4805f1bcded (diff)
downloadPROJ-f0d766e45640800412c08a7cb9ab4f8823d88d05.tar.gz
PROJ-f0d766e45640800412c08a7cb9ab4f8823d88d05.zip
PROJSJON: add import/export of VerticalCRS, CompoundCRS, BoundCRS, Transformation and ConcatenatedOperation
Diffstat (limited to 'test')
-rw-r--r--test/unit/test_io.cpp790
1 files changed, 790 insertions, 0 deletions
diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp
index c993c5e4..d3c4c8ec 100644
--- a/test/unit/test_io.cpp
+++ b/test/unit/test_io.cpp
@@ -9612,3 +9612,793 @@ TEST(wkt_export, json_import_projected_crs) {
ASSERT_TRUE(pcrs != nullptr);
EXPECT_EQ(pcrs->exportToJSON((JSONFormatter::create().get())), json);
}
+
+// ---------------------------------------------------------------------------
+
+TEST(wkt_export, json_import_compound_crs) {
+ auto json = "{\n"
+ " \"type\": \"CompoundCRS\",\n"
+ " \"name\": \"WGS 84 + EGM2008 height\",\n"
+ " \"components\": [\n"
+ " {\n"
+ " \"type\": \"GeographicCRS\",\n"
+ " \"name\": \"WGS 84\",\n"
+ " \"datum\": {\n"
+ " \"type\": \"GeodeticReferenceFrame\",\n"
+ " \"name\": \"World Geodetic System 1984\",\n"
+ " \"ellipsoid\": {\n"
+ " \"name\": \"WGS 84\",\n"
+ " \"semi_major_axis\": 6378137,\n"
+ " \"inverse_flattening\": 298.257223563\n"
+ " }\n"
+ " },\n"
+ " \"coordinate_system\": {\n"
+ " \"subtype\": \"ellipsoidal\",\n"
+ " \"axis\": [\n"
+ " {\n"
+ " \"name\": \"Geodetic latitude\",\n"
+ " \"abbreviation\": \"Lat\",\n"
+ " \"direction\": \"north\",\n"
+ " \"unit\": \"degree\"\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Geodetic longitude\",\n"
+ " \"abbreviation\": \"Lon\",\n"
+ " \"direction\": \"east\",\n"
+ " \"unit\": \"degree\"\n"
+ " }\n"
+ " ]\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 4326\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"type\": \"VerticalCRS\",\n"
+ " \"name\": \"EGM2008 height\",\n"
+ " \"datum\": {\n"
+ " \"type\": \"VerticalReferenceFrame\",\n"
+ " \"name\": \"EGM2008 geoid\"\n"
+ " },\n"
+ " \"coordinate_system\": {\n"
+ " \"subtype\": \"vertical\",\n"
+ " \"axis\": [\n"
+ " {\n"
+ " \"name\": \"Gravity-related height\",\n"
+ " \"abbreviation\": \"H\",\n"
+ " \"direction\": \"up\",\n"
+ " \"unit\": \"metre\"\n"
+ " }\n"
+ " ]\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 3855\n"
+ " }\n"
+ " }\n"
+ " ]\n"
+ "}";
+ auto obj = createFromUserInput(json, nullptr);
+ auto compoundCRS = nn_dynamic_pointer_cast<CompoundCRS>(obj);
+ ASSERT_TRUE(compoundCRS != nullptr);
+ EXPECT_EQ(compoundCRS->exportToJSON((JSONFormatter::create().get())), json);
+}
+
+// ---------------------------------------------------------------------------
+
+TEST(wkt_export, json_import_bound_crs) {
+ auto json =
+ "{\n"
+ " \"type\": \"BoundCRS\",\n"
+ " \"source_crs\": {\n"
+ " \"type\": \"GeographicCRS\",\n"
+ " \"name\": \"unknown\",\n"
+ " \"datum\": {\n"
+ " \"type\": \"GeodeticReferenceFrame\",\n"
+ " \"name\": \"Unknown based on GRS80 ellipsoid\",\n"
+ " \"ellipsoid\": {\n"
+ " \"name\": \"GRS 1980\",\n"
+ " \"semi_major_axis\": 6378137,\n"
+ " \"inverse_flattening\": 298.257222101,\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 7019\n"
+ " }\n"
+ " }\n"
+ " },\n"
+ " \"coordinate_system\": {\n"
+ " \"subtype\": \"ellipsoidal\",\n"
+ " \"axis\": [\n"
+ " {\n"
+ " \"name\": \"Longitude\",\n"
+ " \"abbreviation\": \"lon\",\n"
+ " \"direction\": \"east\",\n"
+ " \"unit\": \"degree\"\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Latitude\",\n"
+ " \"abbreviation\": \"lat\",\n"
+ " \"direction\": \"north\",\n"
+ " \"unit\": \"degree\"\n"
+ " }\n"
+ " ]\n"
+ " }\n"
+ " },\n"
+ " \"target_crs\": {\n"
+ " \"type\": \"GeographicCRS\",\n"
+ " \"name\": \"WGS 84\",\n"
+ " \"datum\": {\n"
+ " \"type\": \"GeodeticReferenceFrame\",\n"
+ " \"name\": \"World Geodetic System 1984\",\n"
+ " \"ellipsoid\": {\n"
+ " \"name\": \"WGS 84\",\n"
+ " \"semi_major_axis\": 6378137,\n"
+ " \"inverse_flattening\": 298.257223563\n"
+ " }\n"
+ " },\n"
+ " \"coordinate_system\": {\n"
+ " \"subtype\": \"ellipsoidal\",\n"
+ " \"axis\": [\n"
+ " {\n"
+ " \"name\": \"Latitude\",\n"
+ " \"abbreviation\": \"lat\",\n"
+ " \"direction\": \"north\",\n"
+ " \"unit\": \"degree\"\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Longitude\",\n"
+ " \"abbreviation\": \"lon\",\n"
+ " \"direction\": \"east\",\n"
+ " \"unit\": \"degree\"\n"
+ " }\n"
+ " ]\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 4326\n"
+ " }\n"
+ " },\n"
+ " \"transformation\": {\n"
+ " \"name\": \"unknown to WGS84\",\n"
+ " \"method\": {\n"
+ " \"name\": \"NTv2\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 9615\n"
+ " }\n"
+ " },\n"
+ " \"parameters\": [\n"
+ " {\n"
+ " \"name\": \"Latitude and longitude difference file\",\n"
+ " \"value\": \"@foo\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8656\n"
+ " }\n"
+ " }\n"
+ " ]\n"
+ " }\n"
+ "}";
+ auto obj = createFromUserInput(json, nullptr);
+ auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(obj);
+ ASSERT_TRUE(boundCRS != nullptr);
+ EXPECT_EQ(boundCRS->exportToJSON((JSONFormatter::create().get())), json);
+}
+
+// ---------------------------------------------------------------------------
+
+TEST(wkt_export, json_import_transformation) {
+ auto json = "{\n"
+ " \"type\": \"Transformation\",\n"
+ " \"name\": \"GDA94 to GDA2020 (1)\",\n"
+ " \"source_crs\": {\n"
+ " \"type\": \"GeographicCRS\",\n"
+ " \"name\": \"GDA94\",\n"
+ " \"datum\": {\n"
+ " \"type\": \"GeodeticReferenceFrame\",\n"
+ " \"name\": \"Geocentric Datum of Australia 1994\",\n"
+ " \"ellipsoid\": {\n"
+ " \"name\": \"GRS 1980\",\n"
+ " \"semi_major_axis\": 6378137,\n"
+ " \"inverse_flattening\": 298.257222101\n"
+ " }\n"
+ " },\n"
+ " \"coordinate_system\": {\n"
+ " \"subtype\": \"ellipsoidal\",\n"
+ " \"axis\": [\n"
+ " {\n"
+ " \"name\": \"Geodetic latitude\",\n"
+ " \"abbreviation\": \"Lat\",\n"
+ " \"direction\": \"north\",\n"
+ " \"unit\": \"degree\"\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Geodetic longitude\",\n"
+ " \"abbreviation\": \"Lon\",\n"
+ " \"direction\": \"east\",\n"
+ " \"unit\": \"degree\"\n"
+ " }\n"
+ " ]\n"
+ " }\n"
+ " },\n"
+ " \"target_crs\": {\n"
+ " \"type\": \"GeographicCRS\",\n"
+ " \"name\": \"GDA2020\",\n"
+ " \"datum\": {\n"
+ " \"type\": \"GeodeticReferenceFrame\",\n"
+ " \"name\": \"Geocentric Datum of Australia 2020\",\n"
+ " \"ellipsoid\": {\n"
+ " \"name\": \"GRS 1980\",\n"
+ " \"semi_major_axis\": 6378137,\n"
+ " \"inverse_flattening\": 298.257222101\n"
+ " }\n"
+ " },\n"
+ " \"coordinate_system\": {\n"
+ " \"subtype\": \"ellipsoidal\",\n"
+ " \"axis\": [\n"
+ " {\n"
+ " \"name\": \"Geodetic latitude\",\n"
+ " \"abbreviation\": \"Lat\",\n"
+ " \"direction\": \"north\",\n"
+ " \"unit\": \"degree\"\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Geodetic longitude\",\n"
+ " \"abbreviation\": \"Lon\",\n"
+ " \"direction\": \"east\",\n"
+ " \"unit\": \"degree\"\n"
+ " }\n"
+ " ]\n"
+ " }\n"
+ " },\n"
+ " \"method\": {\n"
+ " \"name\": \"Coordinate Frame rotation (geog2D domain)\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 9607\n"
+ " }\n"
+ " },\n"
+ " \"parameters\": [\n"
+ " {\n"
+ " \"name\": \"X-axis translation\",\n"
+ " \"value\": 61.55,\n"
+ " \"unit\": {\n"
+ " \"type\": \"LinearUnit\",\n"
+ " \"name\": \"millimetre\",\n"
+ " \"conversion_factor\": 0.001\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8605\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Y-axis translation\",\n"
+ " \"value\": -10.87,\n"
+ " \"unit\": {\n"
+ " \"type\": \"LinearUnit\",\n"
+ " \"name\": \"millimetre\",\n"
+ " \"conversion_factor\": 0.001\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8606\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Z-axis translation\",\n"
+ " \"value\": -40.19,\n"
+ " \"unit\": {\n"
+ " \"type\": \"LinearUnit\",\n"
+ " \"name\": \"millimetre\",\n"
+ " \"conversion_factor\": 0.001\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8607\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"X-axis rotation\",\n"
+ " \"value\": -39.4924,\n"
+ " \"unit\": {\n"
+ " \"type\": \"AngularUnit\",\n"
+ " \"name\": \"milliarc-second\",\n"
+ " \"conversion_factor\": 4.84813681109536e-09\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8608\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Y-axis rotation\",\n"
+ " \"value\": -32.7221,\n"
+ " \"unit\": {\n"
+ " \"type\": \"AngularUnit\",\n"
+ " \"name\": \"milliarc-second\",\n"
+ " \"conversion_factor\": 4.84813681109536e-09\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8609\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Z-axis rotation\",\n"
+ " \"value\": -32.8979,\n"
+ " \"unit\": {\n"
+ " \"type\": \"AngularUnit\",\n"
+ " \"name\": \"milliarc-second\",\n"
+ " \"conversion_factor\": 4.84813681109536e-09\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8610\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Scale difference\",\n"
+ " \"value\": -9.994,\n"
+ " \"unit\": {\n"
+ " \"type\": \"ScaleUnit\",\n"
+ " \"name\": \"parts per billion\",\n"
+ " \"conversion_factor\": 1e-09\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8611\n"
+ " }\n"
+ " }\n"
+ " ],\n"
+ " \"accuracy\": \"0.01\",\n"
+ " \"scope\": \"scope\",\n"
+ " \"area\": \"Australia - GDA\",\n"
+ " \"bbox\": {\n"
+ " \"south_latitude\": -60.56,\n"
+ " \"west_longitude\": 93.41,\n"
+ " \"north_latitude\": -8.47,\n"
+ " \"east_longitude\": 173.35\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8048\n"
+ " },\n"
+ " \"remarks\": \"foo\"\n"
+ "}";
+ auto obj = createFromUserInput(json, nullptr);
+ auto transf = nn_dynamic_pointer_cast<Transformation>(obj);
+ ASSERT_TRUE(transf != nullptr);
+ EXPECT_EQ(transf->exportToJSON((JSONFormatter::create().get())), json);
+}
+
+// ---------------------------------------------------------------------------
+
+TEST(wkt_export, json_import_concatenated_operation) {
+ auto json =
+ "{\n"
+ " \"type\": \"ConcatenatedOperation\",\n"
+ " \"name\": \"Inverse of Vicgrid + GDA94 to GDA2020 (1)\",\n"
+ " \"source_crs\": {\n"
+ " \"type\": \"ProjectedCRS\",\n"
+ " \"name\": \"GDA94 / Vicgrid\",\n"
+ " \"base_crs\": {\n"
+ " \"name\": \"GDA94\",\n"
+ " \"datum\": {\n"
+ " \"type\": \"GeodeticReferenceFrame\",\n"
+ " \"name\": \"Geocentric Datum of Australia 1994\",\n"
+ " \"ellipsoid\": {\n"
+ " \"name\": \"GRS 1980\",\n"
+ " \"semi_major_axis\": 6378137,\n"
+ " \"inverse_flattening\": 298.257222101\n"
+ " }\n"
+ " },\n"
+ " \"coordinate_system\": {\n"
+ " \"subtype\": \"ellipsoidal\",\n"
+ " \"axis\": [\n"
+ " {\n"
+ " \"name\": \"Geodetic latitude\",\n"
+ " \"abbreviation\": \"Lat\",\n"
+ " \"direction\": \"north\",\n"
+ " \"unit\": \"degree\"\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Geodetic longitude\",\n"
+ " \"abbreviation\": \"Lon\",\n"
+ " \"direction\": \"east\",\n"
+ " \"unit\": \"degree\"\n"
+ " }\n"
+ " ]\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 4283\n"
+ " }\n"
+ " },\n"
+ " \"conversion\": {\n"
+ " \"name\": \"Vicgrid\",\n"
+ " \"method\": {\n"
+ " \"name\": \"Lambert Conic Conformal (2SP)\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 9802\n"
+ " }\n"
+ " },\n"
+ " \"parameters\": [\n"
+ " {\n"
+ " \"name\": \"Latitude of false origin\",\n"
+ " \"value\": -37,\n"
+ " \"unit\": \"degree\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8821\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Longitude of false origin\",\n"
+ " \"value\": 145,\n"
+ " \"unit\": \"degree\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8822\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Latitude of 1st standard parallel\",\n"
+ " \"value\": -36,\n"
+ " \"unit\": \"degree\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8823\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Latitude of 2nd standard parallel\",\n"
+ " \"value\": -38,\n"
+ " \"unit\": \"degree\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8824\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Easting at false origin\",\n"
+ " \"value\": 2500000,\n"
+ " \"unit\": \"metre\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8826\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Northing at false origin\",\n"
+ " \"value\": 2500000,\n"
+ " \"unit\": \"metre\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8827\n"
+ " }\n"
+ " }\n"
+ " ]\n"
+ " },\n"
+ " \"coordinate_system\": {\n"
+ " \"subtype\": \"Cartesian\",\n"
+ " \"axis\": [\n"
+ " {\n"
+ " \"name\": \"Easting\",\n"
+ " \"abbreviation\": \"E\",\n"
+ " \"direction\": \"east\",\n"
+ " \"unit\": \"metre\"\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Northing\",\n"
+ " \"abbreviation\": \"N\",\n"
+ " \"direction\": \"north\",\n"
+ " \"unit\": \"metre\"\n"
+ " }\n"
+ " ]\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 3111\n"
+ " }\n"
+ " },\n"
+ " \"target_crs\": {\n"
+ " \"type\": \"GeographicCRS\",\n"
+ " \"name\": \"GDA2020\",\n"
+ " \"datum\": {\n"
+ " \"type\": \"GeodeticReferenceFrame\",\n"
+ " \"name\": \"Geocentric Datum of Australia 2020\",\n"
+ " \"ellipsoid\": {\n"
+ " \"name\": \"GRS 1980\",\n"
+ " \"semi_major_axis\": 6378137,\n"
+ " \"inverse_flattening\": 298.257222101\n"
+ " }\n"
+ " },\n"
+ " \"coordinate_system\": {\n"
+ " \"subtype\": \"ellipsoidal\",\n"
+ " \"axis\": [\n"
+ " {\n"
+ " \"name\": \"Geodetic latitude\",\n"
+ " \"abbreviation\": \"Lat\",\n"
+ " \"direction\": \"north\",\n"
+ " \"unit\": \"degree\"\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Geodetic longitude\",\n"
+ " \"abbreviation\": \"Lon\",\n"
+ " \"direction\": \"east\",\n"
+ " \"unit\": \"degree\"\n"
+ " }\n"
+ " ]\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 7844\n"
+ " }\n"
+ " },\n"
+ " \"steps\": [\n"
+ " {\n"
+ " \"type\": \"Conversion\",\n"
+ " \"name\": \"Inverse of Vicgrid\",\n"
+ " \"method\": {\n"
+ " \"name\": \"Inverse of Lambert Conic Conformal (2SP)\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"INVERSE(EPSG)\",\n"
+ " \"code\": 9802\n"
+ " }\n"
+ " },\n"
+ " \"parameters\": [\n"
+ " {\n"
+ " \"name\": \"Latitude of false origin\",\n"
+ " \"value\": -37,\n"
+ " \"unit\": \"degree\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8821\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Longitude of false origin\",\n"
+ " \"value\": 145,\n"
+ " \"unit\": \"degree\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8822\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Latitude of 1st standard parallel\",\n"
+ " \"value\": -36,\n"
+ " \"unit\": \"degree\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8823\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Latitude of 2nd standard parallel\",\n"
+ " \"value\": -38,\n"
+ " \"unit\": \"degree\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8824\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Easting at false origin\",\n"
+ " \"value\": 2500000,\n"
+ " \"unit\": \"metre\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8826\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Northing at false origin\",\n"
+ " \"value\": 2500000,\n"
+ " \"unit\": \"metre\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8827\n"
+ " }\n"
+ " }\n"
+ " ],\n"
+ " \"id\": {\n"
+ " \"authority\": \"INVERSE(EPSG)\",\n"
+ " \"code\": 17361\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"type\": \"Transformation\",\n"
+ " \"name\": \"GDA94 to GDA2020 (1)\",\n"
+ " \"source_crs\": {\n"
+ " \"type\": \"GeographicCRS\",\n"
+ " \"name\": \"GDA94\",\n"
+ " \"datum\": {\n"
+ " \"type\": \"GeodeticReferenceFrame\",\n"
+ " \"name\": \"Geocentric Datum of Australia 1994\",\n"
+ " \"ellipsoid\": {\n"
+ " \"name\": \"GRS 1980\",\n"
+ " \"semi_major_axis\": 6378137,\n"
+ " \"inverse_flattening\": 298.257222101\n"
+ " }\n"
+ " },\n"
+ " \"coordinate_system\": {\n"
+ " \"subtype\": \"ellipsoidal\",\n"
+ " \"axis\": [\n"
+ " {\n"
+ " \"name\": \"Geodetic latitude\",\n"
+ " \"abbreviation\": \"Lat\",\n"
+ " \"direction\": \"north\",\n"
+ " \"unit\": \"degree\"\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Geodetic longitude\",\n"
+ " \"abbreviation\": \"Lon\",\n"
+ " \"direction\": \"east\",\n"
+ " \"unit\": \"degree\"\n"
+ " }\n"
+ " ]\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 4283\n"
+ " }\n"
+ " },\n"
+ " \"target_crs\": {\n"
+ " \"type\": \"GeographicCRS\",\n"
+ " \"name\": \"GDA2020\",\n"
+ " \"datum\": {\n"
+ " \"type\": \"GeodeticReferenceFrame\",\n"
+ " \"name\": \"Geocentric Datum of Australia 2020\",\n"
+ " \"ellipsoid\": {\n"
+ " \"name\": \"GRS 1980\",\n"
+ " \"semi_major_axis\": 6378137,\n"
+ " \"inverse_flattening\": 298.257222101\n"
+ " }\n"
+ " },\n"
+ " \"coordinate_system\": {\n"
+ " \"subtype\": \"ellipsoidal\",\n"
+ " \"axis\": [\n"
+ " {\n"
+ " \"name\": \"Geodetic latitude\",\n"
+ " \"abbreviation\": \"Lat\",\n"
+ " \"direction\": \"north\",\n"
+ " \"unit\": \"degree\"\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Geodetic longitude\",\n"
+ " \"abbreviation\": \"Lon\",\n"
+ " \"direction\": \"east\",\n"
+ " \"unit\": \"degree\"\n"
+ " }\n"
+ " ]\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 7844\n"
+ " }\n"
+ " },\n"
+ " \"method\": {\n"
+ " \"name\": \"Coordinate Frame rotation (geog2D domain)\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 9607\n"
+ " }\n"
+ " },\n"
+ " \"parameters\": [\n"
+ " {\n"
+ " \"name\": \"X-axis translation\",\n"
+ " \"value\": 61.55,\n"
+ " \"unit\": {\n"
+ " \"type\": \"LinearUnit\",\n"
+ " \"name\": \"millimetre\",\n"
+ " \"conversion_factor\": 0.001\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8605\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Y-axis translation\",\n"
+ " \"value\": -10.87,\n"
+ " \"unit\": {\n"
+ " \"type\": \"LinearUnit\",\n"
+ " \"name\": \"millimetre\",\n"
+ " \"conversion_factor\": 0.001\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8606\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Z-axis translation\",\n"
+ " \"value\": -40.19,\n"
+ " \"unit\": {\n"
+ " \"type\": \"LinearUnit\",\n"
+ " \"name\": \"millimetre\",\n"
+ " \"conversion_factor\": 0.001\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8607\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"X-axis rotation\",\n"
+ " \"value\": -39.4924,\n"
+ " \"unit\": {\n"
+ " \"type\": \"AngularUnit\",\n"
+ " \"name\": \"milliarc-second\",\n"
+ " \"conversion_factor\": 4.84813681109536e-09\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8608\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Y-axis rotation\",\n"
+ " \"value\": -32.7221,\n"
+ " \"unit\": {\n"
+ " \"type\": \"AngularUnit\",\n"
+ " \"name\": \"milliarc-second\",\n"
+ " \"conversion_factor\": 4.84813681109536e-09\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8609\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Z-axis rotation\",\n"
+ " \"value\": -32.8979,\n"
+ " \"unit\": {\n"
+ " \"type\": \"AngularUnit\",\n"
+ " \"name\": \"milliarc-second\",\n"
+ " \"conversion_factor\": 4.84813681109536e-09\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8610\n"
+ " }\n"
+ " },\n"
+ " {\n"
+ " \"name\": \"Scale difference\",\n"
+ " \"value\": -9.994,\n"
+ " \"unit\": {\n"
+ " \"type\": \"ScaleUnit\",\n"
+ " \"name\": \"parts per billion\",\n"
+ " \"conversion_factor\": 1e-09\n"
+ " },\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8611\n"
+ " }\n"
+ " }\n"
+ " ],\n"
+ " \"accuracy\": \"0.01\",\n"
+ " \"id\": {\n"
+ " \"authority\": \"EPSG\",\n"
+ " \"code\": 8048\n"
+ " },\n"
+ " \"remarks\": \"remarks\"\n"
+ " }\n"
+ " ],\n"
+ " \"area\": \"Australia - GDA\",\n"
+ " \"bbox\": {\n"
+ " \"south_latitude\": -60.56,\n"
+ " \"west_longitude\": 93.41,\n"
+ " \"north_latitude\": -8.47,\n"
+ " \"east_longitude\": 173.35\n"
+ " }\n"
+ "}";
+ auto obj = createFromUserInput(json, nullptr);
+ auto concat = nn_dynamic_pointer_cast<ConcatenatedOperation>(obj);
+ ASSERT_TRUE(concat != nullptr);
+ EXPECT_EQ(concat->exportToJSON((JSONFormatter::create().get())), json);
+}