基于百度地图API计算任意两点间的出行距离

本文介绍了如何利用百度地图API计算地理坐标间的驾驶和骑行距离。首先需要在官网注册并获取API key,然后通过导入相关Python库,如requests和json,构造URL请求并解析返回的JSON数据,提取出行距离。示例代码展示了如何处理数据并保存结果到Excel文件。注意,使用时需注意数据格式、查询限制和坐标系的一致性。
摘要由CSDN通过智能技术生成

原文:基于百度地图API计算任意两点间的出行距离_爱吃面条的陈同学的博客-CSDN博客_百度地图api距离计算

前言
为了方便自己以后查找代码,也不想让自己的桌面变得凌乱不堪,所以将把自己之前的代码保存到这里面。

之前做项目时候,遇到了以下问题:对于任意两点间的地理坐标(火星坐标系),怎样计算其距离? 数据示例如下:

最终基于百度API搞定了这个问题,下面是相关思路和代码。

使用步骤
首先我们需要自己去百度地图api官网上申请注册自己的key,网址:https://lbsyun.baidu.com/

1.导入相关包
import requests
import json
import pandas as pd
from tqdm import tqdm  #可以显示进度条
tqdm.pandas(desc='pandas bar')

2.计算小汽车距离
def driving_distance(origins,destinations):
    url = 'https://api.map.baidu.com/routematrix/v2/driving?output=json&coord_type=gcj02&origins='
    ak = 'xxxxxxxxxxxxxxxxx' #输入自己申请的key
    real_url = url + origins+'&destinations='+destinations+'&ak='+ak
    req = requests.get(real_url)
    t = req.text
    data =json.loads(t)
    try:
        distance=data["result"][0]['distance']['value'] # 输出街道名称
    except:
        distance='error'
    return distance

3.计算骑行距离
def riding_distance(origins,destinations):
    url = 'https://api.map.baidu.com/routematrix/v2/riding?output=json&coord_type=gcj02&origins='
    ak = 'xxxxxxxxxxxxxxxxx' #输入自己申请的key
    real_url = url + origins+'&destinations='+destinations+'&ak='+ak
    req = requests.get(real_url)
    t = req.text
    data =json.loads(t)
    try:
        distance = data["result"][0]['distance']['value']  # 输出街道名称
    except:
        distance = 'error'
    return distance



4.创建主函数
if __name__=='__main__':
    filepath=r'C:\Users\input.xlsx'
    data=pd.read_excel(filepath)
    data=data.iloc[:20000,1:] #个人账号有限额,建议不要超过两万行
    data['origins']=data.apply(lambda x:str(x.出发Y)+','+str(x.出发X),axis=1)
    data['destinations'] = data.apply(lambda x: str(x.到达Y) + ',' + str(x.到达X), axis=1)
    data['driving_distance']=data.progress_apply(lambda x:driving_distance(x.origins,x.destinations),axis=1)
    data['riding_distance'] = data.progress_apply(lambda x: riding_distance(x.origins, x.destinations), axis=1)
    data.to_excel('output.xlsx',index=False)

总结
本文主要基于百度API实现任意给定两点坐标的距离计算,但有以下需要注意的点:
①正确的数据格式。经纬度的数值要一一对应的输入。
②较小的数据容量。个人账号有查询数量限制,建议一次性不要调用次数太多了。
③准确的坐标系。注意自己的数据是wgs84、gcj02或者其他坐标系。
④公共交通一体化。百度地图查询公共交通路径时一般将公交和地铁放在一块儿组合查询,所以这种方法可以得到公共交通的总出行距离,但是得不到公交和地铁各自的出行距离。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值