With the proliferation of GPS tagging in data sets, a useful calculation to that allows to derive the distance between two points is possible using the Haversine formula. The law of havershines is a more general formula within spherical trigonometry which relates to sides and angles or spherical triangles. On the surface of a sphere the ‘straight line’ connecting two points is actually the arc of a curve on the sphere surface. This curve arc is a arc along a great circle on the sphere and is mathematically called the spherical distance.
In the haversine calculation, the radius of the earth varies around 6356.752 km to 6378.137 km so choosing a value will result in a error that can not be less than 0.5%.
From wikipedia, the calculation is defined as:
so using this formula, the distance of the great circle arc between two points on earths surface in python is:
from math import asin, cos, radians, sin, sqrt def arclen(lat_a,lon_a,lat_b,lon_b): r = 6370 #note this is for KM distance a1,a2, = (radians(lat_a),radians(lon_a)) b1,b2 = (radians(lat_b),radians(lon_b)) delta_lat = b1-a1 delta_lon = b2-a2 n = abs(sin(delta_lat/2) **2 + cos(a1)*cos(a2)*(sin(delta_lon/2) **2)) if n >1: n = 1 return 2*r*asin(sqrt(n))