如何通过 属性 值组合 GeoJson 特征?

How can you combine GeoJson features by their property value?

TLDR:您能否将具有共同 属性 的 GeoJSON 要素连接在一起,以便最终的多边形是较小要素的组合?

我正在构建一个 Web 应用程序,它需要我通过删除县之间的线来修改一些现有的 GeoJSON,实质上是从较小的多边形创建较大的多边形。这是 GeoJSON 的样子:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "feature",
      "geometry": {
        "type": "MultiPolygon",
        "coordinates": [[[[ ..some coordinates ]]]],
      },
      "properties": {
        "joiner": 1,
        "PUMA": "Alameda County"
      }
    },
    {
      "type": "feature",
      "geometry": {
        "type": "MultiPolygon",
        "coordinates": [[[[ ..some coordinates ]]]],
      },
      "properties": {
        "joiner": 2,
        "PUMA": "San Jose County"
      }
    },
    {
      "type": "feature",
      "geometry": {
        "type": "MultiPolygon",
        "coordinates": [[[[ ..some coordinates ]]]],
      },
      "properties": {
        "joiner": 1,
        "PUMA": "Fremont West"
      }
    },
  ]
}

在这个虚拟示例中,我想将 Alameda County 和 Fremont West 连接在一起,因为它们都包含“joiner”属性 1(它们彼此相邻,这是给定的).从视觉上讲,这意味着地图上某些相邻的多边形将合并为一个多边形。

这是使用 MapboxGL 投影时数据当前的样子:

最终投影将使用公共 属性 将相邻的多边形连接在一起并移除分界线,从而创建更大的分界线:

您可以使用 Turf 的“溶解”方法,它的作用恰恰是:

var dissolved = turf.dissolve(features, {propertyName: 'joiner'});

文档:http://turfjs.org/docs/#dissolve