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