aboutsummaryrefslogtreecommitdiff
path: root/src/iso19111/factory.cpp
diff options
context:
space:
mode:
authordalia2 <57895979+dalia2@users.noreply.github.com>2019-12-12 14:25:40 +0000
committerGitHub <noreply@github.com>2019-12-12 14:25:40 +0000
commit1efec9523d21e7948db2d278635c8881409b9cf8 (patch)
tree2ac7fde4db93e75c109d65f2c596275a02a3cc06 /src/iso19111/factory.cpp
parente9d6a0b2993c903c8932b68d2812dc02adb26014 (diff)
parent5b4e60f4f9ec353f79fba01790a3b945c50cab8e (diff)
downloadPROJ-1efec9523d21e7948db2d278635c8881409b9cf8.tar.gz
PROJ-1efec9523d21e7948db2d278635c8881409b9cf8.zip
Merge branch 'master' into update-grid-alternatives.sql-for-Icealnd
Diffstat (limited to 'src/iso19111/factory.cpp')
-rw-r--r--src/iso19111/factory.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/iso19111/factory.cpp b/src/iso19111/factory.cpp
index 57850303..f0ad157e 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;
}
@@ -5601,6 +5609,7 @@ std::list<crs::GeodeticCRSNNPtr> AuthorityFactory::createGeodeticCRSFromDatum(
sql += " AND type = ?";
params.emplace_back(geodetic_crs_type);
}
+ sql += " ORDER BY auth_name, code";
auto sqlRes = d->run(sql, params);
std::list<crs::GeodeticCRSNNPtr> res;
for (const auto &row : sqlRes) {