diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2020-04-22 19:25:07 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-22 19:25:07 +0200 |
| commit | 529a5c098cad1d93e1bad5ca5cdf83d92e87cc77 (patch) | |
| tree | d3233e48366f3aac8e67e1d3fad834d1c4499972 /test/unit/test_io.cpp | |
| parent | 94aa1fc5ea1660be3f4fd10d069c44772df165d3 (diff) | |
| download | PROJ-529a5c098cad1d93e1bad5ca5cdf83d92e87cc77.tar.gz PROJ-529a5c098cad1d93e1bad5ca5cdf83d92e87cc77.zip | |
PROJ4 string import: take into correctly non-metre unit when the string looks like the one for WGS 84 / Pseudo Mercator (fixes https://github.com/OSGeo/gdal/issues/2433) (#2174)
Diffstat (limited to 'test/unit/test_io.cpp')
| -rw-r--r-- | test/unit/test_io.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index 54827046..1c69bb05 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -8511,6 +8511,67 @@ TEST(io, projparse_merc_google_mercator) { // --------------------------------------------------------------------------- +TEST(io, projparse_merc_google_mercator_non_metre_unit) { + auto projString = + "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 " + "+k=1 +units=ft +nadgrids=@null +no_defs +type=crs"; + auto obj = PROJStringParser().createFromPROJString(projString); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->nameStr(), "WGS 84 / Pseudo-Mercator (unit ft)"); + EXPECT_EQ(crs->derivingConversion()->method()->nameStr(), + "Popular Visualisation Pseudo Mercator"); + EXPECT_EQ( + replaceAll(crs->exportToPROJString(PROJStringFormatter::create().get()), + " +wktext", ""), + projString); + + auto wkt = crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2019).get()); + auto expected_wkt = + "PROJCRS[\"WGS 84 / Pseudo-Mercator (unit ft)\",\n" + " BASEGEOGCRS[\"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" + " ID[\"EPSG\",4326]],\n" + " CONVERSION[\"unnamed\",\n" + " METHOD[\"Popular Visualisation Pseudo Mercator\",\n" + " ID[\"EPSG\",1024]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"foot\",0.3048,\n" + " ID[\"EPSG\",9002]]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"foot\",0.3048,\n" + " ID[\"EPSG\",9002]]]]"; + EXPECT_EQ(wkt, expected_wkt); + + auto objFromWkt = WKTParser().createFromWKT(wkt); + auto crsFromWkt = nn_dynamic_pointer_cast<ProjectedCRS>(objFromWkt); + ASSERT_TRUE(crsFromWkt != nullptr); + EXPECT_TRUE(crs->isEquivalentTo(crsFromWkt.get(), + IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + TEST(io, projparse_merc_not_quite_google_mercator) { auto projString = "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=10 +x_0=0 +y_0=0 " |
