趙文強(qiáng),景建恩,楊 杰,趙慶獻(xiàn),羅賢虎
(1.中國地震應(yīng)急搜救中心,北京 100049;2.中國地質(zhì)大學(xué)(北京),北京 100083;3.中國科學(xué)院 聲學(xué)研究所,北京 100190;4.廣州海洋地質(zhì)調(diào)查局,廣州 510760)
海洋可控源電磁法(MCSEM)經(jīng)過數(shù)十年的發(fā)展,在實際應(yīng)用中取得顯著成效,已成為國內(nèi)、外海洋油氣和天然氣水合物勘查的有效手段之一[1]。這吸引了越來越多的油氣公司、高等院校及科研單位對此方法的關(guān)注,并紛紛開展相關(guān)的研究工作。
國內(nèi)、外學(xué)者對海洋可控源電磁數(shù)據(jù)預(yù)處理做了大量的研究,MacGregor[2]對海洋地殼結(jié)構(gòu)進(jìn)行研究,采用快速傅立葉變換方法,對海洋可控源電磁數(shù)據(jù)進(jìn)行了處理與分析;Behrens[3]在其博士論文中介紹了數(shù)據(jù)處理的相關(guān)技術(shù)及流程;Lu[4-5]則介紹了數(shù)據(jù)處理的基本步驟并申請了專利;Wright[6]研究了壓制天然場源噪聲的方法;Mittet[7]介紹了能夠突出異常信息的歸一化幅值曲線計算方法;Nordskag[8]對消除海水層的電磁響應(yīng)進(jìn)行了理論研究。此外,一些學(xué)者討論了空氣波的壓制方法[9-10]。國內(nèi)學(xué)者在海洋可控源電磁數(shù)據(jù)方面也開展了一些研究工作,林昕等[11]研究了兩種提高海洋可控源電磁數(shù)據(jù)信噪比的方法;劉寧等[12]研究了時變雙邊濾波法;李予國等[13]對海洋可控源電磁數(shù)據(jù)預(yù)處理方法進(jìn)行了總結(jié)。一些學(xué)者則開發(fā)了MCSEM數(shù)據(jù)預(yù)處理的可視化軟件。
目前海洋可控源電磁數(shù)據(jù)處理程序大多是采用MATLAB或C++語言進(jìn)行編寫,可視化界面少,操作復(fù)雜、在實際生產(chǎn)中難以推廣和實施[14]。傳統(tǒng)的MFC框架所開發(fā)的界面過于死板,并且其封裝性加大了界面優(yōu)化和改動的難度,往往出現(xiàn)代碼體積較大,影響后續(xù)開發(fā)者的工作效率。顯然,隨著預(yù)處理技術(shù)的不斷發(fā)展,尋找一套簡便的開發(fā)工具,編寫一套操作簡單、界面友好、可視化程度高和擴(kuò)展性強(qiáng)的海洋可控源電磁數(shù)據(jù)預(yù)處理軟件,將具有重要的實際意義。
筆者采用Duilib庫進(jìn)行海洋可控源電磁數(shù)據(jù)預(yù)處理軟件開發(fā),將用戶界面和消息處理邏輯徹底分離,通過在Duilib庫中加載XML腳本,解決MFC基礎(chǔ)控件功能單一以及界面不美觀等問題,實現(xiàn)了數(shù)據(jù)格式轉(zhuǎn)換、解析并加載電磁場數(shù)據(jù)、電磁場數(shù)據(jù)與導(dǎo)航數(shù)據(jù)可視化、電磁場數(shù)據(jù)頻譜分解、發(fā)射機(jī)電流數(shù)據(jù)的頻域處理及可視化、導(dǎo)航數(shù)據(jù)與頻譜數(shù)據(jù)合并及歸一化處理、MVO(振幅隨偏移距變化)和PVO(相位隨偏移距變化)曲線生成及數(shù)據(jù)顯示等多項功能。最后,通過與前人處理結(jié)果的對比驗證了處理軟件的正確性可靠性,并對我國某海域的可控源電磁實測數(shù)據(jù)進(jìn)行了處理。
海洋可控源電磁探測,是將電磁發(fā)射機(jī)拖曳至近海底,通過水平電偶極向海底發(fā)射大功率電磁波,由布設(shè)在海底靜止的電磁接收機(jī)采集人工源電磁場信號[17]。
如圖1所示,AB為電偶極子,方向與Z軸方向一致。假設(shè)偶極子位于球坐標(biāo)系的坐標(biāo)原點,發(fā)射電流的強(qiáng)度為I,偶極矩為dL。在均勻的全空間內(nèi),當(dāng)電阻率為ρ時,根據(jù)電磁場理論可以計算出觀測點P(r,θ,φ)的電偶極子的電場值為:
(1)
(2)
圖1 均勻空間中電偶極子源Fig.1 Electric dipole source in uniform space
圖2 MCSEM數(shù)據(jù)預(yù)處理流程圖Fig.2 MCSEM data preprocessing flow chart
測量時,采集站記錄的是時間域電磁場信號,海洋電磁場數(shù)據(jù)資料通常在頻率域進(jìn)行,因此在預(yù)處理時需要將時間域電磁場信號轉(zhuǎn)換為頻率域信號[13]。采集站自由釋放至海底,方位是不確定的,因此要對采集的電磁場數(shù)據(jù)進(jìn)行方位和水平矯正[16]。最后與發(fā)射機(jī)的導(dǎo)航數(shù)據(jù)合并處理后,可以獲得MVO和PVO曲線(圖2)。
Duilib是我國自主開發(fā)的DirectUI界面庫,是一款強(qiáng)大的開源界面開發(fā)工具,支持Windows32、WindowsCE、Mobile等平臺,由C++開發(fā),遵循BSD協(xié)議[17]。采用Duilib庫開發(fā)應(yīng)用軟件,具有工作效率高、開發(fā)周期短、兼容性好、界面美觀等優(yōu)點。Duilib兼容ActiveX插件,可以與MFC界面庫共同使用,已經(jīng)在互聯(lián)網(wǎng)客戶端、手機(jī)客戶端、車載電腦系統(tǒng)中得到成功應(yīng)用。
圖3 Duilib界面設(shè)計流程圖Fig.3 Flow chart of duilib interface design
Duilib的主要原理就是將界面和邏輯徹底分離,提高界面開發(fā)效率。整個流程如圖3所示,利用Duilib設(shè)計界面的工作主要包括三個內(nèi)容:加載并解析XML、顯示XML界面、消息傳遞及響應(yīng)。
本軟件旨在處理由中國地質(zhì)大學(xué)(北京)所研發(fā)的海洋可控源電磁儀器所采集的數(shù)據(jù),對其進(jìn)行預(yù)處理,計算結(jié)果用于后期的二維反演?;赩S2013平臺,采用C++語言編寫,使用Duilib界面庫與MFC進(jìn)行開發(fā)。根據(jù)需求軟件的具體功能如下:
1)數(shù)據(jù)格式轉(zhuǎn)換。
2)解析并加載人工源電磁場數(shù)據(jù)。
3)電磁場數(shù)據(jù)與導(dǎo)航數(shù)據(jù)可視化。
4)發(fā)射電流與電磁場數(shù)據(jù)譜分析與顯示。
5)電磁場頻譜的歸一化處理。
6)導(dǎo)航數(shù)據(jù)與歸一化數(shù)據(jù)合并與導(dǎo)出。
7)MVO和PVO曲線生成與顯示。
圖4 軟件設(shè)計MVC結(jié)構(gòu)圖Fig.4 MVC structure chart of software design
圖6 軟件開發(fā)設(shè)計原理Fig.6 Principles of software development and design
圖5 軟件設(shè)計MVC結(jié)構(gòu)圖Fig.5 MVC structure chart of software design
軟件整體功能及相應(yīng)模塊如圖4所示,根據(jù)軟件的功能,可將程序分為:①數(shù)據(jù)計算模塊;②圖形顯示模塊;③數(shù)據(jù)模塊;④界面設(shè)計模塊。數(shù)據(jù)計算模塊用于對數(shù)據(jù)的FFT變換,歸一化處理以及振幅和相位的計算。圖形顯示模塊用于對原始數(shù)據(jù)和MVO、PVO曲線的繪制。數(shù)據(jù)模塊用于對原始數(shù)據(jù)的讀取,各參數(shù)的定義以及計算結(jié)果的更新和輸出。界面設(shè)計模塊也就是用XML文件來設(shè)計軟件界面。各個功能的實現(xiàn)是通過函數(shù)的調(diào)用來完成。
通過對軟件的模塊劃分主要設(shè)計的類有:
class TabOpenTsFile;//解析數(shù)據(jù)類
class TsEnvModel;//數(shù)據(jù)轉(zhuǎn)換類
class TsViewHelper;//數(shù)據(jù)圖像繪制類
class FFTProcessModel;//數(shù)據(jù)處理類
class GlobalConstants;//參數(shù)及數(shù)據(jù)類
海洋可控源電磁數(shù)據(jù)預(yù)處理軟件采用MFC和Duilib界面庫渲染技術(shù)進(jìn)行開發(fā)。傳統(tǒng)的模型(Model)-視圖(View)-控制器(Controller) (MVC)設(shè)計模式實現(xiàn)了業(yè)務(wù)功能邏輯、數(shù)據(jù)模型和界面UI交互的功能解耦。這里采用MVC進(jìn)行程序框架的架構(gòu),設(shè)計了數(shù)據(jù)模型層、界面層和控制層(圖5),其中控制層連接數(shù)據(jù)模型層和界面層,完成數(shù)據(jù)更新和顯示;界面層用于人機(jī)交互以及圖形顯示;數(shù)據(jù)層保存原始數(shù)據(jù)以及數(shù)據(jù)的處理結(jié)果。該開發(fā)模式能夠極大的提高軟件開發(fā)效率,減少了對軟件的后期維護(hù)和再開發(fā)的困難。
圖7 原始數(shù)據(jù)對比圖Fig.7 Raw data comparison chart(a)前人軟件數(shù)據(jù)結(jié)果;(b)本軟件數(shù)據(jù)結(jié)果
軟件在開發(fā)過程中,基于XML文件+UI引擎+Win32框架(圖6)來實現(xiàn)軟件的各個功能界面。編寫XML文件完成界面整體框架設(shè)計,使用UI引擎調(diào)用XML文件實現(xiàn)界面渲染,最后使用Win32框架的Duilib消息處理機(jī)制,完成各個界面窗口的消息處理與消息傳遞。針對Windows系統(tǒng)平臺的特點,在進(jìn)行快速FFT變換時采用了多線程編程,增加了變換速度,提高了計算效率。參照海洋可控源電磁數(shù)據(jù)預(yù)處理的流程,以及數(shù)據(jù)預(yù)處理的方法原理完成功能函數(shù)的實現(xiàn),最后通過用戶界面的生成實現(xiàn)處理結(jié)果可視化的效果。
雞、鴨、魚、肉類菜肴基本都要做加熱前的調(diào)味,最關(guān)鍵就在于去除腥臊味;青筍、黃瓜等配料,也常先用鹽腌除水,確定其基本味。
圖8 MVO與PVO對比圖Fig.8 MVO and PVO comparison chart(a)前人軟件數(shù)據(jù)結(jié)果;(b)本軟件數(shù)據(jù)結(jié)果
1.5.1 XML文件編寫
在進(jìn)行XML文件編寫時,根據(jù)海洋可控源電磁數(shù)據(jù)預(yù)處理軟件的需求,用戶界面分為:繪圖區(qū),菜單選擇區(qū),編輯區(qū)。繪圖區(qū)用于繪制原始數(shù)據(jù)曲線、計算結(jié)果曲線。菜單選擇區(qū)用于選擇不同的功能。編輯區(qū)用于選擇和編輯數(shù)據(jù)處理過程所需的參數(shù)以及文件的加載和圖片的保存。為了保證本軟件在操作過程中的簡便性和界面美觀,XML文件編寫時,主要采用了水平布局,垂直布局以及選項布局三種布局方式。
1.5.2 XML文件解析并顯示界面
CPaintManagerUI m_PaintManager;
m_PaintManager.Init(m_hWnd);//主窗口類與窗口句柄關(guān)聯(lián)
CDialogBuilder builder;// 聲明窗口構(gòu)造器
CControlUI*pRoot=builder.Create(_T("
ASSERT(pRoot&&"Failed to parseXML");
m_PaintManager.AttachDialog(pRoot);//創(chuàng)建控件樹
m_PaintManager.AddNotifier(this);//添加控件等
消息響應(yīng)
m_pMainWnd->Create(NULL,_T("MainWnd"),UI_CLASSSTYLE_DIALOG,WS_EX_STATICEDGE|WS_EX_APPWINDOW,0,0,600,800);//注冊窗口類,創(chuàng)建窗口
m_pMainWnd->CenterWindow();
m_pMainWnd->ShowModal();//顯示窗口、進(jìn)入窗口消息循環(huán)
1.5.3 建立消息響應(yīng)
界面生成之后,需要重寫相應(yīng)函數(shù)Notify以響應(yīng)用戶請求的事件。這里以按鈕事件為例進(jìn)行介紹,主要包括3個步驟。
1)調(diào)用AddNotifier函數(shù)將消息加入Duilib的消息循環(huán)。
2)給按鈕設(shè)置一個唯一的控件ID。
3)在Notify函數(shù)里處理消息。
步驟1)在重寫HandleMessage函數(shù)時已經(jīng)完成,步驟2)是在編寫XML時完成的。當(dāng)用戶進(jìn)行點擊按鈕操作時,需要在Notify函數(shù)中進(jìn)行判斷點擊的按鈕以及實現(xiàn)。至此實現(xiàn)了主界面的編寫、顯示以及消息的響應(yīng)。
圖9 實測MCSEM數(shù)據(jù)處理結(jié)果Fig.9 Data processing results of measured MCSEM(a)MVO曲線;(b)PVO曲線
對我國某海域?qū)崪y海洋可控源電磁數(shù)據(jù)進(jìn)行處理,并檢測軟件的可靠性。選取相同時間段電磁場時間序列的原始信號,與中國地質(zhì)大學(xué)(北京)王銘等[14]所開發(fā)的處理軟件進(jìn)行對比(圖7),由圖7可以看出,本軟件與中國地質(zhì)大學(xué)(北京)海洋可控源電磁數(shù)據(jù)預(yù)處理軟件顯示結(jié)果相同。
選取相同的處理參數(shù),對同一測站的海洋可控源電磁數(shù)據(jù)進(jìn)行處理,最終得到各自的MVO與PVO曲線。這里頻譜分析采用FFT變換,選取的窗口類型都為Hanning窗和窗口長度都為4 096(圖8)。
對比圖8(a)和圖8(b)發(fā)現(xiàn),本軟件得到的MVO曲線能夠得到更大的收發(fā)距,在計算過程中,本軟件采用頻率域振幅疊加的方法壓制實測信號中的噪聲,提高了信噪比,因此獲得了較大的收發(fā)距。由于本軟件集成化較好,加上對計算方法和程序進(jìn)行優(yōu)化處理,處理一條測線9個測點的處理效率提升了近35%。對比中可以看出PVO曲線差異較大,是由于本軟件對儀器內(nèi)置原子鐘產(chǎn)生的時間漂移而引起相位誤差進(jìn)行了矯正,得到了相對準(zhǔn)確的相位結(jié)果。
通過與前人編寫的處理軟件進(jìn)行對比測試,測試結(jié)果表明本軟件的正確性,因此本軟件可用于生產(chǎn)任務(wù)中的MCSEM數(shù)據(jù)處理。利用本軟件處理了中國地質(zhì)大學(xué)(北京)與廣州海洋地質(zhì)調(diào)查局在2018年南海某海域采集的MCSEM數(shù)據(jù),本次對一條測線9個測點8Hz的人工源電磁場數(shù)據(jù)進(jìn)行處理。圖9顯示了最后的 MVO、PVO曲線,各顏色代表了不同測點的處理結(jié)果。
利用筆者開發(fā)的預(yù)處理軟件對實測海洋可控源電磁數(shù)據(jù)進(jìn)行處理,最后得到了滿意的MVO與PVO曲線,又通過與前人軟件的處理結(jié)果進(jìn)行對比,驗證本文所開發(fā)軟件的可靠性。最后通過對實際數(shù)據(jù)的處理表明,筆者開發(fā)的軟件具有操作簡單、處理高效的特點,為將來實際海洋可控源電磁數(shù)據(jù)預(yù)處理提供了技術(shù)與軟件支持。
筆者開發(fā)的軟件采用Duilib界面庫進(jìn)行海洋數(shù)據(jù)預(yù)處理軟件的開發(fā),對于傳統(tǒng)的處理軟件進(jìn)行了界面的優(yōu)化和集成,提高了數(shù)據(jù)預(yù)處理的效率,具有極大的推廣價值。對于Duilib界面庫開發(fā)可視化軟件的步驟進(jìn)行了詳細(xì)系統(tǒng)的介紹,這是一個新的嘗試,并對相關(guān)的地球物理數(shù)據(jù)處理可視化軟件開發(fā)具有一定的借鑒意義。