python实现给定两个城市的坐标计算两地相距多少公里

代码如下:

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小牛牛先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值