From 6d2af0904652baba69ec81261c914e9b68221dac Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 16 Jan 2019 17:17:54 +0100 Subject: PROJBasedOperation: write it as a conformant CONVERSION WKT, and make it parsed appropriately on the reading side --- src/iso19111/io.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/iso19111/io.cpp') diff --git a/src/iso19111/io.cpp b/src/iso19111/io.cpp index 13a8f236..5be02ffe 100644 --- a/src/iso19111/io.cpp +++ b/src/iso19111/io.cpp @@ -4252,8 +4252,20 @@ BaseObjectNNPtr WKTParser::Private::build(const WKTNodeNNPtr &node) { } if (ci_equal(name, WKTConstants::CONVERSION)) { - return util::nn_static_pointer_cast( - buildConversion(node, UnitOfMeasure::METRE, UnitOfMeasure::DEGREE)); + auto conv = + buildConversion(node, UnitOfMeasure::METRE, UnitOfMeasure::DEGREE); + + if (conv->nameStr() == "PROJ-based coordinate operation" && + starts_with(conv->method()->nameStr(), + "PROJ-based operation method: ")) { + auto projString = conv->method()->nameStr().substr( + strlen("PROJ-based operation method: ")); + return util::nn_static_pointer_cast( + PROJBasedOperation::create(PropertyMap(), projString, nullptr, + nullptr, {})); + } + + return util::nn_static_pointer_cast(conv); } if (ci_equal(name, WKTConstants::CONCATENATEDOPERATION)) { -- cgit v1.2.3