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.但 ...
随机推荐
- 神舟战神笔记本使用U盘重装系统
今天我的神舟战神笔记本电脑系统故障了,在这里记录一下使用U盘重装系统的方法: 1.插入装机U盘. 2.按开机键,然后马上按Esc键. 3.选择Boot Manager进入. 4.选择EFI USB D ...
- mysq,oraclel复杂SQL操作汇总
一.对数据库原有字段默认值的设置 1.删除原有字段默认值 alter table 表名 alter column 字段 drop default;2..重写原有字段默认值alter table 表名 ...
- python UI自动化之切换iframe
python+selenium写UI自动化的时候,经常会遇到需要切换iframe的情况,这里介绍几种切换iframe的方式 1.使用id定位 driver.switch_to.frame(" ...
- BeautifulReport报告
Project description BeautifulReport 一个基于unittest.TestResult模块实现的测试用例模板, 可把测试中的结果通过BeautifulReport整合成 ...
- 10day 系统的selinux服务程序优化
selinux服务对root用户权限进行控制 很多企业中:selinux服务默认关闭 centos6==centos7 临时关闭: 检查确认: getenforce --- 确认selinux服务是否 ...
- layout components pages及基本操作
components组件 layouts模板 pages nuxt.config.js nuxt的配置文件
- SQL Server中使用msdb数据库的存储过程sp_delete_backuphistory和sp_delete_database_backuphistory来删除备份和恢复历史数据
根据微软文档对sp_delete_backuphistory存储过程的介绍,SQL Server在每次备份和恢复数据库后,会向msdb系统数据库的备份和恢复历史表写入数据,如果SQL Server经常 ...
- Educational Codeforces Round 82 (Rated for Div. 2)D(模拟)
从低位到高位枚举,当前位没有就去高位找到有的将其一步步拆分,当前位多余的合并到更高一位 #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h&g ...
- (原)Vue 单文件组件安装 (创建vue-cli 项目)
更新于20200220 题外话:久违了我的博客园 正题: 1.准备工作,安装环境 1.安装node 官网下载安装即可 -- 配置环境变量 2.安装npm (基于node.js 包管理器) 3.安装c ...
- 水题Eating Soup
A. Eating Souptime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutput ...