伍偉斌紀洪廣曹善忠
(1.北京科技大學土木與環境工程學院;2.中礦金業股份有限公司)
基于ArcGISEngine的Flac數值模型剖切及云圖自動構建方法*
伍偉斌1紀洪廣1曹善忠2
(1.北京科技大學土木與環境工程學院;2.中礦金業股份有限公司)
為了實現Flac3D的云圖查看功能,基于ArcGISEngine二次開發技術,在模型單元信息基礎上,提出了一種適合于六面塊體網格單元類型的剖切算法,沿3個坐標軸方向實現剖切并且快速生成彩色云圖。利用此方法,可在ArcGISEngine二次開發軟件中對數值模型剖切實現快速查看礦區3個坐標軸方向的應力狀況。
ArcGISEngine 剖切算法 云圖
GIS以其管理空間信息的獨特優越性,已經廣泛應用于城市規劃、資源管理、巖土工程等各個領域和行業。眾所周知,我國處于基礎建設高速發展時期,大規模的基礎建設使巖土工程領域積累的數據急劇增多,出現了所謂的“資料數據爆炸性增長”。因此,如何有效地存儲、管理、交流從而充分利用(包括多次開發利用和綜合開發利用)這些數據,已成為國內巖土工程工作者共同關心的問題。顯然,利用計算機技術建立起巖土工程數據庫系統,使顯示、儲存、管理和利用巖土工程數據信息效果最好,也是最經濟合理的途徑。目前國內外已較廣泛地開展了GIS技術和數據庫技術相結合的巖土工程數據庫系統的開發和研究工作,并取得了可喜的成績[1]。
在礦山開采中,單憑一種預測方法難以準確預測、預報,需要將開采過程中的各種信息綜合分析,由此需要將各種工程信息存儲到統一的數據庫中,ArcGIS的空間數據庫能滿足此條件。Flac3D具有強大的后處理功能,可以輸出包括云圖、矢量圖、動畫等各種格式的結果,但是Flac3D軟件本身對于工程中需要的一些別的分析功能卻不能實現,所以一套針對礦山開采過程中危險性分析的軟件顯得尤其重要。為了實現Flac3D的某些后處理功能,如云圖的輸出,本研究利用ArcGISEngine提供的嵌入式組件庫,在Visual C++開發環境下實現ArcGIS Engine的二次開發,完成對Flac數值模型剖切及剖切平面應力云圖的自動構建。
在ArcGISEngine環境下存儲數據有多種方式,其常見的數據格式包括Shapefile、Coverage、Geodatabase、Tin、Raster、CAD以及RDBMS[2-3]。分析這幾種存儲方式后發現,Tin只能保存三角面片,Raster是四角網格數據,RDBMS存儲的只是屬性信息;只有Shapefile和Geodatabase才能兼容多種數據類型,所以這兩者才符合本系統的要求。其中,Geodatabase數據的整合程度很高,Shapefile的讀寫、顯示速度相對較快。而在Geodatabase的2種子類型中,Personal Geodatabase只需安裝Access就可以使用ArcGIS引擎直接讀寫;Enterprise Geodatabase卻不僅需要安裝大型數據庫軟件,還必須同時安裝Arc SDE運行模塊,并且要為數據服務器與數據庫間建立連接。前者配置簡單且對機器的要求偏低,但數據容量受到Access數據庫系統的嚴格限制。后者安裝、配置較為復雜而且對機器性能要求較高,不過數據的容量幾乎不受數據庫系統的限制。本系統采用的數據庫是Personal Geodatabase,只需要安裝Access就可以滿足系統要求。
Flac數值模型計算結果經過Flac3D軟件處理后得到單元信息、單元6個方向應力信息和單元最大最小主應力信息,以log文件形式保存。單元基本信息包括ID、Type、Model、Group、Centroid(X,Y,Z),單元6個方向應力信息包括ID、S-XX、S-YY、SZZ、S-XY、S-XZ、S-YZ,單元最大最小主應力信息包括ID、Maximum、Intermediate、Minimum。
根據以上3種文件格式,編寫讀取數據接口程序,把3種文件數據以ID為關聯屬性,保存于Access數據庫中。數據保存格式見表1。

表1 Flac數值計算數據保存格式
Flac3D軟件網格模型有六面塊體網格、楔形體網格、四面體網格等多種網格模型,本研究主要以六面塊體網格為對象,以垂直于X、Y、Z 3個方向的平面對模型進行剖切。設六面塊體網格ABCD-A′B′C′D′的型心為O,垂直于Z軸平面為EFGH,O點到平面EFGH的距離為d,見圖1。

圖1 單元網格
以平面EFGH為剖切平面對數值模型進行剖切,以Z方向剖切為例,沿Z方向單元長度取平均值r,當單元型心O到剖切平面EFGH的距離d小于r/2時,則認為該單元被平面剖切到。只要計算數據庫中所有單元型心到平面EFGH的距離,當距離小于r/2時視為滿足條件,把滿足條件的所有單元選取出來就能得到被剖切平面所切到的所有單元。根據此原理編寫程序,把所有選中的單元輸出生成一個臨時txt文件,該txt文件的字段名與表1所示一致。
DEM即數字高程模型,主要包括規則格網模型(GRID)和不規則三角網模型(TIN)2種形式,其中,GRID通常是正方形,也可以是矩形、三角形等規則網格。TIN模型根據區域有限個點集將區域劃分為相連的三角形網格,區域中任意點落在三角形的頂點、邊上或三角形內[4]。ArcGIS提供了RASTER和TIN 2個類型的數據,它們分別對應GRID和TIN數據,本研究以TIN為基礎顯示云圖。
在剖切過程中生成了一個臨時txt文件,保存了被剖切到的單元信息,利用ArcGIS Engine的接口IWorkspaceFactory的OpenFromFile函數打開該臨時文件txt所在的文件夾得到IWorkspace指針,然后利用IWorkspace打開txt文件得到數據集。具體數據操作流程見圖2。

圖2 數據操作流程
通過圖2所示的數據操作后得到IFeatureClass指針,指向txt文件數據集,利用IFeatureClass指針構建Tin,然后選擇高程字段,調用接口ITinEdit的函數AddFromFeatureClass將高程信息增加到Tin中,獲得帶有高程信息的Tin在主界面中顯示。
將本方法運用于山東招遠市中礦金業集團玲南礦區,該礦區的數值模型計算結果已經保存在Arc-GIS空間數據庫中,依據本次所提出的方法可以快速地查看某個水平剖面的單元屬性云圖的情況。軟件所產生的某一位置水平方向S-YY應力狀況與利用Flac3D軟件讀取模型后產生的S-YY應力狀況見圖3、圖4。從2幅云圖可以看出,本次所提出的方法得到的云圖與利用Flac3D軟件所產生的云圖是一致的。

圖3 水平方向S-YY應力狀況

圖4 Flac3D中水平方向S-YY應力狀況
利用本研究所提的方法在ArcGIS Engine二次開發軟件中所得到的云圖與Flac3D軟件所得到的云圖基本一致,由此可以看出此方法是可行的。本次所提方法的不足之處是在剖切算法中模型單元長度經常是不一致的,導致單元長度平均值r的取值可能會出現偏差,由此會影響剖切結果。
[1]郭 明.GIS在巖土工程領域的應用[J].西部探礦工程,2006(7):7-10.
[2]賈 寧.工程安全監測信息的空間表達與分析方法研究[D].北京:北京科技大學,2008.
[3]黃 云.MapGIS向ArcGIS數據格式轉換方法探討[J].地礦測繪,2010,26(1):33-35.
[4]韓 鵬,徐占華,褚海峰,等.地理信息系統開發——ArcObjects方法[M].武漢:武漢大學出版社,2005.
Cutting M ethod and Automatic Generating Image of Numerical M odel of Flac Based on ArcGIS Engine
Wu Weibin1Ji Hongguang1Cao Shanzhong2
(1.School of Civil and Environmental Engineering,University of Science and Technology Beijing;2.Zhongkuang Gold Limited by Share Ltd.)
Based on secondary development of ArcGISEngine,a cutting algorithm suitable for grid cells of six-sided block was proposed on the foundation of zone information of models in order to achieve the function of cloud picture view.The algorithm can achieve cutting model along three axis directions and quickly generate color cloud picture.According to themethod,the stress condition of three axis direction can be quickly showed by cutting numericalmodels based on secondary development of ArcGISEngine.
ArcGISEngine,Cutting algorithm,Cloud picture
2013-07-22)
* 國家重大基礎研究發展計劃(973計劃)項目(編號:2010CB226803,2010CB731501),國家自然科學基金項目(編號:51174015),“十二五”國家科技支撐計劃項目(編號:2012BAK09B07)。
伍偉斌(1986—),男,博士研究生,100083北京市海淀區學院路30號。