python实现基于百度路径规划接口的坐标对获取两点驾车距离的计算
今天为大家介绍一种通过python实现坐标对间距离数据的获取方法。接口采用百度开发的路径规划接口。
1.调用接口:
接口:(传入起点坐标串,结束坐标串;ak值需要注册百度开发者) 接口详细说明
http://api.map.baidu.com/direction/v2/driving?origin=40.01116,116.339303&destination=39.936404,116.452562&ak=您的AK //GET请求
2.AK值获取:
注册成为开发者后需要添加应用,添加服务端应用勾选路径规划选项,其ak值才能调取该接口,不然将出现‘204,app拒绝服务’。

3.实现思路
- 坐标对数据集(Y.txt)中获取坐标对;----->(x1,y1/x2,y2) ----->
30.552413,114.267227/30.564768,114.235462/4758
- 日志记录(logo.txt)记录抓取过的记录序号(开始默认为-1,其后不再更改记录),用于断点续爬;----->(-1、0、1.....)
- 结果集(save.txt)用于记录数据;----->(x1,y1/x2,y2/s)----->
30.552413,114.267227/30.564768,114.235462/4758
- 文件目录结构如下图:

4.源代码
# coding=utf-8
import requests
import re
import os
from time import sleep
#访问url,返回数据JSON
def get_JSON(startStr,endStr,key):
sleep(0.5)
url='http://api.map.baidu.com/direction/v2/driving?origin='+startStr+'&destination='+endStr+'&ak='+key
# print (url)
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36',
'referer':"http://www.baidu.com",#伪造一个访问来源
}
poi_JSON = requests.get(url, headers=headers).json()
return poi_JSON #发送请求获取json数据
def jiexi_Json(resJSON):
status=resJSON['status']
if status==0:# 请求到数据
# print('数据请求成功')
distance=resJSON['result']['routes'][0]['distance']
print('路径计算完成',distance)
return distance
else:
if status==1:
print('服务内部错误')
elif status==2:
print('参数无效')
elif status==2001:
print('无骑行路线')
elif status==240:
print('ak值注册不正确,未包含路径规划服务')
else:# 额度没有了
print('额度不够了!') # 读取坐标对
def read_File(filePath):
file = open(filePath)
logoFilePath='logo.txt'
logoFile=open(logoFilePath)
for oldIndex in logoFile:# 读取日志
for index, coorItemStr in enumerate(file): # 读取坐标对
if index>int(oldIndex):
print('正在请求第',str(index+1),'条数据')
coorArr=coorItemStr.rstrip("\n").split('/')
startStr=coorArr[0].split(',')[1]+','+coorArr[0].split(',')[0]
endStr=coorArr[1].split(',')[1]+','+coorArr[1].split(',')[0]
key='你自己的百度密钥' # 百度密钥
#发送距离量算请求
poi_JSON = get_JSON(startStr,endStr,key)
distance=jiexi_Json(poi_JSON)
saveStr=startStr+'/'+endStr+'/'+str(distance)
saveText('saveY.txt',saveStr,'a+')# 记录结果
saveText(logoFilePath,str(index),'w')# 记录数据请求日志
else:
print('第',str(index+1),'条数据已经请求完成')
print('数据转换已完成!') # 以txt文件格式存储
def saveText(filePath,str,type):
type=(type if type else "a+")
# 打开一个文件
fo = open(filePath,type)
fo.write(str); #内容写入
fo.write('\n')
fo.close()# 关闭打开的文件 if __name__ == "__main__":
read_File('Y.txt')
py代码
python实现基于百度路径规划接口的坐标对获取两点驾车距离的计算的更多相关文章
- 运用百度开放平台接口根据ip地址获取位置
使用百度开放平台接口根据ip地址获取位置 今天无意间发现在百度开放平台接口,就把一段代码拿了下来,有需要的可以试试看:http://opendata.baidu.com/api.php?query=5 ...
- Python人工智能-基于百度AI接口
参考百度AI官网:http://ai.baidu.com/ 准备工作: 支持Python版本:2.7.+ ,3.+ 安装使用Python SDK有如下方式 >如果已经安装了pip,执行 pip ...
- iOS百度地图路径规划和POI检索详细总结-b
路径规划.png 百度地图的使用 百度地图API的导入网上说了许多坑,不过我遇到的比较少,这里就放两个比较常见的吧.坑一: 奥联WIFI_xcodeproj.png 如上图所示,在infoplist里 ...
- ROS(indigo)RRT路径规划
源码地址:https://github.com/nalin1096/path_planning 路径规划 使用ROS实现了基于RRT路径规划算法. 发行版 - indigo 算法在有一个障碍的环境找到 ...
- ros局部路径规划-DWA学习
ROS的路径规划器分为全局路径和局部路径规划,其中局部路径规划器使用的最广的为dwa,个人理解为: 首先全局路径规划会生成一条大致的全局路径,局部路径规划器会把全局路径给分段,然后根据分段的全局路径的 ...
- [python] A*算法基于栅格地图的全局路径规划
# 所有节点的g值并没有初始化为无穷大 # 当两个子节点的f值一样时,程序选择最先搜索到的一个作为父节点加入closed # 对相同数值的不同对待,导致不同版本的A*算法找到等长的不同路径 # 最后c ...
- 初学者路径规划 | 人生苦短我用Python
纵观编程趋势 人生苦短,我用Python,比起C语言.C#.C++和JAVA这些编程语言相对容易很多.Python非常适合用来入门.有人预言,Python会成为继C++和Java之后的第三个主流编程语 ...
- 基于pgrouting的路径规划处理
对于GIS业务来说,路径规划是非常基础的一个业务,一般公司如果处理,都会直接选择调用已经成熟的第三方的接口,比如高德.百度等.当然其实路径规划的算法非常多,像比较著名的Dijkstra.A*算法等.当 ...
- 基于Arcgis Engine 10.2(C#)+PostgreSQL 11(Postgis 3)+pgRouting 3.0实现使用数据库进行路径规划
前言:最近在(被迫)使用ArcGIS Engine10.2(.NET平台)进行二次开发(桌面应用),因为想做一个最短路径查询的功能,而arcgis的网络分析又比较麻烦,于是想到了使用Postgis.但 ...
随机推荐
- 从原理到方案,一步步讲解web移动端实现自适应等比缩放
前言 在移动端做自适应,我们常用的有媒体查询,rem ,em,宽度百分比这几种方案.但是都各有其缺点. 首先拿媒体查询来说,在某一个宽度区间内只能使用一种样式,为了适应不同屏幕要,css的代码量就会增 ...
- 安全相关的Linux知识
本文用于记录在安全中的Linux常用命令,基础命令可以移步去菜鸟教程(https://www.runoob.com/linux/linux-tutorial.html)学习 Linux重要的4个热键 ...
- RPA项目所遇知识点
1艺赛旗 RPA 技术分享常见问题汇总贴 2python标准库之glob介绍 3RPA基础 4RPA答疑 5python3 遍历windows下 所有句柄及窗口名称 import win32gui h ...
- python之路之io多路复用
1.实现io多路复用利用select s1同时接受三个客户端(开启了三个服务器端口) #!/usr/bin/env python # -*- coding: utf-8 -*- import sock ...
- 在一个formitem中多input的验证方法-antd的验证
实现效果如下: 当点击按钮的时候 对一个FormItem里的多个input/或者是input和select进行校验 同时通过Rol/Col实现布局 Rselect/input组件封装的组件如下fie ...
- layui-form下隐藏元素的验证问题
1.情景: 设置为display:none的必填字段,在点击提交(form 包含 class="layui-form":button包含属性 lay-submit)的时候,依旧验证 ...
- Android开发实战——记账本(3)
开发日志(3)——适配器 昨天将bean类还有DatabaseHelper类写完.为了在MainActivity中调用,将数据保存到数据库中并显示出来.所以要先编写适配器CostListAdapter ...
- 【js】子菜单吸顶(滚动到一定距离 容器置顶)附 无间断置顶 避免闪动
思考逻辑:当向上滚动的高度>= 观察容器距离顶部高度 即可触发吸顶 以下代码在vue工程,作参考 handleScroll () { const scrollTop = window.pageY ...
- 一些 NuGet 程序包是使用不同于当前目标框架的目标框架安装的,可能需要重新安装
如果 NuGet 检测到包受到重定向或升级项目的影响,它会将 packages.config 中的 requireReinstallation="true" 属性添加到所有受影响的 ...
- python接口自动化测试 - requests库的post请求进行文件上传
前言 如果需要发送文件到服务器,比如上传图片.视频等,就需要发送二进制数据. 一般上传文件使用的都是 Content-Type: multipart/form-data; 数据类型,可以发送文件,也可 ...