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