我想將數千個緯度/經度點存儲在MySQL數據庫中。我成功地設置了表格,並使用地理空間擴展添加數據,其中「座標」列是「點」(lat,lng)。如何使用具有球形幾何體的MySQL地理空間擴展
問題:
我想很快找到「N」最接近條目北緯「X」度和經度「Y」度。由於Distance()函數尚未實現,因此我使用GLength()函數來計算(X,Y)與每個條目之間的距離,按上升距離排序,並限制爲'N'結果。問題是這不是用球面幾何計算最短距離。這意味着如果Y = 179.9度,則最接近的條目的列表將僅包括從179.9開始的經度,並且即使在經度從-179.9增加的情況下存在更接近的條目的情況下也將遞減。
在數據庫中處理球面幾何時,如何處理經度不連續?必須有一個簡單的解決方案,但我必須尋找錯誤的東西,因爲我沒有找到任何有用的東西。
我應該忘記GLength()函數並創建我自己的函數來計算角度分離嗎?如果我這樣做,它會不會很快並利用地理空間擴展?
謝謝!
喬希
UPDATE:
This正是我上面描述。但是,它只適用於SQL Server。顯然,SQL Server具有幾何數據類型和。地理正是我所需要的。 MySQL中有類似的東西嗎?
感謝您的回答。人們通常使用什麼?我看到了你之前鏈接的頁面,但這似乎只能解決找到最接近給定緯度/經度的點的問題。它不能解決請求區域內所有點的問題。使用滾動你自己的方法不會允許你請求所有點從178 lon到-178 lon和從30 lat到35 lat(矩形區域)。 – Joshua 2011-01-09 18:43:36