李建明, 韓永清, 冀玉超
(1.山東省氣象防災(zāi)減災(zāi)重點(diǎn)實(shí)驗(yàn)室, 山東 濟(jì)南 250031; 2.東營(yíng)市氣象局, 山東 東營(yíng) 257091;3.山東省氣象臺(tái), 山東 濟(jì)南 250031)
短時(shí)臨近預(yù)報(bào)主要針對(duì)0~12h 內(nèi)的高影響天氣的進(jìn)行預(yù)報(bào)預(yù)警,對(duì)人民生產(chǎn)生活有較大影響,是防災(zāi)減災(zāi)的重要組成部分,各級(jí)氣象臺(tái)都十分重視這項(xiàng)業(yè)務(wù)。山東省氣象臺(tái)為做好此項(xiàng)工作,專(zhuān)門(mén)設(shè)立了短臨業(yè)務(wù)崗位,完善了相關(guān)制度與工作流程,并將該崗位與智能網(wǎng)格預(yù)報(bào)業(yè)務(wù)互相銜接,設(shè)計(jì)開(kāi)發(fā)了短臨業(yè)務(wù)模塊,制作發(fā)布短時(shí)臨近格點(diǎn)預(yù)報(bào)并為市、縣級(jí)氣象臺(tái)提供業(yè)務(wù)指導(dǎo)[1]。 為客觀及時(shí)的評(píng)價(jià)短臨預(yù)報(bào)產(chǎn)品的業(yè)務(wù)質(zhì)量和服務(wù)效果, 開(kāi)發(fā)檢驗(yàn)平臺(tái),實(shí)現(xiàn)對(duì)短臨預(yù)報(bào)產(chǎn)品的檢驗(yàn)成為業(yè)務(wù)急需。
氣象大數(shù)據(jù)云平臺(tái)(CMADaaS,以下簡(jiǎn)稱(chēng)天擎)是全國(guó)氣象信息化“數(shù)算一體”的核心平臺(tái),具有海量存儲(chǔ)、全業(yè)務(wù)貫通、高效數(shù)據(jù)應(yīng)用的能力。 《氣象信息系統(tǒng)集約化管理辦法》(氣發(fā)〔2018〕117 號(hào)文件)提出,已有的信息系統(tǒng)要積極進(jìn)行云化改造后融入天擎,對(duì)于新開(kāi)發(fā)的系統(tǒng),要求實(shí)現(xiàn)“云原生”。 福建、湖南、云南、廣西等省陸續(xù)開(kāi)展了已有氣象業(yè)務(wù)系統(tǒng)云化改造并融入天擎的研究與探索[2-8],但是基于天擎的“云原生”建設(shè)的信息系統(tǒng)較少,尚處在起步階段。
本文分析了短臨預(yù)報(bào)產(chǎn)品及檢驗(yàn)辦法, 闡述了短臨預(yù)報(bào)檢驗(yàn)平臺(tái)的功能定位、架構(gòu)及各功能模塊的實(shí)現(xiàn)方法,完成了基于天擎的“云原生”建設(shè),為其它信息系統(tǒng)的“云原生”建設(shè)提供借鑒。
對(duì)短臨崗的強(qiáng)對(duì)流落區(qū)預(yù)報(bào)進(jìn)行檢驗(yàn), 檢驗(yàn)內(nèi)容為每天08、14、20 時(shí)起報(bào),至次日08 時(shí)以?xún)?nèi)逐3 h 的強(qiáng)對(duì)流落區(qū)網(wǎng)格預(yù)報(bào),要素為雷暴、短時(shí)強(qiáng)降水和和雷暴大風(fēng)。實(shí)況參考站點(diǎn)為全省122 個(gè)國(guó)家級(jí)臺(tái)站和298 個(gè)骨干區(qū)域站。當(dāng)觀測(cè)站30km 內(nèi)有閃電數(shù)據(jù)時(shí)定義為該站產(chǎn)生雷暴天氣;當(dāng)觀測(cè)站點(diǎn)預(yù)報(bào)時(shí)效內(nèi)出現(xiàn)≥20mm/h 的降水時(shí)定義為該站產(chǎn)生短時(shí)強(qiáng)降水; 當(dāng)站點(diǎn)有雷暴天氣且極大風(fēng)速≥17m/s 時(shí)定義該站產(chǎn)生雷暴大風(fēng)。 按雷暴、短時(shí)強(qiáng)降水、 雷暴大風(fēng)評(píng)分各占三分之一的規(guī)則計(jì)算強(qiáng)對(duì)流落區(qū)預(yù)報(bào)的TS 評(píng)分,命中率、空?qǐng)?bào)率的算法分別見(jiàn)式(1)與式(2)。 按命中率從高到低,空?qǐng)?bào)率從低到高的順序給預(yù)報(bào)員賦排序分,將排序分匯總生成短臨業(yè)務(wù)檢驗(yàn)質(zhì)量結(jié)果。
命中率POD 計(jì)算方法:
空?qǐng)?bào)率FAR 計(jì)算方法為:
其中NA 為預(yù)報(bào)正確站數(shù),NB 為空?qǐng)?bào)站數(shù)、NC 為漏報(bào)站數(shù)。
短臨崗預(yù)報(bào)員制作完成的強(qiáng)對(duì)流網(wǎng)格預(yù)報(bào)以GRIB2格式報(bào)文形式保存在天擎的NAS 中,實(shí)況數(shù)據(jù)通過(guò)天擎數(shù)據(jù)接口獲取,基于預(yù)報(bào)和實(shí)況數(shù)據(jù),檢驗(yàn)平臺(tái)采取B/S方式,客戶(hù)端通過(guò)瀏覽器進(jìn)行各種查詢(xún)與統(tǒng)計(jì),服務(wù)端部署在天擎,通過(guò)算法加工流水線后臺(tái)定時(shí)運(yùn)行,主要包括預(yù)報(bào)讀取與處理模塊、實(shí)況獲取模塊、檢驗(yàn)?zāi)K。 功能結(jié)構(gòu)圖如圖1 所示。
圖1 功能結(jié)構(gòu)圖
短臨預(yù)報(bào)檢驗(yàn)平臺(tái)伴隨短臨預(yù)報(bào)業(yè)務(wù)同步運(yùn)行,功能定位為省級(jí)應(yīng)用的業(yè)務(wù)化平臺(tái), 要求各功能模塊運(yùn)行穩(wěn)定,數(shù)據(jù)處理準(zhǔn)確可靠,計(jì)算要科學(xué)嚴(yán)謹(jǐn),查詢(xún)統(tǒng)計(jì)要方便快捷。針對(duì)異常情況如實(shí)況數(shù)據(jù)缺失、預(yù)報(bào)報(bào)文修改等情況要有自動(dòng)應(yīng)對(duì)機(jī)制,便于運(yùn)行維護(hù)。
短臨預(yù)報(bào)檢驗(yàn)平臺(tái)完全基于天擎設(shè)計(jì)和部署, 采用前后端分離架構(gòu),前端部署在天擎的資源池云主機(jī),通過(guò)WEB 框架進(jìn)行綜合查詢(xún)、各單項(xiàng)質(zhì)量查詢(xún)、值班和管理、GIS 方式查詢(xún)等功能。 后端依賴(lài)天擎的數(shù)據(jù)、基礎(chǔ)設(shè)施服務(wù)及算法加工流水線等資源,承擔(dān)各類(lèi)預(yù)報(bào)與實(shí)況處理、定時(shí)檢驗(yàn)、回算校驗(yàn)及產(chǎn)品加工等功能。 前后端通過(guò)API進(jìn)行數(shù)據(jù)交互,業(yè)務(wù)應(yīng)用和數(shù)據(jù)服務(wù)都在天擎內(nèi)完成,算法靠近數(shù)據(jù),實(shí)現(xiàn)了“數(shù)算一體”。 功能架構(gòu)如圖2 所示。
圖2 功能架構(gòu)圖
短臨預(yù)報(bào)檢驗(yàn)平臺(tái)使用Microsoft Visual Studio 作為綜合開(kāi)發(fā)工具, 使用Python3.8 語(yǔ)言開(kāi)發(fā)。 運(yùn)行時(shí)使用Django 作為WEB 框架,docker 使用Redhat7.5 操作系統(tǒng),數(shù)據(jù)庫(kù)為虛谷云數(shù)據(jù)庫(kù),內(nèi)存數(shù)據(jù)庫(kù)使用Redis。
天擎能提供各類(lèi)專(zhuān)題庫(kù)和云庫(kù), 氣象常用的結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)適合使用專(zhuān)題庫(kù)存儲(chǔ), 其它數(shù)據(jù)適合使用云庫(kù)存儲(chǔ)。天擎上的云庫(kù)由用戶(hù)申請(qǐng),通過(guò)后可自主新建模式及數(shù)據(jù)表,使用方式上更加靈活方便。天擎提供的云庫(kù)為虛谷數(shù)據(jù)庫(kù),這是一種關(guān)系模型數(shù)據(jù)庫(kù)[9],支持SQL92語(yǔ)法,兼容oracle 語(yǔ)法,完全自動(dòng)的分庫(kù)分表策略,機(jī)制成熟、可靠,讀寫(xiě)時(shí)效較高。
根據(jù)短臨預(yù)報(bào)檢驗(yàn)平臺(tái)的數(shù)據(jù)情況, 在虛谷數(shù)據(jù)庫(kù)新建模式DUANLIN,在此模式下新建預(yù)報(bào)、實(shí)況、站號(hào)信息、檢驗(yàn)結(jié)果、匯總結(jié)果等數(shù)據(jù)表。 在對(duì)數(shù)據(jù)表進(jìn)行結(jié)構(gòu)設(shè)計(jì)時(shí), 充分利用json 格式數(shù)據(jù)緊湊的優(yōu)勢(shì), 將相同要素、相同時(shí)次對(duì)應(yīng)的站號(hào)、時(shí)效的數(shù)據(jù)以json 格式存儲(chǔ),相較于傳統(tǒng)的“站號(hào),要素,時(shí)間,數(shù)據(jù)”類(lèi)型的單站單記錄的表結(jié)構(gòu),不但讀寫(xiě)速度更快,而且讀取的數(shù)據(jù)能直接賦值給Python 的字典類(lèi)型變量, 提高了開(kāi)發(fā)效率。Python3.8 連接虛谷數(shù)據(jù)庫(kù)相關(guān)代碼如圖3 所示。
圖3 虛谷數(shù)據(jù)庫(kù)連接代碼
短臨預(yù)報(bào)文件為GRIB2 格式[10],這是一種包含多要素、 能描述不同時(shí)間和空間的多維網(wǎng)格的二進(jìn)制數(shù)據(jù)格式,讀取比較復(fù)雜。 本文使用pygrib 函數(shù)庫(kù)進(jìn)行解碼,篩選出考核站點(diǎn)對(duì)應(yīng)的預(yù)報(bào)值,處理流程為:①下載GRB2 格式預(yù)報(bào)文件,用pygrib 進(jìn)行解碼后轉(zhuǎn)換為專(zhuān)用格式data;②讀取data 中的頭部描述信息message, 分離出起報(bào)時(shí)間和時(shí)效,篩選出24h 內(nèi)逐3h 的數(shù)據(jù)集set;③讀取set 中經(jīng)緯度數(shù)據(jù)生成矩陣array;④根據(jù)實(shí)況參考站點(diǎn)的經(jīng)緯度,用“鄰近距離法” 計(jì)算出實(shí)況站點(diǎn)對(duì)應(yīng)的矩陣array 的位置position;⑤從set 中讀取position 對(duì)應(yīng)的數(shù)據(jù),即得到預(yù)報(bào)值。
短臨預(yù)報(bào)檢驗(yàn)平臺(tái)的預(yù)報(bào)與實(shí)況讀取、 檢驗(yàn)計(jì)算及結(jié)果匯總等功能均通過(guò)容器生成算法, 通過(guò)加工流水線調(diào)度執(zhí)行。容器[11-12]使用Redhat7.5+Python3.8 的輕量級(jí)開(kāi)發(fā)與運(yùn)行環(huán)境,按照“一項(xiàng)任務(wù)為一個(gè)算法、相同的數(shù)據(jù)源及輸出方式為一個(gè)算法”的原則,將平臺(tái)功能剝離為多個(gè)算法,分別為:①“天擎數(shù)據(jù)讀取并入庫(kù)算法”:從天擎數(shù)據(jù)接口[13-14]讀取閃電、短時(shí)強(qiáng)降水、大風(fēng)的實(shí)況,處理后輸出至虛谷數(shù)據(jù)庫(kù);②“NAS 讀取并入庫(kù)算法”:從NAS 讀取短臨崗的網(wǎng)格預(yù)報(bào)報(bào)文,解碼后輸出至虛谷數(shù)據(jù)庫(kù);③“檢驗(yàn)算法”:從虛谷數(shù)據(jù)庫(kù)分別讀取預(yù)報(bào)和實(shí)況,按檢驗(yàn)辦法計(jì)算后,將檢驗(yàn)結(jié)果輸出至虛谷數(shù)據(jù)庫(kù);④“匯總統(tǒng)計(jì)算法”:從虛谷數(shù)據(jù)庫(kù)讀取檢驗(yàn)結(jié)果,按人員、要素、日期等對(duì)檢驗(yàn)結(jié)果進(jìn)行多種分組匯總,結(jié)果輸出至虛谷數(shù)據(jù)庫(kù)。
天擎能對(duì)各個(gè)算法任務(wù)進(jìn)行統(tǒng)一管理, 按設(shè)定的策略調(diào)度并運(yùn)行, 各算法之間沒(méi)有任何接口, 完全獨(dú)立運(yùn)行,具有較高的穩(wěn)定性。 業(yè)務(wù)用戶(hù)能對(duì)算法進(jìn)行修改、刪除、人工觸發(fā)等操作,能查詢(xún)運(yùn)行日志,便于對(duì)任務(wù)進(jìn)行監(jiān)控和維護(hù)。
短臨預(yù)報(bào)使用二分類(lèi)的檢驗(yàn)規(guī)則, 即預(yù)報(bào)和實(shí)況分別以“事件發(fā)生、事件未發(fā)生”進(jìn)行組合檢驗(yàn)[15]。 傳統(tǒng)的檢驗(yàn)方法采用時(shí)間、站點(diǎn)循環(huán)的串行計(jì)算方法,運(yùn)算效率非常低。 本文對(duì)檢驗(yàn)算法的計(jì)算流程進(jìn)行了改進(jìn), 利用Python 語(yǔ)言中的set(集合)類(lèi)型,通過(guò)集合運(yùn)算批量生成結(jié)果,不但代碼量變少,而且提高了運(yùn)行效率,縮短了運(yùn)行時(shí)間。 集合檢驗(yàn)法流程如圖4 所示。
圖4 集合檢驗(yàn)流程圖
短臨檢驗(yàn)平臺(tái)將檢驗(yàn)結(jié)果以WEB 方式顯示,主要功能有單項(xiàng)質(zhì)量查詢(xún)、 綜合質(zhì)量及排名、GIS[16]對(duì)比顯示及管理功能。WEB 部署在天擎云主機(jī),使用Django 框架,采用前后端分離技術(shù),前后端之間通過(guò)數(shù)據(jù)API 進(jìn)行通信。 GIS 地圖交互使用leaflet 函數(shù)庫(kù), 能對(duì)站點(diǎn)、 預(yù)報(bào)要素、時(shí)效、值班表等進(jìn)行選擇查詢(xún), 方便預(yù)報(bào)員實(shí)時(shí)查看檢驗(yàn)結(jié)果。GIS顯示如圖5 所示。
圖5 短臨預(yù)報(bào)檢驗(yàn)平臺(tái)GIS 顯示圖
山東短臨預(yù)報(bào)檢驗(yàn)平臺(tái)依托天擎的基礎(chǔ)設(shè)施和服務(wù)資源,采取“云原生”方式建設(shè),提高了開(kāi)發(fā)與部署效率,增強(qiáng)了穩(wěn)定性。 自2022年4 月投入業(yè)務(wù)運(yùn)行以來(lái),一直穩(wěn)定運(yùn)行,實(shí)現(xiàn)了對(duì)短臨預(yù)報(bào)網(wǎng)格產(chǎn)品的實(shí)時(shí)檢驗(yàn), 檢驗(yàn)結(jié)果作為主要依據(jù)用于預(yù)報(bào)質(zhì)量業(yè)務(wù)考核,同時(shí),有利于預(yù)報(bào)員根據(jù)實(shí)時(shí)檢驗(yàn)結(jié)果及時(shí)調(diào)整預(yù)報(bào)思路和預(yù)報(bào)方法,從而提升預(yù)報(bào)準(zhǔn)確率。