黎穎智,李 勇,李有華,史彩霞
(1.廣西壯族自治區(qū)氣象信息中心,南寧 530022;2.廣西壯族自治區(qū)氣象災(zāi)害防御技術(shù)中心,南寧 530022)
暴雨洪澇災(zāi)害是廣西影響范圍最廣、持續(xù)時間最長、造成損失最大的自然災(zāi)害之一,近年來呈現(xiàn)多發(fā)態(tài)勢。洪澇造成洪水源短流急,陡漲陡落,匯流快,洪峰高,水量大,不利于水電站的電網(wǎng)調(diào)度,常造成巨大的損失。水電站庫區(qū)流量預(yù)報是一個跨學(xué)科、交叉的研究領(lǐng)域,氣象預(yù)報與水文預(yù)報的結(jié)合能為防洪和水庫調(diào)度提供有力支撐,是水文預(yù)報發(fā)展的必然趨勢[1-10]。
以前水文氣象資料查詢方式主要是通過表格向用戶進(jìn)行反饋,此數(shù)據(jù)呈現(xiàn)方式的優(yōu)點(diǎn)是將研究指標(biāo)或統(tǒng)計(jì)指標(biāo)及其取值以特定表格的形式列出,方便計(jì)算機(jī)下一步對數(shù)據(jù)進(jìn)行存儲、篩選等操作。但缺點(diǎn)是數(shù)據(jù)不夠直觀,不利于人工分析判斷和對比不同變量之間的關(guān)系。數(shù)據(jù)太多時,則此方式可能使用戶對數(shù)據(jù)本身或數(shù)據(jù)的含義感到難以研判而導(dǎo)致無法有效地向服務(wù)對象傳達(dá)信息。
統(tǒng)計(jì)圖是根據(jù)統(tǒng)計(jì)數(shù)字,用幾何圖形、事物形象和地圖等繪制的各種圖形,它具有直觀、形象等特點(diǎn)。統(tǒng)計(jì)圖可以使復(fù)雜的統(tǒng)計(jì)數(shù)字簡單化、形象化,使人一目了然,便于理解和比較。此外,統(tǒng)計(jì)圖可以為用戶提供快速參考,通過大尺度時間范圍的水文氣象數(shù)據(jù)圖表可以很好地揭示表格難以呈現(xiàn)的趨勢、模式或關(guān)系。百度開發(fā)的ECharts 可通過增量渲染技術(shù)支持Cavas 或svg 的形式渲染圖表,從而能更直觀地展現(xiàn)數(shù)據(jù)。中科院的劉斌等利用Echarts 實(shí)現(xiàn)了FerryBox 水文數(shù)據(jù)的可視化,從而使多種水文參數(shù)能在同一時間統(tǒng)計(jì)圖表中進(jìn)行直觀的折線展示[11]。ECharts 在氣象方面也有應(yīng)用,但用于同時監(jiān)測水文數(shù)據(jù)和氣象數(shù)據(jù)的系統(tǒng)方案尚未報道。本文通過HTML5、ECharts 的新技術(shù)設(shè)計(jì)開發(fā)出同時具有表格和圖表數(shù)據(jù)顯示功能的庫區(qū)水文及氣象數(shù)據(jù)監(jiān)測系統(tǒng),方便用戶對同樣的數(shù)據(jù)既可進(jìn)行計(jì)算機(jī)分析,也可進(jìn)行人工研判,為進(jìn)一步提高水文氣象科技服務(wù)提供有益的參考。
基于B/S 架構(gòu)進(jìn)行模塊化設(shè)計(jì),IIS+ASP.NET+Oracle.ManagedDataAccess 建設(shè)模式,利用成熟的WEB 技術(shù),通過VS2010、html5 等開發(fā)工具,結(jié)合瀏覽器支持的C#、JavaScript、ActiveX 技術(shù)等多種語言進(jìn)行程序開發(fā),采用多層服務(wù)結(jié)構(gòu)體系,表示層、業(yè)務(wù)層、服務(wù)層、組件層、數(shù)據(jù)層分開,以滿足系統(tǒng)松耦合性、位置透明性以及協(xié)議無關(guān)性的要求,提高系統(tǒng)結(jié)構(gòu)的擴(kuò)展性和柔韌性,方便系統(tǒng)遷移、修改和升級。
通過引入ECharts 開源可視化庫,可以流暢的運(yùn)行在PC 和移動設(shè)備上,兼容當(dāng)前絕大部分瀏覽器,ECharts 的底層依賴矢量圖形庫ZRender,能為用戶提供直觀,交互豐富,可高度個性化定制的數(shù)據(jù)可視化圖表,ECharts 由數(shù)據(jù)驅(qū)動,數(shù)據(jù)的改變驅(qū)動圖表展現(xiàn)的改變。因此動態(tài)數(shù)據(jù)的實(shí)現(xiàn)也會變得簡單,只需導(dǎo)入所獲取的數(shù)據(jù),ECharts 會找到不同組別數(shù)據(jù)之間的差異然后經(jīng)由合適的動畫去展現(xiàn)數(shù)據(jù)的變化。配合組件能夠在更高的時間維度上去表現(xiàn)數(shù)據(jù)的信息[11-14]。從而實(shí)現(xiàn)為用戶提供各庫區(qū)氣象、水文信息的數(shù)據(jù)查詢、圖表生成、數(shù)據(jù)導(dǎo)出、在線統(tǒng)計(jì)分析、數(shù)據(jù)的展示等功能。
采用成熟的Oracel 數(shù)據(jù)庫作為系統(tǒng)后臺的數(shù)據(jù)庫管理引擎,并支持對各種類型數(shù)據(jù)庫的訪問和存儲;實(shí)現(xiàn)嚴(yán)格的安全身份認(rèn)證和授權(quán)管理,保證系統(tǒng)完整性與安全性;采用先進(jìn)的開發(fā)平臺和技術(shù),確保系統(tǒng)環(huán)境的先進(jìn)性。早期C# 項(xiàng)目都使用.Net Framework 自帶的System.Data.OracleClient 對Oracle數(shù)據(jù)庫進(jìn)行訪問。此方式在.Net4.0 中被認(rèn)為已過時,且Oracle Client 安裝包有600 多M,如果用戶數(shù)量巨大的時候,會導(dǎo)致工作量過大,耗費(fèi)資源。在查閱網(wǎng)上的資料后,發(fā)現(xiàn)Oracle 官方推出的驅(qū)動Oracle.ManagedDataAccess.dll,該動態(tài)鏈接庫的優(yōu)點(diǎn)是可隨oracle 數(shù)據(jù)庫更新,不必考慮過時無法使用問題;安裝方便,從網(wǎng)上下載后直接引用即可,無需安裝Oracle Client,耗費(fèi)資源少,運(yùn)行時的文件小于4M。
結(jié)合廣西水利氣象服務(wù)行業(yè)的實(shí)際情況,構(gòu)建各流域水庫徑流量的實(shí)時監(jiān)測與預(yù)測情況,實(shí)現(xiàn)對降水量、徑流量的實(shí)況數(shù)據(jù),降水量、徑流的預(yù)報數(shù)據(jù),按照時間軸的方式進(jìn)行查詢、分析等全方面的信息系統(tǒng)。能使用戶快速查詢相關(guān)數(shù)據(jù),通過相關(guān)的統(tǒng)計(jì)分析,徑流量實(shí)時計(jì)算,用戶能有更明確的工作方向,做出有針對性的決策,減少災(zāi)害,加強(qiáng)防范。系統(tǒng)結(jié)構(gòu)如圖1 所示,分為5 大模塊,具體設(shè)計(jì)如下:
圖1 系統(tǒng)結(jié)構(gòu)圖
(1)系統(tǒng)登錄模塊。該模塊采用分級管理模式和嚴(yán)格的安全身份認(rèn)證,用戶通過用戶名密碼方式登錄系統(tǒng),并根據(jù)權(quán)限進(jìn)入到相對應(yīng)的功能頁面:管理用戶進(jìn)入后臺管理頁,前臺用戶則進(jìn)入數(shù)據(jù)顯示頁面,并且將該前臺用戶關(guān)聯(lián)的水庫以Cookie 的形式傳送到數(shù)據(jù)顯示頁面中,當(dāng)網(wǎng)站中用戶需要跨多個頁面表單時可以用它來保持用戶狀態(tài)。模塊可自動生成隨機(jī)驗(yàn)證碼圖片,可防止惡意程序的暴力破解登錄。
(2)日數(shù)據(jù)展示模塊。該模塊位于數(shù)據(jù)顯示頁面下,通過引入ECharts 開源可視化庫,建立可動態(tài)顯示的曲線/柱狀圖表。該模塊可根據(jù)登陸用戶所關(guān)聯(lián)的水庫生產(chǎn)列表,用戶選擇需要查看的水庫、起始日期后點(diǎn)擊“查詢”按鈕,可顯示該時間段內(nèi)的該水庫每天的雨量實(shí)況、預(yù)報(柱狀)和入庫流量實(shí)況、預(yù)報(曲線)。界面分成上下兩個顯示區(qū),上部為雨量,下部為流量,數(shù)據(jù)的時間間隔以日為單位。上下顯示區(qū)的數(shù)據(jù)按日期同步聯(lián)動,鼠標(biāo)在任一顯示區(qū)滑動時,其右下角會有一浮動標(biāo)簽顯示當(dāng)前鼠標(biāo)所在日期上的實(shí)況和預(yù)報數(shù)據(jù)。在最底部設(shè)置有獨(dú)立滑動條的區(qū)域放縮組件,可進(jìn)行拖動或縮放操作,能任意查看細(xì)節(jié)的數(shù)據(jù)信息,或概覽數(shù)據(jù)的整體走勢。點(diǎn)擊工具欄中的數(shù)據(jù)視圖選項(xiàng)可將數(shù)據(jù)以表格形式呈現(xiàn)。
(3)小時數(shù)據(jù)展示模塊。該模塊通過引入ECharts開源可視化庫,建立可動態(tài)顯示的曲線/柱狀圖表。可根據(jù)選擇時間段顯示該時間段內(nèi)的所選水庫每小時的雨量實(shí)況、預(yù)報(柱狀)和入庫流量實(shí)況、預(yù)報(曲線)。其界面設(shè)計(jì)與日數(shù)據(jù)展示模塊基本一致,只是時間選擇組件需要精確至小時位,數(shù)據(jù)的時間間隔以小時為單位。
(4)系統(tǒng)用戶管理模塊。該模塊主要為系統(tǒng)管理用戶使用,采用表單形式提供對用戶的添加刪除、角色設(shè)置、權(quán)限設(shè)置(為用戶關(guān)聯(lián)一個或多個水庫)、密碼修改、日志查看等功能。
(5)后臺數(shù)據(jù)傳輸模塊。該模塊與前臺網(wǎng)站不直接對接,對用戶是透明的??勺詣荧@取大唐公司傳輸過來的流域流量實(shí)況數(shù)據(jù)并自動入庫,可自動獲取氣象局雨量實(shí)況及制作的相關(guān)流域預(yù)報數(shù)據(jù)并入庫。由于雨量數(shù)據(jù)來自氣象局內(nèi)部,而流量實(shí)況數(shù)據(jù)來自外部門,兩者獲取渠道不同,且數(shù)據(jù)生成時間具有不確定性。為解決此問題,模塊采用控制臺程序作為開發(fā)模式,優(yōu)點(diǎn)是比較節(jié)省系統(tǒng)資源,處理大量數(shù)據(jù)時,不會因線程被阻塞而停止響應(yīng),可全天候自動監(jiān)控?cái)?shù)據(jù)。
信息庫采用Oracel 數(shù)據(jù)庫,包含逐小時流量預(yù)測表、24h 流量預(yù)測表、水電站日表、水電站小時表、大唐傳輸對應(yīng)數(shù)據(jù)點(diǎn)號表、91 個流域面雨量實(shí)況表、91 個流域面雨量7d 預(yù)報表、91 個流域逐時面雨量預(yù)報數(shù)據(jù)表(如表1)、用戶信息表。
由于預(yù)報員每天做未來7d 的雨量和流量預(yù)報,一天對應(yīng)一組數(shù)據(jù),表結(jié)構(gòu)如表1,所以當(dāng)查詢某起始日X1至終結(jié)日Xm(Md)內(nèi)的預(yù)報數(shù)據(jù)時,數(shù)據(jù)庫返回的數(shù)據(jù)其實(shí)是一個M 乘以7 的一個矩陣:[X00,X01…X06;X10,X11…X16;……;X(M-1)0,X(M-1)1…X(M-1)6;]。當(dāng)Xm小于或等于用戶進(jìn)行查詢操作當(dāng)日時,程序返回結(jié)果為各行第一個元素所組成數(shù)組:[X00,X10,X20,…,X(M-1)0];當(dāng)Xm大于用戶進(jìn)行查詢操作當(dāng)日Xj 時,程序返回結(jié)果為各行第一個元素及最后一行前(Xm-Xj)個元素所組成數(shù)組:[X00,X10,X20,…,X(M-1)0,…X(Xm-Xj) 0],操作過程如圖2。
表1 91 個流域面雨量7d 預(yù)報表結(jié)構(gòu)
圖2 提取預(yù)報查詢結(jié)果流程圖
ECharts 提供了包括折線圖、柱狀圖等常規(guī)圖表,這些圖表以構(gòu)建文件的形式引入項(xiàng)目后可直接使用,但為了符合用戶實(shí)際需求,有些功能的實(shí)現(xiàn)需開發(fā)者自定義編碼進(jìn)行配置,本系統(tǒng)為了實(shí)現(xiàn)兩個圖表顯示區(qū)可聯(lián)動操作的解決方式:在Echarts 代碼設(shè)置項(xiàng)中添加axisPointer:{ link:[ {xAxisIndex:[0,1],}]},表示所有xAxisIndex 為0\1 的坐標(biāo)軸聯(lián)動;在series 中將實(shí)況降水、預(yù)測降水的xAxisIndex、yAxisIndex 均設(shè)為0,實(shí)況流量、預(yù)測流量的則設(shè)為1;最后將dataZoom 中 的xAxisIndex 設(shè)置為[0,1]。這樣上下顯示區(qū)的數(shù)據(jù)就能按日期同步聯(lián)動,并且在最底部設(shè)置有區(qū)域放縮組件。在toolbox 設(shè)置項(xiàng)中添加dataView:{show:true,readOnly:true},則工具欄中可添加數(shù)據(jù)視圖按鈕,點(diǎn)擊按鈕可將圖表數(shù)據(jù)轉(zhuǎn)換為表格數(shù)據(jù),方便下載保存。關(guān)鍵代碼如下:
通過探討ECharts 在庫區(qū)水文及氣象數(shù)據(jù)監(jiān)測系統(tǒng)設(shè)計(jì)當(dāng)中對數(shù)據(jù)可視化方面的應(yīng)用,形成可在同一時空分布圖表中展示多個參數(shù),從而更加靈便地表達(dá)水文氣象數(shù)據(jù)的解決方案,幫助用戶能快速地從不同的維度和角度觀察雨量及流量數(shù)據(jù)的相互關(guān)系,發(fā)現(xiàn)特殊的現(xiàn)象,挖掘有用信息,總結(jié)出氣象對水文影響的相關(guān)規(guī)律,進(jìn)一步提高水電氣象服務(wù)的質(zhì)量和水庫水情監(jiān)控能力。廣西是水電大省,境內(nèi)擁有大量水電站,本系統(tǒng)可向全區(qū)推廣。ECharts 還提供了地理數(shù)據(jù)的可視化功能,但尚未應(yīng)用到本系統(tǒng)當(dāng)中,在今后的系統(tǒng)擴(kuò)展中有待進(jìn)一步完善和提高。隨著廣西省級“天擎”的部署完成,未來可探索本系統(tǒng)如何接入“天擎”系統(tǒng),利用其“數(shù)據(jù)、算力、算法”三位一體的平臺化服務(wù),實(shí)現(xiàn)廣西水文氣象服務(wù)模型的智能化發(fā)展,進(jìn)而取得更好的服務(wù)效益。