在从一组纬度/经度点生成 Voronoi 镶嵌时,我收到一个错误,当某个点用作输入的一部分时似乎会发生错误。
为了隔离问题,我将这些点一一删除并添加到输入中,并发现在添加回“问题点”时错误完全可重现。
ip = [[31.249566 , 30.0458139],
[31.2496667, 30.0460511],
[31.2497362, 30.0462148],
[31.2498083, 30.0463844],
[31.2499063, 30.0466152],
[31.2497861, 30.0457439],
[31.2493217, 30.0458917],
[31.249051 , 30.0459779],
[31.2485747, 30.0461295],
[31.2487919, 30.0460604],
[31.2494149, 30.0461318],
[31.2491506, 30.0462165],
[31.249482 , 30.0463046],
[31.2495479, 30.0464743],
[31.2496453, 30.0467251],
[31.2488556, 30.0467515],
[31.2489719, 30.047009 ],
[31.2493148, 30.0466096],
[31.2492253, 30.0463954],
[31.2492947, 30.0465617],
[31.2494044, 30.0468267],
[31.2497576, 30.0466778],
[31.2500132, 30.0465702], # PROBLEM POINT
[31.2495429, 30.0470592],
[31.2497817, 30.0474367],
[31.2490658, 30.0472466]]
代码:
import libpysal
from libpysal.cg.voronoi import voronoi, voronoi_frames
regions_s, vertices_s = voronoi(ip)
错误跟踪:
libpysal/cg/voronoi.py in voronoi_regions(vor, radius)
97 continue
98
---> 99 ridges = all_ridges[p1]
100 new_region = [v for v in vertices if v >= 0]
101
KeyError: 5
这里会发生什么?就上下文而言,这些都是埃及的投影点(“EPSG:4326”),我确保没有重复。在引擎盖下,图书馆使用 scipy。
from scipy.spatial import Voronoi