2015-06-02 41 views
2

我用了libspatialindex的RTREE索引中插入一些值表示herePython的RTREE的get/set座標的ID

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

我怎樣才能更改ID 42價值?我正在尋找比刪除+添加更便宜的東西。另外,如何獲得給定ID的座標值?

回答

0

我遇到了同樣的問題,似乎沒有一個通用的解決方案。因此,這裏是我的黑客周圍,希望能有所幫助:

我的設置:

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列表中該點的索引。

所以後來當我想通過ID的具體點,我跑:

target_point = input_points[id] 

然後你就可以做的事情與target_point因爲那應該是你正在尋找的點。

這只是一個黑客,所以請讓我知道,如果你找到了一個通用的解決方案,我也很好奇。