邹艳红, 刘 雯, 黄 望, 陈佳音, 毛先成
(1.有色金属成矿预测与地质环境监测教育部重点实验室,湖南长沙410083; 2.中南大学地球科学与信息物理学院,湖南长沙410083)
面向矿床三维动态建模的地质勘探数据库增量更新方法
邹艳红1,2, 刘雯1,2, 黄望1,2, 陈佳音1,2, 毛先成1,2
(1.有色金属成矿预测与地质环境监测教育部重点实验室,湖南长沙410083; 2.中南大学地球科学与信息物理学院,湖南长沙410083)
针对深部找矿过程中地质勘探数据增加和动态三维地质建模需要,提出了一种基于版本管理的矿床地质勘探数据库增量更新方法。在分析矿床地质勘探工程数据与三维地质模型映射关系的基础上,建立时序版本和建模版本作为矿床勘探数据增量更新版本标识。针对矿床地质勘探数据库增量更新的版本管理,提出了一种扩展的有向无环图版本管理模型,设计了基于关系数据库的版本管理方法并探讨了其实现过程。以安徽铜陵凤凰山矿床地质勘探数据为例,基于SQL Server数据库系统建立了实例矿床地质勘探版本数据库,以C#编程实现了实例矿床勘探数据库的版本管理,包括版本的建立、查询与显示等功能,通过勘探工程增量更新版本数据建立了三维矿体的动态修正模型,证实了方法的可行性与有效性。
矿床勘探数据;增量更新;版本数据库;三维地质建模;动态修正;安徽铜陵
深部找矿是三维空间找矿信息的综合研究工作(叶天竺等,2007),在深部找矿中要着重研究矿化网络由浅向深的垂向变化趋势(翟裕生等,2004)。随着计算机和信息技术的发展应用,三维地质建模对矿床地质体形态构造研究、矿体储量估算、深部资源三维可视化预测等都具有非常重要的意义。危机矿山或老矿山在历年的勘探和开采过程中,已积累了丰富的矿床地质勘探资料,随着近年来矿山数字化建设的开展,许多矿业部门已基于关系型数据库系统建立了综合地质数据库或找矿勘探专题数据库,这些原始资料和数据库为矿山三维地质建模和新一轮深边部找矿工作提供了数据基础。
然而,在找矿勘探过程中,对矿床的认识过程不可能一次完成,随着勘探工作的逐步开展和资料的不断积累,对矿床的认识在不断深化,勘探必须依照由粗到细、由表及里、由浅入深、由已知到未知、先普查后勘探这一循序渐进的原则进行工作(侯德义,1990)。因此,可以将矿床勘探渐进过程理解为在已有勘探数据的基础上不断补充增量数据的过程。随着矿床勘探工作的推进,如何基于矿床勘探增量数据,快速建立三维地质模型或在原有模型的基础上进行修正,是目前三维地质建模技术在找矿勘探领域应用中的难点问题。
目前,地质体三维建模与可视化技术已日趋成熟并走向实用化,涌现了大量的三维地质建模软件,代表性的有国外的Datamine、Surpac、Micromine、Vulcan、GOCAD、EarthVision以及国内的3DMine、Dimine、QuantyView、Minexplorer等软件(李青元等,2013)。采用三维地质建模软件,针对矿床资源勘探和成矿预测,我国许多学者开展了矿床地质体三维建模与隐伏矿体三维可视化预测研究(陈建平等,2007,2014;毛先成等,2009,2010;肖克炎等,2010,2012;薛林福等,2014;袁峰等,2014;史蕊等,2015)。这些研究基于矿山历年来的勘探资料,建立地质勘探数据库,实现了地质体的三维实体(线框)建模推断,建立的三维地质体模型能很好地应用于地质体形态分析或矿体展布与定位规律分析,但这些研究很少考虑三维地质体模型的动态更新问题。
随着新一轮危机矿山深边部找矿勘探工作的开展,面向深部资源勘查的三维地质建模工作需要针对矿床地质勘探数据的增量更新考虑三维动态地质建模与修正,要实现三维地质建模动态更新,首先要对矿床地质勘探数据库增量更新方法进行研究。由于不同时段的地质勘探数据集对应着不同三维地质体模型,每个地质勘探数据集可以看作是从地质勘探数据库中析取的一个版本。因此,针对矿床深部资源勘查中三维地质建模动态更新问题,提出了一种基于关系数据库的矿床勘探数据版本管理方法,开展矿床勘探版本数据库的建立与实现研究,探索从矿床勘探数据库增量更新到三维地质建模动态修正映射过程。
1.1矿床勘探工程数据与三维地质模型的映射关系
矿床地质勘探数据是矿床三维地质建模的基础。地质勘探数据来源于矿床各项勘探工程,如钻孔、坑道、探槽、浅井等,所涉及的地质数据种类繁多,包括综合地质图、地质勘探剖面图、中段地质图等各类地质图件和地质编录、勘探样品分析等各类报告和数据表,可按图件、表格、文档的形式保存在关系数据库中。而矿床勘探工程(如钻孔、坑道、探槽等)在几何形状上均为线状,均具有工程位置、轨迹形态、地质编录、样品分析等数据,具有相同或相似的数据构型,可用二维表格来表示。这些勘探工程数据是三维地质建模中地质分界、矿体圈定的主要数据来源,由于其相似的数据构型,同时考虑三维地质建模软件的数据需求,一般统一抽象为孔数据结构(Houlding, 1994)。孔数据包括孔口坐标数据(开孔点坐标)、孔迹测量数据(测斜数据)、地质编录数据、样品分析数据。孔数据以二维表的形式保存在关系数据库中,方便向三维地质建模软件数据转换与输出。
矿床三维地质建模是指利用计算机对与矿床形成和分布相关的各种地质对象的几何形态和空间分布进行三维描述,可分为地质体的空间结构建模和属性建模。模型数据结果则保存了地质对象模型要素的关系描述和三维可视化表达,从数据的输出看,可将三维地质模型数据分为地质模型(GeoModel)与地质图(Geo3DMap) 2个部分:地质模型存储地质现象及现象之间关系的数据,地质图存储地质模型三维可视化相关的数据(李青元等,2015)。
因此,矿床三维地质建模过程实质上是由地质勘探数据库通过数据析取,获得地质对象数据集,再通过三维地质建模映射为相应的矿床三维地质模型的过程,模型结果保存在三维地质模型库中(图1)。
图1 矿床勘探工程数据与三维地质模型的映射过程Fig.1 Mapping relationship between geological exploration engineering data and 3D geological model
显然,如果从所有的原始勘探资料中提取地质对象数据,则地质对象数据集与相应的矿床三维地质模型将保持一一对应的关系。但是随着勘探工作的开展,获取的各种地质体数据逐步增加,原有的地质对象数据集与三维地质体模型必将发生更新变化,同时考虑可能的各种地质条件约束,地质建模数据的选取并非只是简单地在原始数据集上累加增量数据。因此,在勘探工作逐步开展过程中,可以把地质对象数据集看成若干具有时序特征和属性特征的地质数据集,在不同地质对象增量数据的基础上,需要从不同的地质对象数据集中选取数据,构造不同时段或不同地质条件约束下的三维地质体模型,地质对象数据集与三维地质模型之间将出现多对多的映射关系。如图2所示,1个三维地质模型可能对应着多个地质对象数据集。
图2 三维地质模型与地质对象数据集的映射关系示例图Fig.2 Sample diagram showing mapping relationship between 3D geological model and geological object data set
1.2矿床勘探数据增量更新版本标识
版本是指一个对象可识别的状态,数据库的版本管理在工程数据库领域和空间数据库领域应用研究比较广泛(陈矗,2004;张亚军等,2011)。数据版本在概念上可以理解为数据的不同状态,一方面,不同历史时期的数据状态可能是不同版本;另一方面,同一时期如果数据出现增删变化等操作也可视为不同的数据版本。
在矿床研究中,面向深部矿产资源勘查,在矿床勘探的某一时段(说明:文中所说的矿床勘探时段不是按勘探工作的阶段划分,而是根据建模需要由用户自行确定),可能是勘探过程的任一时刻,希望能直观地快速展示三维地质体结构和矿体形态,这就需要从地质勘探数据库中选取地质对象数据集构建三维地质体模型,同时将每个数据集和对应的模型结果保留一个版本,以便进行对比研究。
考虑不同时段的矿床勘探数据既具有明显的时间特征,也具有三维空间位置特征和其他属性特征,针对矿山地质勘探过程的推进,不仅要根据地质对象增量数据进行三维地质建模更新,同时一些三维地质体建模更新还需考虑空间上地质条件的约束,从空间维度来选取数据。这些数据生成的时间先后可能涉及不同的时段,但是用来生成同一个地质体模型。因此,针对矿山地质勘探过程中不同时段三维地质建模和不同地质条件约束下三维地质建模的需要,提出采用时序版本和建模版本分别对地质勘探数据库中的地质对象数据集进行版本标识。
时序版本是从矿床地质勘探数据库中提取的不同时间段的数据集合,1个时间段的所有数据为1个时序版本,每个时序版本都是独立的,不存在数据上的继承关系,只存在时间上的顺序依赖关系。建模版本是指从不同时序版本或依据空间不同地质条件约束选取的地质对象建模数据集合,建立1个三维地质体模型选取的实验数据为1个建模版本,这些数据可以来自于不同的时间段,也就是说建模版本的数据可以来自于不同的时序版本数据,也可以集成已有的不同建模版本数据。
建模版本和时序版本数据集之间的关系错综复杂,可能拥有相同的数据部分,也存在相异的数据部分。图3所示为一种时序版本与建模版本标识的示例关系,图中勘探时段1、勘探时段2、勘探时段3的划分并非按照文献(侯德义,1990)中的勘探阶段来划分,而是考虑实际建模需求,根据勘探工作的时间先后自行划分。勘探时段的跨度也不是固定不变的,而是根据三维建模的需要,当获取了新的勘探数据后可将新的勘探数据作为1个时序版本,或者与后继的勘探数据一起组成1个时序版本。
图3 地质勘探数据时序版本与建模版本标识关系示例图1-时序版本;2-建模版本Fig.3 Sample showing identification relation between sequential version and modelling version for geological exploration data
2.1矿床勘探数据库的版本模型
目前,针对矿床地质勘探数据的管理,矿业部门一般是基于市面上的关系数据库系统Access、SQL Server、Oracle等建立综合地质数据库或地质勘探数据库。但面向事务的关系型数据库系统只能保存单版本数据,也就是说,当对数据库中数据进行增加、修改和删除操作时,原来的数据随即更改,不能保存。
版本化的方法是实现多版本、多用户、多时态数据管理模式的重要手段,在地理信息系统中应用较多(夏宇等,2007;陈晓明,2008)。近年来,Le等(2014)将版本管理应用到地质数据库系统中,通过增加和修订版本表标识地质体表面三角网模型版本的逻辑结构,并在基表上增加修订版本字段来标识数据属于哪个修订版。
本次研究的版本模型是矿床勘探数据库中版本的组织方法。目前,版本管理模型常见的有下列3种(图4)(叶飞跃,1998)。
(1) 线性版本管理模型(图4a)。它以版本出现的先后次序进行排列,从版本结构上看,1个版本只能生成1个子版本,1个子版本也只能由1个父版本生成。
(2) 树型版本管理模型(图4b)。这种方法1个版本可生成多个子版本,但1个子版本只能由1个父版本生成。
(3) 有向无环图版本管理方法(图4c)。该方法支持多继承,1个版本可生成多个子版本,1个子版本也可以根据多个已生成的父版本生成。
图4 3种常见的版本结构Fig.4 Three common version structures(a) linear version structure; (b) tree-type version structure; (c) version structure of directed acyclic graph
从上述3种版本管理方式可以看出,线性版本结构无法管理建模版本数据,因为建模版本数据可以来自1个或多个时序版本的数据,也可以继承以前多个建模版本的数据;树型版本结构尽管满足1个时序上版本能生成多个建模版本数据,但无法满足1个建模版本可以有多个父节点;有向无环图版本结构在树型版本结构基础上能满足1个版本可以有多个前驱版本,因此在结构上最接近本次研究提出的地质勘探数据增量更新版本管理形式。但是,由于数据的时序版本之间不存在依赖性,数据互相独立,因此在有向无环图版本形式的基础上,针对矿床勘探数据库版本管理,提出扩展的有向无环图版本管理方法(图5)。
图5 扩展的有向无环图版本结构1-根版本;2-继承版本;3-时间依赖;4-继承依赖Fig.5 Extended directed acyclic graph version structure
该版本结构拥有有向无环版本模型的特点,支持多继承,1个继承版本可以有多个前驱版本,1个前驱版本可以有多个继承版本,类似于文中的建模版本;同时这种扩展的有向无环版本结构中可以有多个按时间先后并排的独立根版本节点,类似于文中的时序版本节点,时序版本数据互相独立,各版本节点按时间的先后排序。
2.2矿床勘探数据库版本管理实现
2.2.1版本数据组织根据时序版本(TVER)和建模版本(MVER)数据标识关系,按照本次研究提出的扩展的有向无环图版本管理方法,面向动态三维地质建模的时序版本和建模版本数据组织如图6所示。根据建模需要确定勘探时段,按时段先后顺序建立时序版本,建模版本只能在时序版本或已建立的建模版本上构建。
图6 时序版本(TVER)和建模版本(MVER)数据组织示意图1-时序版本;2-建模版本;3-继承关系;4-时间流Fig.6 Sketch showing data organization of sequential version and modelling version
在以前的综合地质数据库建立中,通过构建地质数据分类体系,采用树型结构组织和管理地质数据,将地质数据分成不同类,表格、图件、文档或以独立形式直接归属于某一类,或相互组成集合以勘探报告形式归属于某类(毛先成等,2003;邹艳红等,2004)。同样,引进版本管理机制后,地质勘探阶段的所有分类或报告、图件、文档、表格增加了时序版本标识,仍然可以采用版本树的结构组织和管理时序版本数据。矿床地质勘探数据可分类为多个时序版本数据,表格、图件、文档或以独立形式直接归属于矿床某一时序版本数据,或相互组成集合以报告形式归属于某一版本数据分类,这些数据在关系数据库中保存为各类关系数据表。
考虑面向三维地质建模的数据主要来自于孔数据,在关系数据库中保存为孔口坐标数据表、孔迹测量数据表、地质编录数据表、样品化验数据表4个互相关联的数据表(表1—4)。同时,考虑目前除了通过孔数据建立可视化钻孔工程进行人机交互三维建模外,地质剖面建模法也是三维地质建模软件中常用的方法,该方法首先绘制勘探线剖面,再按剖面人机交互圈定地质界线(线串)并生成地质体三维模型。因此,增加剖面图图件元数据表(表5)描述剖面图的相关信息,剖面图件在关系数据库中另以二进制流的方式存储;同时增加建模线串信息关系表(表6)来描述三维线串与剖面图之间的关系,剖面图图件元数据表与剖面图建模线串信息表通过剖面图编号相关联。本次研究将主要针对关系数据库中的这6个表进行版本管理与操作实现研究。
表1 开孔数据表(Collar)
表2 钻孔测斜数据表(Survey)
表3 地质编录表(Geology)
表4 样品分析表(Sample)
表5 剖面图图件元数据表(Profile Entity)
表6 建模线串信息关系表(LineString Information)
为了实现版本数据组织,增加了时序版本关系表(表7)和扩展的有向无环图版本关系表(表8),扩展的有向无环图版本关系表用来描述建模版本的继承和派生关系以及建模版本创建的详细信息。同时在上述6个表中分别增加了标识时序版本与建模版本的相关字段,利于实现数据的版本查询与管理(详见2.2.2)。
表7 时序版本关系表(TimeSeriesVersion)
表8 扩展的有向无环图版本关系表
另外,考虑数据的修改与更新,在数据库中增加与表1—6(现实数据表)对应的6张历史表来存储历史记录,每次修改前的数据记录将作为历史记录保存在历史数据表中,修改后的新记录保存在现实数据表中。历史表的表名为H加其对应的现实表表名,例如,collar对应的历史表表名为Hcollar。每一张历史表与其对应的现实表相关联,表结构相同,当现实表中的某条记录在某一时序版本或建模版本中被修改,该记录会作为历史数据存储在对应的历史表中;如果没有属性记录曾经被修改,则该历史表为空。以下主要针对地质勘探数据库中时序版本和建模版本管理实现原理与操作进行研究,关于数据库中数据的备份、增删与修改的权限在文献(邹艳红等,2004)中已有描述。
2.2.2版本管理实现原理(1) 版本数据库结构。为进行数据库的版本管理,在已有矿床勘探数据库结构的基础上,针对上述表1—6每个关系表分别增加5个字段:TVersion_ID、MVersion_IdSet、Dflag、Hflag、Mflag。数据表的逻辑关系如图7所示。
图7 版本化矿床勘探数据库中数据表逻辑关系图Fig.7 Logical structure of the version exploration database of mineral deposits
增加的字段描述如下。
① TVersion_ID标识该元组生成时所属的时序版本号,其值为整数,按时段顺序往后排列,与时序版本关系表(TimeSeriesVersion)中的TVersion_ID对应。
② MVersion_IdSet标识该元组被哪些建模版本所用,其值是这些建模版本编号的集合。为了查询方便,在MVersion_IdSet字段中添加建模版本编号时,将版本编号加逗号作为一个整体插入到该字段末尾。例如,建模版本MVER2使用了该元组数据,MVersion_IdSet字段末尾将插入“2,”。当在某建模版本上元组数据被修改,修改前的元组数据将作为历史记录保存到历史表中,现实表中相应的记录将发生修改,同时MVersion_IdSet字段值将修改为只含修改该元组数据的建模版本编号。例如:某元组数据曾被选择为建模版本MVER2和MVER4中的数据,则该元组数据中MVersion_IdSet字段值为“2,4,”;如果建模版本MVER5也选用该元组数据,同时发现该元组某一属性记录错误而进行了修改,则修改前的该元组数据将保存到历史表中,现实表中将保存更新后的元组数据,同时,MVersion_IdSet字段值将变为“5,”。
③ Dflag标识哪些建模版本对该元组进行了删除操作,其值为这些建模版本编号的集合,也是MVersion_IdSet值的子集。在元组Dflag属性上进行标注并不表示真正意义上的删除,仅仅表示哪些建模版本曾经用过该元组数据进行过建模实验,但后来没有选取该元组数据。
④ Hflag表示该元组数据是否为现实数据,其属性值为整数。在版本建立时,所有元组Hflag字段值缺省值为0,只有当元组数据被修改时,才将其存入历史表中并将其值设为修改次数。也就是说,值为0表示该元组数据为现时数据且存储在现实表中,大于0则表示该元组数据曾经被修改且存储在历史表中,属性值大小表示该元组数据是第几次修改前的数据。例如,某元组的Hflag字段值为3,表示该元组是第三次修改前的数据,在历史表中分别保存有该元组前3次每次修改前的记录。
⑤ Mflag表示在哪个建模版本对该元组进行了修改操作,其值为该建模版本的编号。更新前的数据记录将被作为历史记录保存,这些历史记录存储在相应的历史关系表中。
(2) 版本操作。版本管理实现以后,用户可以从数据库中查询版本数据,也可以通过修改、删除等操作获取自己所需的建模版本数据,建立新的建模版本。
① 查询操作。查询时序版本和建模版本数据时,只需根据时序版本编号和建模版本编号来进行查询。例如,查询建模版本MVER2的数据,即从数据库现时数据表中筛选出MVersion_IdSet字段值包含“2,”,且Dflag值中不包含“2,”的数据,用SQL语言实现如下:
SELECT * FROM TABLE
WHERE
(TABLE.MVersion_IdSet LIKE ′2,%′ OR
(TABLE.MVersion_IdSet LIKE ′%,2,%′) OR
(TABLE.MVersion_IdSet LIKE ′%,2,′))
AND
TABLE.Dflag NOT LIKE ′2,%′ AND
TABLE.Dflag NOT LIKE ′%,2,%′ AND
TABLE.Dflag NOT LIKE ′%,2,′,
如果数据在该建模版本后面的版本中进行过修改,则查询该版本的数据还需要考虑部分数据已作为历史记录保存,即除了查询出现实数据表中该版本的数据,还需从对应的历史表中查询出已作为历史记录保存的部分数据。例如,Collar表中的某元组是MVER0、MVER2、MVER4中的数据,在MVER2中进行了3次修改,最新建模版本为MVER4,当需要查询MVER2第2次修改前的数据,不仅要从现实数据表Collar中查询出MVersion_IdSet字段值包含“2,”,且Dflag值中不包含“2,”的数据,还需要从历史数据表Hcollar中查询出MVersion_IdSet字段值包含“2,”,Dflag值中不包含“2,”且Hflag字段值为“2”的数据,SQL语言实现如下:
SELECT * FROM collar
WHERE
(collar.MVersion_IdSet LIKE ′2,%′ OR
(collar.MVersion_IdSet LIKE ′%,2,%′) OR
(collar.MVersion_IdSet LIKE ′%,2,′))
AND
collar.Dflag NOT LIKE ′2,%′ AND
collar.Dflag NOT LIKE ′%,2,%′ AND
collar.Dflag NOT LIKE ′%,2,′)
UNION ALL
SELECT * FROMHcollar
WHERE
(Hcollar.MVersion_IdSet LIKE ′2,%′ OR
(Hcollar.MVersion_IdSet LIKE ′%,2,%′) OR
(Hcollar.MVersion_IdSet LIKE ′%,2,′))
AND
Hcollar.Dflag NOT LIKE ′2,%′ AND
Hcollar.Dflag NOT LIKE ′%,2,%′ AND
Hcollar.Dflag NOT LIKE ′%,2,′
AND
Hcollar.Hflag=2),
② 修改操作。建模版本数据是从时序版本或已有建模版本中选取数据生成的,即原始数据是存储在时序版本中的,故对版本数据进行修改操作,最终都是对存储于时序版本中的原始勘探数据值进行修改,并将修改前的记录作为历史记录存储在对应的历史表中。修改操作的具体步骤如下。
(a) 进行修改操作时,首先复制该元组的所有字段值将其作为历史数据,存储在对应的历史关系表中,同时修改历史关系表中该元组Hflag字段值,设为该元组数据的最大修改次数n加1,标识其为第n+1次修改前的记录。
(b) 修改现实表中该元组的数据值,同时更新该元组中MVersion_IdSet值为修改该元组数据的建模版本编号。此时MVersion_IdSet字段属性值存储的只是一个建模版本的编号,表示修改后的该元组数据只为这一个建模版本所用。与修改前的该元组数据不同,修改前的元组数据存储的是使用该元组数据的所有建模版本编号的集合。之所以有这种差异,是因为修改操作完成后,修改后的数据只为修改该建模版本所用,修改前的该元组数据MVersion_IdSet字段值可能为多个建模版本编号集合,但这些建模版本使用的是修改前的数据,因此不包含在修改后的该元组的MVersion_IdSet字段值中。但是,若有新的建模版本继承自该版本,则新建模版本继承其父版本修改后的元组数据,同样在该元组的MVersion_IdSet字段值中添加新建模版本编号,表示新建模版本也包含了该元组数据。
(c) 修改后的元组的Mflag字段值设为修改该元组数据的建模版本编号。其中,步骤(a)是修改历史表中元组的字段属性值,步骤(b)和(c)是修改现实表中该元组的字段属性值。例如,当发现建模版本MVER0的collar表中钻孔编号为ZK1的元组中x值有错,应修改为3 417 880.94,首先需要将Collar表中钻孔编号为ZK1的元组插入到Hcollar表中,并将Hflag字段值设为1,表示该历史记录为第一次修改前的数据,即原始数据;然后修改更新Collar表中的该记录;最后将Collar表中该元组的MVersion_IdSet字段值设为0,Mflag字段值设为0,表示MVER0对此元组数据进行了修改。SQL语言实现如下:
INSERT INTO Hcollar
(HOLE_ID, X, Y, Z, MAXDEPTH, START_
DATE, END_DATE,TVersion_ID, MVersion_IdSet, Dflag, Mflag, Hflag)
SELECT
(HOLE_ID, X, Y, Z, MAXDEPTH, START_
DATE, END_DATE,TVersion_ID, MVersion_IdSet, Dflag, Mflag, 1 AS Hflag)
FROM collar
WHERE
colar.HOLE_ID=′ZK1′
UPDATE collar
SET
MVersion_IdSet=′0,′,
X=3417880.94,
Mflag=′0,′
WHERE
collar.HOLE_ID=′ZK1′,
③ 删除操作。时序版本存储了各勘探时段的原始勘探数据,一般不对其进行删除操作。删除一个建模版本首先要做判断:若该建模版本无子版本,直接删除该版本即可;若该建模版本有子版本,则删除该版本的所有子版本,并删除该建模版本。例如,删除最新MVER2,实际上是筛选出现时表中MVersion_IdSet字段值包含“2,”的所有元组,并在其Dflag属性值中添加建模版本编号“2,”,表示MVER2已被删除。SQL语言实现如下:
SET
Dflag=TABLE.Dflag + ′2,′
WHERE
(TABLE.MVersion_IdSet LIKE ′2,%′ OR
TABLE.MVersion_IdSet LIKE ′%,2,%′ OR
TABLE.MVersion_IdSet LIKE ′%,2,′);
3.1实例数据
实例数据来自安徽铜陵地区凤凰山矿田,在以前的项目中曾针对该实例矿床历年来的地质勘探资料建立矿床地质勘探数据库,开展了矿床深边部隐伏矿体的三维可视化预测研究(毛先成等,2010)。在已建立的实例矿床地质勘探关系数据库的基础上,应用本次研究提出的地质勘探数据库增量更新版本管理方法,实例模拟矿床勘探数据增量更新的版本管理和三维建模修正实现过程。
凤凰山矿田包含凤凰山(又称药园山)、宝山陶、铁山头、仙人冲等多个铜矿床,其中,药园山矿床达到了中型规模,累计探明铜金属资源量43万t以上(邵拥军等,2003)。矿床共有矿体100多个,其中大中型矿体7个,Ⅰ—Ⅶ号矿体,包含199个钻孔工程,勘探线剖面图33幅。已建立的矿床地质勘探数据库包含钻孔开孔表、测斜表、地质编录数据表和样品化验数据表,保存在SQL Server数据库中。考虑项目中曾按照勘探线剖面建模方法建立了矿体三维模型,已建立矿体边界线串,选取IV号矿体,拟采用不同时序版本的剖面图线串建立不同版本的三维矿体修正模型,因而增加了建模线串信息关系表来描述线串与剖面图之间的关系。
基于本次研究提出的矿床勘探数据增量更新版本管理方法,首先在上述各关系表中分别添加MVersion_IdSet、TVersion_ID、Dflag、Mflag、Hflag 5个版本标识字段,建立版本数据库结构。根据钻孔开孔日期人为划分为3个勘探时段并建立对应的时序版本,即TVER0:1965-07-01—1965-07-15;TVER1:1965-07-16—1965-07-31;TVER2:1965-08-01—1974-11-01。分别在孔数据表和剖面图件表以及建模线串信息表数据记录中添加了相应的时序版本标识,即将相应的时序版本号赋值给TVersion_ID字段,为进一步提取建模版本数据和三维矿体建模修正提供数据基础。
3.2实例实现
采用C#编程语言实现实例矿床勘探数据库的版本创建与管理,并基于剖面建模版本数据进行实例矿体三维建模修正模拟。
版本数据采用树型结构组织。时序版本可直接通过版本树节点进行展示,图8为钻孔数据时序版本实例显示界面,左键点击版本节点可以查询版本所包含的数据记录;右击版本节点可以查看版本的详细信息,包括创建人员、创建时间、时间跨度等。
图8 钻孔数据版本显示界面Fig.8 Display interface of drilling data version
由于建模版本是多继承、多派生的,树型结构并不能真正表示出这种扩展的有向无环图节点之间的多对多关系。为了从版本树中查看建模版本,将建模版本节点置于其间接或直接继承的时序版本中版本编号最大的时序版本节点下,建模版本间详细的继承、派生关系,则需查看扩展的有向无环图版本关系表了解。
针对药园山矿床IV号矿体,选取不同时序版本的剖面图线串建立了3个建模版本,其中建模版本MVER0选取TVER0的剖面图线串数据,MVER1继承MVER0并选取TVER1的数据,MVER2继承MVER1的数据并选取TVER2的部分数据。MVER0数据包含14、16、18、20、22、24、25、26、28、31号勘探线剖面图中的IV号矿体边界线串,MVER1增加了30号和251号勘探线剖面图中的IV号矿体边界线串,MVER2在MVER1的基础上再添加了271号和291号勘探线剖面图中的IV号矿体边界线串。
图9为针对剖面线串的建模版本建立界面。创建建模版本时,首先需根据建模需求选取将要创建的建模版本的时序父版本或建模父版本,对于剖面建模,实例中首先选取需要进行建模的矿体,遍历包含该矿体的所有剖面图,筛选出对应的所有线串;然后选取构建该建模版本的线串集;最后进行版本标识,即程序在版本数据库中搜索已创建的建模版本的最大编号,自动设置所要创建的建模版本编号为搜索的最大建模版本编号加1,再手工添加版本用途描述,生成建模版本。
图9 剖面图线串建模版本建立界面Fig.9 Established interface of profile LineString modelling version
图10为剖面图线串版本显示界面,左键点击版本节点可以查询版本所包含的剖面图及线串记录;右击建模版本节点可以查看建模版本的创建人员、创建时间、所继承的时序父版本编号及其建模父版本编号等信息。版本的增删操作都可通过选择版本树节点的右键菜单功能完成。
图10 剖面图数据版本显示界面Fig.10 Display interface of profile data version
时序版本和建模版本建立完成后,分别从数据库中提取MVER0、MVER1、MVER2建模数据,在GOCAD中分别建立三维矿体模型。图11展示了基于实例矿体增量数据版本更新的三维矿体模型的动态修正过程,展示了模型的动态变化过程。
图11 基于增量数据版本更新的三维矿体建模修正实例Fig.11 3D ore-body modelling corrected instance based on incremental data version update
随着矿山地质勘探工作的逐阶段开展和勘探工程加密,获取的各种地质数据逐步增加,基于勘探数据增量更新的三维地质建模动态修正能够及时、清晰地反映地质体在三维空间中的展布形态,有助于地质工作者进行各种地质形态空间分析、矿体储量计算以及采矿设计。因此,研究地质勘探数据库增量更新与三维地质体模型动态修正之间的映射关系具有实际意义。
针对基于关系数据库的矿床地质勘探数据增量更新,引入版本管理机制,以时序版本和建模版本作为地质勘探数据增量更新版本标识,提出了一种扩展的有向无环图版本管理模型,实例研究了矿床勘探数据库的版本管理与三维地质建模动态修正实现过程。研究表明,以版本标识为纽带,版本化矿床勘探数据库与三维模型库的映射,有助于矿床勘探过程中三维地质建模动态更新问题的解决。但由于地质构造在时间演绎和空间结构上的复杂性,三维地质建模动态修正过程并不是简单的基于地质勘探增量数据的模型增长过程。
因此,随着勘探数据的增加,一方面需要从数据库结构和计算机实现上完善从版本化矿床勘探数据库到三维模型库的映射过程;另一方面,更重要的是需要针对不同的地质条件和地质体数据研究地质体在三维空间的演化过程。
陈矗,2004. 工程数据库版本管理与并发控制研究[D]. 青岛:山东科技大学.
陈建平,吕鹏,吴文,等,2007. 基于三维可视化技术的隐伏矿体预测[J]. 地学前缘,14(5): 54-62.
陈晓明,2008. 基于ArcSDE的空间数据库版本管理软件开发研究[J]. 测绘与空间地理信息,31(4):128-131.
陈建平,于淼,于萍萍,等,2014. 重点成矿带大中比例尺三维地质建模方法与实践[J]. 地质学报, 88(6):1187-1195.
侯德义,1990. 找矿勘探地质学[M]. 北京:地质出版社.
李青元,张丽云,魏占营,等, 2013. 三维地质建模软件发展现状及问题探讨[J]. 地质学刊,37(4): 554-561.
李青元,马梓翔,崔扬,等,2015. Geo3DML在三维地质建模中的应用研究与建议[J]. 地质学刊, 39(3):358-366.
毛先成,戴塔根,邹艳红,等,2003. 广西大厂矿田地质矿产数据库的研究与系统开发[J]. 地质与勘探, 39(5):72-76.
毛先成,戴塔根,吴湘滨,等,2009. 危机矿山深边部隐伏矿体立体定量预测研究:以广西大厂锡多金属矿床为例[J]. 中国地质,26(2):424-435.
毛先成,邹艳红,陈进,等,2010. 危机矿山深部、边部隐伏矿体的三维可视化预测:以安徽铜陵凤凰山矿田为例[J]. 地质通报,29(2/3): 401-413.
邵拥军,彭省临,刘亮明,等,2003. 凤凰山矿田成矿地质条件和控矿因素分析[J]. 中南工业大学学报(自然科学版),34(5):562-566.
史蕊,陈建平,王刚,等,2015. 云南个旧竹林矿段三维成矿预测及靶区优选[J]. 地质通报, 34(5):944-952.
夏宇, 朱欣焰, 呙维,2007. 基于ArcSDE的空间数据版本管理问题研究[J]. 计算机工程与应用, 43(14):14-16.
肖克炎,陈学工,李楠,等,2010. 地质矿产勘探评价三维可视化技术及探矿者软件开发[J]. 矿床地质(增刊1): 758-760.
肖克炎,李楠,孙莉,等,2012. 基于三维信息技术大比例尺三维立体矿产预测方法及途径[J]. 地质学刊, 36(3): 229-236.
薛林福,李文庆,张伟,等,2014. 分块区域三维地质建模方法[J]. 吉林大学学报(地球科学版), 44(6):2051-2058.
叶飞跃,1998. 关系数据库的版本管理[J]. 计算机应用研究,15(5):103-105.
叶天竺,薛建玲,2007. 金属矿床深部找矿中的地质研究[J]. 中国地质, 34(5):855-869.
袁峰,李晓晖,张明明,等,2014. 隐伏矿体三维综合信息成矿预测方法[J]. 地质学报, 88(4):630-643.
翟裕生, 邓军, 王建平,等,2004. 深部找矿研究问题[J]. 矿床地质, 23(2):142-149.
邹艳红,毛先成,2004. 地测数据库的建立与应用[J]. 中南大学学报(自然科学版),35(3):463-467.
邹艳红,戴塔根,毛先成,2008. 广西大厂矿田铜坑深部隐伏矿体立体定量预测建模与可视化研究[J]. 地质与勘探,44(2):62-66.
张亚军,赵军喜,丁昊,2011. 空间数据版本管理的体系结构研究[J]. 测绘科学, 36(6):155-157.
LE H H, SCHAEBEN H, JASPER H, et al., 2014. Database versioning and its implementation in geoscience information systems[J]. Computers & Geosciences, 70: 44-54.
HOULDING S W, 1994. 3D Geoscience Modeling: Computer Techniques for Geological Characterization[M]. Berlin: Springer-Verlag.
An incremental update method of geological prospecting database for 3D dynamic modelling in mineral deposits
ZOU Yanhong1,2, LIU Wen1,2, HUANG Wang1,2, CHEN Jiayin1,2, MAO Xiancheng1,2
(1. Key Laboratory of Metallogenic Prediction of Nonferrous Metals and Geological Environment Monitoring, Ministry of Education, Changsha 410083, Hunan, China; 2. School of Geosciences and Info-Physics, Central South University, Changsha 410083, Hunan, China)
Due to the increasing geological exploration data and 3D dynamic geological modelling in the deep mineral exploration, we proposed an incremental update method of geological prospecting database based on version management. Firstly, based on the analysis of the mapping relationship between geological exploration engineering data and 3D geological model, we established sequential version and modelling version as the incremental updating version identifiers of deposit exploration data. Then, aiming at version management of the updated exploration data, we put forward a version management model based on extended directed acyclic graph, designed a version management method based on relational database, and discussed its implementation process as well. Finally, taking the Fenghuangshan ore field in Tongling of Anhui as a case study, we built a practical geological exploration version database based on the SQL Server system. The C# program was developed to implement the functions of version management for practical mineral exploration database, including version establishment, query and display functions. A set of 3D ore-body dynamic correction models was built by using the incremental updating version instance. This method is confirmed to be feasible and efficient.
deposit exploration data; incremental update; version database; 3D geological modelling; dynamic correction; Tongling in Anhui Province
10.3969/j.issn.1674-3636.2016.03.372
2016-06-21;编辑:陆李萍
国家自然科学基金项目“面向矿床勘探数据增量更新的三维地质体快速建模与修正方法”(41472302)
邹艳红(1971—),女,副教授,博士,主要从事三维地学建模与GIS应用研究工作,E-mail: zouyanhong@edu.csu.cn
P628+.4
A
1674-3636(2016)03-0372-12