Как изменить объект в индексе Rtree в Python

#python #geospatial #r-tree

#python #геопространственный #r-дерево

Вопрос:

Я использую пакет под названием Rtree версии 0.8.2, который позволяет помещать геопространственные объекты в индекс и выполнять поиск очень быстро. Однако я столкнулся с проблемой, пытаясь изменить уже созданный индекс.

Итак, существует метод insert, который позволяет добавлять объект в индекс:

 from rtree import index
idx = index.Index()
idx.insert(1, (left, bottom, right, top), 
           obj = {'field1': 'value1', 'field2': 'value2'})
  

А также существует метод delete, который позволяет удалить ненужный объект из индекса:

 idx.delete(1, (left, bottom, right, top))
  

К сожалению, в руководстве к пакету я не смог найти никакой информации о том, как изменить существующий объект, который уже есть в индексе.

Мне особенно любопытно, как добавить другое поле в свойство obj, которое представлено как dict (например, ‘field3’: ‘value3’).

Ответ №1:

Вам нужно

  1. удалите старый объект
  2. вставьте новый объект

В этом нет ничего плохого; это может помочь улучшить древовидную структуру.

Комментарии:

1. К сожалению, это то, что я сделал в конце. Это совсем не удобно, но, похоже, другого варианта нет.

2. Почему вы думаете, что это плохо? Лучшие R *-деревья даже автоматически удаляют и повторно вставляют точки, чтобы улучшить древовидную структуру.