基于Visual Studio+SQLite的矿井钻孔成像仪轨迹显示软件①

2020-11-24 05:46雷晓荣
计算机系统应用 2020年11期
关键词:钻孔轨迹深度

雷晓荣

(中煤科工集团西安研究院有限公司,西安 710054)

钻孔成像技术是一种利用光学成像原理的成像测井技术,经过多年的发展,该种技术由最初以观察为主的钻孔照相和钻孔摄像(钻孔电视),发展成为结合视频采集和图像处理的综合式全景摄像系统,提前观测以及了解煤矿井下地质条件能够有效掌握煤矿井下巷道的围岩、工作面的断层构造以及上覆岩层导水裂隙带等地质情况,对巷道的支护设计、巷道修复和围岩注浆加固等工作提供真实且有效数据支持[1-10].早期的钻孔成像仪只有摄像头模块,近两年加入了钻孔轨迹测量模块和深度计数模块,对地面轨迹显示和处理软件提出了新的要求:把精确的深度信息、测量点的钻孔偏差信息、钻孔璧图像信息的深度融合并借助数据库管理并兼容多种仪器成为主要的研究方向.

文章借助软件工程的设计理念,给出了软件的总体架构设计框图,并基于Visual Studio+SQLite 技术实现了矿井钻孔成像仪轨迹显示软件.

1 钻孔成像仪及数据源分析

1.1 钻孔成像仪组成及工作原理

CXK12 矿用本安型钻孔成像仪由CXK12-Z 矿用本安型钻孔成像仪主机、CXK-5S 矿用本安型钻孔深度计数器、CXK-26T 矿用本安型钻孔成像仪探头、CXK-42T 矿用本安型钻孔成像仪探头、煤矿用聚乙烯绝缘编织屏蔽聚氯乙烯护套通信软电缆、聚乙烯绝缘铜网屏蔽聚氨酯护套综合抗拉电缆组成,总体组成框架如图1所示.

图1 成像仪组成框架

图1中,深度计数器的核心是光电编码器.测量时探头通过电缆送入钻孔内部,探头进入钻孔的深度可通过间接测量进入钻孔内部的电缆长度进行测量.仪器中将深度计数器和滚轮相结合,输送电缆时通过计数器滚轮连接即可实现对钻孔深度的测量;主机包括嵌入式OMAP4460 模块[11]、显示模块、深度采集模块和电源模块,搭载Android 系统实现采集的轨迹数据和图像数据井下及时处理;探头由电子罗盘、摄像模组和光源组成,电子罗盘用于测量包含方位角、倾角、工具面向角参数的姿态信息,摄像模组记录钻孔的图像和视频信息;探头测量的姿态信息和图形、视频信息通过特制的电缆传输主机进行处理和存储.该仪器具有体积小、重量轻、功耗低以及便携性强等优点.

1.2 钻孔成像仪输出数据源分析

CXK12 矿用本安型钻孔成像仪进行一次测量后包含的数据:钻孔轨迹测量数据、钻孔录制视频数据、钻孔视频展开图片元数据3 部分.

(1)钻孔轨迹测量数据,该数据的保存格式为TXT 格式(文本文件),数据按照FileStream(文件流)写入,写入顺序:序号、深度、倾角、方位角、工具面向角,每输出一组上述姿态信息后加一个回车换行符,重复上述写入方式直到结束.

(2)钻孔视频展开图片元数据,该数据为一系列PNG 格式图片的组合,每个图片的命名规则为初始展开钻孔深度数据和结束展开钻孔深度数据的组合,中间加“_”组成,类似“0.5_0.9”的组合,0.5 和0.9 严格对应(1)中0.5 米和0.9 米出的钻孔轨迹测量数据(方位角、倾角、工具面向角).

(3)钻孔录制视频数据,该视频为通用的视频格式,常见的视频播放器可以打开,本文所述的软件不做处理.

2 软件总体架构设计

软件架构设计遵从软件工程的设计理念,采用自顶向下的分层设计策略,根据成像仪数据处理涉及的相关数据和客户方的实际需求导向,在软件需求层次化划分的基础上对软件功能进行模块化的细分,各业务模块遵从“高耦合、低内聚”的原则.最终设计的软件总体架构包括:数据库、数据管理模块、图形绘制模块、数据处理模块和柱状图5大模块,如图2所示.

图2 软件功能框架

每个功能模块根据业务需求和业务类别细分为不同的细分子功能.

3 软件实现

3.1 数据库设计及实现

为了便于矿方进行数据管理和生产报告编制,CXK12矿用本安型钻孔成像仪测量的钻孔轨迹测量数据和钻孔视频展开图片元数据设计采用SQLite 数据库作为数据存储载体.

SQLite 是一款轻型的遵守ACID 的关系型数据库管理系统,开源免费与支持嵌入式,它占用资源非常的低,支持多数SQL92 标准:多数据表、事务、索引、触发、视图及一系列应用程序接口,其所有信息包含在一个文件内,核心引擎不依赖第三方软件,直接编译链接后即可使用[12].

分析1.2 节中钻孔成像仪数据源并结合SQLite 语法的基础上,每个钻场设计一个DataTable,数据字段设计如表1所示.

表1 数据库字段设计

SQLite 中存取图片采用MemoryStream 的方式,保存和读取图片的关键代码如下:

//保存图片

SQLiteParameter myPara=new SQLiteParameter("@myPic",DbType.Binary);

MemoryStream myStr=new MemoryStream();

byte[] byData=new Byte[myStr.Length];

myStr.Position=0;

myStr.Read(byData,0,byData.Length);

myPara.Value=byData;

myStr.Close();

//读取图片

MemoryStream myStr=new MemoryStream(sqlReader["myPic"] as byte[]);

myStr.Close();

3.2 软件功能实现

软件采用微软Visual Studio 2013 集成开发环境Winform 架构C#语言开发,编译依赖项为.NET Framework 4.5.1,SQLite 版本为:sqlite-netFx451-setupbundle-x86-2013-1.0.110.0,设计完成的软件功能实现如下:

(1)数据管理模块,实现了Txt 数据文件导入、XML(eXtensible Markup Language)数据文件导入、Excel 数据文件导入、Excel 导出和数据录入功能,如图3所示.其中Txt 格式数据为西安院成像仪姿态信息,采用System.IO 下的Stream 流同步方式读取;XML 格式数据和Excel 格式数据为其他厂家的数据(按照约定的数据格式导入软件),XML 格式数据采用System.Xml下的XmlDocument 实现数据读取和写入,Excel 格式数据采用COM 组件Microsoft.Office.Interop.Excel 进行读取和写入;数据录入为把导入的姿态信息、经过重新计算的偏差信息、图片源数据导入到SQLite 数据库中,如3.1 节中所述.

图3 数据管理界面

(2)数据处理模块,实现了地磁偏角设置、开孔参数设置(设计开孔倾角和方位角)、轨迹计算和坐标转化功能.地磁偏角设置当地的地磁偏差用于钻孔轨迹计算,以便把基于磁方位角的钻孔偏差转化到基于地理方位角的钻孔偏差,便于矿方把生成的偏差信息加载到矿区地质图.轨迹计算公式如下:

式中,θi、θi−1分别为当前测量点和上一次测量点的倾角:αi、αi−1别为当前测量点和上一次测量点的方位角;Ai为当前测量点的测量深度;Ai−1为上一次测量点的测量深度;Xn为 当前测点在X 轴上的累计投影长度;Yn为当前测点的累计左右偏差;Zn为当前测点的累计上下偏差[13];开孔参数设置钻孔的开孔倾角和方位角,根据开孔参数可以计算出设计轨迹和实际测量轨迹的偏离距离,如图4中的显示效果.

图4 图形绘制界面

(3)图形绘制模块,实现了钻孔轨迹图的二维和三维绘制及相关的操作,生成的二维图和三维图如图4(a)和图4(b)所示.

二维图采用Visual Studio 2013 自带的MSchart 组件绘制,添加两个Series 分别表示设计轨迹和实际轨迹,Chart Type 设计为Line.图4(a)上下两幅图分别表示水平面图和剖面图,其中曲线表示实际钻孔轨迹,而直线表示设计钻孔轨迹,二维轨迹图右上角红色字为设计轨迹和实际轨迹的偏离距离.

三维图绘制采用OpenTK(OpenGL 图形库的C#封装库)图形库绘制,关键绘图代码片段实现如下:

GL.BlendFunc (BlendingFactorSrc.SrcAlpha,BlendingFactorDest.OneMinusSrcAlpha);

GL.Enable (EnableCap.LineSmooth);

GL.Hint (HintTarget.LineSmoothHint,HintMode.Nicest);

GL.Begin (PrimitiveType.LineStrip);

GL.Enable (EnableCap.DepthTest);

GL.Enable (EnableCap.Blend);

GL.Clear (ClearBufferMask.ColorBufferBit |ClearBufferMask.DepthBufferBit);

Vector3 vec=new Vector3();

vec.X=yy+y_fact * float.Parse (zy[i].ToString());

vec.Y=xx+x_fact * float.Parse (sd[i].ToString());

vec.Z=zz+z_fact * float.Parse (sx[i].ToString());

GL.Vertex3 (list[i]);

其中,Vector3 表示OpenTK 语法中的三维向量,包含X、Y、Z 3 个坐标;GL.Vertex3 直线绘制语句.

(4)柱状图模块,实现了图形文件浏览、生成柱状图、图形放大和缩小、取消缩放图形和图形导出等功能.柱状图的生成按照1.2 中数据源的分析进行解析,对于数据源中的每张图片进行边界特征点的提取,根据生成的特征描述符进行特征匹配,然后采用加权平滑算法解决了图片拼接时缝隙问题(算法的优化和平滑系数的选择决定了拼接的质量),最后对所有完成拼接的图片进行图像边界融合和钻孔深度匹配[14-16],图5中纵坐标表示钻孔深度(向下递增,单位:米),横坐标E、N、S、W、E 表示圆形柱状图的展开方向:东、北、南、西、东.

图5 柱状图界面

4 实际应用

该软件开发完成后,利用CXK12 矿用本安型钻孔成像仪进行了室内模拟钻孔测量验证(直径55 mm 的PVC 管道)、禾草沟煤矿水文观测钻孔、榆林某在建煤矿掉钻钻孔打捞作业观察、阳煤集团某矿岩性观察等大量的室内外测量、处理验证.典型的应用如禾草沟煤矿水文观测钻孔,该钻孔为地面垂直钻孔,手工下放铠装线缆的方式进行测量,每隔0.5 m 测量一次,总测量钻孔深度64 m.测量数据导入文章中开发的软件后生成的钻孔柱状图如图6所示.

图6 实际柱状图界面

从图6可以明显看出岩层的分界线和孔壁的裂缝,图像中拼接缝处有黑色的分界线但不影响钻孔的观察效果.钻孔柱状图的实时无缝拼接也是下一步的研究重点.

5 结论

(1)文章在详细分析钻孔成像仪数据源的基础上,从软件工程的思路出发,给出了软件的整体架构设计;

(2)基于Visual Studio+SQLite 设计了兼容多款钻孔成像仪的轨迹显示软件,并详细介绍了钻孔姿态数据和图形数据的多源数据管理,钻孔轨迹二维、三维图生成和图形操作,钻孔柱状图的生成和操作等功能的详细实现流程和关键代码;

(3)大量的室内模拟试验和矿井实际应用表明,该软件功能设计合理、操作简单明了、处理速度块,作为几款成像仪的配套软件已服务于国内多个矿井,取得了一定的应用效果.

猜你喜欢
钻孔轨迹深度
突出煤层钻孔层位优选及其影响因素
水力割缝钻孔在常村煤矿的应用
不同钻孔间距对瓦斯抽采的影响研究
解析几何中的轨迹方程的常用求法
四增四减 深度推进
深度思考之不等式
提高钻孔灌注桩成桩质量的研究
轨迹
轨迹
简约教学 深度学习