徐志強,王龍輝
(核工業(yè)二〇八大隊,內(nèi)蒙古 包頭 014010)
我國砂巖型鈾礦儲量計算主要使用礦體水平投影圖,現(xiàn)有礦體水平投影圖制作,首先是利用地質(zhì)技術(shù)人員提供的礦段揭穿點深度,結(jié)合測斜成果,計算得到揭穿點的坐標(biāo),把揭穿點坐標(biāo)通過測繪軟件CASS 7.0展繪到圖形里,按照礦化信息,把工業(yè)孔、礦化孔、異常孔的符號手工添加進(jìn)圖形;然后,將平米鈾含量、厚度、品位等參數(shù)按一定格式,通過計算機輸入對應(yīng)鉆孔。依據(jù)基點基線位置,繪出勘探網(wǎng),結(jié)合鉆孔的坐標(biāo)值范圍生成圖框;最后圈定儲量范圍,傳統(tǒng)方法是根據(jù)鉆孔坐標(biāo)及礦化信息、勘探線位置,通過AutoCAD中畫圓及offset命令畫輔助線,按照礦體圈定的范圍,通過輔助線的交點來確定礦體邊界的拐點,并通過Pline命令手動連接礦體拐點,同時給每一個礦體加上參數(shù)標(biāo)示框,完成礦體水平投影圖的繪制。
在實際工作中,需及時繪制礦體水平投影圖,實時更新估算資源儲量,在制作期間應(yīng)注意礦段劃分原則,塊段外推、塊段圈定及圖件繪制等各種事項[1]。礦體投影圖不僅是為了更好的服務(wù)于工作[2],也是進(jìn)行下一步勘查、礦床評價的重要依據(jù)[3],為儲量的計算起到重要的作用[4]。在實際工作中,生產(chǎn)一線工作者使用CAD進(jìn)行礦體水平投影圖的繪制,電子的圖件有助于提高效率、減少人為誤差、方便后期保存及處理,但通過CAD制圖依然需要手動鼠標(biāo)繪制工作效率仍然不高。礦產(chǎn)勘查、儲量核實中塊段多、數(shù)據(jù)量大,容易使部分塊段選漏,操作過程單一,出錯機率大,容易造成眼誤或手誤,質(zhì)量自檢性差,檢查過程費時費力,難以從不同角度分析礦體并繪制礦體水平投影圖。因此,開發(fā)一種快速、自動生成砂巖型鈾礦礦體水平投影圖的程序,能夠進(jìn)一步提高鈾礦地質(zhì)人員的工作效率,對鈾礦勘查工作具有重要意義。
程序以Microsoft office的Excel為數(shù)據(jù)平臺,用Excel VBA對數(shù)據(jù)進(jìn)行處理,以AutoCAD為圖形平臺,通過AutoCAD VBA進(jìn)行圖形繪制。現(xiàn)有鈾礦生產(chǎn)數(shù)據(jù)的電子數(shù)據(jù)以E xcel數(shù)據(jù)格式為主,如坐標(biāo)數(shù)據(jù)、測斜數(shù)據(jù)、礦體數(shù)據(jù)、鈾礦礦化數(shù)據(jù)等,故在Excel平臺上用Excel VBA進(jìn)行數(shù)據(jù)處理即是最實用也是最直接快捷,Auto CAD圖形平臺圖形繪制方便、使用廣泛、繪制圖形精度高,特別是圖形面積計算精確,所以礦體水平投影圖的圖形平臺選用Auto CAD。
Excel軟件是0ffice辦公系列軟件之一,具有強大的數(shù)據(jù)錄入和數(shù)據(jù)處理能力[5]。雖然Excel可以滿足通常大部分?jǐn)?shù)據(jù)的處理需求,但要對一些數(shù)據(jù)做專業(yè)性較強的處理,就要在Excel中使用VBA。VBA誕生于VB之后,繼承了VB語言的很多對象、屬性和方法,語法結(jié)構(gòu)與VB基本相同。通過VBA能夠編寫程序?qū)崿F(xiàn)可以數(shù)據(jù)處理的自動化,極大提升數(shù)據(jù)處理效率[6]。
Excel應(yīng)用程序的開發(fā)需要在Visual Basic編輯器(即VBE)中進(jìn)行。VBE能夠與Excel無縫結(jié)合,但VBE環(huán)境不能獨立打開,必須在啟動Excel或其它宿主程序后才能打開運行,使用Visual Basic編輯器可以完成VBA過程創(chuàng)建、VBA用戶窗體創(chuàng)建、對象屬性查看或修改以及VBA程序調(diào)試等任務(wù)。
AutoCAD是目前工程設(shè)計中應(yīng)用最廣泛的軟件之一,被廣泛應(yīng)用于機械、建筑、管線施工、家裝、地質(zhì)等行業(yè)[7]。AutoCAD具有強大的二維繪圖功能,如繪制平面圖、剖面圖、進(jìn)行尺寸標(biāo)注等,并可以進(jìn)行二次開發(fā)。
1.3.1 Auto CAD Active X Automation技術(shù)
AutoCAD Active X Automation將AutoCAD對象顯示到“外部世界”,使得許多編程語言或應(yīng)用程序(例如VB、C++、C#、Java、Word VBA、Excel VBA等)可以訪問和編輯CAD對象。VBA通過Auto CAD Active X Automation接口將消息發(fā)送到AutoCAD,并通過接口對AutoCAD進(jìn)行控制。Auto CAD ActiveX Automation技術(shù)簡化了程序設(shè)計過程,便于對AutoCAD進(jìn)行二次開發(fā),同時為其它Windows應(yīng)用程序(如Excel和Word)之間的通信提供了公共平臺[8]。
1.3.2 Auto CAD對象模型
Application對象位于AutoCAD對象模型最頂層,其它層狀結(jié)構(gòu)的對象是它的子對象。Preferences是系統(tǒng)參數(shù)對象,可用于AutoCAD的參數(shù)設(shè)置。Documents、Document分別是圖形文件對象集合、圖形文件對象,通過Document對象可實現(xiàn)對AutoCAD文件的新建、打開、輸入、輸出等操作。Layer、Layers是圖層對象、圖層集合對象,用于控制圖層文件對象,如添加、刪除圖層,設(shè)置圖層的線型、尺寸和顏色等。
本方法流程如圖1所示,利用鉆孔孔口坐標(biāo)表、勘探線基線起止點坐標(biāo)、方向、基礎(chǔ)孔距、基礎(chǔ)線距通過VBA圖框及勘探線計算程序得到圖框、坐標(biāo)及勘探網(wǎng)數(shù)據(jù)表,并通過VBA自動繪制到圖形空間[9];利用鉆孔孔口坐標(biāo)表、鉆孔測斜數(shù)據(jù)表、礦體揭穿深度表計算揭穿點坐標(biāo),再結(jié)合揭穿點坐標(biāo)、勘探類型、鉆孔礦化信息表,將鉆孔位置及礦化信息展上CAD圖,并由上述數(shù)據(jù)計算礦體拐點坐標(biāo);將礦體拐點坐標(biāo)上圖,由程序進(jìn)行初步連接,得到礦體水平投影圖。
圖1 基于VBA技術(shù)自動生成鈾礦礦體水平投影圖基本流程圖Fig.1 The basic flow chart of automatically generating horizontal projection map of uranium ore body based on VBA technology
2.2.1 EXCEL VBA數(shù)據(jù)預(yù)處理模塊實現(xiàn)
2.2.1.1 礦體揭穿點計算
由測斜數(shù)據(jù)、揭穿礦體中心深度及孔口坐標(biāo)
計算礦體揭穿點平面坐標(biāo)。先從測斜成果中取得揭穿中點深度的上一測斜點和下一測斜點成果數(shù)據(jù),用距離加權(quán)法計算出X和Y值,再根據(jù)孔口坐標(biāo)計算出礦體揭穿中點的坐標(biāo)。距離加權(quán)的插值算法(圖2)為:
圖2 距離加權(quán)示意圖Fig.2 Diagram of distance weighting
式中:X、Y—揭穿點的坐標(biāo),X1、Y1、X2、Y2分別為揭穿點上下兩個測點的坐標(biāo);D—揭穿點的深度,D1、D2分別為上下兩測點的深度。
2.2.1.2 礦體水平投影圖的圖框和坐標(biāo)格網(wǎng)及勘探線的計算
1)圖框計算
利用Excel公式計算出所有點X、Y坐標(biāo)的極大和極小值,分別在X和Y坐標(biāo)的極大值、極小值坐標(biāo)值再加、減一個固定值,得到圖框四個角點的坐標(biāo)。
2)坐標(biāo)格網(wǎng)的計算
根據(jù)作圖比例尺,計算出坐標(biāo)網(wǎng)格的坐標(biāo)間距,對極值坐標(biāo)按坐標(biāo)間距取整,計算出每條網(wǎng)格線的坐標(biāo)。
3)勘探網(wǎng)的計算
以基點坐標(biāo)為中心,根據(jù)勘探線方位角及基線方位角、孔距和線距,計算出每條勘探線的起點和終點坐標(biāo)。
2.2.1.3 礦體拐點的計算
1)判斷每一個工業(yè)孔在勘探線方向、基線方向共四個方向距離最近鉆孔的礦化類型。
以工業(yè)孔為中心計算每個鉆孔與該工業(yè)孔的距離及方位角,判斷其與勘探線兩個方向和基線兩個方向距離最近的鉆孔孔位,每個方向的方向角范圍設(shè)為30°,距離按地質(zhì)塊段法要求,根據(jù)礦化類型判斷,每個方向有五種可能:無鉆孔、無礦孔、異???、礦化孔及工業(yè)孔。
推算算法如下:
兩點的方位角及距離計算方法如下:
K=(Y2-Y1)/(X2-X1)
如果X2-X1<0,方位角α=arctan(K)+180如 果X2-X1>0,且Y2-Y1>0,α=arctan(K)+180
如 果X2-X1>0,且Y2-Y1<0,α=arctan(K)+360
算法的VBA代碼如下:
dis=((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))^(0.5)’兩點間距離
k=(y2-y1)/(x2-x1)’求斜率
Ifx2-x1<0 Then angle=Application.WorksheetFunction.Degrees(Atn(k))+180
Ifx2-x1>0 Andy2-y1>0 Then
angle = Application.Worksheet Function.Degrees(Atn(k))’求方位角
Ifx2-x1>0 Andy2-y1<0 Then
angle=Application.Worksheet Function.Degrees(Atn(k))+360
If angle>K D-anglefw And angle<K D+anglefw Then
If dis<disKN And dis<disfw Then……
2)根據(jù)四個方向關(guān)系計算礦體拐點坐標(biāo)
根據(jù)塊段法推算拐點坐標(biāo)。每一個方向?qū)?yīng)五種不同的可能,它們所對應(yīng)的距離d值不同。若對應(yīng)方向無鉆孔,d為基本工程間距的四分之一;若對應(yīng)方向最近鉆孔為無礦孔,d取值為兩孔間距的四分之一或基本工程間距的四分之一;若對應(yīng)方向最近鉆孔為礦化孔,d取值為兩孔間距的二分之一或基本工程間距的二分之一;對應(yīng)方向最近鉆孔為工業(yè)孔,取d值為0;若距離最近鉆孔為異???,按無礦孔處理(圖3-圖7,紅、藍(lán)、黃點分別表示工業(yè)孔、礦化孔、異??祝?。
圖3 對應(yīng)鉆孔d值Fig.3 The d value assignment diagram for counterpart borehole
圖4 對應(yīng)無礦孔d值Fig.4 The d value assignment diagram for barren bore hole
圖5 對應(yīng)礦化孔d值Fig.5 The d value assignment diagram for mineralized hole
圖6 對應(yīng)異??譫值Fig.6 The d value assignment diagram for abnormal borehole
圖7 對應(yīng)工業(yè)孔d值為0Fig.7 The d value assignment diagram for the industrial bore
然后編程由已知d1與d2計算拐點坐標(biāo)(圖8,紅、藍(lán)點分別表示工業(yè)孔、礦化孔),算法如下:
圖8 由兩個d值計算拐點坐標(biāo)Fig.8 Calculating the inflection point coordinates from two d values
式中:X、Y—計算拐點坐標(biāo);Y0、X0—工業(yè)孔的坐標(biāo);ΔY、ΔX為向Y方向和X方向推算距離。
推算出相互關(guān)聯(lián)的工業(yè)孔組,根據(jù)每一個工業(yè)孔四個方向的鉆孔類型,把相互連接的工業(yè)孔挑選出來,并且生成一張礦體分類表,并且運用EXCEL的公式把計算出來的相應(yīng)工業(yè)孔的礦體拐點坐標(biāo)復(fù)制到表格相應(yīng)的工業(yè)孔的行里。
2.2.2 Auto CAD VBA繪圖模塊實現(xiàn)
2.2.2.1 VBA實現(xiàn)鉆孔和平米鈾含量展圖
1)圖符號的制作及鉆孔揭穿點的展圖
按照現(xiàn)行鈾礦規(guī)范制作鈾礦化信息的圖塊,將其放在圖形文件目錄下,用礦化信息類別命名,如“工業(yè)鈾礦孔.dwg”,在自動繪制時直接作為塊展繪到圖形空間。循環(huán)讀取揭穿點表的坐標(biāo)和孔號,按照表內(nèi)的礦化信息讀取對應(yīng)的圖塊,將圖塊和孔號插入到圖形空間中。
關(guān)鍵代碼如下:
2)平米鈾含量展圖
在鉆孔號后,需要按照特定格式標(biāo)明鉆孔的所屬塊段號碼、水平厚度、平均品位、米百分含量,按照已知比例尺算得每個字的長、寬進(jìn),按照規(guī)范要求自動繪制。
關(guān)鍵代碼如下:
2.2.2.2 VBA圖框和坐標(biāo)格網(wǎng)及勘探線的自動生成
1)圖框和坐標(biāo)格網(wǎng)的自動生成
利用EXCEL計算出的區(qū)域內(nèi)X的最大及最小值和Y的最大最小值,再加上圖框的增加值得到圖框的四個角點,并對四個角坐標(biāo)取整公里網(wǎng)格,繪制出圖框的內(nèi)外框,并根據(jù)Y的極值和X最大值,繪制圖名并放到中間;根據(jù)圖形比例尺繪制公里網(wǎng)格并標(biāo)注。
關(guān)鍵代碼如下:
2)勘探網(wǎng)的自動生成
根據(jù)勘探網(wǎng)的基點、基線方向、勘探線方向、線號距、孔號距及勘探網(wǎng)號繪制勘探網(wǎng)。首先,根據(jù)基點和基線方向繪制0號基線,再根據(jù)基點、勘探線方向和線號距計算每條勘探線的起點和終點坐標(biāo)(算法見下)以及勘探線號,然后繪制勘探線,并在勘探線起點和終點標(biāo)明勘探線號。
勘探線起點和終點計算方法(圖9)為:
圖9 勘探線端點計算示意Fig.9 Calculation of end point of exploration line
式中:X1、Y1—計算勘探線起點坐標(biāo);Y0、X0—基點的坐標(biāo),ΔY、ΔX—向Y方向和X方向推算距離;β—勘探線方位角。
勘探線自動生成的主要代碼如下:
2.2.2.3 VBA實現(xiàn)礦體邊界的初步圈定
礦體邊界由拐點坐標(biāo)連接構(gòu)成,并且需要確定拐點連接方向及順序。使用GIS點在線段左邊判斷原理算法結(jié)合兩點間距離的限差進(jìn)行初步圈定。GIS左手算法,已知兩點A(X1,Y1)和B(X2,Y2),線外一點P(X0,Y0),(X2-X1)(Y0-Y1)-(Y2-Y1)(X0-X1)>0則點P在線段AB的左側(cè)(圖10)。
圖10 點在線段左邊判斷Fig.10 Judgment diagram of point on the left side of line segment
本研究方法已經(jīng)用于實際生產(chǎn)中,現(xiàn)以某鈾礦詳查項目為例,對本程序進(jìn)行實例驗證。
3.1.1 數(shù)據(jù)預(yù)處理模塊的驗證
3.1.1.1 揭穿中點計算
在實際的野外生產(chǎn)工作中,鉆探施工期間,鉆孔往往不是直孔,均會在一定程度上朝一定的方位進(jìn)行偏移,所以孔口坐標(biāo)并不能代表鉆孔礦體的所在位置,一般根據(jù)孔口坐標(biāo)及鉆孔的偏斜方位及偏斜距計算鉆孔礦體的實際坐標(biāo)。本文由EXCEL表格的礦體頂板和底板數(shù)據(jù)及揭穿中點的上一點和下一點的測斜坐標(biāo)數(shù)據(jù)計算出揭穿中點的坐標(biāo)(圖11,數(shù)據(jù)單位:m)。
圖11 揭穿點計算示意圖Fig.11 Schematic diagram of intersection point calculation
3.1.1.2 圖框和坐標(biāo)格網(wǎng)及勘探線的計算
在制作礦體水平投影圖時,必須先計算好圖框和坐標(biāo)網(wǎng)格及勘探線,才能開展下一步工作,可以由EXCEL公式統(tǒng)計出X坐標(biāo)、Y坐標(biāo)的極大和極小值,并輸入礦床的勘探網(wǎng)的基點坐標(biāo)、勘探線方位角、孔距、線距、勘探網(wǎng)號等參數(shù),點擊按鈕直接生成圖框和勘探線(圖12,數(shù)據(jù)單位:m)。
圖12 圖框及坐標(biāo)網(wǎng)格計算示意圖Fig.12 Schematic diagram of Frame and coordinate grid calculation
3.1.1.3 礦體拐點的計算
圖框和坐標(biāo)格網(wǎng)及勘探線生成后,便可開展下一步工作,對礦體的拐點進(jìn)行計算,才能對礦體的范圍進(jìn)行圈定。由揭穿點坐標(biāo)、勘探線方位角、基線方位角、勘探線方向基本工程間距、基線方向基本工程間距,利用VBA編寫的函數(shù)推算出工業(yè)孔四個方向所對應(yīng)情況(圖13,數(shù)據(jù)單位:m)。再由推算的情況計算每一個工業(yè)孔的礦體拐點(圖14,數(shù)據(jù)單位:m)。
圖13 四個方向點判斷示意圖Fig.13 Schematic diagram of four directional points
圖14 拐點計算示意Fig.14 Indication of inflection point calculation
3.1.2 Auto CAD繪圖模塊的驗證
EXCEL模塊對需要繪制圖形數(shù)據(jù)處理好了后,通過程序的執(zhí)行按扭自動生成礦體水平投影圖。
3.1.2.1 鉆孔和平米鈾含量展圖
通過程序進(jìn)行計算后,對數(shù)據(jù)進(jìn)行預(yù)處理,生成每個鉆孔的礦體揭穿點(圖15,數(shù)據(jù)單位:m),在利用揭穿點數(shù)據(jù)在Auto CAD中進(jìn)行揭穿點的展布,形成揭穿點展圖效果圖,可以確定揭穿點的位置及鉆孔的礦化類型,與以往模式一致,但速度較快,較為便捷(圖16,數(shù)據(jù)單位:m)。
圖15 揭穿點表意圖Fig.15 List of intersection the point of intent
圖16 揭穿點展圖效果圖Fig.16 Intersection point rendering
3.1.2.2 圖框和坐標(biāo)格網(wǎng)及勘探線的自動生成
在前期數(shù)據(jù)比較齊全的情況下,點擊按鈕直接生成圖框和勘探線,圖框和坐標(biāo)網(wǎng)格會根據(jù)圖面的大小進(jìn)行適當(dāng)?shù)钠ヅ?,不需要再進(jìn)行人工計算,勘探線也會根據(jù)鉆孔的位置進(jìn)行生成,如圖17所示,圖框及坐標(biāo)格網(wǎng)基本覆蓋鉆孔范圍,勘探線及基線也進(jìn)行了自動繪制,勘探線基本為北西向南東,勘探線數(shù)量為13條,走向為135°,基線基本為北東向南西,基線為1條,走向為45°,為下一步礦體的圈定做好了準(zhǔn)備工作。
圖17 圖框和坐標(biāo)網(wǎng)格及勘探線效果圖Fig.17 Overview of frame and coordinate grid of exploration line
3.1.2.3 礦體邊界的初步圈定
程序可根據(jù)區(qū)內(nèi)每個鉆孔的實際情況,在計算出礦體拐點坐標(biāo)的基礎(chǔ)上,圈定出礦體的邊界范圍,對無法連接的礦體進(jìn)行分割,圈定出相應(yīng)的礦體塊段,如圖18所示,礦體基本走向為北東南向西向,且被劃分為多個塊段,初步圈定了礦體的邊界,與人工制作圖件對比基本無較大的差異,圈定的邊界準(zhǔn)確可靠。
圖18 礦體初步圈定效果圖Fig.18 Overview of preliminary delineated orebody
3.2.1 效率對比
礦體水平投影圖制作,程序繪制效率要遠(yuǎn)比傳統(tǒng)方法繪制的效率高,程序成圖所需時間基本為15 min左右,而人工用時基本為665 min,為程序成圖時間的44倍,這也體現(xiàn)了程序成圖的優(yōu)勢,所需時間較短,提高了工作效率,能夠?qū)D件進(jìn)行及時的更新(表1)。
表1 程序自動成圖與手工成圖效率對比Table 1 Comparison of efficiency between automatic mapping and manual mapping
3.2.2 質(zhì)量對比
因程序是以Excel輸入的數(shù)據(jù)為基礎(chǔ)的,所以只需要檢查輸入數(shù)據(jù)有沒有錯誤,程序自動生成錯誤率很低。而手工繪制礦體水平投影圖,繪制過程避免了人為誤差,錯誤率較高。但從礦體水平投影圖的內(nèi)容來看,礦體的圈定上,手工圈定的相比程序圈定的精準(zhǔn),程序是初步圈定,可以先給地質(zhì)研究區(qū)圈定大致的礦體范圍,進(jìn)而精確圈定,隨著程序在日后與生產(chǎn)實踐結(jié)合逐步完善,最終一定能實現(xiàn)礦體精確圈連。
1)利用Excel方便的數(shù)據(jù)輸入、輸出與編輯功能和強大的公式運算能力,結(jié)合AutoCAD完善的圖形平臺,應(yīng)用VBA技術(shù)編程已實現(xiàn)礦體水平投影圖自動繪制。
2)本應(yīng)用程序所用數(shù)據(jù)平臺和圖形平臺都是生產(chǎn)中的常用軟件,具有適用性和易操作性。
3)在使用程序進(jìn)行礦體水平投影圖的生成,用時較短,效率較高,且繪制的準(zhǔn)確性較人工的高,基本做到避免人為誤差。