首頁 >後端開發 >Python教學 >Python中半正矢公式如何計算GPS點之間的距離和方位?

Python中半正矢公式如何計算GPS點之間的距離和方位?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-01 18:41:10556瀏覽

How Does the Haversine Formula Calculate Distance and Bearing Between GPS Points in Python?

Python 中的半正矢公式:計算GPS 點之間的距離和方位

在導航領域,決定兩個GPS 點之間的距離和方位至關重要。半正弦公式提供了一種使用球面幾何計算這些值的精確方法。

使用半正弦公式計算距離

要計算兩個 GPS 點之間的距離,我們需要轉換它們的緯度和經度從十進制度到弧度。然後我們應用公式:

dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2) ** 2 + cos(lat1) * cos(lat2) * sin(dlon/2) ** 2
c = 2 * asin(sqrt(a))
distance = c * r

其中 dlon 和 dlat 代表經度和緯度的差異,a 是中間值,r 是地球半徑(公里為 6371 公里,或為 3956 英里)英里)。

使用半正弦公式計算方位

除了確定距離之外,我們還可以使用半正弦公式找到從第一個點到第二個點的方位角(方位角):

y = sin(dlon) * cos(lat2)
x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(dlon)
bearing = atan2(y, x)

其中dlon 是經度差,lat1 和lat2 是兩點的緯度, x 和 y是中間值,方位角表示從北順時針方向測量的以弧度為單位的方位角。

Python實作

這是用於計算距離和方位的半正矢公式的 Python 實作:

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

def haversine(lon1, lat1, lon2, lat2):
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])

    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

    return c * r

以上是Python中半正矢公式如何計算GPS點之間的距離和方位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn