查看冲突快速浏览
此主题仅适用于 ArcEditor 和 ArcInfo。
ArcGIS 可在您进行协调时检测冲突。以下情况下会发生冲突
- 在当前正在编辑的版本和目标版本中对同一要素进行更新。
- 在一个版本中更新某个要素,同时在另一版本中删除该要素。
- 在当前正编辑的版本和目标版本中修改在拓扑结构上相关的要素或关系类。
如果存在冲突,ArcGIS 会对其进行解决,具体依照编辑版本制图表达还是目标版本制图表达将取决于首选项设置。冲突解决后,您可以逐一查看这些冲突,如有必要,可进行任何更改。例如,如果依照编辑版本解决了冲突,您可以选择依照目标版本进行替换,或者使用编辑工具通过其他方式对其进行修改。
交互式冲突解决机制
如果在协调时检测到冲突,您可以选择使用交互式“冲突”对话框对其进行查看。此对话框中包含了所有冲突类及其处于冲突状态的要素或行。此外,该对话框还可用于
- 确定处于冲突状态的字段或行。
- 查看冲突。
- 通过指定用来代替要素或属性的制图表达解决冲突。
确定处于冲突状态中的字段或行
“冲突”对话框左上角的列表框可显示所有冲突类和要素。此“冲突”列表可以使您了解已查看的冲突的总数以及所有要素类中的冲突总数。最初,这些数字是相等的。在以下示例中,冲突中共存在两个对象,而且未对其中任何一个对象进行查看。
Conflicts (2/2)
“冲突”下为包含冲突的要素类(后面的数字表示该要素类中已访问或替换的冲突的数量以及该要素类中的冲突数量)的列表。在本示例中,两个要素类各包含一个冲突。
Conflicts (2/2) sde.RJP.ponds (1/1) sde.RJP.lakes (1/1)
各要素类下会列出处于冲突状态的要素的 ObjectID。在本示例中,池塘要素类中 ObjectID 为 30 的要素出现冲突,而湖泊要素类中 ObjectID 为 11 的要素存在冲突。
Conflicts (2/2) sde.RJP.ponds (1/1) 30 sde.RJP.lakes (1/1) 11
从中可以获知未对任何对象进行访问或替换,因为已查看的冲突总数和冲突总数的比值在各要素类中分别仍为 (2/2) 和 (1/1)。因为所有 ObjectID 和要素类均显示为粗体,您也可以获知未对任何冲突进行查看或替换。
将对象标记为已访问(请参阅以下“标记为已访问或标记为未访问”一节)或进行对象替换(请参阅以下“解决冲突”一节)后,圆括号中的第一个数字会减小,而且不再以粗体显示已查看的对象 ID。如果要素类中的所有 ObjectID 均已标记为已访问或已替换,则要素类本身将在不再以粗体显示。在池塘和湖泊示例中,如果将 ObjectID30 标记为已访问,则“冲突”对话框的列表框中将显示以下内容:
Conflicts (1/2) sde.RJP.ponds (0/1) 30 sde.RJP.lakes (1/1) 11
如果存在第二个池塘要素处于冲突状态,则列表可能如下所示:
Conflicts (2/3) sde.RJP.ponds (1/2) 5 30 sde.RJP.lakes (1/1) 11
此列表表示共有三个冲突作为协调的结果,而且已经对这三个冲突中的一个进行了访问或替换。该列表同时还表明已经对 ObjectID 为 30 的冲突要素进行了访问或替换,而且此要素属于池塘要素类。
在列表中选择单个要素时,“冲突”对话框的右侧列表会显示要素的预协调版本、冲突版本和公共祖先版本中的列和属性。
- 预协调版本表示对要素和属性所做的编辑。
- 冲突版本表示由其他用户进行编辑和协调的要素及其属性。
- 公共祖先版本是数据库中的要素及其属性的制图表达;这是未经任何编辑的要素和属性。
位于字段名左侧的红色圆点用于标识冲突。例如,如果已在各版本中对要素几何进行了编辑,则会在 Shape 字段旁显示红色圆点。
如果有其他属性字段处于冲突状态,则会在这些字段的旁显示红色圆点。如果在任一版本中删除了某个要素,则会对该版本的属性值显示 <已删除>。
通过使要素的所有制图表达的属性和值处于冲突状态,您可以查看属性值的差异程度并选择要保留的数据的制图表达。
查看冲突
如果单击对话框中的“冲突显示”按钮,则会在对话框底部显示冲突要素的两个制图表达(预协调版本和冲突版本)。
通过各制图表达下方的下拉列表,您可以在冲突要素的三个不同制图表达之间进行切换:预协调、冲突和公共祖先。请注意,只有当要素的几何处于冲突状态时,这些制图表达才会看上去有所不同。
各制图表达都在其下方具有一个工具条,其中包含了可用于导航和标识相应制图表达的工具。
您可以在地图上缩放至冲突要素的特定版本,方法是在列表中右键单击冲突要素,然后单击“缩放至预协调版本”、“缩放至冲突版本”或“缩放至公共祖先版本”。
如果存在几何冲突,您还可以通过右键单击列表框中的 Shape 字段并单击“显示”来查看地图上的不同制图表达。
这将打开“冲突显示设置”对话框。单击想要在地图上绘制的制图表达。
单击“确定”后,地图上会出现如下显示:
- 冲突(目标)版本的制图表达显示为红色。
- 预协调制图表达显示为绿色。
- 公共祖先版本的制图表达显示为蓝色。
对于以上选中的冲突显示设置,以下是地图上相应显示内容的示例:
如果在“冲突显示设置”对话框中仅选中“绘制当前版本”,则以下是地图上相应显示内容的示例:
查看冲突之后,可将这些冲突标记为已访问,也可选择替换选项来解决冲突。
标记为已访问或标记为未访问
如“确定处于冲突状态中的字段或行”一节中所提到的,可将要素标记为已访问。这表示您已对冲突进行查看,但此时并不希望选择替换选项。您可以跟踪列表中已查看的要素,因为这些被标记为已访问的要素将不再显示为粗体。
如果决定之后要重新查看要素冲突,则可右键单击“冲突”列表中的 ObjectID,然后单击“标记为未访问”。这会使得要素重新显示为粗体。
解决冲突
- 属性替换
- 要素替换
- 类级别替换
- 完全替换
- 合并几何
这会发生在字段级别,并专门与 Shape 属性进行关联。当存在有关 Shape 字段的冲突时,用于合并几何的选项可用。如果两个编辑器对同一要素的几何进行编辑,但并非编辑该要素的同一区域,则这两个编辑器可利用选项(通过合并几何并接受两个编辑器的编辑)来解决冲突。
用于合并几何的选项仅在 Shape 字段快捷菜单上可用。合并几何后,最终结果为包含这两个编辑器所做的编辑的要素:如果两个编辑器所编辑的区域出现交集,则将叠加它们共同编辑的区域。尽管合并几何的选项可用,但尝试合并几何将导致失败。如果出现此情况,将显示以下错误消息:
几何网络中的冲突
编辑网络要素时,更改几何网络和逻辑网络可能会导致冲突。
例如,向干管添加服务时,将不会在几何网络中对干管进行实体分割,而是在逻辑网络中进行分割。因此,尽管您并未直接对干管的几何进行编辑,但已对其进行了逻辑编辑。如果正在协调的目标版本也对干管进行了修改,则插入的新服务将与干管发生冲突。
查看涉及几何网络要素类的冲突需要了解“冲突”对话框中的“替换为”命令如何更新出现在编辑会话中的现有网络拓扑。
在服务干管示例中,两个用户都对给水干管进行了修改(一个用户通过更改属性进行修改,而另一个用户通过连接新服务进行修改)。查看冲突仅需研究差异并查看有效冲突,无需执行进一步操作。由于干管中包含正确的直径属性,因此会将新服务正确地连接到干管上。但也存在一种情况:解决涉及交汇点要素类的冲突的同时也会更新已连接的网络边。
关联要素的注记中的冲突
使用关联要素的注记需牢记以下规则:在替换具有关联要素的注记的要素时,要素和注记都将被新要素和新注记替换。因此,您可能需要进一步编辑新注记,以避免最终获得两个注记。
例如,移动要素并重新定位其注记后可能会出现冲突。冲突版本执行了相同的编辑:移动要素及旋转注记。如果决定用冲突版本的要素替换要素,则会删除现有的关联要素的注记,插入冲突要素,并创建新注记。之后,您必须根据需要通过移动和旋转的方式对新注记进行编辑。
您还可能遇到一种冲突:另一个编辑器删除了 DEFAULT 版本的地理数据库中的要素,同时也删除了其相关的关联要素的注记。您可以在子版本的地理数据库中对刚刚删除的注记进行编辑。进行协调时,如果决定要使用编辑版本替换要素,则会替换已在 DEFAULT 版本中删除的要素及其相关的关联要素的注记,并将从编辑会话中获取注记,因此同一要素将具有两个注记。
关系中的冲突
关系中具有与关联要素的注记类似的依赖性。从源关系类中删除要素可能会生成一条从目标关系类中删除要素的消息。因此,请注意仅替换涉及参与关系类的要素类的冲突的结果。
下面是关系要素类之间可能出现的冲突的示例:
- 更新“源类主键”字段,打破了版本 A 中的关系。
- 同时,更新版本 B 中的与类关联的目标要素。
- 由于目标类依赖于源类,因此协调版本时会删除冲突。
下面是另一个示例:
- 在电力公共设施要素数据集中,删除与某个变压器关联的电线杆会导致关联的变压器也被删除。
- 同时在另一个编辑会话中,编辑器会更改刚刚因删除与其关联的电线杆而被删除的变压器的属性。
- 对编辑进行协调时,将删除更新-删除冲突。
在上一个示例中,如果第二个编辑器选择使用编辑会话制图表达替换所有冲突,则会重新创建在编辑会话期间删除的电线杆和变压器,而且会创建第二次编辑会话中的变压器,因此将存在两个变压器。您可能无法在地图中检测到此现象,因为这两个变换器具有上下位置关系;但是在属性表中,会存在两条变换器的记录。
拓扑中的冲突
由于参与拓扑的要素类中的要素可与其他要素共享几何,因此查看拓扑要素类各版本之间的冲突的过程与使用简单要素类替换冲突有所不同。此外,它与使用几何网络、关系类和关联要素的注记替换冲突的过程也有所差别。
对参与拓扑的要素类进行编辑时,可能会同时更改其他拓扑相关要素。更改的要素可仍属于之前的要素类,也可属于一个或多个其他要素类。要管理可能由编辑引入的新拓扑错误的检测过程,拓扑可用于记录已编辑为脏区的区域。在拓扑中编辑要素会产生拓扑中的脏区。
协调已编辑的父版本和子版本时可能会出现新拓扑错误,尽管各版本中的脏区已经验证无误。要检测此类拓扑错误,需要在进行协调期间将父版本中的更改引入子版本之后,使子版本中的所有脏区返回到脏状态。协调后,可对这些区域重新验证,即可检测到所有错误。
对两个不包含活动脏区的版本进行协调仍有可能产生脏区。子版本中存在的任何脏区(无论是否已验证)都将在协调版本之后成为脏区。通常,在协调版本时
- 子版本从父版本中继承的任何脏区(无论是否已在子版本中进行验证)都将在协调之后成为脏区。
- 为在子版本中创建、更新或删除的任何要素而创建的任何脏区(无论是否已验证)都将在协调之后成为脏区。