如何在2对纬度经度

时间:2016-09-19 09:04:26

标签: php google-maps navigation geolocation

我想在 PHP(NOT IN ANDROID)**中计算2点纬度和经度之间的距离**我已经读过关于** Haversine公式和余弦球面法的计算,用于计算两者之间的距离点,但我的主要动机是在米的2点之间获得最佳位置差异。

例如两个设备彼此相邻并且Android设备正在向服务器发送位置,因此我们需要获取每个设备的位置并计算这两个设备之间的最小距离。计算后的服务器结果应该与设备放在彼此旁边的2-3米相似

那么当服务器端的设备彼此相邻时,计算两台设备之间的最小距离的可能方法是什么

注意:我需要计算以kms或英里为单位的距离,这是设备彼此相邻时的最大差异。我发现余弦公式和余弦球面定律是计算的最佳方法,但我需要在这些公式中做更多,以获得2个设备之间的最小差异。不在Android设备上。此问题与This Question

无关

2 个答案:

答案 0 :(得分:0)

我在PHP中使用了Haversine公式来计算两个地理坐标之间的距离(以公里为单位):

// 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;
}

我想,在lon和lat 中具有足够的精度会产生乘以1,000 migth的结果作为以米为单位的距离度量,对吗?

根据https://gis.stackexchange.com/questions/8650/measuring-accuracy-of-latitude-and-longitude,小数点后五位的值可达1.1米:它将树木相互区分开来。

答案 1 :(得分:0)

关于原始帖子中的最后一个注意:如果您使用的公式对于非常小的距离不够准确,您可以尝试ellipsoidal trigonometry。无论如何,GPS坐标都是在椭圆体上测量的,因此,Haversine公式是近似值。如果你这样做,你也应该看看gis.stackexchange

(这是作为评论,因为我缺乏完整答案的知识,但我没有足够的声誉来发表评论)