我試圖存儲GPS位置的數據庫,並運行查詢,查找給定半徑內的點以及最近的點。我正在使用mysql並一直在尋找空間擴展。我不確定我是否看到如何實際使用空間擴展來執行我在位置半徑查詢中查找的內容。位置的數據庫程序
因此,這裏是林想爲我的選擇:
存儲lat和長GPS座標如同db浮動索引變量。當我得到一個點GPS座標和一個範圍,計算最大和最小經緯度和長值來查詢,然後根據這些順序中的距離函數進行排序。
使用空間擴展。我不太肯定這會起作用。 Distance()函數未實現。使用空間索引需要找到一個邊界框(可行)並調用MBRContains邊界框函數來查找位於該邊界框中的點。但是一個點的邊界爲零,所以MBRContains函數不適用於點。
我不知道是什麼標準的方式來做到這一點(它doesnt看起來像有一個),將不勝感激與決策經驗/想法/幫助任何話。我目前正在使用MySQL 5.13,而且我很確定即使是5.5也沒有距離度量標準。
此外 - 即使2.工作,哪一個會更快?請讓我知道你的想法是什麼,特別是如果你確定/看到了一些快速和大型查找工作!
Mysql的空間索引:http://dev.mysql.com/doc/refman/5.5/en/using-a-spatial-index.html
你不需要經緯度/長搜索的空間,只需要一些基本的三角。 http://code.google.com/intl/zh-CN/apis/maps/articles/phpsqlsearch.html對於解決這個問題非常有幫助。 – tadamson 2010-07-08 02:53:55
這是否會快到足以處理幾百萬? – 2010-07-08 03:35:39
您可以用WHERE MyLon過濾掉大部分點BBoxLonMax和MyLon> BBoxLonMin和MyLat BBoxLatMin 在您記錄極少數記錄後,查看獲取實際距離。 –
geographika
2010-07-08 21:38:49