如何在具有多边形的形状 python 的多边形中打洞

How to make holes in a Polygon in shapely python, having Polygons

在 python 中,我有一个普通的多边形 "outer" 和一个多边形列表 "inners"。我想使用此列表在我的多边形中打洞。

from shapely.geometry import Polygon

# polygon with 1 hole in the middle
p = Polygon(((0,0),(10,0),(10,10),(0,10)), (((4,4),(4,6),(6,6),(6,4)), ))
print p.wkt
# POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0), (4 4, 4 6, 6 6, 6 4, 4 4))

# other constructor, does not work (no hole) :
outer = Polygon(((0,0),(10,0),(10,10),(0,10),(0,0)))
inners = (Polygon(((4,4),(4,6),(6,6),(6,4),(4,4))), )
p = Polygon(outer, inners)
print p.wkt
# POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))

给定外部和内部如何构建 p?

抱歉,我刚刚找到了一个解决方案,将 outer 作为普通多边形,将 inners 作为普通多边形列表(每个多边形都包含在 outer 中):

p = Polygon(outer.exterior.coords, [inner.exterior.coords for inner in inners])

Polygon 构造函数仅适用于坐标作为输入,不适用于其他 Polygons,例如:

p = Polygon(outer, inners)