李心穎+李峰
摘要:通過對SVG和Ajax技術在WebGIS中的應用進行分析,同時針對分布式Web應用性能低、時常交互不順暢、可伸縮性不夠的問題,結(jié)合REST式的體系風格和面向資源架構(gòu)ROA,使用Web Services來開發(fā)Web分布式應用,建立基于SVG/AJAX和REST的WebGIS體系架構(gòu),以實現(xiàn)對基于WebGIS的海南旅游地理信息系統(tǒng)的優(yōu)化。
關鍵詞:SVG;Ajax;REST;WebGIS
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)28-0083-03
Abstract:Based on SVG and Ajax technology in the application of WebGIS is analyzed, at the same time, in view of the distributed Web application performance is low, often interaction is not smooth, the lack of scalability, combined with restful style of system and resource oriented architecture ROA, use Web Services to develop Web distributed applications, based on SVG/Ajax and REST of WebGIS architecture, to realize the optimization of hainan tourism geographic information system based on WebGIS.
Key words:SVG; Ajax; REST; WebGIS
作為GIS與Internet相結(jié)合的產(chǎn)物,WebGIS通過互聯(lián)網(wǎng)對以圖形、圖像方式表現(xiàn)的空間數(shù)據(jù)和其屬性數(shù)據(jù)進行發(fā)布、信息檢索、空間分析和應用,以實現(xiàn)空間數(shù)據(jù)的共享和互操作。但傳統(tǒng)的Web語言HTML不利于表現(xiàn)空間地理數(shù)據(jù),加上網(wǎng)絡帶寬的限制,基于WebGIS的空間信息發(fā)布也并不十分理想。因此WebGIS設計的主要問題是如何能減輕網(wǎng)絡傳輸負載,客戶端采用何種圖形數(shù)據(jù)方式進行顯示,并加快地圖顯示速度,同時此平臺應具備地圖數(shù)據(jù)量小、傳輸方便、GIS數(shù)據(jù)更新快、較強的多媒體信息表現(xiàn)能力等特性。
1 SVG和Ajax技術
SVG是一種開放標準,用來描述網(wǎng)絡的基于二維矢量圖形的一種圖形格式,使用SVG技術能在網(wǎng)頁上顯示出各種高品質(zhì)的矢量圖形,如圖形、文字、色彩、動畫、特效等。且SVG使用 XML格式定義圖形,其可擴展性很強,SVG圖像在放大或改變尺寸的情況下不會破壞其圖形質(zhì)量。
Ajax在XHTML和CSS基礎上,使用DOM來實現(xiàn)數(shù)據(jù)的動態(tài)顯示和交互,用JavaScript綁定和處理所有數(shù)據(jù),利用XML和XSTL語言對數(shù)據(jù)進行交換與處理,使用XMLHttpReques對象讀取異步數(shù)據(jù)。Ajax提供與服務器異步通信的能力,它在瀏覽器與Web服務器之間使用異步數(shù)據(jù)傳輸(HTTP請求),用戶需要的數(shù)據(jù)可以獨立于實際網(wǎng)頁,從服務器端取得并且被動態(tài)地寫入網(wǎng)頁中。同時還可以把服務器以前承擔的一些工作任務轉(zhuǎn)交給用戶端,在客戶端閑置時來處理這些工作,以此減輕服務器和帶寬的負載,并極大地縮短了用戶等待時間,提高工作效率。
2 REST風格的Web服務
REST是一種架構(gòu)風格或者設計原則,滿足這些原則的設計就是RESTful。REST風格架構(gòu)是為了降低Web應用開發(fā)的復雜性、提高系統(tǒng)的可伸縮性而設計的。利用REST,任何Web上的資源都可以被當作URI提供,每個資源對應的資源標識符是唯一的,無論對資源做何種操作都不會改變資源標識符。通過URI客戶端應用可以獲取資源的表現(xiàn)形式,同一個資源有多種不同的表現(xiàn)形式,在服務器獲得這些資源表現(xiàn)狀態(tài)后,驅(qū)動客戶端應用程序轉(zhuǎn)變其狀態(tài),于是客戶端應用程序隨著每個資源表現(xiàn)狀態(tài)的不同而發(fā)生狀態(tài)轉(zhuǎn)移。通過設計REST式的Web服務方法,ROA(Resource-Oriented Architecture,面向資源的體系架構(gòu))使URI、HTTP和XML的工作方式跟其他Web應用一樣。
REST架構(gòu)是一種風格明確、簡單易用的架構(gòu)。REST支持直接通過 HTTP 傳輸數(shù)據(jù),使用 REST體系結(jié)構(gòu)構(gòu)建 Web 服務已經(jīng)開始替代傳統(tǒng)的 Web 服務構(gòu)建方式。遠程過程調(diào)用(RPC)式的應用是通過自定義接口的方法來抽象WEB服務,而REST架構(gòu)采用標準的HTTP方法,可以增強系統(tǒng)與系統(tǒng)之間的整合能力和提高互操作性。對于分布式的應用而言,任意給定兩個服務請求可以在任何一臺服務器上執(zhí)行,因為其之間沒有存在相互的狀態(tài)依賴關系,所以無需對其進行相互協(xié)同處理,其應用很容易在服務器端支持負載均衡。
3 Ajax與WebGIS
傳統(tǒng)Web應用模型的運行過程是客戶提交給Web服務器一個HTTP請求,服務器接到這個請求后,把處理結(jié)果返回一個HTML頁面給客戶端。用戶若沒有得到服務器的響應的時間里一直處于等待狀態(tài),瀏覽器由于頁面刷新出現(xiàn)白屏。這個過程不斷循環(huán)直到用戶退出,整個過程是同步的。
Ajax模型與傳統(tǒng)模型的不同之處在于服務響應的異步性。這是通過在客戶端與服務端之間的Ajax引擎(Ajax Engine)實現(xiàn)的。Ajax引擎將客戶端的頁面分解為數(shù)據(jù)層、控制層和表現(xiàn)層。AJAX通過JavaScript的XMLHttpRequestt對象提供客戶端同HTTP服務器異步通信的協(xié)議,Ajax可以使頁面像桌面程序一樣同服務器端進行數(shù)據(jù)層面的交換。不需要每次都刷新頁面,每次的數(shù)據(jù)處理工作也不用都交給服務器來完成,這樣既減輕了服務器負擔又加快了響應速度,縮短了用戶等待的時間。
在WebGIS應用中,客戶與服務器端需要即時的交互響應和大量的通信,空間數(shù)據(jù)以圖片形式傳輸,因此可以使用Ajax技術開發(fā)為基礎。在基于OGC標準的WMS服務實現(xiàn)地圖服務的方法中,采用Ajax技術實現(xiàn)客戶端與服務器的異步通信,Ajax引擎按用戶需求來獲取空間信息,以減少冗余請求和響應對服務端造成的負擔,使整個WebGIS的性能得到提高。
4 基于SVG/Ajax/REST的WebGIS體系架構(gòu)的構(gòu)建與實現(xiàn)
4.1 基于SVG/Ajax/REST的WebGIS體系架構(gòu)
從客戶端來講,Ajax可以提供很好的圖形用戶界面,Ajax將網(wǎng)頁的結(jié)構(gòu)與內(nèi)容分開,用戶端設計友好的網(wǎng)頁界面,從服務器端獲取相應的數(shù)據(jù)。WebGIS應用中最重要的是數(shù)據(jù)服務,如地理數(shù)據(jù)的搜索與查詢、瀏覽等。而REST提出的客戶端緩存思想與Ajax 吻合,結(jié)合REST的特性,將GIS數(shù)據(jù)服務建成REST風格的Web服務,REST風格的數(shù)據(jù)資源可以通過HTTP動作獲得,瀏覽器獲取數(shù)據(jù)與用戶操作異步,加快獲取地理數(shù)據(jù)的速度。且SVG的許多特性應用在WebGIS中可以提供高質(zhì)量的WebGIS服務。
綜上所述,結(jié)合SVG、Ajax 與REST風格來構(gòu)建以數(shù)據(jù)為中心的WebGIS架構(gòu)是可行的。
基于SVG/Ajax/REST的WebGIS體系架構(gòu)如圖所示,本架構(gòu)分三層,分別是數(shù)據(jù)層、服務層和表示層。數(shù)據(jù)層提供基礎數(shù)據(jù)Web服務,以REST方式提供給用戶所需要的數(shù)據(jù),客戶端通過URL遠程使用需要的數(shù)據(jù)??蛻舳藢⒕W(wǎng)頁的框架與數(shù)據(jù)分開,通過Java Script調(diào)用客戶端上的Ajax引擎,異步地向服務器發(fā)送HTTP請求,地理信息中的柵格數(shù)據(jù)以XML數(shù)據(jù)格式從服務器端向客戶端發(fā)送數(shù)據(jù),通過服務器端的URI來識別所需資源(即數(shù)據(jù)),數(shù)據(jù)以XML、JSON、SVG等格式傳回給客戶端 Ajax引擎,再由客戶端圖像引擎將XML格式數(shù)據(jù)轉(zhuǎn)換為SVG對象在客戶端SVG插件中顯示。
4.2 基于SVG/Ajax/REST的WebGIS實現(xiàn)
基于以上服務架構(gòu),對基于WebGIS的海南旅游地理信息系統(tǒng)進行優(yōu)化??蛻舳藢崿F(xiàn)地圖的顯示、預覽、縮放及查詢功能,以Ajax的方式與Web應用服務層進行交互,Web應用服務器響應客戶的請求。地圖服務器根據(jù)應用服務器發(fā)送的服務請求調(diào)用REST風格的Web服務,處理客戶請求和對空間數(shù)據(jù)進行操作,數(shù)據(jù)中心用來提供SVG數(shù)據(jù),包括地理空間數(shù)據(jù)和屬性數(shù)據(jù)。
系統(tǒng)優(yōu)化后所實現(xiàn)的主要功能如下:
1)空間數(shù)據(jù)可視化與發(fā)布
WebGIS中將柵格地圖轉(zhuǎn)換為SVG格式,以SVG圖形方式顯示系統(tǒng)的地理空間數(shù)據(jù),并支持XML定義圖形,在分辨率變化的情況下圖形質(zhì)量不發(fā)生改變,實現(xiàn)數(shù)據(jù)的可視化。通過XML傳輸方式,把空間圖形及屬性數(shù)據(jù)發(fā)送到客戶端的瀏覽器上,客戶端通過SVG圖像引擎轉(zhuǎn)換為SVG圖像供用戶使用。
2)空間數(shù)據(jù)查詢檢索
通過Ajax實現(xiàn)服務器與瀏覽器的交互,WebGIS可以實現(xiàn)對圖形及屬性數(shù)據(jù)的查詢檢索,并遠程操作這些數(shù)據(jù)。查詢分為兩類:屬性查詢和空間查詢。在屬性查詢中用戶可以根據(jù)空間對象的文字性屬性值快速查出地圖中符合條件的空間對象的具體位置,空間查詢可以根據(jù)空間對象的空間屬性值快速的在地圖中確定符合條件的目標。
3)空間地圖管理
提供給用戶瀏覽的地圖操作功能,包括地圖的縮放、漫游、點選、區(qū)域選擇、鷹眼、全景、圖層控制等地圖操作。通過Ajax/REST模式用戶可以更加快捷、方便地操作地圖。利用AjaxControls的MapControl(地圖控件)、ToolbarControl(工具條控件)、PanToolControl(地圖漫游控件)、ViewEntireToolControl(全圖顯示控件)、QuickZoomOutToolControl(地圖快速縮小控件)、QuickZoomInToolControl(地圖快速放大控件)等實現(xiàn)對地圖的操作。
5 結(jié)論
通過對SVG、Ajax技術及REST的研究,REST特性的Web服務更適應于GIS在Web上提供數(shù)據(jù)服務;把REST與Ajax的優(yōu)勢相結(jié)合,使用Ajax調(diào)用WCF Web Services一樣也可以提高Web用戶的體驗;SVG是基于可擴展標記語言格式的,便于在網(wǎng)絡發(fā)布、傳輸空間數(shù)據(jù),同時有跨平臺數(shù)據(jù)量少、傳輸效率高的優(yōu)點。因此構(gòu)建SVG/Ajax/REST的WebGIS體系架構(gòu)有如下特點:1)訪問速度快。由于Ajax的異步通信能力,能實現(xiàn)整個頁面不用刷新也能更新頁面的效果,從而減少了從服務器端下載數(shù)據(jù)的數(shù)量,提高了響應速度。 2)可伸縮性強。利用當前Web基礎設施,多個客戶與GIS Web服務交互,不會導致網(wǎng)絡負載的明顯增加。3)良好的互操作性。基于REST原則構(gòu)建的WebGIS強調(diào)服務間的通信協(xié)議,具有松散耦合的特點,因此有助于GIS互操作的實現(xiàn)。4)降低開發(fā)成本,提高了WebGIS的運行效率。
參考文獻:
[1] 孫鴿.郭朝珍.基于SVG的WebGIS空間分析系統(tǒng)的研究與實現(xiàn)[J].小型微型計算機系統(tǒng),2012(5).
[2] 李學義,李巖.SVG在線空間自相關分析方法及其應用[J].地理與地理信息科學,2012(5).
[3] 周春峰.基于Flex_REST的WebGIS研究[D].阜新:遼寧工程技術大學,2011.
[4] 夏浩波,徐杏芳.Ajax在WebGIS中的應用研究[J]. 長江大學學報:自科版, 2008(4):307-308.
[5] 毛峰.基于REST風格地理空間信息服務的WebGIS設計與實現(xiàn)[D].杭州:浙江大學,2010.
[6] 陳宏飛.基于SVG與Ajax技術的WebGIS的研究與設計[D].西安:陜西師范大學,2009.