通过百度地图路线规划获取出行距离与时间

解决步行出行研究中的距离测度问题

最近出于研究的目的,需要获取一系列出行起止点间的步行网络距离,这个环节原本在研究设计的时候是预期采用GIS里的网络分析完成。但经过一番尝试后结果实在不尽如人意,很大一部分原因是没有如此完善的大规模步行网络数据,一方面道路网络的拓扑属性质量比较低,手工调整需要耗费大量时间;另一方面步行网络很多时候不仅仅基于现有的车行道,独立完成大规模步行网络的校正实在困难。

于是我打起了百度地图提供的路径规划服务的主意,百度的步行导航相对于自己做的网络分析还是准确很多,并且通过API调用可以获得更多更丰富的数据。最终通过这一方法完成了出行距离与时间的计算。

一些注意事项

  1. 这里使用的服务是web端的轻量级路线规划,服务文档见:http://lbsyun.baidu.com/index.php?title=webapi/directionlite-v1 返回参数其实很丰富,包括了路径的详细信息,只是由于我只需要时间和距离所以没有获取其他的数据。有需要的可以自行修改。
  2. 本服务需要的API key为服务端的key,浏览器端的不能使用。
  3. 个人开发者认证账号限额为每天3W次,并发50次。很大程度上是够用的。
  4. 串行处理相对来说有点慢,在数据量小的情况下还能接受。后面尝试更新了并行处理的方法,但是由于不是全自动的这里就不放上来了。

完整代码

# -*- coding: utf-8 -*-
"""
Created on Wed May  5 10:10:31 2021
@author: BoyceToon
"""
import pandas as pd
import numpy as np
import requests
import json
from queue import Queue

# 以下部分需要填写
file_path = "" # 数据文件绝对路径,csv格式
rows = 0 #起始行数,默认为0
travel_mode = "walking" #交通方式,可选:driving\riding\walking\transit
slat_label = "samp_lat" #表格中起始点纬度的标签
slng_label = "samp_lng" #表格中起始点经度的标签
dlat_label = "lat_wgs84" #表格中目的地纬度的标签
dlng_label = "lng_wgs84" #表格中目的地经度的标签
coord_type = "wgs84" #输入坐标系,可选:wgs84\bd09ll\gcj02
keylist=["key1","key2","key3"] # API Key池, 以" ", " "的形式加入可用的AK

df = pd.read_csv(file_path) #读取数据
nrows = df.shape[0] #获得行数
qKey=Queue()

def stod(slat,slng,dlat,dlng):#输入:起点纬度、起点经度、终点纬度、终点经度
    url ="http://api.map.baidu.com/directionlite/v1/"+trvel_mode+"?" 
    ak = qKey.get()
    real_url = url +"origin="
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值