表格关系

每个VPF要素类都包含一个要素表,用于定义出现在该类的功能上的属性。VPF要素类也可以从另一个表中包含相关属性,通过指定要素类表的特定列与另一个表的主列涉及的特定列。

例如,考虑一个神话数据库,其中包括街道的家庭列表,如果他们的草坪上有消防栓。此数据库还允许许多族位居一个地址。该功能类定义如下:

  • 功能表包含一个特殊列,straddr.rat_id.,用于加入到标识符列straddr.rat.桌子。
  • straddr.rat.表定义了街道地址并包含一列,占用.rat_id,这是一个链接占据.RAT.桌子。

街道要素类的架构是如下:

类名称:Streetl几何类型:V​​PF_LINE功能表:Streetl.lft

桌子Streetl.Lft.属性:

ID int(行标识符)straddr.rat_id int(链接到straddr.rat表。)edg_id int(链接到边缘基本表。)strcode int(街道名称的代码;指的是值
int.vdt表。)

桌子Straddr。属性:

ID int(行标识符)地址int(街道号码)消防栓炭(3)(它对其草坪上有消防栓;'是'或'否')。占用者int(链接到“占用者”表。)

桌子占据.RAT.属性:

ID int(行标识符)
FAM_NAME文本(40)(姓氏)
num_res int(居民人数)
clust_id int(识别乘员的“群集”。)

要素类表根据以下结构涉及表:

桌子

外国属性

相关表格

加入属性

Street.Lft.

edg_id.

edg.

ID

Streetl.Lft.

straddr.rat_id.

straddr.rat.

ID

straddr.rat.

占用者

占据.RAT.

clust_id.

包含两个属性的小Cul-de-sac,其中一个有两个生活在其中的家庭,可能是在的具有以下功能的功能类。注意使用嵌套列表和增强的VDT值。这消防栓属性通常来自一个值属性表。

特征类:Streetl
几何:包含一行的聚合
特征的属性:
ID 12.
straddr.rat_id 5.
edg_id 19.
Strcode 5.
Strcodedesc“第29大道”
straddr_rat {0}。地5
straddr_rat {0} .Address 1234
straddr_rat {0}。水合物“是”
straddr_rat {0} .occupant 23
straddr_rat {0} .occupant {0}。地1
straddr_rat {0} .occupant {0} .fam_name“smith”
straddr_rat {0} .occupant {0} .num_res 4
straddr_rat {0} .occupant {0} .clust_id 23
straddr_rat {0} .occupant {1}。地2
straddr_rat {0} .occupant {1} .fam_name“jones”
straddr_rat {0} .occupant {1} .num_res 2
straddr_rat {0} .occupant {1} .clust_id 23
straddr_rat {0} .ID 6
straddr_rat {0} .Address 2345
straddr_rat {0}。水合物“否”
straddr_rat {0} .occupant 14
straddr_rat {1} .occupant {0} .id 3
straddr_rat {1} .occupant {0} .fam_name“murray”
straddr_rat {1} .occupant {0} .num_res 2
straddr_rat {1} .occupant {0} .clust_id 14

笔记:值得注意的是,作者并不确定VPF标准允许以这种方式构建数据库。但是,VPF读取器会解释这样的结构,它提供了一个合理的示例,以解释如何在FME功能中表达相关属性表。如果VPF标准调用更平坦的结构,则此属性命名方案仍然适用。