ArcGIS 10——版本编辑流程
上一篇文章学习了ArcGIS有关版本机制实现的基本原理,本文结合ArcGIS的数据编辑知识来将版本编辑、协调、解决冲突、提交更改的整个过程加以说明。
同上篇文章一样,写作本文的初始意图是因为目前的项目涉及数据编辑模块和版本控制模块的功能,在功能实现过程中记录自己学习的过程。
1. 开始版本化编辑
在默认情况下,ArcMap编辑会话被设置为执行版本编辑。表示只能编辑已注册为版本的数据。
ArcMap中每个编辑会话只能编辑一个版本。因此如果地图引用了一个版本,则该版本自动打开以供编辑;如果引用了多个版本,则必须选择其中一个版本来进行编辑。
开始编辑之后,您处理的是自己的版本表示。连接到同一版本的其他用户在您保存更改之前不会看到您所做的任何修改。两人可同时进行编辑操作而就不存在锁定的机制。
假设您已经开始编辑某个版本,另外一个用户也在编辑与您编辑内容相同的区域且其将更改已经保存编辑,此时,当您进行保存编辑的操作的时候,ArcGIS会协调这两个版本表示,如果你们编辑的内容存在冲突部分,则可以通过指定优先使用编辑会话还是优先使用版本的数据库表示来首先解决冲突。
2. 冲突与协调
在您编辑版本的过程中,其他用户可能已经以一种与您的编辑内容相冲突的方式对目标版本进行了更改。协调操作将检查这些冲突。
存在两类冲突:
- 保存对某版本的编辑时该版本中的同一要素在另一个编辑会话中进行了更新(或要素在一个编辑会话中得打更新,而在另一个会话中被删除),此时所出现的冲突;
- 同一要素在目标版本和子版本中同时更新(或要素在一个版本中进行更新,而在另一个版本中被删除),此时所出现的冲突;
定义冲突的方式(冲突按何种规则来检测):
- 行-另一用户与您编辑同一行、同一要素,或是在拓扑结构上相关的要素。即使你们编辑不同的属性也会发生冲突。这是默认设置。
- 列-另一用户与您编辑同一行或同一要素的同一属性。
针对两类冲突存在两类协调:
- 隐式协调过程-保存对版本的编辑时出现的冲突
对于第一种类型的冲突,不同的编辑者在不同的编辑会话中更改了同一版本地理数据库中的同一要素,或同一要素在一个编辑会话中被删除,而在另一个编辑会话中发生更改,保存编辑内容时,ArcGIS会检测该版本地理数据库中编辑会话之间的所有冲突并根据“编辑选项-版本化”选项卡上的保存首选项设置来解决这些冲突。由于这一协调过程是可以预先设定的,因此是一个隐式过程。
- 显式协调过程-协调子版本和目标版本时所产生的冲突
执行“版本化”工具栏中的“协调”按钮操作时会显示协调子版本与其父版本之间的所有冲突,是一个显式过程。
为了能够执行协调过程,必须满足以下条件:
- 您必须是当前编辑正在协调的版本的唯一用户;
- 任何其他用户都不能编辑目标版本。一个例外情况是目标版本是DEFALUT版本,即使在其他用户正在编辑DEFALUT版本时,您也可以针对该目标版本进行协调。
- 必须能够查看目标版本,这意味着目标版本可以是公开的(public),也可以是受保护的(protected)。如果目标版本是私有的(private),则您必须是该版本的所有者或者ArcSDE管理员;
- 如果工作流程是一个用户编辑,另一个用户协调,则要确保协调的用户对已在版本中修改的所有要素类和表具有所有权限,否则该用户将无法协调。执行协调过程的用户必须对已被修改的任何关系双方具有所有权限,其中包括简单关系或复杂关系。在这种类型的工作流程中,执行协调过程的用户还必须具有足够的版本权限。协调用户必须能够修改要协调的版本(表示该版本必须是公开的),而且必须能够查看目标版本(这表示该用户必须拥有该目标版本或者目标版本必须是公开的或者受保护的)。
当进行协调时,您正在编辑的版本将使用目标版本中的更改内容进行更新。您可能注意到,要素会随应用于编辑会话的目标版本中任意要素或记录的插入、更新和删除而发生改变。
如果存在冲突,ArcGIS 会将其解决,具体依照正在编辑版本的制图表达还是目标版本制图表达将取决于首选项设置。将冲突解决后,您可以逐一查看这些冲突,如有必要,可进行任何更改。例如,如果依照编辑版本解决了冲突,您可以选择依照目标版本进行替换,或者使用编辑工具通过其他方式对其进行修改。
协调过程仅更新编辑版本,以便 ArcGIS 可以检查冲突;此过程不会将更改内容合并到目标版本中。完成协调并查看所有冲突后,通过将更改提交到目标版本来完成合并过程。
想要让 ArcGIS 在解决冲突时最初采用的规则:优先使用正在编辑的版本(称为编辑版本)或目标版本 - 如果优先使用目标版本进行解决,则在当前编辑会话中的所有冲突要素均会被其在目标版本中的制图表达所取代。如果有多个用户在编辑同一个版本并检测出冲突,则用第一个保存的要素替换编辑会话的表示。如果选择的解决规则是优先编辑版本,则当前编辑会话中的所有冲突要素均优先于目标版本中的冲突制图表达。
无法使用“撤消”操作来撤消协调操作。无论何时尝试撤消协调操作,您都会收到一条错误消息,因为“撤消”操作不受支持。要撤消协调,必须在未保存任何更改的情况下退出编辑会话。
查看冲突以及交互式冲突解决机制:
如果在进行协调时编辑版本与目标版本之间出现冲突,可以在冲突对话框中以交互方式查看和解决这些冲突。只有将编辑选项设置为仅在不存在冲突时自动保存更改,才会显示冲突对话框。
解决冲突时,您需决定要保留要素和属性的哪个表示。
可以在多个不同级别中解决冲突:
- 字段级别(属性)-选择要使用哪种制图表达来替换编辑版本的数据中的特定属性值。这些更改将应用于特定的某一字段或多个字段。
- 行级别(单个要素)-如果在行级别中解决冲突,所选的制图表达将应用于该要素中的所有冲突。
- 类级别(整个要素类)-如果在类级别中解决冲突,用于替换数据编辑版本的数据制图表达将应用于该要素类中的所有冲突要素和属性。
- 根级别(特定协调操作中所有要素类和要素中的所有冲突)-如果在根级别中解决冲突,将使用相同的制图表达解决在协调过程中检测到的所有冲突。例如,如果选择在根级别中替换为预协调版本,则列表中所有要素类和要素中的所有冲突都将以编辑内容中的方式得到解决。
如果一个编辑者对某个要素进行了更改,而另一个编辑者删除了该要素,则无法使用任何表示进行替换,并且这些菜单选项会被禁用。
3. 提交更改
协调并审阅了所有冲突后,便可提交对原始版本的更改。
其他正在读取您所提交的目标版本的用户在刷新他们的版本化工作空间之前,看不到提交的结果。
只有在完成协调操作后未对目标版本做出任何修改时,才能完成提交操作。如果在此期间修改了目标版本,则必须在提交前重新进行协调。
提交操作无法撤消,因为对其应用更改的版本不是当前正在编辑的版本。
提交后,可在编辑会话中继续执行进一步编辑。要将这些更改应用到目标版本,必须再次执行协调、解决冲突和提交过程。
如果提交操作标志着项目结束或您所负责的部分工作流结束,则可删除已编辑的版本。可以删除一个版本,前提是您是该版本的所有者,并且事先删除了该版本的所有子版本。
至此,简单了解了有关ArcGIS实现版本编辑的流程,包括编辑、协调、查看和解决冲突、提交更改。在后续开发过程中尽量模仿ArcGIS实现的方式。
作者:time2go
出处:http://www.cnblogs.com/giserxiaoliang/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。