賈世俊,周鵬,李朝輝,朱洪瀟,崔彥崗,崔楊洋
(中國冶金地質總局第三地質勘查院,太原 030032)
瞬變電磁法又稱時間域電磁法(Time domain electromagnetic methods,縮寫TEM)因其場源頻帶寬、分辨率高、操作簡單等優(yōu)點,被廣泛應用于金屬、石油勘探,水源、地熱勘察以及工程地質勘探勘察等領域,應用范圍涵蓋了地面、地下和海洋,幾乎涉及了地球物理探測的各個領域,已成為重要的地球物理探測方法技術之一[1-3]。隨著電子技術和計算機技術的快速發(fā)展,地球物理勘探儀器的數(shù)字化和智能化程度不斷提高,瞬變電磁儀器的性能也得到顯著的提升。
目前,市場上較為常見的瞬變電磁儀器主要有加拿大GEON-ICS公司的PROTEM系統(tǒng)(包括PROTEM-37,47,57,67等型號)、PHOENIX公司的V6和V8系統(tǒng)、美國ZONGE公司的GDP-32系統(tǒng)、重慶奔騰數(shù)控技術研究所的WTEM系統(tǒng)等[4]。主流的瞬變電磁儀器基本都配備了相應的處理解釋軟件,對采集到的數(shù)據(jù)進行預處理、反演、輸出成圖數(shù)據(jù)[5]。在實際生產(chǎn)應用中,勘探單位常用Surfer軟件對上述儀器軟件的反演結果進行斷面成圖和整飾。這一過程基本為參數(shù)統(tǒng)一的重復操作,且修改某一參數(shù)后所有斷面需要重新繪制。尤其在數(shù)據(jù)量較大的工程項目中斷面圖件的整飾、修改需要花費大量人力和時間資源。因此,采用計算機完成圖件批量繪制和整飾顯得尤為需要。本文介紹了一種基于Surfer的數(shù)據(jù)管理和自動化處理功能,利用VBA技術實現(xiàn)了瞬變電磁法斷面圖的批量自動化繪制及整飾技術,并就實際應用進行了檢驗。
Surfer是由美國Golden software公司研發(fā)的一套功能強大的成圖軟件,具有強大的插值功能和圖件繪制能力,被廣泛應用于物探工作中等值線圖的繪制[6-8]。Surfer能夠使外部程序通過“對象”去“操縱”Surfer程序,提供了一個從外部程序控制Surfer程序的編程接口。Surfer程序的對象為自動化對象(Automation Object),VB等程序語言可以通過使用這些對象的屬性(Properties)和方法(Method)實現(xiàn)控制Surfer程序的目的[9]。Surfer采用層次化的方式組織其自動化對象,各對象屬性和方法參數(shù)可在Surfer程序“help”中獲得。
VBA(Visual Basic for Applications)是基于Visual Basic發(fā)展而來的新一代標準宏語言,是微軟公司開發(fā)的用于Microsoft Office應用程序執(zhí)行通用自動化(OLE)任務的編程語言。通過VBA技術可以有效地擴展Excel的功能,設計和構建人機交互界面,幫助用戶更加高效地完成Excel中公式、函數(shù)等基本操作不能完成的任務[10]。
基于Excel的數(shù)據(jù)管理功能,將多條測線中的瞬變電磁反演數(shù)據(jù)、測點信息進行排序、篩選、查找匹配并統(tǒng)一數(shù)據(jù)格式,再利用VBA編程技術按測線輸出固定格式的成圖數(shù)據(jù)。
將全區(qū)反演成果數(shù)據(jù)、測量數(shù)據(jù)、目的層高程信息數(shù)據(jù)(如煤層底板等高線)等已知數(shù)據(jù)分別輸入Excel表格中sheet1、sheet2、sheet3、……工作表中,以“線號-點號”為統(tǒng)一標識符,利用VLOOKUP函數(shù)將各測點數(shù)據(jù)信息統(tǒng)一到同一數(shù)據(jù)表中。
VLOOKUP函數(shù)的語法規(guī)則如下:VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
各參數(shù)說明見表1。
表1 VLOOKUP函數(shù)參數(shù)特征Table 1 Characteristics of parameters of VLOOKUP function
經(jīng)匹配后數(shù)據(jù)格式見表2。其中“#N/A”為VLOOKUP函數(shù)所在列匹配結果,當對應“線號-點號”數(shù)據(jù)存在時顯示相應數(shù)據(jù),不存在時顯示為“#N/A”。
以表2數(shù)據(jù)為基礎,采用VBA 編程技術按“線號”分別提取各線數(shù)據(jù),并輸出為文本格式,并以線號命名。文本數(shù)據(jù)格式為:
表2 Excel數(shù)據(jù)整理Table 2 Excel data collation
“X,Y,Z,H,3#,5#,10#”,便于Surfer軟件網(wǎng)格化數(shù)據(jù)。
其中,X為點號;Y為目的層標高;Z為反演電阻率值;H為地表標高;3#,5#,10#分別對應相應煤層的底板標高。
以下為程序分線輸出的主要算法:
Do
X=Sheet1.Cells(i, 3)
Y=Sheet1.Cells(i, 7)
Z=Sheet1.Cells(i, 5)
H=Sheet1.Cells(i, 6)
SanM=Sheet1.Cells(i, 8)
WuM=Sheet1.Cells(i, 9)
ShiM=Sheet1.Cells(i, 10)
If Sheet1.Cells(i, 2)=linename Then
sss=X & "," & Y & "," & Z & "," & H & "," & SanM & "," & WuM & "," & ShiM
Print #1, vbCrLf + sss;
Else
Close #1
linename=Sheet1.Cells(i, 2)
……
End If
Loop While Sheet1.Cells(i, 1) <> ""
首先,利用VBA面向對象編程的特點設計圖形用戶界面(圖1),方便使用者輸入繪圖所需的各
圖1 程序圖形用戶界面Fig.1 Program GUI
類參數(shù)[11-19],如工作區(qū)名稱、盲區(qū)深度、繪圖比例尺、標注間隔、色標尺寸、濾波次數(shù)等參數(shù),添加VBA通用對話框引導用戶添加“色標文件”、“數(shù)據(jù)文件”和“圖例文件”路徑。
之后,點擊“開始繪圖”按鈕控件進行“單擊”事件編程。編程主要實現(xiàn)VBA對Surfer程序的調(diào)用、數(shù)據(jù)文件的導入、網(wǎng)格化、濾波、白化、圖件繪制、參數(shù)引用設置、色標文件引用、圖例文件添加、繪圖進度提示以及當前文件下測線文件的遍歷繪圖,從而實現(xiàn)瞬變電磁法斷面圖批量自動化繪制。
以下為程序主要功能的代碼:
(1)創(chuàng)建Surfer對象。
Set SurferApp=CreateObject("Surfer.Application") “創(chuàng)建Surfer的ActiveX對象”
SurferApp.Visible=False “設置Surfer對象不可見”
Set plot=SurferApp.Documents.Add(1) “添加Surfer繪圖窗口”
Set shapes=plot.shapes “創(chuàng)建繪圖對象”
(2)數(shù)據(jù)網(wǎng)格化。
SurferApp.GridData DataFile:=sfilestem$, xCol:=1, yCol:=2,zCol:=3, Algorithm:=2, DupMethod:=2, _NumCols:= (xmax#-xmin#)/(xinc#/2), NumRows:=(xmax#-xmin#)/(xinc#/2), ShowReport:=False, OutGrid:=CSGrd1File$, ymin:=Text3. Text“數(shù)據(jù)網(wǎng)格化”
其中,DataFile為數(shù)據(jù)文件;xCol:=1,yCol:=2,zCol:=3分別為網(wǎng)格化數(shù)據(jù)時X,Y,Z數(shù)據(jù)所在列;Algorithm為網(wǎng)格化算法;此處的2為克里格法;OutGrid為輸出網(wǎng)格文件;ymin為網(wǎng)格最低深度。
(3)網(wǎng)格濾波。
SurferApp.GridFilter InGrid:=CSGrdbFile$, Filter:=9, OutGrid:=CSGrdbFile$
其中,InGrid為輸入網(wǎng)格文件;Filter濾波方法;此處的“9”為高斯低通濾波;OutGrid為濾波后輸出網(wǎng)格文件。
(4)網(wǎng)格白化。
SurferApp.GridBlank InGrid:=CSGrd1File$, BlankFile:=CSBlnFile$,OutGrid:=CSGrdbFile$
其中,InGrid為輸入網(wǎng)格文件;BlankFile為白化文件;OutGrid為白化后輸出網(wǎng)格文件。
白化文件由程序根據(jù)盲區(qū)深度和斷面截取深度結合網(wǎng)格數(shù)據(jù)計算,輸出為以線號命名的后綴為“bln”的文件,提取過程主要為獲取網(wǎng)格文件邊界值和白化范圍,并讀取相應位置標高。編程以文件讀寫為主,不作詳細論述。此過程同時生成各煤層底板線文件用于等值線圖添加煤層底板線。
(5)圖件繪制。
Set mapframe=shapes.AddContourMap(CSGrdFile$)“添加等值線圖”
Set ContourMap=mapframe.overlays(1)
With ContourMap“設置等值線圖各種參數(shù)”
Name="InvMod Contour"
Levels.LoadFile (CSLvlFile$)“添加色標文件”
SmoothContours=3
……
With plot.Selection“設置色標尺寸及位置”
Height=Text13.Text
Width=Text14.Text
Left=((mapframe.xmax-mapframe.xmin)/Text6.Text)/2+14
Top=13
DeselectAll
End With
End With
Set basemap=shapes.AddBasemap(ImportFileName:=CSBasFile$)“添加粘貼圖,地形線及煤層底板線”
(6)圖例文件添加。
采用復制統(tǒng)一圖例文件到斷面圖的方法,圖例位置的設置與色標位置類似。主要代碼為:
plot.Selection.Copy“復制圖例”
shapes.Paste“粘貼圖例”
(7)繪圖進度提示。
進度提示利用VB控件ProgressBar實現(xiàn),通過設置繪圖過程中ProgressBar的值來顯示繪圖進度,使用戶實時掌握繪圖進度。
ProgressBar1.Value=“ ”
(8)測線文件的遍歷。
上述過程為完成單幅斷面圖的過程,為達到批量自動化繪制當前文件夾下所有測線斷面圖的目的,需要使程序自動遍歷當前目錄下的所有測線文件,并循環(huán)繪圖過程。筆者采用了VB中的Dir函數(shù)返回當前目錄下的指定類型的文件,并用循環(huán)語句使繪圖過程自動執(zhí)行,直到完成所有斷面圖繪制。
將上述編輯好的程序應用于山西某礦區(qū)瞬變電磁勘查項目,該項目瞬變電磁測量面積15.2 km2,資料處理需要繪制斷面圖600余幅。人工繪圖是一個極其耗時費力的工程,且圖件修改不方便;采用本程序,成圖數(shù)據(jù)整理、繪圖全部實現(xiàn)計算機自動化,圖面信息統(tǒng)一,修改方便。
圖2為工作區(qū)13線瞬變電磁、地質綜合剖面圖,即為采用本程序繪制,圈出的采空區(qū)異常經(jīng)ZK1301驗證,110 m埋深處確為采空。該方法與人工繪圖相比效率高,繪圖結果可靠,應用效果明顯。
圖2 ××煤業(yè)瞬變電磁13線視電阻率、地質綜合剖面Fig.2 Integrated Transicient electromagnetic and geological section of electromagnetic line 13 in a coal industry1.物探推測2#煤層;2.物探推測采空區(qū);3.馬蘭組黃土;4.二疊系下石盒子組;5.二疊系山西組;6.黃土;7.砂質泥巖;8.砂巖; 9.煤層;10.煤層采空區(qū);11.鉆孔及編號
(1)基于Surfer和VBA技術的瞬變電磁斷面圖的自動化繪制技術,利用Surfer和Office公司自帶的VBA編程技術進行再次開發(fā),形成的繪制程序界面友好、使用方便、快捷、可操作性強,為后續(xù)項目的順利開展提供了技術支持。
(2)相比手動逐幅繪制,該技術功能貼近野外生產(chǎn)實踐需要,圖件格式統(tǒng)一,易于統(tǒng)一修改,有效地提高了工作效率,節(jié)約了時間及人工成本,具有較大的實踐應用價值。
(3)該處理技術還可以應用到其他領域,如繪制氣象部門的降雨量等值線圖、地球化學領域的污染物擴散濃度圖等,應用前景廣闊。