一、地质体数据简介

什么是三维地质建模?百度上给出的解析是:将地质、测井、地球物理资料和各种解释结果或者概念模型综合在一起生成的三维定量随机模型。
已建成的地质模型可以为我们提供很多信息。首先是地质的三维可视化。通过三维可视化,我们可以了解所研究的地质对象(如地层、断裂、滑坡)的空间形态和相互关系。其次是它为我们提供了一套有机融合在一起的数据体,因为建模过程就是各种数据的融合过程。
本文主要介绍地质模型导入到 SuperMap 之后,可以用来做哪些功能,实现什么样的效果,在项目上 有什么样的应用?

二、地质体数据格式

对于目前发布到前端用于实际运用的地质体数据,通常是两种数据来源。分别是桌面的制作或者是从其他软件生成然后导入到桌面当中。

①iDesktop从零开始构建地质体

地质体数据的构建,通常的流程是:先有一份地质点的表格数据。把该表格数据,导入到桌面当中生成三维点,然后通过【构建地质体】功能去生成一份地质体数据,具体的流程可以参考官方博客:iDesktop从零开始构建地质体

②从其他软件制作地质体并导入到桌面

该方法简单来说,就是从其他软件,诸如3DMAX、Revit等专业建模软件中,制作地质体的成品模型数据,然后通过插件,导入到桌面当中。具体的插件使用,可以参考官方博客:SuperMap GIS三维插件使用Q&A
需要注意的是,其他软件导出时,要尽量使每一层的地质体都是一个单独的对象,或者是单独的组。最终在桌面需要实现的结果是,每一层都是一个单独的模型数据集。

三、地质体数据处理

在 SuperMap iDesktop 中,我们可以批量修改模型颜色,编辑修改模型纹理。 在 SuperMap iClient3D for WebGL 中,我们还实现了多种地质体实时分析功能,包括:
1、实时剖面分析(实时封边,获取被剖切对象 ID)
2、实时裁剪(多边形裁剪)
3、实时开挖(圆柱体、多边形开挖)
4、实时表达(爆炸、夸张)
5、实时构建虚拟钻孔(实时构建,实时查看)

1、在 SuperMap iDesktop 中,根据项目要求,编辑修改地质模型的材质。

如果导入的地质体模型没有材质,或者想要修改模型的材质,都可以在 SuperMap iDesktop 中完成。 目前我们提供了三种编辑材质的方法

①通过“材质浏览器”功能,实时选中对象修改材质

a.点击“三维地理设计-模型操作-材质编辑-材质”按钮,弹出材质浏览器面板。

b.点击“添加”按钮,并新建一个材质“地层 x”,并设置材质颜色及纹理。 材质颜色的 RGB 值可参考下图所示的色表。

3dtiles地质体 什么是地质体_数据


图:材质色表

c.置好颜色及纹理之后,通过在场景中选择对象,再点击“将材质赋给选中对象”按 钮,直接将设置的材质赋给相应的对象。
d.依次选择场景中的其它对象,并赋予其材质。

②批量修改模型材质颜色

“批量修改模型材质颜色”功能,支持根据模型对象的属性信息,过滤出相同材质的对 象,然后批量赋予材质。
如果导入的数据集本身就已经有记录材质的属性,则可以跳过ab两个步骤,进入c步。如果没有相关的材质属性,需要先添加一个材质属性。
a.给数据集添加一个材质属性
选中数据集,右键单击“属性”按钮,弹出属性面板;在属性面板中,点击“添加”按钮,添加一个新的属性进来。这里添加一个文本型的属性,命名为“Color”。

b.在属性表中,设置Color的属性值
选中数据集,右键单击“浏览属性表”,可以看到在属性表的最后,显示出了上一步添加的“Color”属性。根据项目要求,给其赋值。

c.通过批量修改模型材质颜色功能,批量修改模型的材质颜色
点击“三维数据-模型处理-修改材质颜色”功能,在弹出的“批量修改模型材质”面板中,选择“条件设置”,通过设置SQL表达式,批量设置模型的颜色。

SQL表达式面板中,选择Color对象,点击获取唯一值,即可得到所有的Color属性,再通过Color=‘颜色’表达式,过滤出相同材质的对象。
依次设置不同颜色的过滤条件与过滤色,最后点击确定,生成一个新的带有材质颜色的数据集。

③给模型增加或修改纹理

批量修改模型材质颜色功能,只能修改模型的颜色,不能编辑模型的纹理。如果要增加或修改模型的纹理,需要使用“材质编辑器”功能。

a.将需要处理的数据集添加到场景中,选中对象,右键单击,在弹出的对话框中,选择“材质编辑”功能。

b.页面跳转至材质编辑界面,如果模型没有纹理坐标,是不能贴纹理的,因此,首先对模型的纹理坐标重新进行计算。重复模式选择实际大小,并根据地质体的范围设置合适的“横向大小”与“纵向大小”,然后点击下方的“应用到模型”。

c.模型设置好纹理坐标之后,就可以设置纹理了。点击顶部的材质按钮,弹出材质编辑对话框。点击纹理编辑下面的添加按钮,即可添加相应的纹理图片。如果不合适,可进行替换,删除操作。

d.在材质浏览器中,给出了当前数据集中的所有材质。如果需要对新的模型设置已有的材质,只需要在材质浏览器中,选择对应的材质即可。

e.点击保存到模型,得到带有纹理效果的地质模型。

④总结:

“材质浏览器”功能,可以实时选中对象修改材质,及将做好的材质直接赋给选中的模型,比较接近常规建模软件中的做法,方便材质的管理及设置。

“批量修改模型材质颜色”功能,能够根据对象的属性,批量修改模型的颜色,适合对象数比较多的数据,但不支持设置带有纹理贴图的材质。

“材质编辑”功能,可以单独将选中的对象进行隔离观察,并修改其颜色及纹理。如果对象在整体场景中不容易观察,可通过该功能进行编辑。

以上三种编辑材质的方法,各有所长,实际使用过程中,根据数据的特征进行选择。

2、通过 SuperMap iServer 将编辑好的 UDB/UDBX 格式的数据,发布成三维服务以及数据服务。

①将处理好的数据集通过 SuperMap iServer 发布为数据服务 :

启动 SuperMap iServer,进入快速创建服务页面,点击“快速发布一个或一组服务”, 依次选择“工作空间”-“REST-数据服务/三维服务”。如图1.

3dtiles地质体 什么是地质体_数据_02


图1

发布成功之后,页面会弹出“快速发布服务-配置完成”窗口。如图2.

3dtiles地质体 什么是地质体_加载_03


图2

②获取地质体对象的服务地址

点击进入配置完成窗口中的服务地址,依次点击进入“data-datasource-数据源名-datasets-数据集名-features”。

该页面列出了当前数据集下面GEOMODEL的要素数量,这里的示范数据集下面有4个几何对象,所以要素数量为4。

即该数据集下面第一个地质模型对象的服务地址为:http://localhost:8090/iserver/services/data-dzt-hyy/rest/data/datasources/数据源名称/datasets/数据集名称/features/1.stream

数据集中后续模型对象的服务地址依次为:http://localhost:8090/iserver/services/data-dzt-hyy/rest/data/data sources/数据源名称/datasets/数据集名称/features/2.stream

如图3.图4

3dtiles地质体 什么是地质体_3dtiles地质体_04


图3 ![在这里插入图片描述]() 图4

③在 SuperMap iClient3D for WebGL 中,加载数据服务,并实现地质体的实时分析功能。

通过引用上述步骤中发布的数据发布,根据提供的相关接口即可实现相关的实时分析功能。

(1)实时剖面分析

在SuperMap iClient3D for WebGL中,通过剖切来观察地质体的内部构造形态及沿剖切面上的变化。

3dtiles地质体 什么是地质体_数据集_05


图5

(2)实时裁剪

在SuperMap iClient3D for WebGL中,可以通过裁剪功能将地质体裁剪为任意形状。

3dtiles地质体 什么是地质体_数据集_06


图6

(3)实时开挖

在SuperMap iClient3D for WebGL中,可以通过开挖功能对地质体进行任意形状的开挖。

3dtiles地质体 什么是地质体_加载_07


图7

(4)实时表达-夸张表达(拉伸)

实际中的场景可能会有这样的情况:在真实比例下,不容易寻找及浏览那些地质意义重大,但本身厚度较薄的对象;有些厚度较大,但范围较窄的地质体也不方便进行整体的浏览观察。这时,可通过改变模型在垂直方向的缩放来方便观察。

3dtiles地质体 什么是地质体_3d_08


图8

(5)实时构建虚拟钻孔

在SuperMap iClient3D for WebGL中,提供的实时构建虚拟钻孔功能,可模拟对地质体打钻孔的效果。

3dtiles地质体 什么是地质体_3d_09


图9

(6)实时表达-地质爆炸

目前有两种方式可用来做地质爆炸的效果:
1.通过数据服务的方式:是指通过模型数据流的地址,获取到每一个地质层,然后改变每一层在z轴的偏移值,实现爆炸的效果。
2.通过动态图层加载本地数据的方式:是指通过控制每个动态图层的偏移量,实现爆炸的效果。 通过动态图层加载本地数据的方式:动态图层目前仅支持加载.s3m与.s3mb格式的文件,不支持.json格式的文件,所以需要对模型数据集进行进一步的处理。

在SuperMap iClient3D for WebGL中通过设置模型插入点的方式来确定地质体对象的位置,因此需要在页面中填入模型插入点的位置坐标。如果数据为投影坐标系,需要将投影坐标系转为地理坐标系后再获取模型的插入点坐标。

a.将模型添加到球面场景中,选中对象,右键编辑模型,在弹出的窗口中,给出了模型的空间位置信息。

b.选择三维地理设计-模型编辑-坐标归零功能,在弹出的对话框中,将需要处理的数据集全部添加进去,选择“模型绝对坐标Z归零”,生成一个新的模型数据集。

c.将上一步骤中得到的数据集添加到场景中,通过选中模型,右键单击,导出模型命令,将每层地质体导出为一个s3m对象。

d.在SuperMap iClient3D for WebGL中通过动态图层的方式实现地质体爆炸的效果如下:

3dtiles地质体 什么是地质体_数据_10


图10

四、可能遇到的问题

问题一:WebGL如何实现地质体双面裁剪?

解决方法:如果裁剪面是垂直于地面的话,可以考虑使用多边形裁剪的方式。将多边形裁剪的四个点均设置在地质体范围外即可。

问题二:钻孔数据生成地质体模型后,地质范围延伸至场景原点,并且出现部分异常突起。应该如何处理?

问题原因:这个一般是由于数据异常导致的。范围延伸至场景原点,一般是数据挂接时 部分埋深点位没有找到对应的钻孔点;异常突起,一般是部分埋深高度异常。
解决方法:将这些异常数据删除。

问题三:制作地质体剖切时,模型加载出现问题,图层无法完整加载。几个图层都加载到了但是不完全,缺很多,是什么情况?

解决方法:如果数据中一个数据集下有多个feature,每个feature都需要单独加载,缺很多可能就是由于有的feature没有加载完全,建议可以用iDeskop中模型合并功能,把多个feature合并为一个,这样在前端每个layer加载一次就可以了