如何使用rtree,python在querybox(查询区域)中查找最近的点

时间:2019-07-09 00:10:19

标签: python r-tree libspatialindex

我是python的新手,我使用import rtree库。我将二维点数据索引到rtree中并指定查询框(矩形)。我应该得到位于查询框中的点。但是我正在查询框中找到最近的点。

   My code is below
   from rtree import index
   idx = index.Index()
   left, bottom, right, top = (0.0, 0.0, 1.0, 1.0)
   idx.insert(0, (1,2))
   idx.insert(1, (8,2))
   idx.insert(2, (6,2))
   idx.insert(3, (1,2))
   idx.insert(4, (2,2))
   idx.insert(5, (3,2))
   idx.insert(6, (7,2))
   idx.insert(7, (1,2))
   idx.insert(8, (8,2))
   idx.insert(9, (6,2))
    query_box = [100,29,144,90]
    list(idx.nearest((query_box)))

但是我得到的结果不在查询框中。

from rtree import index
idx = index.Index()
left, bottom, right, top = (0.0, 0.0, 1.0, 1.0)
idx.insert(0, (1,2))
idx.insert(1, (8,2))
idx.insert(2, (6,2))
idx.insert(3, (1,2))
idx.insert(4, (2,2))
idx.insert(5, (3,2)) 
idx.insert(6, (7,2))
idx.insert(7, (1,2))
idx.insert(8, (8,2))
idx.insert(9, (6,2))  
query_box = [100,29,144,90]   
list(idx.nearest((query_box)))
Out[142]: [1, 8]

在输出中,您可以看到rtree返回的索引1、8靠近查询框的外部。但我只需要查询框内的点即可。他们建议使用rtree获取位于查询框中的点。

1 个答案:

答案 0 :(得分:1)

如果需要交点,请使用方法intersection

顾名思义,方法nearest返回最近的邻居。