APP下载

基于MapGIS的钻孔柱状图自动生成系统研发

2020-08-25张永辉

河南科技 2020年19期
关键词:二次开发

张永辉

摘 要:针对手工绘制地质图件烦琐而重复的过程,本文选用MapGIS K9作为开发平台,在Visual Studio环境中,使用C#语言和COM组件技术研发了一个计算机技术支持下的钻孔柱状图自动绘制系统。系统建成后,利用河南省煤田地质局二队所提供的补1号钻孔数据其进行了测试。结果表明,该系统能达到省时、省力和高效的目的。

关键词:MapGIS;二次开发;钻孔柱状图;自动成图

中图分类号:TP391.41文献标识码:A文章编号:1003-5168(2020)19-0013-03

Abstract: In view of the tedious and repeated process of drawing geological maps by hand, a practical program that can automatically generate histograms is developed. This paper introduces the content of system design from the aspects of design principle, overall structure, development process and development environment configuration. The development and realization process of the automatic generation system of borehole histogram based on MapGIS is introduced in detail from the aspects of system key algorithm implementation, database design and implementation, and histogram drawing. After the completion of the system, the data of No.1 borehole provided by the second team of Henan Coalfield Geological Bureau was used for testing. The results show that the system can save time, labor and efficiency.

Keywords: MapGIS;secondary development;borehole histogram;automatic mapping

钻孔柱状图是煤田必备的综合性图件之一,是根据钻孔过程中所得到的资料,按岩层新老关系的排列顺序,将岩层恢复到水平状态后绘制出的一种图纸[1]。钻孔柱状图在矿井生产前期以及整个生产过程中都起着非常重要的作用[2]。钻孔柱状图的绘制工作在20世纪80年代以前主要靠手工绘制完成,因工作量大,工序烦琐,重复过程多,人工绘制费时费力,成图质量难以保证,不仅浪费大量的人力和物力,而且成图慢、效率低,难以满足实际生产的需要[3]。20世纪80年代以后,多数柱状图是由计算机成图的,主要通过扫描矢量化完成。这样的柱状图虽然在信息共享和传递上有一定的进步,但同样存在绘制时间长、效率低、精确度差、编辑困难等问题,无法满足一些工期紧、任务重的資料处理工作的需求[4-5]。针对上述钻孔柱状图绘制存在的不足,本文选用MapGIS K9作为开发平台,在Visual Studio环境中,使用C#语言和COM(Component Object Model)组件技术[6]研发了一个计算机技术支持下的钻孔柱状图自动绘制系统,以提高绘图精度,节约工作时间,避免人为操作可能造成的错误,提高工作效率[7-9]。

1 系统的功能分析与确定

本文的研究目标是,在广泛调研的基础上,根据用户实际需求,研究并建立一个能集成多种数据源、数据采集手段方便快捷、成本低廉、作业速度快、精度高、信息丰富、兼容性高、操作简便的钻孔柱状图快速生成系统。

1.1 利用手工方式的图件绘制过程

钻孔柱状图自动生成系统是建立在手工绘图基础上的,因此,要对手工绘图过程进行分析。首先,地质技术人员需要对野外采集的数据进行简单计算,根据国家规范拟定图件绘制方案,确定比例尺。其次,根据规范绘制图头、查野外编录及其规范、根据比例尺计算中间结果、绘制线图元及点图元,再查野外编录、根据比例尺计算中间结果、绘制下一个线图元及点图元,循环至图件完成[10]。整个过程复杂且极容易出错。

1.2 系统功能确定

通过对手工绘制图件步骤进行分析,利用计算机对其过程进行了优化与归纳[11]。据此,研究者系统划分为4个模块:数据操作模块、柱状图绘制模块、图形输出模块、数据库管理模块。其中,数据操作模块主要实现钻孔数据的导入、更新、分条录入、导出等;柱状图绘制模块实现钻孔柱状图自动绘制,并对新旧钻孔柱状图进行对比;图形输出模块可实现多种图形输出格式,满足用户的不同需要;数据库管理模块主要是对标准数据库进行管理。

2 系统实现

2.1 数据操作模块的实现

数据操作模块包括导入数据、更新数据、添加数据、导出数据4大功能。其中,导入数据支持直接将Excel表格中的数据导入数据库;也可实现不同类型数据库之间数据的导入,如SQL Server或者Oracle数据导入GDB企业管理器中;还可实现相同类型数据库之间的数据导入,如GDB企业管理器中的不同数据库。更新数据功能是指对用户选择的数据进行更新。添加数据功能实现了数据的实时更新。导出数据功能可以将数据库中的多种格式数据导出为6x表文件或者TXT文件。

2.2 绘制柱状图模块的实现及需要注意的问题

2.2.1 绘制柱状图模块的实现。钻孔柱状图的绘制过程如图1所示。

整个钻孔柱状图可以看成是由一列一列组成的,每一列都是由图头和内容构成的。用户可以根据需要,将不同的列组合起来,形成不同模式的钻孔柱状图。因此,这里采用复选框的形式,用户可以根据需要,选择复选框,钻孔柱状图中就生成相应的列。

每天都在掘进的钻孔,每天都会更新钻孔数据资料。为了便于对每天的钻孔资料进行分析,对比新旧的钻孔数据,就要对新旧钻孔柱状图进行对比。该系统具有分条录入的功能,用户可以将当天更新的钻孔数据资料分条录入数据库,重新生成新的钻孔柱状图,并与旧的钻孔柱状图进行对比分析。

2.2.2 需要注意的问题

2.2.2.1 缓冲线绘制算法的实现。在绘制柱状图过程中,若分层的岩性描述文本高度超出分层高度,就会产生岩性描述文本溢出现象,为了保证钻孔柱状图的美观,在岩性柱两侧加入缓冲区,引入缓冲线。

为了保证图幅的美观,缓冲线一般要与钻孔柱状图的各个分层底部相一致。但是,在特殊情况下,允许各分层线上下浮动,缓冲线同时随之移动,尽量使缓冲线水平,减少斜缓冲线的数量。

在手工绘图过程中,可以通过目测,人为调整缓冲线;而利用计算机进行自动绘图,则无法进行目测,需要采用一定的算法进行计算来绘制缓冲线,具体过程如下。

①初始化变量[i]=0,读取数据库中的岩层真厚度数据TrueHeight[i],将其赋给rowheight[i],假如rowheight[i]小于2,将rowheight[i]赋值为2,对其累加求和,得到岩性描述文本的总高度sumrowheight,累加岩层真厚度数据,得到岩层累计真厚度sumheight。

②判断sumrowheight和sumheight的大小,假如sumheight较大,则直接绘制钻孔柱状图,否则执行③。

③初始化变量[j]=0,进行for循环,从数据库中依次读取每一层的岩层真厚度数据TrueHeight[j]。

④使用if语句,对TrueHeight[j]进行判断,假如TrueHeight[j]大于2,利用TrueHeight[j]绘制钻孔柱状图,否则将rowheight[j]赋值给TrueHeight[j],绘制钻孔柱状图。

2.2.2.2 文字换行算法的实现。在绘制钻孔柱状图的过程中,岩性描述是必不可少的。在利用计算机自动绘图时,岩性描述的行宽是固定的,这就要求必须对数据库中读取的岩性描述进行换行,具体步骤如下。

①初始化变量[i]=0,从数据库中读取岩性描述的内容row[i],比较岩性描述的文字长度length和字体高度size的乘积与岩性描述文本的长度width,若前者较大,则执行②,否则直接添加岩性描述。

②定义字符串S1,初始化变量[j]=0,以岩性描述文字长度作为循环控制变量,以(j+2)*size>width作为判断条件,确定[j]的值,将row[i]中的前[j]个字赋给字符串S1。

③定义字符串S2,根据[j]的值,将row[j]后面的字赋给字符串S2。

④根据S1和S2完成岩性描述的填写。

2.3 图形输出模块的实现

图形输出模块借助MapGIS K9的AxMxEditControl对象的StartTool方法,实现打印设置、打印预览、打印、输出光栅文件、输出PS/EPS文件、生成WEB图片等功能。

2.4 数据库管理模块的实现

2.4.1 添加数据功能实现。利用mcGDBServer类的Connect函数连接数据库,通过mcXClsTool类的CreatXCls方法,调用MapGIS对象类创建向导,在MapGIS的GDB企业管理器的指定数据库中创建对象类,用户可以根据已有的对象类的属性结构,导入新对象类中,完成属性结构的设置。

2.4.2 数据编辑功能实现。利用EditConnector控件的StartTool函数,将不同参数传入StartTool函数中,实现不同点、线、区、注记的输入、选择和修改,以及框选、圆选、多边形选择和平移功能。

2.4.3 数据导入/导出功能实现。利用mcDataConvertTool类的DataConvert函数,通过调用对象类的数据导出/导出对话框,完成数据导入/导出功能,实现简单要素类(sfcls)、注记类(acls)、要素類(fcls)、对象类(ocls)、CAD类(cadcls)、MapGIS6x(*.wb;*.wp;*.wl;*.wt)、MapGIS6x工程文件(*.MPJ)、Txt Files(*.txt)、Mif Files(*.mif)、E00 Files(*.e00)、Shape Files(*.shp)、Dxf Files(*.dxf)、数据库表格等数据格式之间的导入与导出功能。

3 系统应用

系统完成后,利用河南省煤田地质局二队所提供的补1号钻孔数据进行了测试。钻孔位于XX镇,高程为239 m,终孔深度为382.4 m。开工日期为2010年08月28日,竣工日期为2010年10月29日。试验结果表明,该系统达到了省时、省力和高效的目的。

4 结论

本文在广泛调研的基础上,系统研究了钻孔柱状图的主要构成及绘制技巧,基于MapGIS K9建立了钻孔数据基本信息数据库,借助Visual Studio .NET 2008开发环境,使用C#语言,采用组件开发技术,设计开发了基于MapGIS的钻孔柱状图自动绘制系统。该系统具有钻孔数据的信息化管理、钻孔柱状图的自动绘制、数据导入和导出等功能,为钻孔柱状图的绘制提供了便利,并在实际应用中达到了省时、省力和高效的目的。但由于时间和作者个人能力的限制,对于一些细节性的问题未进行深入研究,还有待进一步补充完善。

参考文献:

[1]赵锋,崔希民,王蕊香,等.基于ObjectARX与OLEDB的钻孔柱状图自动绘制[J].河北建筑科技学院学报,2002(4):61-64.

[2]曹博,郝文信.基于VBA的钻孔柱状图的自动生成[J].露天采矿技术,2008(z1):14-17.

[3]黄树桃,王树红,韩邵阳,等.钻孔资料管理和自动成图技术研究[J].铀矿地质,2004(1):50-53.

[4]李成.地质剖面图和柱状图的计算机自动生成技术[D].西安:西安科技大学,2004.

[5]陈文杰,应轶.第四系钻孔柱状图成图系统的设计与实现[J].地矿测绘,2007(4):14-16.

[6]张运香,吴丽蓉.基于MAPGIS二次开发的钻孔柱状图软件介绍及其应用[J].福建地质,2008(2):230-236.

[7]文广超,邓寅生.煤矿矿井防治水信息化系统的研究与实现[J].矿业研究与开发,2010(6):64-67.

[8]马江平,王志宏.基于AutoCAD的预想钻孔生成及其柱状图绘制[J].露天采矿技术,2005(6):17-20.

[9]黄树桃,王树红,韩绍阳,等.钻孔资料管理和自动成图技术研究[J].铀矿地质,2004(1):51-55.

[10]王小勇.“钻孔地质柱状图”的计算机编图应用研究[J].化工矿产地质,2007(1):33-38.

[11]解华明,陈守余.基于MAPGIS的钻孔柱状图绘制软件的编制[J].物探化探计算技术,2004(1):85-90.

猜你喜欢

二次开发
初中生物教材插图的分类及二次开发
例谈对高中数学教材中习题的二次开发
浅谈CAD软件二次开发的方法及工具
例谈课本习题的“二次开发”
二次开发教材 拓展学生思维
浅谈AM系统铁舾建模的实用二次开发
高中物理教材导入的“二次开发”
单机游戏的二次开发