重磁软件架构设计及实现方案研究
2020-07-26陈靖王万银郭文波顾欣
陈靖,王万银,郭文波,顾欣
(1.西北有色地质矿业集团有限公司,陕西 西安 710054; 2.长安大学 重磁方法技术研究所,陕西 西安 710054;3.长安大学 地质工程与测绘学院,陕西 西安 710054;4.长安大学 西部矿产资源与地质工程教育部重点实验室,陕西 西安 710054; 5.西安西北有色物化探总队有限公司,陕西 西安 710068; 6.西安西北有色地质研究院有限公司,陕西 西安 710054)
0 引言
随着近年来现代科学技术的发展,地质解释要求不断向综合化、立体化、定量化的方向加深和加强[1],国内外重磁数据处理和反演软件逐步走向三维可视化定量解释。
国外重磁方法软件研发起步较早,已形成一批较为成熟的商业重磁方法软件,如Oasis montaj、ModelVision、LCT、Arkfield、Intrepid等。国内软件起步晚但是发展迅猛,如RGIS、GeoProbe、GeoIPAS等,已在国内广泛使用并取得较好的应用效果[2]。分析国内外重磁方法软件的现状,当前重磁方法软件的发展要求在方法上对多种物探方法联合进行处理、反演和综合解释;在功能上形成从数据导入、计算、绘制、数据管理到综合地质解释等形成一个完整的功能体系。这些新特点对软件开发在数据管理、三维可视化、综合信息处理分析及软件的结构、性能等方面提出了更高的要求。目前国外软件如Oasis montaj已经是比较全面的重、磁、电、放及地球化学数据输入、处理、成图、地质解释和数据共享的集成软件[3-5],ModelVision也有公司旗下的配套软件来填补其功能[6-7],但国外软件在国内应用还存在使用习惯、售后服务、图件规范化等诸多问题。研发的重要性不需赘述,当前国内软件在这方面正不断探索[8-10],仍存在一些问题:① 在数据管理方面,缺乏对多源多维多类型数据的统一集成管理及高效的数据访问和存储体系;② 在三维可视化方面,缺乏完善的三维建模及场景控制、模型集成及模型信息提取的能力;③ 在定量表达方面,缺乏全面的对量化信息的量算与数值分析能力,较难得出综合性的量化的地质结论;④ 在软件开发方面,缺乏高效、健壮的系统架构,及灵活、开放的模块功能,系统二次开发能力和功能的可移植性较弱。
针对上述目前国内重磁方法软件在数据管理、三维可视化、定量表达以及软件开发方面存在的诸多不足,笔者基于面向对象的系统开发理论和方法,采用组件+插件技术、多语言开发技术、数据库技术等设计了重磁方法软件系统的框架体系,研究相关方法技术,开发了重磁数据处理及反演软件。
1 软件总体设计及开发方案
1.1 系统结构设计
为使软件系统具备架构稳定性、模块的灵活性,同时要能实现多元数据管理及三维可视化定量计算解释的能力,在对系统进行总体分析后采用分层结构,在纵向上以数据为基础,以功能为导向,以软件界面为表示端,设计了3层系统结构框架,如图1所示。数据层实现对数据库的封装,负责数据的存储、查找、更新等;功能层实现对功能模块的封装,连接数据访问层和表示层,位于系统的核心,负责制定系统功能的规则、功能实施流程及相关程序设计;表示层实现系统前端显示,为用户提供交互操作及结果显示的容器。分层结构使得各层的开发具有明确的分工,并且内部依赖性降低,局部的变动不会影响系统整体,因而提高了系统的可维护性,功能更易于扩展和重用[11]。
图1 分层式体系结构示意图Fig.1 Schematic diagram of layered system
1.2 系统功能设计
结合对当前主流重磁方法软件的调研分析,软件设计了5大功能模块,具体如下:
1.2.1 重磁数据处理及反演计算功能
此部分包括平面、曲面的重磁数据处理和转换,以及重磁反演功能。其中曲面的处理、转换功能先利用“曲化平”得到某一平面的位场数据,再利用平面的方法来完成。
1)平面重磁数据的处理和转换:包括位场延拓(频率域向上延拓和向下延拓),任意方向、任意阶导数计算(包括空间域导数计算和频率域导数计算),磁异常任意方向分量转换和磁化方向转换,磁源重力异常计算,重力场分量转换,位场分离(包括空间域位场分离和频率域位场分离)等;
2)曲面重磁数据的处理和转换:包括位场延拓(包括空间域向上延拓和向下延拓、频率域向上延拓和向下延拓),任意方向、任意阶导数计算(包括空间域导数计算和频率域导数计算),重磁异常任意方向分量转换和磁化方向转换(包括重力场分量转换、磁异常分量转换、磁异常磁化方向转换、磁异常分量转换和磁化方向转换)等;
3)重磁反演功能:地质体特征位置识别(包括形体水平边缘位置、形体中心位置和形体深度特征位置),界面起伏深度反演(包括空间域和频率域),物性反演(包括视密度和视磁性参数反演)等。
1.2.2 数据综合管理和查询功能
能够对多种来源及多种格式的空间数据和非空间数据统一管理,数据分级存储,包含空间数据的几何信息及属性信息;具有海量数据管理能力,能够对数据进行长久的保存;具备对空间数据、属性数据及模型数据的信息查询功能,包括点击查询、范围框选查询、关键字查询和属性查询等几种方式,可以通过数据库实现实体几何位置、属性信息的交互查询。
1.2.3 三维可视化、三维量算和分析功能
三维可视化功能包括二、三维对象绘图,模型添加、删除、修改等操作,及对三维视图窗口及模型的室内室外、地下等多模式浏览和缩放、平移、漫游等场景控制;三维量测和分析用于辅助用户进行数据综合分析,帮助地质解释工作,包括三维空间距离量测、周长/面积量测、三维坐标查询及坡度、坡向查询,并在此基础上可实现绘制等高线、地形开挖、产状分析、剖面分析等。
1.2.4 软件界面定制功能
具有可动态扩展的系统结构,软件界面可根据不同阶段数据处理和解释的需求对功能模块进行集成和重新组织,使得系统界面按需配置,具有专业性和针对性。
1.3 开发方案
重磁数据处理及反演软件系统的建立涉及多学科的知识交互、多用高效的软件功能以及多源海量的数据信息,为了达到平台的稳固性和模块功能的灵活性,本系统设计了基于分层体系的组件+插件的GIS开发模式,如图2所示。在纵向上设计了以数据为底层、功能为核心、界面为交互前端的三层系统结构框架,数据层采用空间数据库技术实现空间数据和非空间数据的集成管理,功能层采用组件+插件的架构,分成平台部分和扩展部分,利用组件式技术进行平台部分的开发和组织,在横向上利用插件开发技术实现扩展部分各个子系统的模块功能。显示层以三维视图窗口作为显示前端,可将多源多维多类型数据集成显示,并以功能界面窗口为辅助配合平台和扩展功能的实现。
图2 系统框架结构Fig.2 System frame structure diagram
其中,利用可视化开发语言和GIS组件,使程序具有友好便捷的操作界面,同时发挥了GIS在数据管理、空间分析和三维可视化方面的特长;利用插件式开发来完成重磁数据处理及反演的各个功能,能够将重磁功能拆分成独立的插件个体,[4]利用接口实现插件个体和主程序通信,使用户根据重磁数据处理、计算及反演解释的流程需求,制定个性化的功能集合,程序即插即用,使软件界面去繁化简;利用.NET环境下支持多语言开发技术,实现C#和Fortran等多语言共同开发;利用空间数据库技术实现数据集成管理,为定量表达提供基础服务。
系统开发环境要求:硬件CPU奔腾4处理器及以上,内存推荐2GB或以上,硬盘80G以上空间,显存为1G或以上;操作系统Windows 7或Windows10,开发工具Visual Studio.NET 2008、Intel Fortran11.0、GIS组件ESRI ArcEngine 10.1、Skyline TerraExpolerpro V6.5、数据库软件Oracle 11g、ArcSDE 10。
2 系统实现方案
2.1 组件+插件架构实现方案
2.1.1 平台部分实现方案
采用组件式开发结构,由ArcGIS Engine和Skyline TerraExplorer Pro组件在Micro Visual Studio环境下采用C#语言共同开发。Skyline三维窗体作为前端显示界面,后台功能由ArcGIS Engine和Skyline TerraExplorer Pro组件共同支撑,利用Oracle在后台进行数据管理和维护,通过ArcSDE和ADO.NET来分别访问空间数据和属性数据,组件之间通过接口传递消息。负责:① 平台基本功能:主要包括系统的各种基本通用操作;② 平台核心功能:主要包括数据查询和二、三维地图浏览、三维量算和三维分析。
利用GIS组件混合二次开发的优势是可以降低开发难度及工作量,组件提供了大量的函数可供开发者使用,其次分层和分块编程实现了软件的分解和集成,降低了模块间的依赖性,提高了整体的灵活性,同时也有利于系统后期的维护和更新。
2.1.2 扩展部分实现方案
采用插件式开发结构,负责各种重磁数据处理和正反演计算。扩展部分在逻辑上包括宿主程序、插件管理器、通信契约和插件:① 宿主程序:负责整个插件结构的启动并作为插件实现功能的容器,系统有唯一的主程序接口与之对应;② 插件管理器:负责对重磁插件进行读取、查找、加载、判断、生成、调用等操作;③ 功能插件:负责实现各种重磁数据处理及反演功能,和主程序通过接口对接,由插件管理器动态加载;④ 通信契约:负责制定宿主框架和功能插件对接和通信的规则,系统共有4类接口。插件框架运作流程如图3所示。
图3 宿主框架运作机制示意Fig.3 Schematic diagram of host framework operation
本系统共设计4类接口,包括IPluginParent、IButton、IButtonDropDown及IPageGroup。IPluginParent接口是所有插件接口的父接口,没有具体的属性和方法,只起到标识作用;IButton接口定义了命令按钮功能的接口,它继承自IPluginParent接口,响应用户的点击操作;IButtonDropDown接口定义了中下拉式按钮功能的接口,它继承自IButton接口;IPageGroup接口定义了面板功能的接口,用于将各种功能的按钮分类放置在面板中,每一个按钮是它的一个元素。
宿主框架主程序担当着系统平台部分的基本功能和平台核心功能,本系统主界面UI包括平台部分和插件管理器,插件菜单UI命名为插件管理,设置在基本功能面板下,当宿主程序按照接口对插件进行加载后,主界面上插件菜单面板下将自动生成对应的功能插件按钮。
2.1.3 插件集成实现方案
重磁数据处理及反演功能以插件形式集成到系统平台上,根据用户应用需求动态加载和调用。每个插件严格遵守系统插件开发流程进行,首先设计和编写插件核心算法函数,实现相应的插件接口,设计插件界面并嵌入算法,经过模块测试后生成动态链接库文件,然后编写插件配置文件,系统根据插件配置文件读取插件信息并分配插件所需的资源,以帮助插件实现特定功能。重磁数据处理及反演软件系统的插件主要包括3大子系统,每个子系统中又包含相应若干插件,如图4所示。
图4 插件集成示意Fig.4 Schematic diagram of plug-in integration
2.2 综合信息数据库体系实现方案
在软件系统框架中,数据是系统的底层基础。系统利用“Oracle+ArcSDE+ADO.NET”的模式来设计和构建数据库体系,用二维表格来管理非空间数据,利用ArcGIS的Geodatabase管理空间数据,并通过ArcSDE和Ado.net组织和调用,通过内部关联字段实现空间和非空间数据的关联。影像数据通过栅格目录Raster Catalog管理。[6]
数据包括:① 空间数据:共有DEM、卫星遥感影像、基础地理信息、重磁信息、地质信息5个数据集,数据集组织结构包括点、线、面要素和注记。② 属性数据:包括字段名称、说明及字段类型,分为基础地理数据(水系、交通、地形等)、重磁数据(重力、磁力)、地质数据(构造、地层、岩性、钻孔等)及系统辅助信息(系统日志、系统用户、角色、权限等),用于数据库的查询、交互操作及系统运行维护。③ 三维模型数据:包括地上、地表及地下的主要建筑物、道路、管线及地质体等的模型及纹理。模型属性含有标识码、序号、模型名称、类型及属性描述等字段,采用分层分级文件组织方式存储。④ 元数据:包含数据标识、内容说明、质量说明、坐标系统、更新维护信息等,和相应空间数据实行同步管理和更新。
2.3 综合解释体系实现方案
综合解释体系是利用重磁计算结果和地质、地理、测绘数据,通过对几何形体和物性信息进行数据查询、三维浏览、定量量算和GIS空间分析,使得重磁数据处理及反演结果与多源、多维、多类型信息相融合,通过三维可视化的方式进行数据信息集成显示,对多领域信息进行集成分析及综合解释,最终形成定量化的综合信息地质结论。
2.3.1 信息查询
信息查询是根据查询请求,访问系统数据库体系,按照查询要求搜索目标数据。分为两类,一类是根据位置信息查询到属性,一类是根据值域信息查询到属性,需要用到TerraExplorer Pro和ArcGIS Engine组件共同开发,前者获取查询条件的坐标信息,后者要根据查询条件搜寻数据库,最后通过坐标信息控制三维窗口的飞行定位。
2.3.2 三维场景控制、三维量算和分析
三维场景控制服务于信息综合解释。需要用到Skyline的一些接口的功能,实现关键是获取鼠标的状态或反馈信息。三维量测和分析用于辅助用户进行数据综合分析,帮助地质解释工作,这里都采用矢量数据进行计算,关键是获取点坐标,基于TerraExplorer Pro完成。
3 软件特色
笔者基于组件+插件的开发技术,架构上具有稳固、灵活的特点,多种功能模块即插即用,可以根据重磁数据处理、反演、解释的流程需求来制定软件界面;系统对多元、多维、多类型数据统一管理,开发综合解释体系,实现以重磁数据为基础的多元数据三维集成分析及综合解释。
3.1 即插即用的功能模块
模块即插即用,动态加载是本软件的一大特色。综合型软件通常功能繁多,用户不易于快速查找需要的模块,因此根据应用进展制定个性化的软件界面,使用户在使用软件时能快速入手;同时,“即插即用”可以实现软件快速集成和升级维护,方便软件更新及补充完善新的功能。
本软件设计的“插件管理”是对插件进行管理和加载的工具按钮,当用户需要使用功能插件时,利用插件管理按钮对插件进行动态加载(图5)。当插件使用完毕后,用户可对已注册的插件进行注销。
图5 插件管理工具示意Fig.5 Schematic diagram of plug-in management tools
系统的插件功能主要为地球物理数据处理及正反演服务。
3.2 重磁数据处理及反演一体化功能
系统构成了重磁数据处理及反演一体化功能,包括平面的数据处理和转换、曲面的数据处理和转换,以及位场反演功能,如图6a、b所示。具体在1.2节和2.1节已介绍,部分功能展示如图7、8所示。
图7 重磁数据处理及反演功能展示(一)Fig.7 Function show of gravity and magnetic data processing and inversion (1)
图6 重磁数据处理及反演功能集合Fig.6 Functions of gravity and magnetic data processing and inversion
3.3 信息查询、三维量算和三维分析功能
信息查询是系统根据用户的查询请求,访问系统数据库,按照查询要求搜索目标数据。系统具备对空间数据、属性数据及模型数据的信息查询功能,包括点击、范围框选、关键字和属性查询等几种查询方式,可以通过数据库实现实体几何位置、属性信息的交互查询。
三维量算和三维分析功能用于利用重磁、地理、地质、测绘等信息,结合重磁数据处理和反演的成果,进行三维数据查询、视图浏览控制、定量量算和三维分析辅助综合地质解释。三维量算包括利用矢量数据对水平距离、垂直距离、空间距离的量测,周长/面积量测、三维坐标查询及坡度、坡向查询;三维分析包括二维、三维对象绘图,室内室外、地下多模式浏览、地面透明度、光照、时间轴设置,等高线分析、地形开挖、产状分析、剖面分析等。
其中,等高线分析以DEM数据为基础,根据用户鼠标选择区域自动创建等高线,并可设置等高距、样式等相关属性;产状分析根据用户鼠标选取的点计算该点地层的走向、倾向和倾角;剖面分析将自动加载综合地质剖面数据生成的剖面模型,可查询每一地层的属性信息,包括密度、磁性、地层名称、所含矿物等,辅助综合分析。部分功能效果如图9所示。
图8 重磁数据处理及反演功能展示(二)Fig.8 Function show of gravity and magnetic data processing and inversion (2)
图9 信息查询、三维量算和三维分析功能Fig.9 Function show of Information query and 3D measurement and analysis
4 结论与建议
笔者研究和设计了基于分层体系的组件+插件的系统架构。在纵向上将系统分为3层体系,建立数据、功能和用户界面的逻辑层次,在横向分为平台和扩展两大部分,利用组件式GIS技术实现平台部分的应用,利用插件式GIS技术实现扩展部分的应用,设计了基于Visual Studio开发环境和Skyline+ArcGIS组件的框架实现策略和开发流程,组件+插件的框架结构使得系统基础功能及核心功能组成平台的主体,专业功能部分以插件方式集成到平台上,用时加载,不用时卸载,能够实现稳固的平台主体和灵活的扩展应用(即插即用),使系统兼具稳定性、灵活性和可扩展性。
为实现将重磁数据处理及反演结果与多学科信息结合,进行三维可视化综合分析, 笔者将重磁数据处理和反演方法与插件技术相结合,实现重磁平面、曲面数据处理及转换、及重磁反演功能,实现插件功能动态加载;设计了多源、多维、多类型数据统一管理模式,完成了包含空间数据库、属性数据库、三维模型库及元数据库的数据库体系建设;利用三维GIS技术实现了对地形、实物及地质体的三维模拟及三维可视化集成显示;利用GIS组件进行系统二次开发,实现重磁、地质、地理、测绘数据信息查询、几何形体及物性的三维定量表达和综合分析(包括三维浏览、三维量算及三维GIS空间分析等功能)。从而将重磁数据处理及反演结果与多源、多维、多类型信息相融合,通过三维可视化的方式进行数据信息集成显示,在此基础上对多领域综合信息进行综合分析,实现了地球物理多元数据三维集成分析及综合解释。
未来一段时间内,功能集成化仍是地球物理软件的一个重要趋势,因此,下一步将在现有基础上进一步拓展插件功能,使系统从数据预处理、处理和转换、反演解释、图形绘制,再到数据管理、GIS分析等形成一个方法齐全、功能完备的体系。