汪 龍 黃德志
(中南大學(xué) 地球科學(xué)與信息物理學(xué)院,湖南 長(zhǎng)沙410083)
傳統(tǒng)的WebGIS 對(duì)于客戶端提交的地圖請(qǐng)求,通常利用實(shí)時(shí)計(jì)算模式, 如用ArcIMS 發(fā)布地圖時(shí), 先由客戶端提交地圖請(qǐng)求, 通過ArcXML 將各項(xiàng)參數(shù)提交給服務(wù)器,服務(wù)器根據(jù)參數(shù)計(jì)算并生成客戶端所需圖形,再通過ArcXML 反饋給客戶端。 但是由于GIS 中需要訪問或處理的空間數(shù)據(jù)通常是海量的,受網(wǎng)絡(luò)帶寬限制,數(shù)據(jù)傳輸和瀏覽速度較慢,通??蛻魧?duì)每次請(qǐng)求要等待比較長(zhǎng)的時(shí)間。 針對(duì)這一問題,人們提出了地圖瓦片技術(shù),即地圖緩存技術(shù)[1]。
目前,Google Map 的瓦片地圖服務(wù)是所有在線電子地圖服務(wù)中最好的服務(wù), 許多瓦片地圖服務(wù)都是基于Google Map 的地圖模式提出的。 GoogleMap 提供了完整的瓦片地圖、衛(wèi)星影像和應(yīng)用開發(fā)接口,用戶可以根據(jù)谷歌提供的API 方便的調(diào)用瓦片地圖。Google Map 生成瓦片地圖主要采用的是金字塔模型。在開源的地圖服務(wù)器中,GeoServer[2]是其中的代表,它采用與Google 類似的切割方法,將底圖和專題圖層分別切割。
雖然地圖瓦片技術(shù)使WebGIS 的性能得到極大改善,但是切片之后的地圖以圖片形式存在, 當(dāng)客戶端對(duì)空間數(shù)據(jù)進(jìn)行在線編輯后,這種改變不能立即反饋給客戶端,而是需要后臺(tái)管理員對(duì)地圖進(jìn)行重新切片。 為了解決WebGIS 中地理數(shù)據(jù)需要頻繁編輯和編輯后的圖形不能在客戶端得到及時(shí)反映的問題,郭明武、彭清山、李黎[3]提出了地圖瓦片局部更新,在ArcGIS Server 融合緩存的基礎(chǔ)上,創(chuàng)建了自定義函數(shù)UpdateTile,根據(jù)所更新要素的坐標(biāo)返回,獲取對(duì)應(yīng)的切片,接著在后臺(tái)重新生成這個(gè)范圍內(nèi)的切片,并最終實(shí)現(xiàn)圖形顯示與數(shù)據(jù)更新的同步。 而GeoServer 和GeoWebCache 的瓦片緩存技術(shù)中的一致性維護(hù)機(jī)制則可以保證Web 緩存庫中的地圖信息與底層空間數(shù)據(jù)庫中的地圖信息一致,各Web 緩存數(shù)據(jù)庫之間信息一致。
地圖瓦片技術(shù)將配置好的一定坐標(biāo)范圍的地圖,按照固定的若干個(gè)比例尺(瓦片級(jí)別)和指定圖片尺寸,在服務(wù)器端切成若干行及列的正方形圖片,以指定的格式保存成圖像文件,按一定的命名規(guī)則和組織方式存儲(chǔ)到服務(wù)器的目錄系統(tǒng)中或是數(shù)據(jù)庫系統(tǒng)里,形成金字塔模型的靜態(tài)地圖緩存。 瓦片金字塔模型是一種多分辨率層次模型,從瓦片金字塔的底層到頂層,分辨率越來越低,但表示的地理范圍不變,如圖1 所示。本文提出的地圖切圖方法是根據(jù)瓦片式地圖的金字塔模型結(jié)構(gòu),確定地圖服務(wù)平臺(tái)所要求的最大縮放級(jí)別數(shù),把縮放級(jí)別最低、地圖比例尺最大的地圖圖片作為金字塔的底層[4]。 每一縮放級(jí)別對(duì)應(yīng)相應(yīng)的地圖比例尺,根據(jù)研究區(qū)域的地理坐標(biāo)范圍,計(jì)算中央經(jīng)線,設(shè)置分度帶方法以及坐標(biāo)系統(tǒng)形成比例尺下的接圖表圖層文件,并根據(jù)國(guó)家基本比例尺地形圖的分幅編號(hào)方法計(jì)算所有的標(biāo)準(zhǔn)圖幅號(hào)。將每一級(jí)對(duì)應(yīng)的地圖接圖表對(duì)地圖文檔進(jìn)行切割,將生成的瓦片地圖以對(duì)應(yīng)的圖幅號(hào)進(jìn)行命名,按照分級(jí)的目錄組織結(jié)構(gòu)將文件存儲(chǔ)存儲(chǔ)在服務(wù)器硬盤以及Oracle 數(shù)據(jù)庫中,數(shù)據(jù)表的字段結(jié)構(gòu)為圖幅號(hào)、圖片路徑,在服務(wù)器端形成該地圖文檔相應(yīng)的地圖瓦片庫,便于客戶端對(duì)瓦片庫進(jìn)行索引和查找。
(1)分別使用ArcGIS Server 和Geoserver 作為地圖服務(wù)器,對(duì)空間數(shù)據(jù)庫里存儲(chǔ)的地進(jìn)行切片,并在瀏覽器中顯示。
(2)比較ArcGIS Server 與GeoServer 生成切片地圖的差異。
瓦片地圖服務(wù)體系結(jié)構(gòu),主要由三層組成,分別為客戶端、應(yīng)用服務(wù)端和數(shù)據(jù)庫。 客戶端為瀏覽器。 服務(wù)器端分為GIS 服務(wù)器和web 服務(wù)器,為服務(wù)層。數(shù)據(jù)庫中可存放地圖數(shù)據(jù)或者屬性數(shù)據(jù)等。發(fā)布地圖瓦片服務(wù)可通過GIS 服務(wù)器(如ArcGIS Server、GeoServer)讀取數(shù)據(jù)庫中存儲(chǔ)的地圖、或者計(jì)算機(jī)中的地圖文件,對(duì)其進(jìn)行切片,然后通過web 服務(wù)器發(fā)布,這樣,用戶即可通過瀏覽器對(duì)切片地圖進(jìn)行訪問。在客戶端,還可通過OpenLayers、GMap 等對(duì)地圖進(jìn)行修飾,以獲得更好的用戶體驗(yàn)。
2.2.1 使用ArcGIS Server 發(fā)布瓦片地圖
用ArcGIS Server 發(fā)布瓦片地圖,GIS 服務(wù)器為ArcGIS Server,Web 服務(wù)器為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ā)布地圖服務(wù),用桌面系統(tǒng)調(diào)用該服務(wù)。
5)地圖切片。 地圖發(fā)布成功后,在ArcCatalog 中設(shè)置好切圖的坐標(biāo)原點(diǎn)、輸出圖片的格式、大小、圖片的DPI 和各級(jí)緩存的比例。
6)創(chuàng)建web 應(yīng)用程序,調(diào)用地圖服務(wù),并將切片前(圖1)與切片后的地圖縮放速度做對(duì)比(圖1)。
圖1 切片前地圖加載速度
圖2 切片后地圖加載速度
2.2.2 使用GeoServer 發(fā)布瓦片地圖
用GeoServer 發(fā)布瓦片地圖,GIS 服務(wù)器為GeoServer,Web 服務(wù)器為Tomcat,數(shù)據(jù)庫為PostGIS。
研究步驟為:
1) 環(huán)境搭 建:GeoServer+Tomcat+PostGIS+PostgreSQL+NetBeans IDE
2) 利用PostGIS 將地圖文件導(dǎo)入到數(shù)據(jù)庫中。 使用PostGIS +PostgreSQL 數(shù)據(jù)庫, 用PostGIS 提供的插件shape file to postgis importer 把shapefile 數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫。
3)將數(shù)據(jù)庫中的地圖添加到GeoServer 中,將要進(jìn)行切片的圖層添加到一個(gè)Group 中并進(jìn)行風(fēng)格設(shè)置。
4)利用GeoWebCache 生成瓦片地圖。 設(shè)置好切片的級(jí)別、坐標(biāo)系統(tǒng)、保存圖片格式及進(jìn)行切片的線程數(shù)即可。
按照上述步驟生成切片,對(duì)比切片前后加載圖片時(shí)間(圖3 為切片前放大級(jí)數(shù)為7-14 時(shí)的加載時(shí)間對(duì)比, 圖4 為切片后放大級(jí)數(shù)為7-17 時(shí)的具體加載時(shí)間):
圖3 切片前放大級(jí)數(shù)為7-14 時(shí)的加載時(shí)間對(duì)比
圖4 切片后放大級(jí)數(shù)為7-17 時(shí)的具體加載時(shí)間(加載時(shí)間為各時(shí)間之和)
表1 ArcGIS Server 切片前后縮放速度對(duì)比
用ArcGIS Server 生成的瓦片地圖的大小為28.5MB。
由表1 可以看出,切片前縮放的平均速度約為676ms,切片后平均速度約為159ms,瓦片技術(shù)在這個(gè)試驗(yàn)中提高速度約為4 倍。
表2 GeoServer 切片前后加載速度對(duì)比
用GeoServer 生成的瓦片地圖占用空間220MB。
由表2 可以看出,切片前縮放的平均速度約為8.86s,切片后縮放的平均速度約為737.7ms, 瓦片技術(shù)在這個(gè)試驗(yàn)中提高速度約為12倍。
本文從渲染效果、簡(jiǎn)便程度、效率、經(jīng)濟(jì)、空間等五個(gè)主要方面進(jìn)行切片效果對(duì)比。
3.3.1 渲染效果
ArcGIS Server 對(duì)發(fā)布的地圖服務(wù)進(jìn)行渲染可以在arcgis 系列軟件中直接設(shè)置(設(shè)置mxd 文件渲染,渲染每個(gè)圖層),選擇程序提供的渲染模式,也可以自定義渲染模式,還可以加載拷貝的style,渲染文件可移植性強(qiáng),方便快捷,效果良好。
GeoServer 對(duì)發(fā)布的地圖渲染是通過渲染每個(gè)圖層來實(shí)現(xiàn)的。 每個(gè)圖層發(fā)布的時(shí)候,可以選擇GeoServer 提供的少量渲染模式,可選的模式比較少, 但是和ArcGIS Server 相同的是, 也可以自定義渲染模式,還可以加載拷貝的xml 文件,修改已有的xml 渲染文件,渲染文件可移植性強(qiáng),同樣方便快捷。
總體來說, 如果不需要自定義特別的渲染模式的話,ArcGIS Server 選擇性多,有優(yōu)勢(shì)。 操作過程中,ArcGIS Server 操作快捷方便,調(diào)整效果方便,有優(yōu)勢(shì),但是需要ArcGIS Destop 桌面應(yīng)用程序才可以操作,有局限性。 GeoServer 操作界面簡(jiǎn)便,不需要特定軟件環(huán)境,但是效果不直觀,相比于ArcGIS Server 不夠方便。 如果需要自定義特別的渲染模式, 兩種都方便快捷, 這種情況下GeoServer 比ArcGIS Server方便,因?yàn)槠洳恍枰囟ㄜ浖h(huán)境。
3.3.2 簡(jiǎn)便程度
GeoServer 環(huán)境配置相比ArcGIS Server 來說一定容易一些。 操作上,ArcGIS Server 發(fā)布服務(wù)、切片可直接通過桌面應(yīng)用程序完成,參數(shù)設(shè)置簡(jiǎn)單易理解,步驟簡(jiǎn)單。 GeoServer 發(fā)布服務(wù)需要先建工作空間、store、發(fā)布layer,發(fā)布過程中選擇渲染方式,投影等參數(shù),過程相比ArcGIS Server 要復(fù)雜。 GeoServer 切片是通過geowebcache 服務(wù)完成,其可以方便的設(shè)置切片各參數(shù),保存類型位置等。 ArcGIS Server 切片使用緊湊模式緩存時(shí),速度比GeoServer 切片快的多,ArcGIS Server 切片使用松散模式緩存時(shí),速度也比GeoServer 切片稍快。 除此之外,地圖發(fā)布之后,GeoServer 修改地圖服務(wù)需修改具體圖層然后重新切片,操作不方便,但是ArcGIS Server 提供局部更新操作支持。
3.3.3 效率
對(duì)于相同地圖服務(wù),ArcGIS Server 切片使用緊湊模式時(shí), 切片時(shí)間大大少于GeoServer 切片時(shí)間;ArcGIS Server 切片使用松散模式時(shí),切片時(shí)間略多于GeoServer 切片時(shí)間。 讀取緩存文件 (圖片) 時(shí),ArcGIS Server Manager 要略慢于GeoServer。
3.3.4 經(jīng)濟(jì)
ArcGIS 系列軟件是商業(yè)軟件,需購買,且相當(dāng)貴;而GeoServer 以及postgis 等軟件都是開源軟件,免費(fèi),容易獲取。
3.3.5 空間
ArcGIS Server 切片使用緊湊模式時(shí),保存的緩存文件不是直接的jepg/png 等圖片格式,而是ArcGIS 識(shí)別的一種特別格式,其緩存文件大小遠(yuǎn)小于GeoServer 對(duì)相同服務(wù)的切片緩存。
本文詳細(xì)論述了使用ArcGIS Server 和GeoServer 進(jìn)行瓦片地圖生成的原理及過程,并對(duì)兩者進(jìn)行了對(duì)比。ArcGIS Server 在地圖渲染、切片效率、節(jié)約存儲(chǔ)空間方面要優(yōu)于GeoServer,但是GeoServer 在易用性、可移植性、經(jīng)濟(jì)性方面會(huì)更有優(yōu)勢(shì)。用戶可根據(jù)這些方面對(duì)地圖服務(wù)平臺(tái)進(jìn)行選擇。
[1]蘇旭明,譚建成.WebGIS 中瓦片地圖關(guān)鍵技術(shù)研究[J].北京測(cè)繪,2012(2):9-12.
[2]陽華,劉振宇,許文明.GeoServer 瓦片緩存機(jī)制研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2011(4):63-65.
[3]郭明武,彭清山,李黎.ArcGIS Server 中地圖瓦片實(shí)時(shí)在線局部更新方法研究[J].測(cè)繪通報(bào),2012(2):35-38.
[4]Scott Davis.GIS for Web Developers[M].蔣波濤,譯.北京:電子工業(yè)出版社,2008.
[5]黃夢(mèng)龍.瓦片地圖技術(shù)在桌面端GIS 中的應(yīng)用[J].地理空間信息,2011,9(4):149-151.
[6]許虎, 聶云峰, 舒堅(jiān). 基于中間件的瓦片地圖服務(wù)設(shè)計(jì)與實(shí)現(xiàn)[J].地球信息科學(xué)學(xué)報(bào), 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.