李忠權(quán),冷小鵬,梁 軍
(1.構(gòu)造成礦成藏國(guó)土資源部重點(diǎn)實(shí)驗(yàn)室(成都理工大學(xué)),成都 610059;2.成都理工大學(xué) 網(wǎng)絡(luò)安全學(xué)院,成都 610059;3.深圳市地質(zhì)局,廣東 深圳 518023; 4.深圳地質(zhì)建設(shè)工程公司,廣東 深圳 518023)
中國(guó)是一個(gè)多山的國(guó)家,地貌、地形類型多樣、地質(zhì)環(huán)境復(fù)雜、災(zāi)害性天氣頻發(fā),是世界上地質(zhì)災(zāi)害廣泛發(fā)育且致災(zāi)最為嚴(yán)重的國(guó)家之一。目前,中國(guó)大陸有上百萬(wàn)處的地質(zhì)災(zāi)害點(diǎn),重特大地質(zhì)災(zāi)害點(diǎn)達(dá)34 000余處,地質(zhì)災(zāi)害防治工作顯得尤為重要。利用現(xiàn)代信息技術(shù)手段建立具有良好實(shí)用性與可擴(kuò)展性的信息化集成平臺(tái),對(duì)災(zāi)害點(diǎn)監(jiān)測(cè)數(shù)據(jù)進(jìn)行自動(dòng)化分析與預(yù)警,并進(jìn)行數(shù)據(jù)可視化呈現(xiàn),能夠?yàn)榉罏?zāi)救災(zāi)提供輔助決策,對(duì)提升地質(zhì)災(zāi)害防治工作的信息化水平具有積極意義[1-3]。
面向服務(wù)的架構(gòu)(service oriented architecture,簡(jiǎn)稱:SOA)是一種組件模型,利用服務(wù)接口可以將不同的業(yè)務(wù)功能模塊進(jìn)行封裝與發(fā)布,并整合到最終應(yīng)用中,具有可重復(fù)使用、松耦合、接口定義明確、無狀態(tài)服務(wù)設(shè)計(jì)和開放標(biāo)準(zhǔn)的特征。接口采用標(biāo)準(zhǔn)的Web服務(wù)定義,不依賴于具體的軟硬件環(huán)境,構(gòu)建的接口可以利用通用規(guī)則進(jìn)行交互,便于功能維護(hù)及擴(kuò)展[4-5]。
本文設(shè)計(jì)的地質(zhì)災(zāi)害實(shí)時(shí)監(jiān)測(cè)預(yù)警平臺(tái)以當(dāng)前防災(zāi)減災(zāi)工作的信息化需求和發(fā)展趨勢(shì)為目標(biāo),采用適應(yīng)性更廣的B/S結(jié)構(gòu),結(jié)合SOA服務(wù)架構(gòu)以前、后端分離的方式構(gòu)建平臺(tái),對(duì)地質(zhì)災(zāi)害監(jiān)測(cè)預(yù)警信息實(shí)施合理高效的組織管理、集成。同時(shí),基于SOA架構(gòu)的平臺(tái)還具有通用性強(qiáng)、開放易擴(kuò)展且數(shù)據(jù)標(biāo)準(zhǔn)易統(tǒng)一等優(yōu)勢(shì),對(duì)豐富系統(tǒng)業(yè)務(wù)功能、提高災(zāi)害管理水平和增強(qiáng)數(shù)據(jù)共享度等方面都具有積極意義。
監(jiān)測(cè)預(yù)警系統(tǒng)基于3S技術(shù)、計(jì)算機(jī)及物聯(lián)網(wǎng)技術(shù)、災(zāi)害監(jiān)測(cè)預(yù)警技術(shù),以監(jiān)測(cè)區(qū)域中的滑坡、泥石流、崩塌、邊坡等地質(zhì)或工程災(zāi)害隱患點(diǎn)為監(jiān)測(cè)對(duì)象,對(duì)諸如變形、降雨量等致災(zāi)因素進(jìn)行實(shí)時(shí)監(jiān)測(cè)。通過對(duì)致災(zāi)因素相關(guān)數(shù)據(jù)的分析處理,對(duì)災(zāi)害點(diǎn)的穩(wěn)定狀態(tài)和變化趨勢(shì)做出預(yù)測(cè)?;谖锫?lián)網(wǎng)的實(shí)時(shí)監(jiān)測(cè)預(yù)警服務(wù)平臺(tái)網(wǎng)絡(luò)組織如圖 1所示,監(jiān)測(cè)設(shè)備的實(shí)時(shí)數(shù)據(jù)在前端MCU處理后,利用無線傳輸模塊基于運(yùn)營(yíng)商網(wǎng)絡(luò)接入互聯(lián)網(wǎng),并利用云平臺(tái)實(shí)現(xiàn)服務(wù)的部署與發(fā)布。
3S技術(shù)(RS,GIS,GNSS)是綜合了遙感技術(shù)、地理信息技術(shù)及衛(wèi)星定位計(jì)算的現(xiàn)代信息技術(shù),而地質(zhì)災(zāi)害信息管理的目標(biāo)也包含了大量與地理信息相關(guān)的數(shù)據(jù),與3S技術(shù)的結(jié)合不僅便于實(shí)現(xiàn)對(duì)空間信息的管理,與災(zāi)害相關(guān)的屬性信息也能進(jìn)行統(tǒng)一管理。同時(shí),云計(jì)算、物聯(lián)網(wǎng)、傳感器技術(shù)的加入也使得災(zāi)害的實(shí)時(shí)監(jiān)測(cè)、快速處理和信息傳輸?shù)汝P(guān)鍵環(huán)節(jié)得到了保障[3,6-7]。為滿足災(zāi)害實(shí)時(shí)監(jiān)測(cè)與預(yù)警的需要,系統(tǒng)由多個(gè)層次構(gòu)成(圖 2)。
圖1 基于物聯(lián)網(wǎng)的網(wǎng)絡(luò)組織結(jié)構(gòu)Fig.1 Diagram showing network organization structure based on internet of things
采集層主要為現(xiàn)場(chǎng)采集部分,包括物理傳感器以及傳輸媒體。物理傳感器有雨量計(jì)、水位計(jì)、位移計(jì)、壓力計(jì)等,分別負(fù)責(zé)采集監(jiān)測(cè)區(qū)域的不同監(jiān)測(cè)數(shù)據(jù)并記錄下來。傳輸媒體為電纜或光纖,負(fù)責(zé)將記錄下來的數(shù)據(jù)發(fā)送到下一層模塊。
傳輸層采用TCP或UDP協(xié)議。傳輸層負(fù)責(zé)接收采集層的數(shù)據(jù),并向它上面的存儲(chǔ)層和應(yīng)用層提供服務(wù)。其中UDP在傳送數(shù)據(jù)之前不需要先建立連接,通常視頻監(jiān)測(cè)等常用UDP服務(wù);而TCP則提供面向連接的服務(wù),常用于各類低頻率的數(shù)據(jù)采集。
圖2 系統(tǒng)層次結(jié)構(gòu)Fig.2 Schematic diagram showing the texture of system level
存儲(chǔ)層為數(shù)據(jù)持久化部分,包括數(shù)據(jù)庫(kù)和文件存儲(chǔ)。本層接收傳輸層的數(shù)據(jù),并將數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)中,以便于應(yīng)用層調(diào)用;同時(shí),將各類數(shù)據(jù)文件存儲(chǔ)起來。
應(yīng)用層接收傳輸層的數(shù)據(jù),并直接給用戶提供服務(wù)。在這一層上,可以提供各種數(shù)據(jù)的直觀顯示,也可以提供地災(zāi)預(yù)警等更多復(fù)雜的功能。
1.2.1 SOA架構(gòu)
SOA是一種粗粒度、松耦合服務(wù)架構(gòu),它可對(duì)接口服務(wù)進(jìn)行基于網(wǎng)絡(luò)的分布式部署和應(yīng)用。服務(wù)層是SOA的基礎(chǔ),可以直接被應(yīng)用層調(diào)用。本平臺(tái)設(shè)計(jì)中SOA的具體實(shí)現(xiàn)采用了Spring MVC框架。
MVC (模型-視圖-控制器)模式是目前Web應(yīng)用開發(fā)中廣泛使用的一種三層架構(gòu),可以很好地分離用戶界面層和業(yè)務(wù)邏輯層,便于實(shí)現(xiàn)代碼模塊化,降低功能模塊之間的耦合度。Spring MVC更加便捷地實(shí)現(xiàn)了MVC模式的核心理念,通過配置文件實(shí)現(xiàn)組件配置[8-9]。Spring MVC框架的工作原理如圖3所示,當(dāng) Dispatcher Servlet接到用戶請(qǐng)求后,根據(jù)url查找 Handler Mapping 把請(qǐng)求分派給相應(yīng)的Handler(Controller),Controller調(diào)用相應(yīng)的業(yè)務(wù)邏輯對(duì)請(qǐng)求進(jìn)行處理,如監(jiān)測(cè)數(shù)據(jù)查詢服務(wù)、預(yù)警信息讀取服務(wù)等,處理完成后返回一個(gè) ModelAndView給Dispatcher Servlet,最后由View Resolver把返回的 ModelAndView 渲染到對(duì)應(yīng)的JSP。
圖3 Spring MVC原理圖Fig.3 The schematic diagram showing the principle of Spring MVC
1.2.2 數(shù)據(jù)持久化
(1)MyBatis框架
MyBatis 是持久層框架,它支持定制化 SQL、存儲(chǔ)過程以及高級(jí)映射。它可以使用簡(jiǎn)單的XML或注解來配置和映射原生信息,將接口和Java的POJOs (Plain Old Java Objects,普通的Java對(duì)象) 映射成數(shù)據(jù)庫(kù)中的記錄[10]。
MyBatis應(yīng)用程序根據(jù)XML配置文件創(chuàng)建SQLSessionFactory,SQLSessionFactory根據(jù)配置獲取SQLSession。SQLSession包含了執(zhí)行SQL語(yǔ)句所需要的所有方法,可通過SQLSession實(shí)例直接運(yùn)行映射的SQL語(yǔ)句,完成對(duì)數(shù)據(jù)的增刪改查和事務(wù)提交等數(shù)據(jù)庫(kù)操作。
(2)數(shù)據(jù)緩存EhCache
目前平臺(tái)的相關(guān)業(yè)務(wù)流程都依附于對(duì)MySQL數(shù)據(jù)庫(kù)的訪問,高并發(fā)和大數(shù)據(jù)量的訪問會(huì)給MySQL數(shù)據(jù)庫(kù)帶來非常大的壓力,通過內(nèi)存緩存機(jī)制,可以改進(jìn)這一問題。EhCache 是一個(gè)純Java的進(jìn)程內(nèi)緩存框架,是一種應(yīng)用廣泛的分布式緩存[11],可用于實(shí)現(xiàn)Java企業(yè)級(jí)應(yīng)用中的輕量級(jí)緩存容器;同時(shí),具有內(nèi)存和磁盤存儲(chǔ)、緩存加載器、緩存擴(kuò)展、緩存異常處理、緩存過濾器、支持REST和SOAP API等特點(diǎn)。平臺(tái)利用EhCache可較好地緩解數(shù)據(jù)庫(kù)壓力,減少服務(wù)器響應(yīng)時(shí)間,提升用戶使用體驗(yàn)。
2.1.1 GIS數(shù)據(jù)集成
本項(xiàng)目GIS基礎(chǔ)平臺(tái)采用了國(guó)家測(cè)繪地理信息局監(jiān)制的天地圖,它是運(yùn)行于互聯(lián)網(wǎng)環(huán)境的國(guó)家地理信息公眾服務(wù)平臺(tái),是中國(guó)數(shù)據(jù)資源最全的地理信息服務(wù)平臺(tái)。天地圖可通過二次開發(fā)API提供地理信息服務(wù)資源的增值應(yīng)用,該API由JavaScript語(yǔ)言編寫,用戶可基于該API進(jìn)行二次開發(fā),開發(fā)定制化的Web地圖應(yīng)用[12-13]。
基于該API可實(shí)現(xiàn)將空間數(shù)據(jù)與地圖數(shù)據(jù)的集成,并完成多種展示效果,基礎(chǔ)地圖數(shù)據(jù)通過Map類加載地圖圖層(Layer)對(duì)象實(shí)現(xiàn)地圖展示,平臺(tái)需在地圖中集成展示的空間數(shù)據(jù)有矢量數(shù)據(jù)和柵格數(shù)據(jù)。
(1)矢量數(shù)據(jù)
包括災(zāi)害監(jiān)測(cè)區(qū)域、行政區(qū)域等面數(shù)據(jù),通過構(gòu)建Polygon類實(shí)現(xiàn)地圖上的面對(duì)象展示。路徑、河流等線數(shù)據(jù),可利用Polyline類在地圖上進(jìn)行折線線段展示。監(jiān)測(cè)設(shè)備通常單個(gè)部署,體現(xiàn)在地圖上是點(diǎn)數(shù)據(jù)類型,可通過Marker類實(shí)現(xiàn)在地圖上的點(diǎn)標(biāo)注。
(2)柵格數(shù)據(jù)
包括衛(wèi)星影像數(shù)據(jù)、高清航拍數(shù)據(jù)、地形數(shù)據(jù)等,將數(shù)據(jù)發(fā)布成WMS服務(wù)后,利用API中的Tile.layer自定義圖層類構(gòu)造WMS圖層,可實(shí)現(xiàn)柵格數(shù)據(jù)與地圖數(shù)據(jù)的疊加展示。
GIS數(shù)據(jù)的集成流程如圖 4所示,柵格數(shù)據(jù)可由GeoServer或者ArcGIS Server等第三方的GIS服務(wù)器將柵格數(shù)據(jù)文件發(fā)布為WMS服務(wù),由API疊加到天地圖的底圖上展示。矢量數(shù)據(jù)通過Java服務(wù)端程序訪問數(shù)據(jù)庫(kù),獲取到點(diǎn)、線、面相關(guān)的坐標(biāo)數(shù)據(jù),用WebService方式提供給前端,API將坐標(biāo)數(shù)據(jù)構(gòu)建出相應(yīng)的數(shù)據(jù)對(duì)象后加載到地圖上完成繪制。
2.1.2 監(jiān)測(cè)數(shù)據(jù)可視化
(1)數(shù)據(jù)獲取
監(jiān)測(cè)數(shù)據(jù)由部署在監(jiān)測(cè)現(xiàn)場(chǎng)的傳感器采集獲得,經(jīng)過MCU模塊進(jìn)行基本的轉(zhuǎn)換處理與數(shù)據(jù)封裝后,由傳輸模塊通過TCP/IP協(xié)議發(fā)送到位于互聯(lián)網(wǎng)上的服務(wù)器端,服務(wù)器端通過前端接收程序?qū)?shù)據(jù)進(jìn)行解析和預(yù)處理后,存入數(shù)據(jù)庫(kù)保存。在平臺(tái)運(yùn)行中,業(yè)務(wù)邏輯層根據(jù)Web端的應(yīng)用服務(wù)請(qǐng)求,將數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行篩選、處理后返回給Web端,從而實(shí)現(xiàn)基于監(jiān)測(cè)數(shù)據(jù)的可視化、數(shù)據(jù)分析、報(bào)表操作等一系列面向最終用戶的功能(圖 5)。
(2)優(yōu)化查詢與數(shù)據(jù)可視化
監(jiān)測(cè)預(yù)警的應(yīng)用中,僅查看當(dāng)前監(jiān)測(cè)的實(shí)時(shí)值難以進(jìn)行科學(xué)評(píng)估,因此,平臺(tái)除了顯示實(shí)時(shí)監(jiān)測(cè)值以外,還需要以圖形化方式對(duì)歷史數(shù)據(jù)進(jìn)行直觀的動(dòng)態(tài)分析對(duì)比,以了解災(zāi)害孕育過程、發(fā)展趨勢(shì),便于總結(jié)客觀規(guī)律,提升防災(zāi)水平。常見的地質(zhì)災(zāi)害監(jiān)測(cè)包括雨量、深部位移、表面位移、裂縫、土體含水率等十余種數(shù)據(jù)類型,且平臺(tái)運(yùn)行將積累海量的數(shù)據(jù),因此數(shù)據(jù)查詢及圖形化展示效率都需優(yōu)化設(shè)計(jì)。
為提升數(shù)據(jù)查詢效率,平臺(tái)采用EhCache配合MySQL實(shí)現(xiàn)數(shù)據(jù)緩存,作為進(jìn)程內(nèi)的緩存框架,能夠獲得比磁盤數(shù)據(jù)庫(kù)更高的訪問效率,減少?gòu)臄?shù)據(jù)庫(kù)大量數(shù)據(jù)中檢索的耗時(shí)。平臺(tái)數(shù)據(jù)庫(kù)中的監(jiān)測(cè)數(shù)據(jù)將最近1個(gè)月內(nèi)數(shù)據(jù)置入緩存以便快速檢索,數(shù)據(jù)元素以K-V形式存放,采用LRU(Least Recently Used,最近最少使用)策略維護(hù)以提高命中率。即緩存元素帶有時(shí)間戳屬性,被訪問后將更新該時(shí)間戳,當(dāng)緩存容量不足需進(jìn)行數(shù)據(jù)淘汰時(shí),時(shí)間戳離當(dāng)前時(shí)間最遠(yuǎn)的緩存元素將被清出;如果緩存中無所需數(shù)據(jù),將直讀數(shù)據(jù)庫(kù)并寫入緩存以提高下次訪問命中概率。
圖4 GIS數(shù)據(jù)集成Fig.4 GIS data integration
圖5 監(jiān)測(cè)數(shù)據(jù)應(yīng)用流程Fig.5 The application flow chart for the monitoring data
數(shù)據(jù)動(dòng)態(tài)圖表展示可更直觀地呈現(xiàn)災(zāi)害點(diǎn)監(jiān)測(cè)項(xiàng)的變化情況,為在瀏覽器端實(shí)現(xiàn)良好的圖表展示效果,平臺(tái)采用了JavaScript技術(shù)實(shí)現(xiàn)的可視化庫(kù)ECharts[14]。它可以流暢地運(yùn)行在 PC 和移動(dòng)設(shè)備上并兼容當(dāng)前絕大部分瀏覽器,底層依賴輕量級(jí)的矢量圖形庫(kù) ZRender,可提供直觀、交互豐富、可高度個(gè)性化定制的數(shù)據(jù)可視化圖表;同時(shí),ECharts通過增量渲染技術(shù),支持Canvas/SVG 雙引擎渲染,能夠?qū)崿F(xiàn)千萬(wàn)級(jí)數(shù)據(jù)量的渲染[15]。平臺(tái)基于ECharts庫(kù)能夠?qū)崿F(xiàn)前端對(duì)大量監(jiān)測(cè)數(shù)據(jù)的圖表可視化渲染,并且具有流暢的動(dòng)態(tài)效果。其應(yīng)用流程如圖 6所示。
圖6 ECharts應(yīng)用流程Fig.6 The process of ECharts application
服務(wù)端檢索的數(shù)據(jù)將進(jìn)行基本的封裝,生成JSON數(shù)據(jù)對(duì)象作為圖表曲線數(shù)據(jù)項(xiàng),通過定義tooltip、toolbox、xAxis、yAxis等內(nèi)容配置圖表的展示選項(xiàng),在創(chuàng)建ECharts實(shí)例后,加載數(shù)據(jù)及配置項(xiàng)即可在頁(yè)面實(shí)現(xiàn)圖表渲染。渲染效果如圖 7所示,圖中加載了小時(shí)雨量數(shù)據(jù)(柱狀)以及地下深部3個(gè)位移量(曲線)。
2.2.1 預(yù)警設(shè)置
地質(zhì)災(zāi)害常見的監(jiān)測(cè)內(nèi)容包括地表變形、深部變形、地下水、氣象監(jiān)測(cè)等,不同的監(jiān)測(cè)內(nèi)容采用不同的監(jiān)測(cè)方法(表 1)。
表 1 地災(zāi)預(yù)警中常見的監(jiān)測(cè)方法Table 1 Some common monitoring methods in disaster warning
風(fēng)險(xiǎn)預(yù)警按國(guó)家標(biāo)準(zhǔn)劃分為注意、警示、警戒、警報(bào)4個(gè)等級(jí),平臺(tái)預(yù)警方案設(shè)計(jì)中主要有傳統(tǒng)的單體閾值預(yù)警及基于大數(shù)據(jù)的機(jī)器學(xué)習(xí)預(yù)警2種類型。
(1)閾值預(yù)警
通常一個(gè)災(zāi)害點(diǎn)會(huì)部署多種監(jiān)測(cè)設(shè)備,對(duì)于一個(gè)災(zāi)害點(diǎn)開展監(jiān)測(cè)工作時(shí),需進(jìn)行地質(zhì)背景調(diào)查、災(zāi)害發(fā)育特征研究等前期工作,針對(duì)降雨、變形等因素確定主要災(zāi)害因子,并利用數(shù)值模擬等研究方法,針對(duì)諸如降雨量、變形量、地下水位等不同監(jiān)測(cè)內(nèi)容采用不同的定量值進(jìn)行閾值劃分,對(duì)應(yīng)不同的預(yù)警級(jí)別。平臺(tái)針對(duì)各監(jiān)測(cè)設(shè)備設(shè)定不同級(jí)別的警報(bào)閾值,實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)讀入時(shí)將與該設(shè)備設(shè)定閾值進(jìn)行對(duì)比,根據(jù)數(shù)值區(qū)間觸發(fā)警報(bào)事件。
圖7 ECharts數(shù)據(jù)加載Fig.7 Diagram showing the data load of ECharts
(2)機(jī)器學(xué)習(xí)預(yù)警
平臺(tái)運(yùn)行期將積累大量監(jiān)測(cè)數(shù)據(jù),也會(huì)產(chǎn)生一定量的具有風(fēng)險(xiǎn)級(jí)別的預(yù)警記錄。對(duì)大量的監(jiān)測(cè)預(yù)警數(shù)據(jù)進(jìn)行挖掘,通過機(jī)器學(xué)習(xí)的方式對(duì)實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)進(jìn)行分析,構(gòu)建監(jiān)測(cè)預(yù)警模型算法,可豐富預(yù)警手段,并且與閾值預(yù)警互補(bǔ),可獲得更為準(zhǔn)確的預(yù)警結(jié)果。
平臺(tái)利用機(jī)器學(xué)習(xí)算法中基于KD樹的K最近鄰分類算法(kNN),通過對(duì)歷史監(jiān)測(cè)預(yù)警數(shù)據(jù)進(jìn)行訓(xùn)練,進(jìn)行有監(jiān)督的機(jī)器學(xué)習(xí),構(gòu)建訓(xùn)練模型,利用該模型對(duì)實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)進(jìn)行分類,得出對(duì)應(yīng)的預(yù)警等級(jí)。kNN算法的核心思想是根據(jù)一個(gè)樣本的特征空間中k個(gè)最相鄰樣本大多數(shù)所屬的類別,來判定該樣本的類別[16]。在平臺(tái)設(shè)計(jì)中,將監(jiān)測(cè)數(shù)據(jù)進(jìn)行預(yù)處理后,如將單位時(shí)間累積變形量、變形速率、24小時(shí)降雨量、當(dāng)前地下水位等數(shù)據(jù)作為計(jì)算屬性,根據(jù)當(dāng)前預(yù)警級(jí)別作為分類結(jié)果進(jìn)行訓(xùn)練,當(dāng)有新的監(jiān)測(cè)數(shù)據(jù)讀入后,根據(jù)當(dāng)前訓(xùn)練模型進(jìn)行計(jì)算,得出分類結(jié)果并存入數(shù)據(jù)庫(kù)。機(jī)器學(xué)習(xí)預(yù)警流程如圖 8所示。
圖8 機(jī)器學(xué)習(xí)預(yù)警流程Fig.8 The process of machine learning warning
2.2.2 警情推送
根據(jù)閾值或者機(jī)器學(xué)習(xí)模型判斷出的預(yù)警級(jí)別將存至數(shù)據(jù)庫(kù),并將預(yù)警結(jié)果進(jìn)行推送提醒。從服務(wù)器到瀏覽器端的預(yù)警推送采用WebSocket實(shí)現(xiàn),它是HTML5提供的一種在單個(gè) TCP 連接上進(jìn)行全雙工通信的協(xié)議[17]。在其API中,瀏覽器和服務(wù)器只需進(jìn)行握手即可形成數(shù)據(jù)通道,實(shí)現(xiàn)數(shù)據(jù)通信。
平臺(tái)瀏覽器端采用了SockJS庫(kù),它提供了一個(gè)連貫的、跨瀏覽器的JavaScript API,可創(chuàng)建一個(gè)低延遲、全雙工、跨域的WebSocket通道,且具有良好的瀏覽器兼容性,優(yōu)先使用原生WebSocket,在不支持WebSocket的瀏覽器中,會(huì)自動(dòng)降為輪詢的方式。平臺(tái)服務(wù)端架構(gòu)中的Spring4可直接實(shí)現(xiàn)對(duì)WebSocket協(xié)議的支持。瀏覽器端只需要利用SockJS庫(kù)中的WebSocket類建立起與服務(wù)端的連接后,即可接收服務(wù)端發(fā)送的實(shí)時(shí)消息推送。
預(yù)警信息以上述方式由服務(wù)端將封裝了預(yù)警內(nèi)容的JSON數(shù)據(jù)發(fā)送到瀏覽器端,瀏覽器端解析后在頁(yè)面呈現(xiàn)報(bào)警信息(圖9)。
為驗(yàn)證系統(tǒng)設(shè)計(jì)的可行性與穩(wěn)定性,將該平臺(tái)在深圳市鹽田區(qū)、寶安區(qū)等80多個(gè)監(jiān)測(cè)對(duì)象進(jìn)行了集成應(yīng)用,共計(jì)接入了180余臺(tái)各種類型的監(jiān)測(cè)設(shè)備。通過一年多的運(yùn)行測(cè)試,系統(tǒng)達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo),在SOA的設(shè)計(jì)框架下實(shí)現(xiàn)對(duì)監(jiān)測(cè)對(duì)象及實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)的管理,能夠根據(jù)監(jiān)測(cè)數(shù)據(jù)情況推送預(yù)警信息,并正常完成了其他業(yè)務(wù)系統(tǒng)功能。系統(tǒng)的應(yīng)用,驗(yàn)證了系統(tǒng)可實(shí)現(xiàn)實(shí)時(shí)的監(jiān)測(cè),為系統(tǒng)在地質(zhì)災(zāi)害監(jiān)測(cè)與預(yù)警方面的應(yīng)用提供了一定的經(jīng)驗(yàn)。
實(shí)現(xiàn)SOA架構(gòu)的平臺(tái)運(yùn)行效果如圖 10所示,平臺(tái)基于WebGIS實(shí)現(xiàn),可基于地理坐標(biāo)在地圖上顯示接入災(zāi)害監(jiān)測(cè)點(diǎn),界面左側(cè)是功能列表,右側(cè)地圖區(qū)域?yàn)榫C合業(yè)務(wù)展示區(qū),可集成地圖展示數(shù)據(jù)及進(jìn)行所需業(yè)務(wù)操作:圖10-A加載了視圖區(qū)域內(nèi)的災(zāi)害監(jiān)測(cè)點(diǎn),并對(duì)位置接近的點(diǎn)進(jìn)行了聚合展示處理;監(jiān)測(cè)數(shù)據(jù)可動(dòng)態(tài)繪圖,圖10-B是選擇了監(jiān)測(cè)對(duì)象中的雨量計(jì)設(shè)備后,對(duì)選定時(shí)間段日降雨量和累計(jì)雨量的圖形化展示;圖10-C是設(shè)備的業(yè)務(wù)操作界面,可對(duì)監(jiān)測(cè)設(shè)備多條件檢索進(jìn)行狀態(tài)維護(hù),以及設(shè)定預(yù)警閾值等相關(guān)操作;圖10-D為機(jī)器學(xué)習(xí)預(yù)警設(shè)置界面,可進(jìn)行相關(guān)參數(shù)設(shè)定,并顯示當(dāng)前風(fēng)險(xiǎn)狀態(tài),當(dāng)達(dá)到風(fēng)險(xiǎn)級(jí)別時(shí)后臺(tái)會(huì)進(jìn)行推送。
圖9 預(yù)警推送顯示Fig.9 Display of warning information pushing
圖10 平臺(tái)運(yùn)行效果Fig.10 Diagram showing the platform operation effect(A)災(zāi)害點(diǎn)分布與地理信息; (B)監(jiān)測(cè)數(shù)據(jù)接入與圖表展示;(C)監(jiān)測(cè)設(shè)備查詢管理; (D)機(jī)器學(xué)習(xí)預(yù)警設(shè)置與展示
監(jiān)測(cè)預(yù)警平臺(tái)的建設(shè)涉及多類異構(gòu)數(shù)據(jù)的集成與展示,采用SOA架構(gòu)將數(shù)據(jù)作為數(shù)據(jù)服務(wù)進(jìn)行發(fā)布,能更好地實(shí)現(xiàn)系統(tǒng)業(yè)務(wù)功能的集成,及更好的可擴(kuò)展性與兼容性;同時(shí),便于實(shí)現(xiàn)前端展示與后臺(tái)業(yè)務(wù)邏輯的分離,充分體現(xiàn)了低耦合、高內(nèi)聚的軟件設(shè)計(jì)思想,可較好地滿足地質(zhì)災(zāi)害監(jiān)測(cè)與預(yù)警平臺(tái)建設(shè)的需求。
成都理工大學(xué)學(xué)報(bào)(自然科學(xué)版)2018年5期