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