aboutsummaryrefslogtreecommitdiff
path: root/test/unit/test_io.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-08-13 18:06:22 +0200
committerGitHub <noreply@github.com>2020-08-13 18:06:22 +0200
commitb8c198897da30e59d41f7b9ccb66bc1b0079e5d8 (patch)
tree043294bf305c46986a0fc3e268efda0c264455d0 /test/unit/test_io.cpp
parent9701afb98c93fd575982265428af53849ee213b6 (diff)
downloadPROJ-b8c198897da30e59d41f7b9ccb66bc1b0079e5d8.tar.gz
PROJ-b8c198897da30e59d41f7b9ccb66bc1b0079e5d8.zip
WKT importer: tune for Oracle WKT and 'Lambert Conformal Conic' (#2321)
Fixes https://github.com/qgis/QGIS/issues/37898
Diffstat (limited to 'test/unit/test_io.cpp')
-rw-r--r--test/unit/test_io.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp
index 433e3e6d..f2464e5c 100644
--- a/test/unit/test_io.cpp
+++ b/test/unit/test_io.cpp
@@ -5910,6 +5910,42 @@ TEST(wkt_parse, wkt1_esri_gauss_kruger) {
// ---------------------------------------------------------------------------
+TEST(wkt_parse, wkt1_oracle) {
+ // WKT from mdsys.cs_srs Oracle table
+ auto wkt = "PROJCS[\"RGF93 / Lambert-93\", GEOGCS [ \"RGF93\", "
+ "DATUM [\"Reseau Geodesique Francais 1993 (EPSG ID 6171)\", "
+ "SPHEROID [\"GRS 1980 (EPSG ID 7019)\", 6378137.0, "
+ "298.257222101]], PRIMEM [ \"Greenwich\", 0.000000000 ], "
+ "UNIT [\"Decimal Degree\", 0.0174532925199433]], "
+ "PROJECTION [\"Lambert Conformal Conic\"], "
+ "PARAMETER [\"Latitude_Of_Origin\", 46.5], "
+ "PARAMETER [\"Central_Meridian\", 3.0], "
+ "PARAMETER [\"Standard_Parallel_1\", 49.0], "
+ "PARAMETER [\"Standard_Parallel_2\", 44.0], "
+ "PARAMETER [\"False_Easting\", 700000.0], "
+ "PARAMETER [\"False_Northing\", 6600000.0], "
+ "UNIT [\"Meter\", 1.0]]";
+
+ auto dbContext = DatabaseContext::create();
+ auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT(wkt);
+ auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+
+ EXPECT_EQ(crs->baseCRS()->datum()->nameStr(),
+ "Reseau Geodesique Francais 1993");
+ EXPECT_EQ(crs->baseCRS()->datum()->getEPSGCode(), 6171);
+ EXPECT_EQ(crs->derivingConversion()->method()->nameStr(),
+ "Lambert Conic Conformal (2SP)");
+
+ auto factoryAll = AuthorityFactory::create(dbContext, std::string());
+ auto res = crs->identify(factoryAll);
+ ASSERT_GE(res.size(), 1U);
+ EXPECT_EQ(res.front().first->getEPSGCode(), 2154);
+ EXPECT_EQ(res.front().second, 100);
+}
+
+// ---------------------------------------------------------------------------
+
TEST(wkt_parse, invalid) {
EXPECT_THROW(WKTParser().createFromWKT(""), ParsingException);
EXPECT_THROW(WKTParser().createFromWKT("A"), ParsingException);