2012-07-19 70 views
3

我有鑑於我目前的設備的緯度和經度緯度和經度計算一個位置之間的接近到其他許多地方

-DeviceName 
-Latitude 
-Longitude 

列表的數據庫,我想要得到的數據庫列表中的所有設備距離/接近X公里。

如何計算我的位置與其他位置的距離?

+0

你想製作一個SQL查詢? – 2012-07-19 04:50:42

+0

是的,我想做一個SQL查詢 – 001 2012-07-26 14:51:50

回答

0

我想你想看看這個amazing presentation。它會告訴你如何使用(以及對獎勵點的解釋!)haversine formula來計算地球表面的距離以說明曲線,以及如何避免數據庫查詢中的一些常見錯誤等。他的數據集幾乎與您的數據集完全相同是 - 項目,經度和緯度。

0

如果你的原始代碼後,這會幫助你:

private static Double rad2deg(Double rad) { 
    return (rad/Math.PI * 180.0); 
} 

private static Double deg2rad(Double deg) { 
    return (deg * Math.PI/180.0); 
} 

private const Double kEarthRadiusKms = 6376.5; 

private static Double CalculateDistance(Double latitude1, Double longitude1, Double latitude2, Double longitude2) { 
    double theta = longitude1 - longitude2; 
    double dist = Math.Sin(deg2rad(latitude1)) * Math.Sin(deg2rad(latitude2)) + Math.Cos(deg2rad(latitude1)) * Math.Cos(deg2rad(latitude2)) * Math.Cos(deg2rad(theta)); 
    dist = Math.Acos(dist); 
    dist = rad2deg(dist); 
    dist = dist * 60 * 1.1515; 
    dist = dist * 1.609344; 
    return (dist); 
} 
+0

你使用什麼公式? – 001 2012-07-26 14:51:04

+0

很確定它是Haversine(http://en.wikipedia.org/wiki/Haversine_formula)。 – 2012-07-26 19:28:59

相關問題