首页 >后端开发 >Python教程 >使用Python中的半正矢公式计算GPS点之间的距离和方位角时,如何修正负方位角值?

使用Python中的半正矢公式计算GPS点之间的距离和方位角时,如何修正负方位角值?

Barbara Streisand
Barbara Streisand原创
2024-11-30 16:29:10597浏览

How Can I Correct Negative Bearing Values When Using the Haversine Formula in Python to Calculate Distance and Bearing Between GPS Points?

Python 中的半正弦公式:计算 GPS 点之间的距离和方位

在本 Python 指南中,我们将深入研究半正弦公式,这是一个用于确定两个 GPS 之间的距离和方位

问题:

我们的目标是计算两个 GPS 点之间的距离和方位,但在方位输出中遇到了差异,这会产生负值,而它应该0-360范围内

代码:

提供的代码利用半正弦公式计算距离和方位角:

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

def haversine(lon1, lat1, lon2, lat2):
    # 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
    return c * r

方位角计算:

所提供代码的问题在于方位角计算。要纠正它,我们需要修改以下行:

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

至:

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

此调整可确保轴承输出与 0-360 度的预期范围一致。

结论:

在轴承计算固定的情况下,代码现在可以准确确定所提供的 GPS 点之间的距离和方位。事实证明,半正矢公式是地理计算的强大工具,可以精确测量地球表面的距离。

以上是使用Python中的半正矢公式计算GPS点之间的距离和方位角时,如何修正负方位角值?的详细内容。更多信息请关注PHP中文网其他相关文章!

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