趙玉娟,張 輝
(1. 天津市氣象信息中心 天津 300074;2. 水利部海河水利委員會 天津 300170)
所謂地面氣象觀測月數據文件(簡稱 A文件),是配有自動氣象站的地面氣象觀測站根據自動觀測數據和人工錄入的觀測記錄及月報表封面、紀要、天氣氣候概況、備注等文字說明,經加工整理后形成的數據文件。[1]此類文件是氣象部門非常重要的一種數據形式,是許多應用軟件的基礎。該文件的常規制作方式經值班人員手工操作本地的氣象觀測軟件生成。[2]
對于國家級自動站,值班人員可利用測報軟件手工制作,但對于數量眾多且無人值守的區域自動站,手工制作方式不太適用??紤]到區域自動站僅有自動觀測項目,制作月報文件無需人工錄入信息,而且區域自動站的數據都已經進行了數據庫存儲,因此,筆者開發了一種基于數據庫數據批量、遠程制作區域自動站月報文件的軟件。該軟件在天津氣象局區域自動站數據整編工作中發揮了重要作用。本文將對該軟件的設計及相關使用經驗進行介紹。
地面氣象觀測月數據文件為文本文件,文件名由字母、數字、符號組成,其結構為“AIIiii-YYYYMM.TXT”,文件內容包括臺站參數、觀測數據、質量控制、附加信息 4部分。臺站參數是文件的第1條記錄,由12組數據構成,描述了臺站位置、臺站觀測方式、觀測項目等信息。觀測數據由氣壓、氣溫、風、降水等 20個地面要素構成,每個要素由指示碼、方式位及該月觀測數據組成,各要素對應的數據段內容與測站的實際觀測情況對應。質量控制部分位于觀測數據之后,根據文件首部的質量控制碼生成。附加信息包括“月報封面”、“紀要”、“本月天氣氣候概況”、“備注”4個數據段。文件的詳細格式要求參見文獻[3],文中不再贅述。
區域自動站屬于無人值守站點,數量較多,觀測項目皆為自動采集形式,各站的臺站參數、觀測項目存在差異,不同臺站月報文件在制作流程上相同,但內容因站而異。此外,各氣象部門存儲區域自動站數據的數據庫難免在命名、存儲位置、數據要素存儲形式上存在差別。鑒于上述原因,針對此類站點設計的月報制作軟件應具備以下功能:①能夠根據各區域自動站的不同特點靈活生成月報文件;②能夠批量制作月報文件,有效提高制作效率,降低人工操作強度;③數據源應支持靈活配置,便于適應不同氣象單位的數據庫在存儲形式上的差異;④用戶能夠按需設置制作月報文件的時間、站點條件。
區域站月報制作軟件的運行依賴于時間、站點、數據源及觀測數據 4類信息,總體包括站點信息維護、數據源信息維護、月報制作條件配置及月報制作4個模塊,系統結構如圖1所示。

圖1 系統結構圖Fig.1 System structure
2.1.1 站點信息維護模塊
為了按各站特點靈活制作月報,必須有站號、站名、站點地理位置、觀測項目等站點描述信息的支持。站點信息維護模塊負責站點信息增刪改等功能的實現。
2.1.2 數據源信息維護模塊
數據源信息維護模塊負責數據源連接信息和存儲信息增刪改等功能的實現。
2.1.3 月報制作條件配置模塊
時間和站點是制作月報的兩項決定因素,月報制作條件配置模塊主要負責時間和站點配置相關功能的實現。
2.1.4 月報制作模塊
月報制作是軟件的核心功能。月報制作模塊根據用戶配置的月報制作條件及數據源信息,動態獲取站點信息和觀測數據,按月報文件格式要求構造各數據段內容,生成月報文件。
在軟件構造領域,元數據被定義為:在程序中不是被加工的對象,而是通過其值的改變來改變程序行為的數據。本軟件的元數據包括時間、站點和數據源信息,時間信息為制作月報的年月信息,其他兩類元數據相對復雜,具體內容設計如下:
2.2.1 站點元數據信息
站點元數據信息分為觀測環境信息、觀測項目信息、操作輔助信息 3類。其中,觀測環境信息包括站號、經度、緯度、站名、站址環境、海拔高度、氣壓器高度、風速反應器高度;觀測項目信息包括觀測方式、要素數;操作輔助信息包括“是否制作月報”、“所屬縣區”?!耙財怠迸c觀測項目有關(比如觀測溫雨站點的要素數為 2),根據此字段可控制月報文件中的臺站參數及觀測數據段生成?!笆欠裰谱髟聢蟆睂傩杂靡钥刂圃聢笾谱鲿r站點的選擇范圍?!八鶎倏h區”屬性用以支持按縣區選定多個臺站。
2.2.2 數據源元數據信息
數據源元數據分為數據源連接信息和觀測數據存儲信息,其中數據源連接信息包括數據庫 IP、登錄賬號、登錄密碼、庫名,觀測數據存儲信息包括數據表名、觀測時間類型、氣壓相關屬性、氣溫相關屬性、相對濕度相關屬性、降水量屬性、風相關屬性、淺層地溫屬性、深層地溫屬性。月報文件雖涉及 20個地面要素,但區域站多數只觀測常規的壓溫雨濕風,少數有淺、深層地溫觀測。因此,觀測數據存儲信息中僅設計了與其相關的觀測項目。此外,為了適應北京時、世界時兩種觀測時間,設計了“觀測時間類型”屬性。
月報文件制作包括獲取配置信息和制作 A文件兩大環節,其中制作 A文件環節又分為提取觀測數據、構造文件名、生成臺站參數、生成觀測數據段、生成質控及附加信息段 5步,詳細流程如圖 2所示。A文件中觀測數據按要素排列,而非按時間排列,因此每構造一個要素數據段都需篩選一遍相應月份的數據。獲取配置信息環節包括獲取用戶配置的時間、數據源、站點信息,該環節獲取的信息是后續步驟正確執行的基礎。

圖2 月報文件制作流程Fig.2 Flowchart of monthly data file making
軟件運行環境為 Windows系統,利用Delphi實現開發,[4]站點及數據源信息采用 Access數據庫存儲,觀測數據源支持 SQL-server數據庫,數據庫訪問利用ADO技術實現。
本軟件為用戶提供增刪改數據源信息和站點信息的操作界面,對于初次生成數據源信息和站點信息提供文件導入和界面錄入兩種方式。配置月報制作條件時,對于時間信息可利用日歷控件選擇制作的時段(起始年月-結束年月),站點選擇支持按縣區選擇站點和直接錄入站號選擇兩種方式,直接錄入站號支持寫入多個站號,每個站號一行。制作完成的月報文件可選擇按站號建目錄存儲和同一目錄存儲兩種方式。
為了一次批量制作多站多月的 A文件,需將多個數據表進行整合,區域自動站數量多,整合后數據量相對較大。以 224個區域自動站為例,一個測站每日有 24條觀測記錄,整合一年的數據表記錄可達1,962,240條。以檢索單個站點一日的數據為例,在不建立索引的情況下,檢索 SQLServer 2000中的數據表一次耗費將近15 s,而在日期時間上建立非聚集索引之后,僅需對索引進行掃描,執行時間不足 1,s,查詢速度提高了將近15倍。
制作 A文件時需要不斷從數據庫中獲取數據,對于數據量較大的數據表,優化數據庫查詢環節的效率至關重要。鑒于上述查詢對比,我們在制作A文件時采取了如下優化手段:①觀測數據以年為單位分表存儲;②在查詢常用的檢索列“日期時間”上建立非聚集索引。
本文介紹的區域自動站月報制作軟件實現了基于數據庫的區域自動站月報文件批量制作,在任何可訪問自動站數據庫的環境下都可使用,擺脫了原有制作方式對觀測軟件的依賴,降低了對制作環境的要求,為用戶制作區域站月報文件提供了一種更為靈活、便捷的手段?!?/p>
[1] 中國氣象局. 地面氣象觀測規范[M]. 北京:氣象出版社,2003.
[2] 陳英,王荷平,張彩緋. 區域自動站報表制作方法[J]. 浙江氣象,2011,32(1):34-38.
[3] 中國氣象局. 地面氣象觀測數據文件和記錄簿表格式[M]. 北京:氣象出版社,2005.
[4] 劉瑞新. Delphi數據庫程序設計教程[M]. 北京:機械工業出版社,2004.