基于Qt的地质统计学反演系统设计与实现_王家华
Computer 与技术电脑知识与技术Computer Knowledge Knowledge and and Technology Technology 电脑知识
Vol.6,No.3,January 2010, pp.636-637, 640ISSN 1009-3044第6卷第3期(2010年1月) http://www.dnzs.net.cnTel:+86-551-[1**********]964基于Qt 的地质统计学反演系统设计与实现
王家华,齐国亮
(西安石油大学计算机学院,陕西西安710065)
摘要:介绍了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
(Schoolof 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 Inver -sion 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 为基础,设计并实现了地质统计学反演系统。
2Qt
2.1Qt 简介
Qt 是一个跨平台的C++图形用户界面应用程序框架,其提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能[2]。Qt 基于C++语言,完全面向对象,有良好的封装机制,模块化程度高,可重用性好,容易扩展,允许真正地组件编程。Qt 主要包括图形界面Qt Designer 快速开发工具、Qt Assistant 详细的参考文档、Qt Linguist 强大的国际化支持工具、以及元对象编译器、用户界面编译器以及qmake 等丰富的命令行工具。Qt 不但有商业版本,而且还提供免费版本,这对于非商业的科学研究提供了便利。
2.2Qt 类库
Qt 类库可分为三部分:控件、框架和效用工具。控件包括环境控件、主窗口控件、标准对话框、基本的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 。
收稿日期:2010-01-05
作者简介:王家华(1945-),男,浙江绍兴人,教授,主要研究方向为算法分析与设计、油藏模拟、数值模拟;齐国亮(1985-),男,山西
临汾人,硕士研究生,主要研究方向为算法分析与设计。
:谢媛媛
第6卷第3期(2010年1月) Computer Knowledge and Technology 电脑知识与技术
2.3Qt 对象间通讯机制
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所示。图1地质统计学反演算法流程图
3.3系统实现
根据地质统计学反演系统的结构,用Qt Designer 设计系统的界
面。将设计好的UI 文件利用用户界面编译器(UIC )工具转换为CPP 文
件和H 文件,就可以将界面和系统实现融合到一起。具体实现过程如
下图3所示。
将生成的CPP 文件和H 文件添加到集成开发环境中,编写相应
的主窗口程序和槽函数,并将信号与槽函数连接。主窗口程序如下:
#include
#include
#include
#include"ui_form.h"
#include" GeostatisticInversion.h"
int main(intargc, char *argv[])
{
QApplication app(argc,argv); //构造一个Application 对象
GeostatisticInversion *ui=newGeostatisticInversion ();//构造程序主
窗口图2地质统计学反演系统结构
ui->show();//显示主窗口
return app.exec();//进入窗口过程,即进入消息循环
}
完成之后将整个工程编译执行,即可生成地质统计学反演系统。图3利用Qt 构建图形用户界面过程(下转第640页)
637
Computer Knowledge and Technology 电脑知识与技术
第6卷第3期(2010年1月)
if session("name")=""then
Call msgbox("请登陆!" ,"e_login.asp")
Response.end
End if
%>>
2) 屏蔽某些不需要的按键:如当学生在线测试时,为禁止学生刷新页面,,我们在程序中加入以下代码,用以屏蔽F5按键。代码如下:
执行结果所图2所示。
通过以上代码,可以防止产生一些意外错误。图2
3尚需进一步解决的问题
本在线测试系统,在组题、评分、考试时间控制等方面实现了网络化与自动化,同时具有一定的安全措施,保证了在线测试的顺利进行。但在自动组卷时,所抽取的试题在难易度分布方面还有不尽合理之处,尚需进一步改进完善,这也是我们下一步工作的努力方向。
4结束语
本系统作为网络教学软件的一部分,充分利用便捷的校园网络,使学生随时随地通过计算机网络进行自我测试,帮助学生巩固学习成果,同时也使教师随时了解学生对课程的掌握程度,利于进一步提高教学质量,受到了广大师生的欢迎。
参考文献:
[1]
[2]
[3]
[4]张固, 汪晓平.ASP 网络应用系统典型模型开发实例解析[M].北京:人民邮电出版社,2004. 杜宏毅, 郑玄宜. 完全接触ASP 之VBScript [M].北京:电子工业出版社,2002. 韦群峰. 基于ASP 网上考试系统的设计与实现[J].宁波工程学院学报,2005,17(2):106-109.杨志.Dreamweaver+ASP网络编程[M].北京:电子工业出版社,2008.
(上接第637页)
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]CarlosT 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.
:谢媛媛