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