aboutsummaryrefslogtreecommitdiff
path: root/src/iso19111/factory.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-12-09 09:08:13 +0100
committerEven Rouault <even.rouault@spatialys.com>2019-12-09 09:08:13 +0100
commit5cc1095970127f8df5c4f636b1ce782829510fa0 (patch)
tree3635584127530c730223f1b1aec2ee91be9aae73 /src/iso19111/factory.cpp
parentb6f0153e5aa27dc11d2c879dc4a62a0f35a122cb (diff)
downloadPROJ-5cc1095970127f8df5c4f636b1ce782829510fa0.tar.gz
PROJ-5cc1095970127f8df5c4f636b1ce782829510fa0.zip
CRS identification: use case insensitive comparison for authority name (fixes #1779)
Diffstat (limited to 'src/iso19111/factory.cpp')
-rw-r--r--src/iso19111/factory.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/iso19111/factory.cpp b/src/iso19111/factory.cpp
index 57850303..0ef07337 100644
--- a/src/iso19111/factory.cpp
+++ b/src/iso19111/factory.cpp
@@ -1433,9 +1433,17 @@ AuthorityFactory::AuthorityFactory(const DatabaseContextNNPtr &context,
AuthorityFactoryNNPtr
AuthorityFactory::create(const DatabaseContextNNPtr &context,
const std::string &authorityName) {
-
- auto factory = AuthorityFactory::nn_make_shared<AuthorityFactory>(
- context, authorityName);
+ const auto getFactory = [&context, &authorityName]() {
+ for (const auto &knownName : {"EPSG", "ESRI", "PROJ"}) {
+ if (ci_equal(authorityName, knownName)) {
+ return AuthorityFactory::nn_make_shared<AuthorityFactory>(
+ context, knownName);
+ }
+ }
+ return AuthorityFactory::nn_make_shared<AuthorityFactory>(
+ context, authorityName);
+ };
+ auto factory = getFactory();
factory->d->setThis(factory);
return factory;
}