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 # °

Check out similar posts by category: Geography, Python