前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >作品分享-FME作品集

作品分享-FME作品集

作者头像
数据处理与分析
发布2022-11-18 15:07:31
1.4K0
发布2022-11-18 15:07:31
举报
文章被收录于专栏:数据处理与分析

内容简介

今天分享的内容,是收到的FME作品集。相对上一篇推送的用R实现的方式,用FME实现的更多。 下面我将按照:整体思路、关键转换器的方式对各个作品进行逐一解读。 根据作者的意愿与我之前被白嫖的经历,本篇推送只分享思路,不分享具体的实现模板。

点是空间中只有位置,没有大小的图形 线是由点形成的图形,只具有位置和长度,没有宽度 面是由线围合而成的图形

作品集

总的来说,使用三角网思路来查找缝隙的作品比较多,有四个(加油_💯琦、傻狗、鹦鹉拔牙、以及我);使用缓冲区思路实现的有一个(凡尘);调用QGIS实现的有一个(悟空)。 下面对各个作品进行详细解读。

加油_💯琦

整体思路

1、作者首先将待检查的面进行编号,赋予每个面一个唯一的ID,然后将面转成三角形; 2、然后通过空间分析的方式将三角形的边分成两部分:原面边线一致的,位于原来面内部的; 3、通过设置的值域(宽度小于60米),找出符合条件的内部边; 4、使用步骤三中的内部边,筛选出与之相邻的边(为后续的构面使用); 5、构面,并将相邻的小面融合在一起; 6、用空间裁切的方式,区分出狭长面和大面部分。

重点转换器

作者使用了三个SpatialFilter转换器,这几个转换器的参数设置有两种,一种是如下图所示的包含:

作者的第2步,使用如上图所示的参数将三角形的边分成了两部分。

上图的红色和水蓝色,是分别从转换器的两个端口输出的数据。需要知道,当线与面的边线重合的时候,那不叫包含,只能叫相交。

作者的另一种设置是相交

作者的第3步,使用空间相交的方式,过滤出了构成小面所需要的边。 这几个SpatialFilter转换器的使用,筛选出了狭长面相关的边,通过后续的构面处理,形成了狭长面,思路非常清晰,作品也很精彩,值得学习、借鉴。

运行时间

在我的笔记本上,运行时间0.5s

运行结果

努力的悟空

整体思路

从整体上来看,悟空这个思路复杂了不少,用的转换器也比较多。他将寻找分割线的计算,放到了Qgis中来计算。不过 1、计算面积、编号; 2、使用Qgis计算分割线; 3、过滤计算后的分割线,保留需要的部分; 4、把所有线放在一起打断、构面; 5、计算小面面积,并计算占比进行过滤; 6、使用面进行裁剪,分出大小面。

重点转换器

这位作者的重点转换器,是在QGIS里的这些计算,通过QGIS的计算,取出了分割线,后续通过构面、计算、裁切实现了狭长面的寻找

运行时间

在我的笔记本上,运行时间1.1s

运行结果

凡尘

首先,凡尘这个排版就很清爽,一看就是个精致的人,非常棒!

整体思路

1、将面打断为线段; 2、使用两次缓冲,提取出面主体部分; 3、使用空间计算,筛选出狭长部分的边线; 4、将边线碎线连接成长线段; 5、构面; 6、裁切并输出。

重点转换器

两个缓冲转换器的使用,非常精妙地去除了面的狭长部分。又用三个空间筛选,找出了狭长部分的边线。后续的捕捉,将开口的边线封闭起来,以便后续裁切。

运行时间

在我的笔记本上,耗时0.7秒

运行结果

傻狗

整体思路

作者也是使用三角网的方式来完成狭长面查找的,整体也比较清爽,大致思路如下: 1、分别将面拆分为三角面和线段; 2、将三角边拆分为线段,并按照线段的长度过滤出符合条件的边; 3、将边连接起来; 4、构面,并按照面积大小进行过滤; 5、融合小面,并对原始面进行裁切,输出大小面。

重点转换器

作者这里生成三角网用的是chopper,节点个数设置为4(鹦鹉拔牙也用的这种方式)

按照这样的方式打断之后,面就变成了三角面。

这跟Triangulator转换器的结果是一致的,都可以完成对大面的三角剖分。

运行时间

在我的机器上,运行时间0.5秒

运行结果

鹦鹉拔牙

酒神不愧为神,除了三角网,基本就没用啥空间分析类的转换器,跟其他作品思路完全不一致,真棒!

整体思路

1、分别按照打断面为线段和三角形; 2、计算三角形边长,并根据边长进行过滤; 3、构面; 4、计算面积,并统计面的平均数; 5、通过面积平均数,进行过滤; 6、将碎面融合输出,融合后的面,即为狭长面。

重点转换器

酒神这里统计了每个小面的面积,并计算了平均数,后面又根据平均数,区分出了狭长面,非常精彩!

运行时间
运行结果

我自己的

整体思路

1、将面剖分为三角形; 2、过滤出短边和内部边,和外边线; 3、根据长度过滤内部边; 4、将外部边、内部边连成长边; 5、计算边长度,并构面; 6、根据构面的每个边的边长,区分出大小面; 7、融合小面,并输出,输出的面,即为狭长面。

重点转换器

在这个转换器,保留了构面的每个边的边长,在后续通过计算面的最长部分边,来区分大小面。

运行时间

在我的机器上,运行时间0.5秒

运行结果

总结

通过这次作品征集,我认识了一些新朋友。也从这些作者的思路中,学到了新知识。希望上面作者分享的思路,也能给各位读者一些启发。需要注意的是,这次征集的作品,都是针对样例数据(如图所示的几个面)的解决方案。在更换数据源的时候,上述方案可能会找得到狭长面,也可能找不到。

我希望以后的作品征集,能有更多的作者参与进来,我们一起来交流学习。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内容简介
  • 作品集
    • 加油_💯琦
      • 整体思路
      • 重点转换器
      • 运行时间
      • 运行结果
    • 努力的悟空
      • 整体思路
      • 重点转换器
      • 运行时间
      • 运行结果
    • 凡尘
      • 整体思路
      • 重点转换器
      • 运行时间
      • 运行结果
    • 傻狗
      • 整体思路
      • 重点转换器
      • 运行时间
      • 运行结果
    • 鹦鹉拔牙
      • 整体思路
      • 重点转换器
      • 运行时间
      • 运行结果
    • 我自己的
      • 整体思路
      • 重点转换器
      • 运行时间
      • 运行结果
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档