android gis 框架,三、ArcGis For Android:图层(Layers)
1、選擇什么類型的圖層
2、地圖圖層
3、操作層圖層
4、臨時(shí)的圖形
在ArcGis中,圖層是用來在地圖中顯示地理數(shù)據(jù)的。一般來說圖層的數(shù)據(jù)只會(huì)來自單獨(dú)的數(shù)據(jù)源,比如只來自map service URL或者只來自geodatabase數(shù)據(jù)庫中的表。圖層使用關(guān)聯(lián)的渲染器將數(shù)據(jù)渲染成可視化符號(hào),圖層還可以為labels 和popups定義屬性,以便于更方便展示數(shù)據(jù)。圖層的數(shù)據(jù)和它的渲染方法是高度解耦的,所以開發(fā)人員可以能夠使用各種方式來展示數(shù)據(jù)。圖層的概念就如圖層的名字一樣,它在地圖中是分層的,即一層一層地堆疊著的,并且圖層的繪制是從底層到頂部繪制的。作為我們開發(fā)人員,我們可以控制圖層在地圖中的繪制順序,并且設(shè)置該圖層是否可見。在許多Map App中也提供的這種功能,它們允許用戶自己打開或者關(guān)閉圖層,讓用戶自己設(shè)置圖層的顯示順序。
簡而言之,圖層可以讓地理數(shù)據(jù)變得可視化,以便于我們可以探索,分析,查詢和編輯地理數(shù)據(jù)。ArcGis SDK為我們提供了廣泛的圖層類型,用來訪問各種不同的地理數(shù)據(jù)源,圖層的性能取決于數(shù)據(jù)的特性以及在app中如何訪問和顯示數(shù)據(jù)。
接下來我們主要描述圖層的類型,概述了圖層的特性,并且將詳細(xì)地說明我們通常如何使用圖層。圖層對象的獲取有兩種方法,第一種:我們可以通過現(xiàn)有的地圖來獲取圖層的引用。第二種:我們可以創(chuàng)建或者添加新的圖層來構(gòu)建新地圖。
選擇圖層類型
圖層可以訪問各種地理數(shù)據(jù)源,這些數(shù)據(jù)源本質(zhì)上是靜態(tài)的,我們需要根據(jù)地理數(shù)據(jù)源來選擇我們的圖層,使用圖層訪問和顯示數(shù)據(jù),以及實(shí)現(xiàn)我們特定的性能標(biāo)準(zhǔn)。
數(shù)據(jù)源
1、在線數(shù)據(jù)源。由GIS服務(wù)器提供Web服務(wù),例如ArcGIS Server服務(wù)。
來自ArcGIS Server的地圖服務(wù)分為兩大類:tiled(平鋪) 和dynamic(動(dòng)態(tài))。Tiled服務(wù)是基于圖層的平鋪方案提供預(yù)生成(緩存)圖塊。Tiled可以提供柵格圖像和矢量圖像。獲取到數(shù)據(jù)后,layer會(huì)在客戶端組裝這些數(shù)據(jù)塊。你可以使用tiled layer訪問tiled地圖服務(wù)。Dynamic地圖服務(wù),該服務(wù)是在客戶端請求時(shí),即時(shí)創(chuàng)建地圖圖像。你可以使用map image layer訪問Dynamic 地圖服務(wù)。
Feature(功能)服務(wù)可以讓我們訪問地圖里面的各個(gè)功能。比如我們在ArcGIS Server上有一個(gè)features services,ArcGIS Online和Portal for ArcGIS會(huì)從一個(gè)layer的可見范圍返回一個(gè)features 的set集合,或者屬性和空間查詢。所以,你可以使用feature layer訪問這種服務(wù)。
你還可以訪問mobile map packages 、tile packages、本地?cái)?shù)據(jù)、還有網(wǎng)絡(luò)數(shù)據(jù)。本地的數(shù)據(jù)跟在線數(shù)據(jù)一樣,也擁有不同的layer類型,來訪問數(shù)據(jù)。
筆記:
臨時(shí)生成的地理數(shù)據(jù)(例如,查詢的結(jié)果或GPS的位置)通常在圖形疊加中在短期的基礎(chǔ)上顯示
Layer 類
Layer的體系結(jié)構(gòu),斜體的類名是抽象的。
Common layer properties(公共的layer屬性):
所有圖層類都從Layer類繼承公共屬性,Layer實(shí)現(xiàn)了Loadable接口。Loadable是用來異步加載Layer資源的接口。Layer也實(shí)現(xiàn)了LayerContent接口。關(guān)于Layer類和它的接口的一些公共屬性,如下所示:
1、獲取Layer的名稱,使用getName方法。
2、查看Layer的具體說明,使用getDescription方法。
3、獲取Layer的完整范圍,使用getFullExtent方法。
4、獲取Layer使用的空間參考,使用getSpatialReference方法。
5、隱藏或者顯示Layer,使用setVisible方法。
6、控制圖層的透明度,使用setOpacity方法,和opacity屬性。
7、更改可見的Layer的縮放范圍閾值,使用setMinScale和setMaxScale。
image-based數(shù)據(jù)源的Layer,可能允許在Layer(繼承ImageAdjustmentLayer)運(yùn)動(dòng)的過程中調(diào)整圖像亮度,對比度,和gamma度,但是底層的數(shù)據(jù)是不會(huì)更改的。
所有的Layer類不僅可以用來作為basemap,也可以用來作為操作Layer。接下來我們具體討論BaseMap和操作Layer,但是,我們也不是說要絕對準(zhǔn)守這些規(guī)則,我們需要選擇什么類,我們應(yīng)該基于對每種類型的功能和性能特性的理解。
Basemap layers
一個(gè)basemap會(huì)提供豐富的語境背景,以幫助用戶定向地圖。basemap提供了一個(gè)可視化框架,使用這個(gè)框架,我們可以覆蓋操作層、進(jìn)行分析、可視化地理信息。
Basemap數(shù)據(jù)一般來自:
1、ArcGIS Online提供了一些即用型底圖,例如街道,地形,帶標(biāo)簽的圖像等。
2、你組織自己的focused basemaps。
3、將你自己的Layer混合在一個(gè)
如果你創(chuàng)建了自己的BaseMaps,你需要考慮的是:
1、如果數(shù)據(jù)頻繁更改或如果數(shù)據(jù)在具有不同預(yù)測的地圖中使用,則可能適合將數(shù)據(jù)作為動(dòng)態(tài)(非緩存)地圖服務(wù)發(fā)布,你可以使用ArcGIS map image layer訪問這種數(shù)據(jù)。
2、如果底圖數(shù)據(jù)相對靜態(tài),那么將其作為平鋪(緩存)地圖服務(wù)發(fā)布可能更合適。你可以使用ArcGIS tiled layer訪問這種數(shù)據(jù)。
3、如果你的用戶不能連接網(wǎng)絡(luò),那么建議使用離線的basemaps,比如:tile package、local tile緩存、mobile map package。
4、通過使用矢量平鋪層,可以減少數(shù)據(jù)存儲(chǔ)空間并且提高繪制性能
tiled layers作為basemap layers在線和離線的區(qū)別:
在線的tiled layers:
API類:ArcGISTiledLayer, ArcGISVectorTiledLayer——Tiled地圖服務(wù)是連接的緩存地圖服務(wù)(ArcGIS服務(wù)),緩存地圖服務(wù)會(huì)在一個(gè)tiling scheme里面提供地圖塊的預(yù)定義比例。tiling scheme是可以通過服務(wù)來設(shè)置的。
未完待續(xù)。。。。。
總結(jié)
以上是生活随笔為你收集整理的android gis 框架,三、ArcGis For Android:图层(Layers)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸿蒙系统小卡片,升级鸿蒙101版本,UI
- 下一篇: android 强制全屏,[Androi