【ArcGIS Runtime SDK for Android-04】Features and graphics

在ArcGIS Runtime SDKs,要素(features)和图形(graphics)表示地图上的真实对象。每个要素和图形都有一个表示其形状和位置的几何图形,以及其它进一步描述所表示对象的属性。例如,多边形要素( polygon features)可以表示地块,并包含每个地块的属性,例如:地块ID或所有者。点图形(point graphics)可以表示事件位置,包括事件的时间和类型。在地图上显示时,可以使用各种符号来呈现要素和图形。

要素和图形彼此相似,因为它们都具有几何形状和属性,这由它们都实现的geo-element接口表示。但是,要素的设计用途与图形不同。到底是选择使用要素还是图形取决于各种因素,例如:它们是否被持久化在数据存储或地图中,它们是否共享一个几何类型和一组属性,或者应用程序如何显示它们。

本篇博客描述并比较要素和图形,帮助您在各种情况下进行要素和图形抉择。

下表是要素和图形的重要特性对比:

【ArcGIS Runtime SDK for Android-04】Features and graphics

1、要素和图形如何与地图相关联

A map contains layers, among other things. Feature layers in a map are used to display features, feature layers are bound to a feature table. Features are not displayed using a graphics overlay.

A map view contains a map and graphic overlays, among other things. Graphic overlays in a map view are used to display graphics on top of the map and any layers the map contains. Graphics are not displayed using layers.

2、Where do features come from?

要素可以托管在在线服务中、本地存储在数据库中、保存在地图中或作为门户项(portal item)保存。如何访问应用程序中的要素会影响对其进行编辑和管理的方式。

(1)Feature services

要素服务提供对要素的在线访问,可以由ArcGIS Enterprise或ArcGIS online托管。要素服务包含一个或多个要素集合。如果访问要素服务的REST服务目录页面,将看到它包含的要素集合列在Layers标题下,如下图所示。不同几何类型(即点、线和多边形)的要素不可能存在于同一个集合中,因此,根据几何类型组织的要素很常见。

【ArcGIS Runtime SDK for Android-04】Features and graphics

示例中的要素服务包含几个数据集,其中三个数据集描述C2 Military Operations,使用点、线和面(多边形)。圆括号中的数字表示要素服务中的索引位置。要访问特定的要素集,请将索引位置附加到服务的URL。例如:Hostile Units,

 https://sampleserver6.arcgisonline.com/arcgis/rest/services/Military/FeatureServer/6.

(2)Feature tables

  • ArcGIS Runtime应用程序中的要素存储在有多种类型的要素表(feature tables)中。直接来自要素服务的要素存储在service feature table中,service feature table是使用服务的URL和索引位置创建的。
  • 从本地地理数据库读取的要素存储在 geodatabase feature table中,有关如何创建地理数据库的更多信息,请参考 Create an offline layer
  • 存储在地图或门户项(portal item)中的静态要素是存储在 feature collection table中,作为要素集合的一部分。

由于要素服务或本地地理数据库可以包含多个要素集(换句话说,就是表),因此可能需要在ArcGIS Runtime应用程序中创建许多要素表来表示所需的所有数据集。

(3)Types of features

不同的要素表类型返回不同的要素对象。直接从FeatureTable基类继承的要素表返回要素对象类型。继承自ArcGISFeatureTable的要素表具有附加功能,如:附件,这些返回ArcGISFeature对象。

为了提高效率,ArcGISFeature对象实现了可加载模式( loadable pattern)。当获取用于呈现和查询目的的要素时,将返回所需的最小字段集,例如标识符、几何图形、用于符号的字段,等等。当您需要所有可用字段时,只需加载该要素即可。

(4)Feature layers

没有必要在应用程序中显示使用的要素。但是,如果您希望用户在地图上查看(并与之交互)要素,请添加包含这些要素的要素表(feature table)作为要素图层( feature layer)。要素图层可以显示来自任何类型的要素表的要素。

要素图层中的要素可以使用不同的请求模式(request modes),包括要素的缓存,以便在客户机上高效地显示。您应该了解各种要素请求模式,因为要素图层的缓存行为可能会影响编辑体验。在layer和tables主题中详细描述了要素请求模式

提示:

A feature layer can also display data from a map service or a geodatabase in a mobile map package, in which case the data in the underlying feature table will be read-only.

3、Where do graphics come from?

图形由开发人员创建并添加到应用程序中。可以根据查询、标识( identifying)、地理处理(geoprocessing)、地理编码(geocoding)或路径规划(routing)等各种操作的结果创建它们。它们也可以从外部数据源创建,但是如果您希望在地图中持久保存数据,那么您必须使用要素。开发人员还可以通过单击或触摸地图来创建图形。

4、When to use features

持久性(Persistence)是要素的内置特性( built-in characteristic)。要素保存在数据存储中,例如:数据库、服务、地图或门户项(portal item)。当多个应用程序和用户都可以使用此数据存储时,所有人都可以使用一组公共数据。在用户之间共享数据是要素常用的使用方法。

将要素与驻留在单个正在运行的应用程序会话的内存中的图形进行比较。图形是由应用程序在会话期间创建的,只能在会话期间使用。

您可以将要素发布为要素服务的一部分。要素服务中的图层可以在地图中显示,以各种方式进行符号表示,并使用属性、空间或时间标准进行查询。ArcGIS Runtime SDK中提供的编辑工作流和工具还可以在您的应用程序中公开编辑功能。您甚至可以添加代码来控制编辑的类型以及由谁进行编辑。

5、When to use graphics

应用程序根据需要创建图形,而图形不需要持久化。因此,图形非常适合显示特定于会话的内容,或仅临时显示的任何内容。例如,一些任务(tasks)的结果会以图形的形式返回,您的应用程序可能会在图形覆盖图层(graphics overlay)上显示这些结果。

以下是图形的一些常见用途:

  • Display text on top of a map
  • Highlight a section of the map by overlaying a polygon graphic
  • Display results from spatial analysis, such as buffer polygons created around features
  • Display a route between two locations
  • Display geometry drawn interactively by the app user
  • Animate data items that change quickly, such as moving objects

更多关于使用图形(graphics)的信息,可以参考 Add graphics and text to graphics overlays. 更多关于使用graphics overlay的信息,可以参考 Add graphics overlays to your app.

参考链接:

https://developers.arcgis.com/android/latest/guide/features-and-graphics.htm