代码直接放到utils目录下

根据经纬度计算两个点之间的距离_元组根据经纬度计算两个点之间的距离_测试点_02

from haversine import haversine
from math import sin, asin, cos, radians, fabs, sqrt


def hav(theta):
"""sin方"""
s = sin(theta / 2)
return s * s

def get_dis_by_haversine(lon_lat_first, lon_lat_second):
"""
获取经纬度方式一
参数:经度 纬度
"""
lon_lat_first = (lon_lat_first[1], lon_lat_first[0])
lon_lat_second = (lon_lat_second[1], lon_lat_second[0])
dis = haversine(lon_lat_first, lon_lat_second)
return dis * 1000


def get_distance_by_hav(lon_lat_first, lon_lat_second):
"""
获取经纬度方式二
参数:经度 纬度
"""
EARTH_RADIUS = 6371 # 地球平均半径,6371km
lng0 = lon_lat_first[0]
lat0 = lon_lat_first[1]
lng1 = lon_lat_second[0]
lat1 = lon_lat_second[1]
"""纬度 经度 """
"""用haversine公式计算球面两点间的距离。"""
# 经纬度转换成弧度
lat0 = radians(lat0)
lat1 = radians(lat1)
lng0 = radians(lng0)
lng1 = radians(lng1)
dlng = fabs(lng0 - lng1)
dlat = fabs(lat0 - lat1)
h = hav(dlat) + cos(lat0) * cos(lat1) * hav(dlng)
distance = 2 * EARTH_RADIUS * asin(sqrt(h))
return distance * 1000


if __name__ == '__main__':
"""
说明:直接导入两个函数, 用哪个都可以
传参:两个元组
格式(经度,纬度),(经度,纬度)
"""

# 输入的格式:经度,纬度
# 这两个测试点不要动
lon_lat_first = (113.0612727, 23.0475255)
lon_lat_second = (113.0612206, 23.0474695)
print(get_dis_by_haversine(lon_lat_first, lon_lat_second))
print(get_distance_by_hav(lon_lat_first, lon_lat_second))

View Code

 

-----------------------------------------------------------------------------------------------------------------------------------------