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