¿Es válido tener un elemento de propiedades en geoJSON featureCollection?

16

¿Es válido tener un elemento de propiedades con un elemento FeatureCollection-parent como padre?

Esto es válido según geojson.org válido:

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

Pero no puedo encontrar si es válido ni si no es válido tener esto:

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

De acuerdo con la respuesta debajo, no es válido ponerlo allí, pero los programas / scripts no sabrán que está allí.

Entonces, permítanme reformular la pregunta: (¿Dónde?) ¿Es posible poner información descriptiva sobre la propiedad como un total?

stUrb
fuente

Respuestas:

10

2.3. Objetos de colección de características

Un objeto GeoJSON con el tipo "FeatureCollection" es un objeto de colección de características.

Un objeto de tipo "FeatureCollection" debe tener un miembro con el nombre "características". El valor correspondiente a "características" es una matriz. Cada elemento de la matriz es un objeto de característica como se definió anteriormente.

Creo que esto implica claramente que si el objeto tiene miembros adicionales, eso no lo hace inválido.

Los objetos ecmascript son muy abiertos.

Entonces, sí, puede tener un elemento de propiedades en el nivel superior de una colección de características, pero no espere que ninguna herramienta sepa que está allí, o que lo copie, ...

Julian
fuente
1
OK Bastante justo :) Pero, ¿cuál es el lugar para almacenar información sobre la colección en lugar de la función?
stUrb
No hay uno en la especificación.
Calvin
Debido a que FeatureCollection es un objeto de primera clase, las propiedades serán sobre la colección, no sobre cualquier característica. Agregue tantos como desee o agregue una propiedad de "metadatos" cuyo valor sea un mapa.
Julian
Otra forma de pensarlo es que necesita subclasificar FeatureCollection para sus necesidades. Eso es realmente una metáfora en lugar de una construcción de programación aquí porque ECMAscript no piensa en los objetos de esa manera.
Juliano
1
La especificación permite Miembros extranjeros en la sección 6.1. tools.ietf.org/html/draft-ietf-geojson-03#section-6 . Por lo tanto, es legal, pero el comportamiento dependerá de la aplicación.
intotecho
9

La respuesta corta es no: no es válido tener un propertieselemento en un FeatureCollectionobjeto:

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

Los miembros de "geometría" y "propiedades" de GeoJSON definen un objeto Feature. Los objetos FeatureCollection y Geometry, respectivamente, NO DEBEN contener un miembro "geometry" o "properties".

Neil
fuente
Según mi lectura, la redacción de este mandato exige que no pueda nombrar a un miembro de una FeatureCollection "properties" como lo hace el OP, pero no le impide llamarlo de otra manera como "metadata"o "description". He utilizado varios miembros de nivel superior en mapas web que dependen de Geojson. Buena actualización, @Niel.
nronnei
1

También creo que sería útil una 'propiedades' de nivel superior, una en el nivel de colección de características.

Pero el trabajo que hice fue crear una característica adicional para la colección de características, llenar las propiedades como se desee y simplemente establecer el objeto de geometría en NULL. De mi lectura de la especificación, esto parece permitido y se mantiene dentro del estándar.

Pman
fuente