2016-09-19 60 views
-1

我想計算兩點經緯度之間的距離PHP(NOT IN ANDROID)**我已閱讀** Haversine公式和球形法Cosines計算兩點之間的距離,但我的主要動機是獲得2點之間的最佳位置差異,以米爲單位。如何獲得2對經緯度之間的距離爲幾米

對於實施例兩個設備發生在彼此相鄰,並且機器人裝置正在發送位置服務器,因此,我們需要採取的每個設備的該位置,並從服務器計算meter.Result這些2裝置之間的最小距離經過計算應該像在2-3米時,設備旁邊放置到每個人

那麼什麼是可能的方式以米爲單位來計算兩個設備之間的最小距離,當設備彼此相鄰的服務器端

注意:我需要計算我在公里得到的距離s或英里,當設備彼此相鄰時這是很大的差異。 Haversine公式和餘弦球形法是我找到最好的方式來計算,但我需要在這些公式中做更多的事情,以獲得2設備之間的最小差異。不在Android設備上。這個問題是不相關的This Question

+0

@KNeerajLal這個問題對PHP服務器端不是應用程序的Android端。閱讀問題在標記爲重複之前 – androidXP

+0

您正在尋找視線還是基於道路?你看過API的距離矩陣部分嗎? – Takarii

+0

@Takarii不是基於道路我正在尋找解決方案,通過使用上面的公式獲得2設備之間的最小距離,並且它應該在5米以下時,2設備是相互之間的地方 – androidXP

回答

0

我已經使用PHP中的半正矢公式來計算兩個地理座標之間在公里距離:

// Haversine formula 
function geoDistance($lon1, $lat1, $lon2, $lat2) { 
    $R = 6371; // Radius of the earth in km 
    $dLat = deg2rad($lat2 - $lat1); 
    $dLon = deg2rad($lon2 - $lon1); 
    $a = sin($dLat/2) * sin($dLat/2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLon/2) * sin($dLon/2); 
    $c = 2 * atan2(sqrt($a), sqrt(1-$a)); 
    $d = $R * $c; // Distance in km 

    return $d; 
} 

我想,具有在結腸足夠的精度和緯度將產生乘以1,000 migth的結果可用作米的距離度量,對嗎?

根據https://gis.stackexchange.com/questions/8650/measuring-accuracy-of-latitude-and-longitude小數點後第五位的值高達1.1米:它將樹彼此區分開來。

+1

這可能工作,但我用類似這樣,它doesn當兩臺設備相鄰時,返回距離在5-10米之內。儘管如此,我會嘗試這一個 – androidXP

+1

您需要5位小數精度在lon和lat –

+0

這就是android設備如何生成位置看一看 28.5312119和77.2569046其超過5,我想如果我從最後刪除幾個位置將不準確,因爲它應該是。請看看 – androidXP

0

關於最後注意在原始帖子中:如果您使用的公式不夠精確,非常小的距離,您可以嘗試ellipsoidal trigonometry。無論如何,GPS座標是在橢球體上測量的,所以Haversine公式就是近似值。如果你這樣走,你也應該看看gis.stackexchange

(這是打算作爲一個評論,因爲我缺乏一個完整的答案知識,但我沒有足夠的信譽評論)

相關問題