陳士城 ,劉曉春 ,劉 旭 ,張 林
(1.蘇州市數(shù)字城市工程研究中心有限公司,江蘇 蘇州 215021; 2 .徐州市賈汪區(qū)國土資源局,江蘇 徐州 221011)
基于Flex和ArcGIS Server的WebGIS框架設(shè)計與應(yīng)用
陳士城1,劉曉春1,劉 旭2,張 林1
(1.蘇州市數(shù)字城市工程研究中心有限公司,江蘇 蘇州 215021; 2 .徐州市賈汪區(qū)國土資源局,江蘇 徐州 221011)
基于Flex及ArcGIS Server技術(shù),設(shè)計了一套交互性好、實用性和擴展性強的WebGIS系統(tǒng)框架。闡述了框架各組件的相互關(guān)系及實現(xiàn)方式,并利用該框架建立了蘇州市相城區(qū)水利決策支持系統(tǒng)。該框架可提高開發(fā)效率、增強用戶體驗,運行效果良好,具有一定的參考價值。
Flex;ArcGIS Server;WebGIS;框架設(shè)計;地理信息系統(tǒng)
傳統(tǒng)WebGIS存在一定的缺陷:①采用JSP或JSF作為系統(tǒng)表現(xiàn)層,系統(tǒng)用戶界面的表現(xiàn)力較弱,交互性不強,難以滿足用戶豐富體驗的要求;②將用戶請求集中于服務(wù)器端處理,沒有充分利用客戶端的資源,造成寬帶資源的消耗與浪費[1-3]。富互聯(lián)網(wǎng)應(yīng)用(RIA)技術(shù)的出現(xiàn)使得Web應(yīng)用程序不僅具有B/S架構(gòu)支持跨平臺、易部署的優(yōu)勢,而且具有C/S架構(gòu)良好的人機交互優(yōu)勢[4,5]。目前,基于RIA技術(shù)的WebGIS系統(tǒng)開發(fā)主要有Flex技術(shù)和Silverlight技術(shù)等。同傳統(tǒng)Web技術(shù)相比,F(xiàn)lex能夠創(chuàng)建更為豐富的用戶界面、具有更強的交互性和快速響應(yīng)能力,平衡客戶端與服務(wù)端的計算負載[6,7]。為了克服傳統(tǒng)WebGIS的缺陷與不足,本文基于Flex和ArcGIS Server技術(shù)研究設(shè)計了一套交互性、實用性和擴展性強的WebGIS系統(tǒng)框架。
基于Flex和ArcGIS Server的WebGIS應(yīng)用系統(tǒng)框架分為3層:表現(xiàn)層、應(yīng)用業(yè)務(wù)層和數(shù)據(jù)層。
1)表現(xiàn)層主要是借助于ArcGIS API for Flex和Flex富互聯(lián)網(wǎng)應(yīng)用技術(shù),為用戶展示和提供一個人機交互的界面,可完成地圖操作和相關(guān)業(yè)務(wù)功能。系統(tǒng)主要運行在Web瀏覽器和Flash播放器中[8]。
2)應(yīng)用業(yè)務(wù)層是整個系統(tǒng)框架的核心,負責(zé)系統(tǒng)運行的業(yè)務(wù)邏輯,接收來自瀏覽器端的請求,并根據(jù)請求作出響應(yīng)。該層可具體分為普通業(yè)務(wù)、地圖業(yè)務(wù)和綜合業(yè)務(wù)。普通業(yè)務(wù)主要通過Flex的WebService技術(shù)與J2EE應(yīng)用服務(wù)器進行交互實現(xiàn);地圖業(yè)務(wù)主要通過REST協(xié)議與ArcGIS Server服務(wù)器進行交互來完成相關(guān)操作;綜合業(yè)務(wù)則是將普通業(yè)務(wù)和地圖業(yè)務(wù)組合起來完成業(yè)務(wù)操作。
3)數(shù)據(jù)層主要包括空間數(shù)據(jù)庫、屬性數(shù)據(jù)庫和其他相關(guān)文件數(shù)據(jù)??臻g數(shù)據(jù)庫的建立是通過ArcSDE空間數(shù)據(jù)庫引擎將空間數(shù)據(jù)保存至商用關(guān)系型數(shù)據(jù)庫中(Oracle、SQL Server、DB2 等),由 ArcMap、ArcCatlog和ArcSDE統(tǒng)一管理。屬性數(shù)據(jù)存放在所選用的關(guān)系型數(shù)據(jù)庫中,方便統(tǒng)一管理調(diào)用。其他文件數(shù)據(jù)(圖片、視頻等)以文件的形式存儲在對應(yīng)的服務(wù)器中。
本框架系統(tǒng)以插件(Widget)方式開發(fā)。每一個功能模塊作為一個單獨的Widget,通過簡單的配置就可加載到系統(tǒng)中。在框架中,Widget的開發(fā)只需要實現(xiàn)特定的接口或直接繼承己實現(xiàn)接口的超類即可。實現(xiàn)一個Widget最基本的方式是繼承已實現(xiàn)IBaseWidget接口的BaseWidget類,這樣通過配置可直接加載到系統(tǒng)中,所有初始化工作由框架自動完成,開發(fā)者只需關(guān)注具體的業(yè)務(wù)功能開發(fā)。
在框架中,每個Widget是一個獨立完整的程序模塊,具備相應(yīng)的3層結(jié)構(gòu): Model(模型)層、View(視圖)層和Controller(控制)層。這種模式的支持依賴于pureMVC框架實現(xiàn)。pureMVC是基于MVC 的一個輕量級開發(fā)框架,目的是降低模塊間的耦合性,創(chuàng)建易擴展、易維護的應(yīng)用程序。pureMVC通過發(fā)送消息的方式處理這3層的通信從而降低3層間的耦合度[9]。pureMVC中對應(yīng)的組件有:View層,Widget組件中的界面部分;Controller層,Mediator組件;Model層,Proxy組件。界面組件通過與用戶交互產(chǎn)生操作并分發(fā)事件,Mediator獲取事件,并調(diào)用相應(yīng)的Proxy處理業(yè)務(wù)邏輯。邏輯處理會相應(yīng)地改變Proxy中的數(shù)據(jù),由于Proxy中的數(shù)據(jù)和界面組件進行了數(shù)據(jù)綁定,所以數(shù)據(jù)的更改會實時地反映到界面中來。
在系統(tǒng)啟動時,框架會根據(jù)配置文件進行初始化,包括初始化組件以及組件容器,并將對應(yīng)的描述信息通過特定的接口注冊到框架中,開始加載初始化啟動的Widget。在配置文件中,主要包括基本通用組件配置(負責(zé)與服務(wù)器端通信)、Widget容器組件配置(初始化Widget在容器中的布局)和Widget組件配置(對應(yīng)的文件及相關(guān)描述信息)。
第一次加載Widget時會自動根據(jù)相應(yīng)的配置生成上下文環(huán)境,并加載到對應(yīng)的容器中,調(diào)用初始化方法對相應(yīng)的業(yè)務(wù)邏輯進行初始化工作。如果此Widget依賴于其他Widget,則會先自動加載所依賴的Widget,再加載自身。加載后的Widget會根據(jù)其容器定義的布局方式進行布局,從而將界面顯示到主系統(tǒng)界面中。
2.2.1 創(chuàng)建Widget組件
在開發(fā)一個Widget模塊時,首先根據(jù)需求將功能分解,以粗粒度的方式將功能分解成一個或多個子模塊,每一個子模塊負責(zé)實現(xiàn)一些相對集中的功能,而子模塊對應(yīng)的就是一個Widget,如一個模塊可分為3個子模塊,就可用3個子Widget來協(xié)作完成整個模塊的功能;然后分別創(chuàng)建每一個Widget組件,并定義好Widget之間的交互接口,包括“消息名稱”和“消息參數(shù)”。實現(xiàn)Widget之間耦合度最低的方式是通過發(fā)送消息進行,這樣Widget之間不但沒有直接引用對方的功能,而且沒有依賴對方的接口。當(dāng)一個Widget需要其他Widget實現(xiàn)某項功能時,只需發(fā)送消息并把所需要的參數(shù)傳遞過去。此時Widget會監(jiān)聽到消息并獲取參數(shù)執(zhí)行相應(yīng)的邏輯,而完成數(shù)據(jù)的處理。
2.2.2 Mediator的設(shè)計
完成Widget的創(chuàng)建后,為了實現(xiàn)正常的通信,還需創(chuàng)建Mediator并與Widget關(guān)聯(lián)。在框架中,每一個Widget都需要關(guān)聯(lián)一個Mediator,這樣Widget就可和其他Widget以發(fā)送接收消息的方式進行通信,Mediator扮演發(fā)送器以及接收器的角色。在Mediator里,可調(diào)用通道發(fā)送消息,也可監(jiān)聽通道中的消息進行響應(yīng)。
2.2.3 Proxy的設(shè)計
在框架中,Proxy負責(zé)業(yè)務(wù)邏輯的處理,主要是對各種數(shù)據(jù)操作的封裝,包括遠程數(shù)據(jù)和本地數(shù)據(jù)。Proxy中的數(shù)據(jù)和Widget視圖組件是綁定的,對Proxy中的數(shù)據(jù)進行操作會相應(yīng)地反映到界面當(dāng)中,這樣用戶就可實時看到交互的結(jié)果。創(chuàng)建Proxy時,首先要根據(jù)需求設(shè)計好對應(yīng)的接口以及操作,定義好后就可創(chuàng)建一個具體的Proxy組件實現(xiàn)這個接口。
基于上述框架,開發(fā)了蘇州市相城區(qū)水利決策支持系統(tǒng),主要包括查詢檢索、事件管理、地圖編輯、圖層管理、Excel上傳、地圖打印、模塊管理、監(jiān)控監(jiān)測等功能模塊。地圖服務(wù)采用ArcGIS Server 9.3發(fā)布,將相城區(qū)底圖、水利相關(guān)要素以緩存地圖服務(wù)和動態(tài)地圖服務(wù)的形式發(fā)布。系統(tǒng)中采用SQL Server2005數(shù)據(jù)庫存儲空間數(shù)據(jù)和相關(guān)業(yè)務(wù)屬性數(shù)據(jù)。在系統(tǒng)中,可實現(xiàn)地理要素屬性的查詢、編輯等操作,以及相應(yīng)的業(yè)務(wù)功能。系統(tǒng)運行效果如圖1所示。
圖1 系統(tǒng)運行主界面
[1] 劉俊, 譚建軍, 邵長高. 基于Flex 的WebGIS 框架設(shè)計與實現(xiàn)[J]. 計算機工程, 2010, 36(10):242-244
[2] 楊明, 李全. 基于J2EE 和ArcIMS 的地籍管理WebGIS[J]. 計算機工程, 2007, 33(15): 267-268
[3] 劉二年, 豐江帆, 張宏. 基于Flex的環(huán)保WebGIS研究[J].測繪與空間地理信息, 2006, 29(2): 71-72
[4] 張康壽, 馮兵, 孫燕剛,等. 基于RIA和Web Services的WebGIS系統(tǒng)的開發(fā)[J]. 地理空間信息, 2009, 7(2):109-110
[5] 劉二年. 基于Rich Internet Application 技術(shù)的WebGIS 研究[D].南京: 南京師范大學(xué), 2006
[6] 趙振華, 廉東本. 基于Flex 的WebGIS 框架的研究與應(yīng)用[J].計算機系統(tǒng)應(yīng)用, 2011, 20(11):146-149
[7] 汪林林, 胡德華, 王佐成,等. 基于Flex的RIA WebGIS研究與實現(xiàn)[J]. 計算機應(yīng)用, 2008 , 28(12): 3 257-3 260
[8] 袁煜鋒. 基于Flex與Rest的WebGIS研究[D]. 上海: 華東師范大學(xué), 2009
[9] 徐杏芳, 夏浩波, 王康. MVC模式在Flex框架的應(yīng)用研究[J].長江大學(xué)學(xué)報, 2008, 5(4): 325-327
Design and Implementation of WebGIS Framework Based on Flex and ArcGIS Server
byCHEN Shicheng
The Flex and ArcGIS Server were used to design a WebGIS system framework with high interaction, practice and expansibility in this paper. This paper also elaborated the realization mode of controls and their relationship. Finally, the water conservation decision support system of Xiangcheng was constructed using this framework.The application shows that the framework can improve development effi ciency and user experience, as well as satisfying operational eff ect and having a certain reference value.
Flex, ArcGIS Server, WebGIS, framework design, GIS
P208
B
1672-4623(2014)02-0109-02
10.11709/j.issn.1672-4623.2014.02.038
2012-10-23。
項目來源:江蘇省自然科學(xué)基金資助項目(BK2011343);江蘇省企業(yè)院士工作站資助項目(BM2010509);科技部中小企業(yè)技術(shù)創(chuàng)新基金資助項目(11C26213201271);蘇州市科技局2012年度科技計劃資助項目(SS201231)。
陳士城,碩士,工程師,主要研究方向為地理信息系統(tǒng)開發(fā)。