Skip to content

Instantly share code, notes, and snippets.

@rochacbruno
Created June 6, 2012 17:43
Show Gist options
  • Select an option

  • Save rochacbruno/2883505 to your computer and use it in GitHub Desktop.

Select an option

Save rochacbruno/2883505 to your computer and use it in GitHub Desktop.
Calculate distance between latitude longitude pairs with Python
#!/usr/bin/env python
# Haversine formula example in Python
# Author: Wayne Dyck
import math
def distance(origin, destination):
lat1, lon1 = origin
lat2, lon2 = destination
radius = 6371 # km
dlat = math.radians(lat2-lat1)
dlon = math.radians(lon2-lon1)
a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) \
* math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
d = radius * c
return d
@AsadTanvir

AsadTanvir commented Jul 28, 2020

Copy link
Copy Markdown

Hello, thank you very much for this masterpiece. But my concern is how to do so when you have an excel file, I have bunch of cities and finding the distance from those cities to one reference point (which is also a city). Thanks

Hello @Zagroz, did you able to find the distances from an excel file using this code? I am also stuck in similar kind of situation. Thank you!

@vivek1240

Copy link
Copy Markdown

Hello, thank you very much for this masterpiece. But my concern is how to do so when you have an excel file, I have a bunch of cities and finding the distance from those cities to one reference point (which is also a city). Thanks

Hello @Zagroz, did you able to find the distances from an excel file using this code? I am also stuck in a similar kind of situation. Thank you!

Hello, I have implemented something similar to what you are trying to do. You can visit my repo which involves what you desire. The link is here:

https://github.com/vivek1240/k-means-clustering-via-haversine-distance-/blob/master/clustering_stores_via_haversine_distance_kmeans.ipynb

Please inform if this solves your problem.
All the Best!!

@biyak

biyak commented Nov 11, 2020

Copy link
Copy Markdown

Thanks for the eloquent and easily understandable code!

@sreedhar007

Copy link
Copy Markdown

Thanks for this, can anyone explain what are 'a' and 'c' assignments , can we have better names for these variables ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment