实景三维单体建筑MESH模型,质检与转换探索(一)
zjh_4852018183
2023年12月14日 16:13:40
只看楼主

随着实景三维中国建设的推进,地方层面主要需要完成城市级和地形级实景三维建设工作,如何规范地方层面“实景三维”建设的内容、程序、技术方法和成果,保证各类成果质量是当前很多地方都正在实践和探索的内容。 随着数据采集、三维数据生产加工平台及三维GIS平台技术的改进,质检与转换手段也逐步得到改进和发展,本文主要基于FME平台对实景三维单体建筑MESH模型的质检与转换进行探索。

随着实景三维中国建设的推进,地方层面主要需要完成城市级和地形级实景三维建设工作,如何规范地方层面“实景三维”建设的内容、程序、技术方法和成果,保证各类成果质量是当前很多地方都正在实践和探索的内容。

随着数据采集、三维数据生产加工平台及三维GIS平台技术的改进,质检与转换手段也逐步得到改进和发展,本文主要基于FME平台对实景三维单体建筑MESH模型的质检与转换进行探索。


1.1
格式转换
图片

1.1.1 3DS Max数据转换到FME支持的格式

本次的测试软硬件环境见下图:

                                             图片

图1 计算机软硬件环境


序号

相关软件

技术指标

1

数据库

PostgreSQL、Oracle

2

操作系统

Windows   10

3

GIS软件

SuperMap   iDesktopX 11i 、ArcGIS Pro 3.0.2、FME Desktop 2022.2(Build   22795)等

本次测试数据主要为建筑单体模型,格式为3DSMax,由于FME不能直接支持3DSmax软件的.max格式,首先需要进行格式转换。

图片

图2 3DS Max数据截图

目前超图有3DSMax直接转换UDB的插件,可以访问进行下载。

图片

图3 SuperMap的MAX插件

可以支持2014、2016、2018、2020多个版本的3DSMax软件,如下图:

图片

图4 SuperMap的MAX插件安装截图

然而测试电脑装的是3DS Max软件是2021版本,为此只能通过其他办法来实现转换。

图片

图5 本次测试的3DS MAX版本

右键可以看到3ds Max能够导出的格式,其中FME可以支持FBX、OBJ、3DS、dwg等格式。

图片

图6 3ds Max能够导出的格式

通过百度找到了max导出其他文件的脚本配合FME的“SystemCaller”转换器器调用该脚本实现自动导出为其他格式,这种方法可以通用于任何支持该脚本的3DS MAX软件版本,且可以调用其他支持脚本的类似生产软件,脚本如下:

图片

图7 3ds Max脚本

示例的是导出OBJ格式,如果需要导出其他格式修改第11行“using:ObjExp”为其他格式即可。

FME该部分模板截图如下:

图片

图8 FME转换模板

运行后FME会自动打开3DS Max软件,然后调用脚本自动完成逐个OBJ文件导出。

图片

图片

图9 自动导出OBJ文件

共测试5个max文件,共计926个单体,导出59562张贴图,共花费24分9秒,具体测试情况见下表:

序号

Max文件名

单体数量(个)

导出贴图数量(张)

耗费时间

1

bui01-200

200

15,991

5分13秒

2

bui201-400

200

11,352

5分10秒

3

Bui401-500

200

14,271

6分25秒

4

Bui501-800

200

12,733

5分26秒

5

Bui801-926

126

5,215

1分55秒

合计

926

59,562

24分9秒

上表时间是统计每个文件夹内文件生成时间计算的,实际FME模板运行了30分钟,部分时间是因为每次打开max文件时弹出了缺失DLL窗口,目前不知道该窗口如何通过脚本跳过(估计是需要找生产人员要DLL拷贝到对应目录),所以需要人工点击“打开”才会自动转换下一个Max文件,否则会一直等待,耽误时间,如下图:

图片

图10 每次脚本自动打开文件时弹出的窗口


1.1.2 OBJ单体转到SuperMap和ArcGIS数据库格式

首先我们通过FME测试从OBJ到国产GIS软件SuperMap的格式转换,当然如果3DS Max版本是超图插件支持的版本,可以用于直接转换到UDB格式。

FME无法直接转换国内的一些数据格式,需要借助北京世纪安图公司开发的MYFME扩展包插件才能进行扩展支持,介绍和下载网址为 http://www.fme-china.com/myfme/


1.1.2.1 SuperMap格式

这里我们做了个自定义转换器,主要用于转换SuperMap的两种格式,分别为SuperMap Geodatabase (UDB)文件型数据库和SuperMap Geodatabase (SDX)空间数据库,并且通过自定义转换器的分组设置支持FME的并行处理(2019后FME并行处理功能进行了重制,目前测试的FME2022版本该功能也是进一步优化了),从而调用计算机多个CPU核心和进程,多进程进行同步数据处理,提高转换和数据处理效率,自定义转换器见下图:

图片

图11 用于并行转换超图格式的自定义转换器

测试用的是单进程,且目前MYFME调用的SuperMap的API接口会占用很大内存,为此,不能一次性转换过多数据,我们通过自定义转换器设置每多少个要素一个分组进行写出,减小对于内存的占用,从而保证926个obj能够顺利写出到UDB文件中。

SDX数据库支持多进程并行写入同一个数据集,但受限于测试电脑性能并行数量不宜太多,否则会出现CPU或者内存满负荷运行造成的阻塞。


此外注意:超图的数据集(图层)名称不能以数字开头且不能包含”-”符号,故需要对于数字开头的图层加个字母,比如CD,“-”可以替换为“一”。而SDE基于Orcale的限制其表名也不能太长,也需要进行超长的截取。

图片

图12 转换到超图格式的FME模板截图


1.1.2.2 ArcGIS格式

FME读写ArcGIS的GDB和SDE格式,需要本机有相应ArcGIS环境和许可,这里我们FME2022是64位的软件,需要安装一个ArcGIS Pro并申请相应的试用许可,如果是ArcGIS Desktop则需要安装一个BackgroundGP插件。

图片

图13 转换到ArcGIS格式的FME模板截图

就结论来看,目前 FME 支持转换三维模型到 SuperMap ArcGIS 两种软件的文件型数据库和企业级空间数据库。

1.2
数据质检
图片

常见的三维模型数据质量检查内容:

1)包括文件命名、要素模型命名、数据格式、数据组织方式、Max文件命名、贴图命名等;纹理贴图的尺寸及格式是否正确,纹理尺寸要求长宽值需要为2的N次幂,长宽不需相等,最大不超过2048*2048,纹理长宽比差异不宜过大,如512×32。纹理格式为TIF、JPG、TGA等。

2)空间数据质量检查:采用的空间参考系、投影方式等是否符合规定的技术要求。
3)场景中模型的检查

  a.对照外业照片检查立面结构及贴图:包括模型表达是否完整、正确,模型的综合与取舍是否合理等。

  b.对照影像检验顶部结构及贴图:顶部结构的合理性、有无因立面照片拍摄不到而造成结构的丢失。
  c.从场景里检查模型本身问题:包括纹理是否完整,有无扭曲、变形、失真等。模型有无破面、漏面、漏缝、游离点、线、面等情况。
  d.场景效果检查具体内容包括:要素模型之间以及与地形模型间位置关系是否合理。
  e.附件质量检查:包括文档资料是否齐全,检查作业过程记录是否完整,如特殊说明等。
4)精度检查
三维模型可以用平面精度和高度精度。所有要素模型精细级别与所使用模型制作底图比例尺相对应,模型精细级别分别对应不同的平面精度和高度精度。
平面精度主要是通过选取地形模型特殊位置点(道路交叉口、房屋拐角点等)同原始DOM、地形图、竣工图等二维数据相同位置比较;选取要素模型的拐角位置点与地形图或竣工图相应位置比较。同时检查模型拆分是否合理、有无遗漏或多余。
高度精度主要通过选取地形模型特殊位置点和原始DEM、地形图、竣工图相同位置比较;选取要素模型某点的高度(花台、屋顶等)与竣工图、激光点云、实际测量等方法得到的高度进行比较,得到该模型某点位置高度误差。
由于文章篇幅有限,这里我们主要介绍FME中实现部分的三维数据质检。


1.2.1 MESH模型三维相交检查

首先我们制作一个简单的重叠测试数据,原始数据如下图:

图片

图14 原始数据

我们可以使用“Offsetter”转换器平移一段距离生成重叠的数据,如下图:

图片

图15 制作好的重叠测试数据

1.2.2 FME实现过程

测试使用的FME2022最新版本,新版的“Clipper”转换器能够支持三维的一些裁剪操作了,模板如下:

图片

图片

图16 FME2022三维裁剪

带缓存的运行,9.8秒后生成了两种不同的结果,分别是直接裁剪后的mesh重叠结果,如下图:


图片

图17 裁剪后重叠的MESH结果

也可以先将MESH转为框架线,然后裁剪的结果如下图:

图片

图18 通过模型提取的框架线


图片

图19 裁剪后重叠的多线结果

直接读取926个obj文件进行裁剪查重叠大约用时21分17秒。

图片

图片

图20 处理926个obj后的结果

为了进一步提高效率,我们可以把三维模型提取成投影面、基底面、框架线等二三维线面要素,并把相应三维信息通过blob的字段存储到属性中。

图片

图21 原始模型和提取的框架线

图片

图22 原始模型、投影面和基底面

投影面因为是正射投影,会比基底面MESH模型最底下的一圈大,但投影面的Z值是模型最小高度的Z值,而基底面的高程是根据底面实际节点的高程生成的。


图片

图23 把相应三维信息通过blob的字段存储到属性中

先将所有OBJ转换到GDB二维图层,同时生成了基底面、投影面和框架线,用时约6分5秒。

图片

图24 转换模板截图

三维相交其二维投影面肯定也相交,故我们只需要先找到二维相交的面并赋值分组ID,然后再通过GeometryReplacer还原三维图形,之后再分组裁剪查找重叠,可以发现相对于上面直接OBJ读取裁剪的效率还是快很多的,只需29秒即可完成检查。

图片

图25 FME模板和生成的结果

最后,由于文章展示篇幅有限,其他的质检项后面再继续补充。

免费打赏

相关推荐

APP内打开