基于IDL的三维地质动态建模_张庆嵬.pdf
第 46 卷 第 6 期煤田地质与勘探Vol. 46 No.6 2018 年 12 月COALGEOLOGY IDL; dynamic display; coal field 在地球科学领域,地质学家用闭合的线圈在平 面上表示高山、盆地等地貌,用特殊的记号表示断 层、褶皱等构造,这种方式在无形之中提高了信息 传递的门槛。三维地质建模技术凭借着地质信息直 观表达、功能丰富多样的特点,成为弥补二维图件 模式缺点的最佳工具之一。 所谓三维地质建模就是在 原始数据的基础上, 建立能够反映地质构造形态、 构 造关系及地质体内部属性变化规律的数字化模型[1]。 三维地质建模概念最早于 1994 年由加拿大学者 Simon Houlding 提出,发展至今不仅在理论上推陈 出新,并且出现了针对各行业的商业软件。 交互式数据语言Interactive Data Language, IDL是数据处理与可视表达的首选工具之一。凭借 功能强大的内置函数与优秀的图形显示能力,IDL 可以快速完成数据分析与表达,尤其是在数据动态 展示方面有自己的优势。笔者在总结三维地质建模 方法的基础上,探索了在 IDL 平台上实现三维地质 建模关键步骤的方法,并设计了动态显示体系,最 后开发程序以山西某煤田地层静态展示与陕西磨沟 泥石流动态展示为例对实际使用效果进行了验证与 分析。 1三维地质建模方法 三维地质建模方法很多,但总体上可以归结为 ChaoXing 第 6 期张庆嵬等 基于 IDL 的三维地质动态建模145 表面建模、实体建模及混合集成建模 3 大类[2-3]。 表面建模方法只刻画地层的界面,用界面的空间位 置关系来表达三维视觉效果,这种方式空间拓扑关 系比较简单,对计算机的图形处理能力要求较低, 但模型内部是中空的,难以生成剖面图[4],常见的 表面建模方法有三角网法[5]、格网法[6]等;实体建模 方式可以理解为将表面模型内部的空间进一步无缝 剖分,这种方式空间拓扑关系比较复杂,对于复杂 地质体刻画较表面建模方法吃力[7],常见的实体建 模方法有四面体法[8]、棱柱法等;混合集成建模方 法就是将表面建模与实体建模方法进行组合用来描 述地质体。 三维地质建模的实现过程一般包含如下步骤 ① 基础数据处理; ② 数据插值; ③ 网格剖分; ④ 生 成面元或体元;⑤ 渲染显示。 2IDL 对象图形法[9-10] ENVI 软件包含 IDL 模块。 IDL 自 5.0 版本引入 面向对象编程的概念,对象图形法提供了一整套的 可视化工具类,包括原子类、框架类、显示类、场 景类等,其核心思想类似于“搭积木”,将不同的显 示类别按照开发需求组合在一起。原子类是最小的 单元,它们都具有特定的功能,彼此之间独立。其 余的类都属于容器类, 可以在其上添加原子类对象, 构成不同的层次图 1。 图 1对象图形法框架体系 Fig.1The frame of IDL object graphic system 图 1 中的 IDLgrPolyline线类、 IDLgrSurface面 类、 IDLgrVolume体类都属于原子类; IDLgrModel 是框架类,具有容器属性,可以容纳多种原子类, 平移、旋转、缩放等操作都需要基于此类的对象完 成;IDLgrView 是视图类,可以容纳其他容器类以 完成渲染显示;IDLgrScene 是场景类,其内可以包 含多个 IDLgrView 类。不同类的对象都是利用各自 的关键字进行属性设定,如用 oModelOBJ_NEW ‘IDLgrModel’,Render_0 语 句 定 义 了 IDLgrModel 类的对象 oModel,其关键词 RENDER_ 设置为 0,则意味着 oModel 对象会绘制 包含在其内的所有原子类对象;如设置为 1,则仅 绘制关键词 ACTIVE_POSITION 指定的活动部分。 3关键技术的实现 3.1数据读入 数据文件采用文本格式txt、dat,借助 READF 函数读入点云数据坐标。将所有坐标值输入到折线 类 IDLgrPolyline 对象中,设定其 LINESTYLE 属性 数值为 1,则可以只进行坐标点的初始化显示。为 了美观,还可以利用符号类 IDLgrSymbol 来进行单 点标志符号的定义,IDL 支持 27 种基本符号,比如 三角形、圆、钻石、星形等。此外,利用 COLOR 关键字可以定义显示颜色。 3.2插值方法 IDL提 供 了 十 多 种 常 用 的 插 值 算 法 , 包括 KRIG2D 克里金算法、 GRID_TPS薄板样条算法、 MIN_CURVE_SURF最小曲率算法等, 这些算法经 过官方优化,计算高效,稳定性好。所有插值算法 的调用格式相同,但每个算法的控制参数不同,可 以查阅官方技术文档以获取详细信息。以实际使用效 果较好的GRID_TPS算法为例,调用格式为Result GRID_TPSXa,Ya,Za,NGRID[Nx,Ny],START[X0,Y0], DELTA[Dx,Dy],其中Xa、Ya、Za分别表示源数据 中X、Y、Z坐标集合;Nx、Ny分别表示X、Y向插值 个数,X0、Y0表示起始插值坐标,Dx、Dy是X、Y向 间距。插值结果会赋值到二维数组Result中。 3.3表面建模 利用 IDL 中的 TRIANGULATE 函数可以构建 Delaunay 三角形网。将组网信息输入到多边形类 IDLgrPolygon 对象中绘制三角形面元可以表达地层 面,且面元支持颜色填充与纹理贴图。 事实上,借助于 IDL 对象图形体系中的面类 IDLgrSurface 可以不用进行剖分而实现表面建模, 只需将插值得到的数据按照格式输入到面类中就可 以达到良好的显示效果。面类对象生成格式为 ResultOBJ_NEW‘IDLgrSurface’,Za,Xa,Ya, PROPERTY value,值得注意的是 Za数据必须是 一个二维数组,假设 Zafltarra,b表示创建名为 Za 的 a 列 b 行的二维 float 数据类型的数组, 则 a 是 X 向插值点个数,b 是 Y 向插值点个数,Za数组元素 则为点的高程。Xa、Ya可以是一维数组,也可以是 二维数组,Xa为一维数组 Xafltarra时,其值为点 云数据中 Y 坐标取最小值时对应的 X 坐标值集合, 个数为 a;Ya为一维数组 Yafltarrb时,其值为点 云数据中 X 坐标取最小值时对应的 Y 坐标值集合, 个数为 b。当 Xa、Ya为二维数组时,其数组大小与 ChaoXing 146煤田地质与勘探第 46 卷 Za数组一一对应,如 Xa[i,j]、Ya[i,j]、Za[i,j]代表的是 插值格网中横向第 i1 个、纵向第 j1 个点数组行 列数起始为 0的三维坐标值。 IDLgrSurface 类中的关键字有很多,决定面显 示风格的是 STYLE,共提供 7 种选择,其中 0 为点 绘制, 1为网格绘制, 2为填充绘制, 如果令 STYLE1 则是用四边形进行剖分后的显示效果。此外,利用 TEXTURE_MAP 关键字可以实现贴图功能。 3.4实体建模 IDL 中的体绘制类 IDLgrVolume 是基于体素而 实现的。 语法格式 ResultOBJ_NEW‘IDLgrVolume’, vol,PROPERTYvalue,vol 为三维数组,用于确定 体素属性,用 DATA0、DATA1、DATA2、DATA3 关键词设置,当体绘制方式关键词 VOLUME_ SELECT0 时,为 8 位体数据绘制方式,数据只需 由 DATA0 注入。在 32、64 位 WINDOWS 操作系统 上支持的最大体素个数分别为 232、264。在实际使用 中有两种实现思路,一是可以建立一个 100100 100 的立方体显示空间,以立方体为实体建模单元, 将地层的插值数据点按照相应的规则进行归一化变 为模拟数据,然后将模型空间内的所有位置点与各 地层数据进行比较,并根据比较结果赋予显示特征 值;二是将插值数据进行平移消除负值后,循环选 取点作为四边形左下角位置的控制点,其正向相邻 3 点作为四边形其余 3 个位置点,上下 2 个层面的 四边形确定后进行竖向组合成为四棱柱,将四棱柱 作为体素,赋予显示特征值。当每个体素都具有特 征值后,注入 IDLgrVolume 类对象中则会按照不同 属性进行显示,从而实现实体建模。 对于实体模型切片的提取有 2 种实现方式,一 种是利用函数 EXTRACT_SLICE,另一种是借助交 互插件 SLICER3。 两者均支持任意方位的切片提取, 相较而言 SLICER3 方式更便捷且功能更为强大, 但 它需要弹出额外的窗口界面。 3.5动态表达 所谓动态效果, 其实就是在时间变化的驱动下, 将模型的整个或者部分数据不断进行更新绘制,以 完成对连续变化地质事件的表达。IDL 有多种动画 生成机制,如 JPEG2000 方式、Xinteranimate 方式 等,下面将介绍笔者采取的动态显示算法的主要实 现步骤。 设 定 一 个 IDLgrModel 类 对 象 命 名 为 Animationmodel,因其为容器类对象,故可将数据 Data如 IDLgrPolyline、IDLgrSurface、IDLgrVolume 等加载其中, 并将其 RENDER_ 属性设置 为 1。定义一个 Process_control 原子类,在类中封 装用来序列化图像与控制数据流动的相关函数。设 定 Process 为 Process_control 类的对象, 并将图像数 据源指定为 Animationmodel。定义 IDLitWindow 类 的对象 oWindow,利用 AddWindowEventObserver 关键词添加 Process 为 oWindow 的窗口事件观察, 当窗口对象 oWindow 发生状态改变时触发 Process 内的增量函数,完成图像数据的循环展示。如图 2 所示将整个流程衔接在一起, 保持数据 Data 的正确 流动可形成动态效果。 要实现地质现象的动态表现,显示算法只是一 个方面,数据 Data 的生成方式、注入方式、造型方 法及进程控制等同样重要。程序中对于动态显示过 程的把控则是通过设定 oWindow 中的关键词实现 的, 利用 SETEVENTMASK 关键词进行动态模拟启 停控制,利用 SETTIMERINTERVAL 关键词进行播 放速度的调整。 图 2动态显示算法的组织流程 Fig.2Organization process of dynamic display algorithm 3.6辅助功能 三维地质模型的可视化必须要做到三维交互功 能,IDL 平台上借助虚拟跟踪球 TrackBall 可以实现。 调 用 格 式 为 TrackBallOBJ_NEW ‘TrackBall’, center,radius,center 为二元一维数组,表示跟踪球圆 心坐标,radius 为跟踪球的跟踪范围半径。利用 IDLgrModelScale,Sx,Sy,Sz命令可以分别在 X、Y、Z 方 向 上 进 行 缩 放 操 作 ; 利 用 IDLgrmodel Translate,Ax,Ay,Az命令可以分别在 X、 Y、 Z 方向上进行 平移操作。灯光类 IDLgrLight 用于创建三维图形对象 的光源,调用格式为 Light OBJ_NEW‘IDLgrLight’, PROPERTYvalue,关键词 LOCATION 可以指定光 ChaoXing 第 6 期张庆嵬等 基于 IDL 的三维地质动态建模147 源位置,DIRECTION 确定灯光方向,COLOR 选择灯 光颜色,TYPE 设置灯光类型。灯光类型共有 4 种, 分别为环境灯、位置灯、方向灯、聚光灯。 4程序开发 基于以上分析,在 IDL 平台开发了三维地质建 模程序,其不但能完成三维地质建模任务,还具有 动态显示能力。程序开发遵循模块化设计原则,大 体分为如图 3 所示的 6 个模块。表面建模与实体建 模是采用不同的建模理念构建三维模型的 2 个模 块,内部共享原始数据与插值数据。动态显示主要 用来表达模型运动过程,它包含系列数据的构建与 集成,并实现快进、快退、暂停、逐帧等控制效果。 切片生成则在实体建模后实现了片状模型的提取。 三维交互则完成显示区域的操作响应,包括旋转、 平移、缩放。数据接口则包括原始数据的输入,插 值数据与其他格式的数据如 FLAC3D数据的输出。 程序主界面如图 4 所示。借助 VM 或 Runtime 可部 署程序,但 Runtime 需授权。 图 3程序模块组成 Fig.3The structures of system modules 图 4程序界面 Fig.4The program interface 5实例验证 5.1煤田静态展示 煤田位于山西省境内。煤田内地形平坦开阔, 为厚层新生界沉积物所掩盖,地势西南部高,东北 部低。海拔一般在 1 1001 200 m,最高点海拔标高 1 410 m,最低点海拔标高为 1 096 m,最大相对高 差 314 m。本次展示选取了 3 个煤层面,为了突出 高差效果,程序在高程上设置了放大倍数。 图5是原始数据点经过GRID_TPS算法插值后生成 的点状图。从图中可以看出,经过插值后数据点得到了 加密,点的排布更有规律,消除了数据缺失的情况。 图 6 展示的是将插值数据注入到 IDLgrSurface 类 对象后生成的 3 层地层面的形态,图中的显示状态已 经加入了灯光功能,并且不同的地层用颜色进行了区 分显示。图 7 则是对上下相邻的煤层边缘进行了面数 据构筑, 从而形成了封闭模型, 增强了立体表达效果。 图 5点状显示 Fig.5The model of point-based geometry ChaoXing 148煤田地质与勘探第 46 卷 图 6煤田表面模型 Fig.6The surface model of coal field 图 7封闭表面模型 Fig.7The closed geological surface model 图 8 则是利用前文所述的实体建模第二种方案 生成的模型,X 向插值个数为 200,Y 向插值个数为 100,可以看出边缘呈锯齿状,加大插值密度后情况 得以改善,说明实体建模方法较表面建模方法需要 的数据量更大。此外对实体模型进行三维旋转、缩 放操作时,计算机超负荷运行并出现明显的卡顿现 象,表明实体模型在进行图形渲染的时候需要耗费 更多的计算资源。但实体建模的优势是可以方便地 生成剖面图,图 9 展示了煤田的复合切片。 图 8煤田实体模型 Fig.8The voxel model of coal field 5.2泥石流动态展示 磨沟[11]位于宝鸡市陈仓区凤阁岭镇以西,总体 呈近南北向的分布,沟长约 8.5 km,选取其上半段 为研究对象,插值后模型如图 10 所示。 图 9复合切片 Fig.9The composite slices of voxel model 图 10磨沟地表模型 Fig.10The topographic model of Mogou 泥石流数值模拟过程没有考虑沿程侵蚀的情 况,集水点设置为 2 条主沟上游,降雨持续时间为 2 h,且 1 h 时为雨量峰值。图 11 在贴图基础上,展 示了 4 个不同时刻的泥石流发育情况。在实际使用 中,动态显示流畅,速度控制精确,并具有逐帧回 溯能力,证明动态显示算法是可行的。 图 11磨沟泥石流动态显示效果 Fig.11The dynamic display of debris flow in Mogou 6结 论 a. IDL 可以高效完成三维地质建模过程中涉及 到的数据插值、 网格剖分操作, 并且能够快捷实现三 维旋转、缩放、平移等交互功能。借助于丰富的内置 ChaoXing 第 6 期张庆嵬等 基于 IDL 的三维地质动态建模149 函数,将 IDL 作为开发工具可以明显减少代码量。 b. 表面建模方式与实体建模方式恰好对应 IDL 对象图形体系中的 IDLgrSurface 类、 IDLgrVolume 类, 配合类的关键词选项,可以较好地完成建模任务。 经过实际使用比较,在显示效果、流畅度、可操作 性等方面表面建模的方式在 IDL 平台上有更好的使 用体验。 c. 经过检验,笔者采用的动态显示算法具有一 定的可行性,完善后可以应用于矿区滑坡、泥石流、 地表沉降等灾害的动态展示。 d. 文中没有讨论包含断层、褶皱的复杂地层建 模方法,未来将在这方面做进一步工作。 参考文献 [1]明镜. 三维地质建模技术研究[J]. 地理与地理信息科学,2011, 27414–18. MING Jing. A study on three-dimensional geological modeling[J]. Geography and Geo-Ination Science,2011,27414–18. [2] 程朋根,刘少华,王伟,等. 三维地质模型构建方法的研究及应 用[J]. 吉林大学学报地球科学版,2004,342309–313. CHENG Penggen,LIU Shaohua,WANG Wei,et al. Study and application of a new 3D geological model construction [J]. Journal of Jilin UniversityEarth Science Edition,2004,342 309–313. [3] 吴立新,史文中. 论三维地学空间构模[J]. 地理与地理信息科学, 2005,2111–4. WU Lixin,SHI Wenzhong. On three dimensional geosciences spatial modeling[J]. Geography and Geo-Ination Science, 2005, 211 1–4. [4] 王纯祥, 白世伟, 贺怀建. 三维地层可视化中地质建模研究[J]. 岩 石力学与工程学报,2003,22101722–1726. WANG Chunxiang,BAI Shiwei,HE Huaijian. Study on geological modeling in 3D strata visualization[J]. Chinese Journal of Rock Mechanics Engineering,2003,22101722–1726. [5] 董前林,李青元,曹代勇,等. 多源地质数据综合三维建模及地 质学分析以青海木里三露天勘探区为例[J]. 煤田地质与勘探, 2017,45337–44. DONG Qianlin,LI Qingyuan,CAO Daiyong,et al. 3D modeling with integration of geological data of multi-sources and geological analysisA case of sanlutian exploration area of Muli, Qinghai[J]. Coal Geology Exploration,2017,45337–44. [6] 曹代勇,李青元,朱小弟,等. 地质构造三维可视化模型探讨[J]. 地质与勘探,2001,37460–62. CAO Daiyong,LI Qingyuan,ZHU Xiaodi,et al. Study on the 3D visual model of geological structure[J]. Geology Prospecting , 2001,37460–62. [7] 张煜,温国强,王笑海,等. 三维体绘制技术在工程地质可视化 中的应用[J]. 岩石力学与工程学报,2002,214563–567. ZHANG Yu,WEN Guoqiang,WANG Xiaohai,et al. Application of 3D volume visualization in geology of civil engineering[J]. Chinese Journal of Rock Mechanics Engineering,2002,214563–567. [8] 苏幸,黄临平,林孝成,等. 基于四面体格网的三维地质体建模 算法[J]. 煤田地质与勘探,2008,3615–9. SU Xing,HUANG Linping,LIN Xiaocheng,et al. 3D gelogical bodies based on tetrahedron mesh and its generation algorithm[J]. Coal Geology Exploration,2008,3615–9. [9] 韩培友. IDL 可视化分析与应用[M]. 西安西北工业大学出版社, 2006. [10] 董彦卿. IDL 程序设计[M]. 北京高等教育出版社,2012. [11]郝赛. 宝鸡市磨沟泥石流数值模拟及危险性分区研究[D]. 北京 中国地质大学北京,2017. 责任编辑 张宏 上接第 143 页 [13] 侯代平,刘乃飞,余春海,等. 新疆布仑口高温引水隧洞几个 设计与施工问题探讨[J]. 岩石力学与工程学报,2013,32增 刊 23396–3403. HOU Daiping,LIU Naifei,YU Chunhai,et al. Discussion on designandconstructionmeasuresforarocktunnelin high-temperatureconditions[J].ChineseJournalofRock Mechanics and Engineering,2013,32S23396–3403. [14] 李国良,程磊,王飞. 高地温隧道修建关键技术研究[J]. 铁道 标准设计,2016,60655–59. LI Guoliang, CHENG Lei, WANG Fei. Study on key technology for construction of high ground temperature tunnel[J]. Railway Standard Design,2016,60655–59. [15] 余春海,刘乃飞,侯代平,等. 公格尔水电站发电洞高温段关 键施工技术[J]. 地下空间与工程学报, 2017, 134 1024–1032. YU Chunhai, LIU Naifei, HOU Daiping, et al. Key construction technologies of the high-temperature tunnel for the Kongur Hydro-power station[J]. Chinese Journal of Underground Space and Engineering,2017,1341024–1032. 责任编辑 张宏 ChaoXing