谭仁春,江 威*,马艺文,陈俊伟
(1.武汉市测绘研究院,湖北 武汉 430022;2.武汉市自然资源和规划信息中心,湖北 武汉 430014;3.湖北金拓维信息技术有限公司,湖北 武汉 430223)
时间和空间是现实世界最基本最重要的属性,有研究表明,现实世界中的数据超过80%与地理位置有关[1]。地理信息系统(GIS)技术的出现和发展,为传染病的研究工作提供了强有力的工具和独特的研究方法[2]。3S 技术的发展与应用,成为从时间和空间上跟踪、监测传染病蔓延、传播的重要手段,尤其是涉及大范围、多因素的动态研究,多源多时相多尺度的空间数据更能体现出其独特优势[3]。3S 技术和时空大数据等信息化技术的高速发展和应用,为传统的各类公共卫生信息和数据提供了丰富的分析方式和手段,改变了数据分析理论滞后和分析技术缺失的现状,可以充分挖掘数据的隐含知识和潜在应用价值。
传染病的防治和应对是健康城市建设的重要方面[4]。在人口流动不断加快加大、全球重大传染病疫情频发的时代,传染病预防控制工作已成为我国可持续发展工作的重要组成部分[5]。新型冠状病毒肺炎是近百年来人类遭遇的影响范围最广的全球性大流行病,对全世界是一次严重危机和严峻考验,人类生命安全和健康面临重大威胁[6]。应从数据分析的角度,对历史数据进行深入的结构性分析,从中挖掘出具有社会意义和理论价值的知识,作为决策的科学依据[7]。结合GIS 领域的中间件工具FME 和面向对象的自然开发语言Python,本文设计了一套获取COVID-19 数据并绘制疫情地图的算法流程,实现了疫情数据获取、展示、发布和应用的集成管理。
FME 是空间数据转换处理系统,提供了完整的空间ETL 解决方案。ArcPy 是一个Python 站点包,通过Python 实现地理数据分析、数据转换、数据管理和地图自动化。Anaconda 是一个用于科学计算的开源Python 发行版本,提供跨平台的包管理和环境管理功能,可以很方便地解决多版本Python 并存、切换以及各种第三方包安装问题。在跨平台整合方面,FME Workbench 中可实现fmepython、ArcPy 和Anaconda 的集成,只需在模板调试时配置Python 编译器分别指向Anaconda 和ArcPy 即可。由于fmepython 尚未封装为独立包,脱离FME Workbench 开发平台和环境后,无法调用fmepython 和FME Workbench 中的转换器。目前通过PyCharm 等IDE 支持ArcPy 和Anaconda 的集成,不能调用fmepython。
结合现有的平台软件和专业化工具,本文设计了时空疫情大数据可视化技术路线,最终形成发布为Web 应用的疫情时序变化地图。技术路线包括数据抓取、数据清洗、数据可视化和疫情地图发布4 个关键步骤,如图1 所示。
图1 技术路线图
基于Python 和FME,本文设计了疫情聚合数据抓取的两条技术路线:①在FME Workbench 中调用Anaconda 抓取数据,再结合fmepython 和其他转换器进行数据预处理和输出;②在PyCharm 中调用Anaconda抓取数据,保存为xls 格式或其他格式到本地。
两条技术路线均可从丁香园、腾讯网和其他发布网页上爬取疫情数据。数据源不同解析时采用的方法略有不同,但核心步骤基本为:①网页端获取数据;②JSON数据标准化;③解析JSON 数据;④以xls 或其他格式输出到本地。技术路线1 在网页端获取数据时采用HTTPCaller 和HTTPExtractor 转换器,类似于PyCharm中调用Requests 包获取网页信息。JSONFragmenter 转换器解析JSON 数据的思路与PyCharm 中调用JSON包一致。在数据输出方面,FME 直接写出为xls 模块,PyCharm 中则调用Pandas 进行表格数据输出。
数据是大数据技术的核心,进行大数据挖掘分析与应用时大量的工作是解决数据存在的数据质量问题[8]。数据清洗是数据质量研究的起点,是提高数据质量的重要手段之一。数据清洗的目的是对海量冗余度较高的数据进行标准化检查,同时挖掘出后续数据分析和可视化等所必需的关键数据信息。疫情数据清洗包括时空数据一体化清洗和时空数据分省扇出。抓取到的疫情数据中存在时间和空间上的大量冗余,空间信息以省份名称和城市名称体现,时间信息记录在时间戳中。本文利用FME Workbench 中DateTime 相关转换器和函数进行数据清洗,主要流程为:①以省份和城市为组,按爬取时间排序;②利用DateTimeParse 函数输出FME 格式的时间字符串;③利用DateTimeDiff 函数计算相邻记录的时间差;④过滤提取时间差值为1 或为空的记录。
时空数据一体化清洗后的数据为全国范围的疫情数据,结合省份名称扇出数据,最终形成各省份疫情专题数据。数据以FME 格式的日期字符串命名,便于后续进行时空可视化展示。
FME Workbench 2019 中集成了Data Inspector,从而具备了数据可视化的能力。FME Workbench 中包含HTML ReportGenerator 和ChartGenerator 两个转换器,可用于数据成果的可视化展示。HTML ReportGenerator转换器支持生成HTML 前端页面,页面中可嵌入折线图Line、饼状图Pie、柱状图Bar 和地图Map,也可结合具体需要进行多种表现形式的展示,如图2、3 所示。ChartGenerator 转换器直接生成一个统计图的栅格数据,另存为jpg 或pdf 格式。
图2 广东省现存确诊饼状图(2020 年4 月12 日)
图3 广东省治愈以及死亡柱状图(2020 年4 月12 日)
Echarts 是一个百度开源的数据可视化图表库,凭借其良好的交互性、精巧的图表设计,得到了众多开发者的认可。Python 是一种富有表达力的语言,适用于数据处理。将数据分析与数据可视化相结合,用户可通过设置全局配置项和系统配置项等轻松便捷地实现Pyecharts 的初始化和集成展示。
本文利用2020 年3 月1 日-2020 年4 月18 日的疫情数据制作了湖北省COVID-19 疫情时序化地图,动态展示了湖北省各城市COVID-19 累计确诊和现存确诊情况,如图4、5 所示。疫情时序化地图(累计确诊)由中间的地图组件Map、底部的时间轴组件Timeline 和左下角旋转后的柱状图Bar 组成。
Streamlit 是第一个专门针对机器学习和数据科学团队的应用开发框架,是开发自定义机器学习工具最快的方法。利用Streamlit 可搭建一个轻量级的Web 应用,快速高效地集成展示COVID-19 疫情时序化地图(图6)。
图4 湖北省COVID-19 疫情时序化地图(累计确诊)
图5 湖北省COVID-19 疫情时序化地图(现存确诊)
图6 轻量级疫情可视化Web 应用
COVID-19 疫情深刻影响着人类的发展进程,在数据抗疫和科技抗疫技术理念的驱动下,本文利用Python和FME 极大地提升了数据爬取、可视化、数据挖掘和分析的效率,并将疫情数据与手机信令等活动轨迹大数据进行融合,可模拟和预测疫情发展趋势。