python - 在 Python 中将多多边形转换为多边形

标签 python polygons shapely

关闭。这个问题需要details or clarity .它目前不接受答案。












想改进这个问题?通过 editing this post 添加详细信息并澄清问题.

2年前关闭。




Improve this question




是否可以转换 Multipolygon变成 Polygon使用 Shapely 填充所有孔或缺失的内部区域?我已经尝试了一段时间,但我在文档中找不到它。下图显示了一个多面体示例,其中包含要填充的孔和要删除的正方形。

Multipolygon with holes

最佳答案

一种近似的方法可能是:

  • 提取 MultiPolygon 的各个组件的外边界感兴趣的
  • 扩展-收缩每个外边界以填充这些边界大致包含的“孔”,例如,处理“带切口的 donut ”
  • 合并上一步获得的所有几何图形

  • 例如:
    #!/usr/bin/env python
    from shapely.geometry import MultiPolygon, Polygon
    from shapely.ops import cascaded_union
    
    a = 0.25
    delta = 0.49
    
    P = MultiPolygon([
        (
            ((0,0),(0,3),(3,3),(3,2-delta),(2,2-delta),(2,2),(1,2),(1,1),(2,1),(2,1+delta),(3,1+delta),(3,0),(0,0)),
            [((a, a), (1-a,a), (1-a,1-a), (a,1-a), (a,a))]
        )
    ])
    
    
    eps = 0.01
    
    omega = cascaded_union([
        Polygon(component.exterior).buffer(eps).buffer(-eps) for component in P
    ])
    for x,y in zip(*omega.exterior.coords.xy):
        print(x, y)
    
    MultiPolygon P好像:
    enter image description here

    虽然上面列出的脚本按预期生成了一个边长为 3 的近似正方形,即它填充了左下角的孔以及 MultiPolygon 中心的“空白空间”。在参数 eps 的值足够高的情况下,这相当于膨胀-收缩过程中的一个孔。 .

    关于python - 在 Python 中将多多边形转换为多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48082553/

    相关文章:

    python - 捕获未写入 stdout、stderr 的控制台输出?

    python - 如何基于压缩列表中的列表之一使用 set()

    android - 检测两个多边形是否有共同区域

    python - 安装匀称: OSError: [WinError 126] The specified module could not be found

    python - 匀称的 LineString 交集是否错误?

    python - 关于数据类型的 BeautifulSoup 代码问题

    java - 用Java制作轮盘赌风格的Poly Wheel

    多边形分解算法

    python - 多边形与 Shapely 接触不止一点

    python - 在 tkinter,python 中以像素为单位设置标签宽度