廖珊珊,殷 牧
(湖南省地質(zhì)礦產(chǎn)勘查開發(fā)局四一六隊,湖南 株洲 412007)
隨著計算機技術(shù)與虛擬現(xiàn)實技術(shù)的快速發(fā)展與廣泛應用,數(shù)字礦山(Digital Mine,簡稱DM)成為可持續(xù)發(fā)展的必然趨勢。我隊將工程測量、礦山測量、三維建模、航測遙感等測繪數(shù)據(jù)處理方面的開發(fā)經(jīng)驗和功能模塊進行集成和優(yōu)化,于2017年7月進行科研立項,成立了專門的項目組,組織開發(fā)系統(tǒng)化的功能軟件----《采礦巷道三維可視化系統(tǒng)》。
為采礦巷道三維可視化系統(tǒng)集采礦區(qū)地表建筑物和地下巷道建模、工作空間數(shù)據(jù)源管理、場景瀏覽、圖層管理、測量等功能于一體,主要功能模塊介紹如下。
涵蓋了工作空間、數(shù)據(jù)源和數(shù)據(jù)集管理,SuperMap將所有的數(shù)據(jù)以工作空間的形式進行存儲,工作空間中存儲的數(shù)據(jù)包括數(shù)據(jù)源、地圖、布局、場景和資源。本系統(tǒng)通過導入CAD數(shù)據(jù)來進行地表數(shù)據(jù)建模。
通過本軟件提供的場景功能可以控制場景中的狀態(tài)條、比例尺、經(jīng)緯網(wǎng)、海洋、大氣、太陽和導航羅盤的顯示,也可以進行選擇、平移、刷新、全球和全屏操作,還可以進行地表透明度的設置,通過設置地表透明度來觀察地下的巷道運行情況。
利用可以向本系統(tǒng)中添加矢量數(shù)據(jù)、影像數(shù)據(jù)、地形數(shù)據(jù)和KML模型數(shù)據(jù)。
測量工具可以測量物體的地面長度和面積,也可以測量空間長度和面積,還可以測量垂直高度。
C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運行于.NET Framework之上的高級程序設計語言。C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優(yōu)雅的語法風格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。
本系統(tǒng)研發(fā)的主要技術(shù)路線如下。
首先進行分析,而不是一上手就開始做,而分析的第一步,就是搞清楚程序的功能是什么,它能夠做些什么。把需求進行匯總,明確程序要實現(xiàn)的功能。
分程序界面和程序結(jié)構(gòu)兩部分實現(xiàn)程序。引用程序集,創(chuàng)建項目和窗體后從工具箱中加入控件,對界面進行修改;分別編寫各功能模塊,依次定義類,編寫源代碼并進行代碼注釋。
VS中的調(diào)試默認設置為/optimize-和/debug:full開關(guān),生成的程序集為調(diào)試版本,生成的IL代碼和最終的本地代碼不會被優(yōu)化,生成時除了主要文件外,還包括調(diào)試信息;發(fā)布默認設置為/optimize+和/debug:pdbonly開關(guān),不包含調(diào)試信息,生成的IL代碼和最終的本地代碼均會被優(yōu)化。最終,我們需要的將是“發(fā)布”版本的程序。
可以使用VS或其它打包軟件,將程序打包為安裝文件,但打包程序集最簡單的方式就是直接復制所有文件。卸載程序集時,刪除文件即可。之所以能實現(xiàn)這份簡單的安裝/移動/卸載,是因為每個程序集都用元數(shù)據(jù)指明了自己引用的程序集,不需要依靠注冊表設置。
完成系統(tǒng)的封裝并申報計算機軟件著作權(quán)登記證書。
在數(shù)據(jù)被設計成兩張表,一張為巷道點表,另一張為巷道線表,巷道點表中ID為數(shù)據(jù)庫表自帶的唯一標識字段,Pt_id表示巷道點,由三部分組成,包括點所在的層、所屬的線和點號,比如:250_1_1表示250高程面的第一條巷道線的第一個點;pt_x表示巷道點X的坐標;pt_y表示巷道點Y的坐標;pt_z表示巷道點Z的坐標;info表示點附加的信息。
文件菜單包括“工作空間”、“數(shù)據(jù)源”、“新建數(shù)據(jù)集”和“導入數(shù)據(jù)集”等功能,SuperMap是以“工作空間”的形式來保存數(shù)據(jù)的,用戶可以通過新建三維巷道的數(shù)據(jù)源,然后向數(shù)據(jù)源中導入CAD數(shù)據(jù)。本系統(tǒng)安裝目錄下已新建好巷道工作空間“XD”直接打開即可。
“工作空間”存儲了一個工程項目中所有的數(shù)據(jù)源,以及地圖的組織關(guān)系,“工作空間”通過其中的數(shù)據(jù)源集合對象(Datasources)和地圖集合對象(Maps)來管理其下的數(shù)據(jù)源和地圖等。
Datasources:數(shù)據(jù)源集合。對數(shù)據(jù)源進行管理,其中存儲的是每一個數(shù)據(jù)源邏輯上的連接信息,實際的數(shù)據(jù)源都是存儲在數(shù)據(jù)庫或者SDB中。Datasources可以管理多種類型的數(shù)據(jù)源,實現(xiàn)對多種類型和來源的數(shù)據(jù)源進行無縫管理。
數(shù)據(jù)集是同種類型數(shù)據(jù)的集合,比如:點數(shù)據(jù)集、線數(shù)據(jù)集。數(shù)據(jù)集類(Dataset)是所有數(shù)據(jù)集類型的基類。一個數(shù)據(jù)源通常由多個不同類型的數(shù)據(jù)集組成。用戶根據(jù)自己的實際需要,或者按照數(shù)據(jù)集的特征、或按照不同的使用目的來組織它們,把它們存放到不同的數(shù)據(jù)源中。
場景菜單中可以控制三維場景的屬性和鼠標選擇的狀態(tài),當選擇“全球”命令時,視線將由局部轉(zhuǎn)為全球狀態(tài)。當開啟地下屬性時,可以選擇地表的透明度以便來觀察地下巷道。
根據(jù)要素的空間特征的不同,矢量數(shù)據(jù)集又分為點數(shù)據(jù)集、線數(shù)據(jù)集和面數(shù)據(jù)集等。
從在操作過程中,首先向當前場景中添加地形DEM數(shù)據(jù),雙擊“DatasetDEM_1”數(shù)據(jù)集,并且選擇“將數(shù)據(jù)集作為地形加載”。再將礦區(qū)影像添加到場景中,直接雙擊“馬_影像”。
接下來進行地表的建模,通過二維的面數(shù)據(jù)拉伸貼圖快速生成建筑物模型。參數(shù)設置:選擇建模圖層為二維的面圖層,高度模式為相對地表。高度模式用于指示SuperMap組件產(chǎn)品解析三維數(shù)據(jù)海拔高度值的方式有:貼地表模式、距地相對高度模式、絕對海拔模式、相對地下模式、地下相對模式、地下絕對模式等。
貼地模式為三維數(shù)據(jù)的海拔高度完全忽略,各三維對象將依據(jù)其經(jīng)緯度信息,根據(jù)地形起伏狀態(tài)附著在地形表面,即相對于地形表面的高度為零。
相對地表模式為海拔高度值是以經(jīng)緯度坐標值正下方的地平面為基準的海拔高度。例如,在山區(qū)中架設電線桿,每根電線桿的高度假設為25米,選擇距地相對高度模式,就可以實現(xiàn)與客觀現(xiàn)實一致的效果,即每根電線桿的底端位置隨著地形上下起伏。
當前高度模式為絕對高度模式,將三維面幾何對象添加到具有地形數(shù)據(jù)的三維場景中,若該三維面幾何對象的邊界節(jié)點高程值均為5800米,則該對象將忽略地形起伏,在距離水平面5800米高度處顯示。地下相對模式,該高度模式以地形表面為基準,與相對地表模式(RelativeToGround)高度模型正好相反,用于地下場景的瀏覽。
添加“road”道路數(shù)據(jù)集到場景中,并將道路以“縣、鄉(xiāng)道路(1)”的圖層樣式進行符號化,最終整個地表建模的效果如圖1所示。
圖1 地表建模效果圖
GeoStyle3D.BottomAltitude=-100時,表示對象放置于地表以下100米處,基準面為地形表面。手動輸入建筑物的高度,點擊選擇側(cè)面圖片和選擇頂面圖片。添加“road”道路數(shù)據(jù)集到場景中,并將道路以“縣、鄉(xiāng)道路(1)”的圖層樣式進行符號化,最終整個地表建模效果。接下來進行地下的巷道建模,點擊“巷道建?!?,選擇“場景”、“地下屬性”開啟地表透明度,使得地下巷道可見,如圖2所示:
圖2 地下巷道內(nèi)部圖
《采礦巷道三維可視化系統(tǒng)》能直觀顯示地下采礦區(qū)域及巷道的分布走向,以及巷道和地面的位置關(guān)系,實現(xiàn)地下巷道的可視化表達、空間分布優(yōu)化分析。通過該軟件,可應用于地質(zhì)勘探、資源評估、面積量測、災害搶險等方面,可極大提高工作效率,節(jié)省生產(chǎn)成本,確保產(chǎn)品的質(zhì)量,符合現(xiàn)在數(shù)字化礦山的高級軟件。