Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich negative Peilungswerte korrigieren, wenn ich die Haversine-Formel in Python zur Berechnung von Entfernung und Peilung zwischen GPS-Punkten verwende?

Wie kann ich negative Peilungswerte korrigieren, wenn ich die Haversine-Formel in Python zur Berechnung von Entfernung und Peilung zwischen GPS-Punkten verwende?

Barbara Streisand
Barbara StreisandOriginal
2024-11-30 16:29:10683Durchsuche

How Can I Correct Negative Bearing Values When Using the Haversine Formula in Python to Calculate Distance and Bearing Between GPS Points?

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

In diesem Python-Leitfaden befassen wir uns mit der Haversine-Formel, einem leistungsstarken Tool zur Bestimmung der Entfernung und Peilung zwischen zwei GPS-Koordinaten.

Problem:

Wir zielen um die Entfernung und Peilung zwischen zwei GPS-Punkten zu berechnen, stoßen jedoch auf eine Diskrepanz in der Peilungsausgabe, die zu negativen Werten führt, obwohl sie im Bereich von 0-360 Grad liegen sollte.

Code:

Der bereitgestellte Code verwendet die Haversine-Formel, um sowohl Entfernung als auch Peilung zu berechnen:

from math import radians, cos, sin, asin, sqrt

def haversine(lon1, lat1, lon2, lat2):
    # Convert decimal degrees to radians
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])

    # Haversine 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))
    r = 6371 # Radius of earth in kilometers
    return c * r

Peilung Berechnung:

Das Problem mit dem bereitgestellten Code liegt in der Lagerberechnung. Um dies zu korrigieren, müssen wir die Zeile ändern:

Bearing = atan2(cos(lat1)*sin(lat2)-sin(lat1)*cos(lat2)*cos(lon2-lon1), sin(lon2-lon1)*cos(lat2))

An:

Bearing = degrees(atan2(sin(lon2-lon1)*cos(lat2), cos(lat1)*sin(lat2)-sin(lat1)*cos(lat2)*cos(lon2-lon1)))

Diese Anpassung stellt sicher, dass die Lagerausgabe mit dem erwarteten Bereich von 0-360 Grad übereinstimmt.

Fazit:

Nachdem die Peilungsberechnung korrigiert wurde, bestimmt der Code nun den Abstand genau und Peilung zwischen den bereitgestellten GPS-Punkten. Die Haversine-Formel erweist sich als robustes Werkzeug für geografische Berechnungen und ermöglicht eine präzise Messung von Entfernungen auf der Erdoberfläche.

Das obige ist der detaillierte Inhalt vonWie kann ich negative Peilungswerte korrigieren, wenn ich die Haversine-Formel in Python zur Berechnung von Entfernung und Peilung zwischen GPS-Punkten verwende?. 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