本文是PyGIS系列的第5篇文章,详细介绍如何通过调用API获取深圳市政府数据开放平台的大数据,并以获取营运车辆GPS轨迹大数据为例,基于Python和MySQL工具进行演示。阅读本文需要有简单的网页和SQL基础。
【版权声明:本文为作者原创文章,著作权归作者所有。允许个人直接分享本文到个人微博、朋友圈、微信个人。但媒体平台等(包括但不限于网站、微信公众号、微博营销号、百度有驾专栏)转载需事先征得本人同意。转载需在正文开头显著位置注明原作者和百度有驾来源,给出原始链接,并不得进行任何形式的修改演绎(包括标题)】
1、深圳市政府数据开放平台介绍
2、营运车辆GPS数据API数据调用介绍
3、基于Python+MySQL工具的营运车辆GPS数据的批量获取
深圳市政府数据开放平台提供了一系列的开放大数据,包含各行各业的数据,包括住建、卫生、旅游、气象、交通等行业的数据。在交通领域包括,下载量最大的要数深圳通刷卡数据、和营运车辆GPS数据,见下图。
不过笔者发现深圳市政府开放平台提供的很多数据不是全量数据,例如获取的营运车辆GPS数据仅有700多个车牌,这肯定是不全的,但是用于数据处理、分析是够用的。其次,数据开放平台之前有应用创新大赛,提供了多种类型的全量开放数据。例如,提供给大赛的营运车GPS数据包含深圳市深圳市2019年10月8日至2019年10月14日出租车、公交车、重型货车、普通货车以及各种特种营运车辆GPS数据,每个5分钟一个数据点,包含车牌号码|车辆类型|业户名称|经纬度|GPS速度|方向等字段,全量数据大小约为25GB。
本文以获取深圳市政府开放数据平台的营运车辆GPS大数据为例,详细介绍如何通过API下载数据。营运车辆GPS数据的网址为:深圳市政府数据开放平台数据接口详情(sz.gov.cn)
从上图可知,深圳市政府开放数据平台为每一个数据集提供了一个接口地址,并且只需要输入三个参数即可调用数据:appKey、page和rows。首先我们先“提交应用名称”和订阅接口以获取一个appKey,其实就是获取一个专属秘钥。其次,我们进入“测试接口”网页,见下图:
根据上图可知,在完成之前的步骤后,只需要确定“请求方式”和“API参数”后,我们点击蓝色的“发送请求”即可返回相应的内容。下面分别对“请求方式”和“API参数”进行分析。
用过爬虫的人都知道,最常用的网页请求方式就是get和post两种方式:
其次,上述的“API参数”需要输入两个值,分别为“page”和“rows”:
一般而言,page和rows是根据网页API的限制来定义的,笔者一开始是将每个page的rows设置为5w行,但是被提示每个网页不允许存储这么多行。因此后面设定每个page存储5000行,这共需要427个page(2133696/5000=426.7392)。
3基于Python+MySQL工具的营运车辆GPS数据的批量获取
通过我们上面的分析,我们知道了营运车辆GPS数据的API调用原理,那么我们如何通过Python来进行批量数据获取呢?下面们将详细介绍这一实现过程。上述提到深圳市政府开放平台均支持get和post的请求方式获取数据,因为本文就用简单的get请求方式。用get方式获取数据需要调用request库中的get方法,所以读者需要先安装这个包。用法如下:
首先将之前的appKey和请求参数合并成一个url:
将获取到的数据存到strhtml变量中:
这时候的strhtml代表整个网页的数据,但是我们只需要里面的源码,输入以下语句获取源码:
获取源码以后,我们需要对其进行解析,转换为json格式:
运行完这几个语句后,我们发现我们获取到了page1的5000行数据,他包含在dic的data键,是一个包含5000个元素的list。
由于上述代码只获取到page=1时的数据,如果我们需要获取全部页面的数据,则需要增加如下步骤:
完整的代码如下:
我们可以MySQL简单查询下,我们获取的数据是否包含2133696行。
我们发现已经成功获取到全量数据了,数据格式如下,有兴趣的读者可以自行运行上述代码获取营运车辆GPS数据。
很多人问这个坐标系是什么格式,这是官方给的答案,可以参考下:
问:“营运车辆GPS”中GPS经、纬度的数据格式(8位十进制)有具体的说明或参考么?
答:关于坐标系,请参赛者使用前两位数值作为车辆定位的经度和纬度,将该值除以600,000,得到WGS84坐标系下的经纬度。
全部评论 (0)