陳海飛,王 旗,吳海峰,洪 濤,方 濤,曾 成,王日平
(江西省核工業地質局二六四大隊,江西 贛州 341000)
實測地質剖面作為地質工作中常用和必要手段,剖面成圖涉及大量的數據換算和圖表繪制,如何批量處理原始數據,提取成果數據繪制圖件,同時保證數據準確、過程高效、易于維護,是本文思考的問題。可以利用數字地質調查系統(DGSS),但不利于批量操作和維護。Microsoft Excel作為圖表處理軟件,具有強大的數據處理能力和二次開發能力。應用軟件編程,將實測地質剖面導線、分析信息表格化,經過自動化處理轉換為成果數據,再通過程序處理轉換為投圖數據,最后利用Section投圖生成Mapgis點線文件,繪制剖面地形線、分層界線和導線。
實測剖面圖由導線圖(水平面)和地形剖面圖(垂直面)兩部分組成,導線圖反映剖面測量路線變化情況,地形剖面圖反映地質綜合情況[1]。繪圖目的是通過在不同圖面確定導線、分層位置,表達地質體空間關系。
已知剖面總方位角(成圖方位角)α0、導線起點平面直角坐標(X0、Y0、H0)、導線參數(方位角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
繪圖需要應用到的參數:導線水平距Ls、導線高差△H、累計水平距L1、累計高差H1,導線圖上剖面水平距dx、剖面偏移距dy、剖面水平累計Dx和剖面偏移累計Dy,剖面圖上剖面水平距px、剖面高差距ph、剖面水平累計Px、剖面高差累計Ph,分層導線段水平距fx、分層導線段高差距fh。需要根據分層斜距(視厚度)Hfc、巖層傾向Q和傾角α,求解導線方向與巖性走向夾角γ、繪圖視傾角αs和分層真厚度Hz。各計算公式分別如下:

系統包含記錄表錄入、記錄表完善、剖面計算與分層投圖和投影數據Section投圖四個部分。系統結構見圖1。

圖1 系統結構圖
界面設計包括Excel工作表、自定義鼠標右鍵菜單和導線與分層投圖對話框三部分。
實測地質剖面記錄采用《固體礦產勘查原始地質編錄規程》(DZ/T 0078-2015)附表1記錄格式。為了便于繪圖,Excel工作表增加了相關參數的計算列,由導線、導線圖、剖面圖、產狀、分層、地質描述、樣品等列表組成。
自定義菜單為鼠標右鍵菜單,新增菜單三個,分別為:數據比對、完善記錄表和剖面計算分層投圖。數據比對菜單包含兩表完整比對、比對源數據表、精確匹配、數據排空等子菜單,實現常用的表格數據處理功能。完善記錄表菜單包含導線計算、分層位置初始化、地質描述補位置等子菜單,對應完善記錄表系統。剖面計算分層投圖菜單整合全部的數據處理過程,生成最終投圖數據。
導線與分層投圖對話框為彈出式對話框,為通過菜單方式調用的窗體,其作用是接收投圖的相關參數和設置投圖對象,見圖2。投剖面圖生成剖面數據,投地質圖則生成地質平面圖數據。

圖2 導線與分層投圖對話框
設計模塊3個,包括菜單開發、功能函數與過程、剖面計算。菜單開發模塊加載數據比對程序和導線、剖面計算調用程序。功能函數與過程模塊加載的是自定義的常用函數和過程,如反算方位角、兩點空間位置、巖層坡向取值、數組刪重、數組排序、數組維度等。剖面計算模塊為主模塊,包含增行補錄導線尾數、導線計算、剖面計算分層投圖三個程序。
程序編寫需要調用工作表、行列、單元格等對象的事件、屬性或數據,通過判斷語句、循環結構等嵌套,運用數學公式計算。其過程一般是:定義變量→獲取原始數據→賦值給數組→數據處理→生成新數組→輸出給表單。VBA編程將表單數據賦值給數組,在數組內計算,可以極大的提高運行效率。程序開始和結束前需通過Application.EnableEvents語句先后禁止、允許事件循環觸發。
利用Sub過程創建菜單是常用的方式,通過調用CommandBars子集的Controls屬性實現[1],如創建“兩表完整比對”二級子菜單。其功能通過調用過程實現。
自定義函數與過程是為實現特定功能,將編程中反復使用的數學計算模型或處理流程固化。如此既可以簡化編程提高效率,又可以減少報錯率。自定義函數通過Function過程實現,自定義過程通過Sub過程實現,需區分輸入的數據是使用其數值(ByVal)還是地址(ByRef)。
Excel表加載了Worksheet的SelectionChange和Change事件,表格數據變動則激活。對導線列表前四項(1-4列)和導線分層位置(第24列)數據進行修改,如果是第24列數據變化說明是在錄入導線分層位置,則啟動增行補錄導線尾數程序,自動插入下一行填入數據,確保每導分層結尾米數為導線斜距;否則是導線參數變化,則啟動導線計算程序,更新剖面繪圖數據。
剖面計算分層投圖程序基于完善記錄表,對導線、分層、產狀和樣品原始數據進行處理,可以分解為如下步驟:繪圖數據計算、投圖數據計算、數據合并和數據輸出,具體見圖3。其中投剖面圖的分層線和產狀線按視傾角生成。投圖數據合并為新數組,賦值給新建的Excel表。
(1)基礎數據錄入:打開Excel表將剖面起點坐標、基點號、GPS ID、剖面總方位和導線參數等基礎數據錄入完成。
(2)完善記錄表:更新繪圖數據點擊鼠標右鍵完善記錄表——導線計算。點擊完善記錄表——分層位置初始化,可以在導線分層位置列自動填充“0-導線斜距”。然后根據記錄表錄入分層、地質描述、產狀和樣品信息。地質描述錄入格式:起始位置[換行]巖性名稱[換行]描述內容。起始位置格式:起~止導線號#[空格]米數[空格]m,如果米數后為“m處”則指夾層或脈體不參與投圖。點擊完善記錄表——地質描述補位置,可以根據導線分層位置自動添加起始位置行。

圖3 剖面計算分層投圖程序步驟分解圖

圖4 導線、分層線、產狀投影成圖
(3)剖面計算與分層投圖:點擊鼠標右鍵剖面計算分層投圖,彈出是否繼續的對話框,選擇“是”。設置導線與分層投圖對話框相關參數,然后點擊“確定”按鈕。計算結果賦值到新Excel工作簿內,默認被選中。
(4)Seciton投圖:打開Seciton輔助制圖軟件,點擊文件菜單——新建文件,依次點擊1輔助工具菜單——表格數據投影——選擇數據投影(Excel)。彈出數據投影對話框,比例尺默認為1000不需要改動,取消繪制點和線閉合,然后點擊“確定”。調整圖元參數,結果見圖4。
圖件整飾主要為補充完善地質內容,補充圖式要素,形成實測地質剖面成果圖。