最近要繪制倫敦區(qū)地圖,查閱了很多資料后最終選擇使用bokeh包以及倫敦區(qū)的geojson數(shù)據(jù)繪制。
bokeh是基于python的繪圖工具,可以繪制各種類型的圖表,支持geojson數(shù)據(jù)的讀取及繪制地圖。
安裝bokeh
$ pip install bokeh
軟件版本
python-3.7.7bokeh-2.0.0
數(shù)據(jù)來源
倫敦地圖數(shù)據(jù)來源于Highmaps地圖數(shù)據(jù)集。下載的是英國(guó)的地圖數(shù)據(jù)united-kindom.geo.json。需要對(duì)得到的數(shù)據(jù)進(jìn)行預(yù)處理才能得到只含倫敦地區(qū)的數(shù)據(jù)。這需要對(duì)geojson數(shù)據(jù)的格式有一定的了解。在對(duì)數(shù)據(jù)進(jìn)行處理之前,先看如何繪制英國(guó)地圖。
繪制英國(guó)地圖
from bokeh.plotting import curdoc, figure from bokeh.models import GeoJSONDataSource # 讀入英國(guó)地圖數(shù)據(jù)并傳給GeoJSONDataSource with open("united-kindom.geo.json", encoding="utf8") as f: geo_source = GeoJSONDataSource(geojson=f.read()) # 設(shè)置一張畫布 p = figure(width=500, height=500) # 使用patches函數(shù)以及geo_source繪制地圖 p.patches(xs='xs', ys='ys', source=geo_source) curdoc().add_root(p)