APP下载

基于WebGIS的新冠肺炎疫情可视化系统研发

2021-01-07邓少存张健钦张学东贾礼朋李卓航

北京建筑大学学报 2020年4期
关键词:可视化疫情系统

邓少存, 张健钦, 张学东, 贾礼朋, 李卓航

(北京建筑大学 测绘与城市信息空间学院, 北京 100044)

新冠肺炎疫情的爆发对世界各国人民的生命健康与社会经济都造成了极大的威胁,为了防止疫情的恶性传播,全国各界人士都投入到对抗疫情的战役中,目前我国取得了阶段性胜利,基本控制住了疫情的蔓延[1]。与此同时,国家卫生健康委员会在 2 月 4 日发布的《国家卫生健康委办公厅关于加强信息化支撑新型冠状病毒感染的肺炎疫情防控工作的通知》中明确指出:“强化与工信、公安、交通运输等部门的信息联动,形成公路、铁路、民航、通讯、医疗等疫情相关方多源数据监测、交换、汇聚、反馈机制,利用大数据技术对疫情发展进行实时跟踪、重点筛查、有效预测,为科学防治、精准施策提供数据支撑。”而这些大量的数据只有通过可视化方式才能使公众更加直观地掌握疫情的动态。具体方式包括:App客户端的疫情资讯专栏(如腾讯新闻客户端、今日头条客户端、腾讯健康小程序和阿里健康小程序等),丁香园、百度、知乎等平台发布的具有疫情地图的疫情信息,疫情的实时数据,与疫情相关的权威性新闻以及疫情知识和相关辟谣等,这些信息既方便公众了解疫情动态,又为政府相关部门的各项防疫措施提供了科学参考[2]。

为了更好地了解疫情发展的全球态势,有效指导我国境外输入病例的防控工作,本文基于WebGIS技术,充分利用疫情大数据信息,结合Echarts图表库等空间可视化工具、开源地图框架,以及仿真模拟技术,设计新冠肺炎疫情可视化系统,该系统实现了疫情数据的可视化展示与分析,有助于政府相关部门对于疫情的了解及采取相应的防控措施。

1 关键技术

1.1 系统开发技术

1.1.1 WebGIS技术

WebGIS是指通过Internet平台创建,采用网络协议实现地理信息采集和空间平台信息共享的大型综合化地理信息系统。WebGIS是传统的地理信息系统(GIS)在网络上的延伸和发展,利用互联网对地理空间数据进行发布和应用,以实现空间数据的共享和互操作[3-4]。

1.1.2 B/S架构技术

B/S架构是指浏览器和服务器的架构模式,是在Web兴起后的一种网络架构模式。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用[5]。

1.1.3 Cesium二、三维开源地图框架

Cesium是一款面向三维地球和地图的世界级JavaScript开源产品,它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能、精度、渲染质量以及多平台、易用性等方面都有高质量的保证[6-8]。

1.2 Python网络爬虫及数据处理技术

Python是一种面向对象、解释型、可移植的交互式编程语言,其语法简单清晰,容易理解。Python语言的标准库和第三方库庞大丰富,使其功能非常强大,能够完成数据采集、数据分析等。

网络爬虫是一种按照一定的搜索规则,自动爬取Web网页的应用程序。该技术从一个初始页面的URL开始,通过分析页面中的其他相关URL,抓取新的网页链接,然后在这些网页链接下,再继续寻找新的网页链接URL,反复循环,直到爬取和分析完所有页面内容。

1.3 多智能体建模技术

多智能体仿真技术能将人类抽象成智能体,智能体的定义包括健康者、潜伏者、轻症患者、重症患者等角色属性,也包括行为属性、行为规则、状态转换规则、接触传播规则、环境属性等。借助SEIR动力学传播模型中的健康状态转换规则,采用合适的参数,通过每个智能体的行为转变及状态转变,模拟智能体之间的传播情况,模拟的结果可用来预测疫情的发展趋势。

1.4 均匀采样算法

在构建人口初始化分布界面时,需要各时刻的人流数据,由于原始数据量非常大(将近17万条数据),约为122.7 MB,在数据加载时出现页面卡顿,甚至崩溃现象,所以需要对原始的大批量数据进行压缩。对数据压缩的方法有很多,本文采用均匀采样算法[9]进行数据简化,其思想是每隔K个点保留一个点,如第1、5、9个点,中间的点都删除,用较少的、近似的数据集来代替原始数据集,从而达到缩减数据的目的,产生的新数据集大致上和原始数据相似,算法流程如图1所示。均匀采样算法效率极高,计算代价小,但是缺点是不能保留数据的细节信息,导致新的数据和原始数据有一定的偏差,因此,本文对均匀采样算法进行了一定的改进,对间隔的K个点数据不是删除而是采用取均值,比如将1~10的10个点分为2组,即5个点为1组,求出1~5个点的均值代替这5个点,6~10个点的均值代替另外5个点。

2 数据获取及处理

2.1 数据介绍

系统所需数据可以分为两部分,一是疫情专题数据,如每日国内外以及省市级确诊、轻症、重症、死亡人数数据,百度迁徙数据;二是基础地理数据和人口统计数据,基础地理数据包括武汉市行政区划数据、建筑物轮廓数据、土地利用类型数据。人口统计数据为2010年武汉市人口普查街道数据。

2.2 疫情数据获取

通过基于Python的网络爬虫技术,爬取官方发布的国内外每日疫情数据、百度迁徙数据,爬取后存入数据库中。由于爬取的国内外疫情数据、百度迁徙数据等数据中包括一些重复数据和“脏”数据,这就需要对数据进行筛选和清洗。利用Python引入Numpy和Pandas 2个包,对数据中存在的重复数据、无用数据进行筛选和清洗,然后利用均匀采样算法以每8个点为间隔对数据进行压缩,处理后数据量压缩为3.1 MB左右,便于可视化时直接调用。

2.3 仿真数据生成

将武汉市基础地理数据进行处理,主要包括建筑物轮廓数据、土地利用类型数据、人口统计数据等,其中,人口统计数据来自《2010年中国人口统计年鉴》。在数据处理过程中,首先将建筑物矢量数据和土地利用类型数据在ArcGIS中进行空间连接,用以识别不同类型建筑物,如住宅、工作、学校、医院等类型。其次,将住宅区与人口数据进行空间连接,计算人口密度,将人口密度与住宅类型建筑物进行空间连接,计算每栋建筑物内居民数量,利用ArcGIS剔除数据中的异常值,生成不同类型人群智能体数据。最后,从空间连接融合后的建筑物GIS数据中提取其坐标、类型等信息,将其与不同类型人群智能体输入到模型中,经多次参数率定,从而获取仿真数据,将仿真数据存入数据库中用于模拟可视化展示。

3 系统设计

3.1 架构设计

本系统采用浏览器/服务器模式(Browser/Server,B/S),主要分为基础数据层、数据库管理层、后台逻辑层和Web端表现层4层结构。基础数据层主要包括全球疫情统计数据、世界疫情统计数据、百度迁徙数据、基础地理数据等基础数据;数据库管理层采用PostgreSQL数据库;后台逻辑采用Spring MVC后台框架并结合Mybatis技术实现数据库与前台程序的通信;Web端表现层采用HTML+CSS+JavaScript的开发模式,通过Mapbox底图框架、Cesium二、三维开源地图框架和Echarts图表库工具进行数据的可视化表达,并通过Tomcat服务器进行系统的部署[10]。系统架构如图2所示。

3.2 系统功能设计

通过对所获取的数据进行归纳整理,并结合相关使用者的需求,设计了一个较为直观的新冠肺炎疫情可视化系统,该系统功能可分为全球疫情、全国疫情和武汉模拟3个模块。其中,主页面是全球疫情模块,该模块展示了全球确诊人数,并通过Cesium二、三维开源地图框架展示出世界各国确诊人数动态变化情况,以及全球确诊人数Top10国家排名等。全国疫情模块先通过分层设色将不同省份感染人数随时间在地图中联动展示,此外,还有全国新增确诊案例趋势、全国新增死亡案例趋势、境外输入病例、本地病例以及重点城市人口迁徙等情况。武汉模拟模块通过热力图的形式展示了武汉市一天24小时仿真模拟人口动态分布情况,以及通过散点形式展示模型模拟出的武汉市感染者分布情况,如图3所示。

4 系统实现

本文将疫情相关数据导入数据库,利用Spring MVC+Spring+MyBatis(SSM)开发框架进行业务数据的访问,在前端可视化表达方面采用Cesium二、三维开源地图框架,结合Echarts图表库和Bootstrap前端框架将数据以不同的可视化方式展示,系统主要功能论述如下[11-12]。

4.1 全球疫情

全球疫情界面主要是对全球的疫情情况进行分析,中间部分采用Cesium二、三维开源地图框架将世界各国感染人数展示在三维地球上,圆圈和柱子代表不同感染人数,圆圈越大感染人数越多。该模块不仅支持二、三维地图自由切换,以及底图自由选择,而且还可以按天查询每日各国感染人数情况,以及按时段动态展示各国感染人数的变化,当点击某一个国家还可定位到此国家并查看其相关疫情信息。界面左侧包括全球确诊Top10国家每天动态排名情况和全球疫情趋势折线图,右下角是全球治愈死亡人数动态气泡图,气泡大小代表人数的多少,颜色代表不同国家。通过以上不同的可视化表达可以多维度非常直观地展示全球疫情情况,如图4、图5所示。

4.2 全国疫情

全国疫情模块展示的是全国疫情情况,中间部分将不同省份感染人数数据通过分层设色的方式在地图上随时间动态展示,颜色越深代表感染人数越多;左侧全国新增确诊案例趋势图展示了全国(不含湖北)、湖北(不含武汉)和武汉的新增确诊病例人数;下侧全国新增死亡案例趋势同样展示了全国(不含湖北)、湖北(不含武汉)和武汉的新增死亡病例人数;右上方以文本的形式展示了境外输入病例人数和本地病例人数;右下方则展示了重点城市的人口迁移情况,该功能便于使用者发现一些重点城市的人口流动情况。综上,通过该模块能够直观地了解国内疫情发展趋势,方便人们及时了解疫情动态。

4.3 武汉模拟

此界面主要分为两部分,一是武汉市人口时空变化热力图,通过热力图可以看出不同时段的人口流动情况,颜色越深代表人口流动量越大,通过热力图可以分析出武汉市哪些地方是人口流动比较大的地区,能够对这些区域采取相应的防疫措施[13-14];二是武汉市疫情感染人口散点图,点击切换图层后,通过散点的形式将仿真模型中被感染者的位置展示在地图上,能够直观地分析武汉市不同地区的疫情情况,如图6、图7所示。

5 结论

针对目前全球新冠肺炎疫情热点问题,本文结合获取的相关疫情大数据,基于Java Web开发技术,设计了一个基于B/S架构的新冠肺炎疫情可视化系统。本系统通过WebGIS可视化技术对国内外疫情数据进行了多样化表达,通过本系统公众及相关部门可以直观了解国内外疫情发展情况,同时也为疫情防控工作提供参考。由系统可知,随着疫情的发展,全球确诊人数虽然还在增加,但是治愈人数已远大于死亡人数。国内疫情逐步被控制,表明我国防疫工作取得了优异的成绩。此外,与其他疫情可视化系统不同的是本系统还基于多智能体建模技术对武汉人口分布及疫情扩散进行了仿真模拟,将空间数据可视化、WebGIS和仿真模拟结合展现,不仅能够反映疫情的实时信息,还能够让公众看到疫情的扩散过程,增强防疫意识,有助于未来对疫情变化进行预测。

虽然该系统能够展示国内外的疫情数据信息,但由于本系统展示的数据为人工处理后存储到数据库发布,存在一定的偏差和延时,所以需要继续改进以期实现数据实时动态发布,更好地为疫情防疫服务。

猜你喜欢

可视化疫情系统
Smartflower POP 一体式光伏系统
基于CiteSpace的足三里穴研究可视化分析
战疫情
基于Power BI的油田注水运行动态分析与可视化展示
WJ-700无人机系统
ZC系列无人机遥感系统
抗疫情 显担当
疫情中的我
基于CGAL和OpenGL的海底地形三维可视化
疫情期在家带娃日常……