I wanting to compare the distance between two sets of lat/long and I need help inputting my lat/long fields into the Haversine formula.
I am able to print my two sets of lat/longs (print floats1, floats2, floats3, and floats4). I am unsure how to take these variables and use them as my inputs for the Haversine definition.
I was able to find similar code on GIS Stack Exchange, but I am fairly new to python and having some trouble.
import csv
import math
def haversine(lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees).
Source: http://gis.stackexchange.com/a/56589/15183
"""
# convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(math.radians, [lon1, lat1, lon2, lat2])
# haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = math.sin(dlat/2)**2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon/2)**2
c = 2 * math.asin(math.sqrt(a))
km = 6367 * c
return km
with open(r'PathtoFile.csv', 'rb') as f1:
reader1 = csv.reader(f1, delimiter=',', quoting=csv.QUOTE_NONE)
header1 = reader1.next()
for row1 in reader1:
floats1 = map(float, row1[16:]) #lon1
floats2 = map(float, row1[17:]) #lat1
floats3 = map(float, row1[18:]) #lon2
floats4 = map(float, row1[19:]) #lat2
print(floats1)
print(floats2)
print(floats3)
print(floats4)
print haversine(floats1[1],floats1[0],floats3[1],floats4[0])