在版本化的环境中使用制图表达

要了解制图表达在版本化的环境中的工作原理,必须先对版本化的知识原理以及要素类制图表达在地理数据库中的存储方式有一个透彻的了解。

了解有关版本化的信息了解有关制图表达存储方式的信息

制图表达在版本化的环境中的工作原理是什么?

在版本化的环境中,具有制图表达的要素类的使用频率与不具有制图表达的要素类的使用频率几乎相同。下面是您需要考虑的一些关键因素:

在版本化的环境中使用制图表达的推荐工作流程

方案 1

  • 父版本(目标版本)将某个要素制图表达的制图表达 RuleID 从 R 更改为 R*。
  • 子版本(编辑版本)编辑同一个要素制图表达,但却在 Override 字段中添加了一个存储为 O* 的属性覆盖。
    • 子版本是根据父版本进行协调的。根据冲突的定义方式不同,您也将获得不同的结果。
    • 行级别:因为是在两个版本中同时编辑同一个要素,故而会检测到冲突。优先使用哪个版本解决冲突,具体将视首选项而定。这样,最终的制图表达将具有 RuleID R 和 Override O* 或 RuleID R* 和 Override O。这两种结果是一致的。
    • 列级别:尽管编辑的是同一要素制图表达,但由于编辑操作是在两个独立的字段或属性(即 RuleID 和 Override)中进行的,因此并不会检测到冲突。版本协调时,要素制图表达会具有一个等于 R* 的 RuleID 和属性覆盖 O*。同时,要素制图表达中的一个未用于表示制图表达的制图表达规则的属性会具有一个属性覆盖。最终结果将会不一致。
    • 为避免出现此种情况,请您使用 row_level 选项。

方案 2

  • 父版本(目标版本)更改某一要素制图表达的形状,或在 Override 字段中添加存储为 O* 的形状覆盖。
  • 子版本(编辑版本)编辑同一个要素制图表达,但却在 Override 字段中添加了一个存储为 O** 的属性覆盖。
  • 子版本根据父版本进行协调。无论优先选择使用哪个版本来解决冲突,所得到的结果都是一样的。
    • 行级别或列级别:同一个要素制图表达会在两个版本中进行编辑。而且,编辑内容会作用于同一属性覆盖。尽管形状覆盖和属性覆盖是两个独立的实体,但是编辑这些实体时仍会将两个覆盖结果保存到同一个 Override 字段中。这种情况下,将会检测到冲突,您必须保存其中的一项编辑内容(O* 或 O**)。
    • 解决办法:将属性编辑内容存储在显式字段而非 Override 字段中。协调冲突时,如果选择的是列级别定义,将不会发生任何冲突,因为编辑是在两个独立的字段(Override 字段和显式字段)中进行的。因此,您可以同时保存这两项编辑内容。

方案 3

  • 父版本(目标版本)为要素制图表达创建一个属性覆盖。Override 字段被更新为 O*。
  • 子版本(编辑版本)编辑同一个要素制图表达,但却将要素制图表达转换为自由式制图表达。RuleID 值变为 -1,而且一个图形对象被引入 Override 字段。最终此步骤会将 RuleID 字段和 Override 字段分别更改为 R* 和 O**。
  • 子版本根据父版本进行协调。
    • 行级别和列级别:存在一个冲突。如果选择优先使用父(目标)版本解决冲突,则结果将会不一致。属性覆盖 O* 将与等于 -1 或 R* 的 RuleID 值一起存在。
    • 解决办法:选择优先使用子版本来解决冲突可以避免产生不一致的结果。在这种情况下,保存由子版本做出的更改,并忽略由父版本进行的任何编辑。但是应该注意,由父版本进行的编辑在这种情况下则会丢失。

方案 4

如果有多个地图产品共同基于同一要素类上的多个要素类制图表达,则请使用多个项目方案来编辑这些地图产品。例如,为每个地图产品创建一个单独的版本:M1、M2、M3 等。在编辑这些版本之后,使用列级别定义的父版本(或 SDE.Default)进行协调和后处理,并优先使用编辑版本解决冲突。如果想要将属性覆盖写入到显式字段而非 Override 字段,则请为每个地图产品创建单独的显式字段。

最佳做法

相关主题


7/10/2012