文章目录

  • 一、交通可达性是什么?
  • 二、计算步骤
    • 1.引入库
    • 2.调用百度API进行两点之间的路径查询
    • 3.输入待计算的文件和保存结果文件路径
    • 4.读取文件并进行时间和距离计算
    • 5.代码总览
  • 总结

一、交通可达性是什么?

交通可达性最重要的考虑因素是交通成本,即交通距离与交通时间
可以使用API 的路径规划服务功能,选择公交路线,获取两个位置之间的交通时间和交通距离,其使用规则是通过http/https 形式发起检索请求,将两个位置的坐标传递给百度地图服务器,服务器通过计算后将路径规划结果返回。从返回的参数中选择distance 和duration 分别表示总交通网络距离和总交通出行时间。

案例说明:
比如我们要计算上海迪士尼乐园的公交可达性,可以先将上海划分为500m*500m的网格,然后将网格的经纬度作为起点,将迪士尼乐园的经纬度作为终点,通过百度地图API计算起终点的时间和距离,再借用GIS分析工具,将结果可视化在地图上,即可生成如下可达性地图。

该篇文章主要介绍如何借用百度API计算两点之间的真实出行时间和距离。

二、计算步骤

1.引入库

代码如下(示例):

import requests
import json
import time

2.调用百度API进行两点之间的路径查询

若查询数据量较大,服务器有时会掉线,因此做了等待后重新尝试连接的功能。
代码如下(示例):

def getjson(ocoo,dcoo):# 先纬度后经度url='http://api.map.baidu.com/direction/v2/driving?origin='+ocoo+'&destination='+dcoo+'&coord_type=wgs84&departure_time=1595548800&tactics_incity=4&ak=XXX'while True:try:response=requests.get(url=url,timeout=5)breakexcept requests.exceptions.ConnectionError:print ('ConnectionError -- please wait 3 sec')time.sleep(3)except requests.exceptions.ChunkedEncodingError:print ('ChunkedEncodingError -- please wait 3 sec')time.sleep(3)except:print ('Unknow error')time.sleep(3)html=response.textdecodejson=json.loads(html)return decodejson

3.输入待计算的文件和保存结果文件路径

将待查询的两点的位置属性保存到文本文件,文件格式为

记录编号 起点经度 起点纬度 终点经度 终点纬度
1 113.8375 22.8075 113.8275 22.8175
2 113.8375 22.5655 113.8875 22.4626
3 113.8375 22.1658 113.8732 22.1235
# 输入查询文件的路径
file_object=open(r'D:\input\fromsz_base202011.csv','r')
# 输出结果文件的保存路径
file_object2=open(r'D:\fromsz_base_dis202011.txt','w')

4.读取文件并进行时间和距离计算

try:for line in file_object:count=count+1spline=line.split(',')idn=spline[0]coor=spline[5].strip()+','+spline[4].strip()door=spline[7].strip()+','+spline[6].strip()#print coordecodejson=getjson(coor,door)if decodejson.get('status')==0:#表示运行成功result=decodejson.get('result')routes=result.get('routes')#获得需要的时间和距离if len(routes)>0:     time2=routes[0].get('duration')distance=routes[0].get('distance')file_object2.write(str(idn)+','+str(time2)+','+str(distance) +'\n')if count%10==0:finishtime=time.asctime( time.localtime(time.time()))finishtime1=time.time()print (count)print ('duration:',(finishtime1-starttime1)/60.0,'mins')else:print (str(coor)+','+ str(decodejson.get('status'))+decodejson.get('message'))

5.代码总览

# -*- coding: utf-8 -*-
# @Author: Xie
# @Date:   2021-04-15 11:49:25
# @Last Modified by:   Xie
# @Last Modified time: 2021-04-15 11:58:10import requests
import json
import time
starttime=time.asctime(time.localtime(time.time()))
starttime1=time.time();
# 调用百度API进行两点之间的路径查询
def getjson(ocoo,dcoo):# 先纬度后经度url='http://api.map.baidu.com/direction/v2/driving?origin='+ocoo+'&destination='+dcoo+'&coord_type=wgs84&departure_time=1595548800&tactics_incity=4&ak=XXX'while True:try:response=requests.get(url=url,timeout=5)breakexcept requests.exceptions.ConnectionError:print ('ConnectionError -- please wait 3 sec')time.sleep(3)except requests.exceptions.ChunkedEncodingError:print ('ChunkedEncodingError -- please wait 3 sec')time.sleep(3)except:print ('Unknow error')time.sleep(3)html=response.textdecodejson=json.loads(html)return decodejson
# 输入查询文件的路径
file_object=open(r'D:\input\fromsz_base202011.csv','r')
# 输入结果文件的保存路径
file_object2=open(r'D:\fromsz_base_dis202011.txt','w')
count=0
try:for line in file_object:count=count+1spline=line.split(',')idn=spline[0]coor=spline[5].strip()+','+spline[4].strip()door=spline[7].strip()+','+spline[6].strip()#print coordecodejson=getjson(coor,door)if decodejson.get('status')==0:#表示运行成功result=decodejson.get('result')routes=result.get('routes')#获得需要的时间和距离if len(routes)>0:     time2=routes[0].get('duration')distance=routes[0].get('distance')file_object2.write(str(idn)+','+str(time2)+','+str(distance) +'\n')if count%10==0:finishtime=time.asctime( time.localtime(time.time()))finishtime1=time.time()print (count)print ('duration:',(finishtime1-starttime1)/60.0,'mins')else:print (str(coor)+','+ str(decodejson.get('status'))+decodejson.get('message'))
finally:file_object.close()file_object2.close()print ('finish')

总结

以上就是利用地图API进行可达性计算的方法,操作简单,用户友好,结果准确。
而传统的GIS可达性计算,需要构建完善的GIS 交通网络模型,工作量较大。

注:API个人key有查询额度限制,企业key额度较高,若有大量查询需求,可私信提供企业key。
若有可达性分析需求,也可私信帮忙!

参考文献:
[1]《大型公共服务设施公共交通可达性评价方法》
[2]百度API文档:http://lbsyun.baidu.com/index.php?title=webapi/direction-api-v2

基于百度地图API的交通可达性分析python相关推荐

  1. Android开发-基于百度地图API开发仿滴滴出行APP界面的实现

    前 言 近年来,由于移动互联网快速的发展以及基于移动设备的APP的普及,移动互联网改变了人们的生活方式.从线上的电子支付到线下的出行,移动互联网是当今社会人们生活不可或缺的一部分,而线下出行的网约车的 ...

  2. (亲测很实用)地理位置批量转经纬度,基于百度地图api

    遇到很多地理位置需要得到其经纬度的时候,又不想或者不会写代码就很恼火, 只能一个一个去搜索去一个个复制 不管你会不会写前后端代码, 使用下面的方法就可以轻松的实现经纬度的批量查询(提示:基于百度地图a ...

  3. 基于百度地图API在AI Studio上的卫星地图块图像处理与分类

    基于百度地图API在AI Stduio上的瓦片地图块图像处理与分类 项目介绍 本项目基于百度地图API获取了不同的瓦片地图并进行合并等处理,可用于遥感和抽象地图的地图块的图像分类.分割.检测等数据的制 ...

  4. 气象地图gis php代码,基于百度地图API实现自动气象站点信息显示

    本栏目责任编辑:代 影数据库与信息管理 ComputerKnowledgeand Technology 电脑知识与技术 第9卷第27期 (2013年09月) 基于百度地图API实现自动气象站点信息显示 ...

  5. 基于百度地图API实现“网易出行“

    基于百度地图API实现"网易出行&Travel Planing" 作者:黑衣侠客 一.前言 这次项目主要是因为软件工程老师布置的作业,实现一个名为Travel Planin ...

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

    文章目录 前言 使用步骤 1.导入相关包 2.计算小汽车距离 3.计算骑行距离 4.创建主函数 总结 前言 为了方便自己以后查找代码,也不想让自己的桌面变得凌乱不堪,所以将把自己之前的代码保存到这里面 ...

  7. 基于百度地图API的微信周边搜索

    这是百度LBS与微信结合的一个例子~~,已经加到 功能描述:点击微信的[+]后发送[位置]给微信公众号,会返回周边信息,也可以发送[附近xxx],如[附近公交],或者自己标注百度地图,标注您的连锁点或 ...

  8. android的百度地图sdk获取ip,基于百度地图API的ip地址查询

    说明:使用ip地址查询太麻烦,偶然搜索发现有人已经写过基于百度API的ip地址查询,这个是前人的结晶,我只是修改了一些,勿喷. 用的python2.7,编码问题真是坑. 百度mapAPI私钥申请:ht ...

  9. 基于百度地图api实现计算目标点与自身位置的距离(js)

    这里写自定义目录标题 导入api 获取自身定位 获取目标点定位 通过经纬度计算距离的函数 导入api 下面展示一些 内联代码片. ```javascript<script type=" ...

最新文章

  1. java多线程11.非阻塞同步机制
  2. 《转》八大算法详细讲解
  3. 一文带你快速读懂.NET CLI
  4. c语言交通违章编程代码,C语言程序设计之交通处罚单管理系统 报告(内含代码).doc...
  5. oracle中的nls在哪,Oracle的NLS设置
  6. 查看文件大小du -sh ./ ll -h
  7. Nginx的原理解析
  8. 2019-12-17 drivers/clocksource/arm_arch_timer.c
  9. Ubuntu在docker容器中安装TensorFlow-1.5
  10. 基于python的学生信息管理系统毕业论文_学生信息管理系统毕业论文
  11. 为什么有符号整型最小值是-32768?
  12. React中使用worker线程
  13. WMS库存盘点流程 WMS库存盘点计划
  14. 【2016】【论文笔记】差频可调谐THz技术——
  15. Win32学习笔记 - WndProc回调函数
  16. 无法通过 Internet 连接到 Visual Paradigm 的服务器
  17. Kubernetes(k8s) YAML文件详解
  18. 利用VBA在EXCEL 获取网页上的天气
  19. PADS逻辑系列含义
  20. 2018年SCI论文--整合GEO数据挖掘完整复现 八 :STRING数据库构建蛋白质相互作用网络(PPI),cytoscape软件筛选hub基因

热门文章

  1. js室内地图开发_入门指南-室内地图 JS API | 高德地图API
  2. 服务器修改bios,DELL服务器利用OMSA修改BIOS
  3. 新垣结衣自拍照_仅使用代码创建自拍照
  4. xlsx的文件打不开的问题
  5. 成都天府软件园,一个程序员跳楼了……
  6. TQ2440使用手册
  7. OJ题 石头剪子布
  8. 大数据excel导出,内存溢出解决方案(SXSSF流用户模型)
  9. 微信小程序销毁某一注册函数_教你如何删除、关闭、注销微信小程序
  10. aqr资本二十年精选二十篇_2016年3月:前10名和编辑精选