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.但 ...
随机推荐
- 0121 spring-boot-redis的使用
redis是什么呢?redis,属于NoSQL的一种,在互联网时代,起到加速系统的作用. redis是一种内存数据库,支持7种数据类型的存储,性能1S 10w次读写: redis提供的简单的事务保证了 ...
- 题解【洛谷P1315】[NOIP2011]观光公交
题目描述 风景迷人的小城 Y 市,拥有 \(n\) 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务. 观光公交车在第 \(0\) 分钟出现在 \( ...
- sudo用户找不到环境变量 sudo找不到/usr/local/bin 下的执行文件,
出于安全方面的考虑,使用sudo执行命令将在一个最小化的环境中执行,环境变量都重置成默认状态. 所以PATH这个变量不包括用户自定义设置的内容,如找不到/usr/local/bin/下面的命令在sud ...
- 2019牛客多校第三场H Magic Line 思维
Magic Line 题意 给出n(偶)个整点 整点范围1000,找出一条直线,把n个点分成均等的两部分 分析 因为都是整数,并且范围比较小,所以直接按x排序找到在中间那一部分,并且把中间那一部分的点 ...
- Java实现JSONObject对象与Json字符串互相转换
Java实现JSONObject对象与Json字符串互相转换 JSONObject 转 JSON 字符串 Java代码: JSONObject jsonObject = new JSONObject( ...
- 安装rocky版本:openstack-nova-compute.service 计算节点服务无法启动
问题描述:进行openstack的rocky版本的安装时,计算节点安装openstack-nova-compute找不到包. 解决办法:本次实验我安装的rocky版本的openstack 先安装cen ...
- unittest的discover方法
转载:https://www.cnblogs.com/imyalost/p/9048386.html discover()方法 discover(start_dir, pattern ='test * ...
- CentOS6.10 Nginx无法解析php文件
一 .问题描述: 1). 前提: nginx 已经安装完毕,并且能够访问 2). 问题: 当访问 .php 文件时会默认下载,或者提示 “File not found.” 3). 本机环境 PHP 版 ...
- redis架构
hash槽16384个,0-16383 master1(slave101,slave102) master2 (slave201,slave202) master 3 (slave30 ...
- Dictionary-Guided Editing Networks for Paraphrase Generation解读
过程:输入->检索->编码->解码 解释:检索:输入一句话x,首先从PPDB中检索出M * 10 个释义对,并排序,记为x的本地字典: 编码:将所有的释义对编码为向量,单字转为字向量 ...