楊世英,孟彩菊,趙春華,靳玉貞,何 佳
(1.山西省地震局太原基準地震臺,山西 太原 030025;2.太原大陸裂谷動力學國家野外科學觀測研究站,山西 太原 030025)
?
地震前兆數據庫定制化數據的獲取
楊世英1,2,孟彩菊1,2,趙春華1,2,靳玉貞1,2,何 佳1,2
(1.山西省地震局太原基準地震臺,山西 太原 030025;2.太原大陸裂谷動力學國家野外科學觀測研究站,山西 太原 030025)
在了解地震前兆數據庫結構的基礎上,介紹了通過使用數據庫客戶端軟件和編程的方式訪問地震前兆數據庫以獲取定制化數據的方法,通過應用實例進一步說明使用這些方法,可以方便地從前兆數據庫中獲取定制化的數據,便于分析研究。
數據庫;地震前兆數據;數據獲取
“十五”數字地震觀測網絡項目完成以來,地震前兆觀測數據基于中國地震前兆臺網數據管理系統實現地震臺站、區域中心、國家中心和學科中心四級節點的匯集、管理、交換及應用。目前,臺站監測人員使用“中國地震前兆臺網數據處理系統”“運行評價系統”“跟蹤分析平臺”、MapSIS等軟件完成日常數據處理及相關分析。雖然這些軟件功能強大,在一般情況下,可以滿足日常大部分工作的需求,但也存在靈活性不足的缺點,無法根據實際情況對前兆數據庫數據進行定制。該文簡要介紹前兆數據庫結構,給出通過客戶端工具訪問前兆數據庫的方法、實例及在.NET編程環境下,訪問前兆數據庫的基本步驟及關鍵代碼,并列舉應用實例。
通過查閱“地震前兆數據庫結構 臺站觀測”及相關的地震行業標準,了解地震前兆數據庫的結構為:地震前兆數據庫的方案(schema)名為“QZDATA”,所有表均置于該方案下。表包括數據表、日志表、基礎數據表和數據字典表四類,不同類型的表通過表名中包含的代碼來標識[1]。
以數據表為例,以測項分量為最小管理單元,按測項和采樣率建表,將不同臺站相同測項相同采樣率的數據放在一個表中。原始數據表、預處理數據表及產品數據表的命名規則是“QZ_測項代碼_表類型標識_采樣率代碼”,表中每日每個測項分量一條記錄,起始時間為當天,觀測值序列將觀測值數據以ASCⅡ字符形式存放,一天的單個或多個數據按采樣次序以一個空格符分隔連接起來,缺數用“NULL”表示,全天缺數時可用“NULLALL”表示。采樣率高于1次每秒的數據,數據表中每小時每個測項分量一條記錄,觀測值序列將觀測值數據以二進制壓縮數據存放,并增加一個“壓縮算法代碼”字段描述所采用的壓縮算法[2]。
可以通過表的E-R關系圖進一步了解前兆庫中表之間的關系。
地震前兆數據基于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軟件的使用技巧后,可完成非常復雜的數據查詢。為保證數據的安全,應使用僅有瀏覽數據權限的用戶賬號訪問數據庫。
微軟的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等各種所需格式的文檔。
科研人員進行課題研究使用數據庫中的某種數據,當其他地震行業軟件不能完全滿足其要求時,使用上述兩種方法,可以簡單地訪問前兆數據庫獲取到所需數據。現舉例如下:(1) 2009年,在完成省局課題《數字化地磁低點位移的應用研究》時,使用編程方法從數據庫中取得指定臺站所選時間段內的地磁Z分量低點位移Z日變化的低點時間。(2) 2010年,完成省局課題《山西數字形變數據頻譜特征分析》時,使用客戶端工具訪問前兆數據庫獲取所需數據及日志報表。(3) 2011年,完成中國地震局三結合課題《太原基準地震臺地磁背景噪聲分析》時,使用編程方法從前兆數據庫獲取地磁秒數據并進行頻譜分析。(4) 2012年,《地電繪圖軟件》中,使用編程方法從前兆數據庫中獲取繪制各種圖件所需的數據等。
通過使用數據庫客戶端軟件和編程的方式訪問地震前兆數據庫,以獲取定制化數據的方法,可以幫助科研人員完成各種科研項目數據的獲取。隨著各種前兆軟件功能的不斷完善,以上例子中實現的部分功能在相關軟件中也可以實現,但本文介紹的方法對科研人員仍有參考價值,對基于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