计算机系统应用  2020, Vol. 29 Issue (11): 255-259   PDF    
基于Visual Studio+SQLite的矿井钻孔成像仪轨迹显示软件
雷晓荣     
中煤科工集团西安研究院有限公司, 西安 710054
摘要:针对煤矿井下多款钻孔成像仪没有地面数据处理软件的现状, 在分析钻孔成像仪输出数据源的基础上, 给出了软件总体架构设计, 基于Visual Studio+SQLite设计了一款兼容多款仪器的钻孔成像仪轨迹显示软件. 该软件实现了钻孔姿态数据和图形数据的多源数据管理, 钻孔轨迹二维、三维图生成和图形操作, 钻孔柱状图的生成和操作等功能. 应用结果表明: 该软件提供了友好的人机界面, 具有较高的应用价值.
关键词: Visual Studio    SQLite    钻孔    成像仪    轨迹显示    
Trajectory Display Software of Drilling Imager in Coal Mine Based on Visual Studio+SQLite
LEI Xiao-Rong     
Xi’an Research Institute, China Coal Technology and Engineering Group Crop, Xi’an 710054, China
Foundation item: National Key Research and Development Program of China (2017YFC0804105); National Natural Science Foundation of China (41807190); Special Fund for Science and Technology Innovation and Entrepreneurship of Tiandi Co. Ltd. (2018-TD-MS072, 2019-TD-ZD003)
Abstract: Aiming at the fact that there is no data processing software for multiple drilling imagers in coal mine, the overall architecture design of the software is proposed, based on the analysis of output data source of drilling imager, a trajectory display software for drilling imager compatible with multiple instruments is designed based on Visual Studio+SQLite. The software realizes multi-source data management of borehole attitude data and graphic data, 2d and 3d drawing generation and graphic operation of borehole trajectory, generation and operation of borehole histogram, etc. The application results show that this software provides friendly human-machine interface and has high application value.
Key words: Visual Studio     SQLite     drilling     imager     trajectory display    

钻孔成像技术是一种利用光学成像原理的成像测井技术, 经过多年的发展, 该种技术由最初以观察为主的钻孔照相和钻孔摄像(钻孔电视), 发展成为结合视频采集和图像处理的综合式全景摄像系统, 提前观测以及了解煤矿井下地质条件能够有效掌握煤矿井下巷道的围岩、工作面的断层构造以及上覆岩层导水裂隙带等地质情况, 对巷道的支护设计、巷道修复和围岩注浆加固等工作提供真实且有效数据支持[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-setup-bundle-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)数据处理模块, 实现了地磁偏角设置、开孔参数设置(设计开孔倾角和方位角)、轨迹计算和坐标转化功能. 地磁偏角设置当地的地磁偏差用于钻孔轨迹计算, 以便把基于磁方位角的钻孔偏差转化到基于地理方位角的钻孔偏差, 便于矿方把生成的偏差信息加载到矿区地质图. 轨迹计算公式如下:

$ {{{X}}_n} = \sum\limits_{i = 1}^n {\Delta {L_i}} \times (\cos {\theta _i} \times \cos ({\alpha _i} - {\alpha _0}) + \cos {\theta _{i - 1}} \times \cos ({\alpha _{i - 1}} - {\alpha _0})) $
$ {{{Y}}_n} = \sum\limits_{i = 1}^n {\Delta {L_i}} \times (\cos {\theta _i} \times \sin ({\alpha _i} - {\alpha _0}) + \cos {\theta _{i - 1}} \times \sin ({\alpha _{i - 1}} - {\alpha _0})) $
$ {{{Z}}_n} = \sum\limits_{i = 1}^n {\Delta {L_i}} \times (\sin {\theta _i} + \sin {\theta _{i - 1}}) $
$\Delta {{{L}}_i} = ({A_i} + {A_{i - 1}})/2$

式中, ${\theta _i}$ ${\theta _{i - 1}}$ 分别为当前测量点和上一次测量点的倾角: ${\alpha _i}$ ${\alpha _{i{\rm{ - }}1}}$ 别为当前测量点和上一次测量点的方位角; ${{{A}}_i}$ 为当前测量点的测量深度; ${{{A}}_{i{\rm{ - }}1}}$ 为上一次测量点的测量深度; ${X_{{n}}}$ 为当前测点在X轴上的累计投影长度; ${Y_{{n}}}$ 为当前测点的累计左右偏差; ${{{Z}}_{{n}}}$ 为当前测点的累计上下偏差[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)大量的室内模拟试验和矿井实际应用表明, 该软件功能设计合理、操作简单明了、处理速度块, 作为几款成像仪的配套软件已服务于国内多个矿井, 取得了一定的应用效果.

参考文献
[1]
王川婴, 邹先坚, 韩增强. 基于双锥面镜成像的钻孔摄像系统研究. 岩石力学与工程学报, 2017, 36(9): 2185-2193.
[2]
周媛媛, 罗斌, 周辉, 等. 钻孔摄像机器人视频序列拼接. 云南民族大学学报(自然科学版), 2018, 28(1): 81-87.
[3]
于钟博, 刘延欣, 武宇亮, 等. 基于钻孔成像技术与数值模拟的“两带”高度研究. 煤矿安全, 2019, 50(6): 201-204.
[4]
雷晓荣. 回转钻进随钻测斜仪的研制及应用. 煤田地质与勘探, 2015, 43(3): 118-121. DOI:10.3969/j.issn.1001-1986.2015.03.025
[5]
雷晓荣, 程建远. YZG05/30矿用钻孔轨迹记录仪及其应用. 煤田地质与勘探, 2015, 43(4): 120-122. DOI:10.3969/j.issn.1001-1986.2015.04.027
[6]
司林坡. 全景钻孔窥视仪在水压致裂法地应力测试中的应用. 煤矿开采, 2011, 16(2): 97-101. DOI:10.3969/j.issn.1006-6225.2011.02.031
[7]
孙辉, 李桂臣, 卫英豪, 等. 物探法结合钻孔窥视在岩体结构探测中的应用. 煤矿安全, 2014, 45(4): 141-144.
[8]
郝传波, 张帅帅, 肖福坤, 等. 应用地质雷达和钻孔窥视研究顶板裂隙分布规律. 中国矿业, 2016, 25(6): 95-99. DOI:10.3969/j.issn.1004-4051.2016.06.022
[9]
康红普, 司林坡, 苏波. 煤岩体钻孔结构观测方法及应用. 煤炭学报, 2010, 35(12): 1949-1956.
[10]
聂百胜, 张辉, 崔树江, 等. 前视钻孔窥视视频提取钻孔信息的方法与应用. 煤炭学报, 2016, 41(5): 1316-1322.
[11]
王博. 基于Android系统的多功能矿用本安型钻孔成像仪设计与应用. 煤炭技术, 2019, 38(5): 151-154.
[12]
SQLite. About SQLite. https://www.sqlite.org/about.html. (2019-10-11)[2019-12-10].
[13]
雷晓荣, 程建远, 陈龙, 等. 螺旋钻进随钻轨迹测量技术与装备研究. 煤炭科学技术, 2016, 44(9): 140-144, 154.
[14]
张炳文, 曹茂永, 张维, 等. 多摄像头侧视钻孔全景图像拼接. 广西大学学报(自然科学版), 2017, 42(3): 1092-1098.
[15]
张维, 曹茂永, 张炳文. 基于Harris多摄像头孔壁图像的全景拼接技术. 山东科技大学学报(自然科学版), 2018, 37(3): 90-96.
[16]
高炜. 基于前视钻孔图像的特征提取分类及全景图合成研究[硕士学位论文]. 青岛: 山东科技大学, 2017.