陳海飛,王 旗,吳海峰,洪 濤,方 濤,曾 成,王日平
(江西省核工業(yè)地質(zhì)局二六四大隊(duì),江西 贛州 341000)
實(shí)測(cè)地質(zhì)剖面作為地質(zhì)工作中常用和必要手段,剖面成圖涉及大量的數(shù)據(jù)換算和圖表繪制,如何批量處理原始數(shù)據(jù),提取成果數(shù)據(jù)繪制圖件,同時(shí)保證數(shù)據(jù)準(zhǔn)確、過(guò)程高效、易于維護(hù),是本文思考的問(wèn)題??梢岳脭?shù)字地質(zhì)調(diào)查系統(tǒng)(DGSS),但不利于批量操作和維護(hù)。Microsoft Excel作為圖表處理軟件,具有強(qiáng)大的數(shù)據(jù)處理能力和二次開發(fā)能力。應(yīng)用軟件編程,將實(shí)測(cè)地質(zhì)剖面導(dǎo)線、分析信息表格化,經(jīng)過(guò)自動(dòng)化處理轉(zhuǎn)換為成果數(shù)據(jù),再通過(guò)程序處理轉(zhuǎn)換為投圖數(shù)據(jù),最后利用Section投圖生成Mapgis點(diǎn)線文件,繪制剖面地形線、分層界線和導(dǎo)線。
實(shí)測(cè)剖面圖由導(dǎo)線圖(水平面)和地形剖面圖(垂直面)兩部分組成,導(dǎo)線圖反映剖面測(cè)量路線變化情況,地形剖面圖反映地質(zhì)綜合情況[1]。繪圖目的是通過(guò)在不同圖面確定導(dǎo)線、分層位置,表達(dá)地質(zhì)體空間關(guān)系。
已知剖面總方位角(成圖方位角)α0、導(dǎo)線起點(diǎn)平面直角坐標(biāo)(X0、Y0、H0)、導(dǎo)線參數(shù)(方位角P、斜距L、坡度β)和導(dǎo)線上分層位置斜距Lfc,導(dǎo)線終點(diǎn)坐標(biāo)(X、Y、H)計(jì)算公式如下:
X=X0+cosP×cosβ×L,Y=Y0+sinP×cosβ×L,
H=H0+sinβ×L
分層點(diǎn)坐標(biāo)(Xfc、Yfc、Hfc)計(jì)算公式如下:
Xfc=X0+cosP×cosβ×Lfc,
Yfc=Y0+sinP×cosβ×Lfc,Hfc=H0+sinβ×Lfc
繪圖需要應(yīng)用到的參數(shù):導(dǎo)線水平距Ls、導(dǎo)線高差△H、累計(jì)水平距L1、累計(jì)高差H1,導(dǎo)線圖上剖面水平距dx、剖面偏移距dy、剖面水平累計(jì)Dx和剖面偏移累計(jì)Dy,剖面圖上剖面水平距px、剖面高差距ph、剖面水平累計(jì)Px、剖面高差累計(jì)Ph,分層導(dǎo)線段水平距fx、分層導(dǎo)線段高差距fh。需要根據(jù)分層斜距(視厚度)Hfc、巖層傾向Q和傾角α,求解導(dǎo)線方向與巖性走向夾角γ、繪圖視傾角αs和分層真厚度Hz。各計(jì)算公式分別如下:
系統(tǒng)包含記錄表錄入、記錄表完善、剖面計(jì)算與分層投圖和投影數(shù)據(jù)Section投圖四個(gè)部分。系統(tǒng)結(jié)構(gòu)見圖1。
圖1 系統(tǒng)結(jié)構(gòu)圖
界面設(shè)計(jì)包括Excel工作表、自定義鼠標(biāo)右鍵菜單和導(dǎo)線與分層投圖對(duì)話框三部分。
實(shí)測(cè)地質(zhì)剖面記錄采用《固體礦產(chǎn)勘查原始地質(zhì)編錄規(guī)程》(DZ/T 0078-2015)附表1記錄格式。為了便于繪圖,Excel工作表增加了相關(guān)參數(shù)的計(jì)算列,由導(dǎo)線、導(dǎo)線圖、剖面圖、產(chǎn)狀、分層、地質(zhì)描述、樣品等列表組成。
自定義菜單為鼠標(biāo)右鍵菜單,新增菜單三個(gè),分別為:數(shù)據(jù)比對(duì)、完善記錄表和剖面計(jì)算分層投圖。數(shù)據(jù)比對(duì)菜單包含兩表完整比對(duì)、比對(duì)源數(shù)據(jù)表、精確匹配、數(shù)據(jù)排空等子菜單,實(shí)現(xiàn)常用的表格數(shù)據(jù)處理功能。完善記錄表菜單包含導(dǎo)線計(jì)算、分層位置初始化、地質(zhì)描述補(bǔ)位置等子菜單,對(duì)應(yīng)完善記錄表系統(tǒng)。剖面計(jì)算分層投圖菜單整合全部的數(shù)據(jù)處理過(guò)程,生成最終投圖數(shù)據(jù)。
導(dǎo)線與分層投圖對(duì)話框?yàn)閺棾鍪綄?duì)話框,為通過(guò)菜單方式調(diào)用的窗體,其作用是接收投圖的相關(guān)參數(shù)和設(shè)置投圖對(duì)象,見圖2。投剖面圖生成剖面數(shù)據(jù),投地質(zhì)圖則生成地質(zhì)平面圖數(shù)據(jù)。
圖2 導(dǎo)線與分層投圖對(duì)話框
設(shè)計(jì)模塊3個(gè),包括菜單開發(fā)、功能函數(shù)與過(guò)程、剖面計(jì)算。菜單開發(fā)模塊加載數(shù)據(jù)比對(duì)程序和導(dǎo)線、剖面計(jì)算調(diào)用程序。功能函數(shù)與過(guò)程模塊加載的是自定義的常用函數(shù)和過(guò)程,如反算方位角、兩點(diǎn)空間位置、巖層坡向取值、數(shù)組刪重、數(shù)組排序、數(shù)組維度等。剖面計(jì)算模塊為主模塊,包含增行補(bǔ)錄導(dǎo)線尾數(shù)、導(dǎo)線計(jì)算、剖面計(jì)算分層投圖三個(gè)程序。
程序編寫需要調(diào)用工作表、行列、單元格等對(duì)象的事件、屬性或數(shù)據(jù),通過(guò)判斷語(yǔ)句、循環(huán)結(jié)構(gòu)等嵌套,運(yùn)用數(shù)學(xué)公式計(jì)算。其過(guò)程一般是:定義變量→獲取原始數(shù)據(jù)→賦值給數(shù)組→數(shù)據(jù)處理→生成新數(shù)組→輸出給表單。VBA編程將表單數(shù)據(jù)賦值給數(shù)組,在數(shù)組內(nèi)計(jì)算,可以極大的提高運(yùn)行效率。程序開始和結(jié)束前需通過(guò)Application.EnableEvents語(yǔ)句先后禁止、允許事件循環(huán)觸發(fā)。
利用Sub過(guò)程創(chuàng)建菜單是常用的方式,通過(guò)調(diào)用CommandBars子集的Controls屬性實(shí)現(xiàn)[1],如創(chuàng)建“兩表完整比對(duì)”二級(jí)子菜單。其功能通過(guò)調(diào)用過(guò)程實(shí)現(xiàn)。
自定義函數(shù)與過(guò)程是為實(shí)現(xiàn)特定功能,將編程中反復(fù)使用的數(shù)學(xué)計(jì)算模型或處理流程固化。如此既可以簡(jiǎn)化編程提高效率,又可以減少報(bào)錯(cuò)率。自定義函數(shù)通過(guò)Function過(guò)程實(shí)現(xiàn),自定義過(guò)程通過(guò)Sub過(guò)程實(shí)現(xiàn),需區(qū)分輸入的數(shù)據(jù)是使用其數(shù)值(ByVal)還是地址(ByRef)。
Excel表加載了Worksheet的SelectionChange和Change事件,表格數(shù)據(jù)變動(dòng)則激活。對(duì)導(dǎo)線列表前四項(xiàng)(1-4列)和導(dǎo)線分層位置(第24列)數(shù)據(jù)進(jìn)行修改,如果是第24列數(shù)據(jù)變化說(shuō)明是在錄入導(dǎo)線分層位置,則啟動(dòng)增行補(bǔ)錄導(dǎo)線尾數(shù)程序,自動(dòng)插入下一行填入數(shù)據(jù),確保每導(dǎo)分層結(jié)尾米數(shù)為導(dǎo)線斜距;否則是導(dǎo)線參數(shù)變化,則啟動(dòng)導(dǎo)線計(jì)算程序,更新剖面繪圖數(shù)據(jù)。
剖面計(jì)算分層投圖程序基于完善記錄表,對(duì)導(dǎo)線、分層、產(chǎn)狀和樣品原始數(shù)據(jù)進(jìn)行處理,可以分解為如下步驟:繪圖數(shù)據(jù)計(jì)算、投圖數(shù)據(jù)計(jì)算、數(shù)據(jù)合并和數(shù)據(jù)輸出,具體見圖3。其中投剖面圖的分層線和產(chǎn)狀線按視傾角生成。投圖數(shù)據(jù)合并為新數(shù)組,賦值給新建的Excel表。
(1)基礎(chǔ)數(shù)據(jù)錄入:打開Excel表將剖面起點(diǎn)坐標(biāo)、基點(diǎn)號(hào)、GPS ID、剖面總方位和導(dǎo)線參數(shù)等基礎(chǔ)數(shù)據(jù)錄入完成。
(2)完善記錄表:更新繪圖數(shù)據(jù)點(diǎn)擊鼠標(biāo)右鍵完善記錄表——導(dǎo)線計(jì)算。點(diǎn)擊完善記錄表——分層位置初始化,可以在導(dǎo)線分層位置列自動(dòng)填充“0-導(dǎo)線斜距”。然后根據(jù)記錄表錄入分層、地質(zhì)描述、產(chǎn)狀和樣品信息。地質(zhì)描述錄入格式:起始位置[換行]巖性名稱[換行]描述內(nèi)容。起始位置格式:起~止導(dǎo)線號(hào)#[空格]米數(shù)[空格]m,如果米數(shù)后為“m處”則指夾層或脈體不參與投圖。點(diǎn)擊完善記錄表——地質(zhì)描述補(bǔ)位置,可以根據(jù)導(dǎo)線分層位置自動(dòng)添加起始位置行。
圖3 剖面計(jì)算分層投圖程序步驟分解圖
圖4 導(dǎo)線、分層線、產(chǎn)狀投影成圖
(3)剖面計(jì)算與分層投圖:點(diǎn)擊鼠標(biāo)右鍵剖面計(jì)算分層投圖,彈出是否繼續(xù)的對(duì)話框,選擇“是”。設(shè)置導(dǎo)線與分層投圖對(duì)話框相關(guān)參數(shù),然后點(diǎn)擊“確定”按鈕。計(jì)算結(jié)果賦值到新Excel工作簿內(nèi),默認(rèn)被選中。
(4)Seciton投圖:打開Seciton輔助制圖軟件,點(diǎn)擊文件菜單——新建文件,依次點(diǎn)擊1輔助工具菜單——表格數(shù)據(jù)投影——選擇數(shù)據(jù)投影(Excel)。彈出數(shù)據(jù)投影對(duì)話框,比例尺默認(rèn)為1000不需要改動(dòng),取消繪制點(diǎn)和線閉合,然后點(diǎn)擊“確定”。調(diào)整圖元參數(shù),結(jié)果見圖4。
圖件整飾主要為補(bǔ)充完善地質(zhì)內(nèi)容,補(bǔ)充圖式要素,形成實(shí)測(cè)地質(zhì)剖面成果圖。