張 鳳,王軍委
(安徽理工大學(xué) 測(cè)繪學(xué)院,安徽 淮南 232001)
鉆孔數(shù)據(jù)的獲取一般是進(jìn)行野外實(shí)地采集,它具有空間位置連續(xù)且空間屬性隨空間位置變化而變化的特點(diǎn)[1]。鉆孔運(yùn)動(dòng)軌跡在鉆孔偏斜[2]及安全生產(chǎn)方面具有十分重要的意義。隨著科學(xué)技術(shù)的發(fā)展,一些針對(duì)鉆孔數(shù)據(jù)進(jìn)行管理的軟件開(kāi)始出現(xiàn),但是這些系統(tǒng)軟件側(cè)重于數(shù)據(jù)管理和數(shù)字制圖,對(duì)于鉆孔運(yùn)動(dòng)軌跡沒(méi)有形象的視覺(jué)顯示[3]。因此,部分學(xué)者通過(guò)建立模型的方法對(duì)鉆孔軌跡的可視化進(jìn)行了研究,如胡玉超[4]將鉆孔軌跡的計(jì)算方法結(jié)合Voxler 三維可視化功能,實(shí)現(xiàn)鉆孔可視化顯示。許哲平等[5]集成鉆孔分層數(shù)據(jù)及相關(guān)的多源數(shù)據(jù),利用虛擬現(xiàn)實(shí)技術(shù)(VRML)開(kāi)發(fā)了具有編輯、管理、發(fā)布和制圖功能的三維可視化鉆孔數(shù)據(jù)管理系統(tǒng)。這些系統(tǒng)具有專業(yè)性強(qiáng)、操作復(fù)雜的特點(diǎn),并且需要將軟件安裝部署在本機(jī)上,使用起來(lái)比較繁瑣。本文在鉆孔軌跡三維場(chǎng)景可視化探究的基礎(chǔ)上,結(jié)合Web技術(shù)可以很好地解決這一問(wèn)題。
本文根據(jù)實(shí)測(cè)的鉆孔數(shù)據(jù),建立模型,實(shí)現(xiàn)在瀏覽器頁(yè)面自動(dòng)顯示鉆孔在地下行進(jìn)的三維運(yùn)動(dòng)軌跡。通過(guò)鉆孔運(yùn)動(dòng)軌跡的三維場(chǎng)景,可以更加直觀地獲取鉆孔的深度和偏移。鉆孔地下運(yùn)動(dòng)軌跡的水平投影可以更直觀地反映出鉆孔在二維水平面上的傾斜程度。
VRML本質(zhì)上是一種面向網(wǎng)絡(luò)、面向?qū)ο蟮娜S造型語(yǔ)言,是一種解釋性語(yǔ)言,支持Javascript腳本語(yǔ)言,具有較強(qiáng)的交互性,可以實(shí)現(xiàn)多用戶交互,人們可以共享虛擬空間,共同設(shè)計(jì)產(chǎn)品。此外,VRML還具有擴(kuò)展性高、多操作平臺(tái)選擇性、帶寬要求低的優(yōu)點(diǎn)。特別是1998年12月成立的Web 3D聯(lián)盟制定的X3D標(biāo)準(zhǔn),對(duì)推動(dòng)VRML、Java和XML等技術(shù)的結(jié)合有極其重要的意義[6]。
VRML中最基本的元素是節(jié)點(diǎn),節(jié)點(diǎn)之間形成層次結(jié)構(gòu)[7],被定義的節(jié)點(diǎn)集合可表達(dá)復(fù)雜的景物。因此,可以借助VRML對(duì)現(xiàn)實(shí)世界中的三維實(shí)體進(jìn)行三維場(chǎng)景的再現(xiàn)。VRML與Web技術(shù)結(jié)合形成Web 3D技術(shù),解決用數(shù)字形式表達(dá)現(xiàn)實(shí)世界中地理實(shí)體復(fù)雜性時(shí)遇到的諸多問(wèn)題。Web 3D技術(shù)使得地理實(shí)體三維建模和瀏覽變得更加便捷、靈活[8-9]。目前,Web 3D技術(shù)以其良好的視覺(jué)體驗(yàn)和動(dòng)態(tài)交互效果在網(wǎng)上看房[10]、遠(yuǎn)程教育[11]、虛擬社區(qū)[12]等方面得到了廣泛的應(yīng)用。在地質(zhì)學(xué)研究方面,Web 3D技術(shù)可以將復(fù)雜地質(zhì)結(jié)構(gòu)在瀏覽器界面上進(jìn)行實(shí)體模型再現(xiàn),克服了傳統(tǒng)繪制二維地質(zhì)結(jié)構(gòu)圖程序繁雜和地質(zhì)信息表達(dá)抽象等缺陷[13]。
BS Contact是由德國(guó)Bitmanagement Software GmbH公司開(kāi)發(fā)的x3d播放器,圖形渲染效果良好,它在實(shí)現(xiàn)x3d標(biāo)準(zhǔn)的大部分節(jié)點(diǎn)的同時(shí)也豐富了一些新的節(jié)點(diǎn),為三維虛擬系統(tǒng)開(kāi)發(fā)提供了編程接口,通過(guò)BS Contact播放器可以顯示VRML的三維模型。
研究中使用的鉆孔數(shù)據(jù)來(lái)源于鉆孔資料,篩選出需要的開(kāi)孔坐標(biāo)、各測(cè)點(diǎn)的孔斜參數(shù)、測(cè)點(diǎn)數(shù)量,建立數(shù)據(jù)庫(kù)。
基于VRML的三維Web技術(shù)已經(jīng)成為三維可視化的實(shí)施標(biāo)準(zhǔn),因此,數(shù)據(jù)庫(kù)中的數(shù)據(jù)結(jié)構(gòu)既要滿足空間矢量數(shù)據(jù)存儲(chǔ)格式,便于進(jìn)行空間分析,又要盡量接近VRML數(shù)據(jù)結(jié)構(gòu)從而減少數(shù)據(jù)轉(zhuǎn)換時(shí)間,提高系統(tǒng)的效率。矢量數(shù)據(jù)模型之間的拓?fù)潢P(guān)系是空間分析的基礎(chǔ)[14],利用拓?fù)潢P(guān)系重建地理實(shí)體是研究地理問(wèn)題的常用手段。本研究借鑒李青元的結(jié)點(diǎn)-邊-環(huán)-曲面片-體五組拓?fù)潢P(guān)系[15]的思想,在SQL Server數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)表(Point)。按照空間矢量結(jié)構(gòu)模型將鉆孔數(shù)據(jù)存儲(chǔ)在Point數(shù)據(jù)表中,表中存儲(chǔ)了鉆孔的空間位置數(shù)據(jù)和屬性數(shù)據(jù)。表1中px,py,pz為鉆孔在空間坐標(biāo)系的坐標(biāo)值。px,py為鉆孔點(diǎn)的x,y坐標(biāo),pz代表孔深,pNode為鉆孔取樣點(diǎn)順序編號(hào)。
表1 Point數(shù)據(jù)
與傳統(tǒng)的桌面應(yīng)用程序軟件相比較,B/S系統(tǒng)軟件不需要進(jìn)行軟件安裝,只需要部署在服務(wù)器上,用戶可以通過(guò)同1個(gè)網(wǎng)址就可以訪問(wèn)部署在服務(wù)器上的資源, B/S系統(tǒng)架構(gòu)分為三部分,即客戶端、中間應(yīng)用層、數(shù)據(jù)庫(kù)服務(wù)器層??蛻舳酥恍枰?個(gè)瀏覽器和1個(gè)VRML播放器插件即可,無(wú)需安裝復(fù)雜的應(yīng)用軟件就可以通過(guò)瀏覽器訪問(wèn)服務(wù)器上的資源。中間應(yīng)用層由Web服務(wù)器和應(yīng)用服務(wù)器兩大部分組成。數(shù)據(jù)庫(kù)服務(wù)器則主要是空間數(shù)據(jù)庫(kù)。系統(tǒng)各層次交互過(guò)程如圖1所示??蛻舳伺cWeb服務(wù)器之間通過(guò)接收和發(fā)送HTTP協(xié)議實(shí)現(xiàn)數(shù)據(jù)的傳輸。應(yīng)用服務(wù)器接收Web服務(wù)器轉(zhuǎn)發(fā)的HTTP請(qǐng)求后轉(zhuǎn)換為數(shù)據(jù)庫(kù)服務(wù)器可以識(shí)別的SQL語(yǔ)句,數(shù)據(jù)庫(kù)服務(wù)器處理接收的SQL語(yǔ)句并將操作后的結(jié)果集返回給應(yīng)用服務(wù)器,應(yīng)用服務(wù)器將結(jié)果集轉(zhuǎn)發(fā)至Web服務(wù)器,最后Web服務(wù)器再發(fā)出HTTP響應(yīng)至瀏覽器端,最終將數(shù)據(jù)庫(kù)中的鉆頭數(shù)據(jù)導(dǎo)入到VRML場(chǎng)景中并在瀏覽器中顯示。
圖1 B/S架構(gòu)模式
采用B/S架構(gòu)模式可以將復(fù)雜的邏輯運(yùn)算部分部署到服務(wù)器上,大大減少客戶端的壓力且易于維護(hù)和升級(jí),減少運(yùn)營(yíng)維護(hù)成本。系統(tǒng)完成之后可以利用服務(wù)器商搭建好的環(huán)境進(jìn)行發(fā)布,用戶只需要買(mǎi)1個(gè)網(wǎng)址和1個(gè)空間,登錄網(wǎng)址后將系統(tǒng)文件部署上去,連接互聯(lián)網(wǎng)就可以通過(guò)網(wǎng)址訪問(wèn)該系統(tǒng)。
VRML用樹(shù)狀的場(chǎng)景圖(有向無(wú)環(huán)圖)描述三維世界。樹(shù)狀圖下有多個(gè)節(jié)點(diǎn),每1個(gè)節(jié)點(diǎn)相當(dāng)于1個(gè)對(duì)象集,其中,每個(gè)節(jié)點(diǎn)的屬性包含在域(field)和事件(event)中,根據(jù)各節(jié)點(diǎn)的父子關(guān)系連接形成場(chǎng)景圖。形體造型節(jié)點(diǎn)分為簡(jiǎn)單造型節(jié)點(diǎn)和高級(jí)造型節(jié)點(diǎn)。簡(jiǎn)單造型節(jié)點(diǎn)有Box節(jié)點(diǎn)、Cylinder 節(jié)點(diǎn)、Sphere節(jié)點(diǎn)、Cone節(jié)點(diǎn)等。高級(jí)造型節(jié)點(diǎn)有Coordinate節(jié)點(diǎn)、PointSet節(jié)點(diǎn)、IndexedLineSet節(jié)點(diǎn)、IndexedFaceSet節(jié)點(diǎn)等。文本造型節(jié)點(diǎn)包括Text節(jié)點(diǎn)、FontStyle節(jié)點(diǎn)。造型外觀節(jié)點(diǎn)包括Shape節(jié)點(diǎn)、Appearance節(jié)點(diǎn)、Material節(jié)點(diǎn)、ImageText節(jié)點(diǎn)、MovieTexture節(jié)點(diǎn)、PixeTexture節(jié)點(diǎn)、TexttureCooedinate節(jié)點(diǎn)、Color節(jié)點(diǎn)等。其他節(jié)點(diǎn)還有增加真實(shí)感及渲染能力的SpotLight節(jié)點(diǎn)、Color節(jié)點(diǎn)、Material節(jié)點(diǎn)、ImageTexture Image節(jié)點(diǎn)等以及改善背景效果的Background節(jié)點(diǎn)、Fog節(jié)點(diǎn)等。
PointSet節(jié)點(diǎn)可以用來(lái)表現(xiàn)現(xiàn)實(shí)場(chǎng)景中分散的點(diǎn),如夜空中的星星和燈光。利用此節(jié)點(diǎn)描述現(xiàn)實(shí)點(diǎn)狀地物在虛擬場(chǎng)景中的位置,本文利用該節(jié)點(diǎn)顯示鉆孔采樣點(diǎn)在地下的位置。
PointSet
{
coord NULL # exposed field SFNode
color NULL # exposed field SFNode
}
域 :
coord包括1個(gè)Coordinate節(jié)點(diǎn),即點(diǎn)集使用的一系列頂點(diǎn);color包括1個(gè)Color節(jié)點(diǎn),列出點(diǎn)集使用的一系列顏色,其中,每個(gè)點(diǎn)即一種顏色。
1個(gè)IndexedLineSet節(jié)點(diǎn)代表1個(gè)線狀3D形體。1個(gè)線狀3D形體由1組指定頂點(diǎn)形成。coordIndex域的索引值將各個(gè)頂點(diǎn)按照指定的順序相互連接以形成線段,尤其注意當(dāng)索引值為-1時(shí),即當(dāng)前連接的線段已經(jīng)結(jié)束,將開(kāi)始下1個(gè)線段的連接。利用該節(jié)點(diǎn)將鉆孔采樣點(diǎn)按照指定的順序依次連接以形成鉆孔在地下的運(yùn)動(dòng)軌跡。
IndexedLineSet
{
coord NULL # exposed field SFNode
coordIndex [ ] # MFInt32
color NULL # exposed field SFNode
colorIndex [ ] # MFInt
colorPerVertex TRUE # SFBool
}
域 :
coord 包括1個(gè)Coordinate節(jié)點(diǎn),點(diǎn)集使用的一系列頂點(diǎn);coordIndex 指向Coordinate節(jié)點(diǎn)的1個(gè)索引列表,指明頂點(diǎn)是以順序相連接;color 包括1個(gè)Color節(jié)點(diǎn),指明每個(gè)頂點(diǎn)的屬性或使面著色的顏色列表;colorIndex 指向Color節(jié)點(diǎn)的索引列表;colorPerVertex根據(jù)索引值,判斷把某種顏色賦給頂點(diǎn)(TRUE)還是賦給折線(FALSE)。
事件:
set_colorIndex eventIn MFInt32
//設(shè)置colorIndex域的值。
set_coordIndex eventIn MFInt32
//設(shè)置coordIndex域的值。
圖2 三維場(chǎng)景模型構(gòu)建
利用Web 3D技術(shù)開(kāi)發(fā)鉆孔在地下運(yùn)動(dòng)軌跡自動(dòng)成圖的系統(tǒng),首先將鉆孔數(shù)據(jù)以拓?fù)潢P(guān)系表的形式存儲(chǔ)在SQL SERVER關(guān)系型數(shù)據(jù)庫(kù)中,然后將數(shù)據(jù)庫(kù)中的鉆孔數(shù)據(jù)導(dǎo)入到VRML場(chǎng)景中,最終在瀏覽器界面上顯示出鉆孔的運(yùn)動(dòng)軌跡三維模型。如圖2所示,VRML技術(shù)本身并沒(méi)有提供可以訪問(wèn)數(shù)據(jù)庫(kù)的節(jié)點(diǎn),所以需要在后臺(tái)通過(guò)C#語(yǔ)言將存儲(chǔ)在數(shù)據(jù)庫(kù)中的鉆孔數(shù)據(jù)按照VRML可識(shí)別的節(jié)點(diǎn)格式從數(shù)據(jù)庫(kù)中讀取出來(lái),借助JavaScript腳本語(yǔ)言將讀取出來(lái)的鉆孔數(shù)據(jù)以事件的形式通過(guò)事件輸入接口導(dǎo)入到的VRML的PointSet節(jié)點(diǎn)、IndexedLineSet節(jié)點(diǎn)形成鉆孔的采樣點(diǎn)和鉆孔的運(yùn)動(dòng)軌跡,從而構(gòu)建出鉆頭和鉆孔的運(yùn)動(dòng)軌跡三維模型。
VRML技術(shù)提供了場(chǎng)景與外界的交互EAI 接口[16],其中,setNodeEventIn接口支持Javascript訪問(wèn)。由于鉆孔運(yùn)動(dòng)軌跡的三維模型是在BS Contact播放器中進(jìn)行顯示,故需要通過(guò)1個(gè)object控件將BS Contact播放器嵌入到Web網(wǎng)頁(yè)中[17]實(shí)現(xiàn)三維模型在網(wǎng)頁(yè)中的顯示。為方便用戶瀏覽和操作,用戶連接互聯(lián)網(wǎng),通過(guò)操控鼠標(biāo)實(shí)現(xiàn)在瀏覽器上對(duì)三維地質(zhì)模型的旋轉(zhuǎn)、平移、放大、縮小等交互操作。
Web 3D建模技術(shù)不同于傳統(tǒng)的建模技術(shù)。傳統(tǒng)的建模技術(shù)用戶需要下載安裝軟件,使用過(guò)程復(fù)雜。Web 3D建模技術(shù)用戶端只需要1個(gè)瀏覽器和1個(gè)輕量級(jí)的VRML播放器插件,通過(guò)1個(gè)網(wǎng)址就可以訪問(wèn)該系統(tǒng)。這種系統(tǒng)具有維護(hù)成本較低、可擴(kuò)展性強(qiáng)、實(shí)時(shí)、快速進(jìn)行建模的優(yōu)點(diǎn)。
通過(guò)上述構(gòu)建的模型實(shí)現(xiàn)了鉆孔數(shù)據(jù)在數(shù)據(jù)庫(kù)中的讀取與存儲(chǔ)以及鉆孔運(yùn)動(dòng)軌跡三維模型的建立,再到將鉆孔運(yùn)動(dòng)軌跡的三維模型和二維水平投影模型顯示在瀏覽器界面。最后的網(wǎng)頁(yè)運(yùn)行結(jié)果如圖3所示。
圖3 鉆孔運(yùn)動(dòng)軌跡場(chǎng)景
本研究基于已有的鉆孔數(shù)據(jù),利用Web 3D技術(shù)將鉆頭運(yùn)動(dòng)軌跡在網(wǎng)頁(yè)界面上進(jìn)行三維建模顯示和二維的水平投影。結(jié)合鉆孔數(shù)據(jù)二維與三維的場(chǎng)景可以對(duì)鉆孔軌跡有更直觀地認(rèn)識(shí)。鉆孔數(shù)據(jù)的三維運(yùn)動(dòng)軌跡可以全面地、動(dòng)態(tài)地、多角度地觀察鉆孔在地下的運(yùn)動(dòng)行徑,二維平面的投影可以一目了然地反映鉆孔的水平偏斜程度。鉆孔數(shù)據(jù)的網(wǎng)頁(yè)可視化系統(tǒng)展示了鉆頭運(yùn)動(dòng)軌跡的三維場(chǎng)景,讓更多的地質(zhì)研究者通過(guò)網(wǎng)絡(luò)了解鉆孔數(shù)據(jù),有助于進(jìn)一步推廣鉆孔軌跡研究,為鉆孔軌跡自動(dòng)建模研究工作提供思路
本文所作研究工作尚不完善,未來(lái)可在此研究的基礎(chǔ)上進(jìn)行更深入的擴(kuò)展,如將數(shù)據(jù)表設(shè)計(jì)得更完善豐富,使其可以存儲(chǔ)更多的鉆孔屬性信息。未來(lái)隨著數(shù)字化在地質(zhì)領(lǐng)域的深入發(fā)展,地質(zhì)三維建模不僅可以表達(dá)勘察成果,更可以對(duì)鉆孔數(shù)據(jù)進(jìn)行分析和校核,對(duì)地質(zhì)勘探工作起到輔助決策的作用。