Python Rtree получить/установить координаты для идентификатора

Я использую индекс Rtree в libspatialindex для вставки некоторых значений, как указано здесь:

>>> idx = index.Index()
>>> idx.insert(42, (0, 0, 1, 1))

как изменить значение идентификатора 42? Я ищу что-то менее затратное, чем удалить + добавить. Кроме того, как я могу получить значение координаты данного идентификатора?


person ralux    schedule 02.06.2015    source источник


Ответы (1)


Я столкнулся с той же проблемой, и, похоже, нет общего решения. Итак, вот мой хак, надеюсь, может помочь:

Моя установка:

class Point:
    def __init__(self,x,y):
        self.x = x
        self.y = y

Когда я индексирую все свои точки, я запускаю этот код:

idx = index.Index()
# input_points is a list of Point object
for ind, pt in enumerate(input_points):
    idx.insert(ind, (pt.x, pt.y, pt.x, pt.y))
return idx

Здесь вы, возможно, заметили, что id, которые я присвоил каждой точке, является индексом этой точки в моем списке input_points.

Поэтому позже, когда я хочу получить конкретную точку по идентификатору, я запускаю:

target_point = input_points[id] 

Затем вы можете делать что-то с target_point, потому что это должна быть точка, которую вы ищете.

Это ТОЛЬКО взлом, поэтому, пожалуйста, дайте мне знать, если вы нашли общее решение, мне тоже любопытно.

person benjaminz    schedule 02.05.2016