【发布时间】:2017-07-07 07:31:31
【问题描述】:
给定一个多边形列表,我试图找到所有不同的、非重叠区域的边界。
polygon_lst = []
for xyloc in xylocs:
polygon_lst.append(Polygon(xyloc))
与this 的问题类似。但是,当我运行 unary_union 操作时出现错误:
from shapely.geometry import LineString
layer = polygon_lst
rings = [LineString(list(pol.exterior.coords)) for pol in layer]
from shapely.ops import unary_union, polygonize
错误:shapely.geos:TopologyException:找到非节点交叉点 LINESTRING (103.333 327.917, 103 328) 和 LINESTRING (104.2 327.2, 103 328) 在 103.00000000000006 328
我尝试了另一种方法,我创建了一个所有多边形叠加的蒙版。然后我尝试通过 Canny 检测器和 opencv 中的 findContour 函数提取不同的区域。但是,这种方法产生的边界是连接的(不是每个不同区域有一个边界)并且是非封闭的。
找到这些非重叠区域及其边界的好方法是什么?
【问题讨论】: