SpatialFilter
基于空间关系的过滤点,行,区域和文本特征。根据给定的空间测试,将每个输入候选功能进行比较,以满足给定的空间测试。通过任何或所有测试的功能通过该功能通过了港口;所有其他特性都通过失败的港口。
典型的用途
- 划分特征,取决于一个定义的空间关系是真还是假
- 通过检查与另一个数据集的预期空间关系,对数据集执行质量控制
- 执行空间连接以基于其空间关系将属性从一个功能传输到另一个功能
它是如何工作的?
SpatialFilter比较两组特征,看看它们的空间关系是否满足选定的测试条件。被测试的特性(候选特性)被标识为通过了测试或未通过测试。
例如,如果您有道路数据集(行),并且希望提取通过公园(多边形)的所有道路(多边形),则会将道路指向候选输入端口,并将公园进入滤波器输入端口。
通过选择测试条件过滤器相交的候选人和过滤器包含候选人,任何落在公园内或交叉公园内的任何道路线都将通过传递的输出端口输出,其余部分将通过故障输出端口退出。您可以同时从Park Polygon - Park名称中提取属性 - 例如 - 并将其添加到行功能。
在此示例中,我们标识了构建足迹不包含的地址点。结果可用于查找不良的地址点,或识别缺失的建筑多边形。
两个源数据集如下所示:
地址点——要测试的数据集——连接到候选输入端口。构建足迹连接到Filter端口,并提供要测试的地址点的几何形状。
在SpatialFilter参数对话框中,我们进行以下选择:
- 过滤类型:多个过滤.我们需要针对多个构建多边形进行测试。
- 通过标准:通过一个过滤器.每个地址点只需要落在一个多边形内 - 并非所有这些。
- 测试空间谓词:过滤器包含候选人.我们想检查每个Candidate(地址点)是否在一个filter (building polygon)中。
这些是关键参数—其他参数在本例中保留为默认值。
通过测试的地址点 - 在多边形中 - 通过传递的端口发送,并具有名为_predicate的新属性,设置为“包含”。
在所有多边形之外的测试失败的地址点 - 通过故障端口发送。结果,在数据检查器中应用造型,看起来像这样:
使用笔记
- 看到空间关系定义有关空间谓词的更多信息和空间关系的插图。
选择空间变压器
许多转换器可以评估空间关系并执行空间连接——分析拓扑、合并属性,有时还可以修改几何图形。通常,选择最适合于您需要完成的任务的一个将提供最佳的性能结果。如果有不止一种方法(通常是这种情况),那么花时间对替代方法进行性能测试可能是值得的。
要正确分析空间关系,所有特征都应该在同一个坐标系中。的重新设计可能对工作区中的恢复功能有用。
变压器 |
可以合并属性 |
改变几何 |
重要的相关功能 |
创建列表 |
支持类型* |
推荐 |
---|---|---|---|---|---|---|
SpatialFilter | 是的 | 不 | 不 | 不 |
|
|
斯卡利尔 | 是的 | 不 | 是的 | 是的 |
|
|
AreaOnAreaOverlayer | 是的 | 是的 | 是的 | 是的 |
|
|
LineOnareaoverlayer. | 是的 | 是的 | 是的 | 是的 |
|
|
LineOnlyoverlayer. | 是的 | 是的 | 是的 | 是的 |
|
|
PointOnAreaOverlayer | 是的 | 不 | 是的 | 是的 |
|
|
PointOnLineOverlayer | 是的 | 是的 | 是的 | 是的 |
|
|
PointOnPointOverlayer | 是的 | 不 | 是的 | 是的 |
|
|
交叉管道 | 是的 | 是的 | 是的 | 是的 |
|
|
剪刀 | 是的 | 是的 | 不 | 不 |
|
|
NeighborFinder | 是的 | 在某些情况下 | 不 | 是的 |
|
|
拓扑基础 | 是的 | 是的 | 不 | 是的 |
|
|
*注意:曲线包括线条,弧和路径。区域包括多边形,甜甜圈和椭圆。
空间分析可能是处理密集型的,特别是当涉及大量特征时。如果您想调优您的工作空间的性能,这是一个很好的开始。
当有多种方式配置工作空间达到相同目标时,最好最好选择最专门适合您的任务的变压器。例如,当将地址点与构建多边形进行比较时,有几种方法可以接近它。
第一个示例使用SpatialFilter来测试点是否落在多边形内,从而产生正确的结果。但SpatialFilter是一个相当复杂的转换器,能够在多种条件下进行测试,并接受广泛的几何类型。它并没有针对我们这里分析的特定空间关系进行优化。
SpatialFilter:
第二个例子使用PointonAreaOverLayer,然后是测试仪。功能输出与第一种方法相同,但变压器针对此特定任务进行了优化。处理时间的差异是大幅的 - 从第一个配置中的54.3秒,在第二个配置中下降到13.7秒。
使用PointonAreaoverlayer和测试仪:
如果性能是您工作空间中的一个问题,那么在几何图形的指导下寻找替代方法。
配置
输入端口
点,行,区域和文本特征考生将比较。这些特性不是输出。
点,行,区域和文本功能将用于测试过滤器特征。
输出端口
候选人成功满足参数对话框中选择的测试条件的功能。
候选人不满足测试条件的特性。
过滤器和候选人具有无效几何图形的功能将被拒绝并通过该端口输出。如果谓词是通过属性提供的,候选人也将通过此端口输出否或无效谓词的功能。
被拒绝的功能将有一个fme_reimpe_code.属性包含以下值之一:
extra_base_feature.
Invalid_base_geometry_not_ogc_valid.
Invalid_base_geometry_type.
Invalid_candidate_geometry_not_ogc_valid.
Invalid_candidate_geometry_type.
Invalid_candide_parameter_predicate.
INVALID_GEOMETRY_TYPE
MISSING_CANDIDATE_PARAMETER_PREDICATE
拒绝功能处理:可以设置为在遇到被拒绝的特性时终止转换或继续运行。此设置作为默认设置可用FME选项作为一个工作空间的参数.
参数
集团 | 如果指定了Group By属性,则只将候选对象与这些属性中具有相同值的筛选器进行比较。candidate和Filters都必须具有匹配的属性名和值。 | ||||||||||||
并行处理 | 选择要应用的并行处理级别。默认是没有并行性的。
并行处理
笔记:平行处理如何与FME一起使用:见关于并行处理有关详细信息。 此参数决定变压器是否应该跨并行进程执行工作。控件指定的每个组都将启动一个进程集团参数。 并行处理水平
例如,在四核机器上,最小的并行性将导致两个同时的FME进程。8核机上的极端并行性将导致16个同时流程。 您可以尝试此功能,并在Windows任务管理器和Workbench日志窗口中查看信息。 |
||||||||||||
输入命令 | 不:这是默认行为。只有在存在所有输入时,处理将在此变换器中发生。 按组:此变压器将按顺序处理输入组。改变价值集团输入流上的参数将触发当前累计组上的批处理。如果组很大/复杂,则会提高整体速度,但如果输入组未真正订购,则可能导致不期望的行为。具体地,在两个输入端口变压器上,“按顺序”表示整个组必须在下一个组到达任何端口之前到达两个端口,使变压器按预期工作。这可能会在工作空间中仔细考虑,不应与两个端口的输入流混淆,这些流单独单独订购,但不同步。 |
过滤器类型 | 定义将给出单个筛选器还是多个筛选器,并阐明预期的特性顺序。
|
通过标准 | 指定候选对象是否必须与所有过滤器或至少一个过滤器有谓词匹配。 |
支持模式 | 支持汇总支持多几何体和聚合几何体。但是,唯一支持的谓词将是包含、不相交、相等、交叉、触摸和内部。将不支持Overlaps谓词和cross谓词。9-character面具代表维度扩展的9个交集矩阵也不会得到支持。 支持所有谓词- 所有谓词空间关系定义页面将被支持。但是,不会支持聚合和多几何形状。 |
测试的空间谓词 | 定义要执行的测试。选择包括:
如果支持模式是支持所有谓词,您还可以使用任意9个字符的掩码测试关系。这些掩模包括一个行的行尺寸扩展的9个交叉矩阵.请注意,为了将这些掩码与SpatialFilter一起使用,必须将它们分配给候选特性上的某个属性,并在“要执行的测试”子句中包含该属性的值(不能直接指定它们)。可以在一个属性中指定多个谓词,方法是用空格分隔它们。有关谓词的更多信息,请参见空间关系定义. |
使用边界框 | 定义是使用候选特性的真正坐标还是使用它们的边界框执行测试。 |
曲线边界规则 | 此属性指定如何确定曲线和多曲线几何的边界。默认规则是,在几何图形中出现奇数次的任何曲线端点将被视为其边界——也就是说,一个线性循环(起点等于终点的直线)将没有任何边界。另一个规则规定曲线或多曲线的边界是其所有端点的集合。 |
谓词属性 | 指定一个属性,该属性将被添加到所有输出Passed特性中,它将包含该特性通过的空间测试的名称。 |
合并属性 | 定义是否会发生属性合并。如果启用了这一点,则匹配过滤器的每个候选者都会收到该过滤器的属性。结果是称为空间连接的操作。 |
累积模式 | 合并属性时启用。选项包括:
|
解决冲突 | 合并属性时启用。选项包括:
|
前缀 | 如果合并属性和累积模式设置为启用前缀过滤器.定义要添加到从过滤器合并到候选的所有属性的前缀。 |
编辑变换器参数
使用一组菜单选项,可以通过引用工作区中的其他元素来分配变压器参数。一些变压器也可提供更高级的功能,例如高级编辑器和算术编辑器。要访问这些选项的菜单,请单击除适用的参数旁边。有关更多信息,请参阅变压器参数菜单选项.
定义值
有几种方法可以在变压器中定义使用的值。最简单的是简单地输入值或字符串,其可以包括各种类型的函数,例如属性引用,数学和字符串函数和工作区参数。有许多工具和快捷方式可以帮助构造值的值,通常可以从与值字段相邻的下拉上下文菜单中提供。
使用文本编辑器
文本编辑器提供了一种方便的方法来构建来自各种数据源的文本字符串(包括正则表达式),例如属性,参数和常量,其中结果直接在参数内使用。
使用算术编辑器
算术编辑器提供了一种方便的方法来从各种数据源(如属性、参数和特性函数)构造数学表达式,其中的结果直接在参数中使用。
条件值
根据通过或失败的一个或多个测试条件设置值。
内容
表达式和字符串可以包括许多函数,字符,参数等 - 是否直接在参数中输入或使用其中一个编辑器构造。
参考
处理行为 |
|
功能持有 |
是的 |
依赖性 | |
FME许可级别 | FME基础版及以上版本 |
别名 | |
历史 | |
类别 |
FME知识中心
FME知识中心是演示、操作指南、文章、常见问题解答等的地方。获取问题的答案,从其他用户那里学习,对新功能提出建议、投票和评论。
搜索所有关于SpatialFilter的结果在FME知识中心。