斯潘8
span4
NeighborFinder根据其邻近性匹配功能。一旦匹配成功,您就可以使用transformer参数来控制结果—属性是否从候选对象转移到基对象,的if候选X/Y位置插入到线性基特征。
NeighborFinder定位到离“基本”特征最近的“候选”特征,并将候选属性复制到“基本”特征。
当基本特征和候选特征具有不同的几何类型时,可能会出现问题。
例如,当使用点特征作为基础特征和线特征作为候选特征时,所有候选属性都将复制到最近的基础特征。这包括“格式属性”,如fme_geometry。因此,在处理了基点特征之后,现在有了一个几何类型的mif_折线(例如),当它们应该是mif_点时
NeighborFinder有一个特殊的“候选”模式,当所有输入数据都在一个组中时,而不是两组(基本/候选)。
只需连接到候选端口即可激活此模式,忽略基本端口。然后将所有候选人与所有其他候选人进行比较,但不会和自己比较。
最大距离越大,它包含的功能越多,这个过程需要的时间越长。基本上我们创建了一个功能列表来考虑和比较它们,顶点到顶点,候选人对基地,求这两个特征之间的最短距离。这是一个计算量很大的步骤。
为了提高你的表现可能使用多个邻居可以获得更好的效果。
例如,你相信大多数候选人都在基本特征的10米以内,但要确定最大1000米。
通过这种方式,大多数基本特性只与一小部分候选特性进行比较。
当最候选人非常接近,但有些可能是非常远。
所附的工作区显示了NeighborFinder变压器。
此示例演示了此变压器的典型用法,以及如何应用候选人优先设置来提高绩效。
这里我们有两个源数据集;其中一个住宅(地址)的几何格式,以及AutoCAD DWG中的城市标志之一。我们希望找到离每个地址最近的地标,与地标的最大距离为1英里(5280英尺)。
上面:工作区。大约有13000个地址正在处理110个地标。
根据是否找到匹配结果输出结果。第二个工作区(例2)创建时包含缓冲器和溶解器显示5280英尺的边界,并证明结果是正确的。
过滤
上面:红色地址在一英里范围内,并且匹配。灰色地址在外部,且不匹配。蓝色的点是地标性的特征。
属性
第二个结果是,邻居的属性被自动复制到引用它的基本特征上。
上面:查询这个地址,我们发现它离最近的地标有383英尺,那是温莎村。
可视化
有趣的一点是,在上面的图像中,两个匹配的地址看起来确实超出了边界。这是因为——就速度而言*——缓冲器内插角度设置保持在22.5度,因此只能得出一个粗略的近似值。这证明了a)处理使用的是真实距离,所以结果是正确的;b)不要满足于设置对话框中的默认值,如果将缓冲角设置为1,那么结果看起来会好得多。
上面虽然这看起来很糟糕,结果是好的。
候选人第一
设置为“是”时,候选项优先设置通知转换器候选特性将首先到达。因此,当第一个基本特性到达时,候选端口关闭。现在变压器可以立即处理基础特性,不必缓存它们,以防某些候选项尚未到达。
这样做的好处是提高了性能——进程会更快,占用的内存更少。
上面:邻居查找程序设置对话框。
然而,如果设置为“是”,则要求候选人必须先到达。用户通过在导航窗格中重新排列数据集读卡器来控制候选/基本顺序。最上面的读者应该是候选人读者,因为它将首先被阅读,首先到达变压器。右键单击阅读器,找到在列表中上下移动它的选项。
上面:导航窗格。请注意地标(我们的候选)是最上面的数据集。
起初,候选人的第一选择似乎是减缓事态发展,读取数据需要11.4秒,而不是7.4:
2008-08-07 12:27:25 7.4 1.0通知阅读源功能10000
2008-08-07 12:29:10 11.4 2.1通知阅读源功能10000
但这是误导,你不应该被人接受。候选人首先=是翻译不仅仅是阅读数据,但按照流程处理。因此它几乎完成了。候选项first=no translation只读取数据并将其缓存到磁盘。它仍然必须进行处理。
2008-08-07 12:27:31 13.3 0.0通知翻译成功,0个警告(0个特征/0个坐标输出)2008-08-07 12:27:31 13.3 0.0通知FME会话持续时间:13.2秒。(CPU: 12.0 s的用户,0.5S系统)2008-08-07 12:27:31 13.3 0.0通知结束-进程ID:4368,峰值进程内存使用率:96308 KB,当前进程内存使用:58552 kB。
2008-08-07 12:29:12 12.7 0.0通知翻译成功,0个警告(0个功能/0个坐标输出)2008-08-07 12:29:12 12.7 0.0通知FME会话持续时间:12.8秒。(CPU: 11.5 s的用户,| 0.0|通知|结束-流程d: 6940,峰值进程内存使用率:56208 KB,当前进程内存使用量:48244 KB。
更像这样!候选词first=yes翻译首先完成。更重要的是,它的峰值内存使用率仅为常规翻译的50%。
只有在确定功能顺序时才使用此设置很重要。
首先,候选输入端口在第一个基本特征到达时关闭,因此,任何随后的候选人都将被忽略。
| 9.0| 0.0|警告|NeighborFinder(ProximityFactory):遇到并忽略的额外候选特性
上面:这是指示被忽略的候选功能的日志消息
其次,如果根本没有候选项(即首先到达的是基本特性),则转换器不会停止转换。它将继续,所有的基本功能将被归类为不匹配。这与剪子的行为不同,如果没有剪子,剪子将停止翻译。
2008-08-07 13:42:08_9.1_0.0_stats_neighborfinder(近似工厂):输入摘要:12292基本特征,0个候选功能
上面:你总是会得到一个总结,告诉你到底使用了多少基础和候选人,但作为一个统计数据,而不是一个警告
虽然这个例子只展示了速度上的一个小差异,源数据集相对较小。数据集越大(尤其是基本特性),差异越大。事实上,在某种程度上,它决定了翻译的成功与否,这就是为什么这个设置很有用。
*好,真正的原因是我完全忘记了缓冲设置,并将糟糕的输出归咎于查看器。像往常一样PEBKAC !
©2019安全亚搏在线软件公司|合法的