Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Formula Haversine Mengira Jarak dan Galas Antara Titik GPS dalam Python?

Bagaimanakah Formula Haversine Mengira Jarak dan Galas Antara Titik GPS dalam Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-01 18:41:10563semak imbas

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

Formula Haversine dalam Python: Mengira Jarak dan Bearing Antara Titik GPS

Dalam dunia navigasi, menentukan jarak dan bearing antara dua titik GPS adalah penting. Formula Haversine menyediakan cara yang tepat untuk mengira nilai ini menggunakan geometri sfera.

Mengira Jarak Menggunakan Formula Haversine

Untuk mengira jarak antara dua titik GPS, kita perlu menukar latitud dan longitudnya daripada darjah perpuluhan kepada radian. Kami kemudian menggunakan 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))
distance = c * r

di mana dlon dan dlat mewakili perbezaan longitud dan latitud, a ialah nilai perantaraan, dan r ialah jejari Bumi (6371 kilometer untuk kilometer atau 3956 batu untuk batu).

Mengira Galas Menggunakan Formula Haversine

Selain menentukan jarak, kita juga boleh mencari bearing (azimut) dari titik pertama ke titik kedua menggunakan formula Haversine:

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

di mana dlon ialah perbezaan longitud, lat1 dan lat2 ialah latitud bagi dua titik, x dan y ialah nilai perantaraan, dan bearing mewakili azimut yang diukur dalam radian dari utara mengikut arah jam.

Pelaksanaan Python

Berikut ialah pelaksanaan Python bagi formula Haversine untuk mengira jarak dan bearing:

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

Atas ialah kandungan terperinci Bagaimanakah Formula Haversine Mengira Jarak dan Galas Antara Titik GPS 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