苏州毛线批发联盟

本院学员成果展示⑤ || 公交API数据抓取

只看楼主 收藏 回复
  • - -
楼主

   报名城市数据研习社增加进阶技能!


利用API数据把握城市脉动(下)

公交API数据抓取



        在API出现之前,如果想要搜集苏州市全部的公交站点并准确录入到软件中生成线路,需要花费大量的人工和时间,几乎是个Mission Impossible!

Transcad做出的公交路网

        如今大数据的来临代替了许多重复的人工工作。我利用写好的爬虫,以“公交车站”为关键词,在百度地图上爬取了苏州所有公交站点的信息以及坐标

        最后落在powemap上,成果如下:

公交站点powermap图

        一次偶然的机会,我们发现了苏州本地的一家数据企业提供苏州实时公交API,里面提供了公交(路线)详情。(https://www.juhe.cn/)

      于是我开始详细查看它到底输出什么数据。

       此图释义:API会给我“线路名称”、“站点名称”、“线路所有站点名称”、“通过所有站点名称”等信息,而我所需要提供的参数只有两项:输出类型和key。具体的爬取流程如下:

        之后我用R语言写了一个小程序,并把一次请求的数据一起输出成excel,如下图:

        获得的公交信息主要内容包括:起终点站,高峰发车间隔,平峰发车间隔,线路运行方向,通过所有站点名称等等……

        数据格式凌乱,线路不明确,之后我通过函数把每个公交线路信息拆了出来,并用将抓出来的poi和找到的公交线路匹配。

        录入到arcgis里,并按线路设置可视化后如图:

        这是苏州城内的一条公交线路,把所有公交线路都放进去,就可以轻松获得苏州公交网络啦!

        但这种静态数据不能准确的体现城运行的情况,要想知道城市运行的具体情况,还是需要动态数据,动态数据怎么来呢?

        别急,咱们再看这个API的其他功能。利用之前我们得到的苏州所有公交线路的编号(就是上表中的第三列)进行编号查询:

        该功能可按照线路编码查询公交车到站时间,并且是实时更新的。这就意味着理论上我们可以准确地计算出某条公交线路的发车间隔,这些公交车在道路上的运行情况等等。

        通过对这些数据的分析,我们可以很快地计算出整个城市的公共交通服务水平或某一条公交线路的服务水平,能够很好的衡量整个城市公共交通系统的运行状况。


以下是线路(编码)查询的三个应用场景:


场景一:查询一条线路有多少车在同时工作。我大约早上九点五十五分左右给了API这次请求,在给我返回的数据中,它告诉我现在路上跑了8辆110路公交车,并且还有预计的到站时间。


场景二:公交推荐系统。我也试着输入一个公交站编码(以醋坊桥观前街东,编号ECV为例)给API一个请求,API给我们返回了这样的数据:

        每条经过这个站点的公交线路、当前的状态都显示了出来。由此我们可以推测公交车还有几站到,到的车的车牌号。试想一下如果我们隔几分钟请求一次这个站点的数据,我们就可以了解到这个站点全天的动态数据,这样评价一个站点的公交运行状况就不用像以前一样需要调查员站在站点无聊地看着表数着车啦!

场景三:模糊查询。根据线路编码查询详细信息,我们给API传个参数11试试,然后得到了这样的结果:

        从表中看出,所有线路里有11这两个数字的公交信息出来了,但是这个功能貌似有点鸡肋,我们都有苏州所有公交线路的详情了,这个功能对我们来说用处就不大了。

       今后我们也将带给大家更多实践案例,敬请期待!




举报 | 1楼 回复

友情链接