2011-01-07 141 views
1

我有這個網站,它存儲了一些地方的經度和緯度,我想要顯示特定地點的最近地點(可以說,在方圓10公里內)。通過緯度和經度查找最近的地方

如何在我的MySQL表上搜索這些地方?

+0

詳細的博客:http://sforsuresh.in/finding-nearest-location-using-latitude-longitude/ – 2017-07-20 09:00:55

回答

4

幾年前我在 Google Answers和最近再次在 Uclue回答了這種問題。

我應該注意的是,首選的技術慣例是將西方的經度表示爲負值,但有時候並未觀察到這一點。除非您計算的是與Prime Meridian相反的子午線(經線環繞),否則它不會有太大的變化,但是要注意數據庫和與其他地理數據庫的一致性。

加了:如上鍊接的Uclue問題概述的,其目的是計算兩個對值,MINLATITUDE/MAXLATITUDE和MINLONGITUDE/MAXLONGITUDE,使得給定位置的給定距離內的所有點都包括在SQL查詢的結果:

SELECT * FROM Locations 
    WHERE (latitude between MINLATITUDE and MAXLATITUDE) 
    and (longitude between MINLONGITUDE and MAXLONGITUDE) 

與MySQL 5.0開始,我們可以在方便的存儲過程與SELECT捆綁MIN/MAX對的計算一起。我們甚至可以用光標運行這種查詢的結果,並且如果需要這樣的精確度,則檢查確切的「大圓」距離。不過,我猜想一個簡化的方法,從一個調用框架(如Python或C++)動態構建上述查詢,對於大多數應用程序(爲了儘量減少數據庫服務器所做的工作)是有意義的。

讓我知道我是否應該詳細說明這些可能性。