李航 侯忠新 王宜明 青島市氣象局,山東 青島 266003
氣象特種觀測資料處理系統的設計
李航 侯忠新 王宜明 青島市氣象局,山東 青島 266003
氣象特種觀測資料具有數據量大,資料來源多樣、資料格式復雜等特點。為了使特種觀測資料得到及時有效地利用,采用模塊化的設計方法,將各類氣象特種觀測資料進行整編入庫,進行數據的持久化管理,并開發基于web的檢索查詢平臺,提供方便快捷的資料查詢功能。
氣象特種觀測;整編入庫;檢索查詢
我國氣象特種觀測項目正在不斷開展,特種觀測數據也隨之不斷的積累。目前各個特種觀測項目一般都帶有自己的配套軟件,數據格式多種多樣,編碼規范不盡相同。由于缺乏有效的數據管理,不利于氣象特種觀測資料的查詢分析和應用。為此根據青島市氣象局目前開展的酸雨觀測、紫外線觀測、負離子觀測和水泥地面溫度觀測等氣象特種觀測項目開發了氣象特種觀測資料處理系統,對各類氣象特種觀測資料進行整編入庫和持久化管理,并采用b/s架構設計發布平臺,供相關人員進行檢索查詢。
系統數據庫采用SQLServer2000,并利用VB編程語言按模塊分別為各類氣象特種觀測資料編寫后臺入庫程序。
1.1 系統架構
系統架構及主要功能模塊設計見圖1。

圖1 氣象特種觀測資料處理系統架構
1.2 數據庫設計

圖2 查詢界面

圖3 顯示界面
數據庫的設計充分考慮今后可擴展性和易維護性。主要包括8個數據表,分別為:酸雨數據表、紫外線數據表、負離子數據表、水泥地面溫度數據表這四個氣象特種觀測項目的站點屬性信息表。站點屬性表存放站點屬性信息,如站號、站名、經緯度以及傳感器的相關信息等,數據表存放氣象特種觀測數據,根據觀測項目的不同劃分了相應的字段。以酸雨數據表為例,包括降水的起始終止日期、ph值、電導率、降水量、溫度、風速風向等實時觀測數據,表之間的設計符合第三范式,減少了數據冗余。
表1是具體的表結構范例,其中標題為字段中文名稱;字段名稱為字段英文名稱;類型為字段數據類型;大小為字段的長度(精度);非空表示該字段可否有空值;對于自動增長的字段,或系統內部處理的字段,標注只讀(R)。

表1 酸雨數據表(sydata)
1.3 數據整合及入庫
氣象特種觀測資料的原始數據大都存放在各類文本文件中,需要對這些文本文件進行分析、編制程序導出需要的數據資料并進行定時入庫操作。采用基于VB和ADO數據庫接入技術開發自動、實時入庫模塊,對不同數據來源和數據格式進行處理,轉換成設計好的數據格式入庫。該模式定時自動啟動運行,保證數據的實時入庫。
以酸雨觀測數據為例。酸雨觀測數據文件每月一份,存放本月所有降水的酸雨觀測數據。打開文件,取出該月的所有降水記錄,找到各條記錄中所需的字段如降水的起始終止日期、ph值、電導率、降水量、溫度、風速風向等,通過VB字符串函數的處理將其剝離出來,再對這些按氣象規范定義所記錄的特殊字符代碼按照各自的轉換公式進行處理,將其轉換成常見觀測要素數值。
入庫操作利用了A D O組件中的Recordset對象進行處理。將每條記錄時間先與當前時間進行比較,若大于當前時間,說明數據有誤,丟掉不用直接進入下一條記錄處理。若小于當前時間,再與庫中的記錄進行比較,如果比最新一次入庫的時間大,說明是新紀錄,則直接入庫,然后進行下一條記錄的判斷。如果比最新一次的入庫的時間小,則說明該條記錄已經入過庫,丟掉不用,然后進行下一條記錄的判斷,直至該月全部記錄入庫。
資料處理過程在后臺定時自動執行,以保證系統數據庫內的數據與最新觀測到的數據同步。
2.1 平臺功能設計
平臺按照氣象特種觀測資料的種類分成了四個部分:水泥地面溫度觀測,負離子觀測,紫外線觀測和酸雨觀測。各類資料按資料內容提供不同的查詢條件接口。條件查詢的功能非常豐富,除了可以選擇時間段查詢記錄之外,還可以按照設定的觀測資料的要素條件篩選出符合需求的記錄。通過查詢界面(圖2)進行查詢條件設定并進行查詢操作便可以在顯示界面(圖3)顯示出所需的特種觀測資料。
2.2 檢索查詢及顯示設計方法

圖4 檢索查詢顯示流程圖
平臺采用基于Java的Jsp+Servlet模式,檢索查詢顯示流程圖見圖4。采用MVC三層的邏輯架構,其中M為 Module,應用對象,將實際的業務對象進行封裝,使之成為一個獨立的邏輯對象,并包含實際業務對象的諸多屬性。V為View層,即展現給用戶的交互頁面。C為Control層,定義了用戶界面對于用戶輸入的響應方式。以酸雨觀測為例,一次將數據庫酸雨觀測表中的各字段封裝成Module,實現了對其進行封裝,該資料的每個屬性都有相應的讀取和寫入操作。在以后的操作中,就可以以Module為單位,即酸雨觀測表對象為單位來大批量、方便的傳遞酸雨觀測資料數據。
View層主要作用是“用戶交互”,即接收用的指令并根據指令來進行內部操作后將結果反饋給用戶。其間需要進行安全性檢查,例如在某些期望輸入數值的部分由于用戶誤操作輸入了字符而導致程序運行異常。因此需要在該有期望部分增加安全檢查機制。
在程序內部,用戶提交請求后由Control層來接管用戶請求,進行后續操作,具體則是由Servlet來完成具體工作,Servlet運行于服務器端,具體工作流程是對請求的Web頁的各個字段的值(value)進行接收,并進行相關的轉化和必要的檢查。進行完上述操作和檢查后,Servlet即可來根據提交的各種選擇條件來拼出SQL語句。
在進行查詢數據庫操作方面,本系統采用了比較先進的“連接池”來提供與數據庫的連接服務。該解決方案是在應用程序啟動時建立足夠多的數據庫連接,并將這些連接組成一個連接池,由應用程序動態的對池中的連接進行申請、使用和釋放。對多于連接池中連接數的并發請求,應在請求隊列中排隊等待。并且應用程序可以根據池中連接的使用率,動態增加或減少池中的連接數。該技術盡可能的重用了消耗內存的資源,大大節省了內存,提高了服務器的服務效率,從而能夠提供更快的響應和支持更多的并發請求。
獲取了數據庫連接即可對數據庫進行操作,查詢結果按照酸雨資料的Module進行數據封裝,最后顯示到用戶面前。
隨著國家現代化建設對氣象需求的不斷增長,氣象特種觀測項目也將越來越多。本系統通過建設數據庫和Web發布平臺,可以對目前青島市氣象局開展的氣象特種觀測項目資料整編入庫并實現靈活方便的檢索查詢功能,這對于氣象特種觀測資料更好地應用于城市環境服務具有重要意義。本系統目前已經處于業務運行階段,但是還有許多需要改進的地方,例如完善數據安全性檢查、為數據查詢語句編寫存儲過程來提高程序應用效率以及提供更友好的擴展功能接口,增加新的特種觀測項目如沙塵暴觀測等。
[1]中國氣象局.酸雨觀測業務規范[S].北京:氣象出版社,2005;27~77
[2]飛思科技產品研發中心. JSP 教程. 北京:電子工業出版社,2002;231 ~293
10.3969/j.issn.1001-8972.2011.24.004
李航 青島市氣象局 工程師 工程碩士。