汪 龍 黃德志
(中南大學 地球科學與信息物理學院,湖南 長沙410083)
傳統(tǒng)的WebGIS 對于客戶端提交的地圖請求,通常利用實時計算模式, 如用ArcIMS 發(fā)布地圖時, 先由客戶端提交地圖請求, 通過ArcXML 將各項參數(shù)提交給服務器,服務器根據(jù)參數(shù)計算并生成客戶端所需圖形,再通過ArcXML 反饋給客戶端。 但是由于GIS 中需要訪問或處理的空間數(shù)據(jù)通常是海量的,受網(wǎng)絡帶寬限制,數(shù)據(jù)傳輸和瀏覽速度較慢,通??蛻魧γ看握埱笠却容^長的時間。 針對這一問題,人們提出了地圖瓦片技術(shù),即地圖緩存技術(shù)[1]。
目前,Google Map 的瓦片地圖服務是所有在線電子地圖服務中最好的服務, 許多瓦片地圖服務都是基于Google Map 的地圖模式提出的。 GoogleMap 提供了完整的瓦片地圖、衛(wèi)星影像和應用開發(fā)接口,用戶可以根據(jù)谷歌提供的API 方便的調(diào)用瓦片地圖。Google Map 生成瓦片地圖主要采用的是金字塔模型。在開源的地圖服務器中,GeoServer[2]是其中的代表,它采用與Google 類似的切割方法,將底圖和專題圖層分別切割。
雖然地圖瓦片技術(shù)使WebGIS 的性能得到極大改善,但是切片之后的地圖以圖片形式存在, 當客戶端對空間數(shù)據(jù)進行在線編輯后,這種改變不能立即反饋給客戶端,而是需要后臺管理員對地圖進行重新切片。 為了解決WebGIS 中地理數(shù)據(jù)需要頻繁編輯和編輯后的圖形不能在客戶端得到及時反映的問題,郭明武、彭清山、李黎[3]提出了地圖瓦片局部更新,在ArcGIS Server 融合緩存的基礎上,創(chuàng)建了自定義函數(shù)UpdateTile,根據(jù)所更新要素的坐標返回,獲取對應的切片,接著在后臺重新生成這個范圍內(nèi)的切片,并最終實現(xiàn)圖形顯示與數(shù)據(jù)更新的同步。 而GeoServer 和GeoWebCache 的瓦片緩存技術(shù)中的一致性維護機制則可以保證Web 緩存庫中的地圖信息與底層空間數(shù)據(jù)庫中的地圖信息一致,各Web 緩存數(shù)據(jù)庫之間信息一致。
地圖瓦片技術(shù)將配置好的一定坐標范圍的地圖,按照固定的若干個比例尺(瓦片級別)和指定圖片尺寸,在服務器端切成若干行及列的正方形圖片,以指定的格式保存成圖像文件,按一定的命名規(guī)則和組織方式存儲到服務器的目錄系統(tǒng)中或是數(shù)據(jù)庫系統(tǒng)里,形成金字塔模型的靜態(tài)地圖緩存。 瓦片金字塔模型是一種多分辨率層次模型,從瓦片金字塔的底層到頂層,分辨率越來越低,但表示的地理范圍不變,如圖1 所示。本文提出的地圖切圖方法是根據(jù)瓦片式地圖的金字塔模型結(jié)構(gòu),確定地圖服務平臺所要求的最大縮放級別數(shù),把縮放級別最低、地圖比例尺最大的地圖圖片作為金字塔的底層[4]。 每一縮放級別對應相應的地圖比例尺,根據(jù)研究區(qū)域的地理坐標范圍,計算中央經(jīng)線,設置分度帶方法以及坐標系統(tǒng)形成比例尺下的接圖表圖層文件,并根據(jù)國家基本比例尺地形圖的分幅編號方法計算所有的標準圖幅號。將每一級對應的地圖接圖表對地圖文檔進行切割,將生成的瓦片地圖以對應的圖幅號進行命名,按照分級的目錄組織結(jié)構(gòu)將文件存儲存儲在服務器硬盤以及Oracle 數(shù)據(jù)庫中,數(shù)據(jù)表的字段結(jié)構(gòu)為圖幅號、圖片路徑,在服務器端形成該地圖文檔相應的地圖瓦片庫,便于客戶端對瓦片庫進行索引和查找。
(1)分別使用ArcGIS Server 和Geoserver 作為地圖服務器,對空間數(shù)據(jù)庫里存儲的地進行切片,并在瀏覽器中顯示。
(2)比較ArcGIS Server 與GeoServer 生成切片地圖的差異。
瓦片地圖服務體系結(jié)構(gòu),主要由三層組成,分別為客戶端、應用服務端和數(shù)據(jù)庫。 客戶端為瀏覽器。 服務器端分為GIS 服務器和web 服務器,為服務層。數(shù)據(jù)庫中可存放地圖數(shù)據(jù)或者屬性數(shù)據(jù)等。發(fā)布地圖瓦片服務可通過GIS 服務器(如ArcGIS Server、GeoServer)讀取數(shù)據(jù)庫中存儲的地圖、或者計算機中的地圖文件,對其進行切片,然后通過web 服務器發(fā)布,這樣,用戶即可通過瀏覽器對切片地圖進行訪問。在客戶端,還可通過OpenLayers、GMap 等對地圖進行修飾,以獲得更好的用戶體驗。
2.2.1 使用ArcGIS Server 發(fā)布瓦片地圖
用ArcGIS Server 發(fā)布瓦片地圖,GIS 服務器為ArcGIS Server,Web 服務器為IIS,數(shù)據(jù)庫為Oracle。
研究步驟為:
1)環(huán)境搭建: ArcGIS Server10.0+ ArcSDE for Oracle+ Oracle 10g+Visual Studio 2010。
2)在ArcCatalog 中建立與Oracle 數(shù)據(jù)庫的連接。
3) 將shapefile 文件通過ArcSDE 保存到Oracle 數(shù)據(jù)庫中。 在ArcMap 加載數(shù)據(jù)庫中地圖,整飾地圖,形成MXD 文檔。
4)通過ArcGIS Server Manager 發(fā)布地圖服務,用桌面系統(tǒng)調(diào)用該服務。
5)地圖切片。 地圖發(fā)布成功后,在ArcCatalog 中設置好切圖的坐標原點、輸出圖片的格式、大小、圖片的DPI 和各級緩存的比例。
6)創(chuàng)建web 應用程序,調(diào)用地圖服務,并將切片前(圖1)與切片后的地圖縮放速度做對比(圖1)。

圖1 切片前地圖加載速度

圖2 切片后地圖加載速度
2.2.2 使用GeoServer 發(fā)布瓦片地圖
用GeoServer 發(fā)布瓦片地圖,GIS 服務器為GeoServer,Web 服務器為Tomcat,數(shù)據(jù)庫為PostGIS。
研究步驟為:
1) 環(huán)境搭 建:GeoServer+Tomcat+PostGIS+PostgreSQL+NetBeans IDE
2) 利用PostGIS 將地圖文件導入到數(shù)據(jù)庫中。 使用PostGIS +PostgreSQL 數(shù)據(jù)庫, 用PostGIS 提供的插件shape file to postgis importer 把shapefile 數(shù)據(jù)導入數(shù)據(jù)庫。
3)將數(shù)據(jù)庫中的地圖添加到GeoServer 中,將要進行切片的圖層添加到一個Group 中并進行風格設置。
4)利用GeoWebCache 生成瓦片地圖。 設置好切片的級別、坐標系統(tǒng)、保存圖片格式及進行切片的線程數(shù)即可。
按照上述步驟生成切片,對比切片前后加載圖片時間(圖3 為切片前放大級數(shù)為7-14 時的加載時間對比, 圖4 為切片后放大級數(shù)為7-17 時的具體加載時間):

圖3 切片前放大級數(shù)為7-14 時的加載時間對比

圖4 切片后放大級數(shù)為7-17 時的具體加載時間(加載時間為各時間之和)

表1 ArcGIS Server 切片前后縮放速度對比
用ArcGIS Server 生成的瓦片地圖的大小為28.5MB。
由表1 可以看出,切片前縮放的平均速度約為676ms,切片后平均速度約為159ms,瓦片技術(shù)在這個試驗中提高速度約為4 倍。

表2 GeoServer 切片前后加載速度對比
用GeoServer 生成的瓦片地圖占用空間220MB。
由表2 可以看出,切片前縮放的平均速度約為8.86s,切片后縮放的平均速度約為737.7ms, 瓦片技術(shù)在這個試驗中提高速度約為12倍。
本文從渲染效果、簡便程度、效率、經(jīng)濟、空間等五個主要方面進行切片效果對比。
3.3.1 渲染效果
ArcGIS Server 對發(fā)布的地圖服務進行渲染可以在arcgis 系列軟件中直接設置(設置mxd 文件渲染,渲染每個圖層),選擇程序提供的渲染模式,也可以自定義渲染模式,還可以加載拷貝的style,渲染文件可移植性強,方便快捷,效果良好。
GeoServer 對發(fā)布的地圖渲染是通過渲染每個圖層來實現(xiàn)的。 每個圖層發(fā)布的時候,可以選擇GeoServer 提供的少量渲染模式,可選的模式比較少, 但是和ArcGIS Server 相同的是, 也可以自定義渲染模式,還可以加載拷貝的xml 文件,修改已有的xml 渲染文件,渲染文件可移植性強,同樣方便快捷。
總體來說, 如果不需要自定義特別的渲染模式的話,ArcGIS Server 選擇性多,有優(yōu)勢。 操作過程中,ArcGIS Server 操作快捷方便,調(diào)整效果方便,有優(yōu)勢,但是需要ArcGIS Destop 桌面應用程序才可以操作,有局限性。 GeoServer 操作界面簡便,不需要特定軟件環(huán)境,但是效果不直觀,相比于ArcGIS Server 不夠方便。 如果需要自定義特別的渲染模式, 兩種都方便快捷, 這種情況下GeoServer 比ArcGIS Server方便,因為其不需要特定軟件環(huán)境。
3.3.2 簡便程度
GeoServer 環(huán)境配置相比ArcGIS Server 來說一定容易一些。 操作上,ArcGIS Server 發(fā)布服務、切片可直接通過桌面應用程序完成,參數(shù)設置簡單易理解,步驟簡單。 GeoServer 發(fā)布服務需要先建工作空間、store、發(fā)布layer,發(fā)布過程中選擇渲染方式,投影等參數(shù),過程相比ArcGIS Server 要復雜。 GeoServer 切片是通過geowebcache 服務完成,其可以方便的設置切片各參數(shù),保存類型位置等。 ArcGIS Server 切片使用緊湊模式緩存時,速度比GeoServer 切片快的多,ArcGIS Server 切片使用松散模式緩存時,速度也比GeoServer 切片稍快。 除此之外,地圖發(fā)布之后,GeoServer 修改地圖服務需修改具體圖層然后重新切片,操作不方便,但是ArcGIS Server 提供局部更新操作支持。
3.3.3 效率
對于相同地圖服務,ArcGIS Server 切片使用緊湊模式時, 切片時間大大少于GeoServer 切片時間;ArcGIS Server 切片使用松散模式時,切片時間略多于GeoServer 切片時間。 讀取緩存文件 (圖片) 時,ArcGIS Server Manager 要略慢于GeoServer。
3.3.4 經(jīng)濟
ArcGIS 系列軟件是商業(yè)軟件,需購買,且相當貴;而GeoServer 以及postgis 等軟件都是開源軟件,免費,容易獲取。
3.3.5 空間
ArcGIS Server 切片使用緊湊模式時,保存的緩存文件不是直接的jepg/png 等圖片格式,而是ArcGIS 識別的一種特別格式,其緩存文件大小遠小于GeoServer 對相同服務的切片緩存。
本文詳細論述了使用ArcGIS Server 和GeoServer 進行瓦片地圖生成的原理及過程,并對兩者進行了對比。ArcGIS Server 在地圖渲染、切片效率、節(jié)約存儲空間方面要優(yōu)于GeoServer,但是GeoServer 在易用性、可移植性、經(jīng)濟性方面會更有優(yōu)勢。用戶可根據(jù)這些方面對地圖服務平臺進行選擇。
[1]蘇旭明,譚建成.WebGIS 中瓦片地圖關鍵技術(shù)研究[J].北京測繪,2012(2):9-12.
[2]陽華,劉振宇,許文明.GeoServer 瓦片緩存機制研究[J].網(wǎng)絡安全技術(shù)與應用,2011(4):63-65.
[3]郭明武,彭清山,李黎.ArcGIS Server 中地圖瓦片實時在線局部更新方法研究[J].測繪通報,2012(2):35-38.
[4]Scott Davis.GIS for Web Developers[M].蔣波濤,譯.北京:電子工業(yè)出版社,2008.
[5]黃夢龍.瓦片地圖技術(shù)在桌面端GIS 中的應用[J].地理空間信息,2011,9(4):149-151.
[6]許虎, 聶云峰, 舒堅. 基于中間件的瓦片地圖服務設計與實現(xiàn)[J].地球信息科學學報, 2010,12(4):562-567.
[7]Aref W G, Kamel J, Mokbel M F. Analysis of Multi-dimension Space Filling Curves[J]. Geoinformatica, 2003,7(3):179-209.
[8]Chen K L, Chang Y I. Neighbor-finding Based on Space-filling Curves[J].Information Systems, 2005,30(3):205-226.