diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2020-04-23 19:15:22 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-23 19:15:22 +0200 |
| commit | b0e5448982b4e12db9a664ac96089a14375cb55d (patch) | |
| tree | 7875e6eb0d25185d23f06b02c56b9e827d0a6825 /src/iso19111/datum.cpp | |
| parent | f5f0efe5eb6b76cfe0498835da268c2492f3fe58 (diff) | |
| download | PROJ-b0e5448982b4e12db9a664ac96089a14375cb55d.tar.gz PROJ-b0e5448982b4e12db9a664ac96089a14375cb55d.zip | |
io.hpp: avoid dependency to proj_json_streaming_writer.hpp (fixes #2182) (#2183)
Diffstat (limited to 'src/iso19111/datum.cpp')
| -rw-r--r-- | src/iso19111/datum.cpp | 144 |
1 files changed, 73 insertions, 71 deletions
diff --git a/src/iso19111/datum.cpp b/src/iso19111/datum.cpp index 337b74a8..03abb0d7 100644 --- a/src/iso19111/datum.cpp +++ b/src/iso19111/datum.cpp @@ -46,6 +46,8 @@ #include "proj_api.h" // clang-format on +#include "proj_json_streaming_writer.hpp" + #include <cmath> #include <cstdlib> #include <memory> @@ -113,9 +115,9 @@ void Datum::Private::exportAnchorDefinition(io::WKTFormatter *formatter) const { void Datum::Private::exportAnchorDefinition( io::JSONFormatter *formatter) const { if (anchorDefinition) { - auto &writer = formatter->writer(); - writer.AddObjKey("anchor"); - writer.Add(*anchorDefinition); + auto writer = formatter->writer(); + writer->AddObjKey("anchor"); + writer->Add(*anchorDefinition); } } @@ -381,25 +383,25 @@ void PrimeMeridian::_exportToWKT( void PrimeMeridian::_exportToJSON( io::JSONFormatter *formatter) const // throw(FormattingException) { - auto &writer = formatter->writer(); + auto writer = formatter->writer(); auto objectContext( formatter->MakeObjectContext("PrimeMeridian", !identifiers().empty())); - writer.AddObjKey("name"); + writer->AddObjKey("name"); std::string l_name = name()->description().has_value() ? nameStr() : "Greenwich"; - writer.Add(l_name); + writer->Add(l_name); const auto &l_long = longitude(); - writer.AddObjKey("longitude"); + writer->AddObjKey("longitude"); const auto &unit = l_long.unit(); if (unit == common::UnitOfMeasure::DEGREE) { - writer.Add(l_long.value(), 15); + writer->Add(l_long.value(), 15); } else { auto longitudeContext(formatter->MakeObjectContext(nullptr, false)); - writer.AddObjKey("value"); - writer.Add(l_long.value(), 15); - writer.AddObjKey("unit"); + writer->AddObjKey("value"); + writer->Add(l_long.value(), 15); + writer->AddObjKey("unit"); unit._exportToJSON(formatter); } @@ -836,49 +838,49 @@ void Ellipsoid::_exportToWKT( void Ellipsoid::_exportToJSON( io::JSONFormatter *formatter) const // throw(FormattingException) { - auto &writer = formatter->writer(); + auto writer = formatter->writer(); auto objectContext( formatter->MakeObjectContext("Ellipsoid", !identifiers().empty())); - writer.AddObjKey("name"); + writer->AddObjKey("name"); auto l_name = nameStr(); if (l_name.empty()) { - writer.Add("unnamed"); + writer->Add("unnamed"); } else { - writer.Add(l_name); + writer->Add(l_name); } const auto &semiMajor = semiMajorAxis(); const auto &semiMajorUnit = semiMajor.unit(); - writer.AddObjKey(isSphere() ? "radius" : "semi_major_axis"); + writer->AddObjKey(isSphere() ? "radius" : "semi_major_axis"); if (semiMajorUnit == common::UnitOfMeasure::METRE) { - writer.Add(semiMajor.value(), 15); + writer->Add(semiMajor.value(), 15); } else { auto objContext(formatter->MakeObjectContext(nullptr, false)); - writer.AddObjKey("value"); - writer.Add(semiMajor.value(), 15); + writer->AddObjKey("value"); + writer->Add(semiMajor.value(), 15); - writer.AddObjKey("unit"); + writer->AddObjKey("unit"); semiMajorUnit._exportToJSON(formatter); } if (!isSphere()) { const auto &l_inverseFlattening = inverseFlattening(); if (l_inverseFlattening.has_value()) { - writer.AddObjKey("inverse_flattening"); - writer.Add(l_inverseFlattening->getSIValue(), 15); + writer->AddObjKey("inverse_flattening"); + writer->Add(l_inverseFlattening->getSIValue(), 15); } else { - writer.AddObjKey("semi_minor_axis"); + writer->AddObjKey("semi_minor_axis"); const auto &l_semiMinorAxis(semiMinorAxis()); const auto &semiMinorAxisUnit(l_semiMinorAxis->unit()); if (semiMinorAxisUnit == common::UnitOfMeasure::METRE) { - writer.Add(l_semiMinorAxis->value(), 15); + writer->Add(l_semiMinorAxis->value(), 15); } else { auto objContext(formatter->MakeObjectContext(nullptr, false)); - writer.AddObjKey("value"); - writer.Add(l_semiMinorAxis->value(), 15); + writer->AddObjKey("value"); + writer->Add(l_semiMinorAxis->value(), 15); - writer.AddObjKey("unit"); + writer->AddObjKey("unit"); semiMinorAxisUnit._exportToJSON(formatter); } } @@ -1312,36 +1314,36 @@ void GeodeticReferenceFrame::_exportToJSON( auto objectContext(formatter->MakeObjectContext( dynamicGRF ? "DynamicGeodeticReferenceFrame" : "GeodeticReferenceFrame", !identifiers().empty())); - auto &writer = formatter->writer(); + auto writer = formatter->writer(); - writer.AddObjKey("name"); + writer->AddObjKey("name"); auto l_name = nameStr(); if (l_name.empty()) { - writer.Add("unnamed"); + writer->Add("unnamed"); } else { - writer.Add(l_name); + writer->Add(l_name); } Datum::getPrivate()->exportAnchorDefinition(formatter); if (dynamicGRF) { - writer.AddObjKey("frame_reference_epoch"); - writer.Add(dynamicGRF->frameReferenceEpoch().value()); + writer->AddObjKey("frame_reference_epoch"); + writer->Add(dynamicGRF->frameReferenceEpoch().value()); const auto &deformationModel = dynamicGRF->deformationModelName(); if (deformationModel.has_value()) { - writer.AddObjKey("deformation_model"); - writer.Add(*deformationModel); + writer->AddObjKey("deformation_model"); + writer->Add(*deformationModel); } } - writer.AddObjKey("ellipsoid"); + writer->AddObjKey("ellipsoid"); formatter->setOmitTypeInImmediateChild(); ellipsoid()->_exportToJSON(formatter); const auto &l_primeMeridian(primeMeridian()); if (l_primeMeridian->nameStr() != "Greenwich") { - writer.AddObjKey("prime_meridian"); + writer->AddObjKey("prime_meridian"); formatter->setOmitTypeInImmediateChild(); primeMeridian()->_exportToJSON(formatter); } @@ -1668,28 +1670,28 @@ void DatumEnsemble::_exportToJSON( { auto objectContext( formatter->MakeObjectContext("DatumEnsemble", !identifiers().empty())); - auto &writer = formatter->writer(); + auto writer = formatter->writer(); - writer.AddObjKey("name"); + writer->AddObjKey("name"); auto l_name = nameStr(); if (l_name.empty()) { - writer.Add("unnamed"); + writer->Add("unnamed"); } else { - writer.Add(l_name); + writer->Add(l_name); } auto l_datums = datums(); - writer.AddObjKey("members"); + writer->AddObjKey("members"); { - auto membersContext(writer.MakeArrayContext(false)); + auto membersContext(writer->MakeArrayContext(false)); for (const auto &datum : l_datums) { - auto memberContext(writer.MakeObjectContext()); - writer.AddObjKey("name"); + auto memberContext(writer->MakeObjectContext()); + writer->AddObjKey("name"); const auto &l_datum_name = datum->nameStr(); if (!l_datum_name.empty()) { - writer.Add(l_datum_name); + writer->Add(l_datum_name); } else { - writer.Add("unnamed"); + writer->Add("unnamed"); } datum->formatID(formatter); } @@ -1698,13 +1700,13 @@ void DatumEnsemble::_exportToJSON( auto grfFirst = std::dynamic_pointer_cast<GeodeticReferenceFrame>( l_datums[0].as_nullable()); if (grfFirst) { - writer.AddObjKey("ellipsoid"); + writer->AddObjKey("ellipsoid"); formatter->setOmitTypeInImmediateChild(); grfFirst->ellipsoid()->_exportToJSON(formatter); } - writer.AddObjKey("accuracy"); - writer.Add(positionalAccuracy()->value()); + writer->AddObjKey("accuracy"); + writer->Add(positionalAccuracy()->value()); formatID(formatter); } @@ -1886,26 +1888,26 @@ void VerticalReferenceFrame::_exportToJSON( auto objectContext(formatter->MakeObjectContext( dynamicGRF ? "DynamicVerticalReferenceFrame" : "VerticalReferenceFrame", !identifiers().empty())); - auto &writer = formatter->writer(); + auto writer = formatter->writer(); - writer.AddObjKey("name"); + writer->AddObjKey("name"); auto l_name = nameStr(); if (l_name.empty()) { - writer.Add("unnamed"); + writer->Add("unnamed"); } else { - writer.Add(l_name); + writer->Add(l_name); } Datum::getPrivate()->exportAnchorDefinition(formatter); if (dynamicGRF) { - writer.AddObjKey("frame_reference_epoch"); - writer.Add(dynamicGRF->frameReferenceEpoch().value()); + writer->AddObjKey("frame_reference_epoch"); + writer->Add(dynamicGRF->frameReferenceEpoch().value()); const auto &deformationModel = dynamicGRF->deformationModelName(); if (deformationModel.has_value()) { - writer.AddObjKey("deformation_model"); - writer.Add(*deformationModel); + writer->AddObjKey("deformation_model"); + writer->Add(*deformationModel); } } @@ -2185,18 +2187,18 @@ void TemporalDatum::_exportToJSON( { auto objectContext( formatter->MakeObjectContext("TemporalDatum", !identifiers().empty())); - auto &writer = formatter->writer(); + auto writer = formatter->writer(); - writer.AddObjKey("name"); - writer.Add(nameStr()); + writer->AddObjKey("name"); + writer->Add(nameStr()); - writer.AddObjKey("calendar"); - writer.Add(calendar()); + writer->AddObjKey("calendar"); + writer->Add(calendar()); const auto &timeOriginStr = temporalOrigin().toString(); if (!timeOriginStr.empty()) { - writer.AddObjKey("time_origin"); - writer.Add(timeOriginStr); + writer->AddObjKey("time_origin"); + writer->Add(timeOriginStr); } ObjectUsage::baseExportToJSON(formatter); @@ -2285,10 +2287,10 @@ void EngineeringDatum::_exportToJSON( { auto objectContext(formatter->MakeObjectContext("EngineeringDatum", !identifiers().empty())); - auto &writer = formatter->writer(); + auto writer = formatter->writer(); - writer.AddObjKey("name"); - writer.Add(nameStr()); + writer->AddObjKey("name"); + writer->Add(nameStr()); Datum::getPrivate()->exportAnchorDefinition(formatter); @@ -2371,10 +2373,10 @@ void ParametricDatum::_exportToJSON( { auto objectContext(formatter->MakeObjectContext("ParametricDatum", !identifiers().empty())); - auto &writer = formatter->writer(); + auto writer = formatter->writer(); - writer.AddObjKey("name"); - writer.Add(nameStr()); + writer->AddObjKey("name"); + writer->Add(nameStr()); Datum::getPrivate()->exportAnchorDefinition(formatter); |
