李水龍,周施文,于偉恒
(福建省地震局,福建 福州 350003)
置、預警參數信息、預警目標城市預警時間以及預測烈度等。
地震預警作為一種能夠有效減輕地震災害的手段,主要是利用地震P 波傳播速度大于破壞性S 波和面波,以及電磁波的傳播速度遠遠大于地震波波速的原理,在盡可能短的時間內確定地震基本參數(發震時刻、震源位置、地震震級)或者估計預警目標區地震參數和破壞程度,在破壞性地震波到達目標區域之前,對可能的破壞區域發出地震警報信息。地震預警客戶端界面作為預警信息發布的組成部分,可以將數值型的地震預警信息,以圖像的形式直觀明了地展現出來,從而提升信息的使用價值,提高用戶對信息內涵的理解程度。作為地震預警系統的前端展現門戶,可為預警目標城市提供預警信息發布的功能,并可通過形式多樣、清新友好的人機界面來更新展示地震預警的處理結果,實時展示地震空間位
地震預警PC 客戶端采用MQTT 傳輸協議實現預警信息的接收、解析和可視化展示,預警信息的傳輸服務質量控制方式為“只有一次”,客戶端收到且只收到一次地震預警信息,可通過XML 配置文件進行靈活配置以實現不同區域的擴展使用。地震預警信息數據包由固定報頭、可變報頭和有效載荷組成。
所有數據包字節順序應為網絡字節序(即大端字節序,其將高位字節存于內存低地址端,低位字節存于內存高地址端),字符編碼采用UTF-8。地震預警信息的傳輸采用JSON 數據包格式,固定報頭結構如表1所示。

表1 地震預警信息JSON 數據包固定報頭結構
地震預警信息JSON 數據包的可變報頭位于數據包固定報頭和有效載荷之間,長度為12 Byte,可變報頭結構如表2所示。

表2 地震預警信息JSON 數據包可變報頭結構
地震預警信息JSON 數據包有效載荷的具體結構如表3所示。

表3 地震預警信息JSON 數據包有效載荷結構
地震預警PC 客戶端采用C/S 結構,基于java 語言進行開發,采用java Swing 工具包實現界面的開發和設計。
在系統內部接口方面,各模塊之間采用函數調用、參數傳遞、返回值的方式進行信息傳遞。接口傳遞的信息是以數據結構封裝的數據,以參數傳遞或返回值的形式在各模塊之間傳輸。
地震預警信息顯示是以MVC 模式展示綜合處理輸出的地震預警處理結果。MVC 分別為模型(Mdoel)、視圖(View)和控制(Controller)。MVC 模式的目的是實現系統的智能分工。Model 層實現系統中的業務邏輯,View 層實現與用戶的交互,Controller 層是Model 與View 之間溝通的橋梁,它可以分派用戶的請求并選擇恰當的視圖進行顯示,同時也可以解釋用戶的輸入并將它們映射為模型層可執行的操作。接口的內部傳輸示意圖如圖1所示。

圖1 接口示意圖
地震預警信息顯示功能主要用于對地震預警處理結果的實時監控和人機交互歷史瀏覽,并不存在大量的計算,對于C/S 結構的實時監控來說,需要完成對地震預警處理過程的動態展現,如P 波和S 波走時圈的實時跟蹤,考慮到一般顯示系統都是采用單線程模式來處理界面信息的刷新和同步,在設計時要充分考慮界面信息的動態變化需求。
地震預警客戶端涉及到的地圖界面的顯示,需要對經緯度與屏幕坐標之間進行投影變換,如圖2所示。

圖2 經緯度與屏幕坐標轉換示意圖
定義經度轉的比例如式(1)所示:

定義緯度轉的比例如式(2)所示:

定義轉經度的比例如式(3)所示:

定義轉緯度的比例如式(4)所示:

經緯度(lon,lat)轉屏幕坐標(,)如式(5)和式(6)所示:

屏幕坐標(,)轉經緯度坐標如式(7)和式(8)所示:

地震預警PC 客戶端的運行流程分為實時監控界面顯示流程、人機交互瀏覽界面顯示流程和輔助流程。
2.3.1 實時監控界面顯示流程
實時監控界面顯示流程如圖3所示,具體流程為:

圖3 地震預警信息顯示-實時監控
(1)當有新的地震預警處理結果到達時,啟動本項功能;
(2)系統從新的地震預警處理結果中提取地震基本參數,并更新界面上對應的信息;
(3)系統從新的地震預警處理結果中提取預警目標的預測烈度,并更新界面上對應的信息;
(4)系統從新的地震預警處理結果中提取波及波走時圈,并更新界面上對應的信息;
(5)系統從新的地震預警處理結果中提取處理過程摘要,并更新界面上對應的信息;
(6)系統從新的地震預警處理結果中提取對外發布的地震預警信息,并更新界面上對應的信息。
2.3.2 人機交互瀏覽界面顯示流程
人機交互瀏覽界面顯示的具體流程為:
(1)當選擇人機交互歷史瀏覽時,本項功能就會啟動;
(2)用戶選擇感興趣的歷史地震預警目錄列表;
(3)系統根據用戶選擇的預警事件ID,從歸檔的地震預警信息中返回符合條件地震預警信息;
(4)系統將界面信息更新為選擇的地震預警事件。
2.3.3 輔助流程
實時監控界面只有與地震預警信息發布建立連接,才能實時接收地震預警的處理結果,具體流程為:
(1)當用戶啟動客戶端軟件程序時,本項功能就會啟動;
(2)系統向地震預警信息發布發送連接請求;
(3)系統向地震預警信息發布發送用戶名和密碼;
(4)地震預警信息發布在確認是授權客戶后與系統建立連接。
預警客戶端接收到預警信息后,需要對預警信息做進一步的解析和處理,計算客戶端所在地區的預警時間和預測烈度,然后在客戶端界面顯示對應的信息。
2.4.1 預警時間計算
預警客戶端所在地的預警時間根據以下公式求得:

其中,為震源距,V為波的傳播速度,T為客戶端接收到預警信息的系統時間,為發震時刻。
2.4.2 預測烈度計算
預警客戶端在接收到地震預警信息后,根據客戶端所在位置計算震中距離,基于烈度衰減關系和接收到的地震預警參數信息估計本地潛在的地震烈度,預測本地烈度的公式為:

其中,為震中烈度,Dis 為震源距,單位為千米(km),、為回歸常數,不同地區取值不同,為近場飽和因子,不同地區取值不同。
地震預警客戶端界面的實現采用java Swing 工具包實現界面的開發和設計,如圖4所示。界面主要包括4 個部分:

圖4 地震預警PC 客戶端界面
(1)菜單欄。菜單欄位于界面的最上部,包括預警等級、客戶端選擇、顯示客戶端信息按鈕。
(2)預警歷史目錄欄。預警歷史目錄欄位于界面最左側,包括歷史地震預警目錄和歷史事件導入按鈕兩個部分,可手動導入歷史地震事件文件。
(3)地圖欄。地圖欄位于界面的中間位置,包括行政地圖、高速鐵路、大型水庫以及核電站等大型工程的空間位置分布;當接收到預警信息后會在地圖界面展示地震震中位置、盲區范圍、波及波傳播范圍、3 度區及6 度區范圍等信息;地圖界面可拖動,可放大縮小。
(4)圖標欄。圖標欄位于界面的最下方,包括預警系統連接狀態、預警發布準則圖例等。
系統界面啟動成功后,點擊“選擇客戶端”選項選擇預警目標城市,點擊“顯示客戶端信息”按鈕顯示客戶端預警信息框。
部分代碼為:



地震預警PC 客戶端界面是地震預警系統的重要組成部分,也是地震預警信息發布的基本途徑之一,本文從預警信息的傳輸協議、接口設計、信息傳輸流程、預警信息加工等方面,對地震預警PC 客戶端界面的設計和實現進行了簡要介紹,希望本文能夠為地震預警系統運維人員和PC 客戶端界面使用人員提供參考。