关于编写器功能类型:用户属性

编写器功能类型是工作台画布上定义所编写数据模式的对象。最重要的是,它们定义了两个具体的东西:

  • 正在写入目标数据集的层,和
  • 这些层将拥有的属性。

属性定义

编写器功能类型属性

每个编写器功能类型对话框都包含用户属性标签。这些参数允许您定义将与此功能类型关联的属性。可以通过编辑现有特征类型来定义属性,或者将新功能类型添加到工作区时。

属性可以通过三种方式定义:自动,手册,或动态的。

默认选项是手册.

手动用户属性定义

手动用户属性定义是当工作区作者手动输入属性名时,并手动选择属性类型:

此示例显示了为地址表定义的三个属性。

在工作台画布上,功能类型如下:

自动用户属性定义

自动属性定义当Workbench自动定义属性列表时,取决于连接的读卡器功能类型。单击自动选项时,属性定义字段为空,无法编辑它们。

同样地,在工作台画布上,功能类型也为空:

使定义自动化的是连接读卡器功能类型时发生的操作:

请注意,读卡器功能类型上定义的所有属性现在都自动复制到编写器功能类型。

因为这是自动操作的,如果删除了读卡器功能类型,另一个连接在一起,写入程序功能类型上的属性列表将立即更新以匹配。或者,如果连接了第二个读卡器功能类型,然后,属性列表更新为两种类型的联合:

这很有用,因为这意味着可以将多个数据流合并为一个功能类型,自动定义所有属性定义。

然而,自动选项不做的是处理一个场景,在该场景中,您将读卡器数据集参数更改为使用不同属性集读取数据。换言之,编写器属性将仅由连接的内容定义,不是源数据中实际存在的内容。对于这种情况,你需要动态属性.

动态用户属性定义

指定动态属性也会选择动态模式定义选项(在参数选项卡中)。

类似于自动属性定义,初始功能类型将不包含属性。当读卡器特征类型连接时,功能类型仍不包含属性。动态特征类型确实没有提前定义。相反,它动态地从运行工作区时提供给它的数据中获取其属性定义,或者用户选择的另一组模式定义。

自动和动态属性定义之间的差异

  • 自动属性定义从工作区中与其连接的任何对象获取其属性定义。如果源数据集参数发生更改,它不会有任何效果。
  • 动态属性定义不同。如果源数据集参数发生更改,动态模式(默认情况下)将从正在读取的任何源数据中获取其属性定义。

添加和管理功能类型

正如我们已经看到的,编写器模式将“我们想要什么”定义为目标数据集。所以如果你想把数据写到一个特定的层,在特定的数据集中,然后,您必须确保层在画布中被定义为一个特征类型。

在某些情况下,这是自动发生的。生成工作区时,您选择的源数据集将被扫描,工作区中的所有层都将获得匹配的功能类型对象,包括读卡器和编写器。

注:当FME将编写器功能类型添加为新工作区的一部分时,这些功能类型将获得从所选源数据集中获取的固定(手动)属性定义。然后可以手动编辑这些属性。

然而,在大多数情况下,您需要单独管理编写器功能类型,因为你想从作者那里得到的和你在读者那里得到的不一样。例如,如果要将输入的数据层划分为输出数据集中的两层,您需要添加新的编写器功能类型。

手动添加编写器功能类型对层次结构图有此影响。您的输出设计为只有一个层;现在它将有两个。

向现有编写器添加功能类型

功能类型可以使用作家>添加功能类型在菜单栏上。

注:翻译层次结构中必须至少存在一个作者;否则,此选项将变灰。

选择添加功能类型将要素类型对象放置在工作空间上,然后打开“要素类型”对话框,以便编辑要素类型的属性。

类似于编辑模式,“参数”选项卡可用于定义新要素类型的名称。

功能类型名称使用特定于格式的术语,所以标签可能是特征类表名表名,或者,无论您所写数据的格式有什么特定的术语:

添加特征类型后,模式在“用户属性”选项卡中定义。

向新的编写器添加功能类型

在添加新的编写器时,还可以控制添加到工作区的要素类型:

添加功能类型有六个选项:

  • 自动:添加属性定义参数设置为自动的新功能类型。这是默认设置。
  • 手动:添加属性定义参数设置为“手动”的新功能类型。
  • 从读卡器复制:添加属性定义参数设置为手动的新功能类型,但预先定义为现有读卡器功能类型的架构。
  • 从数据集导入:添加属性定义参数设置为手动的新功能类型,但是预定义到外部数据集的模式(就像使用导入功能类型工具一样)。
  • 动态:添加属性定义参数设置为动态的新特征类型。
  • 无:不添加任何新功能类型。

将要素类型复制到编写器

当添加一个编写器时,可以创建一个新的特性类型,该特性类型的特性模式是预先定义给现有的读卡器的特性模式的。然而,如果你已经有了作家,您仍然可以执行复制读卡器模式的相同过程。这只需选择所需的读卡器功能类型,右击它们,使用选项副本(作者).

该命令会将读卡器功能类型的副本添加到编写器中,以及要自动连接的源/目标功能类型。

翻译层次结构中必须至少存在一个编写器,或者此选项被禁用。