Entfernung und Peilung zwischen zwei Lat/Lon-Punkten in Python berechnen
English
Deutsch
Problem:
Angenommen, wir haben die folgenden Punkte, die durch ihre Breiten- und Längengrade in Python repräsentiert werden:
points.py
a = (48.11617185, 11.743858785932662)
b = (48.116026149999996, 11.743938922310974)und wir wollen sowohl Entfernung als auch Peilung zwischen diesen Punkten auf WGS84 oder einem anderen Geoid der Wahl berechnen.
Lösung
Dafür kann geographiclib verwendet werden:
compute_distance_bearing.py
from geographiclib.geodesic import Geodesic
result = Geodesic.WGS84.Inverse(*a, *b)
distance = result["s12"] # in [m] (meters)
# in [m] (Meter)
bearing = result["azi1"] # in [°] (degrees)
# in [°] (Grad)Geodesic.WGS84.Inverse(*a, *b) ist nur eine Kurzschreibweise für Geodesic.WGS84.Inverse(a[0], a[1], b[0], b[1]), also nicht von der Syntax verwirren lassen.
Mit unseren Beispielkoordinaten von oben ist result
result.json
{'lat1': 48.11617185,
'lon1': 11.743858785932662,
'lat2': 48.116026149999996,
'lon2': 11.743938922310974,
'a12': 0.00015532346032069415,
's12': 17.26461706032189,
'azi1': 159.78110567187977,
'azi2': 159.7811653333465}Daher
result_summary.py
distance = 17.26461706032189 # m
bearing = 159.78110567187977 # °If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow