韓仲強
(內蒙古自治區氣象信息中心,內蒙古 呼和浩特 010051)
農業氣象學是研究農業生產對象和過程與氣象條件之間的相互關系,以利用、創造有利并抗避不利氣象條件為目的,為農業的高產、優質、低消耗而服務的一門學科。隨著農業科學技術的飛速發展,我國農業已進入了一個高產、優質、高效、生態、安全為發展方向的新階段,農業對氣象服務提出了更高的要求,迫切需要農業氣象為現代農業的發展提供時效更快、內容更多、水平更高的、針對性更強的服務產品。然而,當前的農業氣象觀測技術手段、時效遠不能滿足現代農業氣象業務和服務發展需求[1]。
內蒙古自治區幅員遼闊,有豐富的氣候資源與土地資源,農作物種植多樣化,是我國農業生產大省。農業氣象觀測數據包含作物生長發育、天然牧草生長狀況、自然物候、土壤水分等觀測內容,是農業氣象的基礎。通過農業氣象觀測可以鑒定農業氣象條件對作物生長發育和產量形成以及品質影響,為農業氣象情報、預報,以及農作物的氣候條件評價等提供理論依據,為高產、優質、高效的農業生產提供服務。因此對農業氣象觀測數據進行質量控制十分有必要。
目前在農業氣象觀測數據質量控制過程中,主要由農業氣象資料審核員依托AgMODOS(農業氣象測報業務系統)軟件,每年對各臺站上傳的C文件[2]進行集中審核。上述質量控制過程不僅時效性差,而且耗費時間多,不能及時做到農業氣象觀測數據質量控制,增加了工作量。為有效解決上述問題,推進觀測自動化觀測進程與現行業務流程相適應,完成觀測業務轉型,因此有必要開發一個高精度、高時效性的自動數據質量控制系統。
農業氣象數據自動質量控制系統基于CIMISS數據環境,通過獲取CIMISS數據庫中由各臺站上傳的農業氣象觀測數據,按照《農業氣象觀測規范》[3](后簡稱《規范》)建立和優選農業氣象數據質量控制方法,開展對全區29個農業氣象觀測站所觀測的牧草發育期、牧草生長高度、牧草產量、牧草蓋度、作物生長發育期、干物質與葉面積測定、灌漿速度等數據的質量控制,開發自動質量控制系統并將質控后的疑誤信息通過推送至臺站,實現疑誤數據及時處理與更正。
農業氣象觀測數據質量控制系統邏輯結構上可分為基礎層、數據層以及應用層3層(圖1)。基礎層主要提供農業氣象觀測數據質量控制系統開發運行環境、CIMISS中的Oracle數據庫及基于Python開發的相關質量控制方法。數據層主要處理牧草發育期、牧草生長高度、牧草產量、牧草蓋度、作物生長發育期、干物質與葉面積測定、灌漿速度等農業氣象觀測數據,采用Oracle關系型數據庫進行存儲和管理。應用層是與省級數據處理人員與臺站人員進行業務交互的平臺,MUSIC接口為對外數據服務的統一接口。

圖1 農業氣象觀測數據質量控制系統總體架構
農業氣象數據自動質量控制系統采用Python語言進行開發,基于Orcale數據庫管理系統對本系統中的數據持久化進行操作。
Python由荷蘭數學和計算機科學研究學會的Guido van Rossum于1990年代初設計,作為一門叫做ABC語言的替代品。由于其具有簡單易學、用途廣泛、可移至性以及可擴展性、可擴充性等優點,Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平臺上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用于獨立的、大型項目的開發。
在對數據進行質量控制的過程中,隨著質量控制進程的進行,需要不斷地對被檢數據設置或修改質量控制碼,簡稱QC碼。QC碼的規定如下,見表1。

表1 質量控制碼規定
對AgoMDOS上傳的農業氣象觀測數據采用完整性檢查、數據小數位檢查、值域檢查、內部一致性檢查[4,5]。農業氣象觀測數據對應的要素表見《規范》發育期觀測部分。表2給出了農業氣象觀測數據中各要素實施的檢查項目,圖2給出了數據處理和質量控制流程圖。

表2 快速質量控制對報文數據中各要素實施的檢查步驟

圖2 農業氣象觀測數據質量控制流程圖
作物部分質量控制對象包含作物生長發育期、干物質與葉面積測定、灌漿速度共三張數據表。牧草部分質量控制對象包含牧草發育期、牧草生長高度、牧草產量、牧草蓋度共4張數據表。對上述農業氣象觀測數據主要進行完整性檢查、數據小數位檢查、值域檢查以及內部一致性檢查。
3.2.1 完整性檢查。完整性檢查指對原始觀測數據的種類、項目進行檢查,以確保觀測數據完整無遺漏。
對于作物部分的觀測數據,完整性檢查應包括作物觀測基礎數據、作物發育期觀測數據、作物密度觀測數據、作物葉面積與干物質質量觀測數據以及灌漿速度觀測數據。其中作物觀測基礎數據包括:農業氣象觀測臺站名稱、農業氣象觀測臺站號、觀測作物名稱、觀測作物品種名稱、觀測作物成熟年份。作物葉面積和干物質重量觀測包括作物名稱、旬內作物發育名稱、生長率、含水率、葉面積指數。灌漿速度觀測包括作物名稱、含水率、千粒重。各類作物的發育期觀測要求及觀測項目見《規范》發育期觀測部分。作物密度觀測項目及觀測時間見《規范》生長狀況測定部分。對于牧草部分的觀測數據,完整性檢查應包括牧草發育期觀測數據、牧草生長高度觀測數據、牧草產量觀測數據、牧草蓋度觀測數據。其中牧草發育期觀測數據應包括牧業氣象觀測臺站名稱、牧業氣象觀測臺站號、(動)物名稱/牧草名稱、旬內作物發育期名稱、發育期百分率。牧草生長高度觀測數據應包括牧草名稱、植(動)物名稱/牧草名稱、植株高度。牧草產量觀測數據應包括牧草名稱、植(動)物名稱/牧草名稱、干重、鮮重、干鮮比(計算方法為干重/鮮重)×100%。牧草蓋度觀測數據應包括覆蓋度、草層狀況評定、采食率、采食度。
根據《規范》中要求的觀測項目無相應觀測值、調查值或記載值的為缺測數據時,賦質控碼為8,不再作為后續質量控制步驟中的質量控制對象或參考數據,并作為疑誤數據及時告知臺站進行修正或補發。否則賦為質控碼0,進入下一步檢查。
3.2.2 數據小數位檢查。《規范》中明確要求了各類觀測要素的小數位,按照《規范》中附錄D中規定對主要作物觀測要素值的小數位進行檢查,對于小數位不正確的數據,質控碼置為2,標記為錯誤數據并告知臺站進行修改。
3.2.3 數據值域檢查。值域檢查指對農業氣象觀測數據進行氣候學、生態學的閾值檢查。在《規范》中明確了各類觀測作物以及牧草的閾值范圍,對于超出閾值范圍的觀測值,系統將該條記錄的質控碼置為2,并反饋臺站進行數據修正。具體質控方法如下:
屬于下列值域范圍的數據為錯誤數據:(1)作物生長發育普遍期生長高度大于其上限值(主要作物各發育期生長高度最大值見《規范》中附錄E);(2)作物生長發育普遍期密度值大于其上限值(主要作物各發育期密度最大值見《規范》中附錄F);(3)作物生長狀況評定記錄不為“1”,“2”,“3”;(4)草層狀況評定記錄不為“1”,“2”,“3”,“4”,“5”。
屬于下列值域范圍的數據為可疑數據:(1)作物各發育期生長高度值大于其最大值而小于其上限值(主要作物各發育期生長高度最大值見《規范》中附錄E);(2)作物各發育普遍期密度值大于其最大觀測值而小于其上限值(主要作物各發育期密度最大值見《規范》中附錄F);除a),b)所列要素之外暫不做值域檢查。
3.2.4 內部一致性檢查。內部一致性指同一時間觀測的農業氣象要素記錄之間的關系必須符合一定規律的檢查。農業氣象觀測數據未通過以下一致性檢查時,相應數據為可疑數據,質控碼置為1,具體質控方法如下:(1)前一發育期觀測日期在后一發育期觀測日期之前;(2)前一發育植株生長高度小于或等于后一發育期植株生長高度。
針對于文件上傳不及時、不規范出現的上報文件不完整、農業氣象觀測數據審核不及時等情況,本文以Python為開發工具,基于CIMISS數據環境,開發并建立了一套農業氣象觀測數據自動質量控制系統,該系統提高了農業氣象觀測數據審核效率,極大地減小了省級資料審核人員的工作負擔,并且對于各單位的用戶來說可以及時獲取經過質量控制后的農業氣象觀測數據,這對于提高農業生產,指導農事活動具有重要意義。
本文開發的質量控制系統目前僅針對于農業氣象中的作物與牧草兩部分內容進行了質量控制,對于其他觀測數據例如自然物候觀測、農業氣象災害觀測等內容暫時未進行自動質量控制。本文所采取的質量控制方法目前只有完整性檢查、數據小數位檢查、數據值域檢查、內部一致性檢查共4種方法,后續應該考慮加入更多方法進行數據質量控制進行優化。