今天我們用python來獲取道路數據,并根據數據進行簡化和可視化分析
當今社會每個人都離不開導航
除了開車用導航外,其實走路、騎車、公交都可以導航
選址和找餐廳、酒店也需要
如果一個城市能夠標注所以公交廁所也是很有必要的。
當然,實現(xiàn)這一切都需要我們擁有道路數據,標示道路交叉路口、死胡同、紅路燈燈,并能夠計算道路長度,最短路徑和規(guī)劃線路。
今天實現(xiàn)這一切都依賴地圖公司的API接口和SDK,導航APP應用,利用這一切并不新鮮很是方便。比如如果你開發(fā)的APP需要具備這些功能可以直接利用百度LBS的API接口即可實現(xiàn)。
但如果我們需要進行分析型的道路分析和城市規(guī)劃應用,就需要有更好的辦法獲取道路數據,并能夠進行計算和建模,特別是網絡分析的建模和度量指標,在結合區(qū)塊區(qū)域Ploygon,興趣點POI等進行匹配分析,從而實現(xiàn)選址、整體布局、設施評價等帶來大數據分析的建模思想。
恰好前段時間看到一篇Geoff Boeing的博客提供了OSMnx的Python包,OSM是Open Street Map開源地圖數據庫,可以部分解決這個想法,非常棒,我們一起來玩玩!
我的環(huán)境是Mac系統(tǒng)安裝了Anaconda的Python環(huán)境,用Conda Install OSMnx包(說明:windows操作系統(tǒng)下安裝比較麻煩)
首先我們加載osmnx包
假如我們希望得到北京市朝陽區(qū)的交通道路數據,我們先熟悉一下朝陽區(qū)的區(qū)塊Polygon
選擇朝陽區(qū)后,可以得到朝陽的行政區(qū)塊數據
我們在看看能否得到更細致的區(qū)塊數據:北京大學校園占地區(qū)域
北京大學未名湖的Polygon數據
這樣我們大概可以了解,理論上我們可以得到OSM地圖上,全球范圍內的所有國家、地區(qū)、城市、區(qū)縣、小區(qū)、單位、建筑等,甚至是每一棟樓的區(qū)塊數據。當然前提是OSM地圖有這個Place標記。
下面我們看看如何獲得道路數據:
我們先以北京市的道路數據看看(數據量比較大,需要一定的等待時間)
北京市行政區(qū)域道路數據:
根據道路的距離可視化:距離越長顯示紅色,越短顯示黃色
根據道路的單行線標示顏色,紅色是oneway道路
我們也可以同樣得到朝陽區(qū)的道路數據,這里需要注意我們可以指定得到道路數據的類型:drive=駕駛,walk=步行,bike=自行車,包括指定公共道路和私家道路。
朝陽區(qū)內道路:walk類型
接下來,我們可以任意給定一個坐標點(經緯度坐標,lan-long),設定距離distance多遠,獲取坐標點距離多少的道路數據。
我以中國傳媒大學的俺家為中心點,距離2000米范圍,得到道路數據:
從圖中我們可以看到這些道路的打點數據,某些點數據有標示:交叉路口、紅路燈位置、死胡同等標示。
我們可以把獲得的道路數據保存下來,存儲成為:Shapefiles、GarphML和SVG格式文件。
這樣可以將存儲的node點數據和edge邊數據用Tableau或Alteryx,或者Folium進行可視化。
我們也可以根據數據類型對道路數據進行簡化,比如去掉一些點僅保留交叉路口點(有嚴格和非嚴格方式);
上面的紅色點將可以被簡化掉。
也可以顯示不同線路長度的可視化
我們獲得傳媒大學隔壁的二外道路數據:bike類型
然后我們統(tǒng)計這部分道路的統(tǒng)計量
看看betweenness-centrality的點在哪里?
這個紅點應該是二外的中介最高的交叉點。
有些同學可能不知道我們想分析或計算的坐標點,其實有很多種方法獲取特定位置的經緯度坐標,比如:你可以導入Folium可視化地圖包,點擊地圖就可以彈出經緯度坐標數據:
下面我們看看天安門,我選國旗位置點1500米范圍的道路數據:walk類型
獲得兩個點的最短路徑線路數據
也可以指定_起點:Origin_Point,終點:Destination_Point計算兩點的路徑和規(guī)劃線路節(jié)點
從這些功能和計算上我們可以看到:導航是如何實現(xiàn)的,當然我這里就是玩玩,并沒用具體的意義,至少同學們學習后可以知道基于地圖數據的線路規(guī)劃是啥意思,一般的原理!
其實這些算法的前景還是很廣泛的,可能能夠評測一家餐廳的道路方便性是重要的指標,選址和城市規(guī)劃也是。
最近好像共享自行車比較火,如果能夠獲得人們的騎行線路,分析的思路應該有幫助!
當然,最終的地理空間數據是大數據的重要組成部分,如果根據多邊形Ploygon和POI興趣點進行數據匹配和測算,從分析型挖掘的角度應用前景廣泛。后面我將繼續(xù)介紹些應用算法。
推廣思路上,我們可以想象地鐵線路、公交線路等等道理相似。未來的車聯(lián)網、道路傳感器都需要這些數據的支持!