任連程++韓喜燕++王華艷
【摘 要】 本文探討如何使用新一代Rest技術提高在線地圖的顯示速度。文中以ArcGIS Rest API為例,介紹了其支持的各種地圖顯示方式的優缺點,加快地圖顯示的一些方法,并重點描述了瓦片地圖+要素圖層這種新型的高效率地圖配置方式,以及要注意的問題等。
【關鍵詞】 WebGIS Rest ArcGIS Feature Layer 地圖優化
Rest即表征狀態轉移,是一種針對網絡應用的設計和開發方式,目前在三種主流的Web服務實現方案中,因為REST模式的Web服務與復雜的SOAP和XML-RPC對比來講明顯的更加簡潔,其已經成為最主要的Web服務設計模式。在Rest服務的基礎上設計B/S方式的GIS應用已成為WebGIS應用的主流設計方式之一。其好處是兼容性廣泛,可以兼容各種桌面瀏覽器,功能強大,界面友好,大量的計算、成圖可以放在客戶端執行,減輕服務器壓力,提高繪圖效率。本文以新一代的ArcGIS 10.2.2版本為例,探討一些目前為止可以提高客戶端繪圖的方法,使客戶端的繪圖也能達到或超越本地單機繪圖的顯示效率。
ArcGIS是美國ESRI公司的主打GIS產品,市場占有率世界第一,其10.2.2版本是其最近版本,于2014年4月發布,其Web Rest API代表了世界最高應用水平,其Web Rest API分為Javascript、Flex、Silverlight三個版本,其桌面和移動端的Runtime API(9種)的Web地圖調用和Web Rest API類似,本文也可作為參考。
Web應用中,所有的數據都是由服務器儲存的,包括柵格數據(影像)和矢量數據,在ArcGIS Server中數據以服務(地圖服務)的形式發布出來,供客戶端使用。在Web Rest API中地圖圖層的類型有4種:Tiled Layer(瓦片地圖),Dynamic Layer(動態地圖),Feature Layer(要素圖層),Graphics Layer(臨時圖層)。各個調用方式都有不同的應用范圍和優勢。
Tiled Layer,瓦片地圖或切片地圖,是預先將地圖渲染生成為圖片,這樣在用戶訪問的時候,可以直接調用這些結果圖片,而不需要實時的進行渲染,從而極大的提升地圖訪問速度。所有的公共在線地圖的底圖,如Google Map,百度地圖等都是這種訪問方式。其特點是比例尺固定,受地圖數據量影響很小。但因為傳輸的是預先圖片,其數據更新的步驟繁瑣、耗時長,占用服務器空間大。推薦在儲存空間允許的情況下,對所有影像地圖,不需要變更和查詢的底圖,都使用瓦片地圖。
Dynamic Layer,動態地圖,即服務器根據客戶端的請求,動態生成地圖圖片并發給客戶端顯示。其特點是可以無級放縮,使用方便,但速度較慢。雖說經過GIS行業的不斷努力,動態地圖的效率已經提升了很多,但因為是服務器渲染,需要占用大量的服務器資源,速度提升受限,在Feature Layer圖層面前除了使用方便,對必須做大量數據同時顯示的渲染效率高些(服務器比客戶機要強大的多)之外,沒有任何優勢可言。對客戶經常要看的圖層,如非必要,不建議使用Dynamic Layer。
Feature Layer,要素圖層,是把動態地圖中的某一層當做數據源,把矢量數據和相應的屬性等發給客戶端,由客戶端進行渲染成圖。其可以一次性把全部矢量數據(或根據范圍,比例尺等控制)保存在客戶端緩存里,調用頁面語言強大的繪圖能力,在一定的數據量范圍內,渲染效率很高,幾乎沒有延遲。因為是矢量數據,其可以結合多種動態效率,如鼠標懸浮在多邊形上,此多邊形高亮顯示,并有懸浮窗口顯示屬性(如MapTip浮動窗口);鼠標懸浮在圖標上,圖標有行動畫效果,并變大提醒等等,人機交互提升巨大。其缺點是,配置復雜,動畫效果靠編程實現,系統開發量會相應的增大。推薦在數據量不大的情況下,大量使用。
Graphics Layer,臨時圖層,儲存臨時數據的圖層,一般用于儲存查詢得到的空間數據,臨時顯示等。其特性和Feature Layer一致(其實Feature Layer是Graphics Layer的一種),區別是Feature Layer里的要素來自于發布的圖層,Graphics Layer里的要素靠程序賦予。
Web 地圖中,高效率的地圖顯示推薦采用Tiled Layer(底圖)+ Feature Layer(業務)+ Graphics Layer(查詢結果)的組合方式,使服務器的負荷最小,客戶端的繪圖速度最快。對不需要屬性查詢,只做地圖顯示的圖層,可以做好切片緩存,以Tiled Layer方式進行訪問。切片時設置合適的多級比例尺,并設置好切片范圍已提高處理的效率。對經常要屬性查看的業務圖層,可以采用Feature Layer進行訪問,其地圖高效率顯示的關鍵是控制同時顯示數據中的圖形端點數量,根據現在的硬件水平,頁面上同時顯示的要素的端點要控制在1萬個以內,因屏幕像素數量限制,端點過多也不行提高地圖顯示效果。如圖形端點數量過多,可以采用多級比例尺控制+多級抽希方式。根據底圖的比例尺把數據多級抽希成不同比例尺的地圖,用多個Feature Layer并加以比例尺控制對應圖層比例尺的方式顯示數據,形成金字塔式的多級要素地圖,達到減少同時顯示的端點數量,提高地圖渲染效率。對用戶做空間或屬性查詢得到的數據可以使用Graphics Layer做加載和成圖。
限制Dynamic Layer的使用,和采用多級比例尺地圖控制需要顯示要素的端點數是提高地圖顯示速度的關鍵。在新的Rest技術下,Feature Layer已經足夠的強大,能夠替代原有Dynamic Layer的大部分工作,配合合理的地圖數據優化以及地圖切片緩存技術,在線地圖的顯示效率可以得到成倍的提升。endprint