李 鵬,靳德武,程建遠(yuǎn),趙春虎
(1.西安科技大學(xué) 地質(zhì)與環(huán)境學(xué)院,陜西 西安710054;2.中煤科工集團(tuán)西安研究院有限公司,陜西 西安710077)
“玻璃水文地質(zhì)”作為“玻璃地球”的一部分,采用可視化技術(shù)進(jìn)行礦井水文地質(zhì)的三維多尺度建模,直觀展示水文地質(zhì)體、水文地質(zhì)現(xiàn)象和水文地質(zhì)過(guò)程[1-2],為煤礦水害防治提供技術(shù)支撐。三維地質(zhì)建模是實(shí)現(xiàn)數(shù)字礦山建設(shè)的前提和核心基礎(chǔ)[3],三維地質(zhì)模擬通常是通過(guò)分析、解釋、推理、插值和外推來(lái)構(gòu)建地質(zhì)模型?,F(xiàn)有的三維礦井建模軟件有引進(jìn)國(guó)外公司的Surpac、DMine、Micromine 和國(guó)內(nèi)公司的3Dmine 等[4-5],現(xiàn)有軟件主要側(cè)重在采礦工程的規(guī)劃等功能,雖然能夠建立三維實(shí)體模型,但是模型精度不足,一般不支持單獨(dú)修改三維實(shí)體模型中的局部細(xì)節(jié)。因此將建模幾何內(nèi)核Open CASCADE[6]和基于地質(zhì)統(tǒng)計(jì)學(xué)的普通克里金插值算法從底層相結(jié)合,利用Open CASCADE 的三維圖形渲染、可視化交互、編輯等功能和普通克里金的地質(zhì)統(tǒng)計(jì)學(xué)插值功能[7-8],以Visual Studio 為開(kāi)發(fā)工具,以C++和Python 為開(kāi)發(fā)語(yǔ)言,將SQLite 作為數(shù)據(jù)庫(kù)設(shè)計(jì)并開(kāi)發(fā)了Hydrogeo3D 礦井水文地質(zhì)建模軟件。
Hydrogeo3D 軟件的體系結(jié)構(gòu)分為3 層,最上層是水文地質(zhì)建模軟件的圖形用戶界面框架,直接與用戶交互。該部分集成了可視化功能,在軟件界面上顯示用戶交互操作、模型可視化。同時(shí),該層還完成了用戶與軟件之間的數(shù)據(jù)交互。
中間層是建模軟件的核心,包括5 個(gè)部分。第1部分是實(shí)現(xiàn)水文地質(zhì)模型的基本元素的點(diǎn)、線、面、體的構(gòu)建的建模部分;第2 部分是可視化部分,實(shí)現(xiàn)了可視化環(huán)境中對(duì)模型的操作;第3 部分是數(shù)據(jù)交換部分;第4 部分是模型處理和計(jì)算,實(shí)現(xiàn)了模型實(shí)體之間的交集和求和運(yùn)算,該部分提供了建立模型后的間隙、重疊修復(fù)操作;第5 部分是普通克里金算法的Python 實(shí)現(xiàn),與建模部分直接調(diào)用融合。該軟件采用數(shù)據(jù)交換接口,實(shí)現(xiàn)了與其它CAD 軟件的數(shù)據(jù)交換,保證了數(shù)據(jù)的共享。
最底層為Open CASCADE 幾何圖形核心部分,通過(guò)這一部分實(shí)現(xiàn)了點(diǎn)、線、面、體的顯示和交互操作,以及紋理、光照、圖元填充、渲染等圖形操作和放大、縮小、旋轉(zhuǎn)等動(dòng)態(tài)操作。
Hydrogeo3D 軟件功能模塊劃分如圖 1。Hydrogeo3D 軟件實(shí)現(xiàn)的功能分為通用功能模塊和礦井水文地質(zhì)模塊。三維建模通用功能模塊包括二維圖形模塊、三維圖形模塊、網(wǎng)絡(luò)設(shè)置模塊、數(shù)據(jù)讀寫(xiě)模塊、格式轉(zhuǎn)換模塊、CAD 文件讀取模塊和Python 腳本編輯模塊;礦井水文地質(zhì)模塊包括鉆孔數(shù)據(jù)庫(kù)、鉆孔建模模塊和水文地質(zhì)建模模塊。
二維圖形模塊實(shí)現(xiàn)二維對(duì)象點(diǎn)、線、多邊形等的繪制功能,并實(shí)現(xiàn)了編輯工具。另外提供工具來(lái)定義工作平面、網(wǎng)格和捕捉系統(tǒng),用于精確控制幾何圖形的位置。
三維圖形模塊實(shí)現(xiàn)了三維幾何體的快速構(gòu)建、布爾操作、歷史修改和參數(shù)設(shè)置功能。三維幾何基本體是構(gòu)建復(fù)雜模型的基礎(chǔ),復(fù)雜模型可以是頂點(diǎn)、邊、線、面、實(shí)體或其他形狀的組合。
圖1 Hydrogeo3D 軟件功能模塊劃分Fig.1 Software function module of Hydrogeo3D
網(wǎng)格設(shè)置模塊主要設(shè)計(jì)處理三角形網(wǎng)格。網(wǎng)格是一種特殊的三維對(duì)象,由頂點(diǎn)和邊連接的三角形面組成。Hydrogeo3D 可用于導(dǎo)入網(wǎng)格格式的三維數(shù)據(jù)、分析數(shù)據(jù)、檢測(cè)錯(cuò)誤并最終將其轉(zhuǎn)換為實(shí)體。
軟件實(shí)現(xiàn)了腳本編寫(xiě)功能,在提供人機(jī)交互建模的同時(shí),實(shí)現(xiàn)了腳本建模,包括幾何基本體,如線和圓,以及整個(gè)地形形狀范圍,如頂點(diǎn)、線、面、實(shí)體和復(fù)合體。對(duì)于這些對(duì)象中的每一個(gè),都實(shí)現(xiàn)了腳本創(chuàng)建方法,對(duì)于其中的一些方法,尤其是地形形狀,還可以使用布爾聯(lián)合/差/交集等高級(jí)操作。
1.3.1 地層插值
Open CASCADE 提供的數(shù)據(jù)插值功能主要包括對(duì)二維點(diǎn)進(jìn)行Bezier 曲線或二維B 樣條插值,對(duì)三維點(diǎn)進(jìn)行三維Bezier 曲線或B 樣條插值。Bezier 曲線是應(yīng)用于二維圖形的曲線,曲線由頂點(diǎn)和控制點(diǎn)組成,通過(guò)改變控制點(diǎn)坐標(biāo)可以改變曲線的形狀[9];B 樣條是Bezier 曲線的一種一般化,是目前CAD 系統(tǒng)常用的幾何表示方法,主要應(yīng)用于機(jī)械設(shè)計(jì)等領(lǐng)域[10]。以上2 種算法并不適合于礦井水文地質(zhì)建模,Hydrogeo3D 軟件主要應(yīng)用于礦井水文地質(zhì)建模,普通克里金插值是基于統(tǒng)計(jì)學(xué)的插值算法,廣泛應(yīng)用于各類觀測(cè)的空間插值[11]。普通克里金的計(jì)算機(jī)實(shí)現(xiàn)流程圖如圖2。
具體實(shí)現(xiàn)的步驟為:
1)基于觀測(cè)數(shù)據(jù),計(jì)算每2 個(gè)點(diǎn)之間的距離與半方差γ。半方差的計(jì)算方法為:
2)經(jīng)過(guò)第1)步后將得到一系列的(h1,γ1),(h2,γ2),…,(hn,γn)點(diǎn)對(duì),根據(jù)這些點(diǎn)對(duì)的分布情況選擇合適的半方差函數(shù)(主要包括球狀模型、指數(shù)模型、高斯模型、立方模型[12])進(jìn)行擬合,得到半方差與距離的函數(shù)關(guān)系。
圖2 程序?qū)崿F(xiàn)克里金插值流程圖Fig.2 Kriging flow chart
3)根據(jù)第2)步得到的擬合結(jié)果計(jì)算所有已知點(diǎn)之間的半方差γij。
4)對(duì)于未知點(diǎn)z0,計(jì)算它到所有已知點(diǎn)zi,i=1,2,…,n 之間的半方差γi0。
5)求解克里金方程組,得到最優(yōu)系數(shù)λi,i=1,2,…,n。
6)使用求得的λi按是2)對(duì)已知點(diǎn)的屬性值進(jìn)行加權(quán)求和,以得到未知點(diǎn)z0的估計(jì)值
1.3.2 斷層建模
斷層是一種特殊的地質(zhì)構(gòu)造,斷層的影響帶會(huì)構(gòu)成導(dǎo)水通道,往往是礦井底板突水的易發(fā)地點(diǎn)[13],因此斷層的建模對(duì)于礦井水文地質(zhì)的建模非常重要。礦井水文地質(zhì)勘探中斷層的描述主要通過(guò)CAD圖件中的斷層線和物探資料中的斷層屬性參數(shù)來(lái)獲取,針對(duì)這個(gè)特點(diǎn),軟件設(shè)計(jì)了斷層建模功能。為了簡(jiǎn)化斷層的建模方式設(shè)計(jì)了具體的建模流程:
1)首先假設(shè)斷層不存在,利用1.3.1 構(gòu)建的插值算法對(duì)地層數(shù)據(jù)進(jìn)行插值,構(gòu)建地層的整體模型。
2)從CAD 文件導(dǎo)入斷層線文件,或者在模型中手動(dòng)勾畫(huà)斷層線。
3)根據(jù)斷層的走向、傾向和傾角確定斷層面的空間位置,并生成斷層面。
4)將斷層面與步驟1)構(gòu)建的整體模型進(jìn)行布爾運(yùn)算求出斷層面與每一層地層的交線。
5)若斷層面將步驟1)中構(gòu)建的模型直接切割為2 部分,則直接使用斷距來(lái)調(diào)整交線兩側(cè)地層的上下位置;若斷層面將步驟1)中構(gòu)建的模型不能完全切割,則將每一個(gè)地層的交線上的點(diǎn)作為控制點(diǎn)加入到每個(gè)地層的數(shù)據(jù),利用1.3.1 構(gòu)建的插值算法對(duì)交線兩側(cè)地層數(shù)據(jù)進(jìn)行插值,構(gòu)建地層的整體模型。
1.3.3 曲面模型到實(shí)體的轉(zhuǎn)換
地層的曲面模型可以展現(xiàn)地層的走向、地層的高低起伏,為了能夠提取地層的剖面更加直觀的展現(xiàn)地層的內(nèi)部情況和層與層之間的序列關(guān)系,軟件實(shí)現(xiàn)了曲面模型到實(shí)體模型的轉(zhuǎn)換功能。具體的轉(zhuǎn)換方法分為2 種:
1)將曲面轉(zhuǎn)換為點(diǎn)云圖,然后使用泊松曲面重建法將點(diǎn)云構(gòu)建為實(shí)體外殼[14]。這種方法的優(yōu)點(diǎn)是建模速度快,缺點(diǎn)是實(shí)體內(nèi)部沒(méi)有數(shù)據(jù)。
2)以地層上下界面為約束條件,在上下界面內(nèi)垂向和橫向上等距離在空間上插入點(diǎn),之后按照設(shè)定距離以每個(gè)點(diǎn)為中心分別構(gòu)建立方體,最后以立方體填充的形式構(gòu)建實(shí)體地層。
數(shù)據(jù)庫(kù)能夠方便的對(duì)數(shù)據(jù)進(jìn)行檢索和管理,是一種有效的數(shù)據(jù)存儲(chǔ)和管理工具。在Hydrogeo3D 軟件中內(nèi)嵌了SQLite 數(shù)據(jù)庫(kù),SQLite 是一個(gè)C 語(yǔ)言庫(kù),它實(shí)現(xiàn)了一個(gè)小型、快速、自包含、高可靠性、功能齊全的SQL 數(shù)據(jù)庫(kù)引擎。用戶可利用Hydrogeo3D創(chuàng)建地質(zhì)數(shù)據(jù)庫(kù),將地質(zhì)數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)中,通過(guò)軟件將數(shù)字形式的勘探資料用三維圖形的形態(tài)來(lái)管理和利用。
Hydrogeo3D 的地質(zhì)數(shù)據(jù)庫(kù)主要由以下3 種類型的表組成,Hydrogeo3D 為這些表提供了基本的默認(rèn)字段。鉆孔定位表存儲(chǔ)了鉆孔的開(kāi)孔位置及開(kāi)孔坐標(biāo),鉆孔的最大深度和鉆孔的軌跡類型。軌跡類型表明鉆孔軌跡的性質(zhì),主要為直線或者曲線類型。測(cè)斜表存儲(chǔ)鉆孔的測(cè)斜數(shù)據(jù),數(shù)據(jù)主要用來(lái)計(jì)算鉆孔的軌跡,基本的存儲(chǔ)字段包括:工程號(hào)、測(cè)量深度、傾角和方位角。巖性記錄表存儲(chǔ)鉆孔的巖性信息,主要用來(lái)存儲(chǔ)打鉆過(guò)程中巖心識(shí)別階段的信息,字段主要為工程號(hào)、開(kāi)始深度(巖樣起始深度)、終止深度(巖樣結(jié)束深度)、巖性、厚度、備注等。
軟件操作界面分為4 個(gè)區(qū)域:上部為菜單欄和工具欄,中間部分的左側(cè)為文件導(dǎo)航欄和屬性欄,中間部分的右側(cè)為圖形工作區(qū),下部為信息欄和Python 控制臺(tái)。
菜單欄主要的菜單為文件、編輯、視圖、工具、宏、窗口和幫助。工具欄默認(rèn)為文件工具欄和視圖工具欄。文件工具欄設(shè)置了常用的新建、打開(kāi)、保存、剪切、復(fù)原操作等常用工具;視圖工具欄設(shè)置了顯示位置、正視圖、側(cè)視圖、頂視圖等常用顯示工具。文件導(dǎo)航欄主要包括文件瀏覽器和屬性瀏覽器。文件瀏覽器以樹(shù)狀方式顯示模型的組成及其包含的各種文件;屬性瀏覽器顯示選中模型的各種屬性,包括顏色、透明度、光照模式、位置等信息。圖形顯示區(qū)主要用于查看和編輯三維圖形數(shù)據(jù)。顯示模式分為三維模式和二維模式,三維模式下可以對(duì)模型進(jìn)行放大、縮小、旋轉(zhuǎn)等操作;二維模式下實(shí)現(xiàn)了父模型以及所有子模型的選擇、編輯等操作。信息欄主要用于顯示當(dāng)前運(yùn)行的操作產(chǎn)生的后臺(tái)數(shù)據(jù),如通過(guò)普通克里金插值產(chǎn)生的插值數(shù)據(jù)的信息等。Python 控制臺(tái)顯示當(dāng)前執(zhí)行的圖形構(gòu)建命令,在命令欄里輸入Python 命令,然后點(diǎn)擊Enter 鍵,之后會(huì)實(shí)現(xiàn)快捷方式所對(duì)應(yīng)的操作。
形成的地質(zhì)插值界面為了三角網(wǎng)格能夠清晰的顯示,設(shè)置三角網(wǎng)格間隙較大。Hydrogeo3D 軟件與其他三維礦山建模軟件的不同在于,其通過(guò)平臺(tái)的自主開(kāi)發(fā)實(shí)現(xiàn)了曲面內(nèi)部所有三角網(wǎng)格表面和構(gòu)成網(wǎng)格曲線的編輯功能。曲面上的黃色三角網(wǎng)格為生成的曲面的一個(gè)子網(wǎng)格,選擇后可進(jìn)行名稱、透明度、顏色等屬性的編輯。由于實(shí)現(xiàn)了局部網(wǎng)格的編輯功能,因此可以對(duì)地質(zhì)模型進(jìn)行精細(xì)刻畫(huà)。
1)提出了利用Open CASCADE 幾何內(nèi)核與地質(zhì)統(tǒng)計(jì)學(xué)普通克里金算法相結(jié)合建立礦井三維水文地質(zhì)建模軟件的方法,并開(kāi)發(fā)了礦井水文地質(zhì)三維建模軟件Hydrogeo3D,實(shí)現(xiàn)了三維礦井水文地質(zhì)建模功能。
2)針對(duì)Open CASCADE 幾何內(nèi)核屬于CAD 建模內(nèi)核,對(duì)于地質(zhì)建模能力不足的問(wèn)題,利用Python語(yǔ)言實(shí)現(xiàn)了普通克里金算法并將其嵌入礦井水文地質(zhì)三維建模軟件Hydrogeo3D,實(shí)現(xiàn)了三維網(wǎng)格的局部網(wǎng)格、線條編輯的功能,該功能是本軟件與其他類似商用軟件等的最大區(qū)別,可以為水文地質(zhì)精細(xì)化建模提供了技術(shù)手段。