在geoJSON featureCollection中具有properties元素是否有效?


16

拥有一个具有featureCollection-element作为父元素的properties元素是否有效?

根据geojson.org,这是有效的:

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

但是我找不到它是否有效,或者是否无效:

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

根据下面的答案,将其放置在其中并不是无效的,但是程序/脚本不会知道它在此处。

因此,让我重新表述一下这个问题:(在哪里)是否可以将有关该财产的一些描述性信息作为一个整体?

Answers:


10

2.3。要素集合对象

类型为“ FeatureCollection”的GeoJSON对象是要素集合对象。

类型为“ FeatureCollection”的对象必须具有名称为“ features”的成员。对应于“功能”的值是一个数组。数组中的每个元素都是上面定义的功能对象。

我认为这显然意味着,如果对象具有其他成员,则不会使其无效。

Ecmascript对象非常开放。

所以是的,您可以在要素集合的顶层具有一个properties元素,但不要期望任何工具在那里知道它或复制它,...


1
好吧,足够公平:)但是,在哪里存储有关集合本身而不是功能的信息呢?
stUrb 2012年

规格中没有一个。
加尔文,

因为FeatureCollection是第一类对象,所以任何属性都是关于集合的,而不是任何要素。可以根据需要添加任意多个,或添加一个值为地图的“元数据”属性。
朱利安

考虑它的另一种方法是您需要为FeatureCollection子类化。尽管这实际上是一个隐喻,而不是一个编程构造,因为ECMAscript并不是完全以这种方式来考虑对象。
朱利安

1
该规范确实允许第6.1节中的外国会员。tools.ietf.org/html/draft-ietf-geojson-03#section-6。因此这是合法的,但是行为将取决于应用程序。
intotecho

9

简短的答案是“否”- propertiesFeatureCollection对象上具有元素是无效的:

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

GeoJSON的“几何”和“属性”成员定义了一个Feature对象。FeatureCollection和Geometry对象分别不得包含“ geometry”或“ properties”成员。


根据我的阅读,此措辞要求您不能 "properties"像OP那样命名FeatureCollection的成员,但并不妨碍您将其称为诸如"metadata""description"。我在依赖geojson的网络地图中使用了几个顶级成员。好的更新,@ Niel。
nronnei

1

我也认为顶级“属性”将是有用的,在功能集合级别。

但是我要做的工作是为要素集合添加一个附加功能,根据需要填充属性,然后将几何对象设置为NULL。从我对规范的阅读来看,这似乎是允许的,并且符合标准。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.