摘要:介紹了Qt及其類庫,論述了Qt對象間的通訊機制。闡明了地質統計學反演算法的原理,對地質統計學反演系統進行了設計。通過采用Qt Designer快速開發工具,實現了地質統計學反演系統。采用Qt開發平臺,節省了程序開發時間,提高了程序開發效率。
關鍵詞:Qt;信號和槽;Qt Designer;地質統計學反演算法
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2010)03-636-02
Design and Realization of Geostatistical Inversion System Based on Qt
WANG Jia-hua, QI Guo-liang
(School of Computer, Xi'an Shiyou University, Xi'an 710065, China)
Abstract: This paper introduce Qt and Qt class libraries. Qt object's communication methods are discussed. We clarify the principle of Geostatistical Inversion algorithm and design the Geostatistical Inversion system. By use of Qt Designer, we realize the Geostatistical Inversion system. We use Qt to short the programming periods and improve the programming efficiency.
Key words: Qt; Signal and Slot; Qt Designer; Geostatistical Inversion algorithm
1 概述
地質統計學反演,是一種將隨機模擬理論與地震反演相結合的反演方法[1]。它將測井資料和地震資料結合起來,建立定量的波阻抗三維地質模型。測井資料在垂向上具有很高的分辨率,然而在沒有井或者井數目很少的地區,就很難進行精確評價。地震資料雖然在垂向上分辨率較低,但在橫向上能大范圍地反映地質構造和砂體變化等特征,且具有大面積追蹤的能力。因此,通過地質統計學反演,將二者的優點結合起來,可以建立更為精確的儲層地質模型。本文以面向對象的C++圖形用戶界面Qt為基礎,設計并實現了地質統計學反演系統。
2 Qt
2.1 Qt簡介
Qt是一個跨平臺的C++圖形用戶界面應用程序框架,其提供給應用程序開發者建立藝術級的圖形用戶界面所需的所有功能[2]。Qt基于C++語言,完全面向對象,有良好的封裝機制,模塊化程度高,可重用性好,容易擴展,允許真正地組件編程。Qt主要包括圖形界面Qt Designer快速開發工具、Qt Assistant詳細的參考文檔、Qt Linguist強大的國際化支持工具、以及元對象編譯器、用戶界面編譯器以及qmake等豐富的命令行工具。Qt不但有商業版本,而且還提供免費版本,這對于非商業的科學研究提供了便利。
2.2 Qt類庫
Qt類庫可分為三部分:控件、框架和效用工具??丶ōh境控件、主窗口控件、標準對話框、基本的GUI控件、擴展GUI控件、GUI組織控件、以及幫助系統控件??蚣馨ㄊ且恍┏橄蟮念?,通常不可見,如對象模型、抽象控件、繪圖、拖放、控件外觀。效用工具包括時間日期和鏈表樹等數據結構,它們和GUI無關。在程序設計中最常用的類有:QObject、QApplication、QWidget、QMainWindow、QLayout、QEvent等[3]。
1) QObject類是所有Qt對象的基類,它是Qt對象模型中心。QObject可以通過event()接收事件并過濾其它對象的事件。QObject把自己組織在對象樹中,它可以自動添加、刪除子對象和查找對象。QObject提供了Qt中最基本的定時器。
2) QApplication類管理圖形用戶界面應用程序的控制流和主要設置。它包括主事件循環,在其中來自窗口系統和其它資源的所有事件被處理和調度;處理應用程序的初始化和結束,并且提供對話管理;處理絕大多數系統范圍和應用程序范圍的設置。
3) QWidget類是所有用戶界面對象的基類。它從窗口系統接收鼠標、鍵盤和其它事件,并且在屏幕上繪制自己的表現。它被QPushButton、QListBox和QTabDialog等類繼承,這些子類提供了實際的功能。
4) QMainWindow類提供一個有菜單條、錨接窗口和一個狀態條的主要應用程序窗口。
5) QLayout類是處理布局的基類,被QBoxLayout和QGridLayout所繼承,以多種方式控制組件的排版布局。
6) QEvent類是所有事件類的基類。Qt的主事件回路從事件隊列里取得本地窗口系統事件,轉換為QEvent,并且把這些發給QObject。
2.3 Qt對象間通訊機制
Qt對象間的通訊采用的是信號和槽機制。信號和槽機制是Qt的一個最核心特征,也是Qt區別于其他框架的最突出特征。信號是一個特定的標識,槽就是一個函數。槽和普通的C++成員函數很像。它們可以是虛函數(virtual),也可被重載(overload),可以是公有的(public),保護的(protective),也可是私有的(private)。它們可以象任何C++成員函數一樣被調用,可以傳遞任何類型的參數。不同在于一個槽函數能和一個信號相連接,只要信號發出了,這個槽函數就會自動被調用。
信號和槽的關聯關系可以有以下幾種模式:
1)一個信號和一個槽關聯;
2)一個信號和多個槽關聯;
3) 一個信號和一個信號關聯;
4) 多個信號和一個槽關聯。
3 系統設計與實現
該系統是以地質統計學反演算法為理論基礎,下面先介紹該算法。
3.1 地質統計學反演算法
地質統計學反演,是一種將隨機模擬理論與地震反演相結合的反演方法。它由兩部分組成,即隨機模擬過程以及對模擬結果進行優化并使之符合地震數據的過程[4]。具體步驟如下:
1) 建立井中波阻抗的初始模型;
2) 隨機選取井間一個網格點;
3) 估計該網格點的條件概率密度函數;
4) 從該條件概率分布函數中隨機抽取一個值,利用反射系數公式計算反射系數,并與子波進行褶積生成合成地震道。
5) 根據合成地震道與實際地震道匹配程度而決定是否接受該地震道,若接受則終止計算,轉向下一個地震道即轉向步驟2),否則重復步驟4)-5);
6) 完成整個數據體的模擬。
其算法流程圖如圖1所示。
3.2 系統結構
地質統計學反演系統由數據輸入、測井數據時深轉化、地震數據重新采樣、模擬和計算、反演結果處理五部分組成。輸入的數據有測井數據、地質分層數據、地震數據、解釋數據。由于地震數據是時間域的,因此為了反演過程中將地震數據和測井數據結合,需要將測井數據從深度域轉化到時間域。地震數據重新采樣,是為了把地震數據的采樣間隔變為實際要求的采樣間隔。模擬和計算是整個系統的核心,它運用序貫高斯模擬算法進行模擬,并對結果計算得到最好的模擬結果。反演結果處理是對多次模擬結果求取平均值和標準差,這樣可以消除單次模擬產生的奇異值。該系統結構框圖如圖2所示。
3.3 系統實現
根據地質統計學反演系統的結構,用Qt Designer設計系統的界面。將設計好的UI文件利用用戶界面編譯器(UIC)工具轉換為CPP文件和H文件,就可以將界面和系統實現融合到一起。具體實現過程如下圖3所示。
將生成的CPP文件和H文件添加到集成開發環境中,編寫相應的主窗口程序和槽函數,并將信號與槽函數連接。主窗口程序如下:
#include
#include
#include
#include \"ui_form.h\"
#include \" GeostatisticInversion.h\"
int main(int argc, char *argv[ ])
{
QApplication app(argc, argv);//構造一個Application對象
GeostatisticInversion *ui=new GeostatisticInversion (); //構造程序主窗口
ui->show(); //顯示主窗口
return app.exec();//進入窗口過程,即進入消息循環
}
完成之后將整個工程編譯執行,即可生成地質統計學反演系統。
4 結束語
通過采用Qt,設計并實現了地質統計學反演系統。Qt是一個跨平臺的C++圖形用戶界面框架,用它開發的系統可以很方便的移植到其他操作平臺上。所以,Qt為開發跨平臺的應用程序提供了方便,縮短程序開發時間,提高了程序開發的效率。
參考文獻:
[1]孫思敏,彭仕宓.地質統計學反演方法及其在薄層砂體預測中的應用[J].西安石油大學學報:自然科學版,2007,22(1):23-26.
[2]許德新,談振藩,高延濱.基于Qt組件庫應用程序的生成及其跨平臺實現[J].東北農業大學學報,2006,37(3):373-376.
[3]朱吉佳,蔡家麟.基于Qt 的業務監控系統界面設計與實現[J].計算機技術與發展,2008,18(3):236-242.
[4]Carlos T V, Raghu K, Chunduru A. Integrated Interpretation of Wireline and 3D SeismicData To Delineate Thin Oil-Producing Sand sin San Jorge Basin[C].SPE87304,2003.
[5]萬長勝.用Qt進行面向對象軟件的設計與開發[J].核電子學與探測技術,2004,24(3): 311-313.
[6]閆鋒欣,侯增選,張定華,等.基于Qt和Open Inventor跨平臺虛擬油泥造型系統構建方法的研究與實現[J].計算機科學,2008,35(11):442-742.