1. 程式人生 > 其它 >純Python構建上海疫情風險地圖探索應用

純Python構建上海疫情風險地圖探索應用

前言

最近疫情真的是非常嚴重,據“百度疫情實時大資料報告”2022年3月27日19點實時資料顯示,上海較昨日新增確診51例,新增無症狀2633例,形勢嚴峻。

不少在上海的朋友們也尤為關注其所在地周邊的疫情確診情況,湧現了一些小程式幫助我們通過地圖檢視周邊的疫情情況。

而今天的文章,我就來帶大家學習如何使用純Python,輕輕鬆鬆開發一款可自由探索地圖上疫情風險點分佈的應用,資料來源:https://tienzhao.github.io/covid-shanghai/shanghai.html,感謝分享。

而要完成這樣一款互動式地圖應用的開發,過程其實非常簡單,主要使用到Dash、dash-leaflet、geopandas以及由我開源的feffery-antd-components等框架,下面我們分步驟介紹具體開發過程:

1 環境搭建

作為一款具有地圖空間分析功能的應用,我們除了常規的dash+fac開發套件之外,還需要安裝geopandas實現一些必須的空間分析,推薦使用conda進行虛擬環境的準備,參考命令如下:

Python學習交流Q群:903971231###
conda create -n covid-shanghai python=3.7 -c https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main -y
conda activate covid-shanghai
conda install geopandas=0.10.2 -c https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud/conda-forge -y
pip uninstall rtree 
-y pip install rtree dash feffery-antd-components dash-leaflet dash_extensions -i https://pypi.douban.com/simple/

 

全部執行完成後我們的應用執行環境就準備好了~

2 介面搭建

應用介面的搭建非常簡單,其中地圖使用到dash-leaflet中的地圖功能,懸浮於地圖區域右上方的資訊面板使用到我的開源元件庫feffery-antd-components中的AntdText()、AntdSpace()、AntdAlert()等功能,具體見本文原始碼(【玩轉dash】公眾號後臺回覆【上海疫情】獲取全部原始碼)。

3 地圖互動功能的實現

在這個應用中,我們需要實現的互動功能主要包含了監聽地圖縮放事件、監聽地圖範圍以及根據縮放級別和範圍計算得到合法範圍內的疫情點並渲染到地圖上。

因此我們在構建我們的dash應用回撥函式時,將dl.Map()的zoom和bounds屬性作為回撥函式的輸入,判斷當zoom>=15時,從原始疫情點資料中利用geopandas的within()空間關係,來找到當前地圖範圍內所有疫情點並處理後傳到地圖上進行渲染,並向右上角資訊框中更新當前範圍內疫情點數量。

最後

疫情期間,大家都要做好防護,保護好自己。這一篇文章的原始碼就不給大家了,感興趣的小夥伴可以自己動動手去試一下。到這裡就沒有了,下一篇見啦!