как найти ближайшую точку в поле запроса (область запроса), используя rtree, python - PullRequest
2 голосов
/ 09 июля 2019

Я новичок в Python, я использую библиотеку import 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 Ответ

1 голос
/ 09 июля 2019

Если вы хотите пересечение, используйте метод intersection.

Метод nearest возвращает ближайших соседей, как указывает название.

...