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