刘胜国,高景春
(河北省地震局,石家庄 050022)
EQIM(EarthQuakes Instant Messenger)系统设计的主要目的是实现我国区域测震台网、国家测震台网的速报信息共享交换,后来随着形势的发展,为满足各种相关的需求,逐步扩充附加功能,衍化成了一个共享交换和服务发布系统。它以计算机网络为载体,实现了遥测地震台网产出的地震速报数据的快速传递、交换与共享发布。
EQIMProcess是EQIM 软件包的核心组件之一,功能如下。
■实时接收速报消息;
■以CA、CD、CC身份转发速报信息到EQIM服务器
■从数据库读入历史记录;
■速报参数显示、排序;
■自动地震分组和震中分布图显示;
■人机交互地图缩放和移动;
■人机交互数据合并定位;
■自动和人机交互打印速报卡以及震中分布图(包括地形图);
■选项配置;
■按经纬度范围和震级报警。
2.3版的EQIMProcess与以前版本的区别主要表现在地图上,由以前软件自己绘制地图改为使用MapWinGIS控件绘制地图。使地图数据更加通用、地图界面更加美观、使用更加便捷。
EQIM 通过socket通信方式以XML 格式交换数据,为保证数据信息的安全和准确,系统发送信息时必须进行用户认证、数据传输、数据文件校验、数据存储、日志记录等过程。EQIMProcess的数据交换主要涉及和EQIM 服务之间的数据交换,从服务器接收速报信息,以CA、CC或CD 身份转发速报信息。
EQIMProcess通过NetSeis/IP协议和EQIM服务器进行通讯,通过连接端口建立连接,通过socket通讯方式实时接收速报信息(XML文本),按图1中连线编号进行处理。
EQIMProcess从EQIM 服务器实时接收地震速报结果,对速报结果内容[1]进行解析后显示地震参数、发送台网、速报类型和接收时间,显示震中地图。根据信息内容中自动打印标志和打印配置决定是否自动打印输出,在任何时候都可以进行人工手动打印。
EQIMProcess可以对相邻台网同一个地震速报数据进行合并后,调用外部定位程序对合并后的震相数据进行联合定位。
EQIMProcess技术流程如图2。
图1 速报信息交换流程图
图2 EQIMProcess信息处理流程图
通过CPrintDialog::GetPrinterDC()获得打印设备上下文(即打印DC)。有了DC 我们就可以按照需要的格式进行打印输出了。
具体打印流程见图3
图3 速报卡打印流程图
速报转发实际是代替了EQIMSender,以CA、CD 或CC身份将接收到的信息转发到EQIM 服务器,其实现技术流程参见“图1 速报信息交换流程图”。
MapWinGIS是一个开源的GIS 项目,底层开发环境是VC.NET2003,代码大约有15万行,基于微软的COM 思想编写。就系统来讲,MapWinGIS是一套类似于AO 的二次开发组件库,其核心库是一个名字为MapWinGIS 的ActiveX 控件,我们利用这个ActiveX 组件在EQIM 系统中显示震中地图、在图层上标绘相关联的速报地震、计算地图比例尺和坐标、存取GIS数据等相关工作。
EQIMProcess使用MapWinGIS 控件、通过链表方式管理显示图层[2],程序启动时建立图层显示链表、并将需要初始化的图层增加到显示链表中显示。当有新的速报地震来临时,EQIMProcess收到新的速报消息后,判断当前图层的边界,从链表中删除不在当前显示区域边界的图层、并删除震中点图层,增加符合边界区域内的图层和当前震中点图层到显示链表中显示。
实现流程如图4
图4 震中地图绘制流程图
2.3.1 添加资源从ActiveX 控件添加MFC 类,控件选择Map Control,生成EQIM 需要的类。
2.3.2 添加图层
调用地图控件的AddLayer方法添加图层,实现代码如下:
2.3.3 删除图层
调用地图控件的RemoveLayer方法删除图层,实现代码如下:
2.3.4 标注震中位置
将标注地震震中点作为一个单独图层,加入到图层列表中,实现代码如下:
2.3.5 标注地名信息
调用地图控件的AddLable方法标注地名,实现代码如下:
上述代码中,name表示地名,color表示颜色,x、y表示标注位置,hjCenter表示居中显示。
EQIMProcess支持shp格式的矢量地图数据,由于shp格式是ESRI提供的通用地图文件格式,用户可以利用ArcGIS等软件进行编辑和修改,使之符合自己的需求,也可以用自己的地图文件替换系统提供的地图文件。
除了shp矢量地图格式以外,软件还支持dem、bil、jpg、bmp、png等栅格格式地图数据文件。
EQIMProcess提供了相对精确的地形图数据,使震中分布图看上去更加直观、地图信息更加丰富。其中地形图数据来源于USGS 网站。用户可以根据软件设定格式自行改变地图文件。
EQIM 系统是中国地震局监测预报司资助的研制项目,在中国地震台网中心、中国地震局值班室、全国31个省级测震台网中心以及部分地市级地震机构进行了部署[3],EQIMProcess作为EQIM 系统核心组件之一多年以来,运行稳定可靠,经历了多次大地震的考验[4],经历了多次版本的更新、完善和扩充。本文在2.3版的基础上,对EQIMProcess的实现原理与实现方法进行了分析介绍,希望对软件使用和其它相关工作提供借鉴和帮助。
[1] 刘胜国,高景春,陈智勇.基于ActiveMQ 平台的地震消息服务探讨[J].华北地震科学,2012,30(02):39-42.
[2] 冯录刚,高景春,刘胜国,等.地震应急快速触发响应系统的参数配置与用户分组管理[J].华北地震科学,2010,28(2):53-57.
[3] 董星宏,贾宁.面向市县级网站发布地震信息方式探讨[J].华北地震科学,2011,29(1):49-52.
[4] 李冬圣,毛国良,常亮,等.华北区域数字地震台网实时速报系统在河北省地震台网的运行分析[J].华北地震科学,2011,29(1):40-44.