基于Qt的地质统计学反演系统设计与实现

时间:2022-08-28 03:15:56

基于Qt的地质统计学反演系统设计与实现

摘要:介绍了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类库可分为三部分:控件、框架和效用工具。控件包括环境控件、主窗口控件、标准对话框、基本的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所示。

上一篇:令牌桶算法比较研究 下一篇:关联规则在高校图书馆借阅数据挖掘中的应用