首页 >后端开发 >Python教程 >如何利用半正矢公式准确计算GPS距离和方位?

如何利用半正矢公式准确计算GPS距离和方位?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-02 08:42:11948浏览

How Can I Accurately Calculate GPS Distance and Bearing Using the Haversine Formula?

GPS 计算的半正矢公式:距离和方位

问题:

计算距离两个 GPS 点之间的方位通常涉及利用半正弦距离公式。然而,在获得正确的方位角时可能会出现问题,特别是在产生负值的情况下。

解决方案:

要计算距离,可以使用半正弦公式:

from math import radians, cos, sin, asin, sqrt

def haversine(lon1, lat1, lon2, lat2):
    """
    Calculate the great circle distance in kilometers between two points 
    on the earth (specified in decimal degrees)
    """
    # convert decimal degrees to radians 
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])

    # haversine formula 
    dlon = lon2 - lon1 
    dlat = lat2 - lat1 
    a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
    c = 2 * asin(sqrt(a)) 
    r = 6371 # Radius of earth in kilometers. Use 3956 for miles. Determines return value units.
    return c * r

要确定方位,请将方位变量调整为如下:

Bearing = atan2(sin(lon2-lon1)*cos(lat2), cos(lat1)*sin(lat2) - sin(lat1)*cos(lat2)*cos(lon2-lon1))
Bearing = degrees(Bearing)

此修改可确保方位角位于 0 到 360 度之间。

以上是如何利用半正矢公式准确计算GPS距离和方位?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn