张 震,朱权洁,2,晁海杰,李青松,张尔辉
(1. 华北科技学院 安全工程学院,北京 东燕郊 065201;2.华北科技学院 河北省矿井灾害防治重点实验室,北京 东燕郊 065201;3. 国家能源集团宁夏煤业红石湾煤矿有限责任公司,宁夏 灵武 750409;4. 贵州省煤矿设计研究院,贵州 贵阳 550025)
随着我国东部等地区多数煤矿进入深部开采,冲击地压等动力灾害越来越严重[1]。为了保障矿山正常生产,人们利用具有监测地域广等优势的微震监测预警系统,进行冲击地压等灾害的分析、预警。但现有的微震监测预警系统多为C/S结构模式,不适用于多用户远程操作,这为进行多层级矿山灾害实时分析带来不利。因此,将B/S结构模式引入矿山灾害预警平台,对矿山灾害的及时分析、预警有着重要现实意义。
近年来,我国在利用微震技术进行灾害预警方面取得了重大进展[2-5]。姜福兴[3]等联合多种参量对冲击地压进行监测预警,提高了冲击地压监测预警的准确性。随着虚拟现实技术的发展,三维建模软件被应用于各个领域[4]。夏勇学[5]基于OpenGL平台联合数据库技术开发了矿山微震三维显示及应用软件,为用户提供了较好的辅助功能。李怀良[6]等通过GPU可编程图形管线代替OpenGL固定管线,对微震监测区域三维模型的渲染,提高了建模效率。韩军等以Untily3D软件为建模平台,以C#语言为编程语言,实现了三维地质模型的构建与微震数据的可视化,完成了整个系统地质数据、采掘数据与微震数据的集成和实时显示[7]。随着X3DOM技术的问世与发展,国内外学者以X3DOM为框架做了大量研究[8,9],胡文玲[10]基于X3DOM技术对电力系统三维模型进行了可视化构建及操作功能的开发,并以Web的形式进行展示。证实了基于B/S构架进行电力系统可视化应用的可行性。杨婷[11]以X3DOM为引擎,以三维地质模型数据为基础建模数据,基于同一平台实现与复杂数据相对应的空间模型的构建和查询。
综上所述,针对三维建模技术难度大、资源耗费多等问题,基于X3DOM开发了B/S架构的矿山微震数据分析与三维可视化展示平台。该平台是由X3DOM、PostgreSQL数据库以及互联网技术等联合建立的B/S结构平台。总体而言,该平台开发效率高、资源耗费少,可以实现矿山三维模型以及微震监测数据的网页展示与交互操作,支持多用户异地访问。
Blender是一款优质的三维建模软件,其摆脱了传统商业性建模软件的不足,为用户提供了免费、功能齐备、使用简单的多功能建模工具。Blender还提供有Python运行窗口,为模型的自动构建创造了条件。利用Blender可生成高逼真度的矿山井巷、岩体等三维模型,可为真实还原矿山井下采场形态等提供良好的建模平台。Blender还有物理仿真模块,能真实模拟水灾、火灾的灾变情况,对矿山灾害的应急救援等有着重要意义。
X3DOM(X-Freedom)是一个开源的JavaScript框架。用户可用创建层次化、文本化的语句表示方式取代复杂代码编写的传统方式,完成交互式3D场景的创建与显示。同时,X3DOM技术支持跨平台使用,谷歌、IE系列等浏览器均支持其网页展示。通过此框架可使传统矿山灾害预警平台从桌面端走向Web端、移动端,为用户提供一个访问快捷、远程操作方便的矿山三维虚拟平台。
矿山微震三维交互平台是以B/S架构进行开发的。与传统的C/S架构监测系统相比,该系统平台无需客户端专业软件,降低了系统开发、维护的技术难度,方便用户使用。图1为矿山微震三维可视化平台B/S架构示意图。
图1 矿山微震三维可视化平台B/S架构示意图
矿山微震三维可视化平台采用三层架构进行开发。三层架构项目结构明确,提高了平台的开发速度,便于系统后期维护。如图2为矿山微震三维交互平台开发流程图。
图2 矿山微震三维交互平台开发流程图
该平台利用PostgreSQL数据库进行微震监测数据、巷道截面参数等的储存管理。PostgreSQL具有面向对象、数据类型丰富以及大数据库等特点,可为具有多源异构特点的微震数据、矿山井巷系统基础建模数据等大型数据的高效操作、分析提供稳定的环境。
业务逻辑层是三层架构的中间层。其主要作用是对具体问题进行逻辑判断与执行操作等。对于该平台而言,业务逻辑层的开发主要是对HTML文件的编写,具体开发内容如下:
(1) 模型导入:该平台以矿山井巷系统、工作面几何模型,作为矿山微震数据可视化平台创建的基础。因此,本研究先利用Python调用Blender建模函数,基于三维空间生成井巷系统几何模型,并导出该几何模型的x3d文件;再在X3DOM技术框架下,利用HTML5标准语言的
(2) 微震模型算法编写:本研究利用JavaScript与HTML联合编写微震事件模型生成脚本。创建对象:通过具有不同颜色、大小的球体具象化描述微震事件,因此,先利用
① 连接数据库:利用SQL语句连接PostgreSQL数据库,调取微震事件坐标、所释放能量等数据。
② 能量等级划分:根据监测到的微震事件能量大小将微震事件划分为六个等级,依次对应的能量范围为大于106、105~106、104~105、103~104、102~103、0~102J。
③ 确定球体模型的颜色与大小:每个能量等级对应的球体模型颜色分别为红、黄、绿、青、蓝、紫,半径由大逐渐减小。通过JavaScript的if语句判断微震事件能量等级,并获取相应的颜色与半径。
④ 确定球体模型空间位置:如式(1)为微震事件在虚拟场景中的空间位置坐标表达式。其中,(x,y,z)为监测到的微震事件坐标;k为缩放比例系数;x0、y0、z0分别表示,微震模型在不同坐标轴平移的距离。
(1)
⑤ 连接创建的对象ID,并利用标签函数,调用③、④中解算出的颜色、半径、三维坐标,为生成微震事件三维模型提供数据支撑。
⑥ 关闭数据库。
具体代码示例如下:
//创建对象
width:82px;height:25px;"/>//创建功能按钮
function Sphere_model (){ //定义函数
var conn newActiveXObject("ADODB.
Connection");//创建数据库连接对象;
if (energy<100){C=E[5];F=6;DD=D[0];}……//依据能量等级,赋予事件颜色及大小;
b.setAttribute("radius",DD);……//为模型半径赋予具体数值;
var ot = document.getElementById ('root');
conn.close();
表示层是以Web网页等形式为客户端提供交互操作界面。该平台利用JavaScript与CSS联合开发简洁、规范、易懂的用户界面,实现利用鼠标方式完成数据馈送及交互控制[10],如微震事件与岩体模型的显示、隐藏,巷道及岩体的名称标记,微震信息的查询等。
以山东某矿井为例,对本文所提出方法进行实践验证。该矿首采区主要开采3煤层。3煤层位于山西组中下部,开采深度在530m~1200 m之间。由于深部岩体位于“三高一扰动”复杂地质环境,因此,3煤层开采过程中地压显现次数多,面临着矿山动力灾害的威胁。本文所研究的区域为3煤层1302工作面。1302工作面开采深度超过900 m,采场与巷道围岩失稳严重,冲击地压等灾害的突发性强。如图3标记的区域为1302工作面。
图3 工作面布置图
本文利用“参数化建模方法”生成矿山井巷系统几何模型,即通过巷道长、宽、高等参数生成闭合的巷道截面轮廓线;接着以生成的巷道截面轮廓线为基础,利用巷道中心导线点坐标,以“点构面构体”的方式生成三维巷道几何模型。由于现实中巷道存在偏斜、曲折、平直等多种形态,为了真实还原井巷系统空间位置关系及起伏变化情况,本文对偏斜、曲折等巷道,通过“差值”的方式添加巷道中心导线点数量,以保障巷道的连续性。在Python环境下利用Blender API执行井巷系统几何模型生成算法,调用数据库数据为基础模型的生成提供数据支撑,再联合Blender bpy、math、mesh等建模函数,快速生成矿山井巷系统几何模型。图4为矿山井巷系统三维模型展示图,图4(a)为以Blender为建模平台生成的矿山井巷系统模型效果图,图4(b)为将Blender生成的井巷模型以文件的格式导入至网页的展示图。
图4 矿山井巷系统三维模型
(1) 基本操作功能
基本操作功能包括:旋转、平移、缩放。用户利用基本操作功能可从任意角度、位置观察微震事件的空间位置关系、能量分布等情况。按住鼠标左键向目标位置拖动,即可对场景中的三维模型进行旋转;向下点击鼠标滚轮,用户界面鼠标指针随即发生变化,接着点击鼠标左键滑动鼠标即可操作模型平移,再次点击鼠标左键则可取消平移功能;通过滚动鼠标滚轮可将视角拉大、缩小。图5为系统用户界面以及功能菜单的展示,其中白色的模型为导入的井巷系统、工作面等模型。
图5 系统界面效果图
(2) 操作功能展示
该平台是集模型生成与信息查询于一体的系统平台,借助互联网、数据库等前沿技术以3D形式将随采掘工程诱发的微震事件直观的展示出来。该平台具体开发有如下功能:
① 表名输入、事件添加:用户通过表名输入框输入指定日期,单击事件添加功能按钮发送请求。该平台立刻以“请求—应答”的方式获取用户请求,并快速调用指定日期发生的微震事件信息生成Sphere反馈至用户界面,完成微震事件具体化、形象化展示。
② 事件撤回:事件撤回功能是基于事件添加的基础上进行操作的。主要作用是将三维场景中生成的微震事件模型撤回;
③ 名称标记、标记撤回:通过数据与文本功能结合,对巷道、工作面、硐室等添加名称标记。标记撤回是对名称标记功能的返回,撤除生成的名称标记;
④ 煤层生成、煤层撤回:煤层生成功能按钮与输入表名功能框相联系。用户根据需求,在输入表名功能框输入指定日期,点击“煤层生成”按钮发布请求,借助Apache接受、解析请求,调用煤层生成功能函数,迅速获取指定日期对应的工作面开采进尺,自动完成煤层模型中心点重新定位、长度参数调整,生成煤层模型。最后,将煤层模型反馈至用户界面进行显示。为了便于煤层内部微震事件的查看、分析,本研究对煤层进行了透明化处理,并设置有煤层撤回功能可随时去除煤层模型。如图6是对系统功能应用效果的展示,其中,与图6(a)(b)对应的操作功能分别为事件添加,煤层生成与名称标记,图6(c)是对三维模型生成等操作功能的综合展示。下述为自定义煤层生成功能模块的部分代码:
图6 系统操作功能效果展示
function CoalSeam( )//定义煤层功能函数
var a=document.getElementById("tow").value;
//获取输入的进尺数据
c=b*3.14/180;
var d=document.getElementById('root0');//功能函数与button绑定};
(3) 事件信息查询。为了在用户界面灵活、快捷地查看单个微震事件信息,该平台以小框的形式动态进行单个微震事件的信息展示。用户通过鼠标悬浮或点击微震事件模型,网页界面自动弹出信息窗口显示微震事件信息。当鼠标移至下一个目标模型时,信息小窗位置跟随目标物体改变,小框信息内容自动更新。图7为对单个微震事件信息查询的效果图,小框中显示微震事件所释放的能量大小、位置坐标信息。
图7 信息小框效果展示
(1) 基于X3DOM引擎建立了B/S模式的矿山微震数据分析与三维可视化展示平台。与C/S模式灾害预警系统相比,该平台无需安装专用客户端软件,投资、维护成本低,支持多用户异地统计、分析矿山微震数据。
(2) 利用Python和Blender开源软件实现了矿山井巷系统几何模型的自动、快速建立,真实还原了矿山井巷系统的起伏变化情况。
(3) 针对矿山微震事件监测数据冗杂多源的问题,利用X3DOM与数据库技术,将繁杂的微震监测信息转化为形象、具体的球体模型。结果表明,该方式可将微震事件空间分布、能量特征直观地表现出来,为用户提供一个强有力的灾害监测、分析平台。