楊世英,孟彩菊,趙春華,靳玉貞,何 佳
(1.山西省地震局太原基準(zhǔn)地震臺(tái),山西 太原 030025;2.太原大陸裂谷動(dòng)力學(xué)國(guó)家野外科學(xué)觀測(cè)研究站,山西 太原 030025)
?
地震前兆數(shù)據(jù)庫(kù)定制化數(shù)據(jù)的獲取
楊世英1,2,孟彩菊1,2,趙春華1,2,靳玉貞1,2,何 佳1,2
(1.山西省地震局太原基準(zhǔn)地震臺(tái),山西 太原 030025;2.太原大陸裂谷動(dòng)力學(xué)國(guó)家野外科學(xué)觀測(cè)研究站,山西 太原 030025)
在了解地震前兆數(shù)據(jù)庫(kù)結(jié)構(gòu)的基礎(chǔ)上,介紹了通過(guò)使用數(shù)據(jù)庫(kù)客戶端軟件和編程的方式訪問(wèn)地震前兆數(shù)據(jù)庫(kù)以獲取定制化數(shù)據(jù)的方法,通過(guò)應(yīng)用實(shí)例進(jìn)一步說(shuō)明使用這些方法,可以方便地從前兆數(shù)據(jù)庫(kù)中獲取定制化的數(shù)據(jù),便于分析研究。
數(shù)據(jù)庫(kù);地震前兆數(shù)據(jù);數(shù)據(jù)獲取
“十五”數(shù)字地震觀測(cè)網(wǎng)絡(luò)項(xiàng)目完成以來(lái),地震前兆觀測(cè)數(shù)據(jù)基于中國(guó)地震前兆臺(tái)網(wǎng)數(shù)據(jù)管理系統(tǒng)實(shí)現(xiàn)地震臺(tái)站、區(qū)域中心、國(guó)家中心和學(xué)科中心四級(jí)節(jié)點(diǎn)的匯集、管理、交換及應(yīng)用。目前,臺(tái)站監(jiān)測(cè)人員使用“中國(guó)地震前兆臺(tái)網(wǎng)數(shù)據(jù)處理系統(tǒng)”“運(yùn)行評(píng)價(jià)系統(tǒng)”“跟蹤分析平臺(tái)”、MapSIS等軟件完成日常數(shù)據(jù)處理及相關(guān)分析。雖然這些軟件功能強(qiáng)大,在一般情況下,可以滿足日常大部分工作的需求,但也存在靈活性不足的缺點(diǎn),無(wú)法根據(jù)實(shí)際情況對(duì)前兆數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行定制。該文簡(jiǎn)要介紹前兆數(shù)據(jù)庫(kù)結(jié)構(gòu),給出通過(guò)客戶端工具訪問(wèn)前兆數(shù)據(jù)庫(kù)的方法、實(shí)例及在.NET編程環(huán)境下,訪問(wèn)前兆數(shù)據(jù)庫(kù)的基本步驟及關(guān)鍵代碼,并列舉應(yīng)用實(shí)例。
通過(guò)查閱“地震前兆數(shù)據(jù)庫(kù)結(jié)構(gòu) 臺(tái)站觀測(cè)”及相關(guān)的地震行業(yè)標(biāo)準(zhǔn),了解地震前兆數(shù)據(jù)庫(kù)的結(jié)構(gòu)為:地震前兆數(shù)據(jù)庫(kù)的方案(schema)名為“QZDATA”,所有表均置于該方案下。表包括數(shù)據(jù)表、日志表、基礎(chǔ)數(shù)據(jù)表和數(shù)據(jù)字典表四類(lèi),不同類(lèi)型的表通過(guò)表名中包含的代碼來(lái)標(biāo)識(shí)[1]。
以數(shù)據(jù)表為例,以測(cè)項(xiàng)分量為最小管理單元,按測(cè)項(xiàng)和采樣率建表,將不同臺(tái)站相同測(cè)項(xiàng)相同采樣率的數(shù)據(jù)放在一個(gè)表中。原始數(shù)據(jù)表、預(yù)處理數(shù)據(jù)表及產(chǎn)品數(shù)據(jù)表的命名規(guī)則是“QZ_測(cè)項(xiàng)代碼_表類(lèi)型標(biāo)識(shí)_采樣率代碼”,表中每日每個(gè)測(cè)項(xiàng)分量一條記錄,起始時(shí)間為當(dāng)天,觀測(cè)值序列將觀測(cè)值數(shù)據(jù)以ASCⅡ字符形式存放,一天的單個(gè)或多個(gè)數(shù)據(jù)按采樣次序以一個(gè)空格符分隔連接起來(lái),缺數(shù)用“NULL”表示,全天缺數(shù)時(shí)可用“NULLALL”表示。采樣率高于1次每秒的數(shù)據(jù),數(shù)據(jù)表中每小時(shí)每個(gè)測(cè)項(xiàng)分量一條記錄,觀測(cè)值序列將觀測(cè)值數(shù)據(jù)以二進(jìn)制壓縮數(shù)據(jù)存放,并增加一個(gè)“壓縮算法代碼”字段描述所采用的壓縮算法[2]。
可以通過(guò)表的E-R關(guān)系圖進(jìn)一步了解前兆庫(kù)中表之間的關(guān)系。
地震前兆數(shù)據(jù)基于oracle數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ),常用的oracle客戶端工具除官方的Oracle SQL Developer外,還有第三方的TOAD、PL/SQL Developer、Oracle SQL Handler等,其中Quest軟件公司的TOAD工具適合開(kāi)發(fā)人員和DBA人員使用,可以通過(guò)一個(gè)圖形化的用戶界面快速訪問(wèn)數(shù)據(jù)庫(kù),完成復(fù)雜的SQL、PL/SQL編輯和測(cè)試。如,可以快速訪問(wèn)數(shù)據(jù)字典,瀏覽數(shù)據(jù)庫(kù)中的表、索引、存儲(chǔ)過(guò)程;編輯、運(yùn)行、調(diào)整和調(diào)試優(yōu)化SQL、PL/SQL、存儲(chǔ)過(guò)程和觸發(fā)器等,還可連接多個(gè)表、多個(gè)數(shù)據(jù)庫(kù)及快速生成報(bào)表[3]。
下面舉一個(gè)獲取某臺(tái)某測(cè)項(xiàng)全部日志的例子。運(yùn)行TOAD軟件,執(zhí)行“New Connection”輸入數(shù)據(jù)庫(kù)名及登錄賬號(hào),連接到前兆數(shù)據(jù)庫(kù);通過(guò)“Schema browser”瀏覽相關(guān)的表,熟悉所要查詢的表名和字段;在“Editor”窗口中輸入“select * from qzdata.qz_232_dlg where stationid ='14013' order by startdate”語(yǔ)句,執(zhí)行“Execute statement”即在 Data Grid區(qū)域得到查詢的數(shù)據(jù);在Data Grid區(qū)域的快捷菜單中,執(zhí)行“Save AS”可將查詢結(jié)果輸出到Excel表,或執(zhí)行“Report”由向?qū)?zhí)行報(bào)表輸出。
在熟悉SQL查詢語(yǔ)言和TOAD軟件的使用技巧后,可完成非常復(fù)雜的數(shù)據(jù)查詢。為保證數(shù)據(jù)的安全,應(yīng)使用僅有瀏覽數(shù)據(jù)權(quán)限的用戶賬號(hào)訪問(wèn)數(shù)據(jù)庫(kù)。
微軟的Visual Studio .NET是一種功能強(qiáng)大、面向?qū)ο蟮木幊坦ぞ?,用戶可使用自己熟悉的語(yǔ)言(如VB、C#)進(jìn)行開(kāi)發(fā)。ADO.NET是.NET平臺(tái)中的一種封裝數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),其表現(xiàn)形式是.NET的類(lèi)庫(kù),擁有2個(gè)核心組件,即.NET Data Provider(數(shù)據(jù)提供程序)和DataSet(數(shù)據(jù)集)。數(shù)據(jù)提供程序用于連接到數(shù)據(jù)庫(kù)、執(zhí)行命令和檢索結(jié)果,數(shù)據(jù)集是數(shù)據(jù)的一種內(nèi)存駐留表示形式,其中包含對(duì)數(shù)據(jù)進(jìn)行包含、排序和約束的表以及表間的關(guān)系。
數(shù)據(jù)提供程序組件主要包括Connection(數(shù)據(jù)連接),用來(lái)建立到數(shù)據(jù)源的連接;Command(數(shù)據(jù)命令),用來(lái)執(zhí)行各種查詢命令;DataReader(數(shù)據(jù)閱讀器),用來(lái)以一種前向只讀的方式高效地訪問(wèn)數(shù)據(jù)源;DataAdapter(數(shù)據(jù)適配器),可將其理解為數(shù)據(jù)源和數(shù)據(jù)集之間的橋梁等[4]。
以下代碼演示由ADO.NET從前兆數(shù)據(jù)庫(kù)查詢數(shù)據(jù)最基本的步驟,代碼中采用Oracle的.NET Framework數(shù)據(jù)提供程序,并使用System.Data.OracleClient命名空間。
(1) 建立到數(shù)據(jù)源的連接。
Private qzConn As New OracleConnection(connectionString)
qzConn.Open()
其中的connectionString變量為連接字符串,格式應(yīng)符合連接oracle數(shù)據(jù)源的要求,類(lèi)似于″Data Source=10.14.51.XXX/pdbqz;Persist Security Info=True;User ID=XXXXX;Password=XXXXX;Unicode=True″。
(2) 建立適配器并向數(shù)據(jù)集“填充”數(shù)據(jù)。
Private qzAdapter As New OracleDataAdapter(″″, qzConn)
Private qzDataSet As DataSet
qzAdapter.SelectCommand.CommandText = sqlQueryStr
qzAdapter.Fill(qzDataSet, atableName)
其中的sqlQueryStr 變量為SQL查詢命令字符,格式應(yīng)符合oracle查詢語(yǔ)法,類(lèi)似于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) 關(guān)閉連接。
qzAdapter.Dispose()
qzDataSet.Dispose()
qzConn.Close()
對(duì)查詢到的數(shù)據(jù),可根據(jù)實(shí)際需要生成文本、EXCEL等各種所需格式的文檔。
科研人員進(jìn)行課題研究使用數(shù)據(jù)庫(kù)中的某種數(shù)據(jù),當(dāng)其他地震行業(yè)軟件不能完全滿足其要求時(shí),使用上述兩種方法,可以簡(jiǎn)單地訪問(wèn)前兆數(shù)據(jù)庫(kù)獲取到所需數(shù)據(jù)?,F(xiàn)舉例如下:(1) 2009年,在完成省局課題《數(shù)字化地磁低點(diǎn)位移的應(yīng)用研究》時(shí),使用編程方法從數(shù)據(jù)庫(kù)中取得指定臺(tái)站所選時(shí)間段內(nèi)的地磁Z分量低點(diǎn)位移Z日變化的低點(diǎn)時(shí)間。(2) 2010年,完成省局課題《山西數(shù)字形變數(shù)據(jù)頻譜特征分析》時(shí),使用客戶端工具訪問(wèn)前兆數(shù)據(jù)庫(kù)獲取所需數(shù)據(jù)及日志報(bào)表。(3) 2011年,完成中國(guó)地震局三結(jié)合課題《太原基準(zhǔn)地震臺(tái)地磁背景噪聲分析》時(shí),使用編程方法從前兆數(shù)據(jù)庫(kù)獲取地磁秒數(shù)據(jù)并進(jìn)行頻譜分析。(4) 2012年,《地電繪圖軟件》中,使用編程方法從前兆數(shù)據(jù)庫(kù)中獲取繪制各種圖件所需的數(shù)據(jù)等。
通過(guò)使用數(shù)據(jù)庫(kù)客戶端軟件和編程的方式訪問(wèn)地震前兆數(shù)據(jù)庫(kù),以獲取定制化數(shù)據(jù)的方法,可以幫助科研人員完成各種科研項(xiàng)目數(shù)據(jù)的獲取。隨著各種前兆軟件功能的不斷完善,以上例子中實(shí)現(xiàn)的部分功能在相關(guān)軟件中也可以實(shí)現(xiàn),但本文介紹的方法對(duì)科研人員仍有參考價(jià)值,對(duì)基于MySQL的測(cè)震數(shù)據(jù)庫(kù)的訪問(wèn)也有一定的借鑒意義。
[1] 中國(guó)地震局.DB/T 51-2012 地震前兆數(shù)據(jù)庫(kù)結(jié)構(gòu) 臺(tái)站觀測(cè)[S].北京:地震出版社,2012.
[2] 周克昌,蔣春花,紀(jì)壽文,等.地震前兆數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)[J].地震,2010,30(2):143-151.
[3] Quest公司.TOAD for Oracle使用手冊(cè)[M].北京:Quest公司,2006.
[4] 李建華,劉玉生.Visual C# 2005全程指南[M].北京:電子工業(yè)出版社,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年畢業(yè)于太原理工大學(xué),高級(jí)工程師。
P315.99
A