span8
span4
意想不到的输入移除器执行了一个非常有用的功能,但它是许多与fme相关的混淆的来源。
基本上,它检查以确保您的数据层是在工作区中定义的。如果没有定义它们,那么这些层上的数据(意外的输入)将被丢弃(删除)。
FME的一个重要部分是能够选择不读取某些源特性类型;这可以通过从工作空间中删除它们来完成。例如,我不想从我的数据中读取学校层,所以我删除了学校特性类型。
意外输入删除器是丢弃此类数据的函数。它根据工作台或映射文件中定义的结构(或模式)检查输入数据。如果数据没有匹配的特性类型,就会丢弃它。
日志窗格中记录了意外输入移除器的结果,在两个不同的地方……
日志报告了测试了多少功能,通过和失败了多少:
在日志FME的底部突出了一些功能确实失败的事实:
如果你不检查日志,有一个(可选的)对话框来确认意外的输入移除操作:
简单,是吗?问题是,在许多情况下,这些源特性类型并不是有意遗漏的。
最常见的原因不是它们被意外地删除了,而是它们在创建工作区时根本不存在。例如,您下面的数据已经更改,并且添加了新的特性类型。例如,在上面的截图中,学校被故意删除,但是数据集最近发生了变化,添加了功能类型“building”。如果没有“建筑物”功能类型,它将不会被读取。
另一个常见的原因是,对于基于文件夹的数据集,如Esri shapefile或MapInfo,您选择的源数据集的名称或结构与您最初为其编写工作区的数据集不同。
解释一下,有些格式的数据不能够在一个文件中存储多个特性类型。Esri shapefile是一个例子,MapInfo MIF/MID是另一个例子。在这种格式中,不可能在单个文件中区分公路和铁路,因此为每个文件创建一个单独的文件;例如道路。shp and railways.shp
这里是FME取文件的名称作为它正在处理的特性类型的名称。
这里用户有一组MapInfo mif/mid文件要处理:
当使用parcel_P29创建一个工作空间时,特性类型的名称为parcel_P29:
这使得使用相同的工作空间处理多个shapefile变得困难,因为您为单个形状文件创建的任何工作空间(道路)。shp,功能类型=道路)将与任何不同命名的shapefile(铁路)不兼容。轴马力,功能类型=铁路)。
这还意味着,如果文件的名称不同,那么持有相同类型数据的文件将不会被处理;例如,使用roads-south创建一个工作区。shp and it will not be compatible with roads-north.shp even though the features in both are of the same schema.
例如,在上面的工作空间中,如果源更改为使用pacel_P27,那么它将不再与工作空间中的源特性类型匹配,并将被意外的输入Remover丢弃。
当然,当以批处理模式工作时,这个问题最常出现——第一个数据集可以工作,因为它是用来创建工作空间的数据集,但是所有后续的数据集都无法通过UIR并被丢弃。
Q)为什么FME有意外的输入卸妆 - 为什么不直接读取源数据集中的所有数据?
一种)因为并不是每个用户都希望从数据集中读取所有数据。通过以这种方式使用特性类型,FME允许用户有选择地选择希望处理哪些特性。
Q)是否有办法绕过意外输入卸妆和读取所有的要素类型?
一种)当然;有两种方法。选择哪种格式取决于您的格式类型。
如果缺少特性类型,逻辑解决方案是将它们添加到工作空间中。使用源数据>从菜单栏导入特性类型定义。系统会提示您选择一个源数据集——当您这样做时,FME会列出该数据集中所有的特性类型,并将它们添加到工作空间中,这与最初创建工作空间时的方式非常相似。您需要确保选择了所有具有不同功能类型的数据集。
此解决方案更适合于具有分配功能类型的基于文件的数据集;例如DGN, DXF, geodatabase, Smallworld。
注意,功能类型定义可以从任何数据集导入—不一定是您想要读取的数据集(例如,您可以将DGN特性类型的定义存储在Oracle数据库模式中,或者通过从现有源导入它们来添加目标定义)
2)如果丢失的功能类型正在被丢弃,另一个合理的解决方案是告诉FME无论如何都要保留它们。打开单个源功能部件类型的属性对话框。你会看到一个“合并功能类型”选项-点击它来打开这个选项。然后你需要为“合并过滤器”输入一个值。合并过滤是一个标准表达式,它定义了允许传递哪些特性类型。将它设置为“*”(星号),所有的功能类型都可以通过。将它设置为“st*”,只有以st开头的功能类型才允许通过。
此解决方案更适合于基于文件夹的数据集,因为这些数据集没有分配功能类型的能力;例如shapefile, MID/MIF, CSV。
第二种方法的优点是,您不必担心新的数据集是否包含以前没有遇到过的特性类型,它们将被传递。第一种方法总是要求您预先定义特性类型。然而,第二种方法的缺点是,由于所有特性都通过相同的输入通道,因此您将失去第一种方法所允许的对它们的单独控制。
Q)这是怎么不同的“功能类型改为”参数?
一种)用于读取参数的特性类型允许您定义应该从源数据读取哪些特性类型(层)。然而,层的列表是在工作空间中定义的,而不是在您正在读取的数据集中定义的。
换句话说,要读取的特性类型是打开/关闭层的好方法,但是它们必须已经在工作区中定义了。主要的优点是,它节省了禁用/删除不需要的特性类型的时间。
Q)为什么在意外输入卸妆拒绝读我的Microstation的DGN数据?
一种)意外的输入移除器将过滤掉与输入特性类型属性(如名称或级别)不匹配的任何特性。
在MicroStation文件中,这可以有效地过滤掉与预期不同级别的特性。
注意——这里的主要问题是,当您为一个文件创建一个工作区,并试图在其中运行另一个文件时。如果第二个文件具有不同的级别,那么它的数据将被过滤掉!
复杂的链是另一种需要注意的情况——在V7文件中默认级别是1,在V8文件中默认级别是“default”或64。
这意味着相同的工作空间不一定适用于两个版本的数据!如果您缺少功能部件,请根据您的工作空间检查它们的级别名称和编号。
©2019安全亚搏在线软件公司法律