我剛剛爲我的爸爸公司開發了一個郵政編碼距離計算器,我們所有的客戶都在檔案中,每當有新的潛在客戶進行查詢時,系統都會檢查所有其他客戶的郵政編碼。問題是它還沒有做距離計算。在距離設置爲5英里的DT1郵政編碼中鍵入,表示DT1,2和3靠近。 DT2表示DT1和2,DT3表示DT1,3和4.這沒有任何意義。然而,如果我將BH2放在50英里的距離內,它將帶回伯恩茅斯,多爾切斯特,樸次茅斯,巴斯,南安普敦和其他幾個城鎮。這些都是正確的 - 但我不知道DT郵編髮生了什麼。 DT11不會帶回任何(不到5英里),DT10也不會帶回(除了他們自己)。郵政編碼距離計算
我首先使用了(x * x + y * y)的根 - 我相信這就是所謂的畢達哥拉斯定理。不知道,因爲我使用這個詞已經有多年了!
我也曾嘗試以下操作:
$sinstuff = sin(deg2rad($latitude))*sin(deg2rad($latitude2));
$cosstuff = cos(deg2rad($latitude))*cos(deg2rad($latitude2))*cos(deg2rad($longitude-$longitude2));
$sumstuff = $sinstuff + $cosstuff;
$acosstuff = rad2deg(acos($sumstuff));
$distance = $acosstuff*60*1.1515; //dunno what the 60 and 1.1515 is all about - I got this formula off a website.
這是似乎是造就了奇怪的結果的公式。我還注意到,DT11和DT11之間的確切距離大約是+/- 0.00000989 {和許多其他數字}。這也似乎有點奇怪,因爲,當然,DT11和它本身之間的距離是0 ...
有沒有人曾經成功地做過類似這樣的事情?
我確實有一大批文件 - 總共約158MB - 包含每個英國郵政編碼全部,以及相應的經度和緯度。我的目標是,不是將指定的全部郵政編碼與其他全部郵政編碼進行比較,以確定哪些區號小於一定距離,然後將指定的郵政編碼與這些區域內的所有郵政編碼進行比較。這是否有效?有沒有更高效的方法?
任何幫助,這將不勝感激。
問候,
理查德
PS我知道有一些網站在那裏,告訴你如何計算出的距離,但我不似乎能夠得到其中的任何工作正常(因爲你可以從上面告訴)。
PPS我知道我可以爲此使用Google API - 但這不是一個選項,因爲這將成爲在本地安裝的wamp服務器上運行的離線應用程序。它適用於我們無法保證互聯網連接的貿易展會。
約+/- 0.00000989 {和很多其他數字}',這只是一個舍入誤差 – 2010-09-07 09:21:01
它應該仍然是0,當然...無論計算是如果數字是相同的,它應該是0 .. 。當我把它變成2dp時,我發現了它,它在0時表示它只是四捨五入 - 但它不應該需要四捨五入。 – ClarkeyBoy 2010-09-07 09:33:32