Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Mengira Jarak Antara Koordinat Latitud dan Longitud dengan Cepat dalam Python?

Bagaimanakah Saya Boleh Mengira Jarak Antara Koordinat Latitud dan Longitud dengan Cepat dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-10-31 23:36:45962semak imbas

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

Penghampiran Fast Haversine: Penyelesaian Python/Panda

Pengenalan

Mengira jarak antara latitud dan koordinat longitud adalah tugas biasa dalam analisis data geospatial. Walau bagaimanapun, menggunakan formula Haversine tradisional untuk berjuta-juta baris boleh menjadi mahal dari segi pengiraan. Artikel ini membentangkan alternatif pantas menggunakan vektorisasi NumPy untuk masa pelaksanaan yang lebih pantas.

Penyelesaian NumPy Vektor

Pendekatan vektorisasi NumPy menggunakan fungsi NumPy yang beroperasi pada tatasusunan data, mengelakkan kelambatan gelung dalam Python. Di bawah ialah versi vektor fungsi Haversine:

<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>

Penggunaan

Untuk menggunakan penyelesaian vektor, nilai latitud dan longitud input hendaklah tatasusunan NumPy. Contohnya, untuk mengira jarak bagi Pandas DataFrame, anda boleh mengekstrak lajur yang diperlukan dan menggunakan fungsi haversine_np seperti berikut:

<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>

Faedah

The NumPy vectorization pendekatan meningkatkan prestasi dengan ketara, membolehkan pengiraan berjuta-juta jarak serta-merta. Ini dicapai dengan mengelakkan kelambatan gelung dan menggunakan operasi tatasusunan NumPy yang cekap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Jarak Antara Koordinat Latitud dan Longitud dengan Cepat dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn