impuls.tools.geo

impuls.tools.geo.earth_distance_m(lat1: float, lon1: float, lat2: float, lon2: float) float

Calculates the distance on earth using the Haversine formula. Returns the result in meters.

impuls.tools.geo.initial_bearing(lat1: float, lon1: float, lat2: float, lon2: float) float

Calculates the initial bearing when moving from (lat1, lon1) to (lat2, lon2) along a geodesic (shortest path). Returns the result in degrees.

>>> cape_town = -33.9, 18.4
>>> melbourne = -37.8, 144.9
>>> initial_bearing(*cape_town, *melbourne)
140.5123...
>>> initial_bearing(*melbourne, *cape_town)
-138.0879...
impuls.tools.geo.EARTH_DIAMETER_M = 12742017.6

Mean Earth diameter, double of EARTH_RADIUS_M.

impuls.tools.geo.EARTH_RADIUS_M = 6371008.8

Mean Earth radius, 6 371 008.8 meters. Source: https://en.wikipedia.org/wiki/Earth_radius#Arithmetic_mean_radius