【发布时间】:2018-11-07 09:08:43
【问题描述】:
我实际上是在 python 上使用 shapely。
事情是这样的:
我有一个大多边形,比如说
import matplotlib.pyplot as plt
import shapely
from shapely.geometry import Polygon
LAND = Polygon([(0, 0), (0, 20), (20, 20), (20, 0)])
我有一个随机生成的多边形列表
import random
def generate_polygons(box_size=10, amount=15):
"""
A function that generate an amount of polygon randomly
in a square of size = box_size
"""
polygons = []
for i in range(amount):
x = random.randint(0, box_size - 2)
y = random.randint(0, box_size - 2)
dx = 2
dy = 2
polygons.append(Polygon([(x, y), (x, y+dy), (x+dx, y+dy), (x+dx, y)]))
return polygons
我想区分 LAND 和多边形列表
diff = LAND
polygons = generate_polygons(20, 15)
for polygon in polygons:
diff = diff.difference(polygon)
让我们绘制结果 这是多边形:
FIG, AXS = plt.subplots()
if (isinstance(polygons, shapely.geometry.polygon.Polygon)):
X, Y = polygons.exterior.xy
AXS.fill(X, Y, 'b')
else:
for polygon in polygons:
X, Y = polygon.exterior.xy
AXS.fill(X, Y, 'b')
plt.show()
这里是差异:
FIG, AXS = plt.subplots()
if (isinstance(diff, shapely.geometry.polygon.Polygon)):
X, Y = diff.exterior.xy
AXS.fill(X, Y, 'r', alpha=0.5)
else:
for polygon in diff:
X, Y = polygon.exterior.xy
AXS.fill(X, Y, 'r', alpha=0.5)
plt.show()
我不明白为什么它给我这个结果,有人有想法吗?
【问题讨论】:
标签: python polygon difference shapely