吳開(kāi)興,范周艷
(河北工程大學(xué),河北 邯鄲 056038)
?
MapXtreme下WebGIS的優(yōu)化研究
吳開(kāi)興,范周艷
(河北工程大學(xué),河北 邯鄲 056038)
對(duì)WebGIS和MapXtreme的工作方式進(jìn)行了簡(jiǎn)要的介紹,分析了基于MapXtreme的WebGIS的不足之處,并針對(duì)這些不足進(jìn)行了優(yōu)化研究。由于服務(wù)器端效率的優(yōu)劣直接影響到客戶端用戶的使用和體驗(yàn)效果,因此提出了在WebGIS中使用Comet技術(shù)實(shí)現(xiàn)服務(wù)器信息推送,用客戶端地圖圖層來(lái)替代服務(wù)端地圖圖層。該優(yōu)化方案能有效地改善通信效率,增強(qiáng)用戶體驗(yàn),且減小了應(yīng)用系統(tǒng)本身的業(yè)務(wù)邏輯與MapXtreme之間的耦合度。
WebGIS;MapXtreme;Comet;AJAX;客戶端地圖圖層
Web的分布式計(jì)算技術(shù)與GIS相結(jié)合產(chǎn)生了WebGIS,它是利用Internet技術(shù)來(lái)擴(kuò)展和完善GIS的一項(xiàng)技術(shù)。其核心是在GIS中嵌入HTTP標(biāo)準(zhǔn)的應(yīng)用體系,實(shí)現(xiàn)Internet環(huán)境下的空間信息管理和發(fā)布。目前,WebGIS技術(shù)在鐵路工務(wù)系統(tǒng)中已有著廣泛的應(yīng)用,MapXtreme是當(dāng)前鐵路工務(wù)系統(tǒng)中主要的WebGIS解決方案之一,它具有強(qiáng)大的地圖化功能,包括地圖的繪制、顯示、編輯、查找、分析、圖層控制、地理編碼等。管理員只需在Web服務(wù)器上對(duì)MapXtreme進(jìn)行編程和管理,用戶就能夠通過(guò)Web瀏覽器訪問(wèn)到地圖信息。
總體來(lái)說(shuō),MapXtreme是瘦客戶端的工作方式??蛻舳耸紫认騑eb服務(wù)器提交HTTP請(qǐng)求,遞交Form表單;Web服務(wù)器收到該請(qǐng)求后,把地圖操作請(qǐng)求提交給地圖應(yīng)用服務(wù);地圖應(yīng)用服務(wù)在內(nèi)部調(diào)用MapXServer響應(yīng)用戶的操作請(qǐng)求,進(jìn)行相應(yīng)的空間分析和處理后,產(chǎn)生新的地圖圖片,返回給Web服務(wù)器;Web服務(wù)器再把該圖片嵌入到HTML頁(yè)面中并返回給客戶端瀏覽器[1],如圖1所示。
圖1 MapXtreme的工作方式
傳統(tǒng)的Web系統(tǒng)是基于同步的HTTP請(qǐng)求/響應(yīng)模式。需要交互時(shí),客戶端要填寫(xiě)Form表單并提交到服務(wù)器,服務(wù)器經(jīng)過(guò)處理后,返回給客戶端一個(gè)新的頁(yè)面。這種交互過(guò)程,會(huì)產(chǎn)生以下問(wèn)題:
1) 用戶每一次的交互操作都要在客戶端和服務(wù)器端進(jìn)行數(shù)據(jù)傳輸和交換,其中還包括大量的重復(fù)數(shù)據(jù),造成信息冗余。
2) 客戶端提交請(qǐng)求之后,必須等待服務(wù)器返回?cái)?shù)據(jù)。等待期間,頁(yè)面處于阻塞狀態(tài),無(wú)法進(jìn)行其他操作,這導(dǎo)致用戶工作效率大幅降低。
3) 服務(wù)器端只能被動(dòng)接收請(qǐng)求,無(wú)法主動(dòng)向客戶端發(fā)送數(shù)據(jù)。
圖層對(duì)于MapXtreme來(lái)說(shuō),是一種只在服務(wù)器端才存在的概念。在服務(wù)器端創(chuàng)建地圖圖層是一項(xiàng)復(fù)雜煩瑣的過(guò)程。過(guò)多地使用服務(wù)端圖層,還會(huì)使應(yīng)用系統(tǒng)本身的業(yè)務(wù)邏輯與MapXtreme之間的耦合度增加,這與軟件開(kāi)發(fā)中“低耦合、高內(nèi)聚”的原則相背離。
1.Comet技術(shù)實(shí)現(xiàn)服務(wù)器信息推送
(1) AJAX技術(shù)
異步JavaScript和XML是指一種創(chuàng)建交互式Web應(yīng)用的客戶端開(kāi)發(fā)技術(shù)。AJAX(Asynchronous JavaScript and XML)的工作原理相當(dāng)于在客戶端和服務(wù)器端之間增加了一個(gè)中間層,這個(gè)中間層被稱(chēng)作AJAX引擎,實(shí)際上是一個(gè)比較復(fù)雜的JavaScript應(yīng)用程序[2]。它允許用戶和應(yīng)用程序之間的交互異步發(fā)生,用戶在提交相應(yīng)的操作后,無(wú)須等待頁(yè)面刷新,可以繼續(xù)進(jìn)行其他操作,AJAX引擎負(fù)責(zé)后臺(tái)的異步處理。另外,也并不是所有的用戶請(qǐng)求都提交給服務(wù)器,一些數(shù)據(jù)驗(yàn)證和數(shù)據(jù)處理等都由AJAX引擎來(lái)做,僅向服務(wù)器發(fā)送必需的數(shù)據(jù), 這就意味著可以在不重新加載整個(gè)網(wǎng)頁(yè)的情況下,對(duì)網(wǎng)頁(yè)進(jìn)行局部的內(nèi)容更新。傳統(tǒng)Web應(yīng)用模型與AJAX Web應(yīng)用模型對(duì)比如圖2所示。
圖2 傳統(tǒng)Web應(yīng)用模型與AJAX Web應(yīng)用模型對(duì)比
(2) 服務(wù)器信息推送的必要性
線路檢測(cè)是幫助鐵路工務(wù)人員掌握線路健康狀況的一項(xiàng)重要技術(shù)手段,如果能將檢測(cè)信息、分析結(jié)果及時(shí)通知給工務(wù)人員,相關(guān)部門(mén)就可以迅速組織調(diào)度,排除隱患,避免安全事故的發(fā)生。
對(duì)于Web類(lèi)工務(wù)系統(tǒng)而言,線路檢測(cè)數(shù)據(jù)平臺(tái)和分析系統(tǒng)都是運(yùn)行于服務(wù)器端的。要將服務(wù)器端的最新數(shù)據(jù)實(shí)時(shí)地發(fā)送到客戶端,需要客戶端不停地刷新頁(yè)面,或是使用AJAX技術(shù)在后臺(tái)定時(shí)請(qǐng)求。然而AJAX只是實(shí)現(xiàn)了單用戶的響應(yīng)回調(diào),當(dāng)—個(gè)頁(yè)面中同時(shí)存在多個(gè)AJAX的異步時(shí),用戶很可能修改了沒(méi)有顯示出來(lái)的數(shù)據(jù),造成數(shù)據(jù)庫(kù)事務(wù)中“臟讀”或“幻影讀”的問(wèn)題[3]。
(3) Comet技術(shù)
Comet技術(shù)是一項(xiàng)新的Web交互技術(shù),它基于HTTP長(zhǎng)連接,無(wú)須在瀏覽器安裝插件[4],以AJAX技術(shù)為基礎(chǔ),能夠?qū)⒎?wù)器端的最新數(shù)據(jù)實(shí)時(shí)地“推”到客戶端。Comet技術(shù)很好地解決了傳統(tǒng)Web模式和AJAX技術(shù)中存在的不足。兩種Comet應(yīng)用的實(shí)現(xiàn)模型如圖3所示。
圖3 兩種Comet應(yīng)用的實(shí)現(xiàn)模型
① 基于AJAX的長(zhǎng)輪詢(xún)(long-polling)方式
該方式以AJAX技術(shù)為基礎(chǔ),用JavaScript調(diào)用XML HttpRequest對(duì)象發(fā)出HTTP請(qǐng)求,一直到服務(wù)器端有數(shù)據(jù)更新,并且客戶端接收后,立即斷開(kāi)連接??蛻舳嗽谔幚硗攴?wù)器返回的信息后,再次發(fā)出請(qǐng)求,重新建立連接,等候新的數(shù)據(jù)。
② 基于iframe及htmlfile的流(streaming)方式
通過(guò)在HTML頁(yè)面里嵌入一個(gè)隱藏幀,將其SRC屬性設(shè)為對(duì)一個(gè)長(zhǎng)連接的請(qǐng)求,服務(wù)器端就能源源不斷地往客戶端輸入數(shù)據(jù)[5]。但這些數(shù)據(jù)會(huì)先被傳輸?shù)诫[藏幀里,無(wú)法在主頁(yè)面直接調(diào)用。因此,在創(chuàng)建到服務(wù)端的iframe長(zhǎng)連接時(shí),需要指定一個(gè)回調(diào)方法,客戶端瀏覽器的JavaScript引擎在收到服務(wù)器返回的JavaScript調(diào)用時(shí)就會(huì)去執(zhí)行代碼,完成對(duì)推送數(shù)據(jù)的具體操作。除非通信出現(xiàn)錯(cuò)誤或連接重新建立,否則該連接不會(huì)關(guān)閉。
(4) Comet技術(shù)的實(shí)現(xiàn)
創(chuàng)建iframe長(zhǎng)連接,并綁定回調(diào)方法主要代碼如下(JavaScript):
var Tunnel=function () {
this.tunnel=new ActiveXObject("htmlfile");
this.tunnel.open();
this.tunnel.write("");
this.tunnel.close();
this.open=function (src, cb) {
this.tunnel.parentWindow.callBack=cb;
∥創(chuàng)建連接,綁定回調(diào)操作方法
showAlarmWindow(alarm.entity); });
服務(wù)端定時(shí)檢查有無(wú)新報(bào)警數(shù)據(jù),并將數(shù)據(jù)傳輸?shù)娇蛻舳说闹饕a如下(C#):
Response.BufferOutput=false;
Response.ContentType="text/html; charset=utf-8";
Response.AppendHeader("Connection","Keep-Alive");while (true) {AlarmInfo alarm;
if (AlarmBLL.HasNewAlarm(out alarm)) {
var map=MapUtilities.GetMapObject();
var coordinate=new MapInfo.Geometry.DPoint(alarm.經(jīng)度, alarm.緯度);
System.Drawing.Pointpoint;
map.DisplayTransform.ToDisplay(coordinate, out point);
var jsObj=new { x=point.X, y=point.Y, entity=alarm };
Response.Write(string.Format("", JsonConvert.SerializeObject(jsObj)));}
System.Threading.Thread.Sleep(1000 * 30);}
2.在客戶端構(gòu)造和疊加地圖圖層
(1) 客戶端地圖圖層
客戶端地圖圖層創(chuàng)建于客戶端,操控靈活,完全AJAX化,并且使富客戶應(yīng)用(rich Internet application,RIA)[6]技術(shù)的表現(xiàn)力、交互性?xún)?yōu)勢(shì)得到了充分發(fā)揮。在WebGIS中用客戶端地圖圖層來(lái)替代服務(wù)端地圖圖層,可減少系統(tǒng)本身的業(yè)務(wù)邏輯對(duì)地圖框架的依賴(lài)程度。
客戶端地圖圖層是一種在客戶端網(wǎng)頁(yè)上創(chuàng)建的透明HTML層元素,這種層元素具有尺寸和三維空間屬性,將該層元素設(shè)定為與地圖圖片尺寸1∶1的比例,插入到地圖容器中;再通過(guò)CSS控制其空間屬性,使其處于與地圖圖片相同x、y坐標(biāo)的不同z軸上方,這樣就構(gòu)造出了一個(gè)客戶端圖層。因?yàn)榫W(wǎng)頁(yè)是平面化的,客戶端圖層在視覺(jué)效果上能夠與地圖圖片疊加,從而形成實(shí)際意義上的客戶端地圖圖層,如圖4所示。
圖4 圖層疊加空間示意圖
(2) 客戶端地圖圖層實(shí)現(xiàn)
構(gòu)造客戶端地圖圖層的主要代碼如下:
var zIndex=999; ∥zIndex為空間向量
var container=Ext.get(containerID);
var layer=Ext.get(layerID);
if (container &&!layer) { ∥創(chuàng)建并插入圖層
zIndex += 1; }
在服務(wù)端,MapXtreme已經(jīng)為地理坐標(biāo)到屏幕坐標(biāo)提供了轉(zhuǎn)換方法。網(wǎng)頁(yè)地圖重載時(shí),客戶端先以AJAX方式從服務(wù)端獲取經(jīng)過(guò)坐標(biāo)轉(zhuǎn)換的業(yè)務(wù)數(shù)據(jù),然后在AJAX回調(diào)函數(shù)中將業(yè)務(wù)數(shù)據(jù)創(chuàng)建為Dom元素,最后將這些Dom元素添加到客戶端地圖圖層。主要代碼如下(C#):
Ext.Ajax.request({
Ext.each(result, function (item, i) {∥將業(yè)務(wù)信息創(chuàng)建為img元素,并插入到指定地圖圖層(循環(huán))
WebGIS在鐵路信息化進(jìn)程中扮演著越來(lái)越重要的角色,MapXtreme是當(dāng)前鐵路工務(wù)系統(tǒng)中主要的WebGIS解決方案之一。本文提出的MapXtreme WebGIS的優(yōu)化設(shè)計(jì)方法,具有可靠的理論依據(jù),并在鐵路工務(wù)系統(tǒng)的實(shí)際研發(fā)過(guò)程中得到應(yīng)用。試驗(yàn)證明,經(jīng)過(guò)優(yōu)化的MapXtreme WebGIS較傳統(tǒng)的WebGIS,在執(zhí)行效率、響應(yīng)速度、交互性和可擴(kuò)展性等方面均有顯著提升。
[1] 趙亞蓓.基于WebGIS技術(shù)的鐵路工務(wù)地理信息系統(tǒng)的建立[J].測(cè)繪與空間地理信息,2009, 32(2):23-25.
[2] 黃浩,趙遼英,蘇程,等.基于AJAX技術(shù)的WebGIS系統(tǒng)設(shè)計(jì)[J].杭州電子科技大學(xué)學(xué)報(bào),2011,31(6):87-90.
[3] 張家愛(ài),孫飛.Comet技術(shù)在Web開(kāi)發(fā)中的研究與應(yīng)用[J] .煤炭技術(shù),2011,30(12):89-91.
[4] 繆謹(jǐn)勵(lì),陶留鋒,邢廷炎,等.基于Pushlet的實(shí)時(shí)WebGIS研究與實(shí)現(xiàn)[J].地理信息世界,2013(5):64-68.
[5] 周婷.Comet:基于HTTP長(zhǎng)連接的“服務(wù)器推”技術(shù)[EB/OL].2007-08-13.[2014-06-30].http:∥www.ibm.com/developerworks/cn/web/wa-lo-comet/.
[6] 張宏,豐江帆,閭國(guó)年,等.基于RIA技術(shù)的WebGIS研究[J].地球信息科學(xué),2007(2):100-103.
[7] 秦永平,汪群山.基于 WebGIS 的公共衛(wèi)生預(yù)警預(yù)測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2014(4):56-58.
[8] 劉書(shū)雷,李軍,陳宏盛,等.基于MapXtreme的WebGIS解決方案[J].計(jì)算工程與科學(xué),2004(2):15-18.
[9] 成富.實(shí)戰(zhàn)Comet應(yīng)用程序開(kāi)發(fā)[EB/OL].2008-07-15.[2014-06-30].http:∥www.ibm.com/developerworks/cn/web/wa-lo-w2fpak-comet/.
[10] 蘭小機(jī),段保霞,彭建偉.基于Ajax的WebGIS研究與應(yīng)用[J].測(cè)繪科學(xué),2009,34(2):77-79.
[11] 唐群,謝小魁.Ajax與WebGIS的集成研究[J].測(cè)繪與空間地理信息,2009,32(6):33-35.
“中海達(dá)杯”高校測(cè)繪青年教師講課競(jìng)賽即將開(kāi)始
[本刊訊] 7月31日至8月2日,“中海達(dá)杯”全國(guó)高等學(xué)校測(cè)繪青年教師講課競(jìng)賽將在西安科技大學(xué)舉辦,共有來(lái)自全國(guó)數(shù)十所高校的136名青年教師將角逐各獎(jiǎng)項(xiàng),總?cè)藬?shù)較上年增加40%。
“中海達(dá)杯”全國(guó)高等學(xué)校測(cè)繪專(zhuān)業(yè)青年教師講課競(jìng)賽由教育部高等學(xué)校測(cè)繪類(lèi)專(zhuān)業(yè)教學(xué)指導(dǎo)委員會(huì)、中國(guó)測(cè)繪地理信息學(xué)會(huì)測(cè)繪教育委員會(huì)主辦,由廣州中海達(dá)衛(wèi)星導(dǎo)航技術(shù)股份有限公司協(xié)辦。競(jìng)賽每?jī)赡昱e行一次,每次都吸引了來(lái)自全國(guó)數(shù)十所高校的上百名教師參加,已成為我國(guó)最具規(guī)模和影響力的測(cè)繪教師講課競(jìng)賽。
競(jìng)賽課程包括測(cè)量平差、攝影測(cè)量與遙感、地理信息系統(tǒng)原理與應(yīng)用等,采取預(yù)賽和決賽制。評(píng)委會(huì)根據(jù)選手的課程策劃、課堂教學(xué)組織、多媒體技術(shù)運(yùn)用、是否符合大綱要求、課件與授課是否合理銜接等標(biāo)準(zhǔn)來(lái)進(jìn)行評(píng)分。
競(jìng)賽的意義不僅在于提供一個(gè)競(jìng)技的舞臺(tái),更重要的是提供一個(gè)學(xué)習(xí)和交流的機(jī)會(huì),讓各高校教師互相學(xué)習(xí),共同提高,促進(jìn)測(cè)繪學(xué)科專(zhuān)業(yè)的教學(xué)改革和教學(xué)質(zhì)量再上新臺(tái)階。
(本刊編輯部)
Optimization Research of WebGIS Based on MapXtreme
WU Kaixing,FAN Zhouyan
吳開(kāi)興,范周艷.MapXtreme下WebGIS的優(yōu)化研究[J].測(cè)繪通報(bào),2015(7):109-112.
10.13474/j.cnki.11-2246.2015.0225
2014-07-01
吳開(kāi)興(1962—),男,教授,主要研究方向?yàn)樾畔⑾到y(tǒng)與信息安全、煤礦綜合信息化。E-mail:296674391@qq.com
范周艷。E-mail:hifanzhouyan@163.com
P208
:B
:0494-0911(2015)07-0109-04