前言
最近疫情真的是非常嚴重,據“百度疫情實時大資料報告”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()空間關系,來找到當前地圖范圍內所有疫情點并處理后傳到地圖上進行渲染,并向右上角資訊框中更新當前范圍內疫情點數量,

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

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457003.html
標籤:其他
上一篇:異步匯入匯出Excel方案
