Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengira Jarak Antara Koordinat Latitud dan Longitud dengan Cepat dalam 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!