Python rtree最近 - 究竟是什么?

时间:2016-12-24 22:41:06

标签: python r-tree

我有以下设置 - 它是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所以应该包括在内,对吗?

1 个答案:

答案 0 :(得分:2)

最近的方法"将k个最近的对象返回到给定的坐标。",也就是说,它将返回与其距离无关的最近的对象。

对象的距离不是最近函数的参数,如Rtree documentation所述。第二个参数是您想要的结果数。在你的情况下,它返回六个值,因为点(6,3),(5,4)与点(6,4)的距离(1)相同。

要获取特定距离内的物体,您应使用the intersection method