This calculates the midpoint between two GPS coordinates along the Earth's surface. Based on formula from http://www.movable-type.co.uk/scripts/latlong.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import math
def midpoint(x1, y1, x2, y2):
#Input values as degrees
#Convert to radians
lat1 = math.radians(x1)
lon1 = math.radians(x2)
lat2 = math.radians(y1)
lon2 = math.radians(y2)
bx = math.cos(lat2) * math.cos(lon2 - lon1)
by = math.cos(lat2) * math.sin(lon2 - lon1)
lat3 = math.atan2(math.sin(lat1) + math.sin(lat2), \
math.sqrt((math.cos(lat1) + bx) * (math.cos(lat1) \
+ bx) + by**2))
lon3 = lon1 + math.atan2(by, math.cos(lat1) + Bx)
return [round(math.degrees(lat3), 2), round(math.degrees(lon3), 2)]
|