李淑靜,卿光勇,王錫良
(1.黑水縣氣象局,四川 黑水 623500;2.阿壩州氣象局,四川 馬爾康 624000)
氣象服務是指氣象部門基于大氣科學的理論與技術,根據社會、經濟、軍事、生態、防災減災等需要,向社會提供的各類工作[1,2]。氣象服務是政府公共服務體系的重要組成部分[3],也是中國氣象事業的立業之本[4-7]。中國的氣象服務體系由決策氣象服務、公眾氣象服務、專業專項氣象服務和氣象科技服務構成[8-10]。決策氣象服務的目的是在第一時間讓黨政領導和決策部門獲得科學、準確、及時和有決策參考價值的氣象信息[11,12]。其中,對突發性災害性的短時強降水的預報預警氣象服務的及時性要求更高,也是最重要的[13,14]。在汛期,及時的實時雨情信息服務可以為決策部門防災減災贏得寶貴時間。
四川省三級預報業務平臺[15]Web 服務器,提供了全省范圍內氣象站的雨情信息,工作人員可以通過該平臺查詢某區域范圍內指定時間段內的雨情數據,當發現某氣象站的降水量達到或超過規定的閾值時,就必須立刻對災害應急等決策部門做實時的雨情服務,供決策部門參考,為保護人民群眾的生命財產安全做出提前的災害預警。在三級預報業務平臺的前端頁面,從降水數據的統計時間段、氣象站所屬的行政區域范圍的選擇,到將查詢出來的雨量數據導出到Excel格式的文檔中進行后續處理,都需要手工操作,流程繁瑣、效率低。更重要的是,這樣的人工不定時操作達不到及時掌握各地降水量實況大小的目的。如果用軟件來實現對降水數據的實時監測,及時報警,將極大地減輕值班人員的工作強度,提高工作效率。
實現軟件對三級預報業務平臺Web 服務器上的降水量數據進行監測,也就是用編程來模擬瀏覽器訪問該Web 服務器時得到降水數據的全過程。在這一過程中,使用谷歌瀏覽器Chrome 開發者工具[16-18]對客戶端和服務器之間的交互信息進行偵測,得到開發軟件所需的各種信息,包括客戶端需要向服務器提供什么樣的參數和數據、請求資源時采用什么樣的方法,以及從服務器返回客戶端的數據格式等。基于Quartz.NET[19-22]開發雨情監測報警程序,配合Aspose.Cells for .NET 自動生成決策氣象服務所需的Excel格式的雨情通報文檔[23,24]。
Chrome 開發者工具是一套內置于谷歌瀏覽器Chrome 中的Web 開發和調試工具,可用來對網站進行分析、調試和迭代。該工具包含了Elements、Con?sole、Sources、Network、Performance、Memory 等面板。當瀏覽器向服務器發起頁面請求后,Network 面板將記錄客戶端和服務器之間詳細的網絡請求和應答信息,包括請求的狀態、資源的大小、類型、耗費時間、Request請求和Response 響應等。
Quartz.NET 是一個開源、輕量、功能強大的作業調度框架,是Java 作業調度系統Quartz 在.Net 平臺的實現,能夠用它來為執行一個作業而創建簡單的或復雜的作業調度,既能執行重復的作業任務,也支持指定例外的日歷,從小型應用到大型企業級系統都能適用。它具有數據庫支持、插件、集群、支持cron-like 表達式等特性,它實現了作業和觸發器的多對多關系,還能把多個作業與不同的觸發器關聯。
Aspose.Cells for .NET 是.NET 平臺下專業的電子表格控件,即使在沒有安裝Microsoft Excel 或Mi?crosoft office 的工作環境中,也能對XLS、XLSX、HT?ML、CSV、PDF 等格式的文件進行生成、編輯、轉換等操作。允許軟件開發人員從其自己的應用程序中操縱和轉換電子表格文件,以及將電子表格呈現為各種圖像和固定布局的文件格式。
Quartz.Net 框架包括幾個基本的概念:調度器(Scheduler)、被調度的任務類型(Job)、JobDetail(具體的可執行調度任務)和觸發器(Trigger)。調度器是Quartz.NET 框架的核心,負責管理Quartz.NET 應用運行環境。Job 是作業的類型,描述了作業是如何執行的。JobDetail 是Job 的實例,它包含了該實例的執行所需要的數據。Trigger 用于定義任務調度的時間觸發規則。
任務調度器在應用程序啟動時被創建。實例化一個調度器工廠SchedulerFactory,通過GetScheduler()方法從調度器工廠里得到調度器實例Scheduler。創建Job 任務并實例化JobDetail,在創建Trigger 觸發器后,JobDetail 和Trigger 注冊到Scheduler 中,就可以被Scheduler 容器調度了。最后,根據觸發器規劃執行調度任務。在觸發器被觸發后,所有要完成的工作都在GetRainJob 作業中完成,該作業任務實現了IJob 接口的Execute 方法。實現雨量監測報警,并結合Aspose.Cells for .NET 自動生成雨情通報文檔的功能都在該方法中完成(圖1)。

圖1 雨情監測報警程序運行原理
運行Chome 瀏覽器,打開Chrome 開發者工具,切換到Network 面板。在瀏覽器的地址欄輸入并訪問四川省氣象局省市縣三級預報業務平臺在內網的網址:http://10.194.17.32/,此時,在開發者工具的請求列表中列出了偵測到的所有資源,包括網址、圖片、json 等相關信息。點擊該列表左邊的Name 列中和該平臺相關的網址,在右側的Headers 標簽頁中顯示了和該資源相關聯的HTTP 標頭信息,包括請求的URL 地址、請求方法、請求狀態、服務器返回客戶端數據的類型等。在Response 標簽頁則顯示了從服務器返回的HTTP 響應數據是XML 格式的文本。這些信息為開發雨情監測報警程序提供了依據(圖2)。

圖2 Chrome 開發者工具監測瀏覽器和服務器之間的通訊
建立.NET 項目,在工程中添加對Quartz.dll 和Aspose.Cells.dll文件的引用,并引入命名空間:

為了實現對任務的調度,在程序啟動時就需要基于Quartz.NET 框架,實例化并啟動調度器Sched?uler,在創建觸發器Trigger 和Job 任務并實例化Job?Detail后,與調度器相關聯。代碼如下。

在GetRainJob 作業的Execute 方法,實現了降水數據監測報警和雨情通報文檔的自動生成。模擬瀏覽器向服務器發起請求的主要代碼如下。


軟件最終生成的Excel 格式雨情通報文檔(部分)如圖3 所示。

圖3 Excel格式的雨情通報文檔
在瀏覽器訪問省市縣三級預報業務平臺查詢降水數據時,利用Chrome 開發者工具抓取客戶端和服務器之間詳細的請求和應答信息,為開發基于Quartz.NET 的雨情監測報警程序提供了依據。該程序不但能實時監測特定時間段、特定區域范圍內各個氣象站的累計降水量數據及時報警,而且還能結合Aspose.Cells for .NET 實現雨情通報文檔的自動化生成,極大地減輕了工作人員的勞動強度,提高了工作效率,其高效、及時和自動化的優勢在汛期繁重的氣象服務工作中發揮了重要的作用。
該程序還可以結合實際的工作需要,對其功能進行擴展開發。比如,結合電信網關和微信,向相關決策部門自動發送實時雨情手機短信,并在微信平臺同步發布,以進一步發揮其自動、及時、高效的優勢在氣象服務工作中的作用。