Layer types
不同的图层类型用于绘制不同的数据类型。
通常,地图中的图层可以分为底图(basemap),操作图层(operational)或图形(graphics)图层。功能和性能可能会有所不同,具体取决于数据的特征以及它在应用程序中的访问方式和显示方式。
Choosing layer types
大多数图层显示来自GIS服务器Web服务的内容,例如ArcGIS for Server服务,Bing地图,Open Street Map或WMS服务。
其中一种服务被称为地图服务。地图服务分为两大类:动态(dynamic)或平铺(tiled)。
- 动态地图服务,返回客户请求时,即时创建的地图图像。
- 平铺地图服务根据某种切片方案(based on some tiling scheme)提供预先生成(pre-generated)的图像,并且图层在客户端应用程序中组合这些切片。
另一种服务被称为特色服务( feature service)。 作为响应,ArcGIS for Server要素服务会从单个图层返回一组要素。
其他图层显示不同类型的内容:
- 图形层(graphics layer)不依赖于Web服务的内容。
- 专业层(Specialized layers)也可用于处理数据源,如Web地图服务(WMS)信息和KML。
以下部分提供了用于底图(basemap),操作(operational)和图形(graphics)图层的典型类。然而,这些并不是绝对的规则,并且类别的选择应该基于对每种类型特征的理解。
以下部分将讨论一些例外情况。
API提供了各种各样的图层类。
每个可用于显示特定的数据类型,并且每个都有其自己的功能和性能特征。
通常,每个图层类都用于特定图层类型 - 底图(basemap),操作(operational)和图形(graphics)图层.
Common layer properties
全部的layer types都继承自common class ,它允许为任何图层类型查询或更改某些属性。
- 获取layer的full extent,使用
fullEnvelope
属性
- 使用spatialReference方法确定图层使用的空间参考(patial reference)。
- 显示或隐藏layer使用
visible
属性
- 控制透明度用
opacity
属性
- 使用
minScale
和maxScale
属性更改可见图层的比例范围阈值。
Basemap layers
通常将底图数据设置为平铺地图图层(tiled map layer)。根据显示的数据,不同的class用于创建底图图层。
如果您的底图必须在具有各种不同空间参考的地图中使用,或者经常更改或者不经常使用,那么将数据发布为动态地图服务可能更合适。此外,如果您的操作数据很少更改并被大量用户使用,则将它作为平铺地图服务发布可能更合适。
Tiled service layers
API classes:AGSTiledMapServiceLayer
,AGSBingMapLayer
,AGSOpenStreetMapLayer
,AGSWebTiledLayer
,AGSWMTSLayer-Tiled
地图服务图层连接到缓存地图服务(来自ArcGIS for Server,OpenGIS Web地图图块服务实现,OpenStreetMap或Bing),它们以预定义的比例提供地图图像。
在平铺方案中。
平铺方案由服务器设置。
地图图像拼贴是在地图视图上绘制的栅格(也称为位图)图像,并由客户机API安排到其拼贴方案中。
这些服务可以包含多个子层。
Functional characteristics 功能特点
由于服务器上已存在每个平铺图像(tile image),因此无法更改单个图层的可见性或服务的地图默认空间参考(它们可被视为静态地图服务)。
另外,除非高速缓存被刷新,否则数据不能随时间变化。
平铺的服务层无法查询。
Performance characteristics 性能特点
平铺地图服务是运行时可用的最快的地图服务。
地图图像是由服务器预先创建和缓存的,并且很快从服务器返回。
多个图像通常会返回一个地图范围。
请求是在多个线程上完成的,并且响应是异步处理的(分片被请求并且彼此单独绘制)。
这种方法会导致对服务器的很多小型请求,而客户端处理很少会绘制返回的图像。
每个返回图像的大小随着图像的分辨率或复杂度的增加而增加。
例如,对于相同的区域和地图范围,高分辨率图像切片的文件大小大于地形图。
Offline tiled layers
API类AGSLocalTiledLayer - 可以将瓦片缓存从服务器下载到客户端设备,并在应用程序中显示为图层,而无需保持连接到服务。
缓存可以作为单个Tile Package(TPK)文件或ArcGIS Compact Cache下载,也可以使用ArcGIS for Desktop创建并直接配置到设备。
Functional and performance characteristics
本地平铺图层比平铺服务图层显示速度更快,因为不需要网络调用来检索图像切片。
但是,数据必须预先准备好,并通过网络生成并下载到设备,或者直接将生成的文件供应给设备文件存储。
其他功能和性能特征与平铺服务层的特征类似。
Operational layers
操作数据通常作为要素服务(feature service)或作为动态地图服务(dynamic map service)进行配置。
服务类型的选择取决于层需要哪些功能和性能特征。
如果需要编辑,请使用功能服务(feature service); 然而,如果需要复杂的渲染,动态地图服务可能更合适。
下面强调了更多的差异。
如果您的操作数据不需要编辑,更改频率不高,并且被大量用户使用,将它作为平铺地图服务发布可能更合适。
相反,如果您的底图必须在具有各种不同空间参考的地图中使用,或者经常更改或者很少使用,那么将数据发布为动态地图服务可能更合适。
Feature layers 类似地图覆盖物?
要素图层(Feature layers)显示来自要素服务的数据。
要素图层可用于显示,选择和查询图层中的要素。
如果底层要素服务支持编辑,请使用要素图层来编辑几何图元,属性和附件。
可以在使用应用程序时从服务器检索功能,或者可以在设备连接时下载功能,并在设备脱机时本地缓存以供使用。
选择最合适的API选项可让您的应用程序提供所需的工作流程,并使其能够适应情况的要求。
有关可用的不同选项的更多信息,请参阅下面的部分。
Online
API类:AGSFeatureTableLayer(基于AGSGDBFeatureServiceTable) - 要素服务中要素的几何图元,属性和附件被临时缓存在客户端的表中。
要素图层使用此表根据地图范围在地图中原生地绘制要素。
导航地图时会自动检索新功能。
除非特别刷新图层,否则不会从服务器表中检索已在应用程序中缓存的功能更改。
当处理图层时,本地表缓存将被丢弃。
创建并初始化AGSGDBFeatureServiceTable,然后通过将AGSGDBFeatureServiceTable传递给构造函数来创建AGSFeatureTableLayer,最后将AGSFeatureTableLayer添加到地图中。
AGSGDBFeatureServiceTable类是AGSGDBFeatureTable的子类型,用于离线要素图层。
Offline
API类:AGSGDBFeatureTable,AGSFeatureTableLayer - 可以从ArcGIS for Server下载功能服务的本地缓存,并将其显示为应用中的图层,而无需保持连接到服务。使用AGSGDBSyncTask将功能下载到本地地理数据库文件。创建并初始化一个AGSGDBFeatureTable,并通过将AGSGDBFeatureTable传递给构造函数来创建一个AGSFeatureTableLayer,然后将AGSFeatureTableLayer添加到地图中。
创建并初始化一个AGSGDBFeatureTable,并通过将AGSGDBFeatureTable传递给构造函数来创建一个AGSFeatureTableLayer,然后将AGSFeatureTableLayer添加到地图中。
Functional characteristics
由于要素属性,几何图形和附件信息在本地缓存,因此可以根据空间查询或基于文本的WHERE子句查询和过滤这些图层中的各个要素。如果图层是通过可编辑的ArcGIS for Server要素服务创建的,则可以编辑要素图层,并在需要时编辑推送到服务。 如果该图层最初是通过支持同步创建的,则可以将对离线图层中的要素所做的编辑上载到该服务,并且可以将该服务的更新同步到客户端应用程序。
如果该图层最初是通过支持同步创建的,则可以将对离线图层中的要素所做的编辑上载到该服务,并且可以将该服务的更新同步到客户端应用程序。
Performance characteristics
由于完整的特征信息在本地缓存,并且特征是本地绘制的,因此在缩放和平移地图时,此图层类型在缓存特征的范围内提供了卓越的显示性能。
查询这些功能也很有效,可以实现应用程序功能,例如在地图中实时更新查询结果。
本地缓存必须最初创建,这需要服务器端处理时间,并且下载到设备可能需要大量的网络使用和随后的本地设备存储。
此外,应用程序内存随着缓存功能的数量和复杂性而增加。
网络使用可以通过预先将缓存直接配置给设备来消除,方法是使用台式计算机创建缓存并将其复制到设备的内部存储器(如果设备支持此功能,则为可扩展存储卡),这可能是一个合适的工作流程,如果数据没有经常变化。
ArcGIS feature service layers
API类:AGSFeatureLayer - 要素服务图层通过来自ArcGIS for Server要素服务或地图服务的JavaScript对象表示法(JSON)响应创建要素。
每个特征都包含几何图形和属性信息,并在地图中本地绘制。
ArcGIS要素服务图层只能在设备保持连接时使用;
但是,它们确实提供对地理数据库版本和相关字段上的查询的支持。
许多现有应用程序在将其添加到API之前使用ArcGIS要素服务图层,然后才能使用其他要素图层类型。
Functional characteristics
与其他要素图层类型一样,ArcGIS要素服务图层提供了丰富的功能,因为它们包含有关地图上显示的所有要素的完整信息。
可以根据空间查询或基于文本的WHERE子句查询,选择和过滤这些图层中的各个要素。
如果图层是从可编辑的ArcGIS for Server要素服务创建的,则可以编辑要素图层。
Performance characteristics
就服务器的请求处理时间,响应处理时间和渲染速度而言,功能层的丰富功能的成本很低。
这是因为有关每个功能的信息由服务器返回,经过分析并处理成设备上的功能,然后绘制到屏幕上。要素服务图层的性能特征可以通过更改要素图层设置进行调整。
了解这些问题并为您的方案应用最合适的功能图层设置,可帮助您最大限度地提高应用功能图层的性能并构建令人兴奋的功能应用程序。
Feature service layer settings
通过更改要素服务图层的客户端设置,您可以更改图层性能的所有方面,包括请求频率配置文件,响应大小,处理时间和渲染时间。
为了获得最佳性能,无论客户端设置如何,您仍应遵循在服务器上设置服务的最佳实践。
Output attribute fields— 可以通过设置所需输出字段的列表来限制从服务器返回的属性字段。这意味着更少的数据通过网络发送并在响应中处理,因为响应包含的信息较少。使用AGSFeatureLayer类的outFields属性。
Maximum vertex offset - 通过设置最大偏移值可以减少从服务器返回的几何图形的复杂程度,从而减少内存大小。
此值在地图单位中设置,用于在返回信息之前概括服务器上的要素顶点。
如果您正在编辑该功能,则不应使用它,因为某些顶点将丢失,并且拓扑规则可能很容易被破坏。
使用AGSFeatureLayer类中的maxAllowableOffset字段。
Mode—特征服务层支持三种不同的模式,这会显着影响图层的功能和性能。
在传递给要素图层构造函数的AGSFeatureLayer的模式字段中设置您需要的模式。 模式包括Snapshot( 将图层添加到地图后,会立即从服务器检索功能,并且不会再次请求)、On demand(只有地图当前范围内的功能才能从服务中检索。)、Selection(仅在进行选择时才会从服务中请求功能。)
Feature collections—用于显示要素服务的同一类也可以初始化,以显示一组要素,可以使用来自ArcGIS for Server具象状态传输(REST)API调用的JSON字符串定义要素,也可以使用代码手动创建要素。
在这种情况下不需要主动服务连接。
该层可以按照与普通要素图层相同的方式进行查询。
Dynamic map service layers
PI类:AGSDynamicMapServiceLayer,AGSImageServiceLayer - 动态地图服务可以包含多个图层,每次请求时都会由服务器呈现,并作为单个栅格图像返回给客户端。
该图像不包含有关地图中的功能的任何其他信息。
动态地图图层连接到ArcGIS for Server动态地图服务。
Functional characteristics
由于地图图像是由服务器在每次请求时绘制的,所以如果您的数据发生变化,只要请求新的地图图像就会看到这些更改。
此外,可以更改各个地图图层的可见性,并且可以通过添加单个图层定义表达式来过滤显示的数据。
此图层类型的空间参考可以从服务的默认设置改变,ArcGIS for Server可以将每个图像即时重新投影到请求的输出空间参考(地图的)。
该API不包括查询个人动态地图服务图层的具体方法。
但是,图层的终点URL可以被查找任务使用,标识任务,查询任务或用于创建单独的可查询要素图层。
Performance characteristics
对于每个地图请求,ArcGIS for Server都可以即时创建地图图像。因此,服务器渲染时间取决于地图中数据的数量和复杂程度。但是,如果地图服务得到了充分优化,这应该会对客户端做出相对快速的响应,但通常会比等效平铺地图服务层的响应时间更长。
返回的地图图片的文件大小还取决于地图中的数据。由于服务器响应是图像,因此它可以快速绘制,因为它只需要很少的客户端处理。 只要客户端不需要特征信息(属性,几何图形或符号),动态地图服务图层就可以显示随时间周期性变化的特征或需要用户进行某种过滤的特征。
它们通常与选择模式中的要素图层结合使用,以显示最新的地图数据,而无需从每个地图请求中提取服务器中的所有要素信息(如feature layers)。
Graphics layers
图形图层可用于显示上面其他类型图层未覆盖的信息。图形是根据用户操作,从操作产生的,或者从外部信息源中的信息转换而在应用程序的内存中定义的。 要素图层与图形图层共享一点功能。
有关何时使用功能图层与图形图层的更多信息,请参阅功能和图形。
API类:图形图层中的AGSGraphicsLayer-Graphics可以包含几何图形和属性信息,并且可以使用单独的符号或基于图层的渲染器来绘制图形。与要素图层( feature layer)中的要素(feature)一样,每个图形都在本地绘制在地图中。
Functional characteristics
由于图形包含几何图形和属性信息,因此可以显示有关图形的信息。例如,您可以在图形图层中显示图形的弹出窗口。
您还可以使用屏幕坐标查找图形,并将其重新映射到地图上的用户操作事件。图形层负责在地图上以空间坐标绘制图形。
它不是设计用于绘制非地理边缘,例如北方箭头或版权文本。
Performance characteristics
不建议向图形层添加太多图形,因为它们被保存在设备内存中。如果您正在使用许多功能(数千个),则通过创建功能服务将这些功能放入功能层可能更合适。
当图形定期更改位置时,图形图层的设计能够最好地执行,并且在地图上放大和缩小时可以实现特征的最佳动画效果。
可以将图形图层的默认渲染模式更改为优化,以批量绘制添加到图层的更多数量的特征。具有相同渲染模式的图层应该组合在一起。
有关更多信息,请参阅AGSGraphicsLayerRenderingMode枚举。
Specialized layers
其他图层类可用于在地图中显示特定类型的数据。
- Group layers- 组图层由其他图层的集合组成,用于表示由多个不同图层组成的数据集。
例如,KML图层和消息组图层都是组图层的类型。所有组层都从AGSGroupLayer超类继承。
- WMS—Web Map Service layers 允许您将Open Geospatial Consortium(OGC)WMS服务添加到地图。 这些服务是一种动态地图服务,可用作底图或操作层。 AGSWMSLayer用于将WMS服务添加到地图。
- Message groups - 消息组层使用来自其中一种受支持的符号字典类型的军事符号显示图形。
- Bing maps - Bing地图服务可以添加为地图中的图层。通过使用specialist AGSBingMapLayer类,Bing地图服务可以添加为地图中的图层。这些服务是平铺地图(tiled map)服务,通常为地图提供底图图层。
- OpenStreetMap。通过使用专家AGSOpenStreetMapLayer类,可以将Open StreetMap服务添加为地图中的图层。这些服务是平铺地图服务,通常为地图提供底图图层。