◎ 中國(guó)地質(zhì)大學(xué)(武漢)信息工程學(xué)院 張海明
【關(guān)鍵字】flex 水質(zhì)監(jiān)控預(yù)警 amChart ArcGIS API for Flex
隨著我國(guó)工業(yè)化、城鎮(zhèn)化進(jìn)程的加快,我國(guó)水環(huán)境及城市飲用水源污染狀況日益嚴(yán)重,突發(fā)性水源污染事故頻頻發(fā)生。當(dāng)前階段普遍存在著水源水污染持續(xù)加重與凈水工藝進(jìn)步緩慢的矛盾,存在著城市供水管網(wǎng)材質(zhì)不佳、腐蝕老化的問題,存在著政府監(jiān)督指導(dǎo)與供水企業(yè)快速市場(chǎng)化的不協(xié)調(diào)現(xiàn)象。加強(qiáng)水質(zhì)監(jiān)管與預(yù)警的研究,提高各級(jí)政府部門對(duì)水質(zhì)監(jiān)管的能力建設(shè),成為一項(xiàng)十分重要的工作。水質(zhì)信息管理和監(jiān)控預(yù)警方面存在著以下幾個(gè)方面的問題,水質(zhì)數(shù)據(jù)上傳不及時(shí);水質(zhì)數(shù)據(jù)存在誤差;水質(zhì)數(shù)據(jù)管理困難;水質(zhì)數(shù)據(jù)表現(xiàn)方法單一;水質(zhì)數(shù)據(jù)缺乏分析手段。為了解決水質(zhì)監(jiān)測(cè)這一關(guān)系國(guó)計(jì)民生的問題,國(guó)家確定了水體污染與治理重大專項(xiàng),即水專項(xiàng)。水質(zhì)監(jiān)控與可視化平臺(tái)來源水專項(xiàng)的子項(xiàng)目二——飲用水水質(zhì)監(jiān)控預(yù)警及應(yīng)急技術(shù)集成與示范項(xiàng)目,旨在有效解決水質(zhì)監(jiān)控預(yù)警中數(shù)據(jù)上傳不及時(shí)、誤差大、管理困難、表現(xiàn)方式單一、缺乏分析手段等問題提供了方法,并構(gòu)建出一套從源頭到龍頭的水質(zhì)監(jiān)管體系,形成對(duì)城市飲用水水質(zhì)進(jìn)行管理、分析、監(jiān)控、預(yù)警及相關(guān)技術(shù)研發(fā)的綜合平臺(tái),為專家會(huì)商、各級(jí)政府進(jìn)行及時(shí)的科學(xué)決策和日常政務(wù)管理提供技術(shù)支撐。
Flex 是一個(gè)富客戶端的應(yīng)用程序(Rich Internet Application,RIA)框架,擁有豐富的用戶界面組件,數(shù)據(jù)的表現(xiàn)形式多樣,如折線、曲線、餅圖、直方圖、雷達(dá)圖、散點(diǎn)圖等方式,完全能夠滿足在線監(jiān)測(cè)系統(tǒng)對(duì)數(shù)據(jù)表現(xiàn)形式的要求。flex富客戶端技術(shù)在客戶端進(jìn)行完整的數(shù)據(jù)處理,與用戶的交互更加友好、更加迅速;界面交互不依賴頁面,消息通過異步請(qǐng)求傳遞,面向用戶界面中的各個(gè)小模塊,客戶端的模塊之間關(guān)系清晰[1]。另外,很多公司提供的第三方控件更使flex控件在功能上有更高級(jí)的改進(jìn),其中最有代表性的事AmChart控件,它使Flex控件能夠通過改變數(shù)據(jù)源生成動(dòng)態(tài)曲線,并使相關(guān)數(shù)據(jù)集具有可比性,增強(qiáng)了數(shù)據(jù)的表現(xiàn)能力。ArcGIS API For Flex是ESRI針對(duì)Flex推出的二次開發(fā)包,為ArcGIS Server 9.3 提供了一套全新的開發(fā)方式,其優(yōu)點(diǎn)是運(yùn)行速度快,為用戶提供優(yōu)秀的用戶體驗(yàn)。
圖1 系統(tǒng)結(jié)構(gòu)圖
水質(zhì)監(jiān)控與可視化平臺(tái)是實(shí)時(shí)在線系統(tǒng),數(shù)據(jù)實(shí)時(shí)寫入并展現(xiàn)到前臺(tái),整個(gè)過程對(duì)系統(tǒng)的穩(wěn)定性與數(shù)據(jù)實(shí)時(shí)傳輸與處理能力要求很高,因此,設(shè)計(jì)一個(gè)良好的系統(tǒng)結(jié)構(gòu)是很重要的。(如圖1)
數(shù)據(jù)由數(shù)采儀采集,并直接上傳至數(shù)據(jù)庫。以SQL2005數(shù)據(jù)庫為例,數(shù)據(jù)庫只有一個(gè)儲(chǔ)存實(shí)時(shí)數(shù)據(jù)的主表WQ_Mon_T_OnlineData_XXXX(XXXX代表年份),以確保數(shù)據(jù)的寫入與訪問速度,同時(shí)通過對(duì)敏感數(shù)據(jù)建立索引,加快對(duì)海量數(shù)據(jù)的訪問。服務(wù)層對(duì)數(shù)據(jù)的操作全部由存儲(chǔ)過程完成。
服務(wù)層負(fù)責(zé)為業(yè)務(wù)邏輯層提供數(shù)據(jù),服務(wù)層只暴露數(shù)據(jù)接口,降低了業(yè)務(wù)邏輯層與數(shù)據(jù)層的耦合性,同時(shí)使邏輯層與所選數(shù)據(jù)庫無關(guān),降低了系統(tǒng)對(duì)數(shù)據(jù)結(jié)構(gòu)的依賴。服務(wù)層通過調(diào)用存儲(chǔ)過程將數(shù)據(jù)組織起來,以JSON格式傳遞給業(yè)務(wù)邏輯層。
與傳統(tǒng)不同的是,系統(tǒng)的邏輯層實(shí)現(xiàn)全部由Flex富客戶端程序完成。Flex通過mxml文件和actionscript3.0文件實(shí)現(xiàn)業(yè)務(wù)邏輯,系統(tǒng)中Flex通過Web Service向服務(wù)端發(fā)送請(qǐng)求,接收服務(wù)層的JSON格式的數(shù)據(jù),并最終以監(jiān)測(cè)點(diǎn)為單位將所有相關(guān)數(shù)據(jù)組織成ArrayCollection數(shù)據(jù)格式,方便表現(xiàn)層對(duì)數(shù)據(jù)的調(diào)用。
ActionScript3通過對(duì)業(yè)務(wù)邏輯層的數(shù)據(jù)進(jìn)行處理用于不同的顯示目的,處理后的數(shù)據(jù)通過與相應(yīng)顯示控件的數(shù)據(jù)綁定實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)更新。系統(tǒng)通過定時(shí)器,每5秒向服務(wù)端請(qǐng)求一次,用自定義JSON格式通過服務(wù)層將數(shù)據(jù)傳送到邏輯層,再在客戶端重組數(shù)據(jù),作為顯示控件的數(shù)據(jù)源。
為了解決客戶端與服務(wù)器端數(shù)據(jù)傳輸問題,系統(tǒng)選用了結(jié)構(gòu)清晰,傳輸速度更快的JSON。傳遞數(shù)據(jù)的數(shù)據(jù)格式是自定義的,以GetMonStation接口為例,格式片段如下:
圖2 客戶端與服務(wù)端交互示意圖
Flex與服務(wù)端的交互有三種方式:HttpService、Web Service和RemoteObject[3],可根據(jù)服務(wù)器的不同技術(shù)應(yīng)用而選擇不同的組件,靈活而強(qiáng)大。由于服務(wù)接口使用了web服務(wù)描述語言(WSDL)預(yù)定義的web服務(wù),故選用WebService來與服務(wù)器交互。以下代碼為使用WebService方式訪問服務(wù)的代碼,其中GetSampleInfo函數(shù)建立服務(wù)名為WaterOnlineService的WebService,op變量直接對(duì)遠(yuǎn)程服務(wù)的GetMonStation接口進(jìn)行訪問,返回的結(jié)果由onStationSuccess函數(shù)處理,返回?cái)?shù)據(jù)過程出現(xiàn)的錯(cuò)誤則由onStationFault函數(shù)處理:
根據(jù)水質(zhì)業(yè)務(wù)的特殊性,水質(zhì)監(jiān)控預(yù)警可視化平臺(tái)必須實(shí)現(xiàn)數(shù)據(jù)的多種分析技術(shù),包括單監(jiān)測(cè)點(diǎn)多指標(biāo)水質(zhì)數(shù)據(jù)展現(xiàn)、多監(jiān)測(cè)點(diǎn)單一指標(biāo)數(shù)據(jù)對(duì)比和歷史數(shù)據(jù)趨勢(shì)分析等分析方法。
(1)單監(jiān)測(cè)點(diǎn)多指標(biāo)水質(zhì)數(shù)據(jù)展現(xiàn)
該分析技術(shù)主要針對(duì)擁有多個(gè)監(jiān)測(cè)項(xiàng)目的監(jiān)測(cè)點(diǎn),可以以監(jiān)測(cè)時(shí)間和各個(gè)監(jiān)測(cè)項(xiàng)目為兩個(gè)維度,用曲線、表格等形式展示數(shù)據(jù)。
(2)多監(jiān)測(cè)點(diǎn)單一指標(biāo)數(shù)據(jù)對(duì)比
該分析技術(shù)主要針對(duì)具有現(xiàn)實(shí)對(duì)比意義的指標(biāo)項(xiàng),通過比較具有既定關(guān)系的監(jiān)測(cè)點(diǎn),比如上下游關(guān)系、同水源關(guān)系等,發(fā)現(xiàn)監(jiān)測(cè)點(diǎn)異常。
(3)歷史數(shù)據(jù)趨勢(shì)分析
該分析技術(shù)主要針對(duì)時(shí)間維度上的水質(zhì)數(shù)據(jù)指標(biāo),分析中需要顯示數(shù)據(jù)的變化趨勢(shì),并從中提取有益于預(yù)警的信息。
該界面每隔5秒會(huì)更新一次數(shù)據(jù),并將超標(biāo)數(shù)據(jù)以紅色標(biāo)記出來;通過勾選“按超標(biāo)數(shù)據(jù)排序”選項(xiàng)還可以將超標(biāo)數(shù)據(jù)的記錄放在DataGrid控件的頂端,使監(jiān)控人員對(duì)超標(biāo)情況一目了然。該頁面還可以根據(jù)水樣類型進(jìn)行分類顯示監(jiān)測(cè)點(diǎn)監(jiān)測(cè)信息,如按水源水監(jiān)測(cè)點(diǎn)、管網(wǎng)水監(jiān)測(cè)點(diǎn)和出廠水監(jiān)測(cè)點(diǎn)進(jìn)行分類顯示。
圖3 實(shí)時(shí)數(shù)據(jù)報(bào)表顯示
圖4 系統(tǒng)GIS顯示模塊
圖5 系統(tǒng)GIS測(cè)量模塊
ArGIS API For Flex通過訪問ArcGIS Server發(fā)布的資源,能夠高效地實(shí)現(xiàn)水質(zhì)地圖的瀏覽、監(jiān)測(cè)點(diǎn)定位、監(jiān)測(cè)點(diǎn)信息的多樣化顯示。地圖中用于水質(zhì)信息顯示的Tip來源于ArGIS API For Flex的InfoSymbol組件,圖中顯示的Tip已經(jīng)實(shí)現(xiàn)了Tip自動(dòng)避讓的算法,效果可以在圖4顯示。
ArcGIS API for Flex提供了強(qiáng)大的GIS功能實(shí)現(xiàn)接口,圖6以圖上標(biāo)注與量算功能模塊為例,顯示了Flex在水質(zhì)監(jiān)控預(yù)警平臺(tái)的GIS優(yōu)勢(shì)。圖5紅色直線為兩個(gè)監(jiān)測(cè)點(diǎn)間管網(wǎng)的實(shí)際長(zhǎng)度值,紅色多邊形為居民區(qū)圖斑的面積和周長(zhǎng)值。(如圖5)
圖6中綠色直線為指標(biāo)標(biāo)準(zhǔn)值,褐色曲線為真實(shí)值,曲線會(huì)隨著時(shí)間的改變而變化,以此將后臺(tái)的水質(zhì)數(shù)據(jù)實(shí)時(shí)地顯示到客戶端。
通過構(gòu)建基于Flex富客戶端的水質(zhì)監(jiān)控預(yù)警可視化平臺(tái),利用Flex面向?qū)ο蟮木幊烫匦?,將業(yè)務(wù)邏輯與數(shù)據(jù)處理放到客戶端進(jìn)行,減輕了服務(wù)器的壓力并極大地豐富了系統(tǒng)的展示效果。本系統(tǒng)使用GIS技術(shù)顯示水質(zhì)監(jiān)測(cè)點(diǎn)的空間信息和水質(zhì)信息,同時(shí)采用表格、動(dòng)態(tài)曲線、地圖等形式顯示水質(zhì)信息的做法可以對(duì)日后水質(zhì)監(jiān)測(cè)系統(tǒng)的開發(fā)起到一定的借鑒作用。系統(tǒng)仍處于開發(fā)的初級(jí)階段,flex可視化顯示仍需改善。值得關(guān)注的是,以上解決方案不只一種,如可以采用FluorineFx網(wǎng)關(guān)在客戶端與服務(wù)器端傳遞字節(jié)數(shù)據(jù)來提高數(shù)據(jù)的傳輸效率和顯示質(zhì)量,需要根據(jù)需求在日后的研發(fā)實(shí)踐中不斷地驗(yàn)證[4][5]。
圖6 單監(jiān)測(cè)點(diǎn)多指標(biāo)動(dòng)態(tài)曲線顯示