何 佳,惠建忠*,袁亞男,劉湊華
(1.中國氣象局公共氣象服務(wù)中心 北京 100081;2.中國氣象局國家氣象中心 北京 100081)
正值國家提出構(gòu)建新發(fā)展格局,全社會各行業(yè)積極融入高質(zhì)量發(fā)展之際,氣象服務(wù)產(chǎn)品性能提升成為實(shí)現(xiàn)氣象服務(wù)高質(zhì)量發(fā)展的核心任務(wù)。檢驗(yàn)是揭示產(chǎn)品性能和促進(jìn)性能提升的關(guān)鍵手段。2019 年10 月中國氣象局公共氣象服務(wù)中心組建檢驗(yàn)創(chuàng)新團(tuán)隊(duì),將對各類氣象機(jī)構(gòu)面向社會發(fā)布的各種主要?dú)庀蠓?wù)產(chǎn)品,進(jìn)行第三方獨(dú)立檢驗(yàn)和評估,快速提供客觀、公正、多維度的檢驗(yàn)結(jié)果,逐步形成檢驗(yàn)方法科學(xué)、流程規(guī)范、結(jié)果權(quán)威的氣象服務(wù)產(chǎn)品檢驗(yàn)業(yè)務(wù)體系。
MetEva 是由國家氣象中心預(yù)報(bào)技術(shù)研發(fā)室負(fù)責(zé)研發(fā)的一個純python 程序庫,提供了常用的各種氣象預(yù)報(bào)檢驗(yàn)評估算法函數(shù)、氣象檢驗(yàn)分析的圖片和表格型產(chǎn)品制作函數(shù)。共包含檢驗(yàn)基礎(chǔ)算法100+項(xiàng),檢驗(yàn)應(yīng)用工具20+項(xiàng),并支持30+種分類方式開展精細(xì)化檢驗(yàn)[1]。
本文以氣象服務(wù)基礎(chǔ)產(chǎn)品為對象,分析檢驗(yàn)環(huán)節(jié),以解耦思想進(jìn)行流程設(shè)計(jì)。分析并應(yīng)用MetEva和文檔生成技術(shù)docxtpl 實(shí)現(xiàn)檢驗(yàn)業(yè)務(wù)自動化。通過該項(xiàng)工作,實(shí)現(xiàn)定期輸出檢驗(yàn)報(bào)告并業(yè)務(wù)化運(yùn)行,為產(chǎn)品發(fā)展和服務(wù)決策提供參考依據(jù)。
將檢驗(yàn)對象分為單產(chǎn)品獨(dú)立檢驗(yàn)和多產(chǎn)品對比檢驗(yàn)。目前開展檢驗(yàn)的產(chǎn)品包括:地面實(shí)況分析產(chǎn)品(簡稱CARAS-SUR1km)、多模式集成預(yù)報(bào)產(chǎn)品(簡稱OCF)、天氣雷達(dá)分鐘降水產(chǎn)品(簡稱MQPF)、基于機(jī)器學(xué)習(xí)的AI 智能預(yù)報(bào)產(chǎn)品(簡稱AIW-PMKG)、短時(shí)臨近預(yù)報(bào)產(chǎn)品(簡稱WEN)。其中,與地面實(shí)況分析產(chǎn)品進(jìn)行對比檢驗(yàn)的產(chǎn)品包括:國家氣象信息中心發(fā)布的CMPAS(CMA Multisource merged Precipitation Analysis System,中國氣象局多源融合降水分析系統(tǒng))三源融合降水實(shí)況和CLDAS(CMA Land Data Assimilation System,中國氣象局陸面數(shù)據(jù)同化系統(tǒng))陸面同化實(shí)況。與多模式集成預(yù)報(bào)產(chǎn)品進(jìn)行對比檢驗(yàn)的產(chǎn)品包括:中國氣象局?jǐn)?shù)值預(yù)報(bào)中心中尺度數(shù)值預(yù)報(bào)系統(tǒng)模式產(chǎn)品(簡稱CMA-MESO)和國家天氣預(yù)報(bào)庫產(chǎn)品(簡稱NWFD)。產(chǎn)品簡介如表1,考慮對比檢驗(yàn)數(shù)據(jù)對齊,表中“預(yù)報(bào)時(shí)長”表示對原始產(chǎn)品進(jìn)行截取后的時(shí)長,為空表示實(shí)況分析產(chǎn)品??臻g分辨率為空表示站點(diǎn)產(chǎn)品。
表1 檢驗(yàn)對象信息簡表
實(shí)況觀測數(shù)據(jù)選取經(jīng)中國氣象局觀測司考核的國家級地面氣象觀測站和區(qū)域自動站約11000 個,從氣象大數(shù)據(jù)云平臺“天擎”獲取[2]。
從事件視角出發(fā),某一個事件是否發(fā)生的檢驗(yàn)稱為有無預(yù)報(bào)檢驗(yàn)。雨霧預(yù)報(bào)檢驗(yàn)是常見的示例。對于某些應(yīng)用,可以指定閾值以分隔“是”和“否”,例如,風(fēng)速大于10m·s-1。通過二分類列聯(lián)表(列聯(lián)表也稱為頻數(shù)表,對應(yīng)機(jī)器學(xué)習(xí)領(lǐng)域的混淆矩陣[3])得出預(yù)測(是或否)和觀測(是或否)的四種組合,基于列聯(lián)表計(jì)算各種檢驗(yàn)指標(biāo)。常見的指標(biāo)有命中率、空報(bào)率、漏報(bào)率、準(zhǔn)確率、偏差、TS 評分等。
從類別視角出發(fā),有兩種情況,一是預(yù)報(bào)的對象本身不是數(shù)而是類別,比如降水相態(tài)有雨、雪、凍雨等,可以采用整數(shù)對不同類別進(jìn)行編碼。二是預(yù)報(bào)的對象本身是實(shí)數(shù),人為根據(jù)數(shù)值大小劃分為多個等級而構(gòu)成類別。比如24h 降水量記[0.1,10),[10,25),[25,50),[50,100),[100,250),[250,∞)(單位mm·(24h)-1),分別為小雨、中雨、大雨、暴雨、大暴雨和特大暴雨,可以稱為多分類檢驗(yàn)。檢驗(yàn)指標(biāo)同有無預(yù)報(bào)檢驗(yàn),需要注意的是指標(biāo)計(jì)算公式中各變量含義的區(qū)別,具體可參考MetEva 在線文檔多分類預(yù)報(bào)檢驗(yàn)章節(jié)的說明。
從數(shù)值視角出發(fā),對連續(xù)型預(yù)報(bào)進(jìn)行客觀統(tǒng)計(jì)檢驗(yàn)的方法。常見的指標(biāo)有平均誤差、平均絕對誤差、均方根誤差、相關(guān)系數(shù)、準(zhǔn)確率、錯誤率等。
矢量檢驗(yàn)方法針對具有方向和大小的氣象變量如風(fēng)等進(jìn)行檢驗(yàn)評估,常見的指標(biāo)有:風(fēng)速預(yù)報(bào)準(zhǔn)確率、偏強(qiáng)率、偏弱率等。
以上提到的指標(biāo)含義和計(jì)算公式可參考由陳昊明等[4]編寫的《高分辨率區(qū)域數(shù)值預(yù)報(bào)業(yè)務(wù)檢驗(yàn)評估指標(biāo)及算法》、中國氣象局發(fā)布的氣發(fā)〔2005〕109號《關(guān)于下發(fā)中短期天氣預(yù)報(bào)質(zhì)量檢驗(yàn)辦法(試行)的通知》文件附件2《中短期天氣預(yù)報(bào)質(zhì)量檢驗(yàn)辦法(試行)解釋說明》以及MetEva 在線文檔。
除上述傳統(tǒng)檢驗(yàn)方法外,目前國外研究的基于目標(biāo)診斷的空間檢驗(yàn)方法MODE(Method of Object-Based Diagnostic Evaluation)及其檢驗(yàn)工具M(jìn)ET[5]逐步進(jìn)入業(yè)務(wù)。劉湊華等[6]介紹了基于目標(biāo)的降水檢驗(yàn)方法及應(yīng)用。李佳等[7]介紹了目標(biāo)檢驗(yàn)方法在高分辨率數(shù)值天氣預(yù)報(bào)檢驗(yàn)中的應(yīng)用。屠妮妮等[8]開展了基于MET 的SWCWARMS 及GRAPES 模式在西南地區(qū)的站點(diǎn)檢驗(yàn)分析。此外從服務(wù)角度,催生了新的或改進(jìn)的檢驗(yàn)方法,如對傳統(tǒng)TS 評分進(jìn)行改進(jìn)的DTS 評分。
確定檢驗(yàn)方法后需要對方法中闡述的分類情況進(jìn)行定義。例如,降水有無預(yù)報(bào)檢驗(yàn)需要確定晴雨判定標(biāo)準(zhǔn)。通常以觀測能達(dá)到的最小量程0.1mm 為閾值,小于0.1mm 判定為無雨(即晴),大于等于0.1mm判定為有雨。在進(jìn)行多分類檢驗(yàn)時(shí),針對降水累積時(shí)段不同,需要分別確定各分類閾值。如多模式集成預(yù)報(bào)產(chǎn)品降水累計(jì)時(shí)段有1h、3h、和12h,需要分別設(shè)置降水等級閾值,可參考《中短期天氣預(yù)報(bào)質(zhì)量檢驗(yàn)辦法(試行)解釋說明》。短臨預(yù)報(bào)產(chǎn)品降水等級標(biāo)準(zhǔn)可參考《短時(shí)氣象服務(wù)降水等級》[9]。
風(fēng)力分級標(biāo)準(zhǔn),默認(rèn)采用我國2012 年6 月發(fā)布的《風(fēng)力等級》國家標(biāo)準(zhǔn)[10]。同時(shí)支持自定義等級,如在地面實(shí)況分析產(chǎn)品檢驗(yàn)中,采用將國家標(biāo)準(zhǔn)風(fēng)力等級中兩級合并為一級。
氣溫預(yù)報(bào)準(zhǔn)確率的誤差分級,采用自定義方式,通過參數(shù)進(jìn)行傳遞。如本文定義了絕對誤差=以1為間隔1~10℃共十個等級進(jìn)行氣溫準(zhǔn)確率的檢驗(yàn)。
在實(shí)際檢驗(yàn)時(shí)需要根據(jù)產(chǎn)品系統(tǒng)獨(dú)特性對默認(rèn)閾值進(jìn)行調(diào)整。例如WEN 產(chǎn)品晴雨判斷閾值為0.03mm,如果取默認(rèn)值(0.1mm)則會得出錯誤結(jié)論。
借鑒MetEva 將數(shù)據(jù)收集和檢驗(yàn)計(jì)算解耦的技術(shù)設(shè)計(jì)思想,檢驗(yàn)流程總體分為三部分,各部分關(guān)系如圖1 所示。
基于MetEva 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),將檢驗(yàn)數(shù)據(jù)處理為數(shù)據(jù)框[11],每個要素一個文件。數(shù)據(jù)收集流程如圖2,包括以下步驟:
(1)采集。從氣象大數(shù)據(jù)云平臺“天擎”和公服業(yè)務(wù)環(huán)境中采集檢驗(yàn)所需的各類數(shù)據(jù)(見表1)并進(jìn)行解析。
(2)插值。對格點(diǎn)數(shù)據(jù)通過插值方法獲得觀測站點(diǎn)上的產(chǎn)品數(shù)據(jù)。
(3)清洗。對數(shù)據(jù)解析過程中產(chǎn)生的精度問題,以及數(shù)據(jù)本身存在的異常問題進(jìn)行處理。
(4)合并。按照站點(diǎn)編號、數(shù)據(jù)時(shí)間、預(yù)報(bào)時(shí)效、海拔高度對預(yù)報(bào)和觀測進(jìn)行時(shí)空匹配。
根據(jù)業(yè)務(wù)需求,對MetEva 豐富的檢驗(yàn)產(chǎn)品制作函數(shù)進(jìn)行指標(biāo)選取、參數(shù)調(diào)整和定制封裝,流程見圖3。
(1)預(yù)處理。使用MetEva 基礎(chǔ)層函數(shù)讀取數(shù)據(jù)收集流程產(chǎn)生的觀測和產(chǎn)品合并數(shù)據(jù),并對數(shù)據(jù)列名稱進(jìn)行設(shè)置、裁剪。
(2)指標(biāo)選取。針對不同產(chǎn)品的不同要素定制檢驗(yàn)指標(biāo)。要素與指標(biāo)之間是1 對多關(guān)系。
(3)參數(shù)調(diào)整。在確定檢驗(yàn)指標(biāo)后,根據(jù)業(yè)務(wù)需求,對方法中的參數(shù)進(jìn)行調(diào)整。MetEva 大部分函數(shù)以參數(shù)方式支持自定義檢驗(yàn)標(biāo)準(zhǔn),比如,降水量級閾值。但也有不支持的參數(shù)如風(fēng)速等級,需要通過調(diào)整源碼來實(shí)現(xiàn)。
(4)定制封裝。針對不同產(chǎn)品檢驗(yàn)報(bào)告?zhèn)€性化需求,對接口內(nèi)容進(jìn)行定制化生成,通過命令行參數(shù)實(shí)現(xiàn)一鍵式生成各類檢驗(yàn)產(chǎn)品。
例如:針對實(shí)況分析產(chǎn)品,包括選取氣溫、降水進(jìn)行對比檢驗(yàn)、風(fēng)速獨(dú)立檢驗(yàn),共計(jì)30+個圖形檢驗(yàn)產(chǎn)品。
格式化的報(bào)告是正式文件。在完成檢驗(yàn)計(jì)算的基礎(chǔ)上,將生成的檢驗(yàn)圖形產(chǎn)品、檢驗(yàn)分析數(shù)據(jù)按章節(jié)形成可發(fā)布的正式報(bào)告。首先對報(bào)告內(nèi)容框架進(jìn)行設(shè)計(jì),如圖4 所示。再針對每個部分進(jìn)行細(xì)化,最后對動態(tài)要素進(jìn)行抽取,完成報(bào)告模版制作。經(jīng)過檢驗(yàn)計(jì)算環(huán)節(jié)生成檢驗(yàn)圖片產(chǎn)品和接口文件,最后運(yùn)行報(bào)告生成程序,即可生成可發(fā)布的檢驗(yàn)報(bào)告。該環(huán)節(jié)流程如圖5 所示。
MetEva 采用分層思想,將函數(shù)自下而上分為4層:基礎(chǔ)函數(shù)層、檢驗(yàn)算法層、檢驗(yàn)產(chǎn)品層、透視分析層(尚待開展),見圖6。本文基于MetEva 實(shí)現(xiàn)數(shù)據(jù)收集過程中大部分功能和檢驗(yàn)計(jì)算全部功能。
(1)基礎(chǔ)函數(shù)層(meteva.base)位于流程最前端,主要實(shí)現(xiàn)數(shù)據(jù)收集功能。本層定義了站點(diǎn)和網(wǎng)格兩類數(shù)據(jù)結(jié)構(gòu),用于存儲各類預(yù)報(bào)和觀測數(shù)據(jù)。提供了用于上述兩種數(shù)據(jù)結(jié)構(gòu)的定義、初始化、賦值、轉(zhuǎn)換、輸入輸出等操作的方法。另外還提供了一些和時(shí)間格式轉(zhuǎn)換、文件路徑處理、文件格式轉(zhuǎn)換等工具類函數(shù)。
(2)檢驗(yàn)算法層(meteva.method)包括基于numpy數(shù)組作為基本輸入的檢驗(yàn)函數(shù),其中輸入的觀測和預(yù)報(bào)數(shù)據(jù)都不帶有時(shí)空坐標(biāo)信息,僅僅包含要素值??捎?jì)算檢驗(yàn)評分、繪制檢驗(yàn)圖表。該函數(shù)層提供了檢驗(yàn)技術(shù)和圖表繪制的最底層方法。
(3)檢驗(yàn)產(chǎn)品層(meteva.product)以基礎(chǔ)層定義的站點(diǎn)和網(wǎng)格類型數(shù)據(jù)作為輸入,由于數(shù)據(jù)自帶了時(shí)空坐標(biāo)信息,因此為預(yù)報(bào)分組或者在檢驗(yàn)結(jié)果中自動標(biāo)記類別提供了方便。面對檢驗(yàn)工作中難以分割的數(shù)據(jù)提取和檢驗(yàn)分析這一問題,在meteva.base和meteva.method 中函數(shù)的基礎(chǔ)上,將數(shù)據(jù)選取、分組、檢驗(yàn)計(jì)算、圖形繪制進(jìn)行封裝,極大的方便了檢驗(yàn)工作。
Docxtpl 是一個很強(qiáng)大的包,主要依賴兩個包:python-docx 和jinja2。python-docx 庫[12]可以用來創(chuàng)建docx 文檔,包含段落、分頁符、表格、圖片、標(biāo)題、樣式等幾乎所有word 文檔中能常用的功能。它的主要功能是用來創(chuàng)建文檔。jinja2[13]是基于python 的模版引擎,實(shí)現(xiàn)對模版中變量、表達(dá)式和標(biāo)簽的管理。Docxtpl(python-docx-template)將二者進(jìn)行結(jié)合,可以用來對docx 文檔進(jìn)行修改,諸如對文檔中的文本、圖片、富文本等幾乎所有存在于文檔中的都能替換。檢驗(yàn)報(bào)告生成技術(shù)采用docxtpl,具體實(shí)現(xiàn)見圖7。
初步建立了定時(shí)檢驗(yàn)業(yè)務(wù)流程,實(shí)現(xiàn)自動化運(yùn)行。截至2021 年12 月共形成檢驗(yàn)報(bào)告30 多份(15份正式發(fā)布,其它試驗(yàn)性應(yīng)用),彌合了產(chǎn)品“研發(fā)、生產(chǎn)、應(yīng)用、改進(jìn)”閉環(huán)中檢驗(yàn)的缺失(或不連續(xù)),為中心高質(zhì)量發(fā)展提供持續(xù)改進(jìn)支持。目前以基于站點(diǎn)的統(tǒng)計(jì)檢驗(yàn)方法為主,后續(xù)將在單站檢驗(yàn)、產(chǎn)品樣式、精細(xì)化(多維度),以及空間檢驗(yàn)、災(zāi)害性天氣過程檢驗(yàn)等方面開展工作。
該項(xiàng)工作開展過程中發(fā)現(xiàn)的問題和體會如下:
(1)數(shù)據(jù)規(guī)范化。以兩類產(chǎn)品為例,精細(xì)化產(chǎn)品以自有格式定義,使用時(shí)需要對照格式說明文檔編寫代碼進(jìn)行解析。通常需要獲取文檔、準(zhǔn)確理解、文件讀取三個步驟才能完成數(shù)據(jù)解析。在這個過程中,作者就遇到文檔更新問題、文字說明的理解問題?;诶走_(dá)的分鐘降水產(chǎn)品在格式方面采用了氣象領(lǐng)域比較常見和標(biāo)準(zhǔn)的NetCDF 格式,在文件讀取環(huán)節(jié)較為便捷。但是文件內(nèi)容存在不規(guī)范的地方,比如,變量名稱未遵循CF、全局屬性不準(zhǔn)確等。表面上看似小問題,但在使用上花費(fèi)的時(shí)間不可忽略。建議業(yè)務(wù)部門進(jìn)一步推進(jìn)數(shù)據(jù)標(biāo)準(zhǔn)化、規(guī)范化,保障全流程鏈條的便利性。
(2)檢驗(yàn)是靜態(tài)和動態(tài)結(jié)合的業(yè)務(wù)。靜態(tài)是指經(jīng)過一定時(shí)間形成了較為固化的檢驗(yàn)需求。比如檢驗(yàn)要素、時(shí)間段、區(qū)域、指標(biāo)等相對固定,功能實(shí)現(xiàn)后不再需要調(diào)整。動態(tài)是指檢驗(yàn)所需的參數(shù)是動態(tài)形成的。比如,檢驗(yàn)時(shí)間段取決于一次過程的開始和結(jié)束,檢驗(yàn)區(qū)域則依據(jù)過程影響區(qū)域確定,以及其它因素也可能成為需求,尤其在氣象服務(wù)上,不同行業(yè)受氣象影響的因子不同?;诿鞔_的需求,靜態(tài)檢驗(yàn)相對較為容易實(shí)現(xiàn),而動態(tài)檢驗(yàn)則需要在實(shí)踐中不斷進(jìn)行探索,是一個較為長期和具有挑戰(zhàn)的工作。
(3)工具是加速業(yè)務(wù)發(fā)展的利器。在MetEva 出現(xiàn)以前,難以形成檢驗(yàn)業(yè)務(wù)的連續(xù)性和常態(tài)化,很大一部分原因是缺乏一套完備的工具。產(chǎn)品研發(fā)人員只能臨時(shí)應(yīng)對,編寫的代碼不具備通用性,形成檢驗(yàn)零散化、突擊性的現(xiàn)狀。MetEva 的出現(xiàn)為我們解決這一問題帶來了可落地的方案。
致謝:感謝國家氣象中心提供的MetEva,為我們開展檢驗(yàn)提供了一套全流程的解決方案。