Heim >Backend-Entwicklung >Python-Tutorial >Wie berechnet die Haversine-Formel die Entfernung und Peilung zwischen GPS-Punkten in Python?

Wie berechnet die Haversine-Formel die Entfernung und Peilung zwischen GPS-Punkten in Python?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-01 18:41:10557Durchsuche

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

Haversine-Formel in Python: Entfernung und Peilung zwischen GPS-Punkten berechnen

In der Welt der Navigation ist die Bestimmung der Entfernung und Peilung zwischen zwei GPS-Punkten von entscheidender Bedeutung. Die Haversine-Formel bietet eine präzise Möglichkeit, diese Werte mithilfe der sphärischen Geometrie zu berechnen.

Berechnung der Entfernung mithilfe der Haversine-Formel

Um die Entfernung zwischen zwei GPS-Punkten zu berechnen, müssen wir ihre Breiten- und Längengrade umrechnen von Dezimalgrad bis Bogenmaß. Wir wenden dann die Formel an:

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

wobei dlon und dlat die Unterschiede in Längen- und Breitengrad darstellen, a ein Zwischenwert ist und r der Radius der Erde ist (6371 Kilometer für Kilometer oder 3956 Meilen für). Meilen).

Berechnung der Peilung mit der Haversine-Formel

Zusätzlich zur Bestimmung der Entfernung können wir auch die Peilung ermitteln (Azimut) vom ersten Punkt zum zweiten Punkt unter Verwendung der Haversine-Formel:

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

wobei dlon die Längendifferenz ist, lat1 und lat2 die Breitengrade der beiden Punkte sind, x und y Zwischenwerte sind , und Peilung stellt den Azimut dar, gemessen im Bogenmaß von Norden im Uhrzeigersinn.

Python Implementierung

Hier ist eine Python-Implementierung der Haversine-Formel zur Berechnung von Entfernung und Peilung:

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

Das obige ist der detaillierte Inhalt vonWie berechnet die Haversine-Formel die Entfernung und Peilung zwischen GPS-Punkten in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn