劉海燕 周雪瑩
摘要:氣象預(yù)報(bào)技能競(jìng)賽可以提升天氣預(yù)報(bào)業(yè)務(wù)水平, 培養(yǎng)天氣預(yù)報(bào)員業(yè)務(wù)素質(zhì)和基本技能。為了提供良好的競(jìng)賽環(huán)境,依托氣象大數(shù)據(jù)云平臺(tái)和虛擬資源池,采用“云+端”的模式設(shè)計(jì)了江西省氣象預(yù)報(bào)競(jìng)賽產(chǎn)品管理系統(tǒng),構(gòu)建了面向省市兩級(jí)的統(tǒng)一存儲(chǔ)環(huán)境,提供競(jìng)賽產(chǎn)品文件的上傳與下載服務(wù),并且實(shí)時(shí)監(jiān)視傳輸情況。
關(guān)鍵詞:預(yù)報(bào)競(jìng)賽;Python;虛擬資源池;MySQL
中圖分類(lèi)號(hào):G642? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)26-0063-02
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
氣象行業(yè)職業(yè)技能競(jìng)賽已成為推動(dòng)氣象事業(yè)改革與發(fā)展的有力抓手,是全行業(yè)基層氣象業(yè)務(wù)發(fā)展的風(fēng)向標(biāo)、展示氣象人精神風(fēng)貌的大舞臺(tái)以及培育勞動(dòng)精神、勞模精神、工匠精神和造就基層氣象人才的助推器。及時(shí)、完整的氣象數(shù)據(jù)是取得好的預(yù)報(bào)技術(shù)方法的前提基礎(chǔ),做好比賽期間的資料下載、計(jì)算資源、產(chǎn)品上傳等參賽保障工作尤為重要。為氣象預(yù)報(bào)競(jìng)賽提供良好的數(shù)據(jù)環(huán)境,基于省級(jí)基礎(chǔ)設(shè)施資源池,設(shè)計(jì)了江西省氣象預(yù)報(bào)競(jìng)賽產(chǎn)品管理系統(tǒng),助力預(yù)報(bào)競(jìng)賽起到重要作用,為推動(dòng)氣象預(yù)報(bào)業(yè)務(wù)高質(zhì)量發(fā)展提供強(qiáng)有力的信息化支撐。
1 數(shù)據(jù)流程
本系統(tǒng)通過(guò)接口提供各類(lèi)氣象產(chǎn)品下載服務(wù),在基礎(chǔ)設(shè)施資源池上構(gòu)建了面向省市兩級(jí)的統(tǒng)一存儲(chǔ)環(huán)境,提供競(jìng)賽產(chǎn)品的上傳與下載服務(wù),并且對(duì)上傳的競(jìng)賽產(chǎn)品文件進(jìn)行文件名格式檢查和信息提取,通過(guò)Web方式實(shí)現(xiàn)實(shí)時(shí)監(jiān)視和統(tǒng)計(jì)功能。數(shù)據(jù)處理流程如圖1。
2 系統(tǒng)設(shè)計(jì)
依托氣象大數(shù)據(jù)云平臺(tái)和虛擬資源池的服務(wù),采用“云+端”的模式進(jìn)行江西省氣象預(yù)報(bào)競(jìng)賽支撐系統(tǒng)的設(shè)計(jì),包括服務(wù)層,存儲(chǔ)層,處理層,監(jiān)視層。服務(wù)層提供各類(lèi)競(jìng)賽產(chǎn)品的支撐數(shù)據(jù),比如雷達(dá)數(shù)據(jù)、衛(wèi)星數(shù)據(jù)等;存儲(chǔ)層主要通過(guò)NAS存儲(chǔ)競(jìng)賽產(chǎn)品,并且把相應(yīng)的基本信息存儲(chǔ)到監(jiān)視數(shù)據(jù)庫(kù)中;處理層包含文件名格式檢查、文件信息提取和存儲(chǔ)數(shù)據(jù)庫(kù);監(jiān)視層主要是對(duì)競(jìng)賽產(chǎn)品的基本信息的展示、傳輸情況的顯示、統(tǒng)計(jì)分析和報(bào)警功能。
3 系統(tǒng)功能
根據(jù)競(jìng)賽方案的要求,本系統(tǒng)設(shè)計(jì)了文件處理、監(jiān)視模塊和參數(shù)配置三部分。文件處理包括文件名格式檢查、文件信息提取及處理和文件規(guī)范化存儲(chǔ);監(jiān)視模塊主要包括實(shí)時(shí)監(jiān)視、查詢功能、信息詳情、統(tǒng)計(jì)分析和聲音告警;后臺(tái)管理包括數(shù)據(jù)庫(kù)設(shè)置、產(chǎn)品配置和告警時(shí)間配置等。系統(tǒng)功能如圖2所示。
3.1 文件處理
文件名格式檢查模塊是以《國(guó)內(nèi)氣象數(shù)據(jù)交換文件命名規(guī)范》為依據(jù),對(duì)參賽產(chǎn)品文件名進(jìn)行解析處理,不符合命名規(guī)則的產(chǎn)品文件屬于無(wú)效文件,不納入有效統(tǒng)計(jì)范圍。文件信息提取模塊對(duì)符合文件名要求的產(chǎn)品進(jìn)行文件名信息提取,獲取參賽團(tuán)隊(duì)代碼、產(chǎn)品制作完成時(shí)間、預(yù)報(bào)種類(lèi)、預(yù)報(bào)時(shí)效、最大預(yù)報(bào)時(shí)效和預(yù)報(bào)間隔以及文本格式,并且存儲(chǔ)到數(shù)據(jù)庫(kù)中,參賽產(chǎn)品傳輸?shù)街付夸浵?,按照年月日文件夾分類(lèi)保存。
3.2 監(jiān)視模塊
監(jiān)視頁(yè)面顯示參賽產(chǎn)品文件到報(bào)時(shí)間根據(jù)考核的時(shí)效是否及時(shí),并且標(biāo)注顏色進(jìn)行提示,紅色表示未收到產(chǎn)品文件,藍(lán)色表示到報(bào)時(shí)間超過(guò)考核的時(shí)效范圍,綠色表示到報(bào)時(shí)間在考核時(shí)效范圍內(nèi),及時(shí)有效。查詢功能提供時(shí)間查詢,包括當(dāng)前時(shí)次,前一時(shí)次、后一時(shí)次、某一時(shí)次、前一天、后一天、當(dāng)天和某一天的查詢方式。信息詳情顯示參賽產(chǎn)品的詳細(xì)信息,主要包括資料類(lèi)別、資料名稱(chēng)、文件名、發(fā)送時(shí)間、起報(bào)時(shí)間和及時(shí)標(biāo)志。如果參賽產(chǎn)品的到報(bào)時(shí)間超過(guò)考核的時(shí)效范圍,則通過(guò)改變數(shù)據(jù)網(wǎng)格組件的行樣式,來(lái)突出顯示該信息。統(tǒng)計(jì)分析主要是根據(jù)競(jìng)賽產(chǎn)品文件到報(bào)時(shí)間與考核的時(shí)效進(jìn)行對(duì)比,統(tǒng)計(jì)出到報(bào)及時(shí)率,如果低于競(jìng)賽設(shè)置的最低值,則取消競(jìng)賽資格。聲音告警模塊提供高效實(shí)時(shí)的Web告警,當(dāng)有競(jìng)賽產(chǎn)品未及時(shí)上傳或未上傳時(shí),監(jiān)視系統(tǒng)則發(fā)出異常聲音告警。
3.3 系統(tǒng)數(shù)據(jù)庫(kù)建設(shè)
本系統(tǒng)采用關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)MySQL數(shù)據(jù)庫(kù),建立數(shù)據(jù)庫(kù)連接,客戶端與數(shù)據(jù)庫(kù)連接字符集設(shè)置為UTF8,創(chuàng)建連接的游標(biāo)的語(yǔ)句為conn= pymysql.connect(host =IP,port = int(Port),user =用戶名,passwd =密碼,db =數(shù)據(jù)庫(kù),charset= 'utf8'),使用語(yǔ)句cursor.executemany(sql, args)數(shù)據(jù)批量執(zhí)行插入。
4 系統(tǒng)實(shí)現(xiàn)
4.1 技術(shù)實(shí)現(xiàn)
文件信息入庫(kù)模塊采用Python語(yǔ)言,監(jiān)控參賽產(chǎn)品文件的變動(dòng),如新建、修改和移動(dòng),并且記錄到數(shù)據(jù)庫(kù)中。
采用Web前端UI框架Bootstrap、Python和Flask進(jìn)行web開(kāi)發(fā),Bootstrap是由Twitter推出的一個(gè)用于前端開(kāi)發(fā)的開(kāi)源工具包,給予HTML、CSS、JavaScriot,提供簡(jiǎn)潔、直觀、強(qiáng)悍的前端開(kāi)發(fā)框架,是目前最受歡迎的前端框架。Flask是一個(gè)基于Python開(kāi)發(fā),依賴(lài)jinja2模板和Werkzeug WSGI服務(wù)的一個(gè)微型框架。通過(guò)python服務(wù)端Flask結(jié)合Bootstrap框架,操作mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)競(jìng)賽產(chǎn)品監(jiān)控與告警。
前臺(tái)采用JavaScript語(yǔ)言從告警信息表中讀取到報(bào)警代碼,發(fā)出警報(bào)提示音,提醒值班人員報(bào)文未及時(shí)上傳,值班人員點(diǎn)擊圖標(biāo)可以關(guān)閉警報(bào)提示音。
var audio = document.getElementById('sound');
audio.pause();
musicflag=2
$.ajax({
url: "alarm?musicflag=1",
type: "get",
dataType: "json",