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

圖3 虛谷數(shù)據(jù)庫連接代碼
短臨預(yù)報(bào)文件為GRIB2 格式[10],這是一種包含多要素、 能描述不同時(shí)間和空間的多維網(wǎng)格的二進(jìn)制數(shù)據(jù)格式,讀取比較復(fù)雜。 本文使用pygrib 函數(shù)庫進(jìn)行解碼,篩選出考核站點(diǎn)對應(yīng)的預(yù)報(bào)值,處理流程為:①下載GRB2 格式預(yù)報(bào)文件,用pygrib 進(jì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)對應(yīng)的矩陣array 的位置position;⑤從set 中讀取position 對應(yīng)的數(shù)據(jù),即得到預(yù)報(bào)值。
短臨預(yù)報(bào)檢驗(yàn)平臺的預(yù)報(bào)與實(shí)況讀取、 檢驗(yàn)計(jì)算及結(jié)果匯總等功能均通過容器生成算法, 通過加工流水線調(diào)度執(zhí)行。容器[11-12]使用Redhat7.5+Python3.8 的輕量級開發(fā)與運(yùn)行環(huán)境,按照“一項(xiàng)任務(wù)為一個(gè)算法、相同的數(shù)據(jù)源及輸出方式為一個(gè)算法”的原則,將平臺功能剝離為多個(gè)算法,分別為:①“天擎數(shù)據(jù)讀取并入庫算法”:從天擎數(shù)據(jù)接口[13-14]讀取閃電、短時(shí)強(qiáng)降水、大風(fēng)的實(shí)況,處理后輸出至虛谷數(shù)據(jù)庫;②“NAS 讀取并入庫算法”:從NAS 讀取短臨崗的網(wǎng)格預(yù)報(bào)報(bào)文,解碼后輸出至虛谷數(shù)據(jù)庫;③“檢驗(yàn)算法”:從虛谷數(shù)據(jù)庫分別讀取預(yù)報(bào)和實(shí)況,按檢驗(yàn)辦法計(jì)算后,將檢驗(yàn)結(jié)果輸出至虛谷數(shù)據(jù)庫;④“匯總統(tǒng)計(jì)算法”:從虛谷數(shù)據(jù)庫讀取檢驗(yàn)結(jié)果,按人員、要素、日期等對檢驗(yàn)結(jié)果進(jìn)行多種分組匯總,結(jié)果輸出至虛谷數(shù)據(jù)庫。
天擎能對各個(gè)算法任務(wù)進(jìn)行統(tǒng)一管理, 按設(shè)定的策略調(diào)度并運(yùn)行, 各算法之間沒有任何接口, 完全獨(dú)立運(yùn)行,具有較高的穩(wěn)定性。 業(yè)務(wù)用戶能對算法進(jìn)行修改、刪除、人工觸發(fā)等操作,能查詢運(yùn)行日志,便于對任務(wù)進(jìn)行監(jiān)控和維護(hù)。
短臨預(yù)報(bào)使用二分類的檢驗(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)算效率非常低。 本文對檢驗(yàn)算法的計(jì)算流程進(jìn)行了改進(jìn), 利用Python 語言中的set(集合)類型,通過集合運(yùn)算批量生成結(jié)果,不但代碼量變少,而且提高了運(yùn)行效率,縮短了運(yùn)行時(shí)間。 集合檢驗(yàn)法流程如圖4 所示。

圖4 集合檢驗(yàn)流程圖
短臨檢驗(yàn)平臺將檢驗(yàn)結(jié)果以WEB 方式顯示,主要功能有單項(xiàng)質(zhì)量查詢、 綜合質(zhì)量及排名、GIS[16]對比顯示及管理功能。WEB 部署在天擎云主機(jī),使用Django 框架,采用前后端分離技術(shù),前后端之間通過數(shù)據(jù)API 進(jìn)行通信。 GIS 地圖交互使用leaflet 函數(shù)庫, 能對站點(diǎn)、 預(yù)報(bào)要素、時(shí)效、值班表等進(jìn)行選擇查詢, 方便預(yù)報(bào)員實(shí)時(shí)查看檢驗(yàn)結(jié)果。GIS顯示如圖5 所示。

圖5 短臨預(yù)報(bào)檢驗(yàn)平臺GIS 顯示圖
山東短臨預(yù)報(bào)檢驗(yàn)平臺依托天擎的基礎(chǔ)設(shè)施和服務(wù)資源,采取“云原生”方式建設(shè),提高了開發(fā)與部署效率,增強(qiáng)了穩(wěn)定性。 自2022年4 月投入業(yè)務(wù)運(yùn)行以來,一直穩(wěn)定運(yùn)行,實(shí)現(xiàn)了對短臨預(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)確率。