GeoJson:基于点特征构建多边形

GeoJson : build a Polygon based on Point feature

亲爱的 Whosebug 团队, 令我印象深刻的是,在论坛上翻了好几个小时后,我仍然找不到与我的问题类似的 question/answer :

我有一个具有很多点功能的 GeoJson。我收集了所有遵循某些规范(每个点之间的距离)的点(在我的示例中为绿色,见下图)

初始数据:

我想 link 全部构建一个多边形(代表一个区域)。

我在找什么:

或接受解决方案:

所以我从这些点收集所有坐标,并确保多边形符合 GeoJson 要求,我使用了“倒带”功能

from geojson_rewind import rewind

但最后,无论我尝试过什么,我都只能得到那种多边形:

我可能没有正确使用“倒带”功能?

我正在寻找一种(简单的)自动方法 link 将所有点放在“凸包”中

非常感谢您的帮助!

我的初始坐标收集在一个列表中:

[[4.3556672, 50.8538851], [4.3542534, 50.8546955], [4.3567798, 50.8547854], [4.3566527, 50.8541356], [4.3574286, 50.8552813], [4.3572234, 50.8551264], [4.3547752, 50.8545063], [4.3572736, 50.8560176], [4.3571226, 50.8546104]]

我设法构建的多边形 GeoJson,具有倒带功能(重新复制最后的坐标以获得多边形)看起来像这样:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              4.357223,
              50.855126
            ],
            [
              4.35678,
              50.854785
            ],
            [
              4.355667,
              50.853885
            ],
            [
              4.356653,
              50.854136
            ],
            [
              4.357123,
              50.85461
            ],
            [
              4.354253,
              50.854695
            ],
            [
              4.354775,
              50.854506
            ],
            [
              4.357429,
              50.855281
            ],
            [
              4.357274,
              50.856018
            ],
            [
              4.357223,
              50.855126
            ]
          ]
        ]
      }
    }
  ]
}

shapely 库对于进行此类几何操作非常有用。

要生成一组几何体的凸包的多边形,您可以使用 object.convex_hull:

import shapely.geometry as sg

points = [[4.3556672, 50.8538851], [4.3542534, 50.8546955], [4.3567798, 50.8547854], [4.3566527, 50.8541356], [4.3574286, 50.8552813], [4.3572234, 50.8551264], [4.3547752, 50.8545063], [4.3572736, 50.8560176], [4.3571226, 50.8546104]]
polygon = sg.MultiPoint(points).convex_hull

结果如下:

shapely.geometry.mapping 的帮助下将其转换为 GeoJSON:

feature_collection = {
    "type": "FeatureCollection",
    "features": [
        {"type": "Feature", "properties": {}, "geometry": sg.mapping(polygon)}
    ],
}

import json
geojson = json.dumps(feature_collection)