Users of our US Zip Codes, US Cities and World Cities databases often need to calculate the distance between two geographic coordinates (in lat/lng). Since the earth is a sphere, you can't use the distance formula that works for two points in a plane. Instead, you should use the Haversine Formula. This formula is an approximation as it assumes the earth is a sphere when, in reality, it's an ellipsoid. However, it is fast and close enough for most uses. Feel free to use our MIT-released implementations below in JavaScript and Python.
/* Distance between two lat/lng coordinates in km using the Haversine formula */
function getDistanceFromLatLng(lat1, lng1, lat2, lng2, miles) { // miles optional
if (typeof miles === "undefined"){miles=false;}
function deg2rad(deg){return deg * (Math.PI/180);}
function square(x){return Math.pow(x, 2);}
var r=6371; // radius of the earth in km
lat1=deg2rad(lat1);
lat2=deg2rad(lat2);
var lat_dif=lat2-lat1;
var lng_dif=deg2rad(lng2-lng1);
var a=square(Math.sin(lat_dif/2))+Math.cos(lat1)*Math.cos(lat2)*square(Math.sin(lng_dif/2));
var d=2*r*Math.asin(Math.sqrt(a));
if (miles){return d * 0.621371;} //return miles
else{return d;} //return km
}
/* Copyright 2016, Chris Youderian, SimpleMaps, http://simplemaps.com/resources/location-distance
Released under MIT license - https://opensource.org/licenses/MIT */
from math import radians, cos, sin, asin, sqrt
# Distance between two lat/lng coordinates in km using the Haversine formula
def getDistanceFromLatLng(lat1, lng1, lat2, lng2, miles=False): # use decimal degrees
r=6371 # radius of the earth in km
lat1=radians(lat1)
lat2=radians(lat2)
lat_dif=lat2-lat1
lng_dif=radians(lng2-lng1)
a=sin(lat_dif/2.0)**2+cos(lat1)*cos(lat2)*sin(lng_dif/2.0)**2
d=2*r*asin(sqrt(a))
if miles:
return d * 0.621371 # return miles
else:
return d # return km
# Copyright 2016, Chris Youderian, SimpleMaps, http://simplemaps.com/resources/location-distance
# Released under MIT license - https://opensource.org/licenses/MIT
Home (Maps) | Database License | Privacy | Database Releases | Database Order Lookup | Resources | Contact | FAQs
SimpleMaps.com is a product of Pareto Software, LLC. © 2010-2024.