要在离线时仍可使用地图,您可以在地图所使用的要素服务中启用同步功能。同步功能包括允许客户端使用数据本地副本的操作。如果发布者选择启用此功能,客户端便可编辑数据的本地副本并在连接可用时与要素服务进行同步。
注:
ArcGIS 客户端和开发人员 SDK 会逐步在要素服务中增加同步功能支持,该功能已引入 ArcGIS 10.2.1 for Server。支持离线使用地图的首批客户端为 Collector for ArcGIS 和 ArcGIS Runtime SDK 的 10.2.2 版本。无法在 ArcGIS 10.2.1 for Server 之前发布的要素服务中启用同步功能。
其他客户端可通过 ArcGIS REST API 访问同步功能。
数据准备
要使用同步功能,要素服务中的所有数据必须都来自企业级地理数据库。此外,您还必须准备数据,以便数据可在离线时使用,并根据需要在您建立连接时通过要素服务进行同步。
在启用了同步功能的要素服务中使用的数据可以是启用存档功能的非版本化数据,如果您的组织数据或工作流需要,也可以是版本化数据。
请注意,仅当地图中的所有数据配置完全相同时,才能启用同步功能;不可以混合版本化数据和非版本化数据。
启用存档功能的非版本化数据
可在启用了同步功能的要素服务中使用启用存档功能的非版本化数据。如果数据为非版本化数据,客户端将始终使用数据的当前形式。离线运行的客户端再次连接到要素服务后,便不需要使用后台进程获取最新更改。
按下述方式准备非版本化数据来与同步功能结合使用:
有关此场景演练的详细信息,请参阅教程:设置要素服务数据以供离线使用。
可以从 10.2 或更高版本的企业级地理数据库发布参考非版本化数据的要素服务、对数据进行离线编辑并通过要素服务使用企业级地理数据库进行同步更改。
版本化数据
如果您的组织要求以下任意一项,则使用版本化数据:
- 数据参与到需要对其进行版本化以供编辑的地理数据库功能。例如,如果要素类参与到几何网络中,则必须对要素数据集进行版本化。
- 您的组织具有需要对数据进行版本化的工作流,例如具有数据的质量保证版本。
如果需要使用版本化,请按下述方式准备数据:
- 将全局 ID 添加到数据集。
- 将数据集注册为版本化数据集。
- 关系类和附件必须使用全局 ID 主键。有关详细信息,请参阅本主题的附件和关系类部分。
可以从 10.1 或更高版本的企业级地理数据库发布参考版本化数据的要素服务、对数据进行离线编辑并通过要素服务使用企业级地理数据库进行同步更改。
有关详细信息,请参阅离线地图与版本化数据。
全局 ID
添加至离线数据集的全局 ID 不能基于自定义字段;它们必须明确使用由 ArcGIS 创建的全局 ID 字段。要为数据添加全局 ID,请使用添加全局 ID 地理处理工具,或位于目录树中要素类、要素数据集和表快捷菜单上的添加全局 ID 命令。
附件和关系类
如果要离线使用的数据包含附件或加入到某关系类,则表之间或表与附件之间的关系必须以全局 ID 列或用户管理的字段作为主键。如果以 ObjectID 列作为主键,则会在下载离线用数据时返回错误。可以使用迁移关系类地理处理工具将基于 ObjectID 的关系类和附件转换为以全局 ID 字段作为主键。
使用 ArcGIS Server 的托管数据库
如果在向 ArcGIS Server 的托管数据库发布时启用同步功能,则不需要进行数据准备。发布过程会将数据自动设置为支持同步功能。如果不向 ArcGIS Server 托管数据库发布,或在向托管数据库发布之后才启用同步功能,则必须按之前部分所述准备地理数据库数据。
编辑者追踪
可以使用编辑者追踪离线时编辑的数据。将数据下载到客户端以供离线使用时,编辑者追踪字段的现有值会随数据其余部分一起复制到客户端。离线使用数据时,创建或编辑要素的日期和时间会分别记录到创建日期和编辑日期这两个字段中。数据与服务进行同步时会保留这些值。
注:
如果日期字段以某个时区而不是 UTC 来存储值,请在发布服务的时候指定该时区。如果未指定该时区,则假定为 UTC。ArcGIS 会将指定的时区应用于所有追踪日期字段的编辑器。
离线数据包括离线使用地图的用户的名称。它与编辑者追踪如下一同使用:
- 对于离线状态下创建的要素,创建者名称值将设置为使用离线地图的用户。
- 对于离线状态下编辑的现有要素,编辑者名称值将设置为使用离线地图的用户。这些要素的创建者名称值不会发生更改。
使用离线地图的人员或 ArcGIS Server 管理员均可连接至服务和同步数据。
托管要素服务
如果您正在发布 ArcGIS Online(托管的要素图层)托管的要素服务,则会在启用同步功能后自动准备数据(始终为非版本化数据)以使用同步功能。这是因为发布者无法访问 ArcGIS Online 托管服务器,因而无法手动准备数据以使用同步功能。
将托管要素服务发布到 Portal for ArcGIS 后,数据将复制到门户托管服务器的托管数据库。同时,始终未版本化该数据。如果门户将 ArcGIS Data Store 用于托管服务器的托管数据库,则在启用同步功能时会自动准备用于同步。如果未使用用于托管数据库的 ArcGIS Data Store,则您可能需要手动更改数据以进行同步。有关详细信息,请参阅 Portal for ArcGIS 帮助中的为离线制图启用托管要素服务。
要素服务准备
创作要素服务时,发布者会选择一些选项,这些选项用于定义可通过服务执行的编辑。以下部分将介绍离线使用地图时应用这些选项的方法。
允许的操作(功能)
要素服务功能可定义使用要素服务时允许执行的操作。对于参与离线地图使用的要素服务,支持的配置有两种:
- 只读数据 - 如果客户端仅查询从要素服务下载的数据以离线使用,则在要素服务上设置“查询”和“同步”功能。通过此配置,无法在离线时编辑数据,也无法将数据同步回服务。
- 可编辑数据 - 如果客户端要在离线时编辑数据并在建立连接时将所做更改与要素服务进行同步,则在要素服务上设置以下功能:
- 查询
- 同步
- “创建”、“删除”和“更新”的任意组合
创建要素服务后,发布者和管理员可以选择禁用同步功能。例如,发布者或管理员可以在执行数据维护任务(如重新构建索引)期间禁用服务上的同步功能,以阻止客户端与服务同步。
短事务
如果使用非版本化数据,编辑启用同步功能的要素服务时,避免编辑事务长时间处于打开状态。例如,如果您计划在 ArcMap 中编辑非版本化数据,而该数据同时由要素服务用于同步功能,请确保定期保存编辑并在编辑会话完成时停止编辑。
几何更新和真曲线
可以将要素服务配置为允许对包含真曲线的数据进行几何更新和编辑。将编辑从客户端同步到服务时会强制执行这些设置。如果客户端执行的任何编辑违反要素服务的几何更新和真曲线设置,则不会将这些编辑与服务进行同步。
基于所有权的访问控制
可以使用基于所有权的访问控制来控制要素访问。如果客户端执行的任何编辑违反基于所有权的访问控制规则,则不会将这些编辑与服务进行同步。这种情况下,同步编辑所用的登录用户将被视为编辑者。
使用离线地图的人员或 ArcGIS Server 管理员均可连接至服务和同步数据。管理员对离线状态下所做的编辑进行同步时,基于所有权的访问控制将取决于使用离线地图的指定用户,而不是管理员。
不可见和只读字段
创作要素服务时,可以选择将某些字段设置为只读字段或对要素服务不可见。对要素服务不可见的字段不会被下载到客户端以供离线使用。只读字段在已下载的数据中仍为只读状态。
注:
启用同步功能后,必须显示以下内容;否则,地图将无法离线使用。
- 子类型
- 如果存在关系类,则必须显示主键和外键字段
- 如果已启用编辑者追踪,则必须显示编辑者追踪字段
地图图层
无法对发布至 ArcGIS for Server 或 Portal for ArcGIS 的包含两个基于相同要素类的图层的要素服务进行离线设置、编辑和同步。
例如,如果将道路要素类添加到地图以显示所有道路,添加相同道路要素类并针对其设置定义查询以显示正在施工的道路,然后从地图发布要素服务,则无法对要素服务进行离线编辑,也无法进行在线同步更改。
同步选项
如果可编辑要素服务包含版本化数据,则在离线使用地图时会针对各个客户端创建一个版本。当客户端对要素服务同步更改时,编辑内容将应用于此版本。地理数据库管理员必须执行协调和提交过程,以将编辑内容与其他人共享。
只读要素服务(仅启用查询和同步功能)包含版本化数据时,不会创建任何版本。客户端与发布版本同步后,对发布要素服务所做的更改会自动应用于客户端。
默认情况下,每次使用包含可编辑要素服务的离线地图时,都会创建一个版本。但是,ArcGIS Server 管理员或要素服务所有者可配置要素服务,因此将针对每个登录帐户创建一个版本。
例如,如果有五个不同的外业工作人员使用离线地图,将生成五个版本。每个版本都特定于单个的登录帐户,版本名称基于登录帐户名称和服务名称(例如 Joe_ValveFS)。如果 Joe 多次使用离线地图(例如在多个设备上),则 Joe 在每台设备进行同步时均采用相同版本。因此,一台设备具有对其他设备的编辑内容的访问权限。但是,新离线地图将仅更新至 Joe 最后一次协调的版本。使用地图离线的人员仍拥有离线地图的期间内,将保留该版本。
注:
为同步创建的版本名称不能超过 30 字节。
按照以下步骤在 ArcGIS for Server 服务上设置此同步选项:
- 以服务所有者或 ArcGIS Server 管理员的身份登录到 ArcGIS Server Manager。
- 确保选择 ArcGIS Server Manager 顶部的服务。
- 浏览至您的要素服务,然后单击服务名称以打开该服务的信息。
- 单击功能。
- 选择要素访问。
- 在属性下单击高级选项。
随即打开要素服务高级选项对话框。
- 在同步下进行选择,为每一个已下载的地图或用户创建一个版本。
- 单击确定关闭要素服务高级选项对话框。
- 单击保存并重新启动将设置更改应用于您的要素服务。
重新启动时,该服务将不可用。
通过数据本地副本下载或与服务同步进行的输出
将数据下载到本地客户端时,会在 ArcGIS Server 输出目录中创建一个包含相应数据的文件,然后您的客户端将下载该文件。默认情况下,任何超过 10 分钟未被任何进程访问的文件均会从输出目录中移除。如果您预计 10 分钟后客户端才开始下载该文件,则可以创建另一个清理时间更长的输出目录,并为您的要素服务使用此输出目录。此外,您还可以延长默认输出目录的清理时间,但是这将影响使用此默认输出目录的所有服务。
注:
使用 createReplica 操作创建数据的本地副本时,要选择图层、表格以及要复制数据的范围。默认情况下,本地副本中包含与表格中的范围和行相交的要素,其中表格与这些要素相关。对于表格,可以选择应用查询过滤器或包含所有行,而不使用默认设置。复制大量数据并且有许多关系类时,设置表格的过滤器或所有行可以提高性能。要设置过滤器或包含所有行,请参阅 ArcGIS REST API 帮助中 createReplica 操作的 layerQueries 参数。
同步和异步模式
用于下载数据本地副本或将更改同步到服务的同步操作既可在同步模式下运行也可在异步模式下运行。使用同步模式时,由服务完成处理;因此,会应用服务设置,包括使用的最小和最大实例数、超时间隔和回收间隔等。使用异步模式时,由随 ArcGIS Server 提供的预先配置的 SyncTools 地理处理服务完成处理;因此,会应用 SyncTools 地理处理服务的设置。
同步过程的系统信息
下载数据以供离线地图使用或将更改同步回服务时,与这些过程相关的信息会存储在要素服务作为源数据使用的企业级地理数据库的系统表中。要素服务的复本资源列出了要素服务的元数据。如果服务受保护,则只会列出与登录用户或匿名用户相关的元数据。地理数据服务也包含复本资源,其中列出了引用地理数据库的所有要素服务的元数据。管理员可使用地理数据服务执行多种任务,如列出每个服务的元数据或移除属于已移除要素服务的元数据。