特征表示(VPF阅读器)
除了FME工作台添加到所有特性中的通用FME特性属性之外(参见关于Feature Type属性),该格式添加了本主题中描述的特定于格式的属性。
当在数据库模式(VPF_DB)中调用一个读取器时,VPF读取器为VPF特性类特性以及VPF元数据表项生成FME特性。
VPF数据库的每一层都为元数据生成了许多类型的FME特性。
在数据库的根级别, FME功能是为:
- 数据库头表(DHT)
- 库属性表(LAT)
- 数据质量表(DQT)(如果存在)
在数据库的库级别, FME功能是为:
- 覆盖属性表(CAT)
- 库首表(LHT)
- 地理参考表(GRT)
- 数据质量(DQT)和谱系文档(line . doc)表(如果存在的话)
在数据库的覆盖级别, FME功能是为:
- 字符和整型值描述表(CHAR。VDT INT.VDT)
- 相关属性表(Symbol。老鼠,NOTES.RAT)
- 特性类属性和模式表(FCA)和(FCS)
- 数据质量表(DQT)
- 覆盖文档表(<覆盖名>.DOC)
- 特性类文档表(<特性类名称>.DOC)
除了特性类模式表(FCS)之外,所有覆盖元数据表都是可选的,FME特性仅为存在的元数据表生成。
为处理的每个元数据表中的每一行生成一个FME特性。对于元数据表中的每一列,FME特性中都有一个属性具有与该列相同的名称和类型。每个属性的值将与生成特性的行相同。由元数据表生成的特性没有附加几何信息。
该阅读器产生的另一种FME特性来自VPF特性类特性。这种类型的特征可以有零个或多个几何图形附加到它上。因此,为这些VPF特征生成的所有FME特征都包含几何图形的集合。对于大多数特性类几何类型,结果特性中的所有几何都是相同的类型——表的类型。对于复杂的特性类,单个特性可以包含任何文本、点、线和区域特性的混合。
每个几何图形的属性由属性给出组件{< n >}。< attrName >,在那里n这个几何图形的位置是否在第一个位置是0,和< attrName >是几何学特有的属性。
下表汇总了为每个几何图形定义的属性。
的名字 |
描述 |
上定义 |
vpf_type |
这种特定几何体的类型。它有以下值之一: vpf_area vpf_line vpf_point vpf_text |
所有几何图形 |
vpf_database_name |
特性所属的数据库的名称。 |
|
vpf_library_name |
特性所属的库的名称。 |
|
vpf_coverage_name |
特性所属的覆盖范围的名称。 |
|
vpf_feature_class |
特性所属的特性类的名称。 |
|
vpf_tile_name |
该功能所在的瓦片的名称。 tile_name还描述了相对的平铺路径。 |
|
vpf_containing_face |
此属性用于3级拓扑的实体节点。 它包含包含节点的区域的face_id。 |
|
vpf_first_edge |
该属性包含连接节点的first_edge的edge_id。 此属性将出现在级别1和更高的拓扑中。 |
|
{#} .attributeName组件 例如, {#} .vpf_type组件 |
列出几何部件的属性,并在特性上定义与几何相关的属性。例如, 组件{0}。vpf_typemeans the vpf_type of the first component of the feature. |
|
vpf_text_string |
要为vpf_text几何图形显示的字符串。 |
vpf_text |
vpf_text_height |
vpf_text几何图形的高度。 这是从SYMBOL_RAT{0}中自动提取的。大小属性。尽管VPF标准并未明确指定此属性,但它用于在指定时保留文本特征的点大小。它与vpf_text_scale结合使用,用于计算存储在fme_text_size属性中的地面单位的文本高度,当fme_text_sizeis被修改时,该属性将自动删除。(参见特殊属性处理标题下的信息。) |
vpf_text |
vpf_text_font |
用于显示vpf_text几何图形的字体。 这是从SYMBOL_RAT{0}中自动提取的。字体或SYMBOL_RAT{0}。丰属性。 看到特殊的属性处理. |
vpf_text |
vpf_text_color |
用于显示vpf_text几何图形的颜色。 这是从SYMBOL_RAT{0}中自动提取的。颜色或SYMBOL_RAT{0}。坳属性。 看到特殊的属性处理. |
vpf_text |
vpf_text_style |
用于显示vpf_text几何图形的样式。这是从SYMBOL_RAT{0}中自动提取的。风格或SYMBOL_RAT{0}。猪圈属性。 看到特殊的属性处理. |
vpf_text |
vpf_rotation |
将显示文本的旋转位置。 这是从文本行的左下和右下坐标计算出来的,用从正东逆时针方向的度数表示。如果文本几何图形在VPF数据中只有一个坐标,默认值为0.0。 |
vpf_text |
vpf_text_scale |
标度从包含该特性的库中的库头表(LHT)中读取。 如果没有指定比例,将使用默认比例0,1000000。Scale与vpf_text_height一起使用来计算fme_text_size。 |
vpf_text |
vpf_original_geometry 可选 |
当文本几何图形不是一个简单的单点时,VPF Reader以众所周知的文本(WKT)格式读取的原始几何图形。用来保存原始文本几何形状。如果修改了fme_rotation,该属性将被删除。 此属性仅在形状线包含多个坐标对时出现。 坐标对的顺序遵循VPF中的规范:第一个坐标对表示左下方的坐标,第二个坐标对定义字符串的右下方。第三和随后的坐标对定义了形状线中的控制点,即在第一和第二对之间的点。 |
vpf_text |
vpf_sequenced_geometry 可选 |
它类似于 此属性仅在形状线包含多个坐标对时出现。 |
vpf_text |
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
VPF将文本基本几何图形表示为线(一个或多个点,首先是左下角,最后是右下角)和可选的文本大小(排印点大小的高度,如SYMBOL中定义的那样)。老鼠表)。
FME点几何简单地从VPF线几何的第一个点提取,它们都位于弦的左下边界。
FME旋转的角度,从VPF线几何的第一个和最后一个坐标计算。如果只有一个点,它默认为零。
FME文本大小(以地面单位为单位)是从VPF文本大小(以排印点大小为单位)计算出来的。在只有一个点且没有VPF文本大小的VPF文本原语的特殊情况下,将使用默认的VPF文本大小2来完成转换。否则,在VPF文本大小不存在的情况下,FME文本大小是通过使用字符串的宽度(以地面单位表示)和字符的高度(以地面单位表示)是其大小的一半的近似。
为了避免VPF特定属性和FME通用属性之间的不一致,FME文本大小与VPF文本高度以及FME旋转与VPF原始几何形状纠缠在一起。尝试修改FME通用属性将删除VPF特定属性。然而,修改VPF特定属性不会删除FME通用属性以保持有效的FME特性,同时允许强制读者使用某些VPF特定属性值。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
当在数据库模式中调用读取器时(VPF_DB),所有FME特性类型的作用域都反映它们在数据库层次结构中的级别。例如,从库头表(Library Header Table, LHT)中的一行生成的FME特性将具有包含本地名称的特性类型LHT以及表所在的库名。FME特性产生于LHT的元数据文件诺姆库将具有的特征类型诺姆\ LHT.
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
VPF数据的结构允许具有非常强表达性的模式定义,使用传统的类型信息来捕获这一点有些困难。下面是a的变体平表结构,是特别有趣的。
- VPF可能包含二维(2D)和三维(3D)坐标数组的属性。
- VPF表中的任何整数或文本属性都可以与值描述符表相关联,从而提供更详细的属性文本描述。
- VPF中的特性类是通过将不同的表连接在一起来定义的,从而形成属性值的层次结构。
- 文本原语本身不包含任何颜色、样式、大小或字体信息,但特性通常通过在符号表中关联来定义这些属性,例如的象征。老鼠.
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
VPF覆盖通常包含两个值描述符表,INT。VDT和CHAR。VDT.这是可能的*.VDT表,任何名称,但这些都是典型的。值描述符表(VDT)的目的是为使用VDT的每个特性类-属性名称对定义整数或具有有限数量值的短文本字符串的映射,以及属性值的较长的文本描述。
例如,vdt用于将英文描述分配给特征代码。机场的特性代码属性可能为AF001意思是国际机场。该特性的特性表将包含一个代码AF001以及对值描述符表的引用。然后值描述符表提供来自的映射AF001飞往国际机场。
对值描述符表的查找由VPF读取器自动处理。一个属性命名<attrName>对应于VDT中的一个条目的结果是在FME特性上定义的两个属性:<attrName>和<attrName>desc.
在上面的例子中,特性代码将在属性中定义,例如FCOD在特性表中。由此产生的FME特性将包含两个属性:
FCOD“AF001”FCODdesc“国际机场”