aboutsummaryrefslogtreecommitdiff
path: root/src/iso19111/metadata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/iso19111/metadata.cpp')
-rw-r--r--src/iso19111/metadata.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/iso19111/metadata.cpp b/src/iso19111/metadata.cpp
index e8ce37c6..fc1b103f 100644
--- a/src/iso19111/metadata.cpp
+++ b/src/iso19111/metadata.cpp
@@ -41,6 +41,7 @@
#include "proj_json_streaming_writer.hpp"
#include <algorithm>
+#include <limits>
#include <memory>
#include <string>
#include <vector>
@@ -1114,6 +1115,31 @@ void Identifier::_exportToJSON(JSONFormatter *formatter) const {
} catch (const std::exception &) {
writer->Add(l_code);
}
+
+ if (version().has_value()) {
+ const auto l_version = *(version());
+ writer->AddObjKey("version");
+ try {
+ const double dblVersion = c_locale_stod(l_version);
+ if (dblVersion >= std::numeric_limits<int>::min() &&
+ dblVersion <= std::numeric_limits<int>::max() &&
+ static_cast<int>(dblVersion) == dblVersion) {
+ writer->Add(static_cast<int>(dblVersion));
+ } else {
+ writer->Add(dblVersion);
+ }
+ } catch (const std::exception &) {
+ writer->Add(l_version);
+ }
+ }
+ if (authority().has_value() && *(authority()->title()) != l_codeSpace) {
+ writer->AddObjKey("authority_citation");
+ writer->Add(*(authority()->title()));
+ }
+ if (uri().has_value()) {
+ writer->AddObjKey("uri");
+ writer->Add(*(uri()));
+ }
}
}