From 13625a0c3f5a8a1b3a6ac63b4f49234a3722f62c Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 13 Dec 2018 16:23:01 +0100 Subject: Tune behaviour for LAEA vs LAEA Spherical or EQC vs EQC Spherical --- test/unit/test_io.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'test/unit') diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index bd230b45..a385fe87 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -42,6 +42,8 @@ #include "proj/internal/internal.hpp" +#include "proj_constants.h" + #include using namespace osgeo::proj::common; @@ -6973,6 +6975,52 @@ TEST(io, projparse_laea_south_pole) { // --------------------------------------------------------------------------- +TEST(io, projparse_laea_spherical) { + auto obj = PROJStringParser().createFromPROJString("+proj=laea +R=6371228"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->derivingConversion()->method()->getEPSGCode(), + EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA_SPHERICAL); + + auto crs2 = ProjectedCRS::create( + PropertyMap(), crs->baseCRS(), + Conversion::createLambertAzimuthalEqualArea( + PropertyMap(), Angle(0), Angle(0), Length(0), Length(0)), + crs->coordinateSystem()); + EXPECT_EQ(crs2->derivingConversion()->method()->getEPSGCode(), + EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA); + + EXPECT_TRUE( + crs->isEquivalentTo(crs2.get(), IComparable::Criterion::EQUIVALENT)); + EXPECT_TRUE( + crs2->isEquivalentTo(crs.get(), IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_eqc_spherical) { + auto obj = PROJStringParser().createFromPROJString("+proj=eqc +R=6371228"); + auto crs = nn_dynamic_pointer_cast(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->derivingConversion()->method()->getEPSGCode(), + EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL_SPHERICAL); + + auto crs2 = ProjectedCRS::create( + PropertyMap(), crs->baseCRS(), + Conversion::createEquidistantCylindrical( + PropertyMap(), Angle(0), Angle(0), Length(0), Length(0)), + crs->coordinateSystem()); + EXPECT_EQ(crs2->derivingConversion()->method()->getEPSGCode(), + EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL); + + EXPECT_TRUE( + crs->isEquivalentTo(crs2.get(), IComparable::Criterion::EQUIVALENT)); + EXPECT_TRUE( + crs2->isEquivalentTo(crs.get(), IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + TEST(io, projparse_non_earth_ellipsoid) { std::string input("+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +R=1 +units=m " "+no_defs"); -- cgit v1.2.3