百度地图开放平台

进入百度地图开放平台后,登陆用户,点击上方的控制台,按照提示进行激活后创建服务端类型的应用,应用名任意设置,其中白名单校验不做任何限制可以填写0.0.0.0/0。创建成功后画面应如下图所示,其中访问应用AK)即途中红色方框圈起来的部分一定要注意不要随意泄漏,后面需要使用到,这是后面访问需要用到的一串口令。

介绍需要用到的API

本项目中所有使用的API均为Web服务API,官方开发文档。

1.地点检索服务

地点检索服务(又名Place API)是一类Web API接口服务;
服务提供多种场景的地点(POI)检索功能,包括城市检索、圆形区域检索、矩形区域检索。开发者可通过接口获取地点(POI)基础或详细地理信息。

我们利用这个API来获取指定地点的经纬度(lat, lng)两个参数。

2.轻量级路线规划服务

轻量级路线规划服务(又名DirectionLite API )是一套REST风格的Web服务API,以HTTP/HTTPS形式提供了路线规划服务。相较于Direction API,DirectionLite API更注重服务的高性能和接口的轻便简洁,满足基础的路线规划需求,并不具备Direciton API中的驾车多路线/未来出行和公交跨城规划等高级功能。DirectionLite API支持驾车、骑行、步行、公交路线规划,支持中国大陆地区。

我们利用这个API来获取两个地点(用经纬度来给出)之间的路线规划距离。

编写Python程序

0.需要用到的模块

  • requests
  • json
  • pandas

1.获取对应地点的经纬度

将传入的address通过地点检索服务得到其经纬度,返回值为经纬度对应的字符串值,中间以逗号隔开,之后跟一个查询返回状态,如果查询失败,状态值不为0。

def getPosition(address):url = r"http://api.map.baidu.com/place/v2/search?query={}&region=全国&output=json&ak={}".format(address,AK  # 自动调用,不用修改)res = requests.get(url)json_data = json.loads(res.text)if json_data["status"] == 0:lat = json_data["results"][0]["location"]["lat"]  # 纬度lng = json_data["results"][0]["location"]["lng"]  # 经度else:print(json_data["message"])return "0,0", json_data["status"]return str(lat) + "," + str(lng), json_data["status"]

2.获取两地之间的距离

将传入的两个地点(以经纬度描述)通过轻量级路线规划服务得到之间的路线规划距离。本范例是以驾车行驶(对应参数为’driving’)的方式来进行计算的。

def getDistance(start, end):url = "https://api.map.baidu.com/directionlite/v1/driving?origin={}&destination={}&ak={}".format(start,end,AK  # 自动调用,不用修改)res = requests.get(url)json_data = json.loads(res.text)if json_data["status"] == 0:return json_data["result"]["routes"][0]["distance"]else:print(json_data["message"])return -1

3.合并函数调用

传入两个地点名,返回两地点距离,当某个地点查询不到时,返回结果设置为-1。

def calcDistance(startName, endName):start, status1 = getPosition(startName)end, status2 = getPosition(endName)if status1 == 0 and status2 == 0:return getDistance(start, end)else:return -1

4.进行简单的功能测试

运行代码输出北京上海之间的距离,其单位为米。

5.对Excel中的批量地点计算距离

data.xlsx文件中的地点全部读取并计算出距离,将结果保存到本地的result.xlsx文件中,其中我们将距离的单位设置为千米。主模块代码如下:

if __name__ == "__main__":data = pd.read_excel("data.xlsx")res = []for i in range(0, len(data)):startName = data.iloc[i, 0]endName = data.iloc[i, 1]dist = calcDistance(startName, endName)res.append([startName, endName, dist / 1000])pd.DataFrame(res).to_excel("result.xlsx",header=["起点", "终点", "距离"],index=None,encoding="utf-8")

其中data.xlsx文件的内容为:

对应的输出result.xlsx文件内容如下:

联系方式

Email:gavinsun0921@foxmail.com

附录

# 本次整体的源代码
AK = "修改为你自己的AK码即可使用"import pandas as pd
import requests
import jsondef getPosition(address):url = r"http://api.map.baidu.com/place/v2/search?query={}&region=全国&output=json&ak={}".format(address,AK  # 这里是一开始截图用红色圈起来的部分,无需修改)res = requests.get(url)json_data = json.loads(res.text)if json_data["status"] == 0:lat = json_data["results"][0]["location"]["lat"]  # 纬度lng = json_data["results"][0]["location"]["lng"]  # 经度else:print(json_data["message"])return "0,0", json_data["status"]return str(lat) + "," + str(lng), json_data["status"]def getDistance(start, end):url = "https://api.map.baidu.com/directionlite/v1/driving?origin={}&destination={}&ak={}".format(start,end,AK  # 这里是一开始截图用红色圈起来的部分,无需修改)res = requests.get(url)json_data = json.loads(res.text)if json_data["status"] == 0:return json_data["result"]["routes"][0]["distance"]else:print(json_data["message"])return -1def calcDistance(startName, endName):start, status1 = getPosition(startName)end, status2 = getPosition(endName)if status1 == 0 and status2 == 0:return getDistance(start, end)else:return -1if __name__ == "__main__":data = pd.read_excel("data.xlsx")res = []for i in range(len(data)):startName = data.iloc[i, 0]endName = data.iloc[i, 1]dist = calcDistance(startName, endName)res.append([startName, endName, dist / 1000])  # 以千米为单位pd.DataFrame(res).to_excel("result.xlsx",header=["起点", "终点", "距离(千米)"],index=None,encoding="utf-8")

Python利用百度地图获取两地距离 最详细过程和源代码相关推荐

  1. 【python】python利用百度地图API:获取经纬度、地图撒点

    本文目的: python通过百度地图API,获取所给地址的经纬度,并且在百度地图上进行撒点. 另:百度地图API功能强大,如: GPS功能(单个点沿线运动). 信息窗口示例(添加纯文字的信息窗口). ...

  2. 利用百度地图获取地市镇区边界

    返回多个点的经纬度 访问百度地图开放平台文档 http://lbsyun.baidu.com/jsdemo.htm#c1_10 直接把区域改成你需要的,然后把结果输出即可

  3. html5经纬度定位 源码_利用HTML5定位功能获取经纬度,在根据经纬度利用百度地图获取位置信息...

    一.引入相关js 二.js代码 // 单次位置请求执行的函数 function getLocation(){ navigator.geolocation.getCurrentPosition(mapI ...

  4. python获取某地铁站经纬度_python基于百度地图获取指定的经纬度信息

    在实际做项目的时候经常会遇上需要使用到某个位置经纬度的情况,这个位置的经纬度经常又是没有的,那么就需要基于公开的数据去获取了,这里基于百度地图提供的API来完成指定位置经纬度数据的获取,实现很简单,主 ...

  5. 根据php经纬度百度地图打点,PHP使用百度地图获取指定地址坐标:经纬度(图文+视频)...

    本篇文章主要给大家介绍PHP使用百度地图获取指定地址坐标之经纬度的实现方法. 在之前的文章[PHP使用百度地图获取指定地址坐标:创建AK]中,已经给大家介绍了如何在百度地图开放平台中创建AK(api ...

  6. JS 通过百度地图获取详细地址及经纬度

    下方代码可以通过百度地图获取到经纬度和详细位置地址 注意: <script type ="text / javascript"src ="http://api.ma ...

  7. python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...

    上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...

  8. python 实现对地图的点击_利用python和百度地图API实现数据地图标注的方法

    如题,先上效果图: 主要分为两大步骤 使用python语句,通过百度地图API,对已知的地名抓取经纬度 使用百度地图API官网的html例程,修改数据部分,实现呈现效果 一.使用python语句,通过 ...

  9. 百度地图利用位置提供服务器,利用百度地图API获取当前位置信息的实例

    利用百度地图API可以做很多事情,个人感觉最核心也是最基础的就是定位功能了.这里分享一个制作的JS可以实现登录网页后定位: var map; var gpsPoint; var baiduPoint; ...

最新文章

  1. 摄像头ISP系统原理(上)
  2. 不插电的计算机科学读心术,科学“读心术”,当脑电波扫描图遇到人工智能
  3. Mac下使用svn命令
  4. python魔力手册-小白入门宝典:Python快速入门魔力手册 PDF 超清版
  5. 如何开始学习编程?这 3 步很重要
  6. 中国金融出版社出版的2016版《个人贷款》
  7. DOM-8 【兼容】冒泡捕获流、事件与事件源对象、事件委托
  8. vs传值接收页面怎么直接打开_VS2003传值
  9. 开设计算机应用基础这门学科意义,计算机应用基础与专业课程整合思考.doc
  10. 今天的春天到了的p2psearcher
  11. PAT乙级(1011 A+B 和 C)
  12. java8 lamada表达式
  13. android开发app初始化,Android 的 Application 初始化
  14. 响应式编程在Android 中的一些探索
  15. hadoop2.2.0 MapReduce求和并排序
  16. How to build .apk file from command line
  17. 传统IO与NIO的区别
  18. mysql插入图片_如何向MySQL中插入图片文件
  19. 小米手机第三方卡刷软件_小米手机刷机工具官方下载
  20. 近距离传感器(proximity sensor)

热门文章

  1. HTML制作注册页面
  2. 树莓派 与Pi仪表盘安装
  3. 【BZOJ 1934】 [Shoi2007]Vote 善意的投票
  4. ElasticSearch某个节点与集群失联这个过程会发生什么?
  5. 基于51单片机的PWM控制马达电机调速正反转(仿真+源码+全套资料)
  6. 618商战大片谢幕,销量冠军竟然有两个?
  7. RabbitMQ——背景
  8. wifi分析仪怎么看哪个信道好_无线路由器选择哪个信道上网更快以获得最佳WIFI体验...
  9. 说说显示器接口那点事!VGA、DVI、HDMI,DP
  10. java 爬取评论,Java基于WebMagic爬取某豆瓣电影评论的实现