閔俊 胡瑞鵬
摘 要:本文引入ArcGIS Server平臺,使用具備創(chuàng)建高交互性、富客戶端特點(diǎn)的Flex技術(shù),研究并設(shè)計(jì)三層體系結(jié)構(gòu)的供水調(diào)度可視化系統(tǒng)。該系統(tǒng)集成各專題模型及相應(yīng)的計(jì)算軟件模型,為供水調(diào)度系統(tǒng)提供可視化的操作平臺,從而方便管理和維護(hù)各模型參數(shù)及運(yùn)行結(jié)果,實(shí)現(xiàn)地圖數(shù)據(jù)和工程業(yè)務(wù)數(shù)據(jù)信息的顯示、敏感信息的地圖圖層顯示或隱藏、工程問題線路的查詢、問題線路的信息查閱,以及專題地圖的制作等功能。
關(guān)鍵詞:ArcGIS API for Flex;ArcGIS Server;可視化;供水調(diào)度
中圖分類號:TP391.9 文獻(xiàn)標(biāo)識碼:A
1 引言(Introduction)
當(dāng)前,伴隨著實(shí)時(shí)通訊技術(shù),網(wǎng)絡(luò)技術(shù)、可視化技術(shù)、多媒體技術(shù)地不斷發(fā)展,可視化在水利行業(yè)的需求也日益凸顯其重要性以及高標(biāo)準(zhǔn)。當(dāng)前,大多數(shù)可視化展示系統(tǒng)一般都具備如下特點(diǎn):直觀顯示和歸納海量數(shù)據(jù);關(guān)聯(lián)數(shù)據(jù)集;多維度顯示;界面友好。利用現(xiàn)有的GIS技術(shù)完全可以實(shí)現(xiàn)從單調(diào)、枯燥的數(shù)據(jù)處理、查詢、專題地圖制作到空間分析、建模和三維仿真等,從而更加清晰、直觀地表現(xiàn)水資源的時(shí)空狀況及規(guī)律,為決策者提供決策支持[1]。
本文引入ArcGIS Server技術(shù)平臺,使用具備創(chuàng)建高交互性和富客戶端特征的Flex技術(shù),重點(diǎn)研究并設(shè)計(jì)出三層體系結(jié)構(gòu)的供水調(diào)度可視化系統(tǒng)。
2 ArcGIS API for Flex(ArcGIS API for Flex)
ArcGIS API for Flex是ESRI推出的用于富互聯(lián)網(wǎng)應(yīng)用程序RIA(Rich Internet Applications)開發(fā)的WebGIS客戶端開發(fā)包,能夠通過利用ArcGIS Server自帶資源,包括地圖服務(wù)、地址服務(wù)、要素服務(wù)和地理處理服務(wù)及Flex組件,其最大優(yōu)點(diǎn)就是運(yùn)行速度快,能夠創(chuàng)建出交互性非常良好和體驗(yàn)非常豐富的Web應(yīng)用[2]。
ArcGIS Server是一個(gè)便于構(gòu)建集中管理且支持多用戶的企業(yè)級地理信息系統(tǒng)應(yīng)用的綜合開發(fā)平臺。它不僅僅提供了豐富的地理信息系統(tǒng)功能以便于開發(fā)者利用它來創(chuàng)建并配置Web應(yīng)用及服務(wù)、基于.NET和J2EE標(biāo)準(zhǔn)的Web服務(wù)器上的企業(yè)應(yīng)用,如EJB,還可以用C/S的模式訪問桌面應(yīng)用。ArcGIS Server的管理由ArcGIS Desktop負(fù)責(zé),可以通過互聯(lián)網(wǎng)Internet或局域網(wǎng)來訪問。ArcGIS Server 9.3版還增加了Rest接口可用于發(fā)布GIS服務(wù),所有的資源和操作都可由Rest API實(shí)現(xiàn),當(dāng)然這些資源和操作的訪問都必須通過ArcGIS Server發(fā)布的地理信息系統(tǒng)服務(wù)的URL(Uniform Resource Locator,統(tǒng)一資源定位器)得到[3]。
Flex是Adobe公司推出的,基于其專有的Macromedia Flash平臺,并且涵蓋了支持RIA開發(fā)和部署的一系列技術(shù)集合。通過Flex技術(shù),開發(fā)人員可以將RIA程序編譯成Flash文件,運(yùn)行在裝有AdobeFlash Player軟件的客戶端瀏覽器中。Flex采用的是GUI界面開發(fā),使用MXML語言,并提供多種組件,可用于實(shí)現(xiàn)包括Web Service、遠(yuǎn)程對象、Drag and Drop、動畫和互動界面等功能,而且還能針對于諸如PHP、ASP、JSP等的HTML應(yīng)用在每個(gè)請求時(shí)都需要執(zhí)行服務(wù)器端的模板,由于客戶端只需要載入一次,因此Flex應(yīng)用程的工作流程被極大地得以改善[4]。ESRI公司開發(fā)的ArcGIS API for Flex很好地結(jié)合了Flex技術(shù),從而給Flex在GIS領(lǐng)域的應(yīng)用帶來了新的機(jī)遇。
3 供水調(diào)度可視化系統(tǒng)體系(Visualization system
of water supply scheduling)
系統(tǒng)基于SOA軟件體系構(gòu)架進(jìn)行設(shè)計(jì),分為數(shù)據(jù)層、服務(wù)器層和應(yīng)用層的三層構(gòu)建模式,如圖1所示。應(yīng)用層基于Flex客戶端進(jìn)行開發(fā),實(shí)現(xiàn)客戶端應(yīng)用;服務(wù)器層包括ArcGIS Server、Web Server、XI;數(shù)據(jù)層基于SQL Server 2008和ArcSDE實(shí)現(xiàn)地理數(shù)據(jù)和工程業(yè)務(wù)數(shù)據(jù)一體化存儲和管理[5]。
(1)應(yīng)用層
應(yīng)用層的功能是響應(yīng)Flex富客戶端請求,并根據(jù)用戶請求類型做出響應(yīng),它是采用ArcGIS API for Flex和Flex Framework進(jìn)行設(shè)計(jì)及實(shí)現(xiàn)的,其中Flex客戶端對外有兩個(gè)數(shù)據(jù)接口,一個(gè)是REST,負(fù)責(zé)連接ArcGIS Server數(shù)據(jù)源;另一個(gè)是Servlet,負(fù)責(zé)連接Web Server和XI組件的數(shù)據(jù)。
(2)服務(wù)層
服務(wù)層包括兩個(gè)服務(wù)器,一個(gè)是ArcGIS服務(wù)器,另一個(gè)是Web服務(wù)器。ArcGIS服務(wù)器是通過ArcGIS API for Flex訪問Flex地圖數(shù)據(jù)中的URL地址,如ESRI公司對外提供的數(shù)據(jù)源URL地址為http://server.arcgisonline/ArcGIS/rest/services/ESRI_StreetMap_world_2D/MapServer,本地端需要發(fā)布的數(shù)據(jù)可以存放在本地服務(wù)器中,URL地址為http://192.168.3.18:8399/arcgis/rest/services/all/mapserver。所以在客戶端,只需訪問這兩個(gè)地址,即可對地圖數(shù)據(jù)進(jìn)行操作。
Web服務(wù)器具有開放性接口,可用于接收來自于客戶通過瀏覽發(fā)送過來的請求,并根據(jù)客戶請求得到來自于從ArcGIS服務(wù)器中的相應(yīng)地圖服務(wù)對象,與此同時(shí)還可直接和后臺數(shù)據(jù)庫交互獲得信息。Web服務(wù)器多作為備用服務(wù)器,通過項(xiàng)目的ID值和Flex連接,從而實(shí)現(xiàn)數(shù)據(jù)庫連接、文件上傳、圖片顯示等諸多功能。本文中設(shè)計(jì)的系統(tǒng)所需數(shù)據(jù)都可以通過Web服務(wù)器到其他系統(tǒng)中獲取,實(shí)現(xiàn)了資源共享[4]。
在服務(wù)層,還可包括XI(Exchange Infrastructure,交互基礎(chǔ)設(shè)施)組件:XI采用面向服務(wù)的體系架構(gòu),利用各種開放標(biāo)準(zhǔn),支持多種通信方式,把SAP和非SAP無縫地集成到一起。本系統(tǒng)除了需要地圖數(shù)據(jù),還有一些工程業(yè)務(wù)方面的數(shù)據(jù),工程數(shù)據(jù)就采用從XI中獲取,XI向外提供XML形式的接口,通過Web Server實(shí)現(xiàn),所以系統(tǒng)采用XI組件作為數(shù)據(jù)源[5]。
(3)數(shù)據(jù)層
該系統(tǒng)中的數(shù)據(jù)既包括地圖數(shù)據(jù),同時(shí)還有工程業(yè)務(wù)方面的數(shù)據(jù),是基于SQL Server 2008和ArcSDE實(shí)現(xiàn)地理數(shù)據(jù)和工程業(yè)務(wù)數(shù)據(jù)一體化存儲和管理。
a.地圖數(shù)據(jù)
ArcGIS API for Flex提供資源是借助地圖服務(wù)形式,通過REST服務(wù)可實(shí)現(xiàn)在多個(gè)客戶端間共享資源,所以確保全部客戶端均能訪問到共有資源。使用ArcGIS服務(wù)器上的資源服務(wù)時(shí),還能與使用本地資源一樣對它進(jìn)行方便快捷的訪問,比如,當(dāng)訪問ArcGIS服務(wù)器上的地圖服務(wù)時(shí),地圖文檔和地圖數(shù)據(jù)就像存儲在本地主機(jī)上一樣。ArcGIS服務(wù)器可以提供的服務(wù)類型很多,主要包括Map service、Geocode service、Geodata service、Geometry service、GeoProcessing service、Globe service,以及Image service等。每一種服務(wù)都要有對應(yīng)的資源,比如Map service對應(yīng)的GIS資源就是.mxd或者.pmf格式的地圖文件。
在本文所設(shè)計(jì)的系統(tǒng)中,要實(shí)現(xiàn)Map service功能,所需的地圖數(shù)據(jù)主要包括動態(tài)地圖數(shù)據(jù)圖層和瓦片圖層。其中瓦片圖層當(dāng)作底圖使用,可以直接用ESRI公司提供的現(xiàn)成的在線數(shù)據(jù)[6]。如行政區(qū)劃圖的URL地址為http://server.arcgisonline.com/arcgis/rest/services/esri_streetmap_world_2d/mapserver。地形圖的URL地址為http://server.arcgisonline.com/arcgis/rest/services/world_topo_map/mapserver。影像地圖的URL地址為http://server.arcgisonline.com/arcgis/rest/services/esri_imagery_world_2d/mapserver。
動態(tài)地圖數(shù)據(jù)圖層主要包括工程所在地的區(qū)劃圖、供水線路圖、水電站圖等,數(shù)據(jù)存放在本地服務(wù)器上,其URL地址為http://192.168.3.18:8399/arcgis/rest/services/all/mapserver。
b.工程業(yè)務(wù)數(shù)據(jù)
本系統(tǒng)是中還涉及工程業(yè)務(wù)方面的數(shù)據(jù),主要包括項(xiàng)目概要信息、進(jìn)度、質(zhì)量、成本、施工方、監(jiān)理方等。這些數(shù)據(jù)可直接存放在服務(wù)器端,可以通過Web Server方式,從XI中實(shí)時(shí)獲取。要實(shí)現(xiàn)工程業(yè)務(wù)數(shù)據(jù)的實(shí)時(shí)提取,采用的方法非常簡單,僅需在Flex中使用HTTPService標(biāo)簽就可以實(shí)現(xiàn),HTTPService標(biāo)簽的格式為
4 供水調(diào)度可視化系統(tǒng)主要功能設(shè)計(jì)與實(shí)現(xiàn)(Design
and implementation of the visualization system
of water supply scheduling)
本系統(tǒng)集成各專題模型及相應(yīng)的計(jì)算軟件模型,為供水調(diào)度系統(tǒng)提供可視化的操作平臺,從而方便管理和維護(hù)各模型參數(shù)及運(yùn)行結(jié)果,實(shí)現(xiàn)地圖數(shù)據(jù)和工程業(yè)務(wù)數(shù)據(jù)信息的顯示、敏感信息的地圖圖層顯示或隱藏、工程問題線路的查詢、問題線路的信息查閱和專題地圖的制作等[7]。
(1)信息顯示
供水工程具有典型的空間分布特征,所以供水調(diào)度可視化系統(tǒng)必須具備常用的地圖操作功能,如地圖的縮放、全圖顯示、漫游等,此外還需具有鷹眼功能,便于用戶在操作地圖時(shí)更方便定位到相應(yīng)的位置,從而能更好地查看和監(jiān)測。
該項(xiàng)功能的實(shí)現(xiàn)方法表述如下:利用ArcGISTiledMap
ServiceLayer標(biāo)簽來獲取系統(tǒng)瓦片圖層的地圖數(shù)據(jù)服務(wù),對應(yīng)的代碼是url="http://server.arcgisonline.com/ArcGIS/rest/services/ERRI_StreetMap_World_2D/MapServer"/>;使用ArcGISDynamicMapServiceLayer標(biāo)簽來獲取系統(tǒng)動態(tài)地圖數(shù)據(jù)圖層的地圖數(shù)據(jù)服務(wù),對應(yīng)的代碼是
本系統(tǒng)動態(tài)圖層和瓦片圖層疊加后顯示的效果如圖2所示。
(2)圖層顯示控制
由于系統(tǒng)數(shù)據(jù)量大且繁雜,所以在系統(tǒng)功能實(shí)現(xiàn)時(shí)使用圖層控制功能對系統(tǒng)數(shù)據(jù)進(jìn)行控制及管理,為了突出用戶所感興趣的圖層信息,需要有針對性地顯示或隱藏相應(yīng)圖層。
ArcGIS API for Flex并沒有提供現(xiàn)成的TOC控件(TOC控件能直接對圖層進(jìn)行顯示控制),但是在本系統(tǒng)中創(chuàng)建了一個(gè)TOC控件。實(shí)現(xiàn)方法:首先需要新建一個(gè)LayersOnandOff.mxml網(wǎng)頁,在該網(wǎng)頁上添加Map控件并設(shè)置好ArcGISDynamicMapServiceLayer標(biāo)簽的屬性;再添加一個(gè)專門用來控制地圖切換顯示的ComboBox控件,讓ArcGISDynamicMapServiceLayer標(biāo)簽的URL屬性的值困綁定ComboBox控件的選擇值,這樣當(dāng)ComboBox控件的選擇發(fā)生改變時(shí),地圖也會根據(jù)ArcGISDynamicMapServiceLayer標(biāo)簽的URL的值進(jìn)行切換。對應(yīng)的主要代碼如下:
(3)專題圖制作
在供水調(diào)度工程可視化系統(tǒng)中,必要的專題圖,如單值專題圖、統(tǒng)計(jì)專題圖等對于表達(dá)和展示空間對象專題信息就顯得非常重要。雖然ArcGIS API for Flex本身并不提供制作專題圖的控件,但可以利用Flex的Chart組件來實(shí)現(xiàn)專題地圖的設(shè)計(jì)與制作。其實(shí)現(xiàn)方法主要為:首先添加一個(gè)Flex的Chart組件,用它的Symbol來渲染Graphic,再將渲染后的Graphic插入到圖層GraphicLayer中。實(shí)現(xiàn)的主要代碼如下:
(4)工程問題線路查詢顯示
在供水調(diào)度系統(tǒng)中,經(jīng)常需要查詢一些問題線路,并實(shí)時(shí)查詢到該工程線路的基本信息,以提供給決策者和技術(shù)部門及時(shí)拿出決策和解決方案。本系統(tǒng)采用高亮顯示問題線路的方法來解決這個(gè)問題,效果如圖3所示。
該功能的實(shí)現(xiàn)方法:首先找到存在問題的線路,并且將問題線路做渲染Symbol來標(biāo)記,再將渲染后的Graphic進(jìn)行高亮顯示。當(dāng)查詢到問題線路后,要將查詢到的地理元素高亮顯示則需要esri:GraphicLayer。GraphicLayer圖層的實(shí)現(xiàn)方法:首先新建一個(gè)IdentifyTest.mxml網(wǎng)頁,在網(wǎng)頁中添加一各Map控件,并設(shè)置ArcGISDynamicServiceLayer標(biāo)簽的屬性,為其添加一個(gè)complete事件,complete事件就是用來實(shí)現(xiàn)當(dāng)?shù)貓D載入完成后獲取地圖的圖層名稱;然后在GraphicsLayer中添加一個(gè)是用于當(dāng)有元素添加到GraphicsLayer時(shí)設(shè)置元素的顯示樣式的symbolFunction功能;再用esri:draw控件繪制出點(diǎn)、線等要素,當(dāng)繪圖完成后執(zhí)行drawEnd的drawEndHandler(event)方法,并且在drawEndHandler(event)方法里再添加一個(gè)用以實(shí)現(xiàn)將遍歷查詢結(jié)果添加到Graphicslayer進(jìn)行高亮顯示的esri:IdentifyTask控件。其主要實(shí)現(xiàn)代碼如下:
"http://192.168.3.18:8399/arcgis/rest/services/all/mapserver" complete="mapHandler(event)"/>
解決了這兩個(gè)問題后,要實(shí)現(xiàn)問題線路信息的顯示就可以用ArcGIS API for Flex本身提供的Infowindow組件。Infowindow能提供在Map上彈出信息提示的功能,而且當(dāng)定義一個(gè)Map時(shí),Map就會自動生成一個(gè)Infowindow,Infowindow使用的重點(diǎn)就在于設(shè)置它的content屬性,即是Infowindow窗口中的信息內(nèi)容。主要的實(shí)現(xiàn)方法:首先新建一個(gè)showInfoWindow.mxml網(wǎng)頁,該網(wǎng)頁的主要功能有兩個(gè),第一個(gè)是實(shí)現(xiàn)從動態(tài)地圖數(shù)據(jù)圖層的數(shù)據(jù)讀取線路數(shù)據(jù)顯示到ArcGISTiledMapServiceLayer的ESRI_StreetMap_World_2D的地圖上,第二個(gè)是實(shí)現(xiàn)當(dāng)鼠標(biāo)點(diǎn)擊線路時(shí)顯示該線路的基本信息。在新建的頁面中添加Map控件,以及用來顯示ESRI_StreetMap_World_2D的ArcGISTiledMapServiceLayer和用來顯示線路的LinesLayer,主要代碼如下:
;
再定義鼠標(biāo)點(diǎn)擊的MouseUp事件方法function MouseUpHandler(event:MouseUp)實(shí)現(xiàn)線路信息的顯示,顯示信息就用Map控件的Infowindow組件,而且對Infowindow進(jìn)行設(shè)置,添加LinesInfo.mxml文件用來作為Infowindow的content內(nèi)容。
5 結(jié)論(Conclusion)
本文基于ArcGIS Server平臺,引入能夠創(chuàng)建高交互性、富客戶端的Flex技術(shù),使用XI組件作為數(shù)據(jù)集成中間件集成GIS數(shù)據(jù)和本地工程業(yè)務(wù)數(shù)據(jù)庫,研究并設(shè)計(jì)三層體系結(jié)構(gòu)的供水調(diào)度可視化系統(tǒng),最終實(shí)現(xiàn)了地圖數(shù)據(jù)和工程業(yè)務(wù)數(shù)據(jù)信息的疊加顯示、敏感信息的地圖圖層顯示或隱藏、工程問題線路的查詢、問題線路的信息查閱,以及專題地圖的制作等功能。由于使用了Flex技術(shù),本系統(tǒng)極大地減少了與服務(wù)器之間的通信次數(shù),減少了服務(wù)器的負(fù)荷,提高了響應(yīng)速度,并且具有強(qiáng)交互性,強(qiáng)表現(xiàn)力,界面友好且豐富,極大程度地挖掘和發(fā)揮空間數(shù)據(jù)的效用。
參考文獻(xiàn)(References)
[1] Cheng Peng,Wu Huarui,Shi Xiaoxia.Geo-visualization of agricultural products price data based on webGIS[J].Applied Mechanics and Materials,2014:1899-1902.
[2] Cheng Qianwen,Zhou Lei,Cheng Honghua.Design method for dynamic map symbols based on RIA environment[J].Applied Mechanics and Materials,2013:984-988.
[3] CHEN Shicheng.Design and Implementation of WebGIS Framework Based on Flex and ArcGIS Server[J].Geospatial Information,2014(02):109-111.
[4] ESRI公司.ArcGIS API for Flex在線幫助[EB/OL].http://resources.esri.com/help/9.3/arcgisserver/apis/flex/help/index.html.
[5] 陳光炎,陳松喬.基于ArcGIS API for Flex的污染源WebGIS研究[J].中國環(huán)境管理,2011(01):29-32.
[6] 豆丁網(wǎng).API For FLEX教程,互聯(lián)網(wǎng)文檔資源http://www.docin.com/p-300035939.html.
[7] 馮亞麗,等.基于XI的SAP系統(tǒng)與外圍系統(tǒng)集成[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,21(2):9-12.
[8] 胡瑞鵬,王漢東,黃會勇.基于WebGIS的南水北調(diào)中線水量調(diào)度信息查詢系統(tǒng)設(shè)計(jì)[J].人民長江,2014,(23):109-111.
作者簡介:
閔 ?。?978-),男,本科,助理工程師.研究領(lǐng)域:軟件開發(fā).
胡瑞鵬(1976-),男,碩士,講師.研究領(lǐng)域:GIS應(yīng)用.