结合FME利用倾斜三维模型数据成果生成DSM等数据产品
2017-10-12 18:11
2739 查看
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!
相关文章推荐
- 倾斜摄影模型生成DSM、DOM操作流程
- 深度学习-CAFFE利用CIFAR10网络模型训练自己的图像数据获得模型-2生成图像库的均值文件
- 利用 MSYS2 及osgEarth 构建三维地球模型(2) osgEarth 与 Qt的结合
- 深度学习-CAFFE利用CIFAR10网络模型训练自己的图像数据获得模型-3结合caffe中的CIFAR10修改相关配置文件并训练
- 利用Javascript 结合 VML 生成三维报表(饼图)[原创]
- 如何下载bigemap高程数据利用3dmax制作三维地图模型?
- 深度学习-CAFFE利用CIFAR10网络模型训练自己的图像数据获得模型-4应用生成模型进行预测
- 数据模型是对象时如何利用freemarker生成静态文件
- 【SSH】利用applicationContext.xml文件结合java代码生成项目所需的数据库
- 利用动软代码生成器 自动生成LINQ需要用的数据实体类 (转)
- SQL SERVER2000教程-第五章 处理数据 第二十二节 利用UNION对多条SQL查询语句合并生成表
- iPhone开发之UITableView的小试牛刀 利用MVC模式从plist文件读取数据并字典转模型的格式实现
- Struts结合数据实时生成Excel文件并直接下载
- Qt环境下利用OpenGL显示三维模型
- 以P2P网贷为例互联网金融产品如何利用大数据做风控?
- 利用c++Test生成构建数据文件 ("build data file"),bdf文件
- 倾斜摄影自动化建模成果的数据组织和单体化
- JAVA利用enum结合testng做数据驱动示例
- 倾斜摄影自动化建模成果的数据组织和单体化
- 利用存储过程将表中的数据生成Insert语句