在 Standard 或 Advanced 许可等级下可用。
当针对父版本协调授权版本时,将发现冲突。 如果在协调过程中检测到冲突,则最初会优先使用编辑版本来解决冲突,并在“冲突”视图中查看冲突。
在以下情况下发生冲突:
- 在当前编辑版本和目标版本中对同一要素进行更新。
- 在一个版本中更新某个要素,而在另一版本中删除该要素。
- 在当前编辑版本和目标版本中修改拓扑结构上相关的要素或关系类。
“冲突”视图包含所有冲突类及其处于冲突状态的要素或行,并允许您执行以下操作:
- 确定处于冲突状态的字段或行。
- 查看冲突。
- 将冲突标记为已查看或未查看。
- 通过指定用来代替要素或属性的表示以解决冲突
完成协调并查看冲突后,通过将更改提交到目标版本来完成合并过程。
打开冲突视图
请按照以下步骤来打开“冲突”视图:
- 在内容窗格中,单击按数据源列出按钮 。
- 确保您已连接到授权版本。 要更改版本,请右键单击企业级地理数据库数据源 ,然后选择更改版本 。
- 在版本化选项卡上,单击协调按钮 并完成协调过程。 如果在协调过程中发现冲突,则将显示提示,询问您是否要查看冲突。 单击是将打开“冲突”视图。
“冲突”视图可以停靠在应用程序中的任意位置,也可以定位为浮动窗口。 由此您能够同时与地图视图进行交互以提供背景并进一步浏览数据。
使用冲突视图
“冲突”视图包含所有冲突类及其处于冲突状态的要素或行。 冲突按数据源、类、冲突类别和 ObjectID 进行组织。 将在“冲突”视图中列出工程中所有地图的工作空间。 冲突类表示整个地理数据库中存在冲突的类。
“冲突”视图包含三个用于处理冲突的主要部分。 “冲突”列表包含所有冲突类及处于冲突状态的要素。 信息格网将显示从“冲突”列表中选择的处于冲突状态的要素的所有表示的属性和值。 “冲突显示”查看器用于查看和比较地图中几何编辑内容的不同表示。
请参考以下图像和表格,以查看“冲突”视图的元素:
元素 | 描述 |
---|---|
1 | 冲突列表 - 冲突列表部分包含所有冲突类及处于冲突状态的要素。 |
2 | 信息格网 - 信息格网部分将显示处于冲突状态的要素的所有表示的属性和值。 |
3 | 冲突显示查看器 - 冲突显示按钮用于打开“冲突”视图底部的冲突显示查看器部分。 由此,当冲突显示在地图上时,可以查看冲突,以及导航并标识显示中的要素。 |
4 | 过滤已查看冲突 - 选中冲突列表顶部的此复选框将过滤列表,以仅显示尚未查看的冲突。 |
5 | 红色指示器 - 行左侧的红色指示器用于标识冲突。 例如,如果已在各版本中对要素几何进行了编辑,则会在 Shape 字段旁显示红色指示器。 |
6 | 显示全部 - 允许查看所有字段。 |
7 | 显示冲突 - 允许仅查看处于冲突状态的字段。 |
8 | 显示服务图层的制作者名单 - 单击此按钮将打开一个对话框,其中可列出底图的提供者和制作者。 |
9 | 冲突显示导航工具 - 可以使用以下工具来导航并控制显示的版本,以及在冲突显示窗口内进行导航:
|
冲突列表
“冲突”视图左上角的冲突列表中将显示所有冲突类和要素。
单击对象下拉箭头 以查看每个要素的冲突。 这些冲突将分为以下类别:
- 更新-删除 - 要素已在当前版本中更新并在目标版本中删除
- 删除-更新 - 要素已在当前版本中删除并在目标版本中更新
- 更新-更新 - 要素已在当前版本和目标版本中更新
在冲突列表中选择单个要素的 ObjectID 后,“冲突”视图右侧的信息格网中将显示要素的当前版本、预协调版本、目标版本和公共祖先版本中的字段和属性。
提示:
尚未查看的冲突将以粗体显示。 已查看的冲突不再以粗体显示。
信息格网
在信息格网中,可以查看所选要素的属性值的不同表示。 通过使要素表示的所有属性和值处于冲突状态,您可以查看不同版本之间属性值的差异程度并确定要保留的数据的表示。 所有字段都将显示在信息格网中,并且处于冲突状态的属性行左侧将显示红色指示器。
以下各列将显示要素不同表示的属性值:
- 当前 - 表示指定版本中要素和属性的当前状态。 这包括您所进行的任何编辑。
- 预协调 - 表示协调前,要素在版本中的显示方式。
- 目标 - 表示目标版本中的要素及其属性。
- 公共祖先 - 表示最初创建版本时或上一次协调操作时的要素和属性。
如果在任一版本中删除了某个要素,则会对该版本的属性值显示 <Deleted>。 如果已将要素插入授权版本且这些要素被提升为冲突,则会在目标和公共祖先列中显示 Did not exist。
提示:
所有字段都显示在“冲突”视图内的信息格网中;但是,应用字段级别冲突过滤器的字段不会标识为存在冲突,也不会显示红色指示器。
冲突显示
冲突显示按钮用于打开“冲突”视图底部的冲突显示查看器部分。 当冲突显示在地图上时,借助冲突显示查看器,可以查看冲突,以及导航并标识显示中的要素。 显示的冲突将基于在冲突列表中选择的单个要素的 ObjectID。
冲突显示导航工具位于冲突显示查看器下方。 这些工具包含两个下拉菜单,用于更改要比较的版本,其中版本选项包括当前版本、预协调版本、目标版本或公共祖先版本。
冲突显示中的内容取决于活动地图中是否存在冲突类:
- 如果活动地图中存在冲突类,冲突显示将显示所有地图图层、使用地图符号系统并包括底图。
- 如果活动地图中不存在冲突类,冲突显示将仅显示冲突的图层、使用默认符号系统且不包括底图。
将冲突标记为已查看或未查看
一旦确定处于冲突状态中的字段或行,您可以将要素标记为已查看。 您可以跟踪列表中已检查的要素,因为这些被标记为已查看的要素将不再显示为粗体。
要在以后重新查看要素冲突,可以右键单击冲突列表中的 ObjectID,然后单击标记为未查看。 这会使得要素重新显示为粗体。
如果您单击视图顶部的过滤已查看冲突复选框,您可以过滤列表,以便仅显示尚未查看的冲突。
解决冲突(R)
在解决冲突时,需要确定要保留的要素和属性的表示。 无论您选择优先使用哪个版本(目标版本还是已编辑版本)进行协调,您都可以指定要保留哪个表示:当前表示(协调之前在您的版本中的显示方式)、目标表示(另一编辑器进行更改后的显示方式)或公共祖先表示(要素或属性在目标版本中的显示方式)。
在“冲突”视图中,右键单击版本、数据集、要素或属性,然后选择以下替换选项之一:
- 使用预协调版本替换
- 使用目标版本替换
- 使用公共祖先版本替换
以下是可以使用替换选项解决冲突的不同级别:
- 属性替换:
这会发生在字段级别。 如果属性中存在冲突,可以将当前版本中的属性值替换为当前、预协调、目标或公共祖先表示中的属性值。 要执行此操作,右键单击冲突中的属性,然后在菜单中单击您想要的选项。
- 要素替换:
这会发生在行级别。 可以将整个要素替换为当前、预协调、目标或公共祖先版本中的要素的表示。 这意味着将替换冲突中的所有字段。
- 类级别替换:
要解决冲突,可以选择将整个要素类的当前表示替换为当前、预协调、目标或公共祖先版本表示。 由此即可立即替换所有冲突的要素和属性,以便快速更新和替换冲突要素。 如果在冲突列表中存在多个要素,则会将所有的要素替换为您所选择的版本。
要选择类级别替换选项,右键单击冲突列表中的要素类名称,然后单击任意想要使用的版本。
- 完全替换:
这会发生在根级别。 可以使用此替换选项将列表中的所有冲突要素和要素类替换为所指定的表示。 如果在冲突中存在多个要素类和多个对象,则所有的这些要素类和对象都会被替换为您所选择的版本。
右键单击冲突列表顶部的版本和连接信息,然后单击要用于替换所有冲突的版本。
字段级别冲突过滤
在使用传统版本化的一些情况下,一旦在协调期间检测到冲突,您可能想要将编辑内容应用至要保留的一个或一组字段。 以下示例为,进行协调时可能想要过滤出在字段上检测到的冲突:
- 将对不同版本的字段执行批量更新。
- 根据在版本中执行的编辑操作在字段中写入信息。
为避免在父版本和子版本中更新相同属性时发现冲突,可以使用添加字段冲突过滤器工具,定义要通过冲突过滤的一组字段。 通过字段冲突过滤器,可在通过冲突检测过滤要素类时在要素类中标记一个或一组字段。 如果仅编辑应用冲突过滤器的字段,协调操作期间不会返回冲突。 仅适用于按属性定义冲突。
注:
所有字段都显示在“冲突”视图中;但是,应用冲突过滤器的字段不会标识为存在冲突,也不会显示红色指示器。
对更改内容进行协调后,放置在带有冲突过滤器的字段中的值取决于是选择优先使用目标版本还是编辑版本进行协调。 如果选择优先使用目标版本执行协调,则带有冲突过滤器的字段将具有与目标版本相同的值。 如果选择优先使用编辑版本执行协调,则带有冲突过滤器的字段将具有与编辑版本相同的值。
移除字段冲突过滤器工具可从这些字段中移除这些冲突过滤器。
您可以使用 ListFieldConflictFilters Python函数,来标识要素类或表定义冲突过滤器的时间。
注:
为要素类或表定义了字段冲突过滤器后,10.2.1 版之前的 ArcGIS 客户端将被禁止打开要素类或表。 字段冲突过滤器可在字段中定义,如果之前版本的 ArcGIS 需要访问数据,则可以在协调版本后将其移除。
使用属性规则解决冲突
属性规则可改善地理数据库数据集的编辑体验并提高数据完整性。 针对实时计算或约束规则协调传统版本化要素类将会评估这些属性规则。 如果违反了约束规则,则会报告约束规则错误,并且协调失败。 按行协调冲突,以避免约束规则错误。
解决与关系类之间的冲突
使用关系类有助于增强相关对象之间的引用完整性。 如果版本化数据源参与关系类,则协调过程将评估此数据的引用完整性。 如果违反了引用完整性,则参与要素将报告为冲突,并可以在“冲突”视图中进行查看。
从源关系类中删除要素可能会触发一条消息,以从目标关系类中删除要素。 因此,请注意仅替换涉及参与关系类的要素类的冲突的结果。
下面是关系要素类之间可能出现的冲突的示例:
- 在父版本中,添加目标要素并将其关联到原始类中的某个要素。
- 在子版本中,删除用于关联新目标要素的同一个源要素。
- 协调编辑后,将在源类上检测出“删除-更新”冲突。
下面是另一个示例:
- 在电力公共设施要素数据集中,删除与某个变压器关联的电线杆会导致关联的变压器也被删除。
- 同时在另一个编辑会话中,编辑器会更改刚刚因删除与其关联的电线杆而被删除的变压器的属性。
- 协调编辑后,将在源类和目标类上检测出“更新-删除”冲突。
在上一个示例中,如果第二个编辑器选择使用编辑会话表示替换所有冲突,则会重新创建在编辑会话期间删除的电线杆和变压器。