巴劍波,連凌,欒潔,徐雄利,盧姍姍
全球傳染病疫情監(jiān)測預警是我國軍隊成建制走出國門,有效履行維護我國全球權益、保護我國海外利益、踐行聯(lián)合國維和使命的重要工作,是維護全球部署中國軍隊官兵健康的重要一環(huán)?!叭騻魅静∫咔榫W(wǎng)絡數(shù)據(jù)監(jiān)測系統(tǒng)”[1](http://27. 115.41.130:8888/OBN/)是本課題組自主建設、自動運維、實時更新的全球傳染病監(jiān)測預警系統(tǒng)。為更好地收集、整理和呈現(xiàn)全球傳染病疫情數(shù)據(jù),課題組采用了多種電子地圖技術,以使該系統(tǒng)能更直觀地呈現(xiàn)傳染病疫情數(shù)據(jù)、系統(tǒng)用戶數(shù)據(jù)等,使得該系統(tǒng)更受到用戶的歡迎。
本文主要介紹“全球傳染病疫情網(wǎng)絡數(shù)據(jù)監(jiān)測系統(tǒng)”中用到的3種不同電子地圖的實現(xiàn)方案,并就其技術應用和實現(xiàn)進行討論。
“全球傳染病疫情網(wǎng)絡數(shù)據(jù)監(jiān)測系統(tǒng)”中包括了大量具有地理屬性的數(shù)據(jù),例如傳染病疫情數(shù)據(jù)、傳染病流行國家和地區(qū)、系統(tǒng)用戶管理數(shù)據(jù)等。采用電子地圖技術是直觀呈現(xiàn)的理想方式。出于成本和安全性的考慮,本系統(tǒng)沒有采用在地理信息系統(tǒng)(GIS)平臺上構建系統(tǒng)的方式,而是利用互聯(lián)網(wǎng)地圖工具,如百度地圖(免費版)、高德地圖(免費版)、矢量地圖(國家自然資源部提供)等,實現(xiàn)了地圖在本系統(tǒng)中的應用。
系統(tǒng)采用前后端分離的架構。前端采用Html+JavaScript,后端采用Web API提供服務接口、數(shù)據(jù)庫交互、數(shù)據(jù)運算,前端網(wǎng)頁通過AJAX技術與后端API接口進行交互。
系統(tǒng)于2019年11月完成試運行并通過驗收,到發(fā)稿時已正式運行1年。
1.1 系統(tǒng)數(shù)據(jù)管理的百度地圖(免費版)實現(xiàn)方案 本系統(tǒng)中,需要實現(xiàn)某項系統(tǒng)管理數(shù)據(jù)的區(qū)域數(shù)量分析,開發(fā)團隊利用百度地圖API所提供的“地址解析”和“點聚合”兩個功能進行二次開發(fā)[2]。
當本系統(tǒng)向百度地圖的“地址解析”接口輸入地址信息,例如XX市XX路XX號,百度地圖將根據(jù)地址信息在圖上進行標注。當圖上的2個或2個以上的標注點發(fā)生重疊時,百度地圖會自動將重疊的標注點替換為數(shù)字標注,在百度地圖API中,此項功能稱為“點聚合”。
可見,基于地址信息的數(shù)據(jù)管理和分析采用百度地圖的“地址解析”和“點聚合”功能是一種理想的解決方案。
百度地圖的二次開發(fā)有多種方式,由于本項目是一個基于PC瀏覽器場景的服務網(wǎng)站,故采用了JavaScript API方式。具體實現(xiàn)方法是在前端頁面中引用百度開放平臺提供的JavaScript腳本文件:http://api.map.baidu.com/api,并在參數(shù)中填寫百度地圖賬戶的密鑰。在網(wǎng)站日訪問量不是很高的情況下,使用百度地圖應用程序編程接口(application programming interface,API)不需要額外付費。
引用上述腳本以后,即可以在本地頁面腳本中使用百度地圖的對象BMap實現(xiàn)其所提供的各種功能。
1.2 疫情數(shù)據(jù)熱點分布的高德地圖(免費版)實現(xiàn)方案 以2019年12月爆發(fā)的新型冠狀病毒肺炎(COVID-19)疫情為例說明疫情數(shù)據(jù)熱點分布的高德地圖(免費版)實現(xiàn)方案。為了及時跟蹤監(jiān)測COVID-19疫情發(fā)展和進程,需要以熱點圖形式開發(fā)實現(xiàn)全球COVID-19疫情流行與分布的地圖模塊。按照系統(tǒng)設計,希望能夠在電子地圖上以不同半徑的圓點顯示COVID-19疫情在各個國家和地區(qū)確診數(shù)量、規(guī)模和聚集程度。由于熱點圓圈半徑的大小與該地區(qū)COVID-19疫情確診數(shù)量呈階梯函數(shù)關系,且確診病例并不流動或改變位置,因此,需要能準確并直觀呈現(xiàn)COVID-19疫情的規(guī)模和聚集程度,而避免造成視覺錯誤信息或印象。在本系統(tǒng)中,采用高德地圖API進行二次開發(fā),利用其提供的“點動態(tài)樣式”功能[3]。
當系統(tǒng)向高德地圖接口輸入經(jīng)緯度和疫情數(shù)值,高德地圖就能夠直觀地呈現(xiàn)與疫情數(shù)據(jù)相匹配的不同等級半徑的熱點圖,使得系統(tǒng)用戶能直觀地了解疫情規(guī)模和聚集程度,有利于用戶對COVID-19疫情的監(jiān)測預警。在調用高德地圖“點動態(tài)樣式”接口時,需要預先設定輸入數(shù)據(jù)的最小值、最大值,以及圓點半徑的最小值、最大值,高德地圖會自動進行數(shù)據(jù)匹配。由于高德地圖的數(shù)據(jù)匹配是線性的,而實際應用中,用戶并不希望點半徑與數(shù)據(jù)值的關系是線性的,而是類似于拋物線的函數(shù)關系。因此,系統(tǒng)后臺服務對數(shù)據(jù)進行了預處理,將COVID-19疫情確診數(shù)據(jù)進行計算擬合后,再將修正后的數(shù)值輸出給高德地圖,從而實現(xiàn)了設計要求。
百度地圖也有類似數(shù)據(jù)聚集展現(xiàn)功能,稱為“熱力圖”,比較適合顯示人流密度、車流密度等需要顯示聚集程度的數(shù)據(jù)。
與百度地圖類似,高德地圖的二次開發(fā)也有多種方式,基于上一節(jié)中同樣的理由,本系統(tǒng)選擇了JavaScript API方式。方法是在前端頁面中引用高德地圖提供的JavaScript腳本文件:https://webapi.amap.com/maps,并在參數(shù)中填寫高德地圖賬戶的密鑰。在網(wǎng)站日訪問量不是很高的情況下,使用高德地圖API不需要額外付費。
引用上述腳本以后,即可以在本地頁面腳本中使用高德地圖的對象AMap實現(xiàn)高德地圖提供的各種功能。
可以發(fā)現(xiàn),百度地圖和高德地圖的開發(fā)調用方式、接口函數(shù)的定義都是非常近似的。但就所提供的功能而言,兩者各有特色,可根據(jù)實際應用場景進行選擇。
1.3 全球疫情數(shù)據(jù)等級分布的國家行政區(qū)劃矢量地圖實現(xiàn)方案 為了能全景式展示流行于各個國家和地區(qū)的百余種傳染病的流行態(tài)勢和流行強度,需要在世界地圖的縮放比例上,以各個國家和地區(qū)行政區(qū)劃圖為基礎,根據(jù)各個國家和地區(qū)傳染病疫情規(guī)模和數(shù)量進行流行分級,并通過不同顏色標注直觀呈現(xiàn)。
無論是百度地圖還是高德地圖,都偏重于國內應用,對于世界地圖的支持是比較弱的。因此在本系統(tǒng)中,開發(fā)團隊自主編寫了一系列JavaScript腳本,通過地圖數(shù)據(jù)處理和動態(tài)著色、鼠標懸停等功能的開發(fā),實現(xiàn)了全球疫情數(shù)據(jù)等級分布顯示,見圖1。
注:該電子地圖采用國家自然資源部公開發(fā)行的標準矢量地圖[GS(2016)1664號]。系統(tǒng)中每日監(jiān)測到的傳染病信息和數(shù)據(jù)可實時在該標準矢量地圖上以國家色塊和顏色表示。以各個國家各種傳染病監(jiān)測病例數(shù)之和為依據(jù),以3、30、300、3 000為等級劃分標準,分別采用嫩綠、草綠、藍綠和墨綠顏色標識。該圖能直觀顯示各國家和地區(qū)傳染病發(fā)生及其發(fā)生強度和態(tài)勢。圖1 全球傳染病數(shù)據(jù)等級分布的矢量圖(2020-05-08系統(tǒng)截圖)
當系統(tǒng)收集整理全球各種傳染病爆發(fā)流行數(shù)據(jù)并生成表單數(shù)據(jù)后,在矢量地圖的不同圖層上將自動匹配國家和地區(qū),并根據(jù)疫情流行強度的等級劃分賦予不同的顏色標記,使得矢量地圖上能顯示出該疾病流行范圍和流行強度,并能通過時間維度數(shù)據(jù)的改變直觀地研判和預警傳染病流行態(tài)勢和發(fā)展趨勢。
地圖基礎數(shù)據(jù)采用的是國家自然資源部官網(wǎng)(http://bzdt.ch.mnr.gov.cn/)提供的標準矢量地圖[GS(2016)1664號]。盡管互聯(lián)網(wǎng)上有很多現(xiàn)成的矢量地圖基礎數(shù)據(jù)或者腳本,但由于編寫者多來自國外,故大多是以大西洋為中心,不符合我國的規(guī)定。更為嚴重的是,地圖數(shù)據(jù)也往往與我國官方承認的國界存在不一致。為避免以上的問題,本系統(tǒng)使用了國家自然資源部公布的地圖數(shù)據(jù)。
該官網(wǎng)提供的地圖數(shù)據(jù)是EPS格式的矢量圖形文件,網(wǎng)頁無法顯示。需要先將EPS轉換為SVG格式。Internet Explorer 9,Edge,F(xiàn)irefox,Chrome,Opera和Safari都支持SVG,IE 8和更早期的版本都需要一個插件,如Adobe SVG瀏覽器,這是免費提供的。EPS轉SVG的工具有很多,比如Adobe Illustrator。
從官網(wǎng)下載到的文件原圖包含了很多圖層,并且國家邊界、海陸邊界的描繪非常精細。地圖文件的大小達到35 M字節(jié)。直接在網(wǎng)頁上加載如此巨大的數(shù)據(jù)量,是無法達到令人滿意的效果的。由于在本系統(tǒng)中,地圖只是作為國家區(qū)塊設色之用,不需要太詳細的邊界細節(jié),因此,筆者對轉換生成的SVG數(shù)據(jù)進行了圖層的精簡,和對次要節(jié)點的歸并,大大壓縮了數(shù)據(jù)量,隨后,為每一個SVG繪制路徑(Path)定義ID,與國家名稱數(shù)組匹配。完成這些基礎工作后,開發(fā)團隊編寫了JavaScript腳本,控制SVG的繪制、著色,鼠標懸停事件的掛載等等,即可實現(xiàn)了圖1的效果。
在即將進入5G的時代,電子地圖的使用越來越多地受到青睞,其直觀的數(shù)據(jù)呈現(xiàn)也改善了用戶體驗。電子地圖可以非常方便地對普通地圖的內容進行任意形式的要素組合、拼接,形成新的地圖,可以對電子地圖進行任意比例尺、任意范圍的繪圖輸出?!叭騻魅静∫咔楸O(jiān)測預警系統(tǒng)”中的幾乎所有數(shù)據(jù)都具有地理屬性,采用電子地圖是比較理想的系統(tǒng)數(shù)據(jù)呈現(xiàn)方式,然而依據(jù)各個功能實現(xiàn)要求的不同,可以有不同電子地圖選擇方案。
通常有3種電子地圖選用方式,其一,是系統(tǒng)建立在地理信息系統(tǒng)(geographic information system, GIS)平臺上,比如約翰霍普金斯大學在ArcGIS平臺上建立的全球COVID-19病例監(jiān)測系統(tǒng);其二,是采用外部地圖工具,比如百度地圖BMap、高德地圖AMap、谷歌地圖Google Map等;其三,是采用標準矢量地圖進行繪制,自行編寫實現(xiàn)代碼。每種方式各有其優(yōu)缺點和適用范圍。專業(yè)的GIS系統(tǒng),比如ArcGIS,具備強大的地理信息系統(tǒng)功能,是最簡單快速的地圖應用方式,但是新建系統(tǒng)將需要構建在專業(yè)GIS網(wǎng)站上,缺乏數(shù)據(jù)的保護性和系統(tǒng)的獨立性;外部地圖工具可以提供大量的API接口,而且今后還會開發(fā)出更多的數(shù)據(jù)接口,可應用范圍將會有極大拓展,但是也存在地圖縮放比例限制、行政區(qū)劃數(shù)據(jù)不全、政治敏感等問題;矢量地圖是比較靈活自主的應用方式,卻也存在開發(fā)資源需求多、研發(fā)周期長、穩(wěn)定性不佳等缺點?!叭騻魅静∫咔榫W(wǎng)絡數(shù)據(jù)監(jiān)測系統(tǒng)”用于傳染病監(jiān)測預警科研使用,不涉及復雜和公開的數(shù)據(jù)呈現(xiàn),由此選擇利用外部地圖工具和矢量地圖的方式進行研發(fā)。
在軟件系統(tǒng)開發(fā)中,電子地圖的選擇應慎重,需要符合原國土資源部國家測繪局關于《互聯(lián)網(wǎng)地圖服務專業(yè)標準》[4](國測管發(fā)[2010]14號)的要求,主要涉及國家主權信息準確性、行政區(qū)劃標準規(guī)范性,以及世界地圖必須以中國為中心等規(guī)定。因此,如采用電子地圖開發(fā)軟件系統(tǒng),應優(yōu)先選擇國家自然資源部提供的各種比例尺電子地圖,以及國產電子地圖工具。