From 30205fef7c4a73342a384eca40893a52ea9d6794 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 10 Jan 2020 19:04:32 +0100 Subject: CompoundCRS::identify(): avoid exception when horiz/vertical part is a BoundCRS The exception only affects C++ users. It was caught by the C layer. --- src/iso19111/factory.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/iso19111/factory.cpp b/src/iso19111/factory.cpp index 33fce593..0c7692ad 100644 --- a/src/iso19111/factory.cpp +++ b/src/iso19111/factory.cpp @@ -5803,7 +5803,9 @@ static std::string buildSqlLookForAuthNameCode( std::set authorities; for (const auto &crs : list) { - const auto &ids = crs.first->identifiers(); + auto boundCRS = dynamic_cast(crs.first.get()); + const auto &ids = boundCRS ? boundCRS->baseCRS()->identifiers() + : crs.first->identifiers(); if (!ids.empty()) { authorities.insert(*(ids[0]->codeSpace())); } @@ -5822,7 +5824,9 @@ static std::string buildSqlLookForAuthNameCode( params.emplace_back(auth_name); bool firstGeodCRSForAuth = true; for (const auto &crs : list) { - const auto &ids = crs.first->identifiers(); + auto boundCRS = dynamic_cast(crs.first.get()); + const auto &ids = boundCRS ? boundCRS->baseCRS()->identifiers() + : crs.first->identifiers(); if (!ids.empty() && *(ids[0]->codeSpace()) == auth_name) { if (!firstGeodCRSForAuth) { sql += ','; -- cgit v1.2.3