Improve this question
是否可以使用Shapely将Multipolygon转换为填充所有孔或缺少内部区域的Polygon?我已经尝试了一段时间,但是在文档中找不到。下图显示了一个多角形的示例,其中包含我要填充的孔和要删除的正方形。
参考方案
一种近似的方法可能是:
提取感兴趣的MultiPolygon的各个组成部分的外边界
扩大-缩小每个外部边界,以填充这些边界大致涵盖的“孔”,例如,处理“带有切口的甜甜圈”
合并上一步中获得的所有几何
例如:
#!/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 compo