天津市地震局地震事件共享系统的设计与实现[1]

2016-09-27 03:13孙路强栗连弟卞真付柳艳丽
震灾防御技术 2016年1期
关键词:天津市数据库用户

孙路强 刘 磊 朱 宏 栗连弟 卞真付 柳艳丽



天津市地震局地震事件共享系统的设计与实现[1]

孙路强 刘 磊 朱 宏 栗连弟 卞真付 柳艳丽

(天津市地震局,天津 300201)

分析了天津市测震台网历史数据的使用现状,并利用PHP语言和百度地图API程序的二次开发,建立了天津市地震局地震事件共享系统。利用该系统实现了天津市地震局历史地震事件的共享,用户可通过共享系统查询地震目录和下载地震事件,通过MySql数据库语言设计系统各功能模块相关数据库表单,保存地震目录信息、用户反馈信息相关图片。该系统通过SESSION变量实现用户权限管理,避免了事件文件误传的可能性。通过该系统平台的投入使用,提升了系统原有地震事件保存方式,方便了用户查询使用事件文件的效率,使数据共享工作在天津市地震局得到了提升。

PHP语言 API程序 MySql数据库 SESSION变量 数据共享

引言

随着信息时代的不断发展,不同部门、不同地区间的信息交流逐步增加,计算机网络技术的发展为信息传输提供了保障。当大量的空间数据出现在网络上,面对多种多样的数据格式,如何利用它们是网络数据共享与数据转换的问题。实现数据共享可以使更多的人更充分地使用已有数据资源,减少资料收集、查询、保管等工作,提高了技术人员使用数据、分析数据的工作效率。天津市地震局地震事件共享系统利用PHP这种服务器端HTML嵌入式脚本描述语言,实现了历史地震事件的网络共享,用户可上传、下载、查询天津测震台网历史事件,同时分享上传数据分析产出结果。

PHP是B/S体系结构,服务器启动后用户可以不使用客户端软件,只使用浏览器即可访问,既保持了图形化用户界面,又大大减少了应用的维护量。

1 技术思路

对以光盘形式存储的历史事件文件进行整理,并对文件名按照程序上传要求进行批处理修改,将修改后的事件文件统一存储至服务器端目录下。不断产生的新数据和地震目录可以通过系统提供的事件及目录上传功能完成事件和目录的追加。平台采用B/S结构(Browser/ Server),在系统设计方面采用Smarty架构,使用PHP技术进行动态页面的设计,PHP是一种服务器端、跨平台、HTML嵌入式的脚本语言(武孔春等,2007),是一种被广泛应用的开源式的多用途脚本语言,尤其适合Web开发,服务器启动后用户可以不使用客户端软件,只使用浏览器即可访问,既保持了图形化用户界面,又大大减少了应用的维护量。利用该种方法能够将应用程序分成两部分实现:视图和逻辑控制,目的就是将用户界面与PHP code分离,这样在修改程序时不会影响到页面设计,而美工在重新设计或修改页面时也不会影响到程序逻辑。

系统后台数据库选用MySQL数据库,MySQL数据库称得上是目前运行速度最快的SQL语言数据库,支持跨平台、安全性高、存储容量大等特点(李刚等,2012)。天津市地震局“十五”测震系统软件均采用该种数据库,因此本研究选用MySQL数据库作为后台数据库将有利于与现有数据库数据进行交换。该系统地震事件目录、文件存储信息、用户信息以及成果问题内容均存储在MySQL数据库中。

2 系统设计

根据局内科研人员的要求,结合现有测震台网地震事件保存情况,本研究设计的地震事件共享系统主要实现以下功能模块:用户权限管理、事件检索、地震目录事件上传下载、成果展示反馈、震中分布图自动绘制等功能,天津市地震局地震事件共享系统业务流程如图1。

2.1 登录权限管理

为了达到在系统网站中方便管理地震事件及目录的目的,在用户权限上进行设置,如果以管理员身份登录,则可正常使用事件上传功能;如果是普通用户登录则不能使用事件上传功能,其余模块均能正常使用,该功能通过SESSION控制用户访问权限(李亚芳等,2013),初始化SESSION变量,通过$_POST[]方法获取表单提交的用户名和密码,完成对用户名和密码的验证,如果正确则将用户名和密码赋值给SESSION变量,并通过JavaScript脚本跳转到相应权限用户的初始界面。

2.2 事件查询

在地震事件共享系统中提供事件查询功能,用户可通过输入要查询事件的起始与终止时间来查询地震目录,包括发震时间、经纬度、深度、震级、地名等信息,查询功能界面见图2。

对指定时间范围内的数据进行查询可通过关键字between…and…实现,利用正则表达式对日期进行校正,正则式作为一种描述字符串结构模式的表达式可用于验证用户输入的数据和检索大量文本。

2.3 事件上传

管理员用户通过事件上传模块,可将地震事件对应的地震目录和文件名上传至数据库表tb_evt中,同时将事件文件上传至服务器端指定目录下,并根据系统设置统一了文件命名,通过tb_evt表中的filename列将地震目录与服务器端下的事件文件进行匹配,事件文件上传界面如图3。

在PHP中,应用move_uploaded_file()函数实现将文件上传到指定文件夹,在执行文件上传之前,为防止潜在的攻击对原本不能通过脚本交互的文件进行非法管理(明日科技,2008),可应用is_uploaded_file()函数判断指定文件是否通过HTTP POST上传,实现该功能核心代码如下:

header("content-Type: text/html; charset=gb2312");

include ("conn/conn.php"); //连接数据库

$evtdate = $_POST["evtdate"]; //获取表单中提交的数据

………. //省略部分代码

if($types==".seed"){

if($_FILES['file']['error']>0){ //判断文件是否可以上传到服务器包括大小判定类型

………. //省略部分代码

if(!is_dir("D:/seed/")){ //判断指定目录是否存在

mkdir("D:/seed/"); //创建目录

}

$path='D:/seed/'.$filename; //定义上传文件名称和存储位置

if(is_uploaded_file($_FILES['file']['tmp_name'])){ //判断文件是否是HTPP POST上传

echo $path;

if(!move_uploaded_file($_FILES['file']['tmp_name'],$path)){ //执行上传操作

echo "上传失败";

2.4 事件下载

作为地震事件共享系统最主要功能是向技术人员提供历史事件进行研究分析,因此如何更便捷的向用户提供事件下载功能成为共享系统重要功能之一。考虑到在同一时间段内可能会出现多个地震事件,在提供事件下载链接的同时出现与此匹配的地震事件目录,以便用户在多个事件中下载正确事件。通过HTTP方式下载文件,主要应用header()函数,其作用是以HTTP协议将HTML文档的标头送到浏览器,并告诉浏览器具体怎么处理这个页面。

2.5 问题反馈回复功能

在该模块中用户可将应用事件文件产出的结果,通过该模块上传,上传内容包括文字、图片,同时用户可将自己在系统使用过程中遇到的问题发布在该模块中,便于管理员解决问题。在功能实现过程中主要解决的问题是图片的数据库存储和显示,通过iconv函数将图片类型文件转换成二进制实现数据库存储,选择图片数据库存储能够方便维护,备份、恢复数据简单,文件元数据检索速度更快,可通过fopen函数打开数据库中的图片文件。

2.6 自动绘制震中分布图

用户通过输入起始时间条件,点击绘图按钮,WEB页面会调用百度地图URL API2.0接口及开源代码库,实现在地图上添加Maker、比例尺、设置中心点坐标等。由于存储在MySQL数据库中的事件经纬度信息的调用、读取是通过PHP代码实现的,并赋值于数组内。当javascript调用该参数时,需要通过JSON(JavaScript Object Notation)来实现。JSOP是一种轻量级的数据交换格式,它基于JavaScript的一个子集实现数据在不同语言程序间的交换。震中分布绘制功能如图4。

实现该功能核心代码如下:

………. //省略部分代码

//百度地图及lib库调用

………. //省略部分代码

3 数据库的设计

本系统采用Apache+PHP+phpMyAdmin+MySQL5.0开发实现,利用MySQL构建地震事件共享数据库db_earthevt以及相关数据表tb_evt、tb_problem、tb_user、tb_manager,利用公共模块设计conn.php数据库连接文件,在需要进行数据库操作的程序中,通过include或者其他包含语句调用连接文件(常俊等,2011)。

通过phpMyAdmin图形化管理工具的主页对数据库表进行建设,字符编码格式采用gb2312_chinese_ci,天津市地震局地震事件共享系统数据库整体结构见图5,地震事件信息表详情见表1。

表1 地震事件信息表(tb_evt) Table 1 Earthquake events information tables

公共文件就是将多个页面都可能使用到的代码写成单独的文件,在使用时只要用include或require语句将文件包含进来即可,本系统各模块与数据库的连接便是通过公共文件conn.php来实现的。

4 软件的应用与展望

天津市地震局地震事件共享系统自2014年4月投入使用,实现了地震事件与目录信息的及时更新,现已完成2011年3月至今的地震事件共享,数据量总计42.81G,预计2015年8月前实现历史事件的全部追加。技术人员使用数据正常,并通过该系统发布了应用数据产出的成果,通过震中分布图自动绘制功能,技术人员能够快速绘制选择时间区间内的地震分布情况,并判断地震活跃性,同时能够利用该功能快速查询地震事件发生的具体位置,便于地震应急工作的展开。

在数据库建设与应用上遵循标准和坚持开放是数据库设计的基本原则,只有这样选择的数据库平台和构造的数据库系统才具有先进性、灵活性、可扩展性和继承性,在实际应用中这一功能也显现出来,查询快速简单。

该管理平台实现了历史地震数据的共享,向用户提供历史观测数据,同时可在未来的版本中增加台站历史参数功能,使台站参数变更形成历史档案,与地震事件数据形成统一,保障了数据使用的准确性;为了扩大数据共享的效果,可在管理系统中增加与周边测震台网的对接,增加多个不同测震台网的连接接口,同意加入协作平台的单位可通过该系统上传地震数据,形成区域范围的行业协作平台。

5 结束语

数据共享的程度反映了一个地区、一个国家的信息发展水平,数据共享程度越高,信息发展水平越高。要实现数据共享,首先应建立一套统一的、法定的数据交换标准、规范格式,天津市地震局地震事件共享系统正是利用该项技术,统一规范了地震事件的名称格式、保存格式、以及存储分类,改革了现有的数据存储方法,同时方便了使用,基于历史事件信息增加了地震分布图功能,提高了共享信息的利用率。科研人员通过该系统能够更好的将自己产出的结果利用系统问题反馈功能共享给所有人员使用,破除了原有部门之间的信息阻隔,更有利于信息交流和防震减灾事业的发展。

致谢:系统在研究、开发、论证阶段,得到了天津市地震局聂永安局长,监测预报中心王建国,应急信息中心李刚的大力支持和帮助,同时信息中心刘磊在程序开发上给予了技术支持,在此表示衷心的感谢。

常俊,赵曦,姬建中,2011.基于Oracle的地震数据共享方案设计及数据库实现.地震地磁观测与研究,32(5):143—147.

李刚,孙晶岩,卞真付等,2012.MPLS VPN高速区域网络在天津地震监测系统中的应用.震灾防御技术,7(1):92—99.

李亚芳,陈述新,刘杰超等,2013.新疆测震台网历史数据共享平台的设计与实现.内陆地震,27(4): 356—363.

明日科技,2008.PHP从入门到精通.北京:清华大学出版社.

武孔春,牛从达,于光等,2007.基于C/S和B/S混合架构的云南地震科技信息数字化建设.地震研究,30(1):88—92.

Design and Implementation of Data Sharing System in Earthquake Administration of Tianjin Municipality

Sun Luqiang, Liu Lei, Zhu Hong, Li Liandi, Bian Zhenfu and Liu Yanli

(Earthquake Administration of Tianjin Municipality, Tianjin 300201, China)

After viewing the current situation of the historical earthquake data usage in Tianjin, we built the data sharing system in Earthquake Administration of Tianjin Municipality by using PHP language and Baidu API program. The system realizes the sharing of the historical earthquake data. The users can search and download seismic events in the system. The database form of functional module by MySql language is capable of saving earthquake catalogues and pictures. The system provides rights to the users to manage data by SESSION function, and avoids misrepresentation. The system promotes the old preservation and the position of data sharing in Earthquake administration of Tianjin Municipality.

PHP language;API program;MySql database;SESSION function;data sharing


[1] 基金项目 由测震台网青年骨干专项(20150402),中国地震局“三结合”课题(150205)和天津市地震局局内科研项目(20141001)共同资助

[收稿日期]2015-03-11

[作者简介]孙路强,男,生于1985年。大学本科,工程师。主要从事地震观测、台网管理、软件开发。E-mail:lqsun850330@163.com

孙路强,刘磊,朱宏,栗连弟,卞真付,柳艳丽,2016.天津市地震局地震事件共享系统的设计与实现.震灾防御技术,11(1):165—172.

doi:10.11899/zzfy20160118

猜你喜欢
天津市数据库用户
有趣的云
如果画笔会说话?
天津市津农果树研究所
天津市第三届“未来之星”初中数学邀请赛
数据库
关注用户
关注用户
数据库
关注用户
数据库