地形生成器
计算输入点、线和/或面积要素的拓扑,并输出具有描述拓扑关系的属性的重要节点、边和面。
典型用途
- 计算向量特征的拓扑关系
- 发现十字路口
它是如何工作的?
TopologyBuilder根据输入点、线和/或面积要素计算拓扑。
拓扑上重要的节点和线使用所有的输入特征和输出附加的属性来描述拓扑关系。在构建拓扑之前,TopologyBuilder将与输入相交产生Advanced参数设置为端点节点和交点. 它获取任何数据,并在计算输入数据中存在的任何交点后构建生成的拓扑。
它输出重要的节点(点)和边(线)以及描述它们拓扑关系的属性。面(区域)输出与形成它们的边的信息。
此转换器通常用于确定拓扑关系,以便在以后的转换器中帮助决策。
*红线表示流动方向。
在这个例子中,我们从一组完整的街道中心线开始,这些中心线在十字路口没有被分割成单独的特征。
这些要素将路由到TopologyBuilder中。
默认参数设置将产生正确和有用的结果。值得注意的是产生是左端点节点和交点,这样就会在线相交的地方产生交叉点。
在交点处,分割线并创建节点。节点接收有关连接边(线)特征的属性,包括标识符和角度。
边(线段)还接收有关其与相邻要素关系的属性。
在这个例子中,我们在一组邻域多边形上计算拓扑。
多边形将被路由到TopologyBuilder中。
将添加边和具有拓扑意义的节点,并列出创建的包含拓扑关系信息的属性,如此选定面(多边形)所示。
使用笔记
- TopologyBuilder不会更正数据-它只会查找存在的关系和交点。
- 虽然Z值(高程)将保留在要素上,但在计算交点时不考虑这些值。
选择空间变压器
许多转换器可以评估空间关系并执行空间连接—分析拓扑、合并属性,有时还可以修改几何体。通常,选择最适合您需要完成的任务的任务将提供最佳性能结果。如果有不止一种方法可以做到这一点(这种情况经常发生),那么花在性能测试替代方法上的时间可能是值得的。
要正确分析空间关系,所有要素应位于同一坐标系中。这个Reprojector可能有助于在工作区内重新投影功能。
变压器 |
可以合并属性 |
改变几何图形 |
统计相关功能 |
创建列表 |
支持类型* |
推荐给 |
---|---|---|---|---|---|---|
空间滤波器 | 对 | 没有 | 没有 | 没有 |
|
|
空间相关器 | 对 | 没有 | 对 | 对 |
|
|
AreaOnAreaOverlayer | 对 | 对 | 对 | 对 |
|
|
压线机 | 对 | 对 | 对 | 对 |
|
|
LineOnLineOverlayer | 对 | 对 | 对 | 对 |
|
|
PointOnAreaOverlayer | 对 | 没有 | 对 | 对 |
|
|
PointOnLineOverlayer | 对 | 对 | 对 | 对 |
|
|
PointOnPointOverlayer | 对 | 没有 | 对 | 对 |
|
|
Intersector | 对 | 对 | 对 | 对 |
|
|
限幅器 | 对 | 对 | 没有 | 没有 |
|
|
邻居 | 对 | 在某些情况下 | 没有 | 对 |
|
|
地形生成器 | 对 | 对 | 没有 | 对 |
|
|
*注意:曲线包括线、弧和路径。地区包括多边形、甜甜圈和椭圆。
空间分析可能是处理密集型的,特别是当涉及大量特征时。如果您想调优您的工作空间的性能,这是一个很好的开始。
当有多种方法来配置工作区以达到相同的目标时,通常最好选择最适合您的任务的转换器。例如,将地址点与建筑多边形进行比较时,有几种方法可以实现。
第一个示例使用SpatialFilter测试点是否落在多边形内,生成正确的结果。但SpatialFilter是一个相当复杂的转换器,能够测试多种条件,并接受广泛的几何类型。它并不适合我们在这里分析的特定空间关系。
SpatialFilter:
第二个例子使用了PointOnAreaOverlayer,然后是Tester。特性输出与第一个方法中相同,但是转换器针对这个特定的任务进行了优化。处理时间上的差异是很大的——从第一个配置中的54.3秒降到第二个配置中的13.7秒。
使用PointOnAreaOverlayer和Tester:
如果工作区中存在性能问题,请在几何图形的指导下寻找其他方法。
配置
输入端口
输出端口
每个拓扑基元的输出都带有描述其拓扑关系的属性。与大多数转换器不同,您无法命名这些属性。
拓扑重要节点(点几何体)通过此端口输出。
属性 | 描述 |
---|---|
_node_number |
每个节点的唯一标识符。 |
_node_angle {} |
列表属性描述与节点相连的每条边的拓扑关系。这个列表中的边是逆时针排列的。 |
_节点_角度{}.fme_弧_id |
连接到此节点的边的ID。ID的大小对应于连接边的_边_ID。如果ID为正,则边的起点连接到节点。如果ID为负值,则边的端点将连接到节点。 |
_node_angle {} .fme_arc_angle |
节点处边的切线的角度。 |
通过这个端口输出具有拓扑意义的边(曲线几何)。
属性 | 描述 |
---|---|
_边缘标识 |
每个边的唯一标识符。 |
_右脸 |
此边右侧的面的_face_id。 |
_left_face |
面的_face_id在这条边的左边。 |
_right_edge |
沿着这条边移动并在_to_node处右转时找到的边的_edge_id。如果ID为正数,则右边缘将远离_to_node。如果ID为负数,则右边缘将朝向_to_node。 |
_左边缘 | 沿着这条边向后移动并在_from_node处右转时找到的边的_edge_id。如果ID为正,则左边边缘将远离_from_node。如果ID是负的,则左边缘将朝向_from_node。 |
_从_节点 | 此边开始处的节点的_node_编号。 |
_to_node | 此边末端节点的_node_编号。 |
_faces | 此边边界的面ID的逗号分隔列表。ID的大小对应于带边框面的_face_ID。如果ID为正,则面边界包含此边。如果ID为负值,则面边界包含此边的反向。 |
通过这个端口输出具有拓扑意义的面(区域几何形状)。
属性 | 描述 |
---|---|
_face_id |
每个脸的唯一标识符。 |
_faces |
此面与之共享边的每个面的_face_id的逗号分隔列表。 |
_周界 |
二维面轮廓的长度。 |
_区域 |
平面上的面积。 |
_边缘 | 组成此面的边ID的逗号分隔列表。0条目分隔不同边界的边。ID的大小对应于包含边的_edge_ID。如果ID为正,则面边界包含此边。如果ID为负值,则面边界包含此边的反向。边ID的顺序与用于创建面边界的边的顺序相同。 注:这个在输出多边形上提供边界弧参数更改_边属性的行为。有关更多信息,请参阅下面描述此参数的部分。 |
通过减法,输出区域表示面未覆盖的所有内容。
属性 | 描述 |
---|---|
_face_id |
宇宙的唯一标识符总是0。 |
_周界 |
二维宇宙轮廓的长度。 |
_区域 |
二维宇宙的面积。 |
_边缘 | 组成宇宙的边的id的逗号分隔列表。0条目将不同边界的边分开。ID的大小对应于所包含边的_edge_id。如果ID是正的,宇宙就包含这条边。如果ID是负的,宇宙就包含这条边的反面。边缘id的顺序与用来构成宇宙边界的边缘相同。 注:这个在输出多边形上提供边界弧参数更改_边属性的行为。有关更多信息,请参阅下面描述此参数的部分。 |
参数
集团 | 默认行为是将整个功能集用作组。此选项允许您选择定义要形成哪些组的属性。 |
组的模式 | 结束时的进程(阻塞):这是默认行为。只有当所有输入都存在时,才会在此转换器中进行处理。 组更改时的处理(高级):此变压器将按顺序处理输入组。更改输入流上Group By参数的值将触发对当前累积组的处理。这可能会提高总体速度(特别是对于多个大小相同的组),但如果输入组没有真正排序,则可能会导致不期望的行为。
考虑使用集团
有两个典型的使用原因组更改时的处理(高级).第一个是要分组处理的传入数据(并且已经按顺序排列了)。在这种情况下,结构规定了按用法分组——而不是考虑性能。 第二个可能的原因是潜在的性能提升。 当数据已经排序(或使用SQL命令声明),因为FME需要的工作较少。如果数据需要排序,可以在工作区中对其进行排序(尽管增加的处理开销可能会抵消任何收益)。 根据数据流的数量,排序变得更加困难。多个数据流几乎不可能按正确的顺序进行排序,因为所有特征都与集团值需要在属于下一组的任何要素(任何要素类型或数据集)之前到达。在本例中,使用集团与结束时的进程(阻塞)可能是等效的更简单的方法。 注:多个特征类型和来自多个数据集的特征通常不会自然地以正确的顺序出现。 与许多场景一样,使用数据在工作区中测试不同的方法是确定性能增益的唯一确定方法。 |
每条边的最大坐标 | 该数字表示输出任何边的最大长度。如果任何一条线包含的坐标数超过这个数量,它将被分成几段,分别输出,每段都有自己的边ID,并正确地进行节点。值为0表示每条边的坐标数不受限制。 |
从重叠输入中统一属性 | 如果对,变压器进入一个模式,其中根本没有共线边或重叠节点的输出,无论它们来自源线性特征或源区域特征的边界或输入点,或计算为交点。 在该模式下,所有与至少一个直接输入重叠的输出边或节点将包含一个list属性(_重叠输入数据)包含与之重叠的每个输入的相关信息。此关键字将列表属性的字段名设置为包含所有属性(以开头的几何体属性除外)fme_)来自与最终输出边或节点重叠的所有输入线或点。 这个选项的一个副作用是,在计算中只会考虑构成面边界一部分的边_左边缘和_right_edge(所有仅来自行输入的边都将有其自己的ID作为其左边缘ID提供,此ID的否定作为其右边缘ID提供。) |
在输出面上提供边界弧 | 如果所有:
如果每个边界的第一个:
如果第一个外部和不相交的内部边界:
|
总处理 | 解聚:所有的输入聚合将被分解,并且每个分离的部分将被独立处理。使用这种设置,变压器输出的特性可能比作为输入提供的特性更多。 拒绝:所有输入聚合将被拒绝。 |
从输入节点生成列表 | 提供在面和边输出端口上创建与输入节点信息相关的列表的选项。 |
从输入边生成列表 | 提供在与输入曲线中的信息相关的Node和Face输出端口上创建列表的选项。 |
从输入面生成列表 | 提供在节点和边输出端口上创建与输入面信息相关的列表的选项。 |
保留内部边缘 | 如果对,面内的坐标“循环”是允许的,并将被保留。“循环”是在同一面边界上出现两次的边(在每个方向上出现一次);边缘的ID将出现在该面的边缘列表中两次,一个是正的,另一个是负的。 |
产生 | 端点节点和共线线段:然后,拓扑节点将放置在端点节点处,以及其端点节点出现在两个输入几何图形中的共线线段的端点处。 结束节点和交叉口(默认):如果有必要,在从所有共享节点和结束节点构建拓扑之前,新的点将被添加到发生交叉的几何图形中。 仅限结束节点:拓扑将仅从现有端节点生成。 |
宽容 | 该参数仅用于以下场景产生被设置为端点节点和交点. 几何图形在被视为相等之前在二维中的最小距离,以地面单位表示。如果公差为没有一个,几何图形必须完全相同才能被认为是相等的。如果容忍是自动,公差将根据输入几何图形的位置自动计算。此外,还可以使用自定义公差。 |
编辑变压器参数
使用一组菜单选项,可以通过引用工作空间中的其他元素来分配转换器参数。更高级的函数,如高级编辑器和算术编辑器,也可以在一些转换器中使用。要访问这些选项的菜单,请单击除适用参数外。有关更多信息,请参见变压器参数菜单选项.
定义值
有几种方法可以定义在转换器中使用的值。最简单的方法是简单地键入值或字符串,其中可以包括各种类型的函数,如属性引用、数学和字符串函数以及工作空间参数。有许多工具和快捷方式可以帮助构造值,通常可以从值字段旁边的下拉上下文菜单中获得。
使用文本编辑器
文本编辑器提供了从各种数据源(如属性、参数和常量)构造文本字符串(包括正则表达式)的便捷方法,其中结果直接用于参数内部。
使用算术编辑器
算术编辑器提供了一种方便的方法来从各种数据源(如属性、参数和功能函数)构造数学表达式,其中结果直接在参数中使用。
条件值
根据通过或失败的一个或多个测试条件设置值。
内容
表达式和字符串可以包含许多函数、字符、参数等等——无论是直接在参数中输入,还是使用其中一个编辑器构造。
参考
加工行为 |
|
特征保持 |
对 |
依赖关系 | |
FME许可级别 | FME基础版及以上 |
别名 | 地形记录器 |
历史 | |
类别 |
FME社亚搏国际在线官网区
FME社区是演示亚搏国际在线官网、操作指南、文章、faq和更多内容的地方。获得问题的答案,向其他用户学习,并对新功能提出建议、投票和评论。
寻找关于TopologyBuilder的所有结果关于FME社区。亚搏国际在线官网
例子可能包含在开放政府许可证-温哥华下许可的信息