表关系

每个VPF特性类都包含一个特性表,用于定义出现在该类特性上的属性。VPF特性类还可以包括来自另一个表的相关属性,方法是指定特性类表的特定列与另一个表的主列相关联。

例如,考虑一个虚构的数据库,其中包括街道上的家庭名单,以及他们的草坪上是否有消防栓。这个数据库还允许许多家庭居住在一个地址。特性类的定义如下:

  • 特性表包含一个特殊的列,STRADDR。RAT_ID的标识符列STRADDR。老鼠表格
  • STRADDR。老鼠表定义街道地址并包含一列,主人。RAT_ID,链接到主人。老鼠表格

街道特征类的模式类似于:

类名:STREETL几何类型:vpf_line特征表:STREETL。融通

表格STREETL。融通属性:

ID int(行标识符)STRADDR。RAT_ID int(链接到STRADDR。老鼠表。)EDG_ID int (Link to edge primitive table.)STRCODE int(街道名称代码;中的值查找
INT。VDT表。)

表格STRADDR。老鼠属性:

ID int (Row identifier) ADDRESS int (Street number) HYDRANT char(3) (Does it have a HYDRANT on its lawn;“是”或“否”)。int(链接到“OCCUPANT”表。)

表格主人。老鼠属性:

ID int(行标识符)
FAM_NAME text(40)(姓氏)
NUM_RES int(居民数量)
cluster_id int(标识占用者的“集群”。)

特性类表按照如下结构对表进行关联:

表格

外国属性

相关的表

连接属性

街。融通

EDG_ID

EDG

ID

STREETL。融通

STRADDR。RAT_ID

STRADDR。老鼠

ID

STRADDR。老鼠

主人

主人。老鼠

CLUST_ID

一条有两处房产的小胡同,其中一处住着两户人家STREETL具有以下特性的特性类。注意使用了嵌套列表和增强的vdt值。的消火栓属性通常也来自值属性表。

功能类:STREETL
几何:包含一行的聚合
属性特征:
ID 12
STRADDR。RAT_ID 5
EDG_ID 19
STRCODE 5
STRCODEdesc“29日大道”
STRADDR_RAT{0}。ID 5
STRADDR_RAT{0}。地址1234
STRADDR_RAT{0}。消火栓“是的”
STRADDR_RAT{0}。主人23
STRADDR_RAT {0} .OCCUPANT{0}。ID 1
STRADDR_RAT {0} .OCCUPANT{0}。FAM_NAME“史密斯”
STRADDR_RAT {0} .OCCUPANT{0}。NUM_RES 4
STRADDR_RAT {0} .OCCUPANT{0}。CLUST_ID 23
STRADDR_RAT {0} .OCCUPANT{1}。ID 2
STRADDR_RAT {0} .OCCUPANT{1}。FAM_NAME“琼斯”
STRADDR_RAT {0} .OCCUPANT{1}。NUM_RES 2
STRADDR_RAT {0} .OCCUPANT{1}。CLUST_ID 23
STRADDR_RAT{0}。ID 6
STRADDR_RAT{0}。地址2345
STRADDR_RAT{0}。消火栓“不”
STRADDR_RAT{0}。主人14
STRADDR_RAT {1} .OCCUPANT{0}。ID 3
STRADDR_RAT {1} .OCCUPANT{0}。FAM_NAME“穆雷”
STRADDR_RAT {1} .OCCUPANT{0}。NUM_RES 2
STRADDR_RAT {1} .OCCUPANT{0}。CLUST_ID 14

注意:需要注意的是,作者并不确定VPF标准是否允许以这种方式构建数据库。然而,VPF阅读器解释了这些结构,并提供了一个合理的示例来解释相关属性表如何在FME特性中表示。如果VPF标准要求一个更扁平的结构,这个属性命名方案仍然适用。