基金项目:2011年度地震行业科研专项经费项目“地震监测信息保障与发布技术研究”(201108010)资助.
(Earthquake Administration of Sichuan Province,Chengdu 610041,Sichuan,China)
备注
基金项目:2011年度地震行业科研专项经费项目“地震监测信息保障与发布技术研究”(201108010)资助.
有感地震发生后,快速准确地为社会公众提供地震信息服务极为重要。基于网站内容管理平台、Socket和JavaScript技术,通过监听和采集EQIM系统的地震速报数据,实现了网站地震速报信息的快速发布和展现。
It is extremely important that providing rapid and accurate earthquake information service to the public after the felt earthquake occurred. Based on the website content management platform,Socket and JavaScript technologies,we realize the quick release and display of the earthquake rapid report information in website by monitoring and acquisition the seismic rapid report data of EQIM system.
引言
互联网信息发布及传播的速度是传统媒体不可比拟的,网站则是公众快速获取信息的渠道。2008年5月12日汶川发生8.0级特大地震后,四川省地震局门户网站,即“四川防震减灾信息网”访问量猛增,导致服务器负荷过重,系统宕机,一度造成公众无法访问。为加强网站的建设,四川省地震局门户网站在地震信息发布、展现及应对突发访问等方面进行了完善,实现了地震信息的自动更新与发布,能够快速、准确的向公众发布地震信息,实现页面全静态化,并结合CDN加速服务,有效应对有感地震发生时公众的突发访问。
1 地震信息发布需求
有感地震发生后,公众首先关心的是地震速报三要素,而仅仅纯文字描述还是不够的,还需要有震中位置图,才能清晰表示出震中的具体位置。另外,有感地震发生后,网站的访问质量也是关键,如何保障有感地震发生后,公众能够有效、快捷地打开网站,查看到所需要的信息。
因此,网站地震信息的及时发布和网站的访问质量,对互联网用户来说极为重要。总结“5·12”汶川地震以来的相关经验,网站地震信息发布的需求主要归纳为以下几点:
(1)地震信息自动发布
要提高地震速报信息发布的时效性,必须要将原人工更新方式改变为系统自动更新和发布方式,减少审批环节。
(2)地震信息展现应醒目
门户网站首页上原是以条目方式展示地震速报信息,其位置不显眼,公众访问时不能一眼就找到该信息,因此应在网站主页醒目位置提供地震三要素,以便公众一进入网站主页就能看见。
(3)大震专题的制作
对造成较大影响、损失严重的地震,其震后的应急工作、救援动态、余震监测、灾情等情况的专题跟踪报道是必要的,且推出也应快速。
(4)加强网站的承载能力
有感地震发生后,如何保障网站在高迸发的访问压力下,公众能够有效、快速地打开网站,查看到需要的信息。
2 功能设计与实现
3 应用举例
4 结语
以EQIM系统数据来自动触发网站信息更新和发布,较好地解决了地震信息发布的时效性和准确性,而利用JavaScript脚本控制页面内容的显示,实现了地震发生后公众关注的地震信息的突出显示和优先访问。另外,页面全静态化的发布及CDN服务的采用,极大地减轻了网站服务器的压力,也能够有效应对大震后的突发访问压力。目前,地震信息发布的内容和形式还较单一,随着公众的认识水平提高,对网站的浏览需求,对信息内容及表现形式的需求出现,网站还需要不断地进行完善和改进。
- 陈晓发,王挺.2012.CDN技术在广东省地震信息网中的应用研究[J].地震研究,35(4):583-588.
- 陈晓辉,侯建民,刘瑞丰.2009.全国地震速报信息共享与服务系统[J].地震地磁观测与研究,30(3):132-135.
- 李大辉,韩磊,黄文辉.2001.LISS系统在中国数字地震台网的应用设想[J].地震地磁观测与研究,22(1):63-6.
- 文显琼,张继荣.2012.基于Socket的网络编程及其实现[J].软件导刊,11(2):97-98.
- 杨陈,黄志斌,高景春,等.2009.全国地震速报信息共享服务系统[J].地震地磁观测与研究,30(5):133-138.
笔者基于已有的网站内容管理系统,对地震信息发布的相关功能进行设计,主要功能包括地震速报信息获取、震中图自动生成、网站自动更新发布及页面展现。
2.1 基本思路地震信息发布首先是地震速报三要素的获取,对公众而言,同一个地震,其三要素应是统一的,即保证其在地震系统内不同网站上查看到的三要素信息应保持一致,如果存在差异,容易产生歧义。目前地震系统已有的全国地震速报信息共享与服务系统,即EQIM系统已经实现了速报信息的统一。EQIM 系统里,国家地震台网和各个区域台网都有自己的代码,国家台网有3种代码,具体是:CA代表国家地震台网转发区域台网发来的地震初报结果; CD代表国家地震台网转发区域台网的初报消息作为终报结果; CC代表国家地震台网发送的正式速报结果(陈晓辉等,2009)。各省在EQIM中接收CC、CA和CD的结果,以便及时得到国家台网中心的反馈信息。
网站地震信息的更新发布是以EQIM系统地震速报信息进行触发,然后更新至网站内容管理平台,实现地震信息的快速发布。而应对震后突发的访问压力,目前比较有效的方式是采用CDN加速服务。
2.2 地震信息自动更新地震速报信息获取和更新主要包括从EQIM接收数据、解析速报参数和更新到网站系统3个步骤(图1)。
2.2.1 EQIM客户端接收速报数据EQIM的数据交换分为客户端和本地EQIM服务器之间的数据交换以及本地EQIM服务器和中国地震局EQIM 服务器之间的数据交换(杨陈等,2009),在EQIM客户端部署监听程序,获取地震速报数据。
地震速报信息获取主要采用基于TCP/IP通信协议的Java Socket编程实现。Socket通常用来实现客户方和服务方的连接,一个Socket由一个IP地址和一个端口号唯一确定。Socket通讯的过程是Server端Listen(监听)某个端口是否有连接请求,Client端向Server 端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息(文显琼,张继荣,2012)。监听程序LissClient及方法,主要参数包括EQIM服务器IP、端口,客户端的登录用户及密码,建立与EQIM服务器的连接,实现地震速报数据的监听和获取。主要实现代码如下:
public boolean connect()throws IOException,LissException {
private LissClient msgSrcClient;
private InputStream locResIn=null;
private ArrayBlockingQueue<Result> queue;
this.msgSrcClient=new LissClient(profile.host,profile.port); // 实例化msgSrcClient,启用监听socket程序
this.msgSrcClient.setTimeOut(100000); // 设置连接中断时间
this.msgSrcClient.login(profile.user,profile. password); // 登陆EQIM客户端
this.msgSrcClient.setType(LissTransferType. BINARY); // 设置客户端类型
this.msgSrcClient.setServerPassiveMode(true); // 设置客户端数据传输方式
this.locResIn=this.msgSrcClient.retrieveResult("LOC"); //获取标识符LOC的数据
ExecutorService exec=Executors.newFixedThread Pool(2); //创建线程
exec.execute(new Receiver()); //线程执行从EQIM获取数据,放入队列
exec.execute(new Sender()); //从队列中解析获取地震速报参数
}
2.2.2 解析速报数据XMLEQIM通过SOCKET通信方式以XML格式交换数据(李大辉等,2001),获取地震速报数据后,依据XML格式规范,截取各个属性值,主要包括台网代码、经度、纬度、发震时间、震级、震源深度及震中位置等。首先匹配台网代码是CC或CD,是则获取该地震速信息,并进行下一步处理。主要实现代码如下,定义Sender类,从队列中获取数据,解析得到Lat(纬度)、Lon(经度)、O_time(发生时间)、Location_cname(震中位置)、Depth(震源深度)、M(震级)、Code(台网代码)等属性的值。
class Sender implements Runnable {
Result res=queue.take(); //从队列中取出数据
String xml=new String(res.getData(),"gbk"); //将数据转换为xml,字符编码为gbk
String Latstr=StringTool.getStringXmltoEQSC(testxml, "//CATLOG", "Lat"); //纬度
String Lonstr=StringTool.getStringXmltoEQSC(testxml, "//CATLOG", "Lon"); //经度
String O_timestr=StringTool.getString XmltoEQSC(testxml, "//CATLOG", "O_time"); //时间
String Location_cnamestr=StringTool.getString XmltoEQSC(testxml, "//CATLOG", "Location_cname"); //震中
String Depthstr=StringTool.getStringXmltoEQSC(testxml, "//CATLOG", "Depth"); //深度
String Mstr=String Tool.get String Xml to EQSC(testxml, "//CATLOG", "M"); //震级
String NetworkCode =StringTool.getStringXmlto EQSC(testxml, "//NETWORK", "Code"); //台网代码
}
2.2.3 更新到门户网站系统获取地震速报数据后,调用相应的地图服务,生成震中图(静态图片)。然后进行震中位置和震级的判定,并将地震速报三要素、震中图打包更新到门户网站相应栏目中。对于从EQIM获取的地震速报信息,不再经审核直接进行发布。
2.3 首页地震信息显示有感地震发生后,公众的访问具有较强的区域性,即四川省内的公众感觉到地震后,会集中关注四川省地震局的门户网站,因此门户网站首页需在显眼位置上显示地震速报信息,以便公众获取,其显示方式按照震级大小进行设定,包括两种:一是M≥4.0时,在首页醒目位置以横幅方式显示地震三要素; 二是M≥5.0时,除在首页增加横幅外,用户访问首页时自动跳转至大震专题页面(图2、图3)。
2.3.1 大震专题页面实现预先制定页面模板,设计好版面栏目及风格。地震速报数据更新到网站内容管理系统后,对震级进行判断,当M≥5.0时,生成专题页面,并将速报数据写在页面代码中,最终发布为静态页面。
2.3.2 首页显示实现内容管理系统进行发布时,将最近一条地震速报数据写入首页页面代码中,用户访问时,通过JavaScript小程序进行震级判断,当M≥5.0时,自动跳转到大震专题页面; 当M≥4.0时,在首页预定位置以横幅方式显示地震速报信息,具体实现方法是在html页面中创建<div>标签,通过震级、发震时间等条件控制该<div>标签的显示和隐藏。
2.4 地震信息内容页显示地震信息内容页主要是显示地震三要素及震中位置图,其页面发布流程与首页相同。根据震级大小的不同,显示不同的震中位置图,也可以实现不同的显示方式。如,当M<4.0时,调用第三方的地图服务,展示可缩放、拖拽的震中位置图; 当M≥4.0时,调用已生成的静态震中位置图。
2.5 采用CDN加速服务应对震后突发的访问压力,比较有效的方式是采用CDN加速服务,利用CDN服务商分布在全国甚至全球不同地区的服务器、通信网络资源,将网站信息分发到CDN节点。用户访问时,智能DNS解析系统根据用户的IP就近指定相应的CDN节点来响应用户的请求(陈晓发,王挺,2012),从而改变原来集中访问为分散访问,实现访问压力和通信流量的分担,有效保障网站信息的访问质量。