今天为大家介绍一种通过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.实现思路

  1. 坐标对数据集(Y.txt)中获取坐标对;----->(x1,y1/x2,y2) ----->

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

  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实现基于百度路径规划接口的坐标对获取两点驾车距离的计算的更多相关文章

  1. 运用百度开放平台接口根据ip地址获取位置

    使用百度开放平台接口根据ip地址获取位置 今天无意间发现在百度开放平台接口,就把一段代码拿了下来,有需要的可以试试看:http://opendata.baidu.com/api.php?query=5 ...

  2. Python人工智能-基于百度AI接口

    参考百度AI官网:http://ai.baidu.com/ 准备工作: 支持Python版本:2.7.+ ,3.+ 安装使用Python SDK有如下方式 >如果已经安装了pip,执行 pip ...

  3. iOS百度地图路径规划和POI检索详细总结-b

    路径规划.png 百度地图的使用 百度地图API的导入网上说了许多坑,不过我遇到的比较少,这里就放两个比较常见的吧.坑一: 奥联WIFI_xcodeproj.png 如上图所示,在infoplist里 ...

  4. ROS(indigo)RRT路径规划

    源码地址:https://github.com/nalin1096/path_planning 路径规划 使用ROS实现了基于RRT路径规划算法. 发行版 - indigo 算法在有一个障碍的环境找到 ...

  5. ros局部路径规划-DWA学习

    ROS的路径规划器分为全局路径和局部路径规划,其中局部路径规划器使用的最广的为dwa,个人理解为: 首先全局路径规划会生成一条大致的全局路径,局部路径规划器会把全局路径给分段,然后根据分段的全局路径的 ...

  6. [python] A*算法基于栅格地图的全局路径规划

    # 所有节点的g值并没有初始化为无穷大 # 当两个子节点的f值一样时,程序选择最先搜索到的一个作为父节点加入closed # 对相同数值的不同对待,导致不同版本的A*算法找到等长的不同路径 # 最后c ...

  7. 初学者路径规划 | 人生苦短我用Python

    纵观编程趋势 人生苦短,我用Python,比起C语言.C#.C++和JAVA这些编程语言相对容易很多.Python非常适合用来入门.有人预言,Python会成为继C++和Java之后的第三个主流编程语 ...

  8. 基于pgrouting的路径规划处理

    对于GIS业务来说,路径规划是非常基础的一个业务,一般公司如果处理,都会直接选择调用已经成熟的第三方的接口,比如高德.百度等.当然其实路径规划的算法非常多,像比较著名的Dijkstra.A*算法等.当 ...

  9. 基于Arcgis Engine 10.2(C#)+PostgreSQL 11(Postgis 3)+pgRouting 3.0实现使用数据库进行路径规划

    前言:最近在(被迫)使用ArcGIS Engine10.2(.NET平台)进行二次开发(桌面应用),因为想做一个最短路径查询的功能,而arcgis的网络分析又比较麻烦,于是想到了使用Postgis.但 ...

随机推荐

  1. sql查询 —— 连接查询

    -- 执行sql文件 test.sql -- 打开终端 -- cd sql文件所在路径 -- 进入mysql -- use 数据库 -- 执行 source test.sql; -- 自关联 -- 一 ...

  2. sql查询——范围查询(区间查询)

    --范围查询(区间查询) --in() --查询年龄为18,28,38的人 select *from student where age=18 or age=28 or age=38; select ...

  3. python3.0练习100题——001

    自学python3中,现在开始每天在python2.71 100例中做一道题,用python3实现,并写下一些思考-加油(ง •̀灬•́)ง 题目网站(http://www.runoob.com/py ...

  4. DFT测试-OCC电路介绍

    https://www.jianshu.com/p/f7a2bcaefb2e SCAN技术,也就是ATPG技术-- 测试std-logic, 主要实现工具是: 产生ATPG使用Mentor的 Test ...

  5. 题解 Fractal Streets

    题目链接 参考博客 #include<cstdio> #include<math.h> #include<utility>//pair using namespac ...

  6. 剑指offer 面试题. 数据流中的中位数

    题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值.我们 ...

  7. 2.7.5 元素定位(主推xpath、cssSelector) ❀❀❀

    定位方式选择: 1. 当页面元素有id属性时,最好尽量用id来定位.但由于现实项目中很多程序员其实写的代码并不规范,会缺少很多标准属性,这时就只有选择其他定位方法. 2. xpath很强悍,但定位性能 ...

  8. Apache Kafka(八)- Kafka Delivery Semantics for Consumers

    Kafka Delivery Semantics 在Kafka Consumer中,有3种delivery semantics,分别为:至多一次(at most once).至少一次(at least ...

  9. Flink架构(二)- Flink中的数据传输

    2. Flink中的数据传输 在一个运行的application中,它的tasks在持续交换数据.TaskManager负责做数据传输.TaskManager的网络组件首先从缓冲buffer中收集re ...

  10. echarts相关问题记录

    1.图标距离容器边界 //echats options options : { //... grid : { top : 40, //距离容器上边界40像素 bottom: 30 //距离容器下边界3 ...