譚仁春,江 威*,馬藝文,陳俊偉
(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 極大地提升了數據爬取、可視化、數據挖掘和分析的效率,并將疫情數據與手機信令等活動軌跡大數據進行融合,可模擬和預測疫情發展趨勢。