何 林,范 濤,曹 波
(1.陜西省氣象信息中心,西安 710014;2.渭南市氣象局,陜西渭南 714000)
區(qū)域自動氣象站數(shù)據(jù)庫整合設計與實現(xiàn)
何 林1,范 濤2,曹 波1
(1.陜西省氣象信息中心,西安 710014;2.渭南市氣象局,陜西渭南 714000)
為了有效解決省內(nèi)各地市氣象局安裝多個廠家的區(qū)域自動站后,因各廠家的數(shù)據(jù)庫差異性導致的數(shù)據(jù)不兼容問題,從多源異構(gòu)數(shù)據(jù)融合的思路出發(fā),提出一種區(qū)域自動氣象站數(shù)據(jù)庫整合的設計方案,并利用.net平臺編程技術進行實現(xiàn)。根據(jù)渭南市氣象局區(qū)域站的實際情況定制開發(fā)軟件,并進行應用測試,驗證了軟件的可用性。
區(qū)域站;數(shù)據(jù)庫整合;C#;客戶端軟件
截止2014年,陜西省的區(qū)域自動氣象站(以下簡稱區(qū)域站)共計建站1 800余個,這些遍布全省各地市、縣的區(qū)域站設備多為華云、長春、無錫三個廠家生產(chǎn)。由于各地區(qū)域站引進的設備廠家和型號參差不齊,并且各廠家配備自己的中心站軟件,生成的數(shù)據(jù)相互獨立,難以兼容,導致存儲數(shù)據(jù)庫的不統(tǒng)一。主要表現(xiàn)在數(shù)據(jù)庫平臺和表結(jié)構(gòu)的不同,這些都加大了對原始觀測數(shù)據(jù)監(jiān)控和管理的難度[1]。研究一個既能較好實現(xiàn)不同類型區(qū)域站生成數(shù)據(jù)的融合,又對當前觀測業(yè)務和觀測數(shù)據(jù)使用習慣影響較小的數(shù)據(jù)庫整合方案,并面向地市氣象局的實際應用需求開發(fā)相關軟件產(chǎn)品,為區(qū)域站數(shù)據(jù)的運維和管理帶來方便。
各種區(qū)域站原始數(shù)據(jù)的存儲平臺和表結(jié)構(gòu),甚至表的數(shù)目都有較大差異,屬于典型的多源異構(gòu)數(shù)據(jù)。因此在明確常見區(qū)域站數(shù)據(jù)源特點的基礎上,根據(jù)數(shù)據(jù)特點,選擇數(shù)據(jù)整合的源表和目標表 (源表即各區(qū)域站生成的原始數(shù)據(jù)相關表,而目標表則需根據(jù)實際需求創(chuàng)建一個新表),特別的,當源表的各字段之間具有包含 (子集)關系時,則亦可選擇一個源表作為目標表。然后,根據(jù)組合主鍵提取不同類型區(qū)域站的源數(shù)據(jù)存入適當?shù)呐R時存儲結(jié)構(gòu),最后將臨時存儲空間中的數(shù)據(jù)統(tǒng)一導入目標表[2],從而完成數(shù)據(jù)的整合。
遵循簡單易操作、可擴展、可維護、整合效率高等原則,采用C#語言結(jié)合VS集成開發(fā)環(huán)境將軟件設計為winForm窗體形式的可視化操作界面,以客戶端的形式呈現(xiàn)給用戶。作為第三方軟件,將整合后的數(shù)據(jù)庫作為提供給其他應用的接口,因此整個軟件架構(gòu)可分為三層[3-4],即表現(xiàn)層 (客戶端)、業(yè)務邏輯層、數(shù)據(jù)訪問層(數(shù)據(jù)庫服務器端)。①表現(xiàn)層 提供交互式的操作界面,主要用于接收用戶輸入的操作數(shù)據(jù)并做合法性驗證。由于本軟件的主要目標是進行后臺數(shù)據(jù)整合,因此表現(xiàn)層并沒有提供數(shù)據(jù)展示和檢索[5]的功能。②業(yè)務邏輯層 負責處理和轉(zhuǎn)發(fā)由表現(xiàn)層獲取的用戶輸入數(shù)據(jù),并選用合適的臨時存儲結(jié)構(gòu)對數(shù)據(jù)訪問層獲取的區(qū)域站原始數(shù)據(jù)進行存儲。③數(shù)據(jù)訪問層 數(shù)據(jù)庫的相關操作集中在該層,包括從多個源數(shù)據(jù)表中提取原始數(shù)據(jù)并提交給業(yè)務邏輯層,以及將業(yè)務邏輯層處理加工后的數(shù)據(jù)導入目標數(shù)據(jù)表中 (見圖1)。
圖1 軟件總體架構(gòu)圖
綜合設計原則和用戶需求,將軟件分為四大功能模塊:對于歷史數(shù)據(jù)和遺漏數(shù)據(jù)進行操作的手動入庫模塊,對于日常實時數(shù)據(jù)進行操作的自動入庫模塊,便于和其他平臺進行交互的多平臺數(shù)據(jù)入庫模塊以及入庫過程中產(chǎn)生的日志查看模塊,各模塊子功能如圖2所示。
圖2 軟件功能模塊圖
預處理主要解決從不同數(shù)據(jù)表提取源數(shù)據(jù)后所做的基本處理,如剔除無用字段、空字段數(shù)據(jù)的表示等方面,這與C#數(shù)據(jù)庫連接操作緊密相關。對于不同的數(shù)據(jù)庫平臺,C#的基本操作流程是一致的,其連接和預處理的偽代碼如下:
連接操作結(jié)束后的首要問題是選擇合適的數(shù)據(jù)源表和目標表,源表即提取不同區(qū)域站原始數(shù)據(jù)的表,目標表是將預處理后臨時存儲結(jié)構(gòu)DataSet中的數(shù)據(jù)導入的表。目標表需要綜合不同區(qū)域站型號和個數(shù)、中心站及客戶端軟件使用情況、源表數(shù)目、開發(fā)簡易度等多重因素進行選取。以渭南市局為例,三類不同廠家的區(qū)域站共161個,涉及包括正點數(shù)據(jù)和十分鐘數(shù)據(jù)在內(nèi)的源表共26張,建立1張通用站號表,并將目標表選為無錫無線電科學研究所ZQZ-RG型區(qū)域站的2張數(shù)據(jù)表。
使用sql語句從源表中提取原始數(shù)據(jù)后,將源表和目標表中的對應字段進行映射,同時對不同表的數(shù)據(jù)類型進行轉(zhuǎn)換。例如,華云區(qū)域站正點數(shù)據(jù)源表中 “最大風速出現(xiàn)時間”字段命名為AFMXT,類型為datetime,而目標表映射字段名為WsMaxTime,類型為char(4),因此需要對數(shù)據(jù)進行處理后再導入,主要通過C#字符串操作即可實現(xiàn)。
一般來說,區(qū)域站生成的原始數(shù)據(jù)使用源表的聯(lián)合主鍵 “站號+觀測時間”即可提取,但是當數(shù)據(jù)導入時,需檢驗該條記錄是否已存在于目標表中,即對導入目標表中的重復數(shù)據(jù)進行唯一性驗證,其基本流程邏輯如圖3所示。
日志分為操作信息和異常信息兩部分,以客戶端textbox文本框和日志文件兩種形式呈現(xiàn)。編寫一個專門的日志寫入方法,偽代碼如下:
圖3 重復數(shù)據(jù)驗證流程圖
第一次使用批量導入功能時,由于歷史數(shù)據(jù)量非常大,使用客戶端將導致進程未響應的 “假死”現(xiàn)象,使得導入的時效和性能降低。為了解決這個問題,利用python語言編寫可執(zhí)行腳本嵌入到軟件中,從而提高批量導入的效率。
區(qū)域站數(shù)據(jù)庫的整合選取了渭南市氣象局進行應用測試。根據(jù)實際需求,對區(qū)域站設備使用現(xiàn)狀進行分析,定制研發(fā)了符合渭南市氣象局站點信息特點的整合軟件。經(jīng)過長期測試,軟件運行狀況良好,已正式投入業(yè)務使用。自動入庫時,實時正點與十分鐘加密數(shù)據(jù)共約900條記錄的導入僅耗時17s,效率較高。同時,將整合后的數(shù)據(jù)庫與無錫區(qū)域站客戶端軟件結(jié)合起來進行數(shù)據(jù)查詢,對業(yè)務人員操作習慣影響較小,有效解決了區(qū)域站數(shù)據(jù)應用問題。
雖然區(qū)域站數(shù)據(jù)庫整合的設計并不是一個通用的方案,需要根據(jù)不同地市氣象局的實際情況和需求進行個性化定制和處理,但是整個軟件設計與開發(fā)的思路卻是統(tǒng)一的,都是從多源異構(gòu)數(shù)據(jù)融合的思路出發(fā),以C#語言對技術細節(jié)進行實現(xiàn)。因此,本文提出的軟件設計和實現(xiàn)方法是切實可行的,并且實際測試和試運行也證明了這一點。但是,該整合方案及軟件僅涉及數(shù)據(jù)入庫功能,未提供區(qū)域站數(shù)據(jù)的展示和檢索等具體應用,還需要在后續(xù)開發(fā)中逐步加入,從而真正降低對區(qū)域站數(shù)據(jù)運維、管理及使用的復雜性。
[1]曲鵬飛,劉鈞 .區(qū)域自動氣象站統(tǒng)一數(shù)據(jù)收集平臺的設計 [J].成都信息工程學院學報,2011,26 (2):223-227.
[2]張靖,程希來 .多源異構(gòu)數(shù)據(jù)整合應用研究 [J].成都信息工程學院學報,2009,24 (3):254-258.
[3]王壘,燕東渭 .國家下發(fā)疑誤數(shù)據(jù)反饋系統(tǒng)設計與實現(xiàn) [J].陜西氣象,2013 (2):34-36.
[4]高宇,夏巧麗,楊銀見 .省級上行氣象信息傳輸軟件的開發(fā) [J].陜西氣象,2006 (4):23-25.
[5]王祝先 .區(qū)域自動站統(tǒng)一數(shù)據(jù)收集平臺軟件研究與實現(xiàn) [D].哈爾濱:哈爾濱工程大學,2012.
P409
B何林,范濤,曹波 .區(qū)域自動氣象站數(shù)據(jù)庫整合設計與實現(xiàn) [J].陜西氣象,2014(4):44-46.
1006-4354 (2014)04-0044-03
2014-01-07
何林 (1987—),男,陜西武功人,碩士,工程師,從事氣象信息軟件開發(fā)、數(shù)據(jù)庫設計等。
陜西省氣象局科技創(chuàng)新基金計劃項目 (2014M-28)