#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. Почему вы думаете, что это плохо? Лучшие R *-деревья даже автоматически удаляют и повторно вставляют точки, чтобы улучшить древовидную структуру.