连接断开的线

2019-07-31 16:26:55 浏览数 (1)

背景

前一段参加安图举办的用户大会,其中讲了一个案例:连接断开的线。今天将这个整理下分享给大家。魔板整体截图

创建要素

使用Creator转换器创建两个线要素,要素与要素之间留点缝隙。如下图所示:

临近查找,并创建创建缝隙间的线

使用转换器查找临近要素,获取base与相邻要素坐标,并将其连接起来。

NeighborFinder转换器设置

参数解读:

input:经过我们这样的设置,所有输入的要素将会去查找除自身外的其他要素,这也是想要的效果;

查找数量:在这里,设置为1,因为只创建了两条线;

查找距离:在这里,设置为2;

创建线段转换器:

注意两个Creator的参数设置,第一个VertexCreator转换器,使用的模式是替换,会直接将几何替换为点;第一个VertexCreator转换器,使用的是添加点的模式,经过这样的设置,就在两条线不相连的地方产生了连接线(注意,在这里会产生两条线,然而,貌似并没有什么影响)。细线预览:

有小伙伴提出这块需要增加点内容来讲解下连接线是怎么产生的,特别感谢下FME中国技术交流群的朋友BAT提出的意见。

NeighborFinder转换器计算后的数据,在连接线的时候我们用到了四个参数,分别是:_closest_base_x、_closest_base_y、_closest_candidate_x、_closest_candidate_y,现对结合下图对这几个参数进行讲述

在要素A进行临近查找时,具体如下:

_closest_base_x、_closest_base_y:要素A在进行临近查找时距离要素B最近的点,这个坐标是在要素A上的,在这里,是要素A的端点;

_closest_candidate_x、_closest_candidate_y:要素A在进行临近查找时距离要素A最近的点,这个坐标是在要素B自身上的,在这里,是要素B的端点;

要素B在进行临近查找的时候,也是类似的,所以在这里会产生两条线段,除了方向不一致,在几何上没有什么不同。

将所有线连接起来:

使用LineCombiner转换器将所有的线连接起来,在这里可以看到上一步骤产生的重复线段对结果不会有什么影响,估计会对速度有影响。我们可以看一下结果,如下图所示:

总结

在实际工作中,常常会遇到连接线的时候因为微小距离的问题导致连线连不上。本文旨在提供一种解决问题的思路,不足之处,还望不吝赐教。

0 人点赞