基于计算机技术智能生成地质图图例的方法研究
2020-07-29李如山高孝敏垢元培于孝民王佳宏
李如山,杜 雷,高孝敏,垢元培,于孝民,王佳宏
(1.河北省地矿局第二地质大队,河北 唐山 063000)
(2.唐山中地地质工程公司,河北 唐山 063000)
0 引言
长期以来,不管是老旧地质图的电子化还是新成果地质图的编绘,图例的修编工作是地质图一项重要的环节;现阶段,随着计算机技术的快速发展,图例的修编制作手段逐渐采用计算机辅助人工识别编绘,使用的绘图软件Surfer、MapGIS、AutoCAD 等手工绘图功能强大,但图例制作工作要求细致且繁琐,易出现人为遗漏或错误。近年部分研究者对MapGIS、AutoCAD、ArcGIS 等软件进行了图例制作功能的二次开发及应用,其绘制图例也较为繁琐,而基于MapGIS软件进行的二次开发实现了图例自动制作的功能,但软件二次开发的平台环境也局限了其图例图元属性开发,因此,从计算机底层数据层面实现制作图例是解决此类问题的一个解决方案。笔者梳理了地质图图例编绘要点,在windows 10 操作系统环境下,基于Access 数据库,建设项目数据库,使用visual studio 2017 编程平台,采用C#编程语言编写了相应代码,通过图元属性数字归一化,可实现一键智能生成图例。本次笔者从地质图图例制作层面,首先简述数据库建设,而后介绍一键生成图例的制作流程及主要工作思路。
1 数据库建设
数据库采用Access 数据库。在参照现行国家、国际标准及经验下,编制地层、颜色等字典,建立类型表、地体表、颜色表等,形成共用数据库;分析地质体-内在关系-图元数据之间的空间转换纽带联系,按不同的地质信息类别建立点、线、面数据表,将项目地表地质界线、钻孔、矿体等空间和地质属性数据分别输入数据库,建立项目数据库。基于建立的共用数据库和项目数据库的联合使用模式,从而将项目地质信息转化保存到数据库文件。
2 智能生成图例
在按照相关规程建设底层数据库的基础上,编写程序读取数据库中的地质信息,通过检索筛选空间属性信息,经计算确定图例区配置位置;对图元信息进行去重,按照制定的图例排序原则排序并存储;根据获取的图例区位置配置信息和图例存储信息,程序实现生成图例可视化(见图1)。
图1 图例编绘流程
2.1 提取图元信息
读取数据库图形图元中的颜色、点、线等字段数据存储内存中。读取和存储代码简述如下:
OleDbDataReader rs = cmd.ExecuteReader();//读数据库
zdG_LX.Add(lx.Cls, lx)//将数据加入到字典中
2.2 检索图形范围
检索内存中存储的图形图元信息,筛选出空间属性信息,将图形四角坐标信息(见图2)标记并存储于min(x,y)、max(x,y)中,作为图例位置计算的依据。计算图形范围坐标代码简述如下:
图2 图形信息结构图
double Xmin = NExmin * scale;
double Xmax = NExmax * scale;
double Ymin = Can_wide - scale * NNymin;
double Ymax = Can_wide - scale * NNymax;
2.3 检索图例与排序
通过不同的关键字段对各类图元信息进行检索,去除相同的图元类信息,得到加载图形图元种类及数量,即图例的数量;按照图例顺序结构(见表1),对去重后的图例信息进行排序存储。去重和排序代码简述如下:
List
dxhR.Sort();//排序
表1 图例顺序结构表
2.4 配置图例绘图区
根据图形占用位置范围(min(x,y)、max(x,y))和图例数量,计算图例区与图形区边界距离并分配图例的排列位置,等距放置图例,使之排列整齐美观。代码简述如下:
//TL_row 为图例行数
int TL_row = (int)(Ymin - Ymax - 260) / 220;
//TL_total 为图例中的总个数
int TL_total = dmhR_number + dxhR_number +CZ_number + zkhR_number + pmxhR_number + xdhR_number;
//TL_colum 为图例中的列数
int TL_colum = TL_total / TL_row + 1;
2.5 生成图例
根据图例类型及存储信息,提取图例类数据库内相应颜色、符号、线型、线宽等信息,按图例框尺寸及文字规格显示生成在图例区,保持图例框内颜色、文字(矿种、探矿工程文字、产状等)等要素与加载范围图形信息一致,生成图例如图3。生成图例代码简述如下:
DL_ReadData.zdG_LX.TryGetValue();
GeoPoint.Kjing(canvas,Point,30);
textBlockTL2.Text = g_LXB.Name;
图3 生成图例示例
选择图例文字输出控件时,比选了Textbox 和Textblock(见表2),根据两种控件功能特点,选用Textbox 控件用于图例框右侧的文字说明,Textblock控件主要用于显示图例框内文字。
表2 Textbox 与Textblock 控件需求功能对比分析
3 结束语
地质图是地质工作总结及成果组成的重要部分,而图例是认识地质图内容必不可好的辅助工具,帮助读懂地质图涵盖的地质信息。为提高工作效率,减少人为误差,不受绘图软件二次开发环境的局限性,基于底层开发技术开发了该程序,并采用虚拟地质图形数据进行测试模块,实现一键智能生成图例,得到较好效果。该项模块主要特点:(1)不受绘图软件二次开发环境的局限;(2)一键生成图例,操作简单,避免多步手动操作出现人为错误,提高制作图例的准确性;(3)根据加载图形信息准确配置图例区;(4)检索加载的图形区信息,图例各项显示信息可与之保持一致。