属性域是描述字段类型合法值的规则,提供了一种增强数据完整性的方法。属性域用于约束表或要素类的任意特定属性中的允许值。如果要素类中的要素或表中的非空间对象已被分组为各个子类型,则可将不同的属性域分配给每个子类型。属性域是可接受的属性值的声明。如果一个属性域与某个属性字段相关联,则只有该属性域内的值才对此字段有效。也就是说,此字段不会接受不属于该属性域的值。使用属性域可针对特定字段限制可供选择的值,从而有助于确保数据完整性。
可以在地理数据库中的各要素类、表和子类型之间共享属性域。
例如,给水干管的要素类和存储给水支管的要素类可以将同一个属性域用于地表类型字段。
属性域属性
创建或修改属性域时,必须编辑以下属性:
名称和描述
创建新属性域时,需要指定一个用于描述该属性域所控制的参数的名称。
对属性域进行命名时,不能使用字符 '(单引号)和 `(撇号)。
如果在创建某个属性域之后打开要素类或表的“属性”对话框,当选择与给定字段相关联的属性域时将在属性域下拉菜单中显示该属性域的名称。描述是用于说明属性域用途的简短句子。
字段类型
字段类型是可以与属性域关联的属性字段的类型。
可将字段类型设置为以下类型之一:
- Short - 短整型
- Long - 长整型
- Float - 单精度浮点数
- Double - 双精度浮点数
- Text(仅限编码属性域) - 字母数字字符
- Date - 日期和时间数据
字段类型设置完毕后,在“属性”对话框中,属于该类型的字段所对应的属性域名称会显示在属性域下拉列表中。
属性域类型
创建属性域时,必须指定想要使用的属性域类型。
有两种类型的属性域:
- 范围属性域 - 范围属性域用于指定数值属性的有效值范围。创建值域范围时,需要输入一个最小有效值和一个最大有效值。可将范围属性域应用于短整型、长整型、浮点型、双精度浮点型和日期属性类型。
例如,在给水干管要素类中,可以针对输水干管、配水干管和旁路给水干管设置子类型。配水干管的压力可以介于 50 到 75 psi 之间。要使一个配水干管对象有效,为其输入的压强值必须介于 50 到 75 psi 之间。值域范围是通过使用“验证要素”命令进行验证的。了解有关使用默认值和属性域进行编辑的详细信息。
- 编码属性域 - 编码值属性域可以应用于任何类型的属性 - 文本、数值和日期等。编码值属性域用于为属性指定有效的值集。
例如,可将给水干管埋在 GroundSurfaceType 属性字段所标志的以下几种不同类型的地表下:硬路面、砂砾、沙石或无(适用于暴露在外的给水干管)。编码值属性域既包括存储在数据库中的实际值(例如,1 代表硬路面),也包括对值的实际含义的用户友好型描述。对编码值属性域的验证是通过限制用户从下拉列表中选择字段值来实现的。
分割与合并策略
在编辑数据时,经常需要将一个要素分割成两个要素,或将两个单独的要素组合(或合并)为一个要素。例如,在 landbase 数据库中,一个地块可能由于再分区而被分割成两个单独的地块。类似的分区变更可能需要将两个相邻的地块合并为一个地块。
尽管对要素几何执行的这些类型的编辑操作的结果很容易预测,但它们对属性值的影响则不易预测。分割要素时,属性值的行为受控于它的分割策略。合并两个要素时,属性值受控于它的合并策略。
每个属性域都有分割策略和合并策略。对要素进行分割或合并时,地理数据库会参照这些策略以确定最终所得要素对于某个特定属性具有哪些值。
分割策略
任何给定表、要素类或子类型的属性都可以有以下三种分割策略之一,这些策略控制着输出对象中的属性值:
- 默认值 - 两个最终所得要素的属性使用给定要素类或子类型的默认属性值。
- 复制 - 两个最终所得要素的属性使用原始对象的属性值副本。
- 几何比 - 两个最终所得要素的属性是原始要素值的比率。该比率取决于原始几何的分割比率。如果几何被分割成相等的两部分,则每个新要素的属性值将是原始对象属性值的一半。几何比策略只适用于数值字段类型的属性域。
在上面的宗地示例中,当分割一块宗地时,将自动分配 Area 属性,以作为最终所得几何的一个特性。Owner 的值会被复制到新对象(在此数据库中,分割一块宗地并不会影响它的所有权)。将根据宗地的面积或大小来计算 PropertyTax。为了计算每个新对象的 PropertyTax,分割策略会根据新要素的各自面积将原始宗地的 PropertyTax 按比例分配给各个新要素。
合并策略
在将两个要素合并为一个要素时,合并策略控制着新要素的属性值。任何给定要素类或子类型的属性都可以具有以下三种合并策略之一:
- 默认值 - 所生成要素的属性使用给定要素类或子类型的默认属性值。这是唯一适用于非数字字段和编码值属性域的合并策略。
- 总和值 - 最终所得要素的属性使用原始要素属性值的总和。
- 几何加权 - 所生成要素的属性使用原始要素属性值的加权平均值。此平均值取决于原始要素的几何。
在上面的宗地示例中,当合并两块宗地时,将自动分配 Area 属性,以作为最终所得几何的一个特性。将为 Owner 分配其默认值。由于合并要素的 PropertyTax 值是原始要素 PropertyTax 值的总和,因此其合并策略是对原始要素的 PropertyTax 值进行求和。
请注意,在编辑器中合并要素时,将不会对合并策略求值。但开发者在编写自己的合并实现方法时可以充分利用合并策略。
编码值
编码值部分仅可用于编码属性域。它包含属性域的编码值以及对该值含义的相关描述。
下图显示了将缩写文本用作编码值来表示要素类别的方法。在此实例中,土地用途类别由适合的缩写来表示:
输入编码值时,编码必须与关联的字段类型相匹配。在上述示例中,不能输入整数来表示“住宅用地”类别,因为 LandUse 属性域与 Text 数据类型相关联。