特征表示(VPF Writer)
VPF编写器特性集中的特性可以分为元数据或特性类特性。
元数据特性用于为VPF数据库的元数据表中的条目提供值。从FME元数据特性到VPF元数据表有一个简单的映射:每个元数据特性表示VPF元数据表中的一行。
特性类特性是包含填充与特性类相关的VPF表所需的所有信息的几何实体。典型的特性类由一个特性表、一组原语表、一个原语连接表和一组相关属性表组成。在编写几何特征时,VPF编写器将传入的特征分解为原语,填充其原语表、特征表和相关属性表,然后计算与这些表相关的索引。
VPF产品中的属性是区分大小写的。亚搏在线娱乐平台作者支持的所有输出产品都使用小亚搏在线娱乐平台写属性,所有FME特性属性也必须是小写的。
下表列出了VPF写入器用于写入几何信息的格式属性。特性属性的有效属性值可以在产品规范中找到。当将特性写入表时,通常会使用默认值。
属性名称 |
描述 |
上定义 |
vpf_type |
特征类特征具有以下几何类型之一: vpf_area vpf_line vpf_point vpf_text 元数据特性的几何类型是vpf_none。 |
所有功能 |
vpf_text_string |
用于类型为vpf_text的特性的字符串。 |
vpf_text |
vpf_text_height |
vpf_text特性的高度。看到请注意. |
vpf_text |
vpf_text_font |
用于显示vpf_text特性的字体。看到请注意. |
vpf_text |
vpf_text_color |
用于显示vpf_text特性的颜色。看到请注意. |
vpf_text |
vpf_text_style |
用于显示vpf_text几何图形的样式。看到请注意. |
vpf_text |
vpf_rotation |
将显示文本的旋转位置。这是从文本行的左下和右下坐标计算出来的,用从正东逆时针方向的度数表示。如果文本几何图形在VPF数据中只有一个坐标,默认值为0.0。 |
vpf_text |
vpf_text_scale |
标度从包含该特性的库中的库头表(LHT)中读取。如果vpf_text_height不存在,用于从fme_text_size计算一个新的高度。对于所有其他目的,该属性将被写入器忽略。 |
vpf_text |
vpf_original_geometry |
可选的。VPF阅读器以众所周知文本(WKT)格式读取的原始几何图形。只有当原始vpf文本原语有超过1个坐标时才会出现。如果文本特性具有与读取时相同的几何形状,那么该属性将为作者提供几何形状。 |
vpf_text |
注意:只有VMap0、VMap1、VMap2和UVMAP产品类型支持存储该符号信息symbol.rat表格DNC不支持symbol.rat表。对于每个唯一的符号标识符,文本特征必须具有相同的符号信息symbol_id在功能上提供。作者将从特征中忽略符号信息symbol_id属性。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
FME可以写notes.rat表和每个特性类相关的Note Join表(.njt)。要创建注释表,请向具有注释的特性添加list属性。例如,给a加两个音符maritima的特性类lim覆盖率,添加属性:
项目深度3.6米
注意:改进的通道可能会发生浅滩
notes_rat {}不需要在特性类型定义上。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
VPF作者将尽可能地尊重原始VPF的特定属性。
如果一个vpf_text_height存在时,它将被用来写的象征。老鼠大小属性。如果只有一个vpf_text_scale存在,那么vpf_text_height将被猜测从fme_text_size.如果没有vpf_text_height也没有vpf_text_scale,则将使用默认值2,只要文本特性具有symbol_id属性。
如果一个vpf_original_geometry属性存在时,FME文本特征的点几何仍然与原始几何的第一个坐标相同,则写入原始几何。如果vpf_original_geometry属性不存在或FME文本特征的点几何形状与原始几何形状的第一个坐标不相同,则当前点坐标将被写入第二个点,以表示当前旋转,前提是该点不为零。第二个点,表示字符串的右下角,将使用fme_text_size(以地面单位表示的高度)和字符以地面单位表示的宽度是其大小的一半的近似。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
特性的特性类型在编写VPF数据库中扮演着重要的角色。特征类特征上的特征类型告诉作者特征属于什么特征类;特性类的覆盖范围是什么;以及这些资料属于哪个图书馆。由于有可能在属于不同库但使用不同模式的相同覆盖下拥有相同的表名,因此将特性类型定义为唯一的唯一方法是使用库名、覆盖名和特性类名的组合。特性类特性类型的语法是:
<库名>\<覆盖名>\<特性类>
例如:
DNC: h001 \ cul \ transl vmap0: sasaus \ trans \ roadl
注意,' \ '分隔符可以通过为特性类分隔符读取器参数指定一个值来更改为另一个字符。
可识别库、覆盖率和特性类类型将根据作者的产品类型而有所不同。例如,如果编写器的产品类型是DNC,并且编写器发现一个具有该特性类型的特性浏览\ libref \ libref,它将知道所有即将到来的功能属于libref的特性类libref报道的浏览DNC数据库中的库。
元数据特性的特性类型说明了元表在数据库中的位置。元数据特性的特性类型可以有一个分隔符,也可以没有分隔符,这取决于底层元数据表在数据库中的位置。用于数据库根级元数据表的特性将没有分隔符和以下语法:
<元表名称>
例如,如果传入的特性的目的地是名为二氢睾酮这些特性的特性类型很简单二氢睾酮.
对于存在于数据库库级的元数据表,其语法如下:
<库名称> \ <元表名称>
例如,如果传入的特性是为名为lht在DNC数据库的浏览库中,这些特性的特性类型为浏览\ lht.
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
所有VPF产品都亚搏在线娱乐平台有从级别0到级别3的四个公认的拓扑级别。(见军用标准,矢量积格式,MIL-STD-2407细节。)文本特征不参与拓扑构建。由于拓扑是在覆盖级别上定义的,VPF作者将属于一个覆盖的所有特性积累起来,然后将它们放入拓扑管道中。拓扑管道根据覆盖范围所属的拓扑级别,将特征划分为基元,并建立所有的拓扑关系。在构建拓扑之后,原语被写到各自的原语表中,特性被写到特性表中。
请注意,作者希望提供给它的数据在拓扑上是干净的(也就是说,它在拓扑上符合VPF规范)。作者不负责做任何拓扑清理。不洁净的拓扑数据可能导致输出数据错误。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/Skins/Default/Stylesheets/Images/transparent.gif)
VPF数据可以平铺或未平铺。当数据被平铺时,每个平铺的特性首先被剪切,然后被扔到拓扑构建的管道中。这个过程对每个贴图重复,因为每个贴图的拓扑应该是独立于其他贴图的。可以使用skip tile clipping跳过tile剪辑来提高性能。建议仅在特定条件下使用。
对于跨瓦片边界的特性,当前原语ID、外部瓦片和该瓦片中的原语ID的信息将作为原语上的三元组ID存储。默认情况下,VPF写入器不计算三元组id,因为该过程涉及巨大的开销。
要在写入器中激活剪切,必须将“跳过平铺剪切”设置为没有,并且必须为每个库编写TILEREF特性类型。