首頁 >後端開發 >Python教學 >如何在Python中快速計算經緯度座標之間的距離?

如何在Python中快速計算經緯度座標之間的距離?

Barbara Streisand
Barbara Streisand原創
2024-10-31 23:36:451053瀏覽

How Can I Calculate Distances Between Latitude and Longitude Coordinates Quickly in Python?

快速半正弦近似:Python/Pandas 解決方案

簡介

簡介

簡介

<code class="python">import numpy as np

def haversine_np(lon1, lat1, lon2, lat2):
    """
    Calculate the great circle distance between two points
    on the earth (specified in decimal degrees)

    All args must be of equal length.    

    """
    lon1, lat1, lon2, lat2 = map(np.radians, [lon1, lat1, lon2, lat2])

    dlon = lon2 - lon1
    dlat = lat2 - lat1

    a = np.sin(dlat/2.0)**2 + np.cos(lat1) * np.cos(lat2) * np.sin(dlon/2.0)**2

    c = 2 * np.arcsin(np.sqrt(a))
    km = 6378.137 * c
    return km</code>

簡介

計算緯度間的距離經度座標是地理空間資料分析的常見任務。然而,對數百萬行使用傳統的半正矢公式可能會導致計算成本高。本文提出了一種使用 NumPy 向量化來縮短執行時間的快速替代方案。

<code class="python">df = pd.DataFrame(...your_dataframe...)
lon1, lat1, lon2, lat2 = df['lon1'], df['lat1'], df['lon2'], df['lat2']
df['distance'] = haversine_np(lon1, lat1, lon2, lat2)</code>
向量化 NumPy 解

NumPy 向量化方法利用對資料數組進行操作的 NumPy 函數,避免了Python 中循環的速度很慢。以下是半正弦函數的向量化版本:

用法要使用向量化解決方案,輸入緯度和經度值應為 NumPy 陣列。例如,要計算Pandas DataFrame 的距離,您可以提取必要的列並使用hasrsine_np 函數,如下所示:優點NumPy 向量化該優點NumPy 向量化該優點NumPy 向量化該優點NumPy 向量化該優點NumPy 向量化該優點NumPy 向量化該優點NumPy 矢量方法顯著提高了性能,可以立即計算數百萬個距離。這是透過避免循環緩慢並利用 NumPy 的高效數組操作來實現的。

以上是如何在Python中快速計算經緯度座標之間的距離?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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