用户名
密码
(30天内有效)
注册
注册
首页 > 案例资料 >

附件干货

我要收藏
2016-05-04

在制图或缩编或者其他一些应用环境下,通常需要对数据进行抽稀处理,大批量数据需要处理时,我们总是希望能够通过一些自动化的方法进行处理,节省时间。

FME中没有直接对点进行抽稀的转换器,需要使用一些转换器组合来进行。尝试了以下两种方法,分享一下:

 

第一种:使用PointCloudThinner

FME中,对点做抽稀转换器最直接的就是PointCloudThinner,但是这是对点云进行处理的转换器,所以可以考虑先把源数据构造为点云数据,经过转换器抽稀后,再转为注记或二维的点。

PointCloudThinner中有个Thinning Type(抽稀类型)的参数,参数有几个选择,通常选择“Every Nth Point (Interval)”或“Every Nth Point (Maximum Number of Points)”进行抽稀。分别表示点抽稀间隔的点数和抽稀后点最多的数量,通过设置对应的参数得到抽稀后的结果。

在使用PointCloudThinner时,需要把注记转为点云,通过PointCloudThinner后丢失了原有的注记文本信息,所以需要用一点技巧来处理。

我的做法:

1、使用CoordinateExtractorVertexCreator把注记转为点;

2、使用PointCloudCombiner将注记转为点云,通过PointCloudThinner抽稀,然后

通过PointCloudCoercer把点云转为独立的点

3、把抽稀后的点与第1个步骤的点用Matcher进行匹配,在Matched端口过滤出属于第1步中生产的点,

4、用LabelPointReplacer把点还原为注记。

 

效果如下图:

         

               原始注记                                                       抽稀后的注记

 

这里是用把参数类型设置为最大保留的点数(Every Nth Point (Maximum Number of Points)进行抽稀的,保留了500个注记的效果。你也可以试试如果设置为按点的间隔进行抽稀的效果Every Nth Point (Interval)


第二种:使用瓦片+邻近查找。这种方法可以抽稀得到比较均匀分布的注记或点。

思路:

1、  把所有的注记聚合,然后取外接矩形;

2、  根据抽稀的距离对外接矩形进行裁减,生成格网;

3、  每个格网取中心点,然后对每个中心点找距它最近的注记;

4、  保留每个中心点的邻近注记,即得到抽稀后的结果。

 

     使用到的转换器:

1、  使用Aggregator进行聚合,然后BoundingBoxReplacer得到外接矩形;

2、  Tiler生成格网;

3、  CenterPointReplacer取到每个格网的中心点,NeighborFinder查找中心点最近的注记。

4、  LabelPointReplacer将点还原为注记。

 

仍然使用方法1中的数据,将外接矩形按2020列生成格网。

 

抽稀的效果如下:

             原始注记                                                       抽稀后的注记

   

这里提供两个思路,我也只是当时做了两个效果出来。除了这两个思路,我当时还想过在第二种方法的基础上生成格网后,再通过点面叠加进行抽稀,不过也没做太多测试。

另外也可以考虑使用Sampler转换器,而且2016的版本中,该转换器新增加了Randomize Sampling的参数,或许会有些帮助。

我觉得注记或点抽稀的要根据数据反映的内容以及抽稀的目的来决定,这里把我的经验分享一下。

 

本站声明

本文仅代表作者观点,不代表城市数据派立场;
本文系作者授权城市数据派发表,未经许可,不得转载;
本网站上的所有内容均为虚拟服务,一经购买成功概不退款,请您理解。

点赞0
没有更多评论……