用Python探索上海疫情风险分布情况
Editor's Note
用Python制作地图可视化应用探索上海疫情风险情况
The following article is from 玩转Dash Author 费弗里
【玩转dash】公众号后台回复关键词【上海疫情】获取本期全部源码
据“百度疫情实时大数据报告”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
进行虚拟环境的准备,参考命令如下:
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()
空间关系,来找到当前地图范围内所有疫情点并处理后传到地图上进行渲染,并向右上角信息框中更新当前范围内疫情点数量。
以上过程你可以在本文源码中详细学习(【玩转dash】公众号后台回复【上海疫情】获取全部源码)。
以上就是这个应用的主要组成部分,欢迎在【玩转dash】公众号后台回复【进群】加入交流群参与更多讨论。