1、选择什么类型的图层
2、地图图层
3、操作层图层
4、临时的图形
在ArcGis中,图层是用来在地图中显示地理数据的。一般来说图层的数据只会来自单独的数据源,比如只来自map service URL或者只来自geodatabase数据库中的表。图层使用关联的渲染器将数据渲染成可视化符号,图层还可以为labels 和popups定义属性,以便于更方便展示数据。图层的数据和它的渲染方法是高度解耦的,所以开发人员可以能够使用各种方式来展示数据。图层的概念就如图层的名字一样,它在地图中是分层的,即一层一层地堆叠着的,并且图层的绘制是从底层到顶部绘制的。作为我们开发人员,我们可以控制图层在地图中的绘制顺序,并且设置该图层是否可见。在许多Map App中也提供的这种功能,它们允许用户自己打开或者关闭图层,让用户自己设置图层的显示顺序。
简而言之,图层可以让地理数据变得可视化,以便于我们可以探索,分析,查询和编辑地理数据。ArcGis SDK为我们提供了广泛的图层类型,用来访问各种不同的地理数据源,图层的性能取决于数据的特性以及在app中如何访问和显示数据。
接下来我们主要描述图层的类型,概述了图层的特性,并且将详细地说明我们通常如何使用图层。图层对象的获取有两种方法,第一种:我们可以通过现有的地图来获取图层的引用。第二种:我们可以创建或者添加新的图层来构建新地图。
选择图层类型
图层可以访问各种地理数据源,这些数据源本质上是静态的,我们需要根据地理数据源来选择我们的图层,使用图层访问和显示数据,以及实现我们特定的性能标准。
数据源
1、在线数据源。由GIS服务器提供Web服务,例如ArcGIS Server服务。
来自ArcGIS Server的地图服务分为两大类:tiled(平铺) 和dynamic(动态)。Tiled服务是基于图层的平铺方案提供预生成(缓存)图块。Tiled可以提供栅格图像和矢量图像。获取到数据后,layer会在客户端组装这些数据块。你可以使用tiled layer访问tiled地图服务。Dynamic地图服务,该服务是在客户端请求时,即时创建地图图像。你可以使用map image layer访问Dynamic 地图服务。
Feature(功能)服务可以让我们访问地图里面的各个功能。比如我们在ArcGIS Server上有一个features services,ArcGIS Online和Portal for ArcGIS会从一个layer的可见范围返回一个features 的set集合,或者属性和空间查询。所以,你可以使用feature layer访问这种服务。
你还可以访问mobile map packages 、tile packages、本地数据、还有网络数据。本地的数据跟在线数据一样,也拥有不同的layer类型,来访问数据。
笔记:
临时生成的地理数据(例如,查询的结果或GPS的位置)通常在图形叠加中在短期的基础上显示
Layer 类
Layer的体系结构,斜体的类名是抽象的。
Common layer properties(公共的layer属性):
所有图层类都从Layer类继承公共属性,Layer实现了Loadable接口。Loadable是用来异步加载Layer资源的接口。Layer也实现了LayerContent接口。关于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数据源的Layer,可能允许在Layer(继承ImageAdjustmentLayer)运动的过程中调整图像亮度,对比度,和gamma度,但是底层的数据是不会更改的。
所有的Layer类不仅可以用来作为basemap,也可以用来作为操作Layer。接下来我们具体讨论BaseMap和操作Layer,但是,我们也不是说要绝对准守这些规则,我们需要选择什么类,我们应该基于对每种类型的功能和性能特性的理解。
Basemap layers
一个basemap会提供丰富的语境背景,以帮助用户定向地图。basemap提供了一个可视化框架,使用这个框架,我们可以覆盖操作层、进行分析、可视化地理信息。
Basemap数据一般来自:
1、ArcGIS Online提供了一些即用型底图,例如街道,地形,带标签的图像等。
2、你组织自己的focused basemaps。
3、将你自己的Layer混合在一个
如果你创建了自己的BaseMaps,你需要考虑的是:
1、如果数据频繁更改或如果数据在具有不同预测的地图中使用,则可能适合将数据作为动态(非缓存)地图服务发布,你可以使用ArcGIS map image layer访问这种数据。
2、如果底图数据相对静态,那么将其作为平铺(缓存)地图服务发布可能更合适。你可以使用ArcGIS tiled layer访问这种数据。
3、如果你的用户不能连接网络,那么建议使用离线的basemaps,比如:tile package、local tile缓存、mobile map package。
4、通过使用矢量平铺层,可以减少数据存储空间并且提高绘制性能
tiled layers作为basemap layers在线和离线的区别:
在线的tiled layers:
API类:ArcGISTiledLayer, ArcGISVectorTiledLayer——Tiled地图服务是连接的缓存地图服务(ArcGIS服务),缓存地图服务会在一个tiling scheme里面提供地图块的预定义比例。tiling scheme是可以通过服务来设置的。
未完待续。。。。。