From 2594b3a2240db7d7007e1c98f08762613b7f7e73 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 3 Apr 2021 16:16:22 +0200 Subject: Add mapping between EPSG method 'Hyperbolic Cassini-Soldner' and +proj=cass +hyperbolic --- src/iso19111/operation/parammappings.cpp | 4 ++++ src/proj_constants.h | 3 +++ test/unit/test_operation.cpp | 12 ++++++++++++ 3 files changed, 19 insertions(+) diff --git a/src/iso19111/operation/parammappings.cpp b/src/iso19111/operation/parammappings.cpp index 03200468..15ecb24f 100644 --- a/src/iso19111/operation/parammappings.cpp +++ b/src/iso19111/operation/parammappings.cpp @@ -642,6 +642,10 @@ static const MethodMapping projectionMethodMappings[] = { {EPSG_NAME_METHOD_CASSINI_SOLDNER, EPSG_CODE_METHOD_CASSINI_SOLDNER, "Cassini_Soldner", "cass", nullptr, paramsNatOrigin}, + {EPSG_NAME_METHOD_HYPERBOLIC_CASSINI_SOLDNER, + EPSG_CODE_METHOD_HYPERBOLIC_CASSINI_SOLDNER, nullptr, "cass", "hyperbolic", + paramsNatOrigin}, + {PROJ_WKT2_NAME_METHOD_EQUIDISTANT_CONIC, 0, "Equidistant_Conic", "eqdc", nullptr, paramsEQDC}, diff --git a/src/proj_constants.h b/src/proj_constants.h index 0976dc2a..baea05da 100644 --- a/src/proj_constants.h +++ b/src/proj_constants.h @@ -88,6 +88,9 @@ #define EPSG_NAME_METHOD_CASSINI_SOLDNER "Cassini-Soldner" #define EPSG_CODE_METHOD_CASSINI_SOLDNER 9806 +#define EPSG_NAME_METHOD_HYPERBOLIC_CASSINI_SOLDNER "Hyperbolic Cassini-Soldner" +#define EPSG_CODE_METHOD_HYPERBOLIC_CASSINI_SOLDNER 9833 + #define PROJ_WKT2_NAME_METHOD_EQUIDISTANT_CONIC "Equidistant Conic" #define PROJ_WKT2_NAME_METHOD_ECKERT_I "Eckert I" diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp index 6ddbd9f4..2830ea94 100644 --- a/test/unit/test_operation.cpp +++ b/test/unit/test_operation.cpp @@ -4223,6 +4223,18 @@ TEST(operation, adams_ws2_export_failure) { // --------------------------------------------------------------------------- +TEST(operation, hyperbolic_cassini_soldner) { + auto dbContext = DatabaseContext::create(); + auto crs = + AuthorityFactory::create(dbContext, "EPSG")->createProjectedCRS("3139"); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=cass +hyperbolic +lat_0=-16.25 +lon_0=179.333333333333 " + "+x_0=251727.9155424 +y_0=334519.953768 " + "+a=6378306.3696 +b=6356571.996 +units=link +no_defs +type=crs"); +} + +// --------------------------------------------------------------------------- + TEST(operation, PROJ_based) { auto conv = SingleOperation::createPROJBased(PropertyMap(), "+proj=merc", nullptr, nullptr); -- cgit v1.2.3