-17-
中国科技信息2005年第9期CHINASCIENCEANDTECHNOLOGYINFORMATIONMay.2005
科技论坛
1、前言
目前,地震勘探采集数据一般采用SEG-Y格式存储,很多时候需要在PC机上对这些数据进行处理和监测,因此就存在格式读取问题。目前,在PC机上经常选用环境下处理数据。VC
++
是目前功能强大,与硬件底层打交道具有强大优势,界面友好且操作方便的一种高级编程语言,因其卓越的性能,面向对象的可视化编程环境而受到越来越多的软件开发人员的重视。本文讨论的就是如何在VC
++
环境下读取SEG-Y格式的地震勘探数据。
2、SEG-Y格式简介
SEG-Y格式的数据文件格式如下:卷头块 数据道#1 …… 数据道#N下面简要介绍一下在实际处理数据时需要读取的一些格式。①卷头块格式说明:卷头块占用空间共为3600字节,其中:第1~3200字节为EBCDIC码文字卷头。第3201~3600字节为二进制码数字卷头。②数据道格式说明:道头#1 数据道#1 …… ……道头#N 数据道#N道头为整型数据,占用空间240字节;数据道为4字节浮点型数据,占用空间为4×采样点数字节。采样长度和采样率由道头中获得,真正处理数据时,所需要的是数据道内的数据。
3、在VC
++
下读取SEG-Y格式地震勘探数据
作为面向对象程序设计语言的典范,具有程序开发简单,功能扩展方便,驱动底层硬件能力强大等优点,得到广大软件开发工作者的青睐。VC
++
是目前PC机上使用较多的一种编程环境,因此作者根据实际需要编写了在该环境下读取SEG-Y格式地震勘探数据的具体程序,本文给出了主要部分的源代码。本程序在视图类中调用文档类的数据读入函数对地震勘探数据文件进行读取。在文档类数据读入函数中先使用文件对话框获取数据文件所在路径,再定义CFile类文件指针将数据文件打开进行读取,读入的数据放在视图类的成员数组中,程序流程图见图1,主要部分代码如下:①获取数据文件路径CStringCMyDataRdInDocGetFilePathNameCStringstr{CStringFileName=_T""CFileDialogfileDlgTRUE""FileName
FN_EXPLORER|OFN_ALLOWMULTISELECT|OFN_OVERWRITEPROMPT|OFN_SHOWHELP, str);
fileDlg.m_ofn.lpstrTitle="请选择或输入数据文件名!"iffileDlg.DoModal==IDOK{FileName=fileDlg.GetPathName}deletefileDlgreturnFileName}②定义CFile类文件指针打开文件进行数据读取intCMyDataRdInDocReadData{…………CFile*fpRdin//定义CFile类文件指针iffpRdin=newCFilepView->m_sFileNameCFilemodeRead|CFiletypeBinary{//以二进制只读方式打开数据文件AfxMessageBox"打开数据文件失败,请确认文件是否存在!"return0}//判断文件中是否包含卷头数据…………//文件指针指向文件头intstart=0fpRdin->SeekstartCFilebeginifm_Option{//数据文件有卷头start=3600fpRdin->ReadpView->Reelstart}//读取第一道道头字,获取每道采样点数、采样间隔并计算总道数fpRdin->ReadpView->TraceHead.Head4240m_iTracePnts=pView->TraceHead.Head2[57]m_fSmpRate=floatpView->TraceHead.Head2[58]/1000.0m_iTraceNmb=fpRdin->GetLength/240+m_iTracePnts*4//道头数据出错处理ifm_iTracePnts<=0||m_fSmpRate<=0||m_iTraceNmb<=0{AfxMessageBox"读取道头数据出错,请确认数据文件的格式和输入参数后再读取!"fpRdin->ClosedeletepView->Reelreturn0}//动态生成道头与道记录数组pView->TraceHead.Head2=newshort[120*m_iTraceNmb]pView->Data=newfloat[m_iTracePnts*m_iTraceNmb]//读取道头与道记录fpRdin->SeekstartCFilebeginforinti=0i<m_iTraceNmbi++{fpRdin->Read&pView->TraceHead.Head2[i*120]240fpRdin->Read&pView->Data[i*m_iTracePnts]4*m_iTracePnts}//关闭数据文件fpRdin->Closereturn1}
图1 SEG-Y格式数据读取程序流程图
4、结束语
鉴于目前SEG-Y格式应用比较广泛,地球物理资料处理软件开发平台已经从语言向等可视化编程语言过渡,所以本文作者对其作以分析介绍,并提供以上基于可视化编程语言的部分源代码,希望能给使用此格式的人员提供借鉴。文
在VC
++
环境下读取地震勘探SEG-Y格式数据及其应用
肖梅长安大学信息工程学院710054刘国华李庆春长安大学地质工程与测绘工程学院 710054
摘要:SEG-Y格式是地震勘探采集数据比较常用的存储方式。目前,在PC机上通常选用在VC
++
环境下对这种格式存放的地震勘探数据进行处理,以便进行可视化显示。本文分析讨论了SEG-Y文件存放格式,并详细介绍了在VC
++
环境下该数据格式读取时的一些细节处理。关键词:SEG-Y格式;地震勘探
(下转第29页)
Leave a Comment