李水龙,周施文,于伟恒
(福建省地震局,福建 福州 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 客户端界面使用人员提供参考。