我有一个格式为python python的多边形列表。 从该列表中我只想提取删除重复的唯一多边形。
如何更快地完成? (我的列表包含数千个多边形)
from shapely.geometry import Polygon
lists = [[(1,1),(2,2),(3,3),(4,4)], [(6,6),(7,7),(8,8),(9,9)], [(1,1),(2,2),(3,3),(4,4)]]
polys = [Polygon(item) for item in lists] ##This is given condition
for poly in polys:
test = [p.intersects(poly) for p in polys] ##Return true or false
print test
[True, False, True]
[False, True, False]
[True, False, True]
预期结果是:
[[(1,1),(2,2),(3,3),(4,4)], [(6,6),(7,7),(8,8),(9,9)]]
答案 0 :(得分:4)
您可以创建一个存储唯一多边形的列表,然后为列表中的每个多边形循环存储在外部列表中的多边形,如果它们都不与新的多边形相交,则将其添加到列表中,可以使用any()
函数。
示例 -
from shapely.geometry import Polygon
lists = [[(1,1),(2,2),(3,3),(4,4)], [(6,6),(7,7),(8,8),(9,9)], [(1,1),(2,2),(3,3),(4,4)]]
polys = [Polygon(item) for item in lists] ##This is given condition
uniqpolies = []
for poly in polys:
if not any(p.intersects(poly) for p in uniqpolies):
uniqpolies.append(poly)
来自documentation -
如果iterable的任何元素为true,则返回
True
。如果iterable为空,则返回False
。