行千里,看山城轻轨穿楼越林;致广大,望重庆交通桥上桥下
點擊上方“AI搞事情”關注我們
說到重慶,沒有不為其魔幻交通所驚訝折服的,有這樣嬸兒的
這樣嬸兒的????
這樣的????這樣的????
以及這樣的????當然,還有這樣的????
言歸正傳,這篇文章除了讓大伙兒感受下山城交通的魔幻屬性外,我們將通過python爬蟲和可視化,以及結合百度地圖,對重慶的公共交通進行可視化展示分析。
01 公交數據爬蟲
公交線路數據
之前,我們有通過python的scrapy爬蟲框架進行各種數據的爬取(【利用python分析了下乘風破浪的姐姐以】及【Scrapy爬取姓名大全,看看那個名字最受父母青睞】),同樣可以利用scrapy進行重慶公共交通數據的爬取。不過,這次小編在網上看見有比人造好輪子,直接利用requests請求網站,并通過BeautifulSoup解析HTML標簽進行數據抓取。
首先,我們選擇的網站是8684公交查詢網站:chongqing.8684.cn,然后遍歷每個數字或者字母開頭下面的所有數據。
話說為什么沒有7開頭的公交呢?
以數字1開頭的公交數據為例:
我們可以繼續深鉆爬取站點數據,但是8684缺少公交站點的GPS坐標以及公交線路GPS坐標數據。
GPS坐標數據
GPS數據怎么獲取呢?我們可以通過地圖api進行實現,這里我們選擇高德地圖獲取公交線路的站點GPS和線路GPS信息,可以看到返回的json格式數據包含了線路名稱、站點GPS、線路GPS等信息。
02 公交數據可視化
利用pyecharts庫中百度地圖BMap進行經緯度在地圖上的繪制,在這之前,需要先在百度地圖注冊獲取百度開放平臺秘鑰(瀏覽器端AK),地址為:
http://lbsyun.baidu.com/apiconsole/key#同時,高德地圖GPS采用火星坐標系(GCJ-02),需要轉換為百度GPS坐標系(BD-09),這樣才不會有偏差。
重慶輕軌線路代碼可以參照pyecharts官方demo
import?re import?math import?pandas?as?pd import?json import?random from?pyecharts.charts?import?BMap from?pyecharts?import?options?as?opts#?軌道交通顏色 sub_way_color?=?{'軌道交通1號線':?"rgba(255,?0,?0,?1)",'軌道交通2號線':?"rgba(0,?255,?0,?1)",'軌道交通3號線':?"rgba(0,?0,?255,?1)",'軌道交通3號線北延伸段':?"rgba(0,?0,?255,?1)",'軌道交通4號線':?"rgba(255,?255,?0,?1)",'軌道交通5號線':?"rgba(0,?255,?255,?1)",'軌道交通6號線':?"rgba(242,?158,?177,?1)",'軌道交通6號線支線':?"rgba(242,?158,?177,?1)",'軌道交通10號線':?"rgba(128,?0,?128,?1)",'軌道交通環線':?"rgba(250,?202,?46,?1)"} def?prcess_data():df_line?=?pd.read_csv('chongqing_line.csv')df_line['line_name_sub']?=?df_line['line_name'].apply(lambda?x:?re.sub(r'[(](.*)[)]',?'',?x,?2,flags=re.I?))#?print(len(set(df_line['line_name_sub'])))print(df_line.head(3))gs?=?df_line.groupby('line_name_sub')result?=?[]for?name,?g?in?gs:if?'軌道'?not?in?name:continueif?name?==?'':?continueprint(name)line_dict?=?{}#?lons,?lats?=?wgs84_to_gcj02(g['lon'].values.tolist(),?g['lat'].values.tolist())line_dict["coords"]?=?g[['lon',?'lat']].values.tolist()??#?[[lon,?lat]?for?lon,?lat?in?zip(lons,?lats)]color?=?sub_way_color[name]?if?name?in?sub_way_color?else?"rgba({},{},{},1)".format(random.randint(0,?255),random.randint(0,?255),random.randint(0,?255))line_dict["lineStyle"]?=?{"normal":?{"color":?color}}result.append(line_dict)return?resultif?__name__?==?'__main__':bus_lines?=?prcess_data()#?visualizationBAIDU_MAP_AK?=?"pAYSAsGIDpUfGcN4fg9Ar3F2mqQZHnVH"?#?瀏覽器端AKc?=?(BMap(init_opts=opts.InitOpts(width="1200px",?height="800px")).add_schema(baidu_ak=BAIDU_MAP_AK,center=[106.58,?29.56],zoom=10,is_roam=True,map_style={"styleJson":?[{"featureType":?"water","elementType":?"all","stylers":?{"color":?"#031628"},},{"featureType":?"land","elementType":?"geometry","stylers":?{"color":?"#000102"},},#?去除了部分地圖樣式代碼]},).add("",type_="lines",is_polyline=True,data_pair=bus_lines,linestyle_opts=opts.LineStyleOpts(opacity=0.2,?width=0.5),#?如果不是最新版本的話可以注釋下面的參數(效果差距不大)progressive=200,progressive_threshold=500,).render("bmap_chongqing_bus_routines_guidao.html"))同理,我們把重慶的公交數據均繪制出來
重慶公交動態展示至此,我們對重慶公交線路的動態可視化就完成了。
往期推薦
利用python分析了下乘風破浪的姐姐
蹭一波熱度,對《青春有你2》109位漂亮小姐姐下手了
python獲取原圖GPS位置信息,輕松得到你的活動軌跡
Scrapy爬取姓名大全,看看那個名字最受父母青睞
Windows10下的AlphaPose配置,人體摔倒姿態識別
長按二維碼關注我們
有趣的靈魂在等你
總結
以上是生活随笔為你收集整理的行千里,看山城轻轨穿楼越林;致广大,望重庆交通桥上桥下的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CRNN:端到端不定长文字识别算法
- 下一篇: U2NET目标显著性检测,抠图去背景效果