geoJSON 文件结构
geoJSON file structure
我是第一次使用 geoJSON。我正在使用它在我的 Leafletjs 地图上显示点和多边形。
我有以下内容:59 个地图点(大致)、5 个建筑工地(多边形)和 32 个建筑物(多边形),我需要在我的 geoJSON 文件中包含这些内容。
我不确定是否需要创建多个 JSON 文件,或者它们是否可以全部存在于一个文件中。如果可能的话,我需要将它们分成 3 组:地图点、建筑和建筑物在单个 JSON 文件中。
我在文档 (geojson.org) 上注意到有一个全局类型,他们使用 "FeatureCollection"。这可以称为其他东西,以便我可以组成我的三个小组吗?我还注意到每个项目的功能集合和功能类型。这些也可以命名吗?
不,你不能为 "FeatureCollection" 或 "Feature." 使用其他名称 GeoJSON 中最接近组的是给每个组的特征一个共同的 "tag" .喜欢
"features": [
{"type": "Feature", "properties": {"group": "group1"}, ...},
{"type": "Feature", "properties": {"group": "group2"}, ...},
{"type": "Feature", "properties": {"group": "group3"}, ...}]
然后,使用 Leaflet,您可以将功能绑定到弹出窗口或根据它们 "group" tag/property 设置不同的样式。参见 http://leafletjs.com/reference.html#geojson。
正如@sgillies 所说,您不能将 GeoJSON 数据中的 type
值更改为与规范提供的值不同的值。否则 GeoJSON 解析器(如 Leaflet)将无法理解您的数据。
至于将数据存储到单个文件或多个文件中,由您决定。
现在请注意,无论何时调用 L.geoJson(myGeoJSONdata)
,Leaflet 都会创建一个图层组,无论 myGeoJSONdata
是 FeatureCollection
还是 Features
的数组。
因此,如果您想在 Leaflet 中获得 3 个不同的层组(例如,如果您希望能够分别切换 ON/OFF 每个组),最简单的方法是将数据分成 3 个不同的GeoJSON 对象(例如,它们可能在定义 3 个不同变量的同一个 JS 文件中,或者在 3 个不同的 JSON 文件中)并在每组数据上分别调用 L.geoJson
。
根据您的编程技能,您还有很多其他可能性,例如在 GeoJSON 数据中有一个 属性 指定每个特征属于哪个组(如@sgillies 提到的),然后 filtering 通过这个 属性 调用 L.geoJson
,等等
我是第一次使用 geoJSON。我正在使用它在我的 Leafletjs 地图上显示点和多边形。
我有以下内容:59 个地图点(大致)、5 个建筑工地(多边形)和 32 个建筑物(多边形),我需要在我的 geoJSON 文件中包含这些内容。
我不确定是否需要创建多个 JSON 文件,或者它们是否可以全部存在于一个文件中。如果可能的话,我需要将它们分成 3 组:地图点、建筑和建筑物在单个 JSON 文件中。
我在文档 (geojson.org) 上注意到有一个全局类型,他们使用 "FeatureCollection"。这可以称为其他东西,以便我可以组成我的三个小组吗?我还注意到每个项目的功能集合和功能类型。这些也可以命名吗?
不,你不能为 "FeatureCollection" 或 "Feature." 使用其他名称 GeoJSON 中最接近组的是给每个组的特征一个共同的 "tag" .喜欢
"features": [
{"type": "Feature", "properties": {"group": "group1"}, ...},
{"type": "Feature", "properties": {"group": "group2"}, ...},
{"type": "Feature", "properties": {"group": "group3"}, ...}]
然后,使用 Leaflet,您可以将功能绑定到弹出窗口或根据它们 "group" tag/property 设置不同的样式。参见 http://leafletjs.com/reference.html#geojson。
正如@sgillies 所说,您不能将 GeoJSON 数据中的 type
值更改为与规范提供的值不同的值。否则 GeoJSON 解析器(如 Leaflet)将无法理解您的数据。
至于将数据存储到单个文件或多个文件中,由您决定。
现在请注意,无论何时调用 L.geoJson(myGeoJSONdata)
,Leaflet 都会创建一个图层组,无论 myGeoJSONdata
是 FeatureCollection
还是 Features
的数组。
因此,如果您想在 Leaflet 中获得 3 个不同的层组(例如,如果您希望能够分别切换 ON/OFF 每个组),最简单的方法是将数据分成 3 个不同的GeoJSON 对象(例如,它们可能在定义 3 个不同变量的同一个 JS 文件中,或者在 3 个不同的 JSON 文件中)并在每组数据上分别调用 L.geoJson
。
根据您的编程技能,您还有很多其他可能性,例如在 GeoJSON 数据中有一个 属性 指定每个特征属于哪个组(如@sgillies 提到的),然后 filtering 通过这个 属性 调用 L.geoJson
,等等