2016-12-24 8 views
0

私は次のセットアップを持っている - それがポイント上に構築RTREEです:Python rtree nearest - 正確には何ですか?

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

なぜ 'p + p'に挿入しますか? –

答えて

1

最も近い方法は、「最も近いk個のオブジェクトを指定された座標に戻します」。つまり、距離に依存しない最も近いオブジェクトを返します。

Rtree documentationで説明されているように、オブジェクトの距離は最も近い関数のパラメータではありません。 2番目のパラメータは、必要な結果の数です。あなたの場合、点(6,3)、(5,4)は点(6,4)と同じ距離(1)を持つため、6つの値を返します。

特定の距離のオブジェクトを取得するには、the intersection methodを使用する必要があります。

関連する問題