我有以下设置 - 它是rtree构建点:
from collections import defaultdict
from math import sqrt
import rtree.index
points = [(5, 4), (3, 1), (6, 3), (2, 8), (7, 8), (8, 1), (2, 3), (0, 4), (3, 7), (6, 4)]
idx = rtree.index.Rtree()
for i, p in enumerate(points):
idx.insert(i, p+p, p)
现在我正试图找到距某一点一定距离内的所有点:
max_distance=5
p = (6,4)
list(idx.nearest(p, 5, objects='raw'))
我收到了
[(6, 4), (6, 3), (5, 4), (8, 1), (2, 3), (7, 8)]
问题是 - 为什么(3, 1)
未包含在列表中?距离是~4.24所以应该包括在内,对吗?
答案 0 :(得分:2)
最近的方法"将k个最近的对象返回到给定的坐标。",也就是说,它将返回与其距离无关的最近的对象。
对象的距离不是最近函数的参数,如Rtree documentation所述。第二个参数是您想要的结果数。在你的情况下,它返回六个值,因为点(6,3),(5,4)与点(6,4)的距离(1)相同。
要获取特定距离内的物体,您应使用the intersection method。