2011-11-30 61 views
0

我有超過6000的GPS位置的數據庫的列表。 我想比較用戶的當前位置,並檢測用戶是否在距離6000個位置中的任何一個10米的距離內。比較當前的位置到其他位置

我怎樣才能做到這一點沒有去thorugh所有的6000點,並計算它們的相對距離是多少?

感謝, 丹尼爾

UPDATE: 怎麼樣,如果我會把用戶的當前位置在5 ^2米矩形中間,並提取所有與bottm_right之間current.latitude的位置。緯度和top_left.latitude同樣適用於長期?

+0

看看這個答案http://stackoverflow.com/a/12997900/779408 – breceivemail

回答

0

一個簡單的方法是創建另一個數據庫或geohash修改當前的數據庫索引。儘管這種方法不能很好地處理位置密度,所以如果你的分數分佈不均勻,它可能沒有太大的改進。

+0

我使用的核心數據,所以我不認爲這是一種選擇。謝謝 –

0

從邏輯上講,除非6000個位置進行邏輯分組不知何故你將不得不通過所有6000

,如果你能控制的數據庫結構,你可以整理GPS位置到位置的區域(即組那麼這應該使你的6000下降到(根據你想要的細粒度)10,20,30或100組,這些組中的每一組都可以有一箇中點位置和總距離組然後你可以通過組中的總距離循環,然後細粒從那裏...

+0

因爲我正在使用核心數據,所以我沒有這種控制。謝謝。 –