李淑靜,卿光勇,王錫良
(1.黑水縣氣象局,四川 黑水 623500;2.阿壩州氣象局,四川 馬爾康 624000)
氣象服務(wù)是指氣象部門基于大氣科學(xué)的理論與技術(shù),根據(jù)社會、經(jīng)濟、軍事、生態(tài)、防災(zāi)減災(zāi)等需要,向社會提供的各類工作[1,2]。氣象服務(wù)是政府公共服務(wù)體系的重要組成部分[3],也是中國氣象事業(yè)的立業(yè)之本[4-7]。中國的氣象服務(wù)體系由決策氣象服務(wù)、公眾氣象服務(wù)、專業(yè)專項氣象服務(wù)和氣象科技服務(wù)構(gòu)成[8-10]。決策氣象服務(wù)的目的是在第一時間讓黨政領(lǐng)導(dǎo)和決策部門獲得科學(xué)、準(zhǔn)確、及時和有決策參考價值的氣象信息[11,12]。其中,對突發(fā)性災(zāi)害性的短時強降水的預(yù)報預(yù)警氣象服務(wù)的及時性要求更高,也是最重要的[13,14]。在汛期,及時的實時雨情信息服務(wù)可以為決策部門防災(zāi)減災(zāi)贏得寶貴時間。
四川省三級預(yù)報業(yè)務(wù)平臺[15]Web 服務(wù)器,提供了全省范圍內(nèi)氣象站的雨情信息,工作人員可以通過該平臺查詢某區(qū)域范圍內(nèi)指定時間段內(nèi)的雨情數(shù)據(jù),當(dāng)發(fā)現(xiàn)某氣象站的降水量達到或超過規(guī)定的閾值時,就必須立刻對災(zāi)害應(yīng)急等決策部門做實時的雨情服務(wù),供決策部門參考,為保護人民群眾的生命財產(chǎn)安全做出提前的災(zāi)害預(yù)警。在三級預(yù)報業(yè)務(wù)平臺的前端頁面,從降水?dāng)?shù)據(jù)的統(tǒng)計時間段、氣象站所屬的行政區(qū)域范圍的選擇,到將查詢出來的雨量數(shù)據(jù)導(dǎo)出到Excel格式的文檔中進行后續(xù)處理,都需要手工操作,流程繁瑣、效率低。更重要的是,這樣的人工不定時操作達不到及時掌握各地降水量實況大小的目的。如果用軟件來實現(xiàn)對降水?dāng)?shù)據(jù)的實時監(jiān)測,及時報警,將極大地減輕值班人員的工作強度,提高工作效率。
實現(xiàn)軟件對三級預(yù)報業(yè)務(wù)平臺Web 服務(wù)器上的降水量數(shù)據(jù)進行監(jiān)測,也就是用編程來模擬瀏覽器訪問該Web 服務(wù)器時得到降水?dāng)?shù)據(jù)的全過程。在這一過程中,使用谷歌瀏覽器Chrome 開發(fā)者工具[16-18]對客戶端和服務(wù)器之間的交互信息進行偵測,得到開發(fā)軟件所需的各種信息,包括客戶端需要向服務(wù)器提供什么樣的參數(shù)和數(shù)據(jù)、請求資源時采用什么樣的方法,以及從服務(wù)器返回客戶端的數(shù)據(jù)格式等?;赒uartz.NET[19-22]開發(fā)雨情監(jiān)測報警程序,配合Aspose.Cells for .NET 自動生成決策氣象服務(wù)所需的Excel格式的雨情通報文檔[23,24]。
Chrome 開發(fā)者工具是一套內(nèi)置于谷歌瀏覽器Chrome 中的Web 開發(fā)和調(diào)試工具,可用來對網(wǎng)站進行分析、調(diào)試和迭代。該工具包含了Elements、Con?sole、Sources、Network、Performance、Memory 等面板。當(dāng)瀏覽器向服務(wù)器發(fā)起頁面請求后,Network 面板將記錄客戶端和服務(wù)器之間詳細的網(wǎng)絡(luò)請求和應(yīng)答信息,包括請求的狀態(tài)、資源的大小、類型、耗費時間、Request請求和Response 響應(yīng)等。
Quartz.NET 是一個開源、輕量、功能強大的作業(yè)調(diào)度框架,是Java 作業(yè)調(diào)度系統(tǒng)Quartz 在.Net 平臺的實現(xiàn),能夠用它來為執(zhí)行一個作業(yè)而創(chuàng)建簡單的或復(fù)雜的作業(yè)調(diào)度,既能執(zhí)行重復(fù)的作業(yè)任務(wù),也支持指定例外的日歷,從小型應(yīng)用到大型企業(yè)級系統(tǒng)都能適用。它具有數(shù)據(jù)庫支持、插件、集群、支持cron-like 表達式等特性,它實現(xiàn)了作業(yè)和觸發(fā)器的多對多關(guān)系,還能把多個作業(yè)與不同的觸發(fā)器關(guān)聯(lián)。
Aspose.Cells for .NET 是.NET 平臺下專業(yè)的電子表格控件,即使在沒有安裝Microsoft Excel 或Mi?crosoft office 的工作環(huán)境中,也能對XLS、XLSX、HT?ML、CSV、PDF 等格式的文件進行生成、編輯、轉(zhuǎn)換等操作。允許軟件開發(fā)人員從其自己的應(yīng)用程序中操縱和轉(zhuǎn)換電子表格文件,以及將電子表格呈現(xiàn)為各種圖像和固定布局的文件格式。
Quartz.Net 框架包括幾個基本的概念:調(diào)度器(Scheduler)、被調(diào)度的任務(wù)類型(Job)、JobDetail(具體的可執(zhí)行調(diào)度任務(wù))和觸發(fā)器(Trigger)。調(diào)度器是Quartz.NET 框架的核心,負責(zé)管理Quartz.NET 應(yīng)用運行環(huán)境。Job 是作業(yè)的類型,描述了作業(yè)是如何執(zhí)行的。JobDetail 是Job 的實例,它包含了該實例的執(zhí)行所需要的數(shù)據(jù)。Trigger 用于定義任務(wù)調(diào)度的時間觸發(fā)規(guī)則。
任務(wù)調(diào)度器在應(yīng)用程序啟動時被創(chuàng)建。實例化一個調(diào)度器工廠SchedulerFactory,通過GetScheduler()方法從調(diào)度器工廠里得到調(diào)度器實例Scheduler。創(chuàng)建Job 任務(wù)并實例化JobDetail,在創(chuàng)建Trigger 觸發(fā)器后,JobDetail 和Trigger 注冊到Scheduler 中,就可以被Scheduler 容器調(diào)度了。最后,根據(jù)觸發(fā)器規(guī)劃執(zhí)行調(diào)度任務(wù)。在觸發(fā)器被觸發(fā)后,所有要完成的工作都在GetRainJob 作業(yè)中完成,該作業(yè)任務(wù)實現(xiàn)了IJob 接口的Execute 方法。實現(xiàn)雨量監(jiān)測報警,并結(jié)合Aspose.Cells for .NET 自動生成雨情通報文檔的功能都在該方法中完成(圖1)。
圖1 雨情監(jiān)測報警程序運行原理
運行Chome 瀏覽器,打開Chrome 開發(fā)者工具,切換到Network 面板。在瀏覽器的地址欄輸入并訪問四川省氣象局省市縣三級預(yù)報業(yè)務(wù)平臺在內(nèi)網(wǎng)的網(wǎng)址:http://10.194.17.32/,此時,在開發(fā)者工具的請求列表中列出了偵測到的所有資源,包括網(wǎng)址、圖片、json 等相關(guān)信息。點擊該列表左邊的Name 列中和該平臺相關(guān)的網(wǎng)址,在右側(cè)的Headers 標(biāo)簽頁中顯示了和該資源相關(guān)聯(lián)的HTTP 標(biāo)頭信息,包括請求的URL 地址、請求方法、請求狀態(tài)、服務(wù)器返回客戶端數(shù)據(jù)的類型等。在Response 標(biāo)簽頁則顯示了從服務(wù)器返回的HTTP 響應(yīng)數(shù)據(jù)是XML 格式的文本。這些信息為開發(fā)雨情監(jiān)測報警程序提供了依據(jù)(圖2)。
圖2 Chrome 開發(fā)者工具監(jiān)測瀏覽器和服務(wù)器之間的通訊
建立.NET 項目,在工程中添加對Quartz.dll 和Aspose.Cells.dll文件的引用,并引入命名空間:
為了實現(xiàn)對任務(wù)的調(diào)度,在程序啟動時就需要基于Quartz.NET 框架,實例化并啟動調(diào)度器Sched?uler,在創(chuàng)建觸發(fā)器Trigger 和Job 任務(wù)并實例化Job?Detail后,與調(diào)度器相關(guān)聯(lián)。代碼如下。
在GetRainJob 作業(yè)的Execute 方法,實現(xiàn)了降水?dāng)?shù)據(jù)監(jiān)測報警和雨情通報文檔的自動生成。模擬瀏覽器向服務(wù)器發(fā)起請求的主要代碼如下。
軟件最終生成的Excel 格式雨情通報文檔(部分)如圖3 所示。
圖3 Excel格式的雨情通報文檔
在瀏覽器訪問省市縣三級預(yù)報業(yè)務(wù)平臺查詢降水?dāng)?shù)據(jù)時,利用Chrome 開發(fā)者工具抓取客戶端和服務(wù)器之間詳細的請求和應(yīng)答信息,為開發(fā)基于Quartz.NET 的雨情監(jiān)測報警程序提供了依據(jù)。該程序不但能實時監(jiān)測特定時間段、特定區(qū)域范圍內(nèi)各個氣象站的累計降水量數(shù)據(jù)及時報警,而且還能結(jié)合Aspose.Cells for .NET 實現(xiàn)雨情通報文檔的自動化生成,極大地減輕了工作人員的勞動強度,提高了工作效率,其高效、及時和自動化的優(yōu)勢在汛期繁重的氣象服務(wù)工作中發(fā)揮了重要的作用。
該程序還可以結(jié)合實際的工作需要,對其功能進行擴展開發(fā)。比如,結(jié)合電信網(wǎng)關(guān)和微信,向相關(guān)決策部門自動發(fā)送實時雨情手機短信,并在微信平臺同步發(fā)布,以進一步發(fā)揮其自動、及時、高效的優(yōu)勢在氣象服務(wù)工作中的作用。