编辑宗地结构与版本管理
本主题仅适用于 ArcGIS for Desktop Standard 和 ArcGIS for Desktop Advanced。
宗地结构支持在默认版本的下一个版本级别状态下进行编辑。宗地结构不支持在各种版本的子版本状态下进行编辑。
编辑宗地结构和版本状态
在 ArcSDE 地理数据库中编辑宗地结构之前,需要先将宗地结构注册为版本。宗地结构注册为版本后,便可以创建一个版本来编辑宗地结构。版本是地理数据库的某种视图,您可以对该视图进行编辑并立即查看所做的更改。连接到此版本的其他用户将会在您刷新之后看到这些更改。但是,只有将此版本提交到默认版本,连接到其他版本的用户才能看到这些更改。
将数据集注册为版本后,将创建两个增量表:用于插入和更新的 A(或“添加”)表以及用于删除的 D(或“删除”)表。每次更新或删除数据集中的记录时,都会向这两个表或其中一个表添加行,同时创建一个新的版本状态。因此,版本化数据集由原始表(称为基表)和增量表中的所有更改组成。
编辑宗地时,将对作业 XML 流执行每项编辑操作。保存编辑会话时,XML 流将作为单项编辑内容提交到宗地结构,同时创建一个新的版本状态。
宗地结构版本和编辑锁定
如果结构中的宗地正在编辑,则这些宗地将变为编辑锁定状态。如果某宗地处于编辑锁定状态,则在编辑锁解除之前,都无法在同一版本或另一版本中打开该宗地。但在已锁定宗地的属性表中,宗地、线、点和控制表中非系统管理的字段仍可进行编辑。如果同一字段在不同的版本中都进行了编辑,则协调版本时必须使用冲突解决方案。
如果宗地在与您要进行编辑的版本不同的版本中正被编辑,则在宗地浏览器 窗口中这些宗地将显示为带有编辑已锁定图标 。同样,您正在编辑的宗地也将处于锁定状态,而任何其他版本中的编辑操作将无法进行。正在编辑的宗地所属版本提交后,宗地编辑锁定将解除。
下方列表汇总了管理多用户环境下各已锁定宗地行为的规则:
- 您无法在另一版本中打开正在编辑的宗地。被编辑锁定的宗地所属的版本提交后,您才能在其他版本中访问该宗地。版本提交后,该版本中的所有更新和更改都将与默认版本合并,同时宗地的编辑锁定也将解除。
- 如果宗地先前在您正在使用的版本中进行过编辑,则在宗地浏览器 窗口中此宗地将显示为带有编辑已解锁图标 。
- 如果宗地先前在目前已提交的另一版本上进行过编辑,则在您正在使用的版本中该宗地将显示为带有编辑已解锁图标 。
- 如果宗地在其他版本中进行过编辑且该版本已提交到默认版本,则在与默认版本协调后您便可在当前版本中编辑这些相同的宗地。
- 如果某宗地在宗地浏览器 窗口中列为已锁定,则在宗地浏览器 窗口中单击此宗地可以查看哪个版本和用户正在编辑此宗地。用户和版本名称显示在 ArcMap 窗口右下方的状态栏中。
|
宗地可进行编辑。 |
|
宗地当前正在编辑。 |
|
宗地先前经过编辑并且现在可用。 |
|
宗地当前正在同一版本中编辑或已在其他版本中进行过编辑。 |
协调版本和宗地结构
完成某一版本的编辑后,可将对该版本进行的更改同默认版本合并。通过一个协调并提交的过程即可完成此操作。协调将检测您的版本与默认版本之间的冲突。如果您的版本创建后默认版本发生了变化,并且这些变化与您的编辑内容冲突,此时便会出现冲突现象。例如,在某宗地结构中,对重叠区域运行最小二乘平差将产生坐标冲突。宗地结构中的冲突解决方案始终优先处理子版本。
宗地结构作业表不属于版本化表,因此不受宗地结构版本中协调的影响。
建议经常根据默认版本对宗地结构进行版本协调。将子版本同默认版本进行协调时,子版本将收到后来从其他子版本中提交到默认版本中的所有更新。
宗地数据的编辑内容和更新内容通常采用长事务的形式。在宗地结构中,宗地编辑内容可以跨越较长的时期。版本协调可通过默认版本中新的当前数据更新版本。这对于持续编辑版本化的宗地结构至关重要。
下方列出了一些在将版本化的宗地结构与默认版本进行协调时可能收到的更新示例:
- 宗地点的已更新坐标(对默认版本运行最小二乘平差或从另一版本中提交)
- 默认版本中创建的新宗地或从另一版本中提交的新宗地
- 默认版本中创建的已更新控制点或新控制点,或者从另一版本中提交的已更新控制点或新控制点
冲突解决
根据默认版本对包含宗地结构的版本进行协调时,将在以下情况下检测到冲突:
- 点坐标在默认版本和子版本之间发生了变化。
- 非系统管理的字段中的属性值在默认版本和子版本之间发生了变化。
将在以下情况下发生点坐标冲突:
- 默认版本和子版本中运行过最小二乘平差。
- 在所协调的子版本中以及已提交到默认版本的另一子版本中运行最小二乘平差。
在宗地结构中,始终优先解决最新一组已校正坐标的坐标冲突。因此,协调经过校正的子版本时,以下情况真实可信:
- 默认版本中经过校正的坐标同子版本中经过校正的坐标相比:子版本优先。
- 子版本中控制点坐标的冲突将优先解决。
提交版本和宗地结构
提交包含宗地结构的版本时,所有宗地编辑锁定均将解除。如果版本中创建了作业,则作业状态将更改为“已提交”。已提交作业可从作业名册中删除。已提交作业无法重新打开,但作业属性仍然可见(如作业中使用过哪些宗地)。
要平移并缩放至已提交作业,您需要将以下空 BLOB 字段添加到作业表:
- CommittedObjs
- LocalControl
这些字段显示在作业表中后,您便能够缩放和平移至已提交作业中的宗地。
如果默认版本宗地结构作业名册中存在活动作业,则在协调和提交子版本之前,需要先提交这些作业。默认宗地结构版本中的活动作业将阻止协调和提交子版本。每个作业的状态都在作业名册 对话框中的状态字段下显示。要提交作业,请在自定义 对话框中的命令选项卡下,添加位于宗地类别下的提交作业命令。选择相应作业,然后单击提交作业命令可提交作业并释放编辑锁定。单击自定义 > 自定义模式,可打开自定义 对话框。
权限、版本和宗地结构
如果在版本化的数据库环境中创建宗地结构,需要谨慎考虑授予宗地结构的权限以及授予可能要进行宗地编辑的所有数据库版本的权限。这是因为对版本执行的操作过程(例如协调或删除版本)可能触发对宗地结构执行的操作过程。由于授予版本的权限不受宗地结构权限的影响,因此即使用户没有编辑某版本中所含宗地结构的权限,也可以拥有协调、提交或删除版本的权限。如果发生此类权限不匹配的情况,有关版本的操作可能会失败(协调和提交版本),或者宗地结构数据可能受到某种程度的破坏(版本被删除)。
必须建立任意一种包含宗地结构的多版本系统,以下陈述才始终为真:对某版本执行会影响到该版本中宗地结构的操作的所有用户必须具有对该宗地结构及所有关联要素类进行更新的权限。
涉及到版本时,需要使用术语权限 (permission) 描述用户的访问权限;而涉及到数据库中的表和数据集时,则应使用术语权限 (privilege)。
版本权限
创建版本时可使用三种权限设置之一。这些权限设置需要与各数据集的权限设置共同起作用。例如,用户对版本和数据集本身都可以进行更新,才能编辑版本中数据集的要素。
以下便是这三种权限设置:
- 私有:只有版本的所有者可以查看和编辑版本中的数据集。只有版本的所有者可以对版本执行操作(如删除和协调)。
- 受保护的:所有用户都能查看版本中的数据集,但只有版本的所有者才能进行编辑。只有版本的所有者可以对此版本执行操作。
- 公共:所有用户都能查看和编辑版本中的数据集。所有用户均可以对版本执行操作。
权限和宗地结构
各宗地结构必须在要素数据集中创建。宗地的所有者将自动拥有更新权限。要授予其他用户对宗地结构的权限,可以更改针对包含宗地结构的要素数据集的权限。这样,宗地结构的行为便与要素数据集中所含其他要素类完全相同。
对于未在要素数据集中创建的要素类,可以为特定用户直接授予针对该要素类的权限。
可针对特定数据集授予的权限共有如下几种:
- 无(默认):用户无法查看或编辑数据集。
- 选择:用户可以读取和查询数据集。
- 选择、更新、插入、删除:用户具有对数据集的完全读/写权限。
宗地结构中编辑操作的类型
宗地结构编辑操作可以采取两种形式:
- 宗地结构类本身(例如,宗地、线和控制点)可通过“宗地编辑器”编辑。
- 其他要素类可关联到宗地结构。随后系统可将最小二乘平差的结果传递到这些要素类,从而编辑它们的几何。
在第一种情况下,执行编辑操作的用户必须具有对包含所编辑宗地结构的要素数据集进行更新的权限。在第二种情况下,用户必须对宗地结构和关联的要素类都具有更新权限。
如果尚未对宗地结构进行编辑或未对与版本中所协调、提交或删除的宗地结构相关联的任何要素类进行编辑,则不必对宗地结构或其关联的要素类具有更新权限。
下图汇总了必须为对某版本(所含宗地结构及其关联要素类已在父版本或所考虑的子版本中进行过编辑)执行操作的用户授予的权限。