黃 浩,趙遼英,蘇 程,俞偉斌
(1.杭州電子科技大學(xué)計(jì)算機(jī)應(yīng)用技術(shù)研究所,浙江杭州310018;2.浙江大學(xué)空間信息研究所,浙江杭州310027)
地理信息系統(tǒng)是一種為了獲取、存儲(chǔ)、檢索、分析和顯示空間數(shù)據(jù)而建立的空間數(shù)據(jù)庫(kù)管理系統(tǒng)。隨著Internet的普及以及Web技術(shù)的快速發(fā)展,基于Web的分布式計(jì)算技術(shù)與GIS相結(jié)合產(chǎn)生了Web-GIS。采用異步JavaScript和XML(Asynchronous JavaScript And XML,AJAX)技術(shù)改進(jìn)的WebGIS應(yīng)用具有無(wú)需插件、響應(yīng)速度快等特點(diǎn),尤其是涉及屬性、空間數(shù)據(jù)等大數(shù)據(jù)量時(shí)減少了網(wǎng)絡(luò)數(shù)據(jù)量,同時(shí)減輕了提交請(qǐng)求時(shí)的白屏現(xiàn)象,改善了用戶體驗(yàn)[1]?;赪eb Service技術(shù)的SOA架構(gòu)遵循“軟件即是服務(wù),服務(wù)即是軟件”的開(kāi)發(fā)理念,按需連接軟件資源,通過(guò)服務(wù)的組合裝配、服務(wù)的擴(kuò)展完成應(yīng)用系統(tǒng)的構(gòu)建和維護(hù)升級(jí)[2]。本文探索了基于AJAX和Web Service的WebGIS系統(tǒng)框架,并通過(guò)文成縣地質(zhì)災(zāi)害信息在線發(fā)布系統(tǒng)的開(kāi)發(fā),對(duì)其進(jìn)行驗(yàn)證。
AJAX是一種快速創(chuàng)建互聯(lián)網(wǎng)應(yīng)用程序的方法,它不是指一種單一的技術(shù),而是有機(jī)地結(jié)合網(wǎng)頁(yè)開(kāi)發(fā)相關(guān)7項(xiàng)技術(shù)[3-5]。傳統(tǒng)的Web交互方式中,由用戶觸發(fā)一個(gè)HTTP請(qǐng)求,服務(wù)器對(duì)其進(jìn)行處理后再返回一個(gè)新的網(wǎng)頁(yè)到客戶端,每當(dāng)服務(wù)器處理客戶端提交的請(qǐng)求時(shí),客戶只能空閑等待。即使從服務(wù)器端得到很簡(jiǎn)單的一個(gè)數(shù)據(jù),都要返回一個(gè)完整的網(wǎng)頁(yè),而用戶每次要浪費(fèi)時(shí)間和帶寬去重新讀取整個(gè)頁(yè)面,從而降低了Web應(yīng)用的執(zhí)行速度。如圖1所示是基于AJAX引擎的網(wǎng)頁(yè)的執(zhí)行過(guò)程。
圖1 基于AJAX引擎的網(wǎng)頁(yè)的執(zhí)行過(guò)程
而在Web開(kāi)發(fā)中使用了AJAX技術(shù)之后,這些存在的問(wèn)題將得到有效地解決。AJAX的工作原理相當(dāng)于在用戶和服務(wù)器之間加了一個(gè)中間層,使用戶操作與服務(wù)器響應(yīng)異步化。這個(gè)中間層被稱作AJAX引擎,它實(shí)際上是一個(gè)比較復(fù)雜的JavaScript應(yīng)用程序,既用來(lái)渲染用戶界面又用來(lái)處理用戶請(qǐng)求與服務(wù)器之間的通訊。它允許用戶和應(yīng)用程序之間的交互異步發(fā)生,用戶在提交相應(yīng)的操作后,無(wú)須等待頁(yè)面刷新,可以繼續(xù)作其他操作,AJAX引擎負(fù)責(zé)后臺(tái)的異步處理。另外,也并不是所有的用戶請(qǐng)求都提交給服務(wù)器,像一些數(shù)據(jù)驗(yàn)證和數(shù)據(jù)處理等都交給AJAX引擎自己來(lái)做,只有確定需要從服務(wù)器讀取新數(shù)據(jù)時(shí)才由AJAX引擎代為向服務(wù)器提交請(qǐng)求。
Web Service是建立可互操作的分布式應(yīng)用程序的新平臺(tái)。Web Service平臺(tái)是一套標(biāo)準(zhǔn),定義了應(yīng)用程序如何在Web上實(shí)現(xiàn)互操作性。可以用任何語(yǔ)言,在任何平臺(tái)上開(kāi)發(fā)Web Service,通過(guò)Web Service標(biāo)準(zhǔn)就可以對(duì)這些服務(wù)進(jìn)行查詢和訪問(wèn)。Web Service的體系架構(gòu)模型,如圖2所示。Web Service主要采用了簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol,SOAP),可擴(kuò)展標(biāo)記語(yǔ)言(eXtensible Markup Language,XML),網(wǎng)絡(luò)服務(wù)描述語(yǔ)言(Web Services Description Language,WSDL)技術(shù)。其突出優(yōu)點(diǎn)為[6]:(1)互操作性。任何的Web Service都可以與其他Web Service進(jìn)行交互。由于有了SOAP這個(gè)所有主要供應(yīng)商都支持的新標(biāo)準(zhǔn)協(xié)議,因而避免了在各種相關(guān)協(xié)議之間轉(zhuǎn)換的麻煩。還因?yàn)榭梢允褂萌魏握Z(yǔ)言來(lái)編寫(xiě)Web Service,因此開(kāi)發(fā)者無(wú)須更改其開(kāi)發(fā)環(huán)境,就可生產(chǎn)和使用Web Service;(2)普遍性。Web Service使用HTTP和XML進(jìn)行通信。因此,任何支持這些技術(shù)的設(shè)備都可以擁有和訪問(wèn)Web Service;(3)易于使用。眾多的免費(fèi)開(kāi)發(fā)工具可讓開(kāi)發(fā)者快速創(chuàng)建和部署Web Service。此外,其中某些開(kāi)發(fā)工具還可以讓已有的COM組件和JavaBean方便地成為Web Service。
圖2 Web Service體系架構(gòu)
系統(tǒng)采用B/S架構(gòu),分為4層架框體系,即數(shù)據(jù)層、邏輯層、網(wǎng)絡(luò)層及表現(xiàn)層,其總體架構(gòu)如圖3所示。
表現(xiàn)層基于Internet/Intranet,通過(guò)瀏覽器以2D的形式顯示、查詢和分析空間信息。通過(guò)AJAX引擎調(diào)用Web服務(wù)組件動(dòng)態(tài)獲取地圖數(shù)據(jù),利用JavaScript腳本語(yǔ)言操縱DOM樹(shù)進(jìn)行頁(yè)面的更新。網(wǎng)絡(luò)層主要是接收客戶端發(fā)送的XML請(qǐng)求,根據(jù)預(yù)先制定的規(guī)范對(duì)XML進(jìn)行解譯,然后根據(jù)解譯結(jié)果動(dòng)態(tài)的調(diào)用邏輯層中Web服務(wù)的具體服務(wù)。當(dāng)請(qǐng)求經(jīng)過(guò)處理計(jì)算完畢后,網(wǎng)絡(luò)層負(fù)責(zé)將計(jì)算結(jié)果以XML形式進(jìn)行打包,然后返回給對(duì)應(yīng)的客戶端。邏輯層主要是負(fù)責(zé)分布式網(wǎng)絡(luò)環(huán)境下各類空間數(shù)據(jù)的獲取。服務(wù)的主要內(nèi)容是依據(jù)公認(rèn)標(biāo)準(zhǔn)的服務(wù)規(guī)范來(lái)構(gòu)建的服務(wù)組件庫(kù),主要有基于OGC、KML和GeoRSS開(kāi)放標(biāo)準(zhǔn)提供的WMS服務(wù)組件、WFS服務(wù)組件、WCS服務(wù)組件、KML服務(wù)組件和GeoRSS服務(wù)組件等,服務(wù)都是通過(guò)以Web Service的形式進(jìn)行封裝。而GIS服務(wù)器僅是通過(guò)http協(xié)議為這些Web服務(wù)提供地圖圖片,這樣就減輕了GIS服務(wù)器的負(fù)擔(dān)。數(shù)據(jù)層主要是存儲(chǔ)在MS-SQLSEVER數(shù)據(jù)庫(kù)的空間數(shù)據(jù)以及屬性數(shù)據(jù),其中,柵格數(shù)據(jù)由于數(shù)據(jù)量龐大,還需要使用瓦片金字塔技術(shù)進(jìn)行構(gòu)建,然后將根據(jù)圖片的性質(zhì)進(jìn)行壓縮,存儲(chǔ)到數(shù)據(jù)庫(kù)。
圖3 系統(tǒng)架構(gòu)圖
本文采用B/S結(jié)構(gòu),因此客戶端實(shí)際上就是Web瀏覽器。主流的瀏覽器有IE、Chrome和Firefox等。針對(duì)客戶端的開(kāi)發(fā)實(shí)際上就是利用JavaScript開(kāi)發(fā)AJAX引擎,構(gòu)建AJAX化的客戶端。功能上來(lái)說(shuō),客戶端是用戶的交互界面,主要完成地圖的顯示、響應(yīng)用戶的操作、向服務(wù)器發(fā)送查詢請(qǐng)求并將請(qǐng)求結(jié)果的顯現(xiàn)。AJAX引擎的XmlHttpRequest對(duì)象所具有的方法和屬性能夠改進(jìn)程序與服務(wù)器的通信方式,實(shí)現(xiàn)異步請(qǐng)求。用戶在客戶端的操作都可以轉(zhuǎn)化為一定的參數(shù),通過(guò)XmlHttpRequest對(duì)象傳給邏輯層,服務(wù)器獲取參數(shù)進(jìn)行處理后,再通過(guò)XmlHttpRequest對(duì)象將數(shù)據(jù)返回,這樣就能有效地減少網(wǎng)絡(luò)通信開(kāi)銷,大大提高了用戶操作的響應(yīng)速度。然后,只需要通過(guò)XmlHttpRequest對(duì)象將新的地圖比例尺傳遞給后臺(tái),而后臺(tái)重新將新比例尺對(duì)應(yīng)的小圖片返回即可。
基于AJAX的空間信息在線發(fā)布技術(shù)中,所有的請(qǐng)求都是通過(guò)以XML的形式進(jìn)行傳輸。XML是一種可擴(kuò)展的基于文本的標(biāo)記語(yǔ)言。它以與系統(tǒng)無(wú)關(guān)的方式表示數(shù)據(jù),將數(shù)據(jù)和表達(dá)形式分離,可以在相似或不同的應(yīng)用程序環(huán)境間操作。XML的優(yōu)點(diǎn)包括:純文本,便于創(chuàng)建和編輯;易操作、易分析、層次結(jié)構(gòu)清晰;提供了一種描述結(jié)構(gòu)數(shù)據(jù)的格式,具有樣式多樣性、內(nèi)在可重用性、可移植性、可鏈接性等特點(diǎn)。由于XML是可閱讀的和基于文本的,所以用作傳輸松耦合的Web服務(wù)十分理想。使用XML作為表示數(shù)據(jù)的標(biāo)準(zhǔn),能夠讓異構(gòu)平臺(tái)上不同系統(tǒng)相互通信和共享數(shù)據(jù)。系統(tǒng)將各類用戶的功能請(qǐng)求操作,用XML的規(guī)范進(jìn)行描述,然后通過(guò)HTTP發(fā)送到服務(wù)端,服務(wù)器端接收到請(qǐng)求后,進(jìn)行解析,然后調(diào)用相關(guān)的Web Service處理計(jì)算,最后將結(jié)果同樣以XML的形式進(jìn)行包裝后,返回到客戶端。
服務(wù)器端主要包括Web服務(wù)和GIS服務(wù)器,Web服務(wù)主要是對(duì)運(yùn)行于Web服務(wù)器上Web Service的編寫(xiě)。這些Web Service主要是完成從數(shù)據(jù)庫(kù)服務(wù)器中檢索相關(guān)的屬性數(shù)據(jù),進(jìn)行簡(jiǎn)單的組織和分析等功能,主要包括屬性查詢、數(shù)據(jù)處理等。Web服務(wù)負(fù)責(zé)將復(fù)雜GIS功能轉(zhuǎn)交GIS服務(wù)器處理,并且將GIS服務(wù)器處理后輸出切片的URL返回給客戶端。GIS服務(wù)器實(shí)現(xiàn)客戶端復(fù)雜的GIS分析功能,主要有:(1)實(shí)現(xiàn)不同比例下矢量地圖到柵格地圖切片的預(yù)生成;(2)將矢量地圖中地物的屬性數(shù)據(jù)轉(zhuǎn)入數(shù)據(jù)庫(kù)中存儲(chǔ);(3)解析用戶的復(fù)雜查詢請(qǐng)求,并針對(duì)用戶的請(qǐng)求進(jìn)行GIS空間操作請(qǐng)求,將結(jié)果返回給客戶端,實(shí)現(xiàn)GIS桌面平臺(tái)的部分功能。
減輕地質(zhì)災(zāi)害已成為我國(guó)當(dāng)前面臨的最緊迫的任務(wù)之一。WebGIS技術(shù)在我國(guó)地質(zhì)災(zāi)害防治工程建設(shè)中的應(yīng)用還處于起步階段,還有許多工作要做。其中建立一個(gè)高效、快捷的地質(zhì)災(zāi)害信息網(wǎng)絡(luò)發(fā)布、共享平臺(tái)是其基礎(chǔ)。本系統(tǒng)采用Visual Studio2008.NET進(jìn)行開(kāi)發(fā),使用IIS作為Web服務(wù)器,以浙江省文成縣地質(zhì)災(zāi)害數(shù)據(jù)為研究對(duì)象,基于AJAX和Web Service技術(shù),設(shè)計(jì)和開(kāi)發(fā)了文成縣地質(zhì)災(zāi)害信息在線發(fā)布系統(tǒng)。系統(tǒng)功能主要有以下幾個(gè):(1)基本地圖操作功能;(2)查詢功能;(3)自定義圖層顯示功能。
本文主要介紹了基于AJAX和Web Service的空間信息發(fā)布機(jī)制,并以此方法設(shè)計(jì)實(shí)現(xiàn)了文成縣地質(zhì)災(zāi)害信息在線發(fā)布系統(tǒng)。通過(guò)引進(jìn)AJAX技術(shù),可以提高系統(tǒng)的性能和響應(yīng)速度,帶來(lái)良好的用戶體驗(yàn)。同時(shí)以基于XML Web Service技術(shù)實(shí)現(xiàn)WebGIS服務(wù)器端,屏蔽了數(shù)據(jù)格式、軟硬件環(huán)境以及所在位置的差異,實(shí)現(xiàn)了分布式網(wǎng)絡(luò)環(huán)境下空間信息的高效在線發(fā)布。可以相信,隨著AJAX技術(shù)和Web Service技術(shù)的發(fā)展與成熟,其必將推動(dòng)界面更豐富、功能更全面的WebGIS系統(tǒng)的開(kāi)發(fā)與應(yīng)用,地理信息資源也會(huì)像其他網(wǎng)絡(luò)資源一樣,為普通大眾所廣泛使用,從而創(chuàng)造更多的社會(huì)和經(jīng)濟(jì)價(jià)值。
[1] 范阿南,朱教君,張忠輝.基于AJAX的WebGIS應(yīng)用[J].遼寧工程技術(shù)大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,29(3):494-497.
[2] 劉奎恩,王青,淮曉永.一種基于VNC的智能應(yīng)用服務(wù)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2006,40(9):131-134.
[3] Ryan Asleson,Nathaniel T.Schutta.Ajax基礎(chǔ)教程[M].北京:人民郵電出版社,2006:68-72.
[4] 周牧,談曉軍,左翔,等.基于AJAX和XML的WebGIS系統(tǒng)研究[J].計(jì)算機(jī)工程,2009,35(3):271-273.
[5] 趙娜.基于AJAX技術(shù)的WebGIS系統(tǒng)應(yīng)用研究與實(shí)現(xiàn)[D].上海:華東師范大學(xué),2009.
[6] 徐澤豐,王志堅(jiān),許峰,等.基于Web Service技術(shù)的數(shù)據(jù)庫(kù)中間件[J].微機(jī)發(fā)展,2004,14(3):64-66.