From afb37da0535186c6909d4410efc0a20c4a88c8c9 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Wed, 21 Nov 2018 21:49:52 +0100 Subject: createFromUserInput("authname:code"): make it case insensitive regarding authname --- src/io.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'src/io.cpp') diff --git a/src/io.cpp b/src/io.cpp index 87caddd0..8a58816f 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -4093,9 +4093,23 @@ BaseObjectNNPtr createFromUserInput(const std::string &text, if (!dbContext) { throw ParsingException("no database context specified"); } - auto factory = - AuthorityFactory::create(NN_NO_CHECK(dbContext), tokens[0]); - return factory->createCoordinateReferenceSystem(tokens[1]); + DatabaseContextNNPtr dbContextNNPtr(NN_NO_CHECK(dbContext)); + const auto &authName = tokens[0]; + const auto &code = tokens[1]; + auto factory = AuthorityFactory::create(dbContextNNPtr, authName); + try { + return factory->createCoordinateReferenceSystem(code); + } catch (...) { + const auto authorities = dbContextNNPtr->getAuthorities(); + for (const auto &authCandidate : authorities) { + if (ci_equal(authCandidate, authName)) { + return AuthorityFactory::create(dbContextNNPtr, + authCandidate) + ->createCoordinateReferenceSystem(code); + } + } + throw; + } } // urn:ogc:def:crs:EPSG::4326 -- cgit v1.2.3