陳 凱 易 江 孫國(guó)棟 于天航 汪 建
(中國(guó)重慶 401147 重慶市地震局)
防震減災(zāi)工作是我國(guó)經(jīng)濟(jì)社會(huì)發(fā)展中的一項(xiàng)重要內(nèi)容,在數(shù)字化觀測(cè)網(wǎng)絡(luò)技術(shù)蓬勃發(fā)展的背景下,對(duì)地震基礎(chǔ)數(shù)據(jù)的正確記錄和處理提出了新的需求。目前數(shù)據(jù)監(jiān)控系統(tǒng)多依托于PC 平臺(tái),使用環(huán)境受到約束。為了給工作人員提供方便快捷的技術(shù)工具,開(kāi)發(fā)一套基于手機(jī)移動(dòng)端的數(shù)據(jù)監(jiān)控系統(tǒng)顯得迫在眉睫。Android 手機(jī)因其龐大的用戶群體成為監(jiān)控系統(tǒng)平臺(tái)的首選。
儀器工作狀態(tài)是否正常決定了觀測(cè)數(shù)據(jù)記錄質(zhì)量的好壞。相對(duì)于通過(guò)流服務(wù)進(jìn)行實(shí)時(shí)傳輸存儲(chǔ)的測(cè)震數(shù)據(jù)(陳靜等,2019),地球物理觀測(cè)數(shù)據(jù)因本地存儲(chǔ)統(tǒng)一交換的傳輸策略,導(dǎo)致儀器故障處理的時(shí)效性并不高。故障發(fā)生原因往往是多方面的,供電故障、電信故障、程序死機(jī)等均會(huì)造成數(shù)據(jù)傳輸故障,導(dǎo)致斷記或數(shù)據(jù)缺失,從而影響觀測(cè)數(shù)據(jù)記錄質(zhì)量。及時(shí)發(fā)現(xiàn)并排除故障,有利于提高數(shù)據(jù)記錄完整性及臺(tái)網(wǎng)運(yùn)行效率。通過(guò)開(kāi)發(fā)地震地球物理數(shù)據(jù)監(jiān)控軟件,為工作人員在值班及運(yùn)維時(shí)提供軟件和技術(shù)支持,及時(shí)獲取儀器工作狀態(tài),可以第一時(shí)間發(fā)現(xiàn)設(shè)備故障并維修,提高工作效率。
利用Eclipse 開(kāi)發(fā)工具,完成地震地球物理數(shù)據(jù)實(shí)時(shí)監(jiān)控軟件的編寫(xiě)。采用數(shù)據(jù)訪問(wèn)層、業(yè)務(wù)邏輯層、表示層三層架構(gòu),設(shè)計(jì)實(shí)現(xiàn)地震地球物理數(shù)據(jù)實(shí)時(shí)監(jiān)控。表示層(UI)實(shí)現(xiàn)用戶界面功能,將用戶指令傳達(dá)至業(yè)務(wù)邏輯層(BLL)。業(yè)務(wù)邏輯層(BLL)實(shí)現(xiàn)對(duì)具體問(wèn)題的邏輯判斷與執(zhí)行功能,是表示層(UI)和數(shù)據(jù)訪問(wèn)層(DBL)的中間層,是二者的連接紐帶。接收到表示層(UI)指令后,業(yè)務(wù)邏輯層(BLL)連接數(shù)據(jù)訪問(wèn)層(DAL),實(shí)現(xiàn)三層之間的數(shù)據(jù)連接和指令傳達(dá),對(duì)接收數(shù)據(jù)進(jìn)行邏輯處理,實(shí)現(xiàn)數(shù)據(jù)的增加、修改、查詢、刪除等功能,同時(shí)將處理結(jié)果反饋至表示層(UI),從而實(shí)現(xiàn)軟件功能(李剛,2015)。
在本系統(tǒng)中,Android 手機(jī)端通過(guò)布局文件Layout 和Java 代碼實(shí)現(xiàn)軟件界面加載、數(shù)據(jù)的展示等功能。接口類(Java Servlet)實(shí)現(xiàn)表示層與數(shù)據(jù)層之間的數(shù)據(jù)傳輸,本系統(tǒng)的Java Servlet是部署在應(yīng)用服務(wù)器Tomcat上的程序,將手機(jī)端指令連接到服務(wù)器端,并將數(shù)據(jù)返回到手機(jī)端(王翠萍,2015)。服務(wù)器端采用阿里云服務(wù)器和Mysql 數(shù)據(jù)庫(kù)實(shí)現(xiàn),用于響應(yīng)手機(jī)端指令,為用戶提供所需數(shù)據(jù)。系統(tǒng)架構(gòu)見(jiàn)圖1。
圖1 系統(tǒng)架構(gòu)示意Fig.1 System architecture diagram
地球物理數(shù)據(jù)監(jiān)控系統(tǒng)的功能模塊因其依賴的運(yùn)行網(wǎng)絡(luò)環(huán)境不同,分為局域網(wǎng)模塊與廣域網(wǎng)模塊。局域網(wǎng)模塊依賴于行業(yè)信息內(nèi)網(wǎng)的網(wǎng)絡(luò)環(huán)境實(shí)現(xiàn),包括儀器狀態(tài)監(jiān)測(cè)、實(shí)時(shí)數(shù)據(jù)查看、歷史數(shù)據(jù)瀏覽3 大功能模塊。廣域網(wǎng)模塊依賴于阿里云服務(wù)器、輕型應(yīng)用服務(wù)器Tmocat 及Mysql 數(shù)據(jù)庫(kù)實(shí)現(xiàn),包括運(yùn)維信息管理、維修記錄管理、IP 信息管理、日志信息管理、用戶信息管理、臺(tái)站路線導(dǎo)航等功能模塊(陳凱等,2018)。系統(tǒng)功能模塊見(jiàn)圖2,軟件功能界面見(jiàn)圖3。通過(guò)儀器狀態(tài)、實(shí)時(shí)數(shù)據(jù)、歷史曲線、運(yùn)維信息、維修記錄、IP 信息、日志瀏覽、密碼設(shè)置、地圖查看,實(shí)現(xiàn)系統(tǒng)功能。通過(guò)以上功能模塊的設(shè)計(jì),有針對(duì)性地實(shí)現(xiàn)了各項(xiàng)數(shù)據(jù)服務(wù)需求。
圖2 系統(tǒng)功能結(jié)構(gòu)Fig.2 Module function structure
圖3 軟件功能界面Fig.3 Software function interface
局域網(wǎng)模塊包括儀器狀態(tài)監(jiān)測(cè)、實(shí)時(shí)數(shù)據(jù)查看、歷史數(shù)據(jù)瀏覽3 大功能模塊,主要為工作中需要獲取儀器工作狀態(tài)和查看儀器數(shù)據(jù)服務(wù)。儀器工作狀態(tài)對(duì)數(shù)據(jù)記錄的準(zhǔn)確完整至關(guān)重要,地球物理儀器因其數(shù)據(jù)傳輸?shù)牟贿B續(xù)性,導(dǎo)致故障處理時(shí)效性不高。為了減少故障對(duì)數(shù)據(jù)造成的不良影響,值班人員需要不定時(shí)進(jìn)行儀器檢查,從而及時(shí)準(zhǔn)確的獲取儀器工作狀態(tài),發(fā)現(xiàn)故障并通知運(yùn)維人員進(jìn)行故障排除,增加了值班人員工作強(qiáng)度。為解決此客觀問(wèn)題,提高故障處理的時(shí)效性,設(shè)計(jì)儀器狀態(tài)監(jiān)測(cè)、實(shí)時(shí)數(shù)據(jù)查看、歷史數(shù)據(jù)瀏覽模塊,分步處理數(shù)據(jù)的連續(xù)性與準(zhǔn)確性所面對(duì)的問(wèn)題。
(1)儀器狀態(tài)監(jiān)測(cè)模塊。利用儀器狀態(tài)監(jiān)測(cè)模塊,可以進(jìn)行儀器的集中聯(lián)通檢測(cè),值班人員可選取不同類型的地球物理儀器進(jìn)行一鍵檢測(cè),查看儀器工作狀態(tài)及網(wǎng)絡(luò)聯(lián)通狀態(tài)。該模塊主要通過(guò)與儀器進(jìn)行網(wǎng)絡(luò)聯(lián)通通信實(shí)現(xiàn),使用類似PC 端的Ping 類來(lái)實(shí)現(xiàn)儀器IP 連接操作,將得到儀器狀態(tài)信息返回給客戶端并向用戶進(jìn)行展示。利用該模塊功能,選取儀器類型并啟動(dòng),系統(tǒng)將快速進(jìn)行多臺(tái)儀器的狀態(tài)聯(lián)通檢測(cè),連接成功顯示綠色色塊,失敗則顯示紅色色塊,具備與PC 端相同顯示效果。儀器連接狀態(tài)界面見(jiàn)圖4。
圖4 儀器狀態(tài)界面Fig.4 Instrument status interface
(2)實(shí)時(shí)數(shù)據(jù)查看模塊。實(shí)時(shí)數(shù)據(jù)查看模塊主要針對(duì)地球物理儀器運(yùn)行不穩(wěn)定,主程序死機(jī)但網(wǎng)絡(luò)通信模塊依然正常的問(wèn)題而設(shè)計(jì)。通過(guò)網(wǎng)絡(luò)連接類(HttpClient)模擬登錄儀器主頁(yè)面,并通過(guò)WebView(網(wǎng)頁(yè)界面顯示類)獲取網(wǎng)頁(yè)信息,從而獲得儀器系統(tǒng)時(shí)間和當(dāng)前數(shù)據(jù),并將查詢結(jié)果返回客戶端,客戶端通過(guò)TimerTask(定時(shí)器)線程進(jìn)行循環(huán)操作,并將結(jié)果循環(huán)輸出至用戶界面向用戶展示。同時(shí),通過(guò)MPAndroidChart 圖表控件,將獲取數(shù)據(jù)在客戶端繪圖顯示,則可通過(guò)數(shù)據(jù)短期變化趨勢(shì)圖,輔助判斷儀器工作狀態(tài)。利用實(shí)時(shí)數(shù)據(jù)查看功能,可有效避免Ping 類命令的局限性。
儀器狀態(tài)參數(shù)獲取邏輯主要通過(guò)WebView 來(lái)實(shí)現(xiàn)。WebView 類通過(guò)加載不同儀器的IP 地址來(lái)實(shí)現(xiàn)用戶界面展示,并將展示頁(yè)面轉(zhuǎn)換成Json 數(shù)據(jù)格式,進(jìn)行關(guān)鍵信息的匹配查詢,從而獲得系統(tǒng)當(dāng)前時(shí)間和不同測(cè)項(xiàng)的觀測(cè)數(shù)據(jù),并將數(shù)據(jù)返回客戶端進(jìn)入存儲(chǔ)和繪圖等后續(xù)流程。用戶選擇目標(biāo)臺(tái)站并啟動(dòng)實(shí)時(shí)數(shù)據(jù)查看功能,則儀器聯(lián)通狀態(tài)和系統(tǒng)當(dāng)前數(shù)據(jù)分別以色塊和文本予以展示,同時(shí)在圖表控件中繪制數(shù)據(jù)曲線實(shí)時(shí)連續(xù)動(dòng)態(tài)圖像,實(shí)現(xiàn)手機(jī)端與儀器顯示屏的實(shí)時(shí)輸出。功能界面見(jiàn)圖5。
圖5 實(shí)時(shí)數(shù)據(jù)界面Fig.5 Real-time data interface
(3)歷史數(shù)據(jù)瀏覽模塊。該模塊提供儀器前期數(shù)據(jù)波形曲線比對(duì)功能。通過(guò)FileDownloader(下載控件)連接所需數(shù)據(jù)儀器的下載頁(yè)面,通過(guò)指令進(jìn)行數(shù)據(jù)的后臺(tái)下載,下載完成后進(jìn)行數(shù)據(jù)處理,并通過(guò)MPAndroidChart(圖表控件)進(jìn)行繪圖展示,且支持滑動(dòng)、放大、縮小等操作。該模塊提供當(dāng)前3 天以內(nèi)的數(shù)據(jù)曲線瀏覽,用戶可根據(jù)需求選擇相應(yīng)儀器進(jìn)行瀏覽。點(diǎn)擊完成日期并進(jìn)行臺(tái)站選取,點(diǎn)擊Strat 進(jìn)行數(shù)據(jù)下載并予以轉(zhuǎn)換,在MPAndroidChart 圖表控件中繪圖輸出。數(shù)據(jù)曲線界面見(jiàn)圖6。
圖6 歷史曲線界面Fig.6 Historical curve interface
廣域網(wǎng)模塊包括運(yùn)維信息管理、維修記錄管理、IP 信息管理、日志信息管理、用戶信息管理、臺(tái)站路線導(dǎo)航模塊。除臺(tái)站路線導(dǎo)航模塊外,其余模塊均基于數(shù)據(jù)庫(kù)中不同信息實(shí)現(xiàn)業(yè)務(wù)邏輯管理,故將該類模塊歸為信息管理類模塊統(tǒng)一說(shuō)明。
2.2.1 信息管理類模塊。該類模塊包括上述幾種具體業(yè)務(wù)信息模塊,主要為工作中需要記錄的操作流程服務(wù)。當(dāng)運(yùn)維人員進(jìn)行儀器的現(xiàn)場(chǎng)維護(hù)、維修升級(jí)及IP 地址更改和日志處理等操作后,可通過(guò)此類模塊將進(jìn)行記錄存檔,方便日后查閱統(tǒng)計(jì)。該類模塊通過(guò)邏輯層的數(shù)據(jù)傳輸實(shí)現(xiàn)用戶到服務(wù)器的交互,將所記錄數(shù)據(jù)分門別類地存儲(chǔ)到數(shù)據(jù)庫(kù)不同數(shù)據(jù)表上。所記錄數(shù)據(jù)既可通過(guò)客戶端進(jìn)行匯總展示,也可利用Navicat 數(shù)據(jù)庫(kù)管理軟件導(dǎo)出到PC 端進(jìn)行統(tǒng)計(jì)。以往通過(guò)PC 端或紙質(zhì)件進(jìn)行此類操作,具有一定滯后性和繁瑣性,通過(guò)該類信息模塊設(shè)計(jì),可將原有記錄流程簡(jiǎn)化,提高記錄的時(shí)效性和工作效率。
業(yè)務(wù)邏輯層(BLL)響應(yīng)客戶端指令,通過(guò)界面獲取用戶業(yè)務(wù)需求,將數(shù)據(jù)信息進(jìn)行Json 格式封裝,并與部署在應(yīng)用服務(wù)器Tomcat 上的邏輯層進(jìn)行通信,完成對(duì)數(shù)據(jù)庫(kù)的各項(xiàng)操作,將結(jié)果打包成Json 數(shù)據(jù)返回客戶端,實(shí)現(xiàn)邏輯層數(shù)據(jù)傳輸功能。本系統(tǒng)的邏輯層通過(guò)doGet 數(shù)據(jù)傳輸方法實(shí)現(xiàn)。以數(shù)據(jù)管理中運(yùn)維信息的查詢邏輯為例,doGet 數(shù)據(jù)傳輸方法如下:通過(guò)廣域網(wǎng)進(jìn)行數(shù)據(jù)庫(kù)連接,將通過(guò)Android 手機(jī)界面輸入的查詢運(yùn)維信息內(nèi)容進(jìn)行格式轉(zhuǎn)換,傳輸?shù)皆诜?wù)器上運(yùn)行的數(shù)據(jù)庫(kù)進(jìn)行查詢等操作,查詢完成后將數(shù)據(jù)傳回用戶界面,在界面層進(jìn)行布局文件的轉(zhuǎn)換輸出。在數(shù)據(jù)管理功能中,點(diǎn)擊不同標(biāo)簽頁(yè)進(jìn)行信息切換,并進(jìn)行分類展示,對(duì)于需要詳細(xì)操作的條目,點(diǎn)擊進(jìn)入該條目進(jìn)行瀏覽與修改等操作。數(shù)據(jù)管理功能界面見(jiàn)圖7。
圖7 數(shù)據(jù)管理界面Fig.7 Data management interface
2.2.2 地圖導(dǎo)航模塊。該模塊主要依托百度地圖API 接口開(kāi)發(fā),為儀器現(xiàn)場(chǎng)維護(hù)人員服務(wù)。百度地圖API 是為個(gè)人開(kāi)發(fā)者免費(fèi)提供的一套基于百度地圖服務(wù)的應(yīng)用接口,包括JavaScript API、Web 服務(wù)API、Android SDK 等開(kāi)發(fā)工具與服務(wù),提供基本地圖展現(xiàn)、搜索、定位、路線規(guī)劃等功能,適用于PC 端、移動(dòng)端等多種設(shè)備。為避免環(huán)境及人為干擾,地震臺(tái)站多在偏僻之地選址,無(wú)明顯標(biāo)識(shí)。當(dāng)儀器發(fā)生故障無(wú)法遠(yuǎn)程排除需要現(xiàn)場(chǎng)維護(hù)時(shí),受限于目標(biāo)臺(tái)站的熟悉程度,可能無(wú)法第一時(shí)間準(zhǔn)確找到臺(tái)站位置,導(dǎo)致運(yùn)維的時(shí)效性降低。
地圖導(dǎo)航模塊通過(guò)查詢數(shù)據(jù)表中臺(tái)站的位置,調(diào)用百度地圖路線規(guī)劃服務(wù),幫助運(yùn)維人員及時(shí)到達(dá)臺(tái)站排除故障,提高儀器運(yùn)行率。在使用百度地圖API 之前,必須申請(qǐng)第三方Map 服務(wù)的API key,加入系統(tǒng)數(shù)字證書(shū)的存儲(chǔ)路徑。導(dǎo)航時(shí)根據(jù)GPS 信號(hào)進(jìn)行系統(tǒng)初始定位,通過(guò)onReceiveLocation 方法,獲取用戶經(jīng)緯度坐標(biāo)完成初始定位,根據(jù)目標(biāo)位置調(diào)用路線規(guī)劃服務(wù),在當(dāng)前MapView 地圖頁(yè)面繪制路線反饋信息。通過(guò)該功能,用戶可選取不同臺(tái)站,點(diǎn)擊路線導(dǎo)航,系統(tǒng)將調(diào)用百度地圖相關(guān)服務(wù)并反饋規(guī)劃路線,效果見(jiàn)圖8。
圖8 地圖導(dǎo)航界面Fig.8 Map navigation interface
地震地球物理數(shù)據(jù)監(jiān)控軟件安裝完成后,值班人員根據(jù)工作具體內(nèi)容執(zhí)行相應(yīng)業(yè)務(wù)處理流程,軟件運(yùn)行邏輯流程見(jiàn)圖9。用戶在客戶端主界面點(diǎn)擊選取不同模塊,實(shí)現(xiàn)上述各項(xiàng)功能(圖3)。值班人員利用儀器狀態(tài)監(jiān)測(cè)模塊,分時(shí)段檢測(cè)同類儀器狀態(tài)(圖4)。對(duì)于檢測(cè)狀態(tài)不正常的儀器,可通過(guò)實(shí)時(shí)數(shù)據(jù)模塊查看儀器實(shí)時(shí)數(shù)據(jù)(圖5),也可對(duì)比儀器歷史數(shù)據(jù)進(jìn)行運(yùn)行狀態(tài)分析(圖6)。在對(duì)數(shù)據(jù)進(jìn)行分析匯總后,若確定儀器存在故障需進(jìn)行現(xiàn)場(chǎng)維護(hù),及時(shí)通知運(yùn)維人員進(jìn)行故障排除。運(yùn)維人員接到任務(wù)后,通過(guò)地圖導(dǎo)航模塊確定故障臺(tái)站位置,并進(jìn)行路線規(guī)劃(圖8)。完成現(xiàn)場(chǎng)維護(hù)后,結(jié)合運(yùn)維內(nèi)容和儀器維修情況填寫(xiě)日志記錄,并保存至數(shù)據(jù)庫(kù)的不同數(shù)據(jù)表,值班人員亦可進(jìn)行查閱、修改、刪除等操作,進(jìn)行數(shù)據(jù)歸檔(圖7)。
圖9 系統(tǒng)運(yùn)行流程Fig.9 System operation process
本軟件在重慶市地震局渝西片區(qū)運(yùn)維中心試運(yùn)行4 個(gè)月,運(yùn)行效果良好,統(tǒng)計(jì)結(jié)果見(jiàn)表1。值班人員定時(shí)進(jìn)行儀器聯(lián)通測(cè)試,及時(shí)發(fā)現(xiàn)主機(jī)死機(jī)、通信模塊故障等直接表現(xiàn)為網(wǎng)絡(luò)通訊異常的故障,故障發(fā)現(xiàn)時(shí)效性得到提高。對(duì)于網(wǎng)絡(luò)通訊正常的軟故障,在進(jìn)行數(shù)據(jù)傳輸交換時(shí),利用本軟件進(jìn)行輔助檢查,并結(jié)合數(shù)據(jù)曲線進(jìn)行判斷。同時(shí),運(yùn)維人員利用本軟件,可較為直觀地獲取故障表現(xiàn)特征,并采取相應(yīng)手段恢復(fù)數(shù)據(jù),在一定程度上縮短了故障排除時(shí)間,工作效率得以提高。
表1 軟件運(yùn)行效果匯總Table 1 Summary of software operation effect
隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,手機(jī)客戶端軟件以其便捷的優(yōu)勢(shì)彌補(bǔ)了PC 端軟件的不足。地震地球物理數(shù)據(jù)監(jiān)控軟件開(kāi)發(fā)完成后,在重慶市地震局渝西片區(qū)運(yùn)維中心進(jìn)行試運(yùn)行,結(jié)合云服務(wù)器、MySql 數(shù)據(jù)庫(kù)和百度地圖API 等技術(shù),有效整合了監(jiān)測(cè)工作內(nèi)容,簡(jiǎn)化操作流程,規(guī)范日志信息歸檔。當(dāng)VPN 連接內(nèi)網(wǎng)權(quán)限開(kāi)啟后,本軟件局域網(wǎng)模塊也可在廣域網(wǎng)運(yùn)行,實(shí)現(xiàn)儀器狀態(tài)隨時(shí)監(jiān)控,可直接在客戶端查看數(shù)據(jù),便于數(shù)據(jù)管理,工作效率提高。
基于用戶提交需求、服務(wù)器進(jìn)行處理并返回結(jié)果這一交互策略進(jìn)行系統(tǒng)架構(gòu)設(shè)計(jì),對(duì)于實(shí)時(shí)獲取儀器狀態(tài)參數(shù)具有一定局限性。未來(lái)可嘗試將用戶主動(dòng)提交需求的過(guò)程自動(dòng)化,并通過(guò)在服務(wù)器上部署的應(yīng)用程序進(jìn)行儀器狀態(tài)判斷和故障信息推送,從而實(shí)現(xiàn)地球物理儀器狀態(tài)監(jiān)控軟件的自動(dòng)化運(yùn)行。因Android 軟件具備開(kāi)源的開(kāi)發(fā)環(huán)境,本軟件具有良好的拓展性,可根據(jù)不同業(yè)務(wù)需求,有針對(duì)性地開(kāi)發(fā)相應(yīng)功能模塊,進(jìn)一步完善軟件功能。本軟件具有良好的可移植性,通過(guò)本地區(qū)運(yùn)行效果測(cè)試反饋,可向行業(yè)內(nèi)其他省地震局進(jìn)行推廣,以期取得更好的使用效果。