李水龍,周施文,于偉恒
(福建省地震局,福建 福州 350003)
置、預(yù)警參數(shù)信息、預(yù)警目標(biāo)城市預(yù)警時(shí)間以及預(yù)測烈度等。
地震預(yù)警作為一種能夠有效減輕地震災(zāi)害的手段,主要是利用地震P 波傳播速度大于破壞性S 波和面波,以及電磁波的傳播速度遠(yuǎn)遠(yuǎn)大于地震波波速的原理,在盡可能短的時(shí)間內(nèi)確定地震基本參數(shù)(發(fā)震時(shí)刻、震源位置、地震震級(jí))或者估計(jì)預(yù)警目標(biāo)區(qū)地震參數(shù)和破壞程度,在破壞性地震波到達(dá)目標(biāo)區(qū)域之前,對(duì)可能的破壞區(qū)域發(fā)出地震警報(bào)信息。地震預(yù)警客戶端界面作為預(yù)警信息發(fā)布的組成部分,可以將數(shù)值型的地震預(yù)警信息,以圖像的形式直觀明了地展現(xiàn)出來,從而提升信息的使用價(jià)值,提高用戶對(duì)信息內(nèi)涵的理解程度。作為地震預(yù)警系統(tǒng)的前端展現(xiàn)門戶,可為預(yù)警目標(biāo)城市提供預(yù)警信息發(fā)布的功能,并可通過形式多樣、清新友好的人機(jī)界面來更新展示地震預(yù)警的處理結(jié)果,實(shí)時(shí)展示地震空間位
地震預(yù)警PC 客戶端采用MQTT 傳輸協(xié)議實(shí)現(xiàn)預(yù)警信息的接收、解析和可視化展示,預(yù)警信息的傳輸服務(wù)質(zhì)量控制方式為“只有一次”,客戶端收到且只收到一次地震預(yù)警信息,可通過XML 配置文件進(jìn)行靈活配置以實(shí)現(xiàn)不同區(qū)域的擴(kuò)展使用。地震預(yù)警信息數(shù)據(jù)包由固定報(bào)頭、可變報(bào)頭和有效載荷組成。
所有數(shù)據(jù)包字節(jié)順序應(yīng)為網(wǎng)絡(luò)字節(jié)序(即大端字節(jié)序,其將高位字節(jié)存于內(nèi)存低地址端,低位字節(jié)存于內(nèi)存高地址端),字符編碼采用UTF-8。地震預(yù)警信息的傳輸采用JSON 數(shù)據(jù)包格式,固定報(bào)頭結(jié)構(gòu)如表1所示。
表1 地震預(yù)警信息JSON 數(shù)據(jù)包固定報(bào)頭結(jié)構(gòu)
地震預(yù)警信息JSON 數(shù)據(jù)包的可變報(bào)頭位于數(shù)據(jù)包固定報(bào)頭和有效載荷之間,長度為12 Byte,可變報(bào)頭結(jié)構(gòu)如表2所示。
表2 地震預(yù)警信息JSON 數(shù)據(jù)包可變報(bào)頭結(jié)構(gòu)
地震預(yù)警信息JSON 數(shù)據(jù)包有效載荷的具體結(jié)構(gòu)如表3所示。
表3 地震預(yù)警信息JSON 數(shù)據(jù)包有效載荷結(jié)構(gòu)
地震預(yù)警PC 客戶端采用C/S 結(jié)構(gòu),基于java 語言進(jìn)行開發(fā),采用java Swing 工具包實(shí)現(xiàn)界面的開發(fā)和設(shè)計(jì)。
在系統(tǒng)內(nèi)部接口方面,各模塊之間采用函數(shù)調(diào)用、參數(shù)傳遞、返回值的方式進(jìn)行信息傳遞。接口傳遞的信息是以數(shù)據(jù)結(jié)構(gòu)封裝的數(shù)據(jù),以參數(shù)傳遞或返回值的形式在各模塊之間傳輸。
地震預(yù)警信息顯示是以MVC 模式展示綜合處理輸出的地震預(yù)警處理結(jié)果。MVC 分別為模型(Mdoel)、視圖(View)和控制(Controller)。MVC 模式的目的是實(shí)現(xiàn)系統(tǒng)的智能分工。Model 層實(shí)現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯,View 層實(shí)現(xiàn)與用戶的交互,Controller 層是Model 與View 之間溝通的橋梁,它可以分派用戶的請(qǐng)求并選擇恰當(dāng)?shù)囊晥D進(jìn)行顯示,同時(shí)也可以解釋用戶的輸入并將它們映射為模型層可執(zhí)行的操作。接口的內(nèi)部傳輸示意圖如圖1所示。
圖1 接口示意圖
地震預(yù)警信息顯示功能主要用于對(duì)地震預(yù)警處理結(jié)果的實(shí)時(shí)監(jiān)控和人機(jī)交互歷史瀏覽,并不存在大量的計(jì)算,對(duì)于C/S 結(jié)構(gòu)的實(shí)時(shí)監(jiān)控來說,需要完成對(duì)地震預(yù)警處理過程的動(dòng)態(tài)展現(xiàn),如P 波和S 波走時(shí)圈的實(shí)時(shí)跟蹤,考慮到一般顯示系統(tǒng)都是采用單線程模式來處理界面信息的刷新和同步,在設(shè)計(jì)時(shí)要充分考慮界面信息的動(dòng)態(tài)變化需求。
地震預(yù)警客戶端涉及到的地圖界面的顯示,需要對(duì)經(jīng)緯度與屏幕坐標(biāo)之間進(jìn)行投影變換,如圖2所示。
圖2 經(jīng)緯度與屏幕坐標(biāo)轉(zhuǎn)換示意圖
定義經(jīng)度轉(zhuǎn)的比例如式(1)所示:
定義緯度轉(zhuǎn)的比例如式(2)所示:
定義轉(zhuǎn)經(jīng)度的比例如式(3)所示:
定義轉(zhuǎn)緯度的比例如式(4)所示:
經(jīng)緯度(lon,lat)轉(zhuǎn)屏幕坐標(biāo)(,)如式(5)和式(6)所示:
屏幕坐標(biāo)(,)轉(zhuǎn)經(jīng)緯度坐標(biāo)如式(7)和式(8)所示:
地震預(yù)警PC 客戶端的運(yùn)行流程分為實(shí)時(shí)監(jiān)控界面顯示流程、人機(jī)交互瀏覽界面顯示流程和輔助流程。
2.3.1 實(shí)時(shí)監(jiān)控界面顯示流程
實(shí)時(shí)監(jiān)控界面顯示流程如圖3所示,具體流程為:
圖3 地震預(yù)警信息顯示-實(shí)時(shí)監(jiān)控
(1)當(dāng)有新的地震預(yù)警處理結(jié)果到達(dá)時(shí),啟動(dòng)本項(xiàng)功能;
(2)系統(tǒng)從新的地震預(yù)警處理結(jié)果中提取地震基本參數(shù),并更新界面上對(duì)應(yīng)的信息;
(3)系統(tǒng)從新的地震預(yù)警處理結(jié)果中提取預(yù)警目標(biāo)的預(yù)測烈度,并更新界面上對(duì)應(yīng)的信息;
(4)系統(tǒng)從新的地震預(yù)警處理結(jié)果中提取波及波走時(shí)圈,并更新界面上對(duì)應(yīng)的信息;
(5)系統(tǒng)從新的地震預(yù)警處理結(jié)果中提取處理過程摘要,并更新界面上對(duì)應(yīng)的信息;
(6)系統(tǒng)從新的地震預(yù)警處理結(jié)果中提取對(duì)外發(fā)布的地震預(yù)警信息,并更新界面上對(duì)應(yīng)的信息。
2.3.2 人機(jī)交互瀏覽界面顯示流程
人機(jī)交互瀏覽界面顯示的具體流程為:
(1)當(dāng)選擇人機(jī)交互歷史瀏覽時(shí),本項(xiàng)功能就會(huì)啟動(dòng);
(2)用戶選擇感興趣的歷史地震預(yù)警目錄列表;
(3)系統(tǒng)根據(jù)用戶選擇的預(yù)警事件ID,從歸檔的地震預(yù)警信息中返回符合條件地震預(yù)警信息;
(4)系統(tǒng)將界面信息更新為選擇的地震預(yù)警事件。
2.3.3 輔助流程
實(shí)時(shí)監(jiān)控界面只有與地震預(yù)警信息發(fā)布建立連接,才能實(shí)時(shí)接收地震預(yù)警的處理結(jié)果,具體流程為:
(1)當(dāng)用戶啟動(dòng)客戶端軟件程序時(shí),本項(xiàng)功能就會(huì)啟動(dòng);
(2)系統(tǒng)向地震預(yù)警信息發(fā)布發(fā)送連接請(qǐng)求;
(3)系統(tǒng)向地震預(yù)警信息發(fā)布發(fā)送用戶名和密碼;
(4)地震預(yù)警信息發(fā)布在確認(rèn)是授權(quán)客戶后與系統(tǒng)建立連接。
預(yù)警客戶端接收到預(yù)警信息后,需要對(duì)預(yù)警信息做進(jìn)一步的解析和處理,計(jì)算客戶端所在地區(qū)的預(yù)警時(shí)間和預(yù)測烈度,然后在客戶端界面顯示對(duì)應(yīng)的信息。
2.4.1 預(yù)警時(shí)間計(jì)算
預(yù)警客戶端所在地的預(yù)警時(shí)間根據(jù)以下公式求得:
其中,為震源距,V為波的傳播速度,T為客戶端接收到預(yù)警信息的系統(tǒng)時(shí)間,為發(fā)震時(shí)刻。
2.4.2 預(yù)測烈度計(jì)算
預(yù)警客戶端在接收到地震預(yù)警信息后,根據(jù)客戶端所在位置計(jì)算震中距離,基于烈度衰減關(guān)系和接收到的地震預(yù)警參數(shù)信息估計(jì)本地潛在的地震烈度,預(yù)測本地烈度的公式為:
其中,為震中烈度,Dis 為震源距,單位為千米(km),、為回歸常數(shù),不同地區(qū)取值不同,為近場飽和因子,不同地區(qū)取值不同。
地震預(yù)警客戶端界面的實(shí)現(xiàn)采用java Swing 工具包實(shí)現(xiàn)界面的開發(fā)和設(shè)計(jì),如圖4所示。界面主要包括4 個(gè)部分:
圖4 地震預(yù)警PC 客戶端界面
(1)菜單欄。菜單欄位于界面的最上部,包括預(yù)警等級(jí)、客戶端選擇、顯示客戶端信息按鈕。
(2)預(yù)警歷史目錄欄。預(yù)警歷史目錄欄位于界面最左側(cè),包括歷史地震預(yù)警目錄和歷史事件導(dǎo)入按鈕兩個(gè)部分,可手動(dòng)導(dǎo)入歷史地震事件文件。
(3)地圖欄。地圖欄位于界面的中間位置,包括行政地圖、高速鐵路、大型水庫以及核電站等大型工程的空間位置分布;當(dāng)接收到預(yù)警信息后會(huì)在地圖界面展示地震震中位置、盲區(qū)范圍、波及波傳播范圍、3 度區(qū)及6 度區(qū)范圍等信息;地圖界面可拖動(dòng),可放大縮小。
(4)圖標(biāo)欄。圖標(biāo)欄位于界面的最下方,包括預(yù)警系統(tǒng)連接狀態(tài)、預(yù)警發(fā)布準(zhǔn)則圖例等。
系統(tǒng)界面啟動(dòng)成功后,點(diǎn)擊“選擇客戶端”選項(xiàng)選擇預(yù)警目標(biāo)城市,點(diǎn)擊“顯示客戶端信息”按鈕顯示客戶端預(yù)警信息框。
部分代碼為:
地震預(yù)警PC 客戶端界面是地震預(yù)警系統(tǒng)的重要組成部分,也是地震預(yù)警信息發(fā)布的基本途徑之一,本文從預(yù)警信息的傳輸協(xié)議、接口設(shè)計(jì)、信息傳輸流程、預(yù)警信息加工等方面,對(duì)地震預(yù)警PC 客戶端界面的設(shè)計(jì)和實(shí)現(xiàn)進(jìn)行了簡要介紹,希望本文能夠?yàn)榈卣痤A(yù)警系統(tǒng)運(yùn)維人員和PC 客戶端界面使用人員提供參考。