◎ 中國地質大學(武漢)信息工程學院 張海明
【關鍵字】flex 水質監控預警 amChart ArcGIS API for Flex
隨著我國工業化、城鎮化進程的加快,我國水環境及城市飲用水源污染狀況日益嚴重,突發性水源污染事故頻頻發生。當前階段普遍存在著水源水污染持續加重與凈水工藝進步緩慢的矛盾,存在著城市供水管網材質不佳、腐蝕老化的問題,存在著政府監督指導與供水企業快速市場化的不協調現象。加強水質監管與預警的研究,提高各級政府部門對水質監管的能力建設,成為一項十分重要的工作。水質信息管理和監控預警方面存在著以下幾個方面的問題,水質數據上傳不及時;水質數據存在誤差;水質數據管理困難;水質數據表現方法單一;水質數據缺乏分析手段。為了解決水質監測這一關系國計民生的問題,國家確定了水體污染與治理重大專項,即水專項。水質監控與可視化平臺來源水專項的子項目二——飲用水水質監控預警及應急技術集成與示范項目,旨在有效解決水質監控預警中數據上傳不及時、誤差大、管理困難、表現方式單一、缺乏分析手段等問題提供了方法,并構建出一套從源頭到龍頭的水質監管體系,形成對城市飲用水水質進行管理、分析、監控、預警及相關技術研發的綜合平臺,為專家會商、各級政府進行及時的科學決策和日常政務管理提供技術支撐。
Flex 是一個富客戶端的應用程序(Rich Internet Application,RIA)框架,擁有豐富的用戶界面組件,數據的表現形式多樣,如折線、曲線、餅圖、直方圖、雷達圖、散點圖等方式,完全能夠滿足在線監測系統對數據表現形式的要求。flex富客戶端技術在客戶端進行完整的數據處理,與用戶的交互更加友好、更加迅速;界面交互不依賴頁面,消息通過異步請求傳遞,面向用戶界面中的各個小模塊,客戶端的模塊之間關系清晰[1]。另外,很多公司提供的第三方控件更使flex控件在功能上有更高級的改進,其中最有代表性的事AmChart控件,它使Flex控件能夠通過改變數據源生成動態曲線,并使相關數據集具有可比性,增強了數據的表現能力。ArcGIS API For Flex是ESRI針對Flex推出的二次開發包,為ArcGIS Server 9.3 提供了一套全新的開發方式,其優點是運行速度快,為用戶提供優秀的用戶體驗。

圖1 系統結構圖
水質監控與可視化平臺是實時在線系統,數據實時寫入并展現到前臺,整個過程對系統的穩定性與數據實時傳輸與處理能力要求很高,因此,設計一個良好的系統結構是很重要的。(如圖1)
數據由數采儀采集,并直接上傳至數據庫。以SQL2005數據庫為例,數據庫只有一個儲存實時數據的主表WQ_Mon_T_OnlineData_XXXX(XXXX代表年份),以確保數據的寫入與訪問速度,同時通過對敏感數據建立索引,加快對海量數據的訪問。服務層對數據的操作全部由存儲過程完成。
服務層負責為業務邏輯層提供數據,服務層只暴露數據接口,降低了業務邏輯層與數據層的耦合性,同時使邏輯層與所選數據庫無關,降低了系統對數據結構的依賴。服務層通過調用存儲過程將數據組織起來,以JSON格式傳遞給業務邏輯層。
與傳統不同的是,系統的邏輯層實現全部由Flex富客戶端程序完成。Flex通過mxml文件和actionscript3.0文件實現業務邏輯,系統中Flex通過Web Service向服務端發送請求,接收服務層的JSON格式的數據,并最終以監測點為單位將所有相關數據組織成ArrayCollection數據格式,方便表現層對數據的調用。
ActionScript3通過對業務邏輯層的數據進行處理用于不同的顯示目的,處理后的數據通過與相應顯示控件的數據綁定實現數據的實時更新。系統通過定時器,每5秒向服務端請求一次,用自定義JSON格式通過服務層將數據傳送到邏輯層,再在客戶端重組數據,作為顯示控件的數據源。
為了解決客戶端與服務器端數據傳輸問題,系統選用了結構清晰,傳輸速度更快的JSON。傳遞數據的數據格式是自定義的,以GetMonStation接口為例,格式片段如下:


圖2 客戶端與服務端交互示意圖
Flex與服務端的交互有三種方式:HttpService、Web Service和RemoteObject[3],可根據服務器的不同技術應用而選擇不同的組件,靈活而強大。由于服務接口使用了web服務描述語言(WSDL)預定義的web服務,故選用WebService來與服務器交互。以下代碼為使用WebService方式訪問服務的代碼,其中GetSampleInfo函數建立服務名為WaterOnlineService的WebService,op變量直接對遠程服務的GetMonStation接口進行訪問,返回的結果由onStationSuccess函數處理,返回數據過程出現的錯誤則由onStationFault函數處理:

根據水質業務的特殊性,水質監控預警可視化平臺必須實現數據的多種分析技術,包括單監測點多指標水質數據展現、多監測點單一指標數據對比和歷史數據趨勢分析等分析方法。
(1)單監測點多指標水質數據展現
該分析技術主要針對擁有多個監測項目的監測點,可以以監測時間和各個監測項目為兩個維度,用曲線、表格等形式展示數據。
(2)多監測點單一指標數據對比
該分析技術主要針對具有現實對比意義的指標項,通過比較具有既定關系的監測點,比如上下游關系、同水源關系等,發現監測點異常。
(3)歷史數據趨勢分析
該分析技術主要針對時間維度上的水質數據指標,分析中需要顯示數據的變化趨勢,并從中提取有益于預警的信息。
該界面每隔5秒會更新一次數據,并將超標數據以紅色標記出來;通過勾選“按超標數據排序”選項還可以將超標數據的記錄放在DataGrid控件的頂端,使監控人員對超標情況一目了然。該頁面還可以根據水樣類型進行分類顯示監測點監測信息,如按水源水監測點、管網水監測點和出廠水監測點進行分類顯示。

圖3 實時數據報表顯示

圖4 系統GIS顯示模塊

圖5 系統GIS測量模塊
ArGIS API For Flex通過訪問ArcGIS Server發布的資源,能夠高效地實現水質地圖的瀏覽、監測點定位、監測點信息的多樣化顯示。地圖中用于水質信息顯示的Tip來源于ArGIS API For Flex的InfoSymbol組件,圖中顯示的Tip已經實現了Tip自動避讓的算法,效果可以在圖4顯示。
ArcGIS API for Flex提供了強大的GIS功能實現接口,圖6以圖上標注與量算功能模塊為例,顯示了Flex在水質監控預警平臺的GIS優勢。圖5紅色直線為兩個監測點間管網的實際長度值,紅色多邊形為居民區圖斑的面積和周長值。(如圖5)
圖6中綠色直線為指標標準值,褐色曲線為真實值,曲線會隨著時間的改變而變化,以此將后臺的水質數據實時地顯示到客戶端。
通過構建基于Flex富客戶端的水質監控預警可視化平臺,利用Flex面向對象的編程特性,將業務邏輯與數據處理放到客戶端進行,減輕了服務器的壓力并極大地豐富了系統的展示效果。本系統使用GIS技術顯示水質監測點的空間信息和水質信息,同時采用表格、動態曲線、地圖等形式顯示水質信息的做法可以對日后水質監測系統的開發起到一定的借鑒作用。系統仍處于開發的初級階段,flex可視化顯示仍需改善。值得關注的是,以上解決方案不只一種,如可以采用FluorineFx網關在客戶端與服務器端傳遞字節數據來提高數據的傳輸效率和顯示質量,需要根據需求在日后的研發實踐中不斷地驗證[4][5]。


圖6 單監測點多指標動態曲線顯示