一种三维观测系统面元属性多线程快速显示方法

文档序号:9373772阅读:164来源:国知局
一种三维观测系统面元属性多线程快速显示方法
【技术领域】
[0001]本发明属于地震勘探与开发领域,具体涉及一种三维观测系统面元属性多线程快速显示方法。
【背景技术】
[0002]随着三维地震勘探技术的逐步发展,近些年高精度、高密度的观测系统设计越来越多,这使得在进行三维观测系统面元属性分析结果数据量变得非常大。通常我们希望能够快速在屏幕上看到整个工区覆盖次数分布图,但当面元属性分析数据量比较大时,覆盖次数分布图绘制会占用系统大量资源,而使得显示效率变得很慢。
[0003]传统的编程思想是串行化的,它只适合在单核的处理器上运行,由于它运行的顺序化和只有一个处理器可用做执行资源,所以效率不高。而随着计算机技术的不断发展,普通的PC机基本都拥有多核处理器,如果继续采用传统的串行化编程方式的话,会浪费大量计算资源,同时计算效率也无法得到提升。为了提供覆盖次数分布图的显示效率,就需要利用多核处理器的计算优势,对原有的程序进行并行化改造,采用多线程技术提供其显示效率。

【发明内容】

[0004]本发明的目的在于解决上述现有技术中存在的难题,提供一种三维观测系统面元属性多线程快速显示方法,对三维观测系统面元属性分析结果进行分块预处理,利用多线程方式提高覆盖次数数据读取及显示绘制效率。
[0005]本发明是通过以下技术方案实现的:
[0006]一种三维观测系统面元属性多线程快速显示方法,对三维观测系统面元属性分析结果进行分块预处理,利用多线程方式提高覆盖次数数据读取及显示绘制效率;
[0007]所述方法包括:
[0008](I)建立三维观测系统的覆盖次数属性矩阵结构;
[0009](2)沿面元网格x-line方向将覆盖次数属性矩阵结构分成N块;
[0010](3)获取当前窗口绘制区域大小,创建N张QPixmap图片,每张图片对应的是覆盖次数属性矩阵结构的1/N份;
[0011](4)创建N个线程,分别载入覆盖次数,并绘制到对应的QPixmap图片中;
[0012](5)将所述N张QPixmap图片绘制到屏幕对应位置上。
[0013]所述步骤(I)包括:
[0014]在观测系统中横向与纵向打上固定宽度与高度的面元网格后,通过计算观测系统中所有炮检点连线的中点所落在面元网格中的位置坐标统计结果数据,形成三维观测系统覆盖次数属性矩阵结构;
[0015]建立矩阵头文件和矩阵体文件,其中矩阵头文件中包括面元网格起始点坐标、inline方向间距及个数、χ-line方向间距及个数和方向角;矩阵体是按inline及x-line方向分布记录的覆盖次数值阵列;
[0016]将每个面元网格中覆盖次数值按照先inline方向后x-line方向存储到覆盖次数矩阵结构中。
[0017]所述覆盖次数值采用无符号整数型。
[0018]所述步骤(2)包括:
[0019]计算步骤(I)得到的覆盖次数矩阵结构所占存储空间大小,总存储空间=inline方向网格个数*x-line方向网格个数*sizeof (unsigned int);
[0020]将该总存储空间分成N份,其中每一份所占存储空间大小=inline方向网格个数*x_line方向的跨度*si zeof (unSi gned int), χ-line方向的跨度=χ-line方向网格个数
/No
[0021]所述N值是根据计算机的性能确定的。
[0022]所述步骤(3)包括:
[0023]获取当前显示窗口的绘制区域尺寸,利用该尺寸建立N张QPixmap图片,并将图片背景填充为白色。
[0024]所述步骤⑷包括:
[0025]利用QThread创建N个进程,每个线程分别读取对应步骤(2)中的面元网格分块中的覆盖次数属性,并利用面元网格定义信息将每一分块的覆盖次数填充图绘制到对应QPixmap图片中;
[0026]所述面元网格定义信息是指面元网格起始点坐标、inline方向间距及个数、x-line方向间距及个数和方向角。
[0027]所述步骤(5)包括:
[0028]根据坐标转换,将大地坐标转换成屏幕坐标,获取当前显示窗口的QPainter绘制设备,利用drawPixmap函数依次将步骤(4)中N张图片叠加绘制到屏幕上。
[0029]与现有技术相比,本发明的有益效果是:
[0030](I)本发明利用多线程方式提高覆盖次数数据读取及显示绘制效率;
[0031](2)本发明创新性地实现了三维观测系统面元属性预处理;
【附图说明】
[0032]图1是面元网格分块图。
[0033]图2是多线程绘制缓存图。
[0034]图3是本发明方法的步骤框图。
【具体实施方式】
[0035]下面结合附图对本发明作进一步详细描述:
[0036]本发明提供了一种三维观测系统面元属性多线程快速显示方法,属于石油地震勘探与开发领域。方法包括:(I)建立三维观测系统覆盖次数属性矩阵结构;(2)沿面元网格x-line方向将覆盖次数属性分成N块;(3)获取当前窗口绘制区域大小,创建N张QPixmap图片;(4)创建N个线程,分别载入覆盖次数,并绘制到对应的QPixmap中;(5)将N张QPixmap图片采用透明的方式绘制到屏幕对应位置上。
[0037]如图3所示,本方法具体如下:
[0038](I)建立三维观测系统覆盖次数属性矩阵结构,具体如下:
[0039]在野外三维观测系统设计中,覆盖次数统计图作为一个重要的手段给技术人员提供参考。覆盖次数图是指将面元网格中对应的数值转换成颜色值来对网格进行填充,设计简洁、高效的覆盖次数数据结构可以增强程序的运行效率。
[0040]在观测系统中横向与纵向打上固定宽度与高度的面元网格后,通过计算观测系统中所有炮检点连线的中点所落在面元网格中的位置坐标统计结果数据,为了有效的管理这些数据,建立两个文件即矩阵头和矩阵体文件。矩阵头中定义了面元网格起始点坐标、inline方向间距及个数、χ-line方向间距及个数、方向角等信息。矩阵体是按inline及x-line方向(是指与面元网格相对应的存储方式,沿inline方向存储覆盖次数值,x-line作为行号累加,如图1所示的网格结构)分布记录的覆盖次数数字阵列;这种存储方式可以方便的通过行号及列号访问矩阵中任意面元网格中统计信息。
[0041](2)沿面元网格x-line方向将覆盖次数属性分成N块;
[0042]在串行程序中,程序运行是顺序化,只有一个处理器可用作执行资源,所以效率不高。三维观测系统面元属性数据采用线性的存储方式,针对这种数据存储形式可以采用多线程的方式同时读取不同位置的数据进行处理,可以大大提高程序运行效率。
[0043]在建立多线程之前需要对数据进行分块预处理,用于告诉每个线程访问的数据地址空间。计算步骤(I)得到的覆盖次数矩阵结构所占存储空间大小,总存储空间=inline方向网格个数*x_line方向网格个数*s
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1