如何获取每个封闭区域边界的坐标?
2 个回答
1
正如@CaptainTrunky提到的,在这种情况下,你需要使用networkx库中的cycle_basic。我一开始没有得到想要的结果,因为区域的边界显示得不完整。为了让它们正确显示,你需要在最后重复第一个点:
coordinates = [(x1, y2, x2, y2), (x2, y2, x3, y4), etc.].
point_lists = [[pair for pair in zip(line[::2],line[1::2])] for line in coordinates]
edges = [segment for point_list in point_lists for segment in zip(point_list[::-1], point_list[1:])]
G = nx.from_edgelist(edges)
# cycle_basis
cycle_basis = nx.cycle_basis(G)
print("cycle_basis: =", len(cycle_basis)))
for cycle in cycle_basis:
cycle.append(cycle[0])
print(cycle)