diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2020-10-22 23:20:25 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2020-10-23 00:03:40 +0200 |
| commit | 4969076c15f73371401ee65f2e4617439239cd8b (patch) | |
| tree | c21bb3da042c1f7fdf5434021171fd56894b2bba /src | |
| parent | 9a112931555aa324ed9caa3c261a4fd11551d615 (diff) | |
| download | PROJ-4969076c15f73371401ee65f2e4617439239cd8b.tar.gz PROJ-4969076c15f73371401ee65f2e4617439239cd8b.zip | |
Database: import ESRI VERTCS that uses a (geodetic) datum to express ellipsoidal height
Diffstat (limited to 'src')
| -rw-r--r-- | src/iso19111/factory.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/iso19111/factory.cpp b/src/iso19111/factory.cpp index ef5c6e02..211eb586 100644 --- a/src/iso19111/factory.cpp +++ b/src/iso19111/factory.cpp @@ -2100,6 +2100,9 @@ AuthorityFactory::createVerticalDatum(const std::string &code) const { if (!publication_date.empty()) { props.set("PUBLICATION_DATE", publication_date); } + if (d->authority() == "ESRI" && starts_with(code, "from_geogdatum_")) { + props.set("VERT_DATUM_TYPE", "2002"); + } auto anchor = util::optional<std::string>(); if (frame_reference_epoch.empty()) { return datum::VerticalReferenceFrame::create(props, anchor); @@ -5719,9 +5722,12 @@ AuthorityFactory::createObjectsFromNameEx( "SELECT table_name, auth_name, code, name, deprecated, is_alias " "FROM ("); - const auto getTableAndTypeConstraints = [&allowedObjectTypes]() { + const auto getTableAndTypeConstraints = [&allowedObjectTypes, + &searchedName]() { typedef std::pair<std::string, std::string> TableType; std::list<TableType> res; + // Hide ESRI D_ vertical datums + const bool startsWithDUnderscore = starts_with(searchedName, "D_"); if (allowedObjectTypes.empty()) { for (const auto &tableName : {"prime_meridian", "ellipsoid", "geodetic_datum", @@ -5729,7 +5735,10 @@ AuthorityFactory::createObjectsFromNameEx( "vertical_crs", "compound_crs", "conversion", "helmert_transformation", "grid_transformation", "other_transformation", "concatenated_operation"}) { - res.emplace_back(TableType(tableName, std::string())); + if (!(startsWithDUnderscore && + strcmp(tableName, "vertical_datum") == 0)) { + res.emplace_back(TableType(tableName, std::string())); + } } } else { for (const auto type : allowedObjectTypes) { @@ -5744,8 +5753,10 @@ AuthorityFactory::createObjectsFromNameEx( case ObjectType::DATUM: res.emplace_back( TableType("geodetic_datum", std::string())); - res.emplace_back( - TableType("vertical_datum", std::string())); + if (!startsWithDUnderscore) { + res.emplace_back( + TableType("vertical_datum", std::string())); + } break; case ObjectType::GEODETIC_REFERENCE_FRAME: res.emplace_back( |
