diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2019-08-08 20:04:20 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2019-08-09 13:22:25 +0200 |
| commit | 89f2cc7ec4178a369e73e9cd115a2552a55d870a (patch) | |
| tree | b5a96d4248a0bb866477ed3c865fdb5648dc0a06 /src/iso19111/datum.cpp | |
| parent | ec49c9cd0aa9de24623920b8de226daf05a0e90f (diff) | |
| download | PROJ-89f2cc7ec4178a369e73e9cd115a2552a55d870a.tar.gz PROJ-89f2cc7ec4178a369e73e9cd115a2552a55d870a.zip | |
PROJJSON export: use more compact form
Diffstat (limited to 'src/iso19111/datum.cpp')
| -rw-r--r-- | src/iso19111/datum.cpp | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/src/iso19111/datum.cpp b/src/iso19111/datum.cpp index 89ecc755..2944da1e 100644 --- a/src/iso19111/datum.cpp +++ b/src/iso19111/datum.cpp @@ -376,12 +376,13 @@ void PrimeMeridian::_exportToJSON( const auto &l_long = longitude(); writer.AddObjKey("longitude"); - { + const auto &unit = l_long.unit(); + if (unit == common::UnitOfMeasure::DEGREE) { + writer.Add(l_long.value(), 15); + } else { auto longitudeContext(formatter->MakeObjectContext(nullptr, false)); writer.AddObjKey("value"); writer.Add(l_long.value(), 15); - - const auto &unit = l_long.unit(); writer.AddObjKey("unit"); unit._exportToJSON(formatter); } @@ -834,7 +835,9 @@ void Ellipsoid::_exportToJSON( const auto &semiMajor = semiMajorAxis(); const auto &semiMajorUnit = semiMajor.unit(); writer.AddObjKey(isSphere() ? "radius" : "semi_major_axis"); - { + if (semiMajorUnit == common::UnitOfMeasure::METRE) { + writer.Add(semiMajor.value(), 15); + } else { auto objContext(formatter->MakeObjectContext(nullptr, false)); writer.AddObjKey("value"); writer.Add(semiMajor.value(), 15); @@ -850,13 +853,17 @@ void Ellipsoid::_exportToJSON( writer.Add(l_inverseFlattening->getSIValue(), 15); } else { 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); + } else { auto objContext(formatter->MakeObjectContext(nullptr, false)); writer.AddObjKey("value"); - writer.Add(semiMinorAxis()->value(), 15); + writer.Add(l_semiMinorAxis->value(), 15); writer.AddObjKey("unit"); - semiMinorAxis()->unit()._exportToJSON(formatter); + semiMinorAxisUnit._exportToJSON(formatter); } } } @@ -1272,10 +1279,15 @@ void GeodeticReferenceFrame::_exportToJSON( Datum::getPrivate()->exportAnchorDefinition(formatter); writer.AddObjKey("ellipsoid"); + formatter->setOmitTypeInImmediateChild(); ellipsoid()->_exportToJSON(formatter); - writer.AddObjKey("prime_meridian"); - primeMeridian()->_exportToJSON(formatter); + const auto &l_primeMeridian(primeMeridian()); + if (l_primeMeridian->nameStr() != "Greenwich") { + writer.AddObjKey("prime_meridian"); + formatter->setOmitTypeInImmediateChild(); + primeMeridian()->_exportToJSON(formatter); + } ObjectUsage::baseExportToJSON(formatter); } |
