diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2019-06-29 12:23:37 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2019-06-30 11:14:46 +0200 |
| commit | a9c3567cf5f69d08a869bf17a9e284e8c8142956 (patch) | |
| tree | c7704fa27b47c2b79e19a23edc6594da02a464d9 /src/iso19111/c_api.cpp | |
| parent | 7a131de134e40c73795c7d2c1834bee1e45b16a6 (diff) | |
| download | PROJ-a9c3567cf5f69d08a869bf17a9e284e8c8142956.tar.gz PROJ-a9c3567cf5f69d08a869bf17a9e284e8c8142956.zip | |
Database: import scope/remarks for coordinate operation and add C API
- Import scope and remarks for coordinate operations of the EPSG dataset.
Database size goes from 5.2 MB to 5.55 MB
- Add proj_get_scope() and proj_get_remarks()
Diffstat (limited to 'src/iso19111/c_api.cpp')
| -rw-r--r-- | src/iso19111/c_api.cpp | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/src/iso19111/c_api.cpp b/src/iso19111/c_api.cpp index 1e3a331c..bc1d0bd8 100644 --- a/src/iso19111/c_api.cpp +++ b/src/iso19111/c_api.cpp @@ -1085,13 +1085,32 @@ const char *proj_get_name(const PJ *obj) { if (!desc.has_value()) { return nullptr; } - // The object will still be alived after the function call. + // The object will still be alive after the function call. // cppcheck-suppress stlcstr return desc->c_str(); } // --------------------------------------------------------------------------- +/** \brief Get the remarks of an object. + * + * The lifetime of the returned string is the same as the input obj parameter. + * + * @param obj Object (must not be NULL) + * @return a string, or NULL in case of error. + */ +const char *proj_get_remarks(const PJ *obj) { + assert(obj); + if (!obj->iso_obj) { + return nullptr; + } + // The object will still be alive after the function call. + // cppcheck-suppress stlcstr + return obj->iso_obj->remarks().c_str(); +} + +// --------------------------------------------------------------------------- + /** \brief Get the authority name / codespace of an identifier of an object. * * The lifetime of the returned string is the same as the input obj parameter. @@ -1113,7 +1132,7 @@ const char *proj_get_id_auth_name(const PJ *obj, int index) { if (!codeSpace.has_value()) { return nullptr; } - // The object will still be alived after the function call. + // The object will still be alive after the function call. // cppcheck-suppress stlcstr return codeSpace->c_str(); } @@ -1295,8 +1314,43 @@ const char *proj_as_proj_string(PJ_CONTEXT *ctx, const PJ *obj, // --------------------------------------------------------------------------- +/** \brief Get the scope of an object. + * + * In case of multiple usages, this will be the one of first usage. + * + * The lifetime of the returned string is the same as the input obj parameter. + * + * @param obj Object (must not be NULL) + * @return a string, or NULL in case of error or missing scope. + */ +const char *proj_get_scope(const PJ *obj) { + assert(obj); + if (!obj->iso_obj) { + return nullptr; + } + auto objectUsage = dynamic_cast<const ObjectUsage *>(obj->iso_obj.get()); + if (!objectUsage) { + return nullptr; + } + const auto &domains = objectUsage->domains(); + if (domains.empty()) { + return nullptr; + } + const auto &scope = domains[0]->scope(); + if (!scope.has_value()) { + return nullptr; + } + // The object will still be alive after the function call. + // cppcheck-suppress stlcstr + return scope->c_str(); +} + +// --------------------------------------------------------------------------- + /** \brief Return the area of use of an object. * + * In case of multiple usages, this will be the one of first usage. + * * @param ctx PROJ context, or NULL for default context * @param obj Object (must not be NULL) * @param out_west_lon_degree Pointer to a double to receive the west longitude |
