控制E00输出

E00编写器允许轻松生成E00文件,而且还提供了对生成的E00文件的格式和内容的高级定制。在其最简单的形式中,E00编写器采用定义线、点、文本和多边形特征的FME特征,并将它们写入E00文件的适当子文件。

这种操作模式使它非常容易创建一个工作区或映射文件,创建E00文件:

  • 决定E00文件的名称。
  • 对于每个文件,决定要进入文件的几何形状的类型,以及属性的名称和类型。
  • 创建DEF行来定义属性。
  • 创建相关线,将特性指向适当的文件。进入E00文件的特性必须包含一个名为e00_type,其中一个值e00_pointe00_arce00_text,或e00_poly.编写器使用该属性来确定如何写出特性的几何形状。一些几何图形可能需要在正在编写的特性上定义额外的属性-更多信息请参见几何组合。

这将生成所有的ARC, LAB, CNT, PAL, TX6或TX7, *。BND, *。抽搐,*。AAT, *。帕特和*。需要TAT+记录来描述传入的特征。这通常是创建E00文件所需要的全部内容。然而,E00编写器还包含允许高级用户:

  • 为多边形定义特定的标签位置。
  • 显式地将特定的特性指向特定的子文件。
  • 在单个E00文件中创建多个信息文件,每个文件都有自己的属性集。

下面描述这些机制。

特定标签位置

当E00写入器生成一个PAL记录来定义多边形时,它还生成一个质心(CNT)记录和一个标签(LAB)记录。质心和标签的位置通常被计算为多边形内的某个点。(计算的位置将始终在多边形内,但不在多边形的任何洞内。)如果给E00作者的特征是点多边形(PIP)几何而不是多边形或甜甜圈几何,则CNT和LAB记录的位置将使用一个特定的位置,而不是计算的位置。在这种情况下,PIP中包含的点将定义标签和质心的位置。

外显子文件选择

E00编写器通常查找e00_type属性来决定如何写出这些特性。如果该属性不存在,或值为e00_no_geom,编写器将查找名为E00_SUBFILE在输入特性上。这告诉写入器要在其中写入记录的子文件。这可以是一个标准的子文件(ARC, LAB, TOL,等等)或任何一个信息文件。

这为映射文件的作者提供了一个强大的工具。通过更改FME特性的一些属性,可以将该特性定向到E00文件的几乎任何部分。

有两个与显式子文件选择相关的警告:

  • 首先,映射文件的作者必须确保在将FME特性提供给E00编写器时,FME特性上有写入特性所需的所有属性。这在FME映射文件中通常是正确的,但对这个选项特别重要。对于标准文件,在表中定义的属性功能类型必须呈现在特征上。用于信息文件的特性必须为信息文件中定义的所有属性提供值。信息文件创建解释信息文件属性如何工作。
  • 第二个是映射文件不得将特性直接写入标准子文件或信息文件,该文件也被写入与标准几何写入。写入器包含一个内部状态,用于跟踪哪些几何图形已经写入到每个子文件中,如果手动将其他特性插入到相同的子文件中,则很容易混淆。

信息文件创建

E00通常将DEF行中指定的所有属性分配给所有信息文件。这通常不是问题,因为E00文件通常只定义单一类型的一些几何图形,并将属性与每个几何图形关联起来。

但是,在某些情况下,映射文件的作者希望对信息文件的格式有更多的控制。例如,可以使用中描述的显式子文件选择将表格数据的输入文件放入特定的信息文件中外显子文件选择以上。在DEF行上指定信息文件属性的通常方法是将相同E00文件中每个信息文件的属性。如果有其他信息要放在同一个E00文件中,如注释(文本特征)和线性几何(弧特征)。其他信息文件必须携带来自表格数据信息文件的属性,反之亦然。

为了克服这个问题,DEF行可以包含特定于每个信息文件的属性定义。语法形式列在作家指令节标题DEF

假设上面示例中的表格数据是一个简单的表格,其中列出了街道名称以及每条街道的最小和最大街道编号。使用正常的DEF行语法,E00文件的DEF行通常是这样的:

E00_DEF STREET \ STREET_NAME char(32) \ MIN_ADDR binint \ MAX_ADDR binint

如果E00写入器将行和文本写入上述E00文件,并将表格数据定向到街道。选项卡info文件使用显式子文件选择中描述的机制,得到的E00文件将包含行、文本和街道。选项卡记录,都带有属性STREET_NAME, MIN_ADDR,MAX_ADDR

相反,下面的DEF行将应用STREET_NAME, MIN_ADDR,MAX_ADDR属性仅属于街道。选项卡记录,不留下署名在行或文本记录:

街道。选项卡:STREET_NAME char(32) \ STREETS.TAB:MIN_ADDR binint \ STREETS.TAB:MAX_ADDR binint

这个DEF行为我们提供了一个更有用的数据描述,但它没有给行和文本特性提供任何可以用于关联它们的属性街道。选项卡属性。以下DEF线将附加一个STREET_NAME属性,并生成相同的行和文本特性街道。选项卡文件上面列出:

街道。选项卡:STREET_NAME char(32) \ STREETS.TAB:MIN_ADDR binint \ STREETS.TAB:MAX_ADDR binint \ STREET_NAME char(32)

如果您为一个特定的信息文件指定了任何属性,那么将不会添加任何“常规”属性(除了#和-ID属性)。

最后,下面的DEF行将创建相同的E00文件,除了文本特性将不留下任何属性。

街道。选项卡:STREET_NAME char(32) \ STREETS.TAB:MIN_ADDR binint \ STREETS.TAB:MAX_ADDR binint \ .AAT:STREET_NAME char(32)

E00作者使用以下启发式来决定在给定的信息文件上定义了哪些属性:

  1. .BND.TIC每个信息文件都有一组预定义的属性和相应的类型总是使用过,从未补充过。
  2. 如果信息文件是与几何相关的信息文件之一(. aat、. pat或. tat +),则具有一组预定义的属性,这些属性总是存在,但由下面3或4中的任何属性补充。
  3. 属性指定的任何属性< infoFile >: < attrName >对于这个特定的信息文件,它们被附加到信息文件定义中。
  4. 如果在3中没有信息文件特定的属性,那么任何属性都被指定为正常的< attrName >语法将被附加到信息文件定义中。