今天七夕节,祝大家七夕节快乐!
对于那些异地恋,要上班的人来说,并不能见面,不如一起来计算一下你和他(她)之间的距离吧。
半正矢公式是一种根据两点的经度和纬度来确定大圆上两点之间距离的计算方法。
Python语言:
import math
def geo_distance(origin, destination):
'''
>>> origin = (48.1372, 11.5756) # Munich
>>> destination = (52.5186, 13.4083) # Berlin
>>> round(distance(origin, destination), 1)
504.2
'''
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