Python:计算经纬度距离

这篇博客介绍了两种使用Python计算经纬度之间距离的方法。第一种利用Haversine公式,将经纬度转换为弧度并进行计算;第二种则借助Scipy库的cdist函数,通过欧氏距离计算。两种方法的结果以米为单位,适用于地理定位和距离估算。
摘要由CSDN通过智能技术生成

Python计算经纬度的方法:
这里介绍两种方式,其最终结果都是以【米】作为单位,虽然结果值稍微有误差,但误差不大。

1. List item

方式1:

维基百科公式(要求的是公式中的d):
在这里插入图片描述
Python代码如下(返回结果是单位是:米):

from math import radians,sin,cos,asin,sqrt
def haversine_dis(lon1, lat1, lon2, lat2):
    #将十进制转为弧度
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
    
    #haversine公式
    d_lon = lon2 - lon1
    d_lat = lat2 - lat1
    aa = sin(d_lat/2)**2 + cos(lat1)*cos(lat2)*sin(d_lon/2)**2
    c = 2 * asin(sqrt(aa))
    r = 6371 # 地球半径,千米
    return c*r*1000

方式2:

from scipy.spatial.distance import cdist
lonlat1=[[102.8083989,24.8962294]]    # 经度、维度
lonlat2=[[102.471938,24.912491]]   # 经度、维度
distance=cdist(lonlat1,lonlat2,metric='euclidean')
distance=list(list(list(distance))[0]*100000)[0]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值