我有一些地理定位的對象(每個對象都有緯度+經度)。 我的應用程序需要顯示圍繞移動設備的GPS位置3公里的物體。 我有幾千個物體,它們在大面積的地方(例如,幾個美國州,幾個小國),意思是在我的物品清單中我可以有一個位於紐約,另一個位於邁阿密,但我也可以非常接近的物體(幾米)。如何對地理數據進行排序以便快速搜索
目前,我的應用程序執行迭代搜索。對於每個對象,我計算與GPS位置的距離,如果距離爲< = 3KM,則我保留該對象,否則我忽略它。這個算法效率不高,我正在尋找一種能夠提供更好性能的算法。
我想有一種方法可以使用地理座標對我的對象進行排序,然後更快找到位於GPS位置周圍的對象。
我目前的想法只是用「極端點」,北/南/東/西(從GPS位置3公里)計算矩形來限制搜索區域。接下來,我將只計算這個盒子裏面的物體的距離。 我認爲更好的東西可以做,但我沒有這個想法...
任何提議可以理解;-) 謝謝,
SEB。
我認爲直接在lat/lon中的四叉樹適用於幾乎所有的情況。如果經度爲0-360,那麼我會改變它,以便數據中的「接縫」位於日期線上而不是零(因此,所有問題將只在北極,南極和太平洋) 。 – 2012-07-13 07:16:29
非常感謝,我將學習八叉樹和kd-tree。如果我的小腦袋不太複雜,它可能會用它做點什麼! – sebastien 2012-07-13 18:40:51