资源描述:
《基于vc++的segy数据格式地震剖面图绘制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于VC++的SEGY数据格式地震剖面图绘制关键词:地震数据,地震剖面,显示波形图,变密度图1 引言地震勘探采集的地震数据一般以地震道为单位进行组织,采用SEG-Y文件格式存储。SEG-Y格式是由SEG(SocietyofExplorationGeophysicists)提出的标准磁带数据格式之一,它是石油勘探行业地震数据的最为普遍的格式。读取数据后经过处理可以得到有关地下构造和岩性等大量有用信息信息。但是原始数据数据量庞大而且杂乱无章,为了使大量的数据变得直观、易于理解,揭示数据间的内在联系,必须对原始数据经过一系列变换转换成图形图像,将信息以更容
2、易理解的形式展现出来。VC++功能强大、界面友好且操作方便,因此目前PC机上通常在VC++环境下对这种格式存放地震勘探数据进行处理并实现可视化显示。笔者在做地震数据可视化时利用VC++6.0编写了地震数据的读取处理程序及绘图程序。2 读取SEG-Y数据2.1 SEG-Y格式地震数据的文件结构[1,2]标准的SEG-Y文件结构如表1所示:前3600字节为文件头通常被看做一个整体,紧跟其后的是数据体。非标准的SEG-Y文件可能没有前3600字节的文件头。文件头有3600字节分为两部分,第一部分长度为3200字节,以EBCDIC编码记录地震数据采集系统的有
3、关信息。共有40行,每行长度为80个字节,每个字节表示一个字符,EBCDIC码需先转化成ASCII码,才能在微机中正确显示。第二部分为二进制格式,长度400字节,数据类型为32位或16位的整型,记录数据体信息,如每道的采样点数、采样率、数据格式等[3]。数据体由多个数据道组成。每道数据分道头、道数据两部分。道头是二进制数据,长度240字节,数据类型:32位或16位的整型,记录采样点数、采样间隔、共深度采集点CDP(CommonDepthPoint)号、XLine号、YLine号以及坐标信息等。地震道的数据长度为采样点数×4个字节。工作站SEG-Y数据
4、的存储格式一般为IBM格式,微机处理的SEG-Y数据存储格式一般为IEEE格式。通过读取二进制文件头中第3225~3226字节存储的信息可以判定数据的存储类型。2.2 读取地震数据地震数据的正确读取是数据处理的前提,任何一位参数的偏差都可能导致整SEG-Y数据文件出现内部参数矛盾而无法进行数据解读。了解SEG-Y格式地震数据的文件结构后对读取位置定位,读取完成存储为后面的处理作准备。微机版和工作站版SEG-Y数据结构一样,但是数据的存储格式不同,微机中的数据是低字节在前,高字节在后。在微机的操作系统环境下,对SEG-Y格式的数据进行处理时,首先必须对
5、数据进行高位、低位互换处理。读取SEG-Y数据用到的类如下:在程序中定义了2个结构体:ST_real_info和ST_trace_info,前者用来定义SEGY卷头文件中400字节数据信息代表的变量,后者用来定义道头文件中头240个字节数据信息代表的变量。定义了读取SEG-Y数据的类CReadSegyData,主要功能有:Ebcdic2Ascll()完成EBCDIC码向ASCLL码的转换;ibm_to_float()完成地震数据IBM格式向IEEE数据格式转换;GetRealVar()完成卷头信息的读出;GetOneTraceInfo()完成道头数据
6、的读出;GetOneTraceData()完成道数据的读出等。读道头和道数据时先要判断文件按有无文件头,如果有则第N道道头和道数据读取位置分别为:info_pos=3600+(N-1)(240+SampleNum*DataSize)data_pos=3600+(N-1)(240+SampleNum*DataSize)+240其中SampleNum是采样点数,DataSize是一个数据点所占的字节数。如果没有卷头,则上面的式子中就没有3600,读文件时用fseek()定位,用fread()读取。读完后判断SEG-Y格式,如果是IBM格式则必须要转化。3
7、 地震的剖面显示常见的地震剖面显示方式有波形显示、变面积显示和变密度显示,其中变面积显示又有三种方式:波形变面积显示、单极性显示和双极性显示[3]。图1是绘图参数设置对话框,可以根据显示的需要对各种参数进行设置,比如道与道之间的间隔nTraceInterval和采样点之间的间隔nTimeInterval、起始道m_StartTrace和终止道m_EndTrace、起始时间m_StartTime和终止时间m_EndTime等。为类型设定组合框中的四个单选按钮添加变量m_DrawOption,项目创建后系统自动为我们创建了主框架CMainFrame类、应
8、用程序App类,文档Doc类和视图View类,在视图View类的实现文件中添加单击消息处理函数,单击波形图单