2012-05-03 279 views
-1

我設計一個招聘數據庫,我需要它來執行多項任務,所有涉及到整合計算距離的一種方式:)計算距離

1計算候選住在離客戶的距離?

2)計算在任何給定日期可供工作的候選人範圍內的客戶?

3)計算具有客戶半徑範圍內空位的正確資格的候選人人數。

正如你所看到的,我需要計算兩種主要方式的距離1)半徑2)當烏鴉飛翔時,我寧願精確的距離,但第一個會做。 我知道我可以整合谷歌地圖或其他一些基於網絡的映射,但我希望系統能夠獨立運行,因此無需互聯網連接即可運行。 系統將具有HTML5前端,後端位於Mysql和PHP中。

謝謝BIAGIO

+2

有已經有數百個這種性質的問題。你嘗試過搜索嗎? – eggyal

+0

半徑*是*作爲烏鴉... –

回答

6

2點之間的距離,可以用下面的公式來計算:

6371*acos(cos(LatitudeA)*cos(LatitudeB)*cos(longitudeB-longitudeA)+sin(LatitudeA)*sin(latitudeB)) 

當然,這是一個以公里爲單位的「烏鴉」近似值。

至極可以通過翻譯到PHP:

$longA  = 2.3458*(M_PI/180); // M_PI is a php constant 
$latA  = 48.8608*(M_PI/180); 
$longB  = 5.0356*(M_PI/180); 
$latB  = 47.3225*(M_PI/180); 

$subBA  = bcsub ($longB, $longA, 20); 
$cosLatA  = cos($latA); 
$cosLatB  = cos($latB); 
$sinLatA  = sin($latA); 
$sinLatB  = sin($latB); 

$distance = 6371*acos($cosLatA*$cosLatB*cos($subBA)+$sinLatA*$sinLatB); 
echo $distance ; 

有了,你可以計算兩個點(人),當然確定一個點是否在其他半徑之間的距離。

+0

6371代表什麼? –

+0

6371是以公里爲單位的地球半徑。這個數值是一個平均值,因爲地球不是一個完美的球體。有關維基百科的更多信息,請看:http://en.wikipedia.org/wiki/Earth_radius – grunk

+1

在我們之間,地球並不完全是一個球體。但我會原諒你的。 +1。 –

0

首先,是不是半徑實際上是「爲飛鴉」從客戶端向考生距離是多少?無論如何,你需要根據點之間的距離來計算出你需要的算法。

如果您希望系統是獨立的,您需要具有點的座標值(緯度,經度)。爲此,您可能需要和互聯網連接以及使用像Google地圖這樣的服務來查找基於地點的座標。但是,一旦你存儲在你的分貝,你將不需要互聯網連接。

有用於基於座標兩點間的距離公式,你會很容易找到它:)

+0

親愛的所有感謝您的回覆,我有公式,是我正在尋找的是烏鴉蒼蠅的一部分。 (半徑)數據庫中的第二部分計算與客戶的距離,以便候選人以正確的順序出現。我一直在尋找的是這個過程在PHP或任何東西的編程腳本?本網站http://www.freemaptools.com/map-tools。HTM已經得到了我需要的東西,但我需要編碼過程和獲得免費地圖的方法,我可以在數據庫中插入並用於繪製信息,任何想法? – Biagio

2

只是一個想法:如果你的客戶和候選人生活在一個非常有限的區域,我會使用一個矩形地圖,並輸入數據庫中該地區所有城市的x和y值。

由於勾股定理,你可以說:

distance²=(x值的客戶端 - x值候選人)²+(y值的客戶端 - y值候選人)²