一、需求:
爬取高德的交通态势API,将数据可视化为含有交通态势信息的矢量路网数据。
二、使用的工具:
Python IDLE、记事本编辑器、ArcGIS 10.2、申请的高德开发者KEY(免费)。
三、主要思路:
本文的思路是使用Python的requests模块爬取高德API的返回信息,将返回的信息数据(JSON),通过代码解析的方式存入CSV文件中,再导入ArcGIS中进行可视化处理。
四、分析阶段:
根据高德提供的交通态势信息API文档,注意到高德提供了两种获取交通态势信息的方式,一种是通过设定矩形区域(传入左下角以及右上角坐标)的方式,一种是通过设定圆形区域的方式(设定圆心坐标和半径),本文使用的是设定矩形区域的方式。 但是问题来了,高德对用户的API行为进行了限制,要求设定的矩形区域的对角线长度不超过10公里,但这是难不倒程序猿的,可以使用网格的思想来突破这一限制,如下图:
即将爬取区域分成多个网格,每个网格在高德规定的10公里范围之内即可,这样虽然增加了API的调用次数,但不得不说是较为合适的解决方案,本思想同样也适用于POI信息的爬取,在本文中笔者使用了简单的for循环来实现网格爬取,当然读者也可以参考:
百度地图POI数据爬取,突破百度地图API爬取数目“400条“的限制
这篇博文中的LocaDiv类来实现更为复杂化的网格爬取方式。
五、编写代码:
由于本文的爬虫程序比较简单,因此笔者为了方便直接使用Python自带的IDLE进行程序编写,代码如下:
import requests
import pandas as pd
import json
import time
#初始API的URL
url="https://restapi.amap.com/v3/tra