你在这里: 工作基础 > 数据读写 > 特征类型和属性 > 编辑地理数据库域和子类型

编辑地理数据库域和子类型

如果要写入Geodatabase,一些惟一的属性类型(字段类型)将作为表格的一部分写出来。

在生成初始工作区之后,单击输出特性类型上的User Attributes选项卡。用户属性包含可以进一步定义的唯一数据类型。提供的大多数属性类型都是普通属性类型,如char(n)、integer和date;然而,域和子类型对地理数据库是独特的。

coded_domain

coded_domain为地理数据库中的属性定义了一组值,并由代码及其等价值组成。例如,对于道路特征类,数字1、2和3可能对应于三种类型的路面:砾石、沥青和混凝土。代码存储在地理数据库中,相应的值出现在属性表中。

  1. 单击“数据类型”字段旁边的“编辑”按钮后,将出现“编辑编码域”对话框。
  2. 输入域名(例如:road_type
  3. 假设该域在数据库中不存在,取消选中旁边的框域已存在于数据集中

注意: 如果您取消复选框,并且域已经存在,那么Geodatabase编写器将验证域的定义,如果Workbench中的定义与Geodatabase中的定义不同(但不会覆盖现有域),则将记录一条消息。

  1. 从下拉列表中选择字段类型(boolean, char(n), date, double, float, integer, or smallint);在这种情况下,您可以选择整数。
  2. 输入代码和相应的描述。例如,你可以输入1代表砾石,2代表沥青,3代表混凝土,等等。
  3. 单击OK设置值。

range_domain

range_domain定义数值属性的值范围。例如,一个地块长度的允许值范围可能在70到100英尺之间。

  1. 单击“数据类型”字段旁边的“编辑”按钮后,将出现“编辑范围域”对话框。
  2. 输入域名(例如:house_age
  3. 假设该域在数据库中不存在,取消选中旁边的框域已存在于数据集中

注意:如果您取消复选框,并且域已经存在,那么Geodatabase编写器将验证域的定义,如果Workbench中的定义与Geodatabase中的定义不同(但不会覆盖现有域),则将记录一条消息。

  1. 从下拉列表中选择字段类型;在本例中,您可以选择Date。
  2. 输入代码和相应的描述。例如,您可以输入19820101到19990101。
  3. 单击OK设置值。

注意:日期属性必须是YYYYMMDD、YYYYMMDDHHMMSS或HHMMSS的形式。如果使用最后一种格式,那么日期的YYYYMMDD部分将被设置为19000101。

子类型

子类型是特性类或表中具有相同属性的对象的特性的子集。例如,植被特征类中的特征可以分为三个子类型:橡树、枫树和桦树。创建子类型可能比在地理数据库中创建许多特性类或表更有效。

在地理数据库中,该字段必须是整数类型,以便能够在其上创建子类型。

对于子类型,描述可以作为字符串提供,在这种情况下,代码由Geodatabase writer生成。对于subtype_codes,输入列表由对代码和相应的描述组成。

列表中的第一个代码将用作默认子类型代码。如果只指定了描述,则为value1创建的代码将被用作默认子类型代码。例如,如果你指定subtype_codes 1:a:3:b:4:c:5:d,那么1(映射到a)将被用作默认代码。

  1. 单击数据类型字段旁边的编辑按钮后,将出现编辑子类型(或子类型代码)对话框。
  2. 输入子类型描述。例如,如果一个字段被命名house_type,你可以输入描述牧场主,两层楼.如果您正在定义subtype_codes,请输入相应的整数代码。注意,第一个子类型总是作为默认类型使用。
  3. 单击OK设置值。

注:

  • 每个表只能有一个子类型。
  • 所有代码必须是唯一和有效的整数。
  • 所有的代码,描述对必须是唯一的。
  • 不能向现有表添加子类型。如果您这样做,它将被忽略,并且该表将使用现有的子类型(如果存在的话)。
  • 在编写特性时,子类型属性必须包含代码(Geodatabase将其存储为整数)。
  • 详细信息,请参阅Esri地理数据库章节FME读者和作者手册。