通常,编辑 Web 要素图层与编辑其他矢量数据相同。 您可以对 Web 要素图层进行的编辑类型取决于要素服务属性。 存在不同的编辑模式,具体取决于要发布的数据、编辑者权限以及服务启用的功能。 版本管理功能是一种影响编辑模式的功能。 如果发布者在发布分支版本化数据时启用了此功能,将改变编辑者在 ArcGIS AllSource 中编辑 web 图层的方式。
要了解详细信息,请参阅要素服务的编编辑者权限和其他图层和功能。
无需版本管理即可编辑 web 图层
在大多数情况下,当您在 ArcGIS AllSource 中编辑 web 要素图层时,版本管理功能并未启用。 对这些图层进行编辑时,执行的大多数编辑在保存之前均本地存储在运行 ArcGIS AllSource 的计算机上。 您可以使用 ArcGIS AllSource 中的可用撤消和恢复选项来保留或放弃编辑。 您可以继续撤消和恢复各个编辑内容,直到保存或放弃您的编辑内容。
注:
在保存或放弃编辑之前,更新和删除(包括撤消和恢复操作)将存储在本地。 插入要素时,要素会立即添加到要素服务中并存储在本地。
保存或放弃编辑内容
保存时,将自上次保存以来所进行的所有更新和删除将应用至源数据,且一次应用一个。 放弃编辑内容会将其从本地计算机中移除。 放弃编辑后,删除操作也会发送到服务器以撤消会话期间执行的插入操作。
由于客户端存储了多个编辑内容,因此保存或放弃编辑操作可能会花费很长时间。 这还可以防止保存编辑内容前,更新和删除内容对服务的其他用户可见。 建议经常保存编辑或打开按重复间隔保存编辑选项。 如果选择此选项,则可以将应用程序设置为基于时间间隔或基于一定数量的操作进行保存。 执行此操作会自动将编辑内容定期保存到数据源,并加快保存操作完成速度。 与其他数据源一样,编辑保存后,无法进行撤消。
在编辑会话中,取决于服务器端编辑行为的功能可能会延迟或不可用。 下面是这种行为的示例:
- 在编辑会话期间创建的关系中从源导航至目标
- 从客户端评估中排除的属性规则不显示计算的值
如果您的工作流需要立即访问这些行为或查看其他人执行的编辑,则建议您经常保存编辑或打开按循环间隔保存编辑内容选项。 要防止任何延迟操作,可以在每次操作后进行保存。 可能还需要刷新地图才能观察这些客户端行为。
注:
如果 ArcGIS AllSource 会话意外关闭时插入的要素存在未保存编辑,则需要在稍后会话中手动检查这些插入的要素。
使用版本管理编辑 web 要素图层
如果发布者在发布 web 要素图层时启用了版本管理功能,您的编辑工作流将与您编辑不具有此功能的要素图层时不同。 版本管理功能仅适用于分支版本化数据。
编辑启用版本管理的 Web 要素图层时,可编辑默认版本或授权版本(如果存在)。 有关如何访问地图中的指定版本的说明,请参阅连接到分支版本。
编辑默认版本与编辑指定版本相比,存在一些重要差异。 在启用版本管理的情况下编辑图层时,系统立即将编辑保存到基础数据源。 编辑授权版本时,可撤消和重做各个编辑,以及保存或放弃编辑组。 而编辑默认版本时,这些撤消和重做或保存和放弃功能不可用。
要在指定版本中提供这些编辑功能,必须将正在编辑的版本与其他编辑者隔离。 为了完成此操作,ArcGIS AllSource 使用锁定机制来限制访问版本以进行查看或编辑。 锁定模型允许多个同步查看者或单个编辑者。
- 编辑者在授权版本内开始编辑后,便会获得排他锁,这样在编辑会话期间其他用户便无法连接到该版本。
- 当编辑者开始编辑指定版本时,他们必须是连接到该版本的唯一用户。
在创建指定版本时将版本访问权限设置为私有,有助于避免此类阻止情况。
其他编辑行为
与上述版本管理功能的行为类似,可以根据服务和图层属性看到其他编辑行为。 利用这些行为的目的是减少由于文件大小限制或处理时间而导致的编辑失败。
使用异步应用编辑上传
两个属性确定如何将编辑内容传送到服务器:supportsApplyEditsbyUploadID 和 supportsAsyncApplyEdits。 如果服务将 supportsApplyEditsbyUploadID 和 supportsAsyncApplyEdits 属性设置为 true,则在使用 applyEdits 操作执行编辑时 ArcGIS AllSource 可能会利用上传和异步处理。 当确定何时为 applyEdits 使用上传和异步处理时,将使用下面描述的算法。
对于 upload 的使用,将使用请求大小。 请求大小由负载大小以及请求的 URL 编码大小的估计确定。 如果请求大小超过 6 MB,则使用 upload。 上传过程旨在通过将编辑负载打包到以唯一项目 ID 上传的文件中来减少超时。 然后,通过 applyEdits 调用引用上传的项目 ID 以应用服务编辑。
有关上传文件的详细信息,请参阅上传。
对于异步 applyEdits 的使用,需要进行计算以确定执行给定编辑所需的每个 applyEdits 服务请求的成本。 此计算考虑了正在编辑的记录数和编辑的负载大小。 然后将这些值用于以下公式:
1 + (记录计数 / 1000) + (负载大小 (MB) / 6 MB)
然后将所得值向上舍入为最接近的整数值。 如果该舍入值等于或超过 3,则 applyEdits 调用是异步进行的。 如果舍入值不等于或超过 3,则 applyEdits 调用是异步进行的。
有关异步 applyEdits 的详细信息,请参阅应用编辑。