基于Voxler的煤炭地质三维自动可视化应用*

2022-01-22 09:01余永鹏毛兴军马永祥王嘉文陆爱国
矿山测量 2021年6期
关键词:数据源底板钻孔

余永鹏,毛兴军,王 贝,马永祥,王嘉文,陆爱国,谭 浩

(宁夏回族自治区煤炭地质局,宁夏 银川 750000)

煤炭是关系国民经济和社会发展的重要能源[1-3]。1965年以来,能源消费结构中煤炭占比始终维持在55%以上[4]。煤炭勘查是煤炭开发利用的先行工作,合理布置勘查工作和利用多源数据进行多维成果展示是相辅相成的,且尤为重要。传统地质工作中,资料分析或成果展示多数都是对单一方法采用一二维绘图的方式实现,也有些情况是采用几种方法的“套合图”达到综合分析的目的,都可能存在对地质数据分析不足的缺点。

近年来,越来越多的领域利用三维可视化技术取得了显著效果[5-8],尤其是医学领域,三维重建成像技术对病灶的大小、位置、形态的展示更精准[9],极大提高了疾病救治效果。地质三维可视化与医学三维成像在技术上具有一定的相似性。地质三维可视化模型能以一定比例模拟展示地质情况,使地质人员能以真实视角观察和分析地质现象,解释地质规律,研究和部署地质勘查工作,提高地质数据的可视性,更好发挥地质数据价值[10]。

从20世纪80年代开始,前人对地质三维建模技术进行了大量的研究工作。经过近40年的发展,三维地质建模技术在发达国家的使用已较为普遍,很多矿权交易市场都要求申请矿权交易的区块提供三维地质模型。国内学者开展相关研究工作起步较晚,经过无数科研工作者近30年的努力,近些年有若干功能较为稳定的产品问世,如北京科技大学研制和改进的“矿床三维可视化仿真系统”、中国矿业大学研制开发的“GeoMo3D”、中地数码公司研发的“MapGIS”等,这些软件已经相对成熟,在国内占据了一定市场[10-12]。

因勘查数据管理体系的不同和数据的多源性,三维地质可视化技术在煤炭地质领域的成功应用案例还不多见。在一些中小型地质勘查项目中,因建模流程相对繁琐,不易推广应用。Voxler软件是Golden Software公司出品的三维科学绘图软件,与Surfer软件同出一源,其操作逻辑、数据格式等具有相似性和兼容性,近年来在地学领域得到了广泛应用[13-18]。该软件提供了丰富的二次开发接口,通过计算机编程或脚本“操作”软件,定制开发适合自身的建模软件,能有效降低地质三维可视化模型的建立难度。

本文以宁夏某井田的煤炭地质勘查数据为例,利用Visual C++对Voxler软件进行二次开发,实现了煤炭地质三维可视化模型的自动建立,说明了该技术的优势。

1 煤炭地质三维可视化技术

在煤炭勘查中会投入物探、钻探、测绘等多种方法手段,建立煤炭地质三维可视化模型的目的是通过多源数据的三维分析研究地层的展布、形态、煤层分布等情况。建模过程中重点研究的内容有两方面:一是钻孔三维可视化模型建立;二是煤岩层底界三维可视化模型建立[18]。

1.1 钻孔三维可视化

钻探是一种直接的地质勘查方法。建立钻孔三维可视化模型对研究地层和岩性分布规律有重要意义,其主要内容是建立钻孔的三维轨迹,并在此基础上展示地层和岩性。

钻孔三维轨迹是利用一系列离散测点上的孔斜数据(测点深度、倾角、方位角),通过相应的数学计算后获得。钻孔轨迹的计算方法有最小曲率法、平均角度法、平衡切线法等数十种方法,不同方法计算得到的结果也存在一定差异,目前应用较多的是最小曲率法[19-20]。得到钻孔轨迹数据后,与地层和岩层顶底板深度数据进行综合处理,即可显示钻孔柱状。

建立钻孔模型所需数据有3类,分别为钻孔孔口基本数据、测斜数据和地层分层数据,数据格式如表1、表2和表3所示。为了提高柱状模型可视性和展示效果,岩性由柱状颜色表示,地层年代由柱状直径(粗细)表示。地层和岩性也需采用数字代号代替。建成的钻孔三维模型效果如图1所示。

表1 钻孔孔口基本数据一览表

表2 钻孔测斜数据一览表

表3 钻孔地层分层数据一览表

图1 钻孔柱状三维可视化模型示意图

1.2 煤岩层底界三维可视化

在煤炭地质勘查中,通过煤岩层底界形态可以研究地层展布和构造发育情况[11]。在二维图形中,一般通过绘制煤层底板等高线图或剖面图进行研究,存在难以进行立体对比分析的不足。三维模型可以直接展示地层的高低起伏,能“看见”地层的展布形态,对构造等进行直接分析。

煤岩层底界三维模型通过建立数字高程模型(DEM)或规则矩形网格(GRD)实现,即通过钻孔(或其他勘查方法)提取煤岩层底板上一系列点的三维坐标,然后对离散点进行内插值的方式形成DEM模型或GRD网格,目前有很多软件和算法可以实现[21-22]。与Voxler兼容较好的软件是Surfer,该软件提供了多种网格化的方法[23],其中,平均角度法、平衡切线法、最小曲率法和切线法等方法可以加载断层或断裂,生成的GRD文件中可以显示断层信息。

2 自动可视化建模方法

2.1 Voxler建模方法

Voxler是一款三维科学可视化软件,能展示矢量图、等值面图、切片图、流线图、散点图、体积渲染图、钻孔柱状等三维图形,对地质数据进行多种复杂分析和运算。

该软件对模型采用模块化的方式管理。模块基本分为数据源模块、计算模块和图形输出模块3类,与此对应的建模步骤也分为数据输入、数据处理和图形输出3步。模块之间通过“堆积”和“连接”方式实现数据输入输出,修改模块属性可实现不同功能,如通过修改数据源模块属性可以匹配源数据的格式和类型。

2.2 基于Voxler的自动可视化建模流程

通过人工操作方式建模时,通常由操作者判定每一步操作的正确性和合理性。自动可视化建模是通过计算机“操作”和“控制”建模软件的运行,基本流程操作、模块属性修改、图形修饰工作均由计算机完成。因此,自动可视化建模必须要建立正确合理的流程,在建模过程中无需判定操作的正确性与合理性,最后由操作者判断模型是否可用,是否有必要进行修饰工作。

通过对煤炭地质三维可视化技术的研究,结合操作流程和Voxler软件功能特征,建立了煤炭地质三维自动可视化建模流程,如图2所示。该流程主要由钻孔三维自动可视化建模和煤岩层底板三维自动可视化建模两个子流程组成。

图2 煤炭地质三维自动可视化建模流程图

钻孔自动建模中,一次性导入钻孔建模所需的3类数据后形成相应的数据源模块,在各数据源模块中修改相应属性,以匹配钻孔数据特有的数据格式后,全部“连接”至“WellData”模块,对3类数据进行综合处理计算,然后,通过“WellRender”模块实现三维可视化展示。

煤岩层底板自动建模中,流程可细分为两部分:第一部分为一次性批量导入一个或多个底板文件,生成相应的数据源模块;第二部分是依次用“HeightField”模块生成三维模型图。考虑到模块名称冲突的问题,需要对每个新建模块重命名。

每个子流程的最后,都通过软件进行自动化图形修饰工作。如图2所示,在两个子流程中均加入了“变换”模块,该模块可以实现模型在不同方向的比例变换,能提高模型的可视性。在流程管理中,还将常用的参数(如初始文件路径)存在系统数据库中,便于程序启动时直接调用,达到操作便捷的目的。

自动化流程的控制主要有两种方式:一种是通过预先设置控制条件;另一种是通过程序运行过程中的提示和人机交互控制。多数建模工作类似于“流水线”式的作业,建议采用第一种方式更便捷。

3 自动可视化建模方法实现

3.1 Volxer的Automation技术与对象模型

Voxler提供了对ActiveX Automation技术的支持,并提供了自动化脚本的编程语言和工具(ScripterTM),也能通过使用访问自动化对象的编程工具对其进行“二次开发”,包括Visual C++,WSH(Windows Scripting Host)等。自动化技术的优势是可以利用编程技术让软件自动执行重复和复杂的任务,能让使用者无需熟悉Voxler软件即可访问Voxler功能。

软件中的功能都对应相应的对象,每一个对象都具有自己的属性和方法。用户通过Automation技术对软件进行的所有操作,都是对“对象”进行的。Voxler采用层次化的方式组织其自动化对象,其中,应用程序(Application)对象位于层次结构的顶部,所有其他对象都要从应用程序对象直接或间接获得,各个对象的获得都需要一层一层的进行,如图3所示,为Voxler自动化对象层次结构图。

图3 Voxler软件自动化对象层次结构图

3.2 自动可视化建模方法实现

笔者在Visual Studio 2019平台上利用Visual C++语言对Voxler二次开发,实现了煤炭地质三维自动可视化建模程序,程序启动后的主界面如图4所示。

图4 三维自动化建模程序主界面

在建模过程中,需要将原地质数据格式转换为Voxler软件兼容的数据格式,但很多单位都有相对固定的地质数据管理体系和数据格式,因此,数据格式的转换可以通过计算机编程实现,达到地质数据与建模软件的“无缝衔接”。为了方便管理建模过程中产生的各类“中间”数据,设置相应工作目录进行存放,并将该目录保存在图2所示的系统数据库中,操作者不再参与数据文件的管理。在程序的一些操作中,程序默认选择该目录下的数据文件,而无需手动选择。

程序的流程控制是通过预先设置条件的方式,即通过设置复选框按钮的状态实现。图中的复选框共有4类,分别为“导入文件”、“生成图形”、“颜色填充”、“显示色标”,其中,“导入文件”控制导入数据并生成源数据模块,“生成图形”为建立三维模型过程,“颜色填充”和“显示色标”为图形修饰内容。4类复选框存在递进关系,须依次选择,否则部分复选框为只读且未选中状态。

在钻孔建模部分,界面显示已经从系统数据库中读入了工作目录路径,并选中了该目录下默认的钻孔数据,如果该数据不存在,则程序运行会报错,也可以点击“基础信息”、“孔斜数据”、“钻孔柱状”按钮,选择其他路径下的数据文件。

在底板建模中,通过点击按钮可以批量选择一个或多个底板网格文件导入并建模。在计算机程序中,采用两个循环实现图2中底板三维自动可视化流程的两个部分,即依次导入数据生成数据源模块和依次建立每个底板网格的三维可视化模型。

模型建立完成后,通过“比例调整”中的按钮可以实时调整模型在三个方向的显示比例,也可以在Voxler中通过鼠标实时任意放大、缩小和旋转模型。

因软件操作上具有相似性,以下仅展示部分关键环节的代码。

(1)程序调用(启动)Voxler软件,定义相关对象,新建Voxler项目工程。

#import "C:Program FilesGolden SoftwareVoxler 4Voxler.exe" no_namespace //调用Voxler前,需先导入Voxler的类型库

IApplicationPtr pApp; //定义Voxler类相关对象

ICommandApiPtr pDocs; //定义Voxler的CommandApi对象,对程序的所有操作都是基于该对象

IApplicationPtr pApp(__uuidof(Application)); //创建Voxler应用程序对象pDocs = pApp->CommandApi; //访问Api对象

pDocs->Construct("NewNet"); //通过Construct方法调用“创建新项目”命令

pDocs->Do(); //执行语句,Construct中列出的操作须通过该语句执行

(2)导入钻孔数据,形成以数据文件名称命名的数据源模块,设置属性以匹配数据格式。

pDocs->Construct("Import"); //通过Construct方法调用“导入数据”命令

pDocs->Option("Path", (_bstr_t)m_holeparapath); //设置导入文件的路径,变量m_holeparapath中为数据文件的完整路径,数据文件的名称为“holepara.dat”

pDocs->Do(); //执行Construct方法后的语句

pDocs->Construct("ModifyModule"); //通过Construct方法调用“修改模块属性”命令

pDocs->Option("Module", "holepara.dat"); //要修改的模块名称为“holepara.dat”

pDocs->Option("OutputType", "1"); //设置数据源类型,“1”为钻孔数据

pDocs->Option("WellSheetType", "1"); //设置钻孔数据的数据类型,“1”为钻孔孔口基本数据

pDocs->Option("WellColID", "1"); //设置钻孔孔号为数据文件第1列

…//设置数据各列与软件匹配

pDocs->Do(); //执行Construct方法后的语句

钻孔测斜数据和分层数据导入后,生成的数据源模块名称分别为“dip.dat”和“holebase.dat”。

(3)创建钻孔数据模块(WellData),连接源数据模块。

pDocs->Construct("CreateModule"); //通过Construct方法调用“创建模块”命令

pDocs->Option("AutoConnect", "False");//设置创建的模块不连接数据源

pDocs->Option("Type", "WellData");//设置新建的模块类型为“WellData”,默认的模块名称亦为“WellData”

pDocs->Do();//执行语句

pDocs->Construct("ConnectModules");//通过Construct方法调用“连接模块”命令

pDocs->Option("SourceModule", "holepara.dat");//连接输入端模块的名称,为“holepara.dat”

pDocs->Option("TargetModule", "WellData");//连接输出端模块的名称,为“WellData”

pDocs->Option("TargetPort", "1");//目标模块的输入端口索引号为1,依次为2,3…

pDocs->Do();//执行语句

(4)创建钻孔数据变换模块(Transform)和模型输出模块(WellRender)。“Transform”模块的输入模块为“WellData”模块,输出模块为“WellRender”模块。

(5)钻孔模型可视化。通过“WellRender”模块的属性实现。

pDocs->Construct("ModifyModule"); //通过Construct方法调用“修改模块属性”命令

pDocs->Option("Module", "WellRender"); //要修改的模块名称为“WellRender”

pDocs->Option("WellRenderShowPath", "True");//设置显示钻孔轨迹

…//设置钻孔轨迹颜色、柱状粗细均通过数据展示,分别对应岩性、地层年代。

pDocs->Do();//执行语句

为了实现模型的整体统一比例变换,需要统一修改“变换模块”的属性。建模过程中,所有的“变换模块”名称保存在一个专门的数组中。模型建立后,每设置一次模型比例,程序获得比例数值后依次修改“数组”中各“变换模块”的属性。

在程序中,通过判断语句和选择语句,控制程序运行过程。

4 应用实例

为说明本文研究建立的煤炭地质三维自动可视化建模方法的优势和效果,以宁夏某井田以往煤炭地质勘查数据为例,利用程序建立了该井田的煤炭地质三维可视化模型,验证了建模流程。结果表明,自动可视化技术在一定程度上可以替代人工建模。

该模型的模块联络图如图5所示,联络器中展示了通过自动化程序创建的模块和连接情况。图中 “holepara.dat”、“dip.dat”、“holebase.dat”分别为钻孔井口基础数据、测斜数据和柱状分层数据的数据源模块,模块“WellData”为钻孔数据特有的数据处理模块,“WellRender”模块为钻孔三维模型输出模块。在煤层底板三维模型中,“**.grd”为**煤层的底板GRD网格文件,右侧的模块“**”为煤层底板的三维模型输出模块。联络器中的“**_Tr”模块为数据变换模块。

图5 自动化建模形成的模块联络图

自动化技术建立的井田(局部)煤炭三维可视化模型如图6所示,图中完整展示了所有的钻孔三维轨迹、地层界线、钻孔见煤情况、煤层底板的三维起伏形态和构造展布等情况。三维可视化模型可以使地质工作者在三维空间中研究地质构造的变化规律和展布形态,布置下一步的地质工作。还可以在此模型上叠加煤质、地温、水质等数据,并进行其他地质问题的研究。

图6 自动化建立的煤炭地质三维可视化模型

总体而言,通过自动化技术能点击一次鼠标完成多个钻孔或地层三维可视化模型的建立,让操作者无需再熟悉建模软件的功能和繁杂的操作。相对传统人工建模技术,该技术能有效提高建模的效率和质量,降低建模难度,为地质技术人员分析地质资料提供了一种新的途径,对提高地质勘查质量有促进意义。

5 结 论

(1)通过Voxler软件及自动化技术可以实现高效、便捷地自动化建模技术,使用者无需熟悉Voxler软件的功能即可使用Voxler软件建模。

(2)本文建立的自动化建模流程,基本适合多数情况下的煤炭地质勘查项目,通过一次设置建模参数和点击一次鼠标,即可实现建模过程的全自动化管理,提高了建模效率和质量,工作量越大,效果越明显,具有经济性和推广价值。

(3)本文只是实现了钻孔和底板的自动化建模技术,为地质多源数据的三维分析提供了新途径,研究成果在地质数据分析、地球物理三维成像等多源数据的三—四维分析方面更具价值。

(4)文中仅给出了核心流程、代码和数据格式,为使用者提供一种思路,可以根据自身工作需要利用计算机编程实现与现有数据管理体系的无缝衔接。

猜你喜欢
数据源底板钻孔
高应力岩层巷道钻孔爆破卸压技术
旋挖钻孔灌注桩在软土地基处理中的应用研究
迈步钻场钻孔注浆提浓技术研究
一种面向传感云的数据源质量评估框架
利用属性集相关性与源误差的多真值发现方法研究
图表中的交互 数据钻取还能这么用
板上叠球
复杂条件下大断面硐室底板加固技术实践与应用
数据有增加 图表自适应
铝蜂窝复合材料客车底板性能研究及应用