python 计算两个地址之间的距离方法(经纬度)

首先需要获取经纬度,可以使用各种api获取,例如百度地图或高德地图

输入两个地址

上海市徐汇区桂箐路靠近华鑫天地

上海市浦东新区张江高科技园 

通过api获取的经纬度

上海市徐汇区桂箐路靠近华鑫天地 经纬度: 121.407124,31.169677
上海市浦东新区张江高科技园 经纬度: 121.593357,31.214343

lon1 = 121.407124
lat1 = 31.169677
lon2 = 121.593357
lat2 =31.214343

注意返回数值单位的处理

#计算距离 
from math import radians, cos, sin, asin, sqrt 
# 将十进制度数转化为弧度 
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 # 地球平均半径,单位为公里 
return c * r * 1000  #返回单位米
return c * r  #返回单位公里


18397.59615786144 米
18.39759615786144 公里

reference

https://www.jb51.net/article/141737.htm

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值