aboutsummaryrefslogtreecommitdiff
path: root/src/iso19111/c_api.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-06-29 12:23:37 +0200
committerEven Rouault <even.rouault@spatialys.com>2019-06-30 11:14:46 +0200
commita9c3567cf5f69d08a869bf17a9e284e8c8142956 (patch)
treec7704fa27b47c2b79e19a23edc6594da02a464d9 /src/iso19111/c_api.cpp
parent7a131de134e40c73795c7d2c1834bee1e45b16a6 (diff)
downloadPROJ-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.cpp58
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