理論介紹
1.動態(tài)圖層介紹
動態(tài)圖層是地圖服務(wù)中包含的一項功能,允許通過客戶端API動態(tài)的更改地圖服務(wù)中的圖層外觀和行為。具體來說,通過動態(tài)圖層可以實現(xiàn):
- 向地圖服務(wù)中動態(tài)的添加新圖層;
- 設(shè)置圖層動態(tài)標(biāo)注;
- 修改圖層渲染方式,支持簡單渲染、唯一值渲染、分類渲染;
- 更改地圖服務(wù)中圖層的顯示順序;
- 從地圖服務(wù)中移除圖層;
- 動態(tài)的添加和修改圖層或表的連接關(guān)系;
拿WebGIS系統(tǒng)開發(fā)來說,如果想更改地圖服務(wù)中某個圖層的渲染方式,通常的做法是先將數(shù)據(jù)取到客戶端,然后在客戶端更改渲染方法。對于小數(shù)據(jù)量,這種客戶端渲染的方式?jīng)]有問題,但數(shù)據(jù)量大之后客戶端無法承載。
個人認(rèn)為,在以下業(yè)務(wù)需求下,可嘗試使用動態(tài)圖層來解決:
- 需要更改地圖服務(wù)中某個圖層的渲染方式,且該圖層包含的要素個數(shù)比較多,使用常規(guī)的客戶端渲染方式性能差或者無法支撐大數(shù)據(jù)量。
- 需要在客戶端實現(xiàn)動態(tài)的添加業(yè)務(wù)圖層。
需要注意的是,動態(tài)圖層支持的數(shù)據(jù)量也不是無限的,動態(tài)圖層的出圖效果與發(fā)布的動態(tài)地圖服務(wù)效果一樣。換句話說,如果動態(tài)地圖服務(wù)中數(shù)據(jù)量上百萬后,在客戶端加載時會明顯看到數(shù)據(jù)加載效果,而且加載會較慢,同樣換成動態(tài)圖層也會出現(xiàn)同樣的效果。
2.動態(tài)圖層支持的數(shù)據(jù)源
動態(tài)圖層支持的數(shù)據(jù)源包括:
- 數(shù)據(jù)庫(僅查詢圖層)
- 文件地理數(shù)據(jù)庫(僅要素圖層、柵格圖層和表)
- 包含基于文件的柵格的文件夾
- 包含 shapefile 或 .dbf 文件的文件夾
- 地理數(shù)據(jù)庫(僅要素圖層、柵格圖層、查詢圖層和表)
3.開啟動態(tài)圖層功能
3.1.注意事項
- 需要為數(shù)據(jù)源設(shè)置工作空間ID,用于唯一標(biāo)識工作空間池中的工作空間。該 ID 可以是任何字符串,并且可以包含空格。
- 選擇動態(tài)工作空間時,建議選擇僅含有支持地圖服務(wù)的圖層和表格的工作空間。
- ArcGIS Server 帳戶必須至少具有對包含想要動態(tài)添加到地圖服務(wù)的數(shù)據(jù)的動態(tài)工作空間的讀訪問權(quán)限。
3.2.開啟步驟
- 在發(fā)布地圖服務(wù)過程中,選擇
Capabilities-->Mapping,勾選上“Allow per request modification of layer order and symbology”,即可開啟動態(tài)圖層功能。 - 開啟動態(tài)圖層功能后,還需為地圖服務(wù)添加動態(tài)工作空間,即指定動態(tài)圖層所在的位置。
打開Manage…,可為地圖服務(wù)添加多個動態(tài)工作空間。動態(tài)工作空間根據(jù)數(shù)據(jù)類型分為數(shù)據(jù)庫、Shapefile、文件GDB、柵格。
4.動態(tài)圖層開發(fā)注意事項
在客戶端API中使用動態(tài)圖層功能時,可以結(jié)合rest服務(wù)地址來測試傳遞的參數(shù)是否合法,以及檢驗輸出結(jié)果。rest地址中傳遞的參數(shù)內(nèi)容可根據(jù)REST API幫助說明輸入。
5.JS API中動態(tài)圖層的結(jié)構(gòu)分析
在JS API中與動態(tài)圖層相關(guān)的數(shù)據(jù)源有兩類:圖層源和數(shù)據(jù)源。圖層源指的是可以加載到地圖中的Layer,數(shù)據(jù)源則是圖層源Layer實際關(guān)聯(lián)的原始數(shù)據(jù)。圖層源與數(shù)據(jù)源的關(guān)系如下:
| Map Layer圖層源 | Data Layer數(shù)據(jù)源 |
|---|---|
| —— | table數(shù)據(jù)源 |
| —— | raster數(shù)據(jù)源 |
| —— | query數(shù)據(jù)源 |
| —— | join數(shù)據(jù)源 |
圖層源分為兩種:Map Layer和Data Layer,如果是原地圖服務(wù)中的圖層,則圖層源類型是Map Layer;如果是從動態(tài)工作空間加載的圖層,則是Data Layer類型。Data Layer根據(jù)原始數(shù)據(jù)的來源(即數(shù)據(jù)源),包含有:table、raster、query、join。table數(shù)據(jù)源指的是表和圖層數(shù)據(jù)、raster指的是柵格數(shù)據(jù)、query指的是查詢圖層、join用于建關(guān)聯(lián)關(guān)系。