Problem:
Let’s assume we have the following points represented by their latitude & longitude in Python:
a = (48.11617185, 11.743858785932662) b = (48.116026149999996, 11.743938922310974)
and we want to compute both distance and bearing between those points on the WGS84 or any other Geoid of your choosing.
Solution:
We can use geographiclib to do that:
from geographiclib.geodesic import Geodesic result = Geodesic.WGS84.Inverse(*a, *b) distance = result["s12"] # in [m] (meters) bearing = result["azi1"] # in [°] (degrees)
Geodesic.WGS84.Inverse(*a, *b)
is just a shorthand for Geodesic.WGS84.Inverse(a[0], a[1], b[0], b[1])
, so don’t be too confused by the syntax.
Using our example coordinates from above result
is
{'lat1': 48.11617185, 'lon1': 11.743858785932662, 'lat2': 48.116026149999996, 'lon2': 11.743938922310974, 'a12': 0.00015532346032069415, 's12': 17.26461706032189, 'azi1': 159.78110567187977, 'azi2': 159.7811653333465}
Therefore,
distance = 17.26461706032189 # m bearing = 159.78110567187977 # °