摘要:針對電子地圖交互操作過程中的響應(yīng)速度問題,從地圖小圖像拼接的角度出發(fā),提出一種基于AJAX技術(shù)的電子地圖平滑移動(dòng)算法。當(dāng)對電子地圖進(jìn)行平移操作時(shí),地圖小圖像能夠迅速、平滑地拼接成為一幅完整的地圖圖像并顯示在客戶端頁面上。在此基礎(chǔ)上進(jìn)一步給出相應(yīng)的地圖初始化和縮放操作的實(shí)現(xiàn)方法。試驗(yàn)結(jié)果表明,運(yùn)用此方法可以迅速創(chuàng)建電子地圖,流暢地對電子地圖進(jìn)行平移和縮放操作,有效地減少用戶操作間歇的等待時(shí)間,提高用戶的工作效率。
關(guān)鍵詞:圖像拼接;平滑移動(dòng);坐標(biāo)變換;AJAX
中圖分類號(hào):TP399
文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004—373X(2008)04—131—03
Web—GIS是集計(jì)算機(jī)科學(xué)、地理學(xué)、數(shù)學(xué)等為一體的新興科學(xué)。隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,Web—GIS也在更多的B/s應(yīng)用軟件中得以發(fā)揮自己的能力。在這些應(yīng)用軟件中,用戶與地圖之間的交互響應(yīng)速度是一個(gè)決定軟件可操作性的重要標(biāo)準(zhǔn)。
初期的Web—GIS采用CGI方式。CGI是一種連接應(yīng)用軟件和Web服務(wù)器的標(biāo)準(zhǔn)技術(shù),是HTML的功能擴(kuò)展。其優(yōu)點(diǎn)是程序簡單。但同時(shí)存在啟動(dòng)時(shí)間長,反復(fù)裝載數(shù)據(jù)等缺陷。
隨后Applet,ActiveX等技術(shù)被用于客戶端的開發(fā)。他們嵌入網(wǎng)頁運(yùn)行,功能較強(qiáng),但其與服務(wù)端耦合度高,初次使用前要下載并安裝相應(yīng)程序。這對普通用戶是種負(fù)擔(dān),用戶在操作過程中常陷入長時(shí)間的等待。
AJAX技術(shù)的出現(xiàn)消除了網(wǎng)絡(luò)交互過程中的等待缺點(diǎn),在從服務(wù)器讀取數(shù)據(jù)的過程中,用戶可以繼續(xù)使用其他功能而不必等待,這種異步傳輸?shù)奶匦允褂脩裟軌蚋恿鲿车貙Φ貓D進(jìn)行操作。
本文在利用AJAX技術(shù)的基礎(chǔ)上提出一種利用HT—ML和JavaScript語言實(shí)現(xiàn)地圖平移的方法,即實(shí)現(xiàn)利用小圖像所在層的相對位置移動(dòng)對地圖進(jìn)行拼接和顯示。這種方法不在客戶端安裝任何插件,降低了客戶端的運(yùn)行負(fù)擔(dān),同時(shí)也減少了圖像數(shù)據(jù)的傳輸流量。此外,本文在此基礎(chǔ)上,也給出了相應(yīng)的地圖縮放操作的實(shí)現(xiàn)方法。
1 AJAX相關(guān)技術(shù)
1.1 AJAX原理
AJAX(Asynchronous Java Script and XML)一詞最早在2005年由Adaptive Path公司的J.J.Garrett提出。AJAX綜合了JavaScript,DOM,XMLHttpRequest.XML和XSTL等現(xiàn)有技術(shù)。其中JavaScript,DOM和XMLHt—tpRequest是AJAX的核心技術(shù)。
1.2 地圖圖像的異步更新
一般來說,Web客戶端存在2種架構(gòu)模式:富客戶端和瘦客戶端。為了使電子地圖在客戶端的功能更加豐富,人們更多的采用富客戶端模式。在AJAX技術(shù)出現(xiàn)以前,Web—GIS通常采用諸如CGI,plug—in,Applet等技術(shù)進(jìn)行軟件富客戶端的搭建。這些技術(shù)主要以表單提交作為通信方式。客戶端以POST方式向服務(wù)器提交圖像參數(shù),服務(wù)器根據(jù)參數(shù)生成圖像并傳回客戶端。在這個(gè)過程中,用戶只能等待而不能進(jìn)行任何其他操作。
而基于AJAX的Web—GIS應(yīng)用則可以通過異步更新的方式避免上述情況的發(fā)生。AJAX采用XMLHt—tpRequest代替POST方式向服務(wù)器發(fā)送請求,由于這個(gè)過程獨(dú)立于用戶與應(yīng)用軟件之間的交互,故用戶可同時(shí)對地圖進(jìn)行其他操作。如圖1所示是一個(gè)典型的基于AJAX的Web—GIS應(yīng)用模型。

2 地圖坐標(biāo)系
Web—GIS系統(tǒng)中存在幾種不同的坐標(biāo)系,如圖2所示。服務(wù)器端通常存在一個(gè)地理坐標(biāo)系,其用于確定地物在地球上的真實(shí)位置。最常用的地理坐標(biāo)系是經(jīng)緯度坐標(biāo)系,這種坐標(biāo)系可以確定地球上任何一點(diǎn)的位置。
在客戶端存在另外z種坐標(biāo)系,屏幕坐標(biāo)系與邏輯屏幕坐標(biāo)系。屏幕坐標(biāo)系用于響應(yīng)用戶對地圖進(jìn)行的各種操作,其以瀏覽器窗口的左上角為原點(diǎn),向右為x軸正方向,向下為y,軸正方向;邏輯屏幕坐標(biāo)系用于在客戶端顯示地圖圖像,其在地圖初始化階段與屏幕坐標(biāo)系原點(diǎn)重合,但隨著用戶對地圖進(jìn)行平移操作,兩者之間便產(chǎn)生相對的位置偏移。
3 基于AJAX的電子地圖的構(gòu)建
電子地圖的構(gòu)建包括3個(gè)方面:地圖初始化、地圖平移以及縮放操作。客戶端地圖的構(gòu)建采用HTML和JavaScript語言實(shí)現(xiàn),其中每塊小圖像都以<Image>標(biāo)簽表示,并放入一個(gè)與其尺寸相同的<div>標(biāo)簽中。小圖像之間的拼接通過改變<div>標(biāo)簽的相對位置來實(shí)現(xiàn)。
為方便表述,將文中所用符號(hào)做如下約定:屏幕坐標(biāo)系表示為{S},其上的地圖視窗定義為矩形T,邏輯屏幕坐標(biāo)系表示為{L},地理坐標(biāo)系表示為{G},在邏輯屏幕坐標(biāo)系中的客戶端地圖圖像由n×n塊正方形的小圖像拼接而成,每塊小圖像邊長為l,其左上角點(diǎn)的坐標(biāo)表示為(ulx,uly),每塊小圖像所在的<div>的左上角點(diǎn)坐標(biāo)表示為(divx,divy),z表示地圖的縮放比例,圖像用Imgij(i,j=0,1,…,n-1)表示,用戶平移地圖時(shí)的偏移量表示為(deltax,deltay),連續(xù)移動(dòng)時(shí)總的偏移量表示為(sumDehax,sumDehay)。
3.1初始化地圖
地圖的初始化是指利用(G)中的點(diǎn)E的坐標(biāo)(Ex,Ey),求(L}中n×n幅邊長為L的Img并進(jìn)行拼接。

3.2小圖像拼接與地圖平移
對地圖的平移包括2種不同操作:根據(jù)(dx,dy)調(diào)整圖像所在層的相對位置;申請需要更新的小圖像。

3.3地圖的縮放
根據(jù)坐標(biāo)系{S}中的點(diǎn)M的坐標(biāo)(mx,my)得到其在坐標(biāo)系(L)的對應(yīng)坐標(biāo)(mxl,myl)以及坐標(biāo)系(G)的對應(yīng)坐標(biāo)(mx2,my2),用得到的坐標(biāo)代入算法1中,便可實(shí)現(xiàn)地圖的縮放功能。
算法3 Zoom Map procedure
Begin
將sumDeha,與sumDeltay加和至M的坐標(biāo)
清空sumDeltax與sumDeltay
根據(jù)M在{L}中的坐標(biāo)計(jì)算其在(G)中的相應(yīng)坐標(biāo)時(shí)
將M代入算法1中
End
3.4 基于AJAX的電子地圖實(shí)例及分析
本文所述方法的試驗(yàn)環(huán)境如下:服務(wù)器端,以tom—cat5.5作為Servlet容器,使用Mapxtreme for java 4.7作為電子地圖開發(fā)平臺(tái);客戶端以HTML及JavaScript作為編程語言;實(shí)驗(yàn)地圖數(shù)據(jù)采用Mapxtreme for java 4 .7自帶的世界地圖。
基于上述方法,以N=4為例,在客戶端拼接成一幅完整的世界地圖圖像。小圖像邊長L為200 px。沒矩形A為邊長等于2×L的正方形,則在其內(nèi)部可以顯示拼接后地圖中間的4幅小圖像,圖3分別給出4幅小圖像在初始化、平移、縮小和放大操作后的拼接效果示意圖。

在地圖的響應(yīng)速度方面,采用神州龍地圖網(wǎng)提供的地圖(http://WWW.668map.com)與百度地圖(http://map.baidu.com)兩個(gè)在線地圖服務(wù)程序與使用本文中算法的電子地圖程序作對比試驗(yàn),神州龍?jiān)诰€地圖是基于Applet技術(shù)開發(fā)的電子地圖;而百度地圖提供的是基于AJAX技術(shù)的電子地圖。試驗(yàn)過程分“初始化”、“平移”和“縮放”3個(gè)測試內(nèi)容,其中“初始化”采集樣本20次,其他2項(xiàng)測試內(nèi)容各采集樣本50次。分別記錄用戶操作間歇的等待時(shí)間。試驗(yàn)結(jié)果如表1所示。
基于上述試驗(yàn)數(shù)據(jù),可以看出基于Applet的電子地圖由于需要初始化時(shí)裝載數(shù)據(jù),故初始化速度是非常慢的,而基于AJAX的電子地圖的初始化速度就要快得多,使用本文方法的地圖在初始化速度上和百度地圖無太大差別;在平移和縮放操作方面,由于Applet在初始化階段把地圖下載到客戶端,隨后的操作幾乎沒有網(wǎng)絡(luò)傳輸,因而速度較快,而使用本文方法的地圖雖慢于神州龍地圖,但是相對于百度地圖來說,縮放操作幾乎持平,而平移操作還有一定的優(yōu)勢。

4 結(jié) 語
本文從基于AJAX技術(shù)的Web—GIS方向出發(fā),提出一種對電子地圖進(jìn)行初始化、平滑移動(dòng)和縮放的實(shí)現(xiàn)方法。分析基于AJAX技術(shù)的電子地圖初始化、平移以及縮放算法,最終用HTMI,和JavaScript語言實(shí)現(xiàn)上述功能。
論文初步給出一種依靠AJAX技術(shù)實(shí)現(xiàn)電子地圖基本操作的方法。還將進(jìn)一步在圖像分塊數(shù)量,圖像塊的尺寸等方面進(jìn)行研究,嘗試提高電子地圖平滑移動(dòng)算法操作的效率。