diff options
Diffstat (limited to 'src/iso19111/metadata.cpp')
| -rw-r--r-- | src/iso19111/metadata.cpp | 26 |
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())); + } } } |
