王曉醉
(武漢大學測繪學院,湖北武漢 430072)
基于Ajax和ArcEngine的WebGIS系統的設計和實現
王曉醉?
(武漢大學測繪學院,湖北武漢 430072)
介紹了基于傳統WebGIS系統,結合緩存切片技術,開發類似GoogleMap風格的WebGIS應用系統的基本原理、關鍵技術和應用實例。該WebGIS系統采用切片技術對地圖進行切片,存放在服務器上,在前臺通過Ajax技術實現地圖顯示和操作,提高了響應速度。并能進行興趣點的標注。
WebGIS;Ajax;ArcEngine;切片技術
WebGIS是Internet技術應用于GIS開發的產物,是實現GIS互操作的一條最佳途徑。從Internet的任意節點,用戶都可以瀏覽WebGIS站點中的地圖文檔,制作專題圖,進行各種空間信息的檢索和分析[1]。

圖1 WebGIS服務請求工作原理
以往傳統的WebGIS系統,往往使用同步傳輸的機制來實現交互,面對大流量數據時,往往使得系統的響應速度變得很慢。而Ajax技術的最大特點就是異步傳輸,通過Ajax引擎能夠很好地實現客戶端和服務器之間的請求、應答機制,減輕服務器的負荷,平衡服務器和客戶端的負載。而利用ArcEngine進行開發,具有靈活,方便的特點,也能有效提高切片速度。
地圖文檔的顯示貫穿于整個WebGlS站點操作的始終,其操作方式和使用技術決定了整個WebGlS站點的效率,是WebGIS系統的核心。使用Ajax技術,是WebGIS發展的必然趨勢。本文利用Ajax和ArcEngine技術,實現開發了一個類似GoogleMap的WebGIS系統,提高了數據的響應速度,減少用戶等待時間。
Ajax是Asynchronous JavaScript and XML(異步的JavaScript和XML)的簡稱[2]。嚴格地講,Ajax不是一個技術,它實際上是幾種技術的集合,每種技術都有其獨特之處,合在一起就成了功能強大的 Ajax技術。Ajax技術包括:
(1)使用基于XHTML和CSS標準的表示方法;
(2)使用Document Object Model(DOM)進行動態顯示和交互;
(3)使用XML和XSLT進行數據交換和操作;
(4)使用XMLHttpRequest與服務器進行異步通信;
(5)使用JavaScript綁定以上技術。
使用Ajax技術開發WebGIS程序減輕了服務器的負擔;無刷新更新頁面;減少用戶實際和心理等待時間;可以把以前的一些服務器負擔的工作轉嫁到客戶端;使Web中的數據與呈現分離。圖2為Ajax工作機制。

圖2 Ajax工作機制
2004年,美國 ESRI發布 ArcGIS Engine,ArcGIS Engine開發包提供了一系列可以在ArcGIS Desktop框架之外使用的 GIS組件,ArcEngine包括核心 ArcObjects的功能,是對AO中的大部分接口、類等進行封裝所構成的嵌入式組件。AE中的組件接口、方法、屬性與AO是相同的。但 ArcObjects必須依賴 ArcGIS Desktop桌面平臺,即購買安裝了ArcGIS Desktop的同時,安裝ArcObjects,才能利用AO進行開發;ArcEngine是獨立的嵌入式組件,不依賴ArcGIS Desktop桌面平臺,直接安裝ArcEngine Runtime和Developer Kit后,即可利用其在不同開發語言環境下開發。ArcEngine具有簡潔、靈活、易用、可移植性強等的特點。故本系統中使用ArcEngine進行開發。
3.1 Ajax框架的選擇和系統架構
目前有眾多的免費的Ajax框架可供選擇,例如Protptype、Scriptacu-lous、Dojo、DWR、Ajax.net、Altas等等[4]。本系統主要選擇使用了 Protptype框架的MapEasy作為客戶端的核心。MapEasy是由國內開發者開發的,基于 Ajax技術的網絡地圖 JavaScript開源類庫,可以用于在瀏覽器端構建類似GoogleMap風格的網絡地圖應用。MapEasy可以應用服務器端的地圖切片數據,在客戶端瀏覽器創建網絡地圖,并使用JavaScript增加標注信息(點信息)。MapEasy使用 A-pache開源協議,允許作為開源或者商業軟件的代碼修改,再發布,也就是說,使用者可以在需要的時候修改代碼來滿足需要并作為開源或商業產品發布或銷售。
本文設計的WebGIS系統為3層結構:客戶層、中間層和數據層,如圖3所示。

圖3 WebGIS系統3層結構
客戶層:直接為使用者提供可視界面。客戶層還包括了Ajax引擎。Ajax是完完全全的客戶端技術,很多控件封裝了客戶端和服務器端的通信過程,服務器端都是返回的一個純文本流,再由客戶端來處理這個文本,這段文本可以是xml格式,也可以是一個html格式。
中間層:提供 Web服務。提供對 Microsoft SQL Server等數據源以及通過OLE DB和XML公開的數據源的一致訪問。
數據源層:Sql server數據庫,存儲空間數據及屬性數據。還包括GIS工具處理的地圖資源,該資源以文件的形式存在于服務器上。
3.2 地圖切片數據組織與客戶端
在WebGIS體系的實現中,切片技術是核心技術之一。一般的WebGIS體系會選用帶有切片程序的地圖服務器(如 GeoServer)或者地圖發布軟件(如 ArcIMS)。筆者在本系統中采用的是自己基于ArcEngine編寫切片程序,使之符合MapEasy的命名規則,然后再使用Web Server(如IIS)調用切片,實現圖片顯示。其總體調用過程如圖4所示。
如圖4所示,系統在客戶端使用MapEasy為核心構建,在服務器端通過Internet信息服務,調用切片程序,返回地圖切片數據。

圖4 切片程序調用過程
地圖切片的原理一般是瓦片金字塔模型,其核心思想是分層和分塊:原始數據按不同分辨率重采樣產生層;同一層數據按指定的格網大小均勻剖分即得瓦片,如圖5所示。

圖5 瓦片金字塔模型
筆者在實現地圖切片的過程中,編寫基于 ArcEngine的切片程序。其中心思想如下:在地圖調入的過程中讀取其左下角和右上角的經緯度值,然后根據經緯度進行切割。在切割的過程中采取分層的思想。對第0層的切片,定義一個變量ZERO_GRID來定義切片的大小。在本程序中,0層每個正方形切片的大小均為2.25°。隨著切片層數的增加,切片大小遞減,其大小為ZERO_GRID/2k。
切片程序的核心代碼如下:

切好的圖片將被發布在IIS上。
為了在瀏覽器客戶端實現顯示,筆者在瀏覽器客戶端,應用MapEasy類庫添加地圖的JavaScript代碼為:


以上代碼最關鍵的是最后一句。其中有3個參數,level代表縮放級別,row代表行,column代表列。在MapEasy中row表示瓦片(tile)所在的行數、column表示瓦片所在的列數而level表示地圖縮放的級別。MapEasy兼容的數據切片方案采用四叉樹切分和哈希格網索引算法,即第一級為 1幅圖片,第二級分為4幅,第三級則劃分為16幅,這和我們編寫的地圖切片算法切出的圖片是一致的,從而保證了MapEasy能順利讀取各級圖片。
筆者采用Mircosoft.Net 2.0開發平臺進行開發,開發語言為C#;服務器運行環境為:Microsoft Windows XP sp2,IIS,SQL Server 2005;客戶端可以為任意的Web瀏覽器。通過使用緩存切片和Ajax技術,在普通PC服務器上,實現了對地圖快速的訪問。在瀏覽器的地圖窗口建立兩個功能模塊:地圖顯示模塊和地圖查詢模塊。地圖顯示模塊主要是負責顯示用戶指定區域,并且具有一定比例的柵格地圖,實現了放大、縮小、漫游、平移、拉框、清除等基本的地圖功能。圖6為系統的運行界面,其中左圖為查詢界面之一,右圖為添加興趣點的結果,結果數據的空間位置可以通過標注的形式顯示在地圖之上。

圖6 系統運行界面
本文中筆者用ArcEngine和Ajax技術仿照Google Map實現了一個簡單WebGIS系統的設計和發布,實現了地圖的瀏覽,放大,縮小等功能,實現了地圖切片程序的編寫,并能使用Ajax技術在前臺讀取地圖切片,能實現興趣點的標注等。Ajax技術的使用,實現了地圖數據交互的加快,減少了用戶等待時間;應用ArcEngine進行地圖切片,比直接在AO上開發靈活方便,切片速度也有提高。但在地圖分析的方面,還有很多需要加強,比如沒有緩沖區分析等功能等。今后筆者將繼續從事這方面的研究,努力使該系統的功能更加完善。
[1]MapEasy[EB/OL].http://mapeasy.sourceforge.net
[2]黃穎,謝忠,鐘士彬..NET和VML及腳本技術在WebGIS系統地圖文檔顯示中的應用[J].測繪科學,2006,31(4)
[3]徐卓揆,劉德欽,林宗堅.基于WebGIS的動態專題地圖發布技術研究[J].測繪科學,2006,31(3)
[4]徐卓揆,劉德欽,林宗堅.Ajax技術在WebGIS中的應用[J].測繪信息與工程,2007,32(1):3~5
The Development and Design of WebGIS Based on Ajax and ArcEngine
Wang XiaoZui
(School of Geodesy and Geomatic,Wuhan University,Wuhan 430072,China)
This paper introduces the development of similar style GoogleMap of WebGIS application system's basic principles,key technologies and applications,based on traditional WebGIS-based systems,combined with the tile cache technology.The system uses WebGIS tile cache technology to slice the map,stored the pictures in the server,and use the Ajax technology to display and operate maps.It can also mark the POI(Point of Interest)on the maps.
WebGIS;Ajax;ArcEngine;tile cache
1672-8262(2010)03-32-03
P208
B
2010—01—03
王曉醉(1986—),女,碩士研究生,專業方向地理信息系統。