提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、excel调取API方法
    • 1.申请一个key
    • 2.excel调用API
  • 二、python方法
    • 计算地址列表中两两之间的OD距离和行车路线
  • 总结

前言

爬取高德或百度的数据有数量限制,以高德为例,单日调取经纬度的免费额度为5000条,多个key同时调取也不能改变单日可调用总数。
当数量少的时候可以直接用excel进行操作,方便快捷,但excel在大量处理时会出现错误,数据量上千就推荐使用python,更加方便。
在开始爬取之前,将地址处理成标准格式,即“xx省xx市xx县/区xx小区/村x门x户”,不同的地区会有同名地址存在,所以省市一定要写清楚。
ps:其他地图都类似,本文只以高德为例。

一、excel调取API方法

1.申请一个key

当然申请很多个也可以,看你心情。
在高德开放平台首页登录,然后点击右上方【控制台】,左侧【应用管理】-【我的应用】,然后右上角【创建新应用】,随便创建一个,会出现【添加】字样,点击添加一个key,名字随便,服务平台选【web服务】。

2.excel调用API

获取经纬度:

=FILTERXML(WEBSERVICE("https://restapi.amap.com/v3/geocode/geo?address="&[@出发地址]&"&output=XML&key=Key值"),"//location")

注意替换key值,【@出发地址】替换为地址在excel中的位置,如A1,对于终点位置的经纬度也是同样的获取方法。
获取行车距离:

=FILTERXML(WEBSERVICE("https://restapi.amap.com/v3/distance?origins="&[@出发经纬度]&"&destination="&[@目的经纬度]&"&output=xml&key=Key值"),"//distance")

二、python方法

计算地址列表中两两之间的OD距离和行车路线

代码如下(示例):

import urllib.request #发送请求
from urllib import parse #URL编码
import json #解析json数据
import jsonpath #提取json数据
import pandas as pd #导入pandas库
from openpyxl import load_workbook #从Excel中读取地址
addList = [] #创建一个列表存放地址数据
exbook = load_workbook('C:/Users/……/places.xlsx') #打开存放地址的工作表
addSheet = exbook["sheet1"] #读取工作簿,如果改了工作簿名字那么这里也要改
#按行读取第一列,并存入addList列表:
for row in range(1,addSheet.max_row+1):addList.append(str(addSheet["A%d"%(row)].value))
dict = {} #创建一个字典用于存放地址经纬度数据
for i in addList:url1='https://restapi.amap.com/v3/geocode/geo?address='+i+'&output=json&key=key值'#将一些符号进行URL编码,将这里的“key值”替换成你自己申请的newUrl1 = parse.quote(url1, safe="/:=&?#+!$,;'@()*[]")#发送请求response1 = urllib.request.urlopen(newUrl1)#读取数据data1 = response1.read()#解析json数据jsonData1 = json.loads(data1)#geocodes→0→location得到经纬度,写入字典dict[i] = jsonData1['geocodes'][0]['location']
dict_route={"出发地":[],"目的地":[],"距离":[],"线路":[]}
k = len(addList) #nameList列表中元素个数
#遍历addList列表
for m in range(k):    for n in range(k):#从addList中得到地址的名称,获得dict中的经纬度origin = dict[addList[m]]destination = dict[addList[n]]url2='https://restapi.amap.com/v3/direction/driving?origin='+origin+'&destination='+destination+'&extensions=all&output=json&strategy=6&&key=key值'#编码,这里也要替换keynewUrl2 = parse.quote(url2, safe="/:=&?#+!$,;'@()*[]")#发送请求response2 = urllib.request.urlopen(newUrl2)#接收数据data2 = response2.read()#解析json文件jsonData2 = json.loads(data2)#输出该json中所有road的值road=jsonpath.jsonpath(jsonData2,'$..road')#从json文件中提取距离distance = jsonData2['route']['paths'][0]['distance']#字典dict_route中追加数据dict_route.setdefault("出发地",[]).append(addList[m])dict_route.setdefault("目的地",[]).append(addList[n])dict_route.setdefault("距离",[]).append(distance)dict_route.setdefault("线路",[]).append(road)
route=pd.DataFrame(dict_route)#将字典数据创建DataFrame
route.to_excel("C:/Users/……/route_list.xlsx",sheet_name="route") #导出

想要经纬度的话,就在输出表中把origin和destination两个变量一起输出。


总结

官方文档里提供了很多参考代码,可以进行适当替换。百度地图的操作也是类似的,只不过我习惯于用高德了。
每天爬取到单日数据量上限的时候会收到超额提示短信和邮件,不用理会。
更多内容可见高德开发平台官方指南。
高德API示例,可以直观看到API中提供了哪些接口。
高德自定义地图,可在线对空间数据进行可视化,务必注意经纬度数据的格式和样例保持一致。

利用高德地图API批量获取地点经纬度和行车线路与OD距离(excel和python)相关推荐

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

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

  2. python百度地图api经纬度_Python调用百度地图和高德地图API批量获取国内城市地址经纬度坐标...

    1 数据准备 经过尝试,百度地图API需要输入城市中文名称才能获取对应经纬度坐标,因此先将英文的城市名称转为中文 一共347个城市 由于在测试过程中发现高德和百度地图API分别有几个城市的地址无法获取 ...

  3. 利用高德地图API获取任意两座城市之间的距离!异地也有惊喜!

    工作中有时会遇到这样一种场景:年末需要统计所有员工该年的航旅出差情况,然后根据他们的飞行距离补贴一定的交通费.例如如下所示情况: 然而,如果我们使用地图APP等工具逐一进行手工查询,在一家规模稍大的公 ...

  4. python高德地图api调用实例_Python 利用高德地图api实现经纬度与地址的批量转换...

    我们都知道,可以使用高德地图api实现经纬度与地址的转换.那么,当我们有很多个地址与经纬度,需要批量转换的时候,应该怎么办呢? 在这里,选用高德Web服务的API,其中的地址/逆地址编码,可以实现经纬 ...

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

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

  6. android 地铁地图api,利用高德地图api绘制公交+地铁的等时圈

    等时圈是指从某点出发,以某种交通方式在特定时间内能到达的距离覆盖的范围,在可达性分析中十分常见.原本我们需要将地图栅格化不停地调用路径规划api来获得等时圈,现在已经有网站为我们做好了这些工作,比如h ...

  7. python调用高德地图api 可视化_Python:利用高德地图API实现找房

    记:本项目是在实验楼上看到的,但是上面的代码由于没有及时维护,爬虫文件的代码不再能完整的把所有房源信息爬取下来,我根据最新的58同城官网进行了研究,现在的官网的房源信息已经不是分页的了,而是拉到最后自 ...

  8. 利用高德地图api进行定位

    一.精准定位,需要https,需要用户手动同意. 在初次进入时进行定位,定位成功,保存定位所在城市.再次进入不定位,使用上一次的定位. 1.首先引入高德地图api <script type=&q ...

  9. 调用高德地图Api,查询地名经纬度

    高德开放平台 | 高德地图API/*** 地址转经纬度 (高德地图Api转换)* @param address* @return*/ public static String getLnglat(St ...

最新文章

  1. qt chart 如何使网格填满整个窗口_Qt实现截屏的关键函数
  2. 解锁UI自动化新姿势-UI Recorder
  3. 配置GitLab 用smtp发邮件 (gitlab-6.7.3)
  4. Centos环境下部署游戏服务器-软件安装
  5. linux内核启动后门,Linux下编写隐蔽的自启动回连后门
  6. node.js async await 配合Promise对象使用
  7. HALCON标定板制作、标准文件输出方法、算子讲解
  8. nuxt asyncData extendRoutes nuxtServerInit
  9. WHEREIS(1)
  10. 阿里巴巴店铺的所有商品API接口(item_search_shop-获得店铺的所有商品接口),阿里巴巴API接口
  11. util.promisify
  12. android mac地址不可用,Android手机里的mac地址显示不可用是为什么。我的手机是海信E920....
  13. win7查看隐藏文件_u盘删除文件怎么恢复?
  14. 2022.5.4.学习笔记数据类型
  15. 解决home end pgup pgdn没有独立,需要键盘映射的问题
  16. Java多线程自我小结
  17. 大家来学 VIM [一]
  18. mac电脑如何打包dmg安装包文件
  19. Java 获取当前时间的前几分钟的时间点的方法
  20. 最新谷歌外链资源,谷歌如何发高质量的外链?

热门文章

  1. 与某流氓网站的血泪交战史
  2. java 手电筒 电池_android 手电筒的实现
  3. R语言使用ARIMA模型预测股票收益时间序列
  4. 合肥市驾驶证,行驶证期满换证指南
  5. python拼音转换汉字
  6. 沐曦加入龙蜥社区,聚焦技术创新,繁荣开源生态
  7. 【评论,赢萌宠护眼小台灯】HMS Core Insights第四期,我们来聊聊:机器学习,推开AI应用的门
  8. 小学生台灯哪个品牌更护眼?精选教育部入围护眼照明品牌
  9. mitmproxy安装配合selenium使用教程
  10. python中geometry_python arcgis Geometry