高凌峰 趙婷婷 胡小康 楊冰 王雪瑩 白志娜
摘 要:以.NET、c#和MySQL數(shù)據(jù)庫技術(shù)為依托,建立基于CIMISS的遼陽地區(qū)中央指導(dǎo)報數(shù)據(jù)下載入庫軟件,該軟件由數(shù)據(jù)下載模塊、數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)入庫模塊和定時任務(wù)模塊構(gòu)成。各模塊相對獨立,提高了該軟件的穩(wěn)定性、安全性和可維護(hù)性。通過使用CIMISS數(shù)據(jù)系統(tǒng)的C#客戶端接口定時下載中央指導(dǎo)報文本文件,文件解碼后寫入本地MySQL數(shù)據(jù)庫,使數(shù)據(jù)查詢更加方便快捷和歷史資料的保存,為遼陽預(yù)報水平的提高積累資料。
關(guān)鍵詞: CIMISS; 中央指導(dǎo)報;MySQL;數(shù)據(jù)庫
中央指導(dǎo)報是中央氣象臺對市級城鎮(zhèn)預(yù)報的指導(dǎo),是市級氣象部門城鎮(zhèn)預(yù)報的一項重要參考產(chǎn)品,中央指導(dǎo)報數(shù)據(jù)的及時、穩(wěn)定和準(zhǔn)確對每日城鎮(zhèn)預(yù)報很有意義,中央指導(dǎo)資料的存儲和歷史資料歸檔對市級氣象部門對中央指導(dǎo)產(chǎn)品的檢驗、預(yù)報經(jīng)驗總結(jié)至關(guān)重要。因此一個及時、穩(wěn)定的產(chǎn)品獲取渠道和方便、快捷、穩(wěn)定的存儲方式至關(guān)重要。
國家綜合氣象信息共享系統(tǒng),簡稱CIMISS,遼寧省CIMISS與2017年建設(shè)完成并投入業(yè)務(wù)使用,該系統(tǒng)信息數(shù)據(jù)是由遼寧省信息服務(wù)中心維護(hù),數(shù)據(jù)入庫問題維護(hù)更加及時,而衛(wèi)星小站數(shù)據(jù)是由本市信息保障部門進(jìn)行維護(hù)存在維護(hù)不及時和數(shù)據(jù)解碼滯后等問題,所以本軟件選用更加及時穩(wěn)定的CIMISS來獲取中央指導(dǎo)報數(shù)據(jù)。
MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言--結(jié)構(gòu)化查詢語言(SQL)進(jìn)行數(shù)據(jù)庫管理。因為其速度快、可靠性搶和適應(yīng)性好,該軟件選取MySQL數(shù)據(jù)庫作為中央指導(dǎo)報數(shù)據(jù)存儲服務(wù)器。
1遼陽地區(qū)中央指導(dǎo)報數(shù)據(jù)下載入庫軟件總體結(jié)構(gòu)
軟件設(shè)計框架如圖1,由中央指導(dǎo)報數(shù)據(jù)下載模塊、MySQL數(shù)據(jù)存儲系統(tǒng)、中央指導(dǎo)報數(shù)據(jù)解碼入庫模塊和定時任務(wù)模塊構(gòu)成。
2遼陽地區(qū)中央指導(dǎo)報數(shù)據(jù)下載入庫軟件模塊設(shè)計
2.1中央指導(dǎo)報數(shù)據(jù)下載模塊設(shè)計
氣象數(shù)據(jù)統(tǒng)一訪問接口(MUSIC),是基于全國氣象綜合信息共享平臺的(CIMISS)的數(shù)據(jù)環(huán)境。利用其面向氣象業(yè)務(wù)和科研提供的標(biāo)準(zhǔn)的C#應(yīng)用程序編程接口,通過使用下載服務(wù)的文件的方法(callAPI_to_downFile)將中央指導(dǎo)報數(shù)據(jù)接口(getSevpFileByTime)的文本文件下載到本地。當(dāng)任務(wù)任務(wù)完成時返回值為1。具體代碼如下。
String userId = "*********";//
String pwd = "********";//
String interfaceId = "getSevpFileByTime";
Dictionary
{
{ "dataCode", "SEVP_WEFC" },
{ "times", timefordata }
};
String saveDir = Application.StartupPath + @"\中央指導(dǎo)報";
RetFilesInfo retFilesInfo = new RetFilesInfo();
client.initResources();
int rst = client.callAPI_to_downFile(userId, pwd, interfaceId, params1, saveDir, retFilesInfo);
2.2 MySQL數(shù)據(jù)存儲系統(tǒng)設(shè)計
MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫系統(tǒng)使用最常用的數(shù)據(jù)庫管理語言--結(jié)構(gòu)化查詢語言(SQL)進(jìn)行數(shù)據(jù)庫管理。因為其速度快、可靠性強(qiáng)和適應(yīng)性好,該軟件選取MySQL數(shù)據(jù)庫作為中央指導(dǎo)報數(shù)據(jù)存儲服務(wù)器。
通過C#,利用SQL語句新建庫“l(fā)yqxt”,并在庫中建立表“中央指導(dǎo)報”。并根據(jù)中央指導(dǎo)報文本文件格式建立列標(biāo),依次為預(yù)報時效站號,溫度,濕度,風(fēng)向,風(fēng)速,氣壓,降水量 ,總云量,低云量,天氣現(xiàn)象,能見度,最高氣溫,最低氣溫,最大濕度,最小濕度,24小時降水,12小時降水,12小時總云量,12小時低云量,12小時天氣現(xiàn)象,12小時風(fēng)向,12小時風(fēng)速。為了避免重復(fù)入庫和提高檢索效率,定義“預(yù)報時效站號”列為主鍵和索引。
2.3中央指導(dǎo)報數(shù)據(jù)解碼入庫模塊設(shè)計
中央指導(dǎo)報文本文件中存儲了全國2599個國家站未來168小時內(nèi)的城鎮(zhèn)預(yù)報結(jié)論,其中包含遼陽地區(qū)三個國家站,站號依次為54345、54347、54348。該模塊利用C#語言將下載到本地的中央指導(dǎo)報文本文件讀入內(nèi)存并從其中檢索出上述三站的全部預(yù)報產(chǎn)品,以字符串形式寫入一維字符串?dāng)?shù)據(jù)內(nèi)。當(dāng)提取完全部站點信息后將中央指導(dǎo)報產(chǎn)品數(shù)據(jù)批量寫入MySQL中央指導(dǎo)報數(shù)據(jù)庫。
2.4定時任務(wù)模塊設(shè)計
中央指導(dǎo)產(chǎn)品每日兩次分別在1:00和14:00左右寫入CIMISS數(shù)據(jù)系統(tǒng),數(shù)據(jù)源穩(wěn)定但寫入時間每日會有所不同,為了保證第一時間獲取到中央指導(dǎo)產(chǎn)品,該軟件定義DataTable格式全局變量dt進(jìn)行任務(wù)存儲,存儲信息依次為任務(wù)時間、任務(wù)類型、數(shù)據(jù)名稱、時間特征、循環(huán)特征五項,為了增加人機(jī)交互性能選取dataGridView控件來直觀顯示dt內(nèi)存儲的任務(wù)信息。
添加timer控件,并定義interval屬性為1000以實現(xiàn)每秒進(jìn)行一次任務(wù)判斷。通過對系統(tǒng)時間與任務(wù)時間進(jìn)行比較,當(dāng)系統(tǒng)時間大于任務(wù)時間時執(zhí)行中央指導(dǎo)報文本下載模塊,如果下載成功執(zhí)行入庫模塊并更新任務(wù)信息為下次任務(wù)的信息,反之如果下載失敗則等待下次任務(wù)判斷。當(dāng)任務(wù)超過規(guī)定時效未完成此次任務(wù),循環(huán)特征標(biāo)記為一次并形成下次下載任務(wù)。
3小結(jié)
隨著計算機(jī)水平的發(fā)展,數(shù)值模式產(chǎn)品發(fā)展迅速,一款穩(wěn)定準(zhǔn)確的模式產(chǎn)品對市級預(yù)報員的參考意義重大,中央指導(dǎo)報是中國氣象局下發(fā)的十分具有參考意義的指導(dǎo)產(chǎn)品。遼陽地區(qū)中央指導(dǎo)報數(shù)據(jù)下載入庫軟件能夠?qū)崿F(xiàn)及時、準(zhǔn)確和穩(wěn)定獲取中央指導(dǎo)報信息,對預(yù)報員對中央指導(dǎo)報的獲取、分析至關(guān)重要。
參考文獻(xiàn):
[1]熊安元,趙芳,王穎,等.全國綜合氣象信息共享系統(tǒng)設(shè)計與實現(xiàn) [J] .應(yīng)用氣象學(xué)報,2015,26(4):500-512.
[2]史彩霞,黎穎智,張許斌.基于CIMISS的廣西氣象服務(wù)信息綜合業(yè)務(wù)系統(tǒng)的設(shè)計與實現(xiàn) [J].氣象研究與應(yīng)用,2016,37(4):82-85.
[3]楊群娜,陳素英,謝禮江,等.氣象網(wǎng)站公眾互動欄目的設(shè)計與實現(xiàn) [J]廣東氣象,2016,38(3):50-52,55.