陳靖,王萬銀,郭文波,顧欣
(1.西北有色地質礦業(yè)集團有限公司,陜西 西安 710054; 2.長安大學 重磁方法技術研究所,陜西 西安 710054;3.長安大學 地質工程與測繪學院,陜西 西安 710054;4.長安大學 西部礦產資源與地質工程教育部重點實驗室,陜西 西安 710054; 5.西安西北有色物化探總隊有限公司,陜西 西安 710068; 6.西安西北有色地質研究院有限公司,陜西 西安 710054)
隨著近年來現代科學技術的發(fā)展,地質解釋要求不斷向綜合化、立體化、定量化的方向加深和加強[1],國內外重磁數據處理和反演軟件逐步走向三維可視化定量解釋。
國外重磁方法軟件研發(fā)起步較早,已形成一批較為成熟的商業(yè)重磁方法軟件,如Oasis montaj、ModelVision、LCT、Arkfield、Intrepid等。國內軟件起步晚但是發(fā)展迅猛,如RGIS、GeoProbe、GeoIPAS等,已在國內廣泛使用并取得較好的應用效果[2]。分析國內外重磁方法軟件的現狀,當前重磁方法軟件的發(fā)展要求在方法上對多種物探方法聯合進行處理、反演和綜合解釋;在功能上形成從數據導入、計算、繪制、數據管理到綜合地質解釋等形成一個完整的功能體系。這些新特點對軟件開發(fā)在數據管理、三維可視化、綜合信息處理分析及軟件的結構、性能等方面提出了更高的要求。目前國外軟件如Oasis montaj已經是比較全面的重、磁、電、放及地球化學數據輸入、處理、成圖、地質解釋和數據共享的集成軟件[3-5],ModelVision也有公司旗下的配套軟件來填補其功能[6-7],但國外軟件在國內應用還存在使用習慣、售后服務、圖件規(guī)范化等諸多問題。研發(fā)的重要性不需贅述,當前國內軟件在這方面正不斷探索[8-10],仍存在一些問題:① 在數據管理方面,缺乏對多源多維多類型數據的統一集成管理及高效的數據訪問和存儲體系;② 在三維可視化方面,缺乏完善的三維建模及場景控制、模型集成及模型信息提取的能力;③ 在定量表達方面,缺乏全面的對量化信息的量算與數值分析能力,較難得出綜合性的量化的地質結論;④ 在軟件開發(fā)方面,缺乏高效、健壯的系統架構,及靈活、開放的模塊功能,系統二次開發(fā)能力和功能的可移植性較弱。
針對上述目前國內重磁方法軟件在數據管理、三維可視化、定量表達以及軟件開發(fā)方面存在的諸多不足,筆者基于面向對象的系統開發(fā)理論和方法,采用組件+插件技術、多語言開發(fā)技術、數據庫技術等設計了重磁方法軟件系統的框架體系,研究相關方法技術,開發(fā)了重磁數據處理及反演軟件。
為使軟件系統具備架構穩(wěn)定性、模塊的靈活性,同時要能實現多元數據管理及三維可視化定量計算解釋的能力,在對系統進行總體分析后采用分層結構,在縱向上以數據為基礎,以功能為導向,以軟件界面為表示端,設計了3層系統結構框架,如圖1所示。數據層實現對數據庫的封裝,負責數據的存儲、查找、更新等;功能層實現對功能模塊的封裝,連接數據訪問層和表示層,位于系統的核心,負責制定系統功能的規(guī)則、功能實施流程及相關程序設計;表示層實現系統前端顯示,為用戶提供交互操作及結果顯示的容器。分層結構使得各層的開發(fā)具有明確的分工,并且內部依賴性降低,局部的變動不會影響系統整體,因而提高了系統的可維護性,功能更易于擴展和重用[11]。
圖1 分層式體系結構示意圖Fig.1 Schematic diagram of layered system
結合對當前主流重磁方法軟件的調研分析,軟件設計了5大功能模塊,具體如下:
1.2.1 重磁數據處理及反演計算功能
此部分包括平面、曲面的重磁數據處理和轉換,以及重磁反演功能。其中曲面的處理、轉換功能先利用“曲化平”得到某一平面的位場數據,再利用平面的方法來完成。
1)平面重磁數據的處理和轉換:包括位場延拓(頻率域向上延拓和向下延拓),任意方向、任意階導數計算(包括空間域導數計算和頻率域導數計算),磁異常任意方向分量轉換和磁化方向轉換,磁源重力異常計算,重力場分量轉換,位場分離(包括空間域位場分離和頻率域位場分離)等;
2)曲面重磁數據的處理和轉換:包括位場延拓(包括空間域向上延拓和向下延拓、頻率域向上延拓和向下延拓),任意方向、任意階導數計算(包括空間域導數計算和頻率域導數計算),重磁異常任意方向分量轉換和磁化方向轉換(包括重力場分量轉換、磁異常分量轉換、磁異常磁化方向轉換、磁異常分量轉換和磁化方向轉換)等;
3)重磁反演功能:地質體特征位置識別(包括形體水平邊緣位置、形體中心位置和形體深度特征位置),界面起伏深度反演(包括空間域和頻率域),物性反演(包括視密度和視磁性參數反演)等。
1.2.2 數據綜合管理和查詢功能
能夠對多種來源及多種格式的空間數據和非空間數據統一管理,數據分級存儲,包含空間數據的幾何信息及屬性信息;具有海量數據管理能力,能夠對數據進行長久的保存;具備對空間數據、屬性數據及模型數據的信息查詢功能,包括點擊查詢、范圍框選查詢、關鍵字查詢和屬性查詢等幾種方式,可以通過數據庫實現實體幾何位置、屬性信息的交互查詢。
1.2.3 三維可視化、三維量算和分析功能
三維可視化功能包括二、三維對象繪圖,模型添加、刪除、修改等操作,及對三維視圖窗口及模型的室內室外、地下等多模式瀏覽和縮放、平移、漫游等場景控制;三維量測和分析用于輔助用戶進行數據綜合分析,幫助地質解釋工作,包括三維空間距離量測、周長/面積量測、三維坐標查詢及坡度、坡向查詢,并在此基礎上可實現繪制等高線、地形開挖、產狀分析、剖面分析等。
1.2.4 軟件界面定制功能
具有可動態(tài)擴展的系統結構,軟件界面可根據不同階段數據處理和解釋的需求對功能模塊進行集成和重新組織,使得系統界面按需配置,具有專業(yè)性和針對性。
重磁數據處理及反演軟件系統的建立涉及多學科的知識交互、多用高效的軟件功能以及多源海量的數據信息,為了達到平臺的穩(wěn)固性和模塊功能的靈活性,本系統設計了基于分層體系的組件+插件的GIS開發(fā)模式,如圖2所示。在縱向上設計了以數據為底層、功能為核心、界面為交互前端的三層系統結構框架,數據層采用空間數據庫技術實現空間數據和非空間數據的集成管理,功能層采用組件+插件的架構,分成平臺部分和擴展部分,利用組件式技術進行平臺部分的開發(fā)和組織,在橫向上利用插件開發(fā)技術實現擴展部分各個子系統的模塊功能。顯示層以三維視圖窗口作為顯示前端,可將多源多維多類型數據集成顯示,并以功能界面窗口為輔助配合平臺和擴展功能的實現。
圖2 系統框架結構Fig.2 System frame structure diagram
其中,利用可視化開發(fā)語言和GIS組件,使程序具有友好便捷的操作界面,同時發(fā)揮了GIS在數據管理、空間分析和三維可視化方面的特長;利用插件式開發(fā)來完成重磁數據處理及反演的各個功能,能夠將重磁功能拆分成獨立的插件個體,[4]利用接口實現插件個體和主程序通信,使用戶根據重磁數據處理、計算及反演解釋的流程需求,制定個性化的功能集合,程序即插即用,使軟件界面去繁化簡;利用.NET環(huán)境下支持多語言開發(fā)技術,實現C#和Fortran等多語言共同開發(fā);利用空間數據庫技術實現數據集成管理,為定量表達提供基礎服務。
系統開發(fā)環(huán)境要求:硬件CPU奔騰4處理器及以上,內存推薦2GB或以上,硬盤80G以上空間,顯存為1G或以上;操作系統Windows 7或Windows10,開發(fā)工具Visual Studio.NET 2008、Intel Fortran11.0、GIS組件ESRI ArcEngine 10.1、Skyline TerraExpolerpro V6.5、數據庫軟件Oracle 11g、ArcSDE 10。
2.1.1 平臺部分實現方案
采用組件式開發(fā)結構,由ArcGIS Engine和Skyline TerraExplorer Pro組件在Micro Visual Studio環(huán)境下采用C#語言共同開發(fā)。Skyline三維窗體作為前端顯示界面,后臺功能由ArcGIS Engine和Skyline TerraExplorer Pro組件共同支撐,利用Oracle在后臺進行數據管理和維護,通過ArcSDE和ADO.NET來分別訪問空間數據和屬性數據,組件之間通過接口傳遞消息。負責:① 平臺基本功能:主要包括系統的各種基本通用操作;② 平臺核心功能:主要包括數據查詢和二、三維地圖瀏覽、三維量算和三維分析。
利用GIS組件混合二次開發(fā)的優(yōu)勢是可以降低開發(fā)難度及工作量,組件提供了大量的函數可供開發(fā)者使用,其次分層和分塊編程實現了軟件的分解和集成,降低了模塊間的依賴性,提高了整體的靈活性,同時也有利于系統后期的維護和更新。
2.1.2 擴展部分實現方案
采用插件式開發(fā)結構,負責各種重磁數據處理和正反演計算。擴展部分在邏輯上包括宿主程序、插件管理器、通信契約和插件:① 宿主程序:負責整個插件結構的啟動并作為插件實現功能的容器,系統有唯一的主程序接口與之對應;② 插件管理器:負責對重磁插件進行讀取、查找、加載、判斷、生成、調用等操作;③ 功能插件:負責實現各種重磁數據處理及反演功能,和主程序通過接口對接,由插件管理器動態(tài)加載;④ 通信契約:負責制定宿主框架和功能插件對接和通信的規(guī)則,系統共有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 插件集成實現方案
重磁數據處理及反演功能以插件形式集成到系統平臺上,根據用戶應用需求動態(tài)加載和調用。每個插件嚴格遵守系統插件開發(fā)流程進行,首先設計和編寫插件核心算法函數,實現相應的插件接口,設計插件界面并嵌入算法,經過模塊測試后生成動態(tài)鏈接庫文件,然后編寫插件配置文件,系統根據插件配置文件讀取插件信息并分配插件所需的資源,以幫助插件實現特定功能。重磁數據處理及反演軟件系統的插件主要包括3大子系統,每個子系統中又包含相應若干插件,如圖4所示。
圖4 插件集成示意Fig.4 Schematic diagram of plug-in integration
在軟件系統框架中,數據是系統的底層基礎。系統利用“Oracle+ArcSDE+ADO.NET”的模式來設計和構建數據庫體系,用二維表格來管理非空間數據,利用ArcGIS的Geodatabase管理空間數據,并通過ArcSDE和Ado.net組織和調用,通過內部關聯字段實現空間和非空間數據的關聯。影像數據通過柵格目錄Raster Catalog管理。[6]
數據包括:① 空間數據:共有DEM、衛(wèi)星遙感影像、基礎地理信息、重磁信息、地質信息5個數據集,數據集組織結構包括點、線、面要素和注記。② 屬性數據:包括字段名稱、說明及字段類型,分為基礎地理數據(水系、交通、地形等)、重磁數據(重力、磁力)、地質數據(構造、地層、巖性、鉆孔等)及系統輔助信息(系統日志、系統用戶、角色、權限等),用于數據庫的查詢、交互操作及系統運行維護。③ 三維模型數據:包括地上、地表及地下的主要建筑物、道路、管線及地質體等的模型及紋理。模型屬性含有標識碼、序號、模型名稱、類型及屬性描述等字段,采用分層分級文件組織方式存儲。④ 元數據:包含數據標識、內容說明、質量說明、坐標系統、更新維護信息等,和相應空間數據實行同步管理和更新。
綜合解釋體系是利用重磁計算結果和地質、地理、測繪數據,通過對幾何形體和物性信息進行數據查詢、三維瀏覽、定量量算和GIS空間分析,使得重磁數據處理及反演結果與多源、多維、多類型信息相融合,通過三維可視化的方式進行數據信息集成顯示,對多領域信息進行集成分析及綜合解釋,最終形成定量化的綜合信息地質結論。
2.3.1 信息查詢
信息查詢是根據查詢請求,訪問系統數據庫體系,按照查詢要求搜索目標數據。分為兩類,一類是根據位置信息查詢到屬性,一類是根據值域信息查詢到屬性,需要用到TerraExplorer Pro和ArcGIS Engine組件共同開發(fā),前者獲取查詢條件的坐標信息,后者要根據查詢條件搜尋數據庫,最后通過坐標信息控制三維窗口的飛行定位。
2.3.2 三維場景控制、三維量算和分析
三維場景控制服務于信息綜合解釋。需要用到Skyline的一些接口的功能,實現關鍵是獲取鼠標的狀態(tài)或反饋信息。三維量測和分析用于輔助用戶進行數據綜合分析,幫助地質解釋工作,這里都采用矢量數據進行計算,關鍵是獲取點坐標,基于TerraExplorer Pro完成。
筆者基于組件+插件的開發(fā)技術,架構上具有穩(wěn)固、靈活的特點,多種功能模塊即插即用,可以根據重磁數據處理、反演、解釋的流程需求來制定軟件界面;系統對多元、多維、多類型數據統一管理,開發(fā)綜合解釋體系,實現以重磁數據為基礎的多元數據三維集成分析及綜合解釋。
模塊即插即用,動態(tài)加載是本軟件的一大特色。綜合型軟件通常功能繁多,用戶不易于快速查找需要的模塊,因此根據應用進展制定個性化的軟件界面,使用戶在使用軟件時能快速入手;同時,“即插即用”可以實現軟件快速集成和升級維護,方便軟件更新及補充完善新的功能。
本軟件設計的“插件管理”是對插件進行管理和加載的工具按鈕,當用戶需要使用功能插件時,利用插件管理按鈕對插件進行動態(tài)加載(圖5)。當插件使用完畢后,用戶可對已注冊的插件進行注銷。
圖5 插件管理工具示意Fig.5 Schematic diagram of plug-in management tools
系統的插件功能主要為地球物理數據處理及正反演服務。
系統構成了重磁數據處理及反演一體化功能,包括平面的數據處理和轉換、曲面的數據處理和轉換,以及位場反演功能,如圖6a、b所示。具體在1.2節(jié)和2.1節(jié)已介紹,部分功能展示如圖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
信息查詢是系統根據用戶的查詢請求,訪問系統數據庫,按照查詢要求搜索目標數據。系統具備對空間數據、屬性數據及模型數據的信息查詢功能,包括點擊、范圍框選、關鍵字和屬性查詢等幾種查詢方式,可以通過數據庫實現實體幾何位置、屬性信息的交互查詢。
三維量算和三維分析功能用于利用重磁、地理、地質、測繪等信息,結合重磁數據處理和反演的成果,進行三維數據查詢、視圖瀏覽控制、定量量算和三維分析輔助綜合地質解釋。三維量算包括利用矢量數據對水平距離、垂直距離、空間距離的量測,周長/面積量測、三維坐標查詢及坡度、坡向查詢;三維分析包括二維、三維對象繪圖,室內室外、地下多模式瀏覽、地面透明度、光照、時間軸設置,等高線分析、地形開挖、產狀分析、剖面分析等。
其中,等高線分析以DEM數據為基礎,根據用戶鼠標選擇區(qū)域自動創(chuàng)建等高線,并可設置等高距、樣式等相關屬性;產狀分析根據用戶鼠標選取的點計算該點地層的走向、傾向和傾角;剖面分析將自動加載綜合地質剖面數據生成的剖面模型,可查詢每一地層的屬性信息,包括密度、磁性、地層名稱、所含礦物等,輔助綜合分析。部分功能效果如圖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
筆者研究和設計了基于分層體系的組件+插件的系統架構。在縱向上將系統分為3層體系,建立數據、功能和用戶界面的邏輯層次,在橫向分為平臺和擴展兩大部分,利用組件式GIS技術實現平臺部分的應用,利用插件式GIS技術實現擴展部分的應用,設計了基于Visual Studio開發(fā)環(huán)境和Skyline+ArcGIS組件的框架實現策略和開發(fā)流程,組件+插件的框架結構使得系統基礎功能及核心功能組成平臺的主體,專業(yè)功能部分以插件方式集成到平臺上,用時加載,不用時卸載,能夠實現穩(wěn)固的平臺主體和靈活的擴展應用(即插即用),使系統兼具穩(wěn)定性、靈活性和可擴展性。
為實現將重磁數據處理及反演結果與多學科信息結合,進行三維可視化綜合分析, 筆者將重磁數據處理和反演方法與插件技術相結合,實現重磁平面、曲面數據處理及轉換、及重磁反演功能,實現插件功能動態(tài)加載;設計了多源、多維、多類型數據統一管理模式,完成了包含空間數據庫、屬性數據庫、三維模型庫及元數據庫的數據庫體系建設;利用三維GIS技術實現了對地形、實物及地質體的三維模擬及三維可視化集成顯示;利用GIS組件進行系統二次開發(fā),實現重磁、地質、地理、測繪數據信息查詢、幾何形體及物性的三維定量表達和綜合分析(包括三維瀏覽、三維量算及三維GIS空間分析等功能)。從而將重磁數據處理及反演結果與多源、多維、多類型信息相融合,通過三維可視化的方式進行數據信息集成顯示,在此基礎上對多領域綜合信息進行綜合分析,實現了地球物理多元數據三維集成分析及綜合解釋。
未來一段時間內,功能集成化仍是地球物理軟件的一個重要趨勢,因此,下一步將在現有基礎上進一步拓展插件功能,使系統從數據預處理、處理和轉換、反演解釋、圖形繪制,再到數據管理、GIS分析等形成一個方法齊全、功能完備的體系。