地震前兆数据库定制化数据的获取

2016-04-10 04:50杨世英孟彩菊赵春华靳玉贞
山西地震 2016年4期
关键词:前兆数据表数据源

杨世英,孟彩菊,赵春华,靳玉贞,何 佳

(1.山西省地震局太原基准地震台,山西 太原 030025;2.太原大陆裂谷动力学国家野外科学观测研究站,山西 太原 030025)



地震前兆数据库定制化数据的获取

杨世英1,2,孟彩菊1,2,赵春华1,2,靳玉贞1,2,何 佳1,2

(1.山西省地震局太原基准地震台,山西 太原 030025;2.太原大陆裂谷动力学国家野外科学观测研究站,山西 太原 030025)

在了解地震前兆数据库结构的基础上,介绍了通过使用数据库客户端软件和编程的方式访问地震前兆数据库以获取定制化数据的方法,通过应用实例进一步说明使用这些方法,可以方便地从前兆数据库中获取定制化的数据,便于分析研究。

数据库;地震前兆数据;数据获取

0 引言

“十五”数字地震观测网络项目完成以来,地震前兆观测数据基于中国地震前兆台网数据管理系统实现地震台站、区域中心、国家中心和学科中心四级节点的汇集、管理、交换及应用。目前,台站监测人员使用“中国地震前兆台网数据处理系统”“运行评价系统”“跟踪分析平台”、MapSIS等软件完成日常数据处理及相关分析。虽然这些软件功能强大,在一般情况下,可以满足日常大部分工作的需求,但也存在灵活性不足的缺点,无法根据实际情况对前兆数据库数据进行定制。该文简要介绍前兆数据库结构,给出通过客户端工具访问前兆数据库的方法、实例及在.NET编程环境下,访问前兆数据库的基本步骤及关键代码,并列举应用实例。

1 前兆数据库

通过查阅“地震前兆数据库结构 台站观测”及相关的地震行业标准,了解地震前兆数据库的结构为:地震前兆数据库的方案(schema)名为“QZDATA”,所有表均置于该方案下。表包括数据表、日志表、基础数据表和数据字典表四类,不同类型的表通过表名中包含的代码来标识[1]。

以数据表为例,以测项分量为最小管理单元,按测项和采样率建表,将不同台站相同测项相同采样率的数据放在一个表中。原始数据表、预处理数据表及产品数据表的命名规则是“QZ_测项代码_表类型标识_采样率代码”,表中每日每个测项分量一条记录,起始时间为当天,观测值序列将观测值数据以ASCⅡ字符形式存放,一天的单个或多个数据按采样次序以一个空格符分隔连接起来,缺数用“NULL”表示,全天缺数时可用“NULLALL”表示。采样率高于1次每秒的数据,数据表中每小时每个测项分量一条记录,观测值序列将观测值数据以二进制压缩数据存放,并增加一个“压缩算法代码”字段描述所采用的压缩算法[2]。

可以通过表的E-R关系图进一步了解前兆库中表之间的关系。

2 使用客户端工具访问前兆数据库

地震前兆数据基于oracle数据库进行存储,常用的oracle客户端工具除官方的Oracle SQL Developer外,还有第三方的TOAD、PL/SQL Developer、Oracle SQL Handler等,其中Quest软件公司的TOAD工具适合开发人员和DBA人员使用,可以通过一个图形化的用户界面快速访问数据库,完成复杂的SQL、PL/SQL编辑和测试。如,可以快速访问数据字典,浏览数据库中的表、索引、存储过程;编辑、运行、调整和调试优化SQL、PL/SQL、存储过程和触发器等,还可连接多个表、多个数据库及快速生成报表[3]。

下面举一个获取某台某测项全部日志的例子。运行TOAD软件,执行“New Connection”输入数据库名及登录账号,连接到前兆数据库;通过“Schema browser”浏览相关的表,熟悉所要查询的表名和字段;在“Editor”窗口中输入“select * from qzdata.qz_232_dlg where stationid ='14013' order by startdate”语句,执行“Execute statement”即在 Data Grid区域得到查询的数据;在Data Grid区域的快捷菜单中,执行“Save AS”可将查询结果输出到Excel表,或执行“Report”由向导执行报表输出。

在熟悉SQL查询语言和TOAD软件的使用技巧后,可完成非常复杂的数据查询。为保证数据的安全,应使用仅有浏览数据权限的用户账号访问数据库。

3 通过简单编程访问前兆数据库

微软的Visual Studio .NET是一种功能强大、面向对象的编程工具,用户可使用自己熟悉的语言(如VB、C#)进行开发。ADO.NET是.NET平台中的一种封装数据库访问技术,其表现形式是.NET的类库,拥有2个核心组件,即.NET Data Provider(数据提供程序)和DataSet(数据集)。数据提供程序用于连接到数据库、执行命令和检索结果,数据集是数据的一种内存驻留表示形式,其中包含对数据进行包含、排序和约束的表以及表间的关系。

数据提供程序组件主要包括Connection(数据连接),用来建立到数据源的连接;Command(数据命令),用来执行各种查询命令;DataReader(数据阅读器),用来以一种前向只读的方式高效地访问数据源;DataAdapter(数据适配器),可将其理解为数据源和数据集之间的桥梁等[4]。

以下代码演示由ADO.NET从前兆数据库查询数据最基本的步骤,代码中采用Oracle的.NET Framework数据提供程序,并使用System.Data.OracleClient命名空间。

(1) 建立到数据源的连接。

Private qzConn As New OracleConnection(connectionString)

qzConn.Open()

其中的connectionString变量为连接字符串,格式应符合连接oracle数据源的要求,类似于″Data Source=10.14.51.XXX/pdbqz;Persist Security Info=True;User ID=XXXXX;Password=XXXXX;Unicode=True″。

(2) 建立适配器并向数据集“填充”数据。

Private qzAdapter As New OracleDataAdapter(″″, qzConn)

Private qzDataSet As DataSet

qzAdapter.SelectCommand.CommandText = sqlQueryStr

qzAdapter.Fill(qzDataSet, atableName)

其中的sqlQueryStr 变量为SQL查询命令字符,格式应符合oracle查询语法,类似于SELECT * FROM QZDATA.QZ_223_DYS_01 WHERE (STATIONID = ′14001′) AND (POINTID = ′1′) AND (ITEMID = ′2232′) AND (STARTDATE >= TO_DATE(′2010/1/28′, ′YYYY/MM/DD′)) AND (STARTDATE <= TO_DATE(′2010/2/7′, ′YYYY/MM/DD′)) ORDER BY STARTDATE。

(3) 关闭连接。

qzAdapter.Dispose()

qzDataSet.Dispose()

qzConn.Close()

对查询到的数据,可根据实际需要生成文本、EXCEL等各种所需格式的文档。

4 应用举例

科研人员进行课题研究使用数据库中的某种数据,当其他地震行业软件不能完全满足其要求时,使用上述两种方法,可以简单地访问前兆数据库获取到所需数据。现举例如下:(1) 2009年,在完成省局课题《数字化地磁低点位移的应用研究》时,使用编程方法从数据库中取得指定台站所选时间段内的地磁Z分量低点位移Z日变化的低点时间。(2) 2010年,完成省局课题《山西数字形变数据频谱特征分析》时,使用客户端工具访问前兆数据库获取所需数据及日志报表。(3) 2011年,完成中国地震局三结合课题《太原基准地震台地磁背景噪声分析》时,使用编程方法从前兆数据库获取地磁秒数据并进行频谱分析。(4) 2012年,《地电绘图软件》中,使用编程方法从前兆数据库中获取绘制各种图件所需的数据等。

5 结语

通过使用数据库客户端软件和编程的方式访问地震前兆数据库,以获取定制化数据的方法,可以帮助科研人员完成各种科研项目数据的获取。随着各种前兆软件功能的不断完善,以上例子中实现的部分功能在相关软件中也可以实现,但本文介绍的方法对科研人员仍有参考价值,对基于MySQL的测震数据库的访问也有一定的借鉴意义。

[1] 中国地震局.DB/T 51-2012 地震前兆数据库结构 台站观测[S].北京:地震出版社,2012.

[2] 周克昌,蒋春花,纪寿文,等.地震前兆数据库系统设计[J].地震,2010,30(2):143-151.

[3] Quest公司.TOAD for Oracle使用手册[M].北京:Quest公司,2006.

[4] 李建华,刘玉生.Visual C# 2005全程指南[M].北京:电子工业出版社,2008.

(英文摘要

Acquisition of Customized Data from Seismic Precursor Database

YANG Shi-ying1,2, MENG Cai-ju1,2, ZHAO Chun-hua1,2, JIN Yu-zhen1,2, HE Jia1,2

(1.Taiyuan Referential Seismological Station of Earthquake Administration of Shanxi Province, Taiyuan Shanxi 030025, China;2.Stake Key Observatory of Shanxi Rift System, Taiyuan Shanxi 030025, China)

On the basis of understanding the structure of earthquake precursor database, the methods of accessing an earthquake precursor database to obtain customized data are described by using database client software and a programming approach. The use of these methods is further illustrated through an application example. By using these methods, it is easy to get customized data from the precursor database, which is convenient for analysis and research.

Database; Seismic precursor data; Data acquisition

1000-6265(2016)04-0040-02

2016-03-17

杨世英(1973— ),男,山西省襄汾人。2004年毕业于太原理工大学,高级工程师。

P315.99

A

猜你喜欢
前兆数据表数据源
湖北省新冠肺炎疫情数据表
基于列控工程数据表建立线路拓扑关系的研究
哪些现象是地震前兆
Web 大数据系统数据源选择*
基于不同网络数据源的期刊评价研究
基于真值发现的冲突数据源质量评价算法
右肝区不适或疼痛是肝癌表现的前兆吗
图表
基于VSL的动态数据表应用研究
腾冲地电场震前的前兆异常分析