鄧少存, 張健欽, 張學東, 賈禮朋, 李卓航
(北京建筑大學 測繪與城市信息空間學院, 北京 100044)
新冠肺炎疫情的爆發(fā)對世界各國人民的生命健康與社會經(jīng)濟都造成了極大的威脅,為了防止疫情的惡性傳播,全國各界人士都投入到對抗疫情的戰(zhàn)役中,目前我國取得了階段性勝利,基本控制住了疫情的蔓延[1]。與此同時,國家衛(wèi)生健康委員會在 2 月 4 日發(fā)布的《國家衛(wèi)生健康委辦公廳關于加強信息化支撐新型冠狀病毒感染的肺炎疫情防控工作的通知》中明確指出:“強化與工信、公安、交通運輸?shù)炔块T的信息聯(lián)動,形成公路、鐵路、民航、通訊、醫(yī)療等疫情相關方多源數(shù)據(jù)監(jiān)測、交換、匯聚、反饋機制,利用大數(shù)據(jù)技術對疫情發(fā)展進行實時跟蹤、重點篩查、有效預測,為科學防治、精準施策提供數(shù)據(jù)支撐?!倍@些大量的數(shù)據(jù)只有通過可視化方式才能使公眾更加直觀地掌握疫情的動態(tài)。具體方式包括:App客戶端的疫情資訊專欄(如騰訊新聞客戶端、今日頭條客戶端、騰訊健康小程序和阿里健康小程序等),丁香園、百度、知乎等平臺發(fā)布的具有疫情地圖的疫情信息,疫情的實時數(shù)據(jù),與疫情相關的權威性新聞以及疫情知識和相關辟謠等,這些信息既方便公眾了解疫情動態(tài),又為政府相關部門的各項防疫措施提供了科學參考[2]。
為了更好地了解疫情發(fā)展的全球態(tài)勢,有效指導我國境外輸入病例的防控工作,本文基于WebGIS技術,充分利用疫情大數(shù)據(jù)信息,結(jié)合Echarts圖表庫等空間可視化工具、開源地圖框架,以及仿真模擬技術,設計新冠肺炎疫情可視化系統(tǒng),該系統(tǒng)實現(xiàn)了疫情數(shù)據(jù)的可視化展示與分析,有助于政府相關部門對于疫情的了解及采取相應的防控措施。
1.1.1 WebGIS技術
WebGIS是指通過Internet平臺創(chuàng)建,采用網(wǎng)絡協(xié)議實現(xiàn)地理信息采集和空間平臺信息共享的大型綜合化地理信息系統(tǒng)。WebGIS是傳統(tǒng)的地理信息系統(tǒng)(GIS)在網(wǎng)絡上的延伸和發(fā)展,利用互聯(lián)網(wǎng)對地理空間數(shù)據(jù)進行發(fā)布和應用,以實現(xiàn)空間數(shù)據(jù)的共享和互操作[3-4]。
1.1.2 B/S架構(gòu)技術
B/S架構(gòu)是指瀏覽器和服務器的架構(gòu)模式,是在Web興起后的一種網(wǎng)絡架構(gòu)模式。這種模式統(tǒng)一了客戶端,將系統(tǒng)功能實現(xiàn)的核心部分集中到服務器上,簡化了系統(tǒng)的開發(fā)、維護和使用[5]。
1.1.3 Cesium二、三維開源地圖框架
Cesium是一款面向三維地球和地圖的世界級JavaScript開源產(chǎn)品,它提供了基于JavaScript語言的開發(fā)包,方便用戶快速搭建一款零插件的虛擬地球Web應用,并在性能、精度、渲染質(zhì)量以及多平臺、易用性等方面都有高質(zhì)量的保證[6-8]。
Python是一種面向?qū)ο?、解釋型、可移植的交互式編程語言,其語法簡單清晰,容易理解。Python語言的標準庫和第三方庫龐大豐富,使其功能非常強大,能夠完成數(shù)據(jù)采集、數(shù)據(jù)分析等。
網(wǎng)絡爬蟲是一種按照一定的搜索規(guī)則,自動爬取Web網(wǎng)頁的應用程序。該技術從一個初始頁面的URL開始,通過分析頁面中的其他相關URL,抓取新的網(wǎng)頁鏈接,然后在這些網(wǎng)頁鏈接下,再繼續(xù)尋找新的網(wǎng)頁鏈接URL,反復循環(huán),直到爬取和分析完所有頁面內(nèi)容。
多智能體仿真技術能將人類抽象成智能體,智能體的定義包括健康者、潛伏者、輕癥患者、重癥患者等角色屬性,也包括行為屬性、行為規(guī)則、狀態(tài)轉(zhuǎn)換規(guī)則、接觸傳播規(guī)則、環(huán)境屬性等。借助SEIR動力學傳播模型中的健康狀態(tài)轉(zhuǎn)換規(guī)則,采用合適的參數(shù),通過每個智能體的行為轉(zhuǎn)變及狀態(tài)轉(zhuǎn)變,模擬智能體之間的傳播情況,模擬的結(jié)果可用來預測疫情的發(fā)展趨勢。
在構(gòu)建人口初始化分布界面時,需要各時刻的人流數(shù)據(jù),由于原始數(shù)據(jù)量非常大(將近17萬條數(shù)據(jù)),約為122.7 MB,在數(shù)據(jù)加載時出現(xiàn)頁面卡頓,甚至崩潰現(xiàn)象,所以需要對原始的大批量數(shù)據(jù)進行壓縮。對數(shù)據(jù)壓縮的方法有很多,本文采用均勻采樣算法[9]進行數(shù)據(jù)簡化,其思想是每隔K個點保留一個點,如第1、5、9個點,中間的點都刪除,用較少的、近似的數(shù)據(jù)集來代替原始數(shù)據(jù)集,從而達到縮減數(shù)據(jù)的目的,產(chǎn)生的新數(shù)據(jù)集大致上和原始數(shù)據(jù)相似,算法流程如圖1所示。均勻采樣算法效率極高,計算代價小,但是缺點是不能保留數(shù)據(jù)的細節(jié)信息,導致新的數(shù)據(jù)和原始數(shù)據(jù)有一定的偏差,因此,本文對均勻采樣算法進行了一定的改進,對間隔的K個點數(shù)據(jù)不是刪除而是采用取均值,比如將1~10的10個點分為2組,即5個點為1組,求出1~5個點的均值代替這5個點,6~10個點的均值代替另外5個點。
系統(tǒng)所需數(shù)據(jù)可以分為兩部分,一是疫情專題數(shù)據(jù),如每日國內(nèi)外以及省市級確診、輕癥、重癥、死亡人數(shù)數(shù)據(jù),百度遷徙數(shù)據(jù);二是基礎地理數(shù)據(jù)和人口統(tǒng)計數(shù)據(jù),基礎地理數(shù)據(jù)包括武漢市行政區(qū)劃數(shù)據(jù)、建筑物輪廓數(shù)據(jù)、土地利用類型數(shù)據(jù)。人口統(tǒng)計數(shù)據(jù)為2010年武漢市人口普查街道數(shù)據(jù)。
通過基于Python的網(wǎng)絡爬蟲技術,爬取官方發(fā)布的國內(nèi)外每日疫情數(shù)據(jù)、百度遷徙數(shù)據(jù),爬取后存入數(shù)據(jù)庫中。由于爬取的國內(nèi)外疫情數(shù)據(jù)、百度遷徙數(shù)據(jù)等數(shù)據(jù)中包括一些重復數(shù)據(jù)和“臟”數(shù)據(jù),這就需要對數(shù)據(jù)進行篩選和清洗。利用Python引入Numpy和Pandas 2個包,對數(shù)據(jù)中存在的重復數(shù)據(jù)、無用數(shù)據(jù)進行篩選和清洗,然后利用均勻采樣算法以每8個點為間隔對數(shù)據(jù)進行壓縮,處理后數(shù)據(jù)量壓縮為3.1 MB左右,便于可視化時直接調(diào)用。
將武漢市基礎地理數(shù)據(jù)進行處理,主要包括建筑物輪廓數(shù)據(jù)、土地利用類型數(shù)據(jù)、人口統(tǒng)計數(shù)據(jù)等,其中,人口統(tǒng)計數(shù)據(jù)來自《2010年中國人口統(tǒng)計年鑒》。在數(shù)據(jù)處理過程中,首先將建筑物矢量數(shù)據(jù)和土地利用類型數(shù)據(jù)在ArcGIS中進行空間連接,用以識別不同類型建筑物,如住宅、工作、學校、醫(yī)院等類型。其次,將住宅區(qū)與人口數(shù)據(jù)進行空間連接,計算人口密度,將人口密度與住宅類型建筑物進行空間連接,計算每棟建筑物內(nèi)居民數(shù)量,利用ArcGIS剔除數(shù)據(jù)中的異常值,生成不同類型人群智能體數(shù)據(jù)。最后,從空間連接融合后的建筑物GIS數(shù)據(jù)中提取其坐標、類型等信息,將其與不同類型人群智能體輸入到模型中,經(jīng)多次參數(shù)率定,從而獲取仿真數(shù)據(jù),將仿真數(shù)據(jù)存入數(shù)據(jù)庫中用于模擬可視化展示。
本系統(tǒng)采用瀏覽器/服務器模式(Browser/Server,B/S),主要分為基礎數(shù)據(jù)層、數(shù)據(jù)庫管理層、后臺邏輯層和Web端表現(xiàn)層4層結(jié)構(gòu)。基礎數(shù)據(jù)層主要包括全球疫情統(tǒng)計數(shù)據(jù)、世界疫情統(tǒng)計數(shù)據(jù)、百度遷徙數(shù)據(jù)、基礎地理數(shù)據(jù)等基礎數(shù)據(jù);數(shù)據(jù)庫管理層采用PostgreSQL數(shù)據(jù)庫;后臺邏輯采用Spring MVC后臺框架并結(jié)合Mybatis技術實現(xiàn)數(shù)據(jù)庫與前臺程序的通信;Web端表現(xiàn)層采用HTML+CSS+JavaScript的開發(fā)模式,通過Mapbox底圖框架、Cesium二、三維開源地圖框架和Echarts圖表庫工具進行數(shù)據(jù)的可視化表達,并通過Tomcat服務器進行系統(tǒng)的部署[10]。系統(tǒng)架構(gòu)如圖2所示。
通過對所獲取的數(shù)據(jù)進行歸納整理,并結(jié)合相關使用者的需求,設計了一個較為直觀的新冠肺炎疫情可視化系統(tǒng),該系統(tǒng)功能可分為全球疫情、全國疫情和武漢模擬3個模塊。其中,主頁面是全球疫情模塊,該模塊展示了全球確診人數(shù),并通過Cesium二、三維開源地圖框架展示出世界各國確診人數(shù)動態(tài)變化情況,以及全球確診人數(shù)Top10國家排名等。全國疫情模塊先通過分層設色將不同省份感染人數(shù)隨時間在地圖中聯(lián)動展示,此外,還有全國新增確診案例趨勢、全國新增死亡案例趨勢、境外輸入病例、本地病例以及重點城市人口遷徙等情況。武漢模擬模塊通過熱力圖的形式展示了武漢市一天24小時仿真模擬人口動態(tài)分布情況,以及通過散點形式展示模型模擬出的武漢市感染者分布情況,如圖3所示。
本文將疫情相關數(shù)據(jù)導入數(shù)據(jù)庫,利用Spring MVC+Spring+MyBatis(SSM)開發(fā)框架進行業(yè)務數(shù)據(jù)的訪問,在前端可視化表達方面采用Cesium二、三維開源地圖框架,結(jié)合Echarts圖表庫和Bootstrap前端框架將數(shù)據(jù)以不同的可視化方式展示,系統(tǒng)主要功能論述如下[11-12]。
全球疫情界面主要是對全球的疫情情況進行分析,中間部分采用Cesium二、三維開源地圖框架將世界各國感染人數(shù)展示在三維地球上,圓圈和柱子代表不同感染人數(shù),圓圈越大感染人數(shù)越多。該模塊不僅支持二、三維地圖自由切換,以及底圖自由選擇,而且還可以按天查詢每日各國感染人數(shù)情況,以及按時段動態(tài)展示各國感染人數(shù)的變化,當點擊某一個國家還可定位到此國家并查看其相關疫情信息。界面左側(cè)包括全球確診Top10國家每天動態(tài)排名情況和全球疫情趨勢折線圖,右下角是全球治愈死亡人數(shù)動態(tài)氣泡圖,氣泡大小代表人數(shù)的多少,顏色代表不同國家。通過以上不同的可視化表達可以多維度非常直觀地展示全球疫情情況,如圖4、圖5所示。
全國疫情模塊展示的是全國疫情情況,中間部分將不同省份感染人數(shù)數(shù)據(jù)通過分層設色的方式在地圖上隨時間動態(tài)展示,顏色越深代表感染人數(shù)越多;左側(cè)全國新增確診案例趨勢圖展示了全國(不含湖北)、湖北(不含武漢)和武漢的新增確診病例人數(shù);下側(cè)全國新增死亡案例趨勢同樣展示了全國(不含湖北)、湖北(不含武漢)和武漢的新增死亡病例人數(shù);右上方以文本的形式展示了境外輸入病例人數(shù)和本地病例人數(shù);右下方則展示了重點城市的人口遷移情況,該功能便于使用者發(fā)現(xiàn)一些重點城市的人口流動情況。綜上,通過該模塊能夠直觀地了解國內(nèi)疫情發(fā)展趨勢,方便人們及時了解疫情動態(tài)。
此界面主要分為兩部分,一是武漢市人口時空變化熱力圖,通過熱力圖可以看出不同時段的人口流動情況,顏色越深代表人口流動量越大,通過熱力圖可以分析出武漢市哪些地方是人口流動比較大的地區(qū),能夠?qū)@些區(qū)域采取相應的防疫措施[13-14];二是武漢市疫情感染人口散點圖,點擊切換圖層后,通過散點的形式將仿真模型中被感染者的位置展示在地圖上,能夠直觀地分析武漢市不同地區(qū)的疫情情況,如圖6、圖7所示。
針對目前全球新冠肺炎疫情熱點問題,本文結(jié)合獲取的相關疫情大數(shù)據(jù),基于Java Web開發(fā)技術,設計了一個基于B/S架構(gòu)的新冠肺炎疫情可視化系統(tǒng)。本系統(tǒng)通過WebGIS可視化技術對國內(nèi)外疫情數(shù)據(jù)進行了多樣化表達,通過本系統(tǒng)公眾及相關部門可以直觀了解國內(nèi)外疫情發(fā)展情況,同時也為疫情防控工作提供參考。由系統(tǒng)可知,隨著疫情的發(fā)展,全球確診人數(shù)雖然還在增加,但是治愈人數(shù)已遠大于死亡人數(shù)。國內(nèi)疫情逐步被控制,表明我國防疫工作取得了優(yōu)異的成績。此外,與其他疫情可視化系統(tǒng)不同的是本系統(tǒng)還基于多智能體建模技術對武漢人口分布及疫情擴散進行了仿真模擬,將空間數(shù)據(jù)可視化、WebGIS和仿真模擬結(jié)合展現(xiàn),不僅能夠反映疫情的實時信息,還能夠讓公眾看到疫情的擴散過程,增強防疫意識,有助于未來對疫情變化進行預測。
雖然該系統(tǒng)能夠展示國內(nèi)外的疫情數(shù)據(jù)信息,但由于本系統(tǒng)展示的數(shù)據(jù)為人工處理后存儲到數(shù)據(jù)庫發(fā)布,存在一定的偏差和延時,所以需要繼續(xù)改進以期實現(xiàn)數(shù)據(jù)實時動態(tài)發(fā)布,更好地為疫情防疫服務。