Ist es gültig, ein properties-Element in einer geoJSON-FeatureCollection zu haben?

15

Ist es gültig, ein properties-Element mit einem featureCollection-Element als übergeordnetes Element zu haben?

Dies ist laut geojson.org gültig:

{ "type": "FeatureCollection",
  "features": [
              { "type": "Feature",
                "geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
                "properties": {"prop0": "value0"}
              }
              ]
}

Aber ich kann nicht feststellen, ob es gültig oder ungültig ist:

{ "type": "FeatureCollection",
  "properties" : { "description" : "This is the geometry for..." }
  "features": [
              { "type": "Feature",
                "geometry": {"type": "Point", "coordinates": [102.0, 0.5]},
                "properties": {"prop0": "value0"}
              }
              ]
}

Laut der Antwort darunter ist es nicht ungültig, es dort abzulegen, aber Programme / Skripte wissen es dort nicht.

Lassen Sie mich also die Frage umformulieren: (Wo) Ist es möglich, einige beschreibende Informationen über die Immobilie insgesamt anzugeben?

stUrb
quelle

Antworten:

10

2.3. Featuresammlungsobjekte

Ein GeoJSON-Objekt vom Typ "FeatureCollection" ist ein Feature-Collection-Objekt.

Ein Objekt vom Typ "FeatureCollection" muss ein Element mit dem Namen "features" haben. Der Wert, der "features" entspricht, ist ein Array. Jedes Element im Array ist ein Feature-Objekt wie oben definiert.

Ich denke, dies impliziert eindeutig, dass das Objekt nicht ungültig wird, wenn es zusätzliche Mitglieder hat.

Ecmascript-Objekte sind sehr offen.

Ja, Sie können ein Eigenschaftselement auf der obersten Ebene einer Featureauflistung haben, aber erwarten Sie nicht, dass Tools es kennen oder kopieren.

julianisch
quelle
1
OK Fair genug :) Aber wo können Informationen über die Sammlung selbst anstatt über die Funktion gespeichert werden?
stUrb
Es gibt keinen in der Spezifikation.
Calvin
Da FeatureCollection ein erstklassiges Objekt ist, beziehen sich alle Eigenschaften auf die Auflistung und nicht auf ein Feature. Fügen Sie entweder so viele hinzu, wie Sie möchten, oder fügen Sie eine "Metadaten" -Eigenschaft hinzu, deren Wert eine Karte ist.
Julian
Eine andere Art, darüber nachzudenken, ist, dass Sie FeatureCollection für Ihre Anforderungen unterklassifizieren müssen. Das ist hier allerdings eher eine Metapher als ein Programmierkonstrukt, da ECMAscript Objekte nicht so sieht.
Julian
1
Die Spezifikation erlaubt ausländische Mitglieder in Abschnitt 6.1. tools.ietf.org/html/draft-ietf-geojson-03#section-6 . So ist es legal, aber das Verhalten wird anwendungsabhängig sein.
Intotecho
9

Die kurze Antwort lautet nein - es ist ungültig, ein propertiesElement auf einem FeatureCollectionObjekt zu haben:

https://tools.ietf.org/html/rfc7946#section-7.1

Die GeoJSON-Elemente "geometry" und "properties" definieren ein Feature-Objekt. FeatureCollection- bzw. Geometry-Objekte DÜRFEN KEINE Elemente "geometry" oder "properties" enthalten.

Neil
quelle
Meiner Lektüre nach besagt der Wortlaut in diesem Dokument, dass Sie kein Mitglied einer FeatureCollection"properties" wie das OP benennen können, dass Sie es jedoch nicht anders als "metadata"oder nennen dürfen "description". Ich habe mehrere Top-Level-Mitglieder in Webkarten verwendet, die auf Geojson basieren. Gutes Update, @Niel.
nronnei
1

Ich denke auch, dass eine oberste Ebene "Eigenschaften" nützlich wäre, eine auf der Ebene der Feature-Sammlung.

Die Aufgabe bestand darin, ein zusätzliches Feature für die Feature-Auflistung zu erstellen, die Eigenschaften wie gewünscht auszufüllen und das Geometrieobjekt einfach auf NULL zu setzen. Nach meiner Lektüre der Spezifikation scheint dies zulässig zu sein und bleibt innerhalb des Standards.

Pman
quelle