代码如下:
from math import radians, cos, sin, asin, sqrt
'''
给定两个地址的坐标,计算返回两地相距多少公里
demo:
address1=成都 lon1 = 104.071000 lat1 = 30.670000
address2=宜宾 104.622000 lat2 = 28.765000
'''
def get_address_distance(lon1,lat1,lon2,lat2):
# lon1 = 104.071000
# lat1 = 30.670000
# lon2 = 104.622000
# lat2 = 28.765000
# 将十进制度数转化为弧度
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine公式
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
r = 6371 # 地球平均半径,单位为公里
#返回结果除以1000以公里为单位保留两位小数
return round((c * r * 1000)/1000, 2)