高曉偉,張 吉
(1.核工業(yè)二一六大隊,新疆烏魯木齊 830011;2.鐵道第三勘察設計院集團有限公司,天津 300142)
高密度電法在物探外業(yè)工作中,由于某些操作或儀器原因,往往使數(shù)據(jù)中包含人為錯誤,或外界干擾產(chǎn)生的量值較大的“過失誤差”以及量值較小的“偶然誤差”。因此,在對高密度電法或電測深法數(shù)據(jù)進行反演之前要先對其進行預處理,目的是限制“過失誤差”和壓制“偶然誤差”對反演結果的影響。
常規(guī)的電法處理軟件一般具有數(shù)據(jù)預處理功能,但這些功能有些人機交互性不好;有些則對數(shù)據(jù)格式有著嚴格的限制,只能處理少數(shù)數(shù)據(jù)。為解決上述問題,本文基于Visual Studio 2010平臺,采用VC++語言,開發(fā)出了一套人機交互界面友好、數(shù)據(jù)格式簡單、通用性強的電法數(shù)據(jù)預處理軟件。
電法數(shù)據(jù)可視化預處理軟件的核心在于可視化的人機交互數(shù)據(jù)編輯,其具體步驟為:
(1)打開數(shù)據(jù),并將其以圖形(圖像)的方式實時顯示于計算機屏幕等輸出設備上;
(2)人工選擇或自動標識畸變數(shù)據(jù)點;
(3)對畸變數(shù)據(jù)點進行調(diào)整;
(4)重復(2)、(3)步驟直至所有畸變數(shù)據(jù)點都做好調(diào)整;
(5)保存數(shù)據(jù)。
圖1為本電法數(shù)據(jù)預可視化預處理軟件電阻率畸變點編輯流程圖。
預處理軟件開發(fā)的關鍵點在于電法數(shù)據(jù)的顯示及畸變點人機交互選擇與編輯,為解決上述問題,實現(xiàn)優(yōu)秀、高效的數(shù)據(jù)編輯,本文采用了微軟MFC類庫提供的CToolTipCtrl類實現(xiàn)了電阻率數(shù)值的實時顯示,并采用反色繪圖模式實現(xiàn)了視電阻率畸變點調(diào)整過程中的高效重繪。
圖1 高密度電法數(shù)據(jù)預可視化預處理軟件電阻率畸變點編輯流程Fig.1 Editing process of distortion point of resistivity of pre-processing software by high density electrical method
為加強軟件通用性,高密度電法數(shù)據(jù)預處理軟件在設計時采用了最簡單的數(shù)據(jù)結構,即橫坐標、縱坐標(或數(shù)據(jù)點層號)及視電阻率三列的文本數(shù)據(jù)格式,三列之間可采用任意數(shù)量的空格或制表符加以分割。圖2為本軟件兼容的一個典型的高密度電法測試數(shù)據(jù)的數(shù)據(jù)格式截圖,對于其他儀器的數(shù)據(jù),可利用Excel等常規(guī)軟件將其整理成本格式即可。
數(shù)據(jù)實時交互顯示是可視化預處理軟件的核心技術之一,為了提高本軟件的使用便捷性,采用CToolT-ipCtrl類提供的實時Tip技術,實現(xiàn)了讓鼠標提示窗口跟著鼠標在屏幕上移動。
圖2 本電法數(shù)據(jù)預處理軟件兼容數(shù)據(jù)格式Fig.2 Compatible data format of pre-processing software
具體實現(xiàn)方法如下:
(1)在View里添加CToolTipCtrl變量m_tool;
(2)重載View類的OnMouseMove函數(shù),并在其中添加如下代碼:
str.Format("橫 坐 標:%6.3f 層 序 號:%3d 視電阻率:%6.3f",
m_HDRData.m_Data[m_nSelectedPoint].x,//當前選擇數(shù)據(jù)點的橫坐標
m_HDRData.m_Data[m_nSelectedPoint].y,//當前選擇數(shù)據(jù)點的縱坐標
m_HDRData.m_Data[m_nSelectedPoint].rho);//當前選擇數(shù)據(jù)點的視電阻率
m_ToolTip.UpdateTipText(str,this);//實時 Tip 顯示更新
在進行數(shù)據(jù)編輯時,隨著鼠標的移動,Tip提示框的電阻率也實時變化,方便將電阻率調(diào)整到需要的數(shù)值。
在數(shù)據(jù)編輯過程采用局部重繪的方式實現(xiàn)了電阻率數(shù)據(jù)的高效實時顯示,其關鍵在于選擇反色繪圖模式,重載OnMouseMove函數(shù),在鼠標移動過程中隨著鼠標移動不斷對上一個像素點所繪圖形進行反色重繪,并對新像素點位置進行繪圖,具體實現(xiàn)方式如下。
dc.SetROP2(R2_NOT);//選擇反色的繪圖模式
//以下為對鼠標位于上一個像素點時所繪圖形進行反色重繪
dc.MoveTo(CPoint(cp - GetDeviceScrollPosition()));
dc.LineTo(CPoint(lp - GetDeviceScrollPosition()));
dc.MoveTo(CPoint(cp - GetDeviceScrollPosition()));
dc.LineTo(CPoint(rp - GetDeviceScrollPosition()));
dc.Rectangle((cp.x - m_HDRData.m_nPointRadious-GetDeviceScrollPosition().x),
(cp.y- m_HDRData.m_nPointRadious- GetDeviceScrollPosition().y),
(cp.x+m_HDRData.m_nPointRadious- GetDeviceScrollPosition().x),
(cp.y+m_HDRData.m_nPointRadious- GetDeviceScrollPosition().y));
//以下為鼠標位于本像素點時實時繪制圖形
dc.MoveTo(CPoint(point- GetDeviceScrollPosition()));
dc.LineTo(CPoint(lp - GetDeviceScrollPosition()));
dc.MoveTo(CPoint(point- GetDeviceScrollPosition()));
dc.LineTo(CPoint(rp - GetDeviceScrollPosition()));
dc.Rectangle((point.x - m_HDRData.m_nPointRadious-GetDeviceScrollPosition().x),
(point.y - m_HDRData.m_nPointRadious- GetDeviceScrollPosition().y),
(point.x+m_HDRData.m_nPointRadious - GetDeviceScrollPosition().x),
(point.y+m_HDRData.m_nPointRadious - GetDeviceScrollPosition().y));
cp.y=point.y;
依照上述技術路線,采用在Visual Studio平臺下,采用VC++語言開發(fā)出了本高密度電法數(shù)據(jù)預處理軟件。
經(jīng)過大量的試驗驗證及若干鐵路勘查、公路路基勘查項目的使用,證明本軟件人機交互界面友好,數(shù)據(jù)兼容性強,數(shù)據(jù)處理效果良好,是一款優(yōu)秀的高密度電法數(shù)據(jù)預處理軟件,并值得推廣應用。
圖3 高密度電法數(shù)據(jù)與處理軟件界面截圖Fig.3 Sectional drawing of data of high density electrical method and processing software interface
圖4 畸變點手工編輯及電阻率實時Tip顯示Fig.4 Manual editing of distortion point and real-time tip display of resistivity
[1] 利奕年,羅延鐘.高密度電法視電阻率數(shù)據(jù)預處理算法[J].物探化探計算技術,2006,28(4):328.
[2] 董浩斌,王傳雷.高密度電法的發(fā)展與應用[J].地學前緣,2003,10(1):171-176.