赞
踩
通过高德地图API进行城市路网实时路况数据爬取、城市行政区地理信息数据爬取与城市交通拥堵态势可视化。
Python3.6 IDLE、Excel2016、记事本编辑器、ArcGIS 10.5、申请的高德开发者KEY(免费)。
本文的思路是使用Python的requests模块爬取高德API的返回信息,将返回的信息数据(JSON),通过代码解析的方式存入CSV文件中,再导入ArcGIS中进行可视化处理。
根据高德提供的交通态势信息API文档,注意到高德提供了两种获取交通态势信息的方式,一种是通过设定矩形区域(传入左下角以及右上角坐标)的方式,一种是通过设定圆形区域的方式(设定圆心坐标和半径),本文使用的是设定矩形区域的方式。 但是问题来了,高德对用户的API行为进行了限制,要求设定的矩形区域的对角线长度不超过10公里,但这是难不倒程序猿的,可以使用网格的思想来突破这一限制,如下图:
即将爬取区域分成多个网格,每个网格在高德规定的10公里范围之内即可,这样虽然增加了API的调用次数,但不得不说是较为合适的解决方案,本思想同样也适用于POI信息的爬取,在本文中笔者使用了简单的for循环来实现网格爬取,当然读者也可以参考:
百度地图POI数据爬取,突破百度地图API爬取数目“400条“的限制。 这篇博文中的LocaDiv类来实现更为复杂化的网格爬取方式。
安装方法:
摁WIN键+R键打开运行,然后输入cmd,回车进入命令提示符。
输入,pip install+python包
如 pip install requests
5.2.1 申请key(注意要申请绑定服务为web服务的key)
5.2.2 路况数据获取
选择路况拥堵状态的API接口,需要输入的数据包括你的key、区域选择方式(矩形,圆域)详见交通态势信息API文档
示例:
矩形
'https://restapi.amap.com/v3/traffic/status/rectangle?rectangle='+str(loc)+'&key=你的密钥'
loc为选择矩形区域左下角的经纬度,如120.247875,31519864
圆形
"https://restapi.amap.com/v3/traffic/status/circle?location=116.3057764,39.98641364&radius=1500&key=你的密钥&extensions=all"
本文以矩形为例
首先输入代码,运行代码后,从与代码所在同一文件夹中获得文件BigRoads.csv,.csv文件可由Excel或记事本打开
- import requests
- import pandas as pd
- import json
- import time
-
- #初始API的URL
- url="https://restapi.amap.com/v3/traffic/status/rectangle?key=你的密钥&extensions=all&rectangle="
-
- #设定整个网格左下角坐标的经纬度值
- baselng=119.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。