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