一口气实现交通大数据爬取与Python可视化(含数据分享)

今天的文章呢主要目的不是爬虫,而是爬虫的同时顺便实现实时可视化。上次爬摩拜单车数据的文章使用的是传统的ArcGIS进行自定义可视化,硬核 | Python多线程爬取摩拜单车数据与ArcGIS可视化,今天我想给大家分享的是QGIS可视化(MapBox在线底图)和Python可视化。

交通大数据爬取

本数据是由人送外号数据帝的CSDN排名1万+的博主小猿猴GIS发现的,我们其实想过到底要不要写篇文章公开(最后还是公开了,数据共享嘛)。因为之前我写过一篇爬取的全国各省市实时QQ登录人数数据,公开数据爬取接口和源代码之后没多腾讯就关闭了这个接口,要是说因为我那篇文章导致的封接口可能太高看我自己了,但是QQ登录人数数据目前也已经无法获得是一个事实,允悲。硬核 | 全国QQ用户24h实时在线人数的爬取与分析,附数据

 

具体的数据获取就不详细说了,比较简单,先抓包分析发现数据接口,再分析数据进行清洗成自己想要的格式:

 

 

 

数据的爬取比较简单,没有什么反爬虫措施,也不用设置什么参数,以下代码可以直接用:

 

爬取到的数据格式如下,第一列为纬度,第二列为经度,第三列为车辆(使用了高德地图服务的车辆)的定位次数:

 

之后数据简单的先导入ArcGIS进行转为shp,然后在地图上进行显示,可以看到点要素基本上数据都是沿着道路分布(估计数据主要是用了高德地图车辆导航数据):

 

 

使用某德交通大数据的相关论文推荐

 

如果大家想做相关研究给大家推荐一篇论文:

郭向阳, 穆学青, 明庆忠, 丁正山, 胡美娟. 旅游地快速交通优势度与旅游流强度的空间耦合分析[J]. 地理研究 , 2019, 38 (5): 1119- 1135. 

该论文数据来源部分介绍:

快速交通系统方面,高速公路:通车里程源自《云南省统计年鉴2017》,路网密度由测算所得,高速路口及站点数量、区位优势度和换乘便捷度等指标均通过某德交通大数据、《中国交通地图册》和《中国公路交通图集》获取。高速铁路:高速铁路里程和站点距离行政中心距离均通过某德交通大数据获取,站点数量和日通行车辆通过“12306铁道部火车票网上订票官网”查询获取。航空运输:机场飞行区等级依据航空民航标准-MH5001-2000《民用机场飞行区技术标准》,机场离行政中心距离通过高德交通地图测算获取,日均旅客吞吐量和日均飞机起降架次均依据中国民用航空局发布的2016年《民航机场生产统计公报》和《云南年鉴2017》计算获取。旅游流方面,主要源自《云南省统计年鉴2017》和2016年云南省16个州市的国民经济与社会发展统计公报。

 

QGIS可视化

之前看过张云金老师一篇教程《QGIS教程番外篇02--如何在QGIS中添加自定义的Mapbox底图?》https://mp.weixin.qq.com/s/SzDdQUBVrhwRQ0-bq6J-Nw,感觉很好玩,这次实践一下(点击阅读原文既可以查看完整教程)。

MapBox(我觉得是目前市面上做地图最好看的厂商)推出的这款地图设计网站网址是https://apps.mapbox.com/cartogram,最好玩的一点就是允许用户上传图片进行地图样式设计(左下角自定义图片)。

比如一个小皇帝的图片

 

 

交通大数据的截图

 

QQ群二维码

 

选择好自己想要的地图之后发不成WMTS服务,然后复制链接,即可加载到QGIS上作为底图:

 

比如红色作为底图(如下图),或者蓝色灰色等等都可以,看你自己选择:

 

一口气实现数据爬取与可视化

以上所说都是借助软件实现的,那么能不能在爬虫的时候直接就给制作出可视化地图呢?答案当然是可以的,R语言和Python都提供了很多地图可视化的第三方库,比如Python的folium库和pyecharts库都可以很方便的实现地图各种可视化。

 

folium是js上著名的地理信息可视化库leaflet.js为Python提供的接口,通过它我们可以通过在Python端编写代码操纵数据,来调用leaflet的相关功能,基于内建的osm或自行获取的osm资源和地图原件进行地理信息内容的可视化,以及制作优美的可交互地图,今天我就以forlium为例来简单介绍下如何实现高的交通大数据爬取与热力图可视化。

 

以下便是简单的一口气实现数据爬取和可视化代码,非常简单快速,根本不用像导入arcgis然后加载在线地图并且核密度分析啥的那样那么复杂。用代码的话在爬取到数据的同时只要定义好输入的经纬度啥的,直接运行就能展现出非常漂亮的热力图(会生成一个html文件,并且自动在浏览器打开):

import requestsimport pandas as pdimport timeimport numpy as npimport foliumimport webbrowserfrom folium.plugins import HeatMap​def get_GaoDeData():    url='https://trp.autonavi.com/assets/data/data2.txt'    response=requests.get(url)    datas=response.text    count=datas.split("&")    print(len(count))    temp=[]    for i in range(len(count)-1):        wzy=count[i].split(",")        x=float(wzy[0])        y=float(wzy[1])        z=int(wzy[2])        temp.append([x,y,z])        map_osm = folium.Map(location=[35,110],zoom_start=6)    #绘制Map,开始缩放程度是5倍    HeatMap(temp).add_to(map_osm)  # 将热力图添加到前面建立的map里    file_path = r"交通大数据地图可视化.html"    map_osm.save(file_path)     # 保存为html文件    webbrowser.open(file_path)  # 默认浏览器打开        df=pd.DataFrame(temp)    now = time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))    df.to_csv('GaoDe'+now+'.txt',mode='a',index = False,header=None)​if __name__ =='__main__':    get_GaoDeData()

 

 

当然大家还可以先爬取数据,然后借助第三方地图可视化平台,比如什么地图慧、高德地图和百度地图,都可以实现导入数据进行地图数据展示,但是那样也比较麻烦,所以还是推荐这种一步到位的方法。

 

另外在国匠城匠大的提示下,我发现可以直接直接用QGIS自带的功能实现热力图制作:直接双击高德交通大数据的图层,然后样式里选择热力图,调整好半径就可以显示出热力图分布情况了,特漂亮:

 

 热力与显示,中国四大交通繁忙地带分别是北上广和成都,成都牛逼了!

 

 

 

互联网地理大数据挖掘

巧妇难为无米之炊,为了方便大家进行相关地理学研究,这段时间我也给大家也介绍了不少的互联网地理大数据(其中QQ在线人数数据接口已经关闭,其他正常):

 

 

以上所有文章所有代码数据我都更新到了互联网地理大数据挖掘群,如果大家对地理大数据感兴趣的话欢迎加群讨论。今天的的数据也于昨日上传到群里,大家可以加群或者公众号回复关键字获取相关数据:

加入地理大数据挖掘群

 

群号:575325764,验证信息填写CSDN。
 

你可能感兴趣的:(一口气实现交通大数据爬取与Python可视化(含数据分享))