前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【FME技能】沿三维线生成均匀点

【FME技能】沿三维线生成均匀点

作者头像
数据处理与分析
发布2021-09-08 15:59:58
8770
发布2021-09-08 15:59:58
举报
文章被收录于专栏:数据处理与分析

前言

关于如何把长线拆分成短线,我已经写过好几篇文章了(可以看这次推送发出的下面几篇)。这些写过的文章里,既有沿线生成点的FME方式,也有生成线段的ArcGIS方式。其中FME方式可以沿线生成均匀的节点,通过调整参数,可以实现生成线的功能,也可以实现生成非均匀节点。而ArcGIS方式,可以直接生成线、均匀的、不均匀的都写了,通过调整,也可以实现生成点的功能。

有朋友有个需求:将一段线、按照均匀的距离生成点。但在实际操作中,遇到了一些问题:线段的实际长度,和线段的测量值(measure)是不一样的。经过了解,发现线段是三维的线,有Z值。以往的数次推送中,生成点或者拆分线,针对的都是二维对象,这次增加了一个维度,直接用之前的方法,会有些问题。不过,简单调整下就可以了,至于怎么调,往下看就行!

本文知识点:转换器调参数、拆分三维线!

拆分

如同上面讲过的,怎么调整参数,来满足各种业务需求呢?其实很简单,核心转换器只要调整一个参数就可以了。下面我来介绍一下各个步骤:

计算线长度

按照长度拆分,首先要计算线长度(如果已有长度,此步骤可忽略)。 需要注意的是,在拆分三维线的时候,需要线的三维长度,FME长度计算转换器,默认计算的是二维投影面长度,需要按照如下图中进行参数调整:

传入步长

这里我发布了一个步长参数,可以传入一个数字,来拆分线。

拆分线

拆分线有多种方式,多种模式,在进行拆分的时候可以选择合适自己的那种。针对我们这次的拆分来说,不论选择那种方式,下面截图中的这个参数是都是必须要进行设置的。

那么接下来,真正的拆分还是有很多的方案可以选择的。之前就介绍过循环的方式,本篇推送,我分别使用循环与克隆来进行线的拆分。

循环

这篇文章中使用了FME自带的循环来进行线的拆分。这次我们来点不一样的,搞个Py循环,直接拆分。 之前的拆分中,使用的是按照比例进行拆分,那么我们如果要按照距离进行拆分的话,就需要进行一个距离到比例的转换。

经过简单的转换,不管是按照长度,还是按照比例,都可以使用同样的方式进行拆分了。

本次推送中使用的Py方式与原生FME循环相比,得到的结果是一样的。但过程更加丝滑了(转换器少了一个)。

拆分前的线段:

使用20的间隔进行拆分,拆分后的线段:

改参数即可变成点:

克隆

相比FME和Py的循环,克隆的方式非常简单。只需要简单配置一下,就可以拆分线。非常容易掌握,所以我着重介绍一下。

克隆个数

首先是拆分个数,应该是总的长度除以拆分长度(步长),然后向上取整(生成点的时候复制的个数要加上1)。

拆分

然后拆分的时候,选择拆分的模式与拆分的起始终止长度(生成点或者线,参数设置略有差别)。

生成线参数:

生成点参数:

拆分后数据

拆分后的线,跟py的结果一样,没有区别。

总结

工作中,只舞一把锤子是不够的。多掌握几个工具,才能轻松应对各种突发情况!

参数

使用FME的时候,开始的时候总会被各种参数搞混,什么转换器参数、模板参数、公有参数、私有参数,总之有很多的参数。我们在做工作的时候,如果不了解这些参数,一直处于一种一知半解的状态,就很难做到灵活的调整参数来满足各种需求。

就像我以前写过怎么把二维的线进行均匀的拆分,那么现在突然来了个拆三维的需求。不做任何调整直接上去就干,那是会出问题的。所以参数这块,要下功夫去学,不管是转换器参数还是别的参数,都要下功夫去学,掌握了才能对各种需求做到游刃有余。

Py那么酷要不要学
是不是非要用py

熟悉我的朋友都知道,我喜欢写点py代码来处理数据,但是不是非写不可呢?其实大多数时候,FME本身都有原生的转换器来做到同样的事情。只是我写顺手了,选择了我熟悉的一种方式而已。

py的效率是不是更高

其实py的效率不怎么高,我们使用的高级语言,效率都不咋地。之所以要用它,是因为它高级,是因为它好用!以本文为例,在以20为步长进行拆分的时候,两种方式都耗时2.1s。当步长调整为0.05时,py循环用了2.7s,FME克隆用了3.4s,差别真的不大。我们使用FME就是因为它高级又好用,至于效率,我觉得够用了。再说,你还差那0.7s

最后,祝大家周末玩的开心!

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 拆分
    • 计算线长度
      • 传入步长
        • 拆分线
          • 循环
          • 克隆
          • 参数
          • Py那么酷要不要学
      • 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档