原文发布时间:2017/8/4  14:39:06

作者:土豆(天下图)

邮箱:18055031@qq.com

1 序言

众所周知,我们利用Smart3D除了生成各种数据格式的三维模型以外,还可以在生成模型以后在Smart3D中输出点云、DSM和TDOM等附加数据产品,这些附加的数据产品也能用于各种数据分析和应用场景当中。

但有时我们手头仅有倾斜模型数据成果(如osgb格式模型),或者在生成DSM/TDOM软件总会遇到各种各样的问题,导致输出的附加产品和倾斜三维模型的范围不一致或丢失。遇到这种问题应该怎么办呢?

这时我们可以利用FME来根据已有的三维模型数据成果进一步生成这些附加数据产品。

2 目的

根据已有的倾斜三维模型数据成果(本案例中利用osgb模型)生成其他数据产品,本案例中输出的数据包括点云、DSM、TDOM和旋转了一定角度的DOM,其中旋转角度的DOM是用于给客户打印出图时使用的。

3 FME处理流程

3.1 整体流程

从下图可以看到,处理的流程并不复杂,所用函数也仅有5-6个。相信对于很多人来讲也非常容易。

3.2 处理步骤

3.2.1 坐标偏移

我们知道利用Smart3D生成的三维模型记录的是一个相对坐标,其主要目的是为了减少模型的数据量,同时也避免了在有的三维软件当中对于坐标值较大的数据的精度支持的也不够好的问题。

在Smart3D生成的数据成果当中都有一个metadata.xml文件,用记事本打开这个文件,就可以看到文件当中记录<SRSOrigin>原点信息。这意味着所有的三维模型都是相对于这一点的坐标。因此需要首先利用Offsetter函数,在FME当中对模型进行移动至正确的位置。

3.2.2 利用PointCloudCombiner转换模型为点云

这里利用PointCloudCombiner函数,可以将模型数据转换为点云数据,不仅对倾斜模型有用,对于其他来源的三维模型同样有效果,有兴趣可以尝试。

需要注意的是,在设置点间距的数值时,如果我们输出的TDOM为0.05米的,那么建议在设置点间距为0.025米,这样可以避免在后续输出TDOM时存在空值(漏洞)。

3.2.3 利用ImageRasterizer输出TDOM

利用ImageRasterizer并设置正确的参数,即可输出TDOM,参数设置一般设置为RGB24,也就是我们常说的3波段。背景色设置为黑色(0,0,0),点云输入设置为Color

以下是生成的TDOM

3.2.4 利用SurfaceModeller生成DSM

对于利用PointCloudCombiner生成的点云,可直接利用SurfaceModeller生成对应的DSM数据。需要设置正确的X和Y的采样间隔即可。

同时由于在PointCloudCombiner步骤中,我们为了TDOM生成没有漏洞,采样间隔设置为0.025米,但DSM实际仅需要0.05米的,因此在本例中利用SurfaceModeller之前还用了一个PointCloudThinner函数,用于减少点云的数据量,加快生成的速度。

生成的DSM数据如下:

3.2.5 生成点云

生成点云可在上一步的基础上,在PointCloudThinner后直接输出点云数据即可。且生成的点云为带RGB颜色信息的点云数据。

3.2.6 生成具有一定俯视角度的DOM

在生成TDOM之前,可利用3DRotator函数,对点云数据进行适当的三维旋转,即可生成具有一定俯视角度的DOM。

这种数据主要是为了满足部分客户打印出图使用,传统的做法往往是将模型导入到例如3Dmax之类的软件当中设置好一定的角度,然后渲染出图。这种方法相信能够省去不少的麻烦。

在设置3DRotator旋转时,需要注意,旋转的角度以轴向为准,顺时针为正值,逆时针为负值即可。

如下图,本例中由于只有郊区的模型,相信城区的数据生成的效果一定会更好。

4 经验总结

FME在读取三维模型时的效率不高,经测试不论是osgb格式还是obj格式,均需要一个漫长的等待,期待后续在这方面有所改善。但即便如此,FME依旧让我们看到了它的强大,万能的FME!

结合FME利用倾斜三维模型数据成果生成DSM等数据产品相关推荐

  1. python3根据excel表数据自动生成word格式数据报告

    目录 1. 完成xlsx数据读取 2.对数据做一些处理 3.生成图表 4.创建word文件 5.将分析结果保存入word文件中 本文主要是讲如何根据简单的xlsx数据,生成word数据报告,首先需要先 ...

  2. 【专家观点】超大规模数据要素市场体系下数据价格生成机制研究

    摘 要:党的十九届四中全会提出"价格市场决定.流动自主有序.配置高效公平"的数据要素市场制度建设目标.本文系统研究构建了适配超大规模数据要素市场环境的数据产品价格生成机制,从数据价 ...

  3. 训练数据较少时如何生成更多的数据

    在图像和物体识别方面,计算机表现优于人类. 像Google和Microsoft这样的大公司在图像识别方面已经超越了人类基准[1,2].平均而言,人类大约有5%的时间在图像识别任务上犯了错误.截至201 ...

  4. 在Vue中使用eCharts的地图图表,及生成自定义地图数据(乡镇级)

    如何在Vue中使用eCharts的地图图表,及如何生成自定义地图数据(乡镇级) 文章目录 一.在Vue使用ECharts地图功能 二.生成地图数据 1.安装Bigemap 程序 2.生成需要的各乡镇地 ...

  5. GAN(生成对抗网络)在合成时间序列数据中的应用(第一部分——利用GAN生成合成(synthetic)数据)

    (本文基本是对Jasen 的<Machine Learning for Algorithmic Trading>第二版的第21章进行翻译.改写和复现,并用于我们的实际情况) 1. 准备阶段 ...

  6. 利用深度摄像头生成仿激光数据并构建地图

    前言 博主本来是想自己将生成的激光数据和ros中的地图构建工具生成地图的,结果搜了一下github发现这项工作已经被大牛们写好并且打包上传了,可以只利用激光数据不需要里程计数据来构建地图,不过还是把过 ...

  7. 图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网络生成手写体数字数据(tensorflow)

    图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网络生成手写体数字数据(tensorflow) 文章目录 图像对抗生成网络 GAN学习01:从头搭建最简单的GAN网络,利用神经网 ...

  8. 利用Random Waypoint Model生成室内轨迹数据

    利用Random Waypoint Model生成室内轨迹数据 1 模型简介 1.1 Random Waypoint Model 1.2 Random Walk Model 1.3 Random Di ...

  9. ASP利用数据表生成多级联动下拉列表框

    在做多个联动的select下拉列表框时,一般都是用javascript数组来动态显示列表框的列表项内容.看到不少程序,都是在脚本中一行一行地输入数组元素,即容易出错,而且让脚本篇幅看上去很大.经常在想 ...

最新文章

  1. java 汉字排序_java实现中文汉字的首字母排序
  2. Web前端开发笔记——第二章 HTML语言 第十一节 语义标签
  3. 游戏编程里面有哪些经典或者很酷的算法?
  4. slz-linux虚拟机的安装-VMware
  5. 位带操作全解释,个人觉得不错就转过来理解下
  6. 用java写一些有趣的特效_[Java教程]用JavaScript模拟Flash效果写的炫光波动特效
  7. 51nod1649齐头并进-Dijkstra
  8. vue.js下载安装教程
  9. 网站整站下载工具推荐【Z】
  10. vivo Z1的USB调试模式在哪里,打开vivo Z1USB调试模式的经验
  11. 论文写作课程收获总结
  12. vue3前端获取文件md5码
  13. greenplum如何删除segment节点
  14. whale 帷幄:营销自动化saas系统 saas营销系统是什么意思
  15. 边缘计算:一文理解云边端协同架构中的高性能云计算、边缘计算、云边协同
  16. 【云原生】K8s简介之什么是K8s
  17. 初探下一代网络隔离与访问控制
  18. 去广外读计算机类还是去广大,广财会计学专业很受考生青睐
  19. 小米路由(OpenWrt)折腾记(二)-- 搭建LLMP服务
  20. 三维数字沙盘电子沙盘人工智能地理信息系统开发教程第14课

热门文章

  1. 机器学习—特征工程—OneHotEncoder独热编码
  2. Java程序员如何写简历,给大家一个小建议?
  3. 【Web技术】1118- 图片防盗链的实现既然如此简单
  4. 【脑海烙成了无法泯灭的伤痕】
  5. 一、springboot项目集成大众点评cat
  6. linux ping库函数,在Linux上用C++实现Ping
  7. 华人数学家破译孪生素数猜想 影响或超1+2证明
  8. android百度地图设置logo,缩放按钮,指南针的位置
  9. paddlepaddle CPU模型部署加速包 MKL-DNN
  10. Spring之AOP报错:Null return value from advice does not match primitive return type for