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