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