根据经纬度计算两个点之间的距离
代码直接放到utils目录下

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))
-----------------------------------------------------------------------------------------------------------------------------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!