È valido avere un elemento properties in un featureCollection geoJSON?


16

È valido avere un elemento properties con un featureCollection-element come genitore?

Questo è valido secondo geojson.org:

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

Ma non riesco a trovare se è valido né se non è valido avere questo:

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

Secondo la risposta sottostante non è valido metterlo lì, ma i programmi / script non sapranno che è lì.

Quindi, vorrei riformulare la domanda: (dove) È possibile mettere alcune informazioni descrittive sulla proprietà come totale ??

Risposte:


10

2.3. Oggetti collezione di caratteristiche

Un oggetto GeoJSON con il tipo "FeatureCollection" è un oggetto raccolta di caratteristiche.

Un oggetto di tipo "FeatureCollection" deve avere un membro con il nome "features". Il valore corrispondente a "caratteristiche" è un array. Ogni elemento dell'array è un oggetto caratteristica come definito sopra.

Penso che questo implichi chiaramente che se l'oggetto ha membri aggiuntivi che non lo rendono non valido.

Gli oggetti Ecmascript sono molto aperti.

Quindi sì, puoi avere un elemento properties al livello più alto di una raccolta di funzionalità, ma non aspettarti che alcuno strumento lo sappia lì, o lo copi, ...


1
OK Abbastanza giusto :) Ma qual è il posto dove archiviare le informazioni sulla raccolta stessa invece della funzione?
febbraio

Non ce n'è uno nelle specifiche.
Calvin,

Poiché FeatureCollection è un oggetto di prima classe, tutte le proprietà riguarderanno la raccolta, non alcuna funzione. Aggiungi quanti ne desideri o aggiungi una proprietà "metadati" il cui valore è una mappa.
Giuliano,

Un altro modo di pensarci è che devi sottoclassare FeatureCollection per le tue esigenze. Questa è davvero una metafora piuttosto che un costrutto di programmazione qui perché ECMAscript non pensa agli oggetti in quel modo.
Giuliano,

1
Le specifiche consentono ai membri stranieri nella sezione 6.1. tools.ietf.org/html/draft-ietf-geojson-03#section-6 . Quindi è legale, ma il comportamento dipenderà dall'applicazione.
intotecho,

9

La risposta breve è no - non è valido avere un propertieselemento su un FeatureCollectionoggetto:

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

I membri "geometria" e "proprietà" di GeoJSON definiscono un oggetto Feature. Gli oggetti FeatureCollection e Geometry, rispettivamente, NON DEVONO contenere un membro "geometria" o "proprietà".


Dalla mia lettura, la formulazione di questo mandato indica che non puoi nominare un membro di un FeatureCollection "properties" come fa l'OP, ma non ti preclude di chiamarlo come altro"metadata" o "description". Ho usato diversi membri di alto livello nelle mappe web che si affidano a geojson. Buon aggiornamento, @Niel.
nronnei,

1

Anch'io penso che un 'livello' di alto livello sarebbe utile, uno a livello di raccolta di funzionalità.

Ma il lavoro che ho fatto è stato quello di creare una funzione aggiuntiva per la raccolta di funzionalità, popolare le proprietà come desiderato e impostare l'oggetto della geometria su NULL. Dalla mia lettura delle specifiche, questo sembra permesso e rimane all'interno dello standard.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.