⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readheader.cpp

📁 使用VC读取地震数据文件
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// ReadHeader.cpp : implementation file
//
#include "stdafx.h"
#include "SegY.h"
#include "ReadHeader.h"
#include "SegYDoc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CReadHeader dialog


CReadHeader::CReadHeader(CWnd* pParent /*=NULL*/)
	: CDialog(CReadHeader::IDD, pParent)
{    
   m_HeadBlock = new SegYHeadBlock;
   m_TraceBlock = new SegYTraceBlock;
	offSet = 3201;
	//{{AFX_DATA_INIT(CReadHeader)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CReadHeader::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CReadHeader)
	DDX_Control(pDX, IDC_LIST1, m_ListControl);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CReadHeader, CDialog)
	//{{AFX_MSG_MAP(CReadHeader)
	ON_WM_CANCELMODE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////


BOOL CReadHeader::OnInitDialog() 
{
	CDialog::OnInitDialog();
		  //文件指针
	CFile  fr("E:\\THIBM.SGY",CFile::modeRead);
		//读取400字节头块说明		
		fr.Seek( offSet,CFile::begin);
		fr.Read( m_HeadBlock , 400);
		//读取240道头数据
		offSet += 400;
		fr.Seek(offSet,CFile::begin);
		fr.Read(m_TraceBlock , 240);  
	//400字节头块说明
	CString HeadName[] = {
	    "作业标识号" , "测线号" , "卷号" , "每个记录的道数" , "每个记录的辅助道数", 
			"卷带间隔" , "野外采样间隔" , "卷带道样点数" , "野外道样点数",
         "数据采样格式码" , "CMP覆盖次数" , "道选分码" , "垂直叠加码" , "起始扫描频率",
		 "终止扫描频率" , "扫描长度" , "扫描类型码" , "扫描通道道号" , "斜坡起始长度",
		 "终了斜坡长度" , "斜坡类型" , "相关数据道" , "二进制增益恢复" , "振幅恢复方式",
		 "测量系统" , "脉冲信号极性" , "可控震源极性代码" , "3261-3600未确定选择使用"	 };
      //240字节道头说明
         CString BlockName[] = {
	     "测线中道顺序号"  , "磁带中道顺序号" , "原始野外记录号"     , "原始野外记录中的道号"
		 , "震源点号"      ,   " CMP号"       ,   " CMP道集中的道号" ,  "道识别码" 
		 , "垂直叠加道数"  ,"水平叠加道数"    , "数据类型"           , "炮检距"
		 , "接受点高程"    , "炮点的地面高程" , "炮点低于地面的深度" , "接受点的基准面高程" 
		 ," 炮点的基准面高程" , "炮点的水深"  , "接受点的水深"		 , "41-68字节的比例因子" 
		 , "73-88字节的比例因子" , "炮点X坐标" , "炮点Y坐标"         , "检波点X坐标" 
		 , "检波点Y坐标"        , "坐标单位"   , "风化层速度"        , "降速层速度"
		 , "震源处的井口时间", "接受点处的井口时间" , "炮点的静校正" , "接受点的静校正"
		 , "应用的总静校正"  , "延迟时间A"          , "延迟时间B"    , "时间延迟时间" 
		 , "起始切除时间"	 , "结束切除时间"       , "本道的采样点数", "本道的采样间隔" 
		 , "野外仪器的增益类型", "仪器增益常数"     , "仪器起始增益" , "相关码" 
		 , "起始扫描频率"    , "结束扫描频率"       , "扫描长度"     , "扫描类型" 
		 , "扫描道起始斜坡长度 ", "扫描道终了斜坡长度","斜坡类型"    , "率假频的频率"
		 ,"率假频的斜率"	 , "陷波滤波器频率"   , "陷波斜率"       ,  "低截斜率"    
		 , " 高截斜率"
		 , "低截频率的斜率"  , "高截频率的斜率"    , "数据记录的年"   , "数据记录的日 "
		 , "小时" , "分" , " 秒" ,"时间代码" , " 道加权因子" , "覆盖开关位置1的检波器道号"
		 , "在原始野外记录中道号1的检波点号" , "原始野外记录中最后一道的检波点号" 
		 , "缺口大小 " , "在测线开始或者结束处的斜坡位置" , "数据道数" , "未用"
		 , "炮点位置剩余静校正量" , "检波点位置剩余静校正量" , "应用后的CMP基准面静校正量"
		 , "检波点位置站号" , "三维线号" , "未用" , "CMP点X坐标" , "CMP点Y坐标"
		 , " 统一坐标系投影方式" , "标识号" , "野外文件号" , "炮点位置站号"
		 , "CMP位置高程" , "CMP位置站号" , " 未用" ,"二维三维标识符"
   };
    int i,j ;
	int iActualItem;
	LV_ITEM lvitem;
    CString str;
  //设置LIST控件的样式
    m_ListControl.ModifyStyle(LVS_TYPEMASK,LVS_REPORT);
	//添加LIST控件header
    m_ListControl.InsertColumn(0,"序号",LVCFMT_LEFT,50,0);
    m_ListControl.InsertColumn(1,"SegY头块字段名称",LVCFMT_LEFT,250,1);
    m_ListControl.InsertColumn(2,"值",LVCFMT_LEFT,80,2);
	//设置样式为文本
   lvitem.mask=LVIF_TEXT;
	//插入400字节头块说明
	///////////////////////////////////////////
    LPTSTR m_workTag =(LPTSTR)(LPCTSTR)m_HeadBlock->workTag;
     	//插入序号
        i=0; //1
		 lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem(&lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem (&lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->workTag);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;      
		 m_ListControl.SetItem(&lvitem);
	
		i+=1;//2
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->lineNum);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);
	    
		
		i+=1;//3
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->reelNum);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str ;
		 m_ListControl.SetItem(&lvitem);

		
		i+=1;//4
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->tracesPerRecord);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);
	    
        	
		i+=1;//5
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->stracePerRecord);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;//tracePerRecord;
		 m_ListControl.SetItem(&lvitem);
	     
			
		i+=1;//6
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->time1);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);
			
		i+=1;//7
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->time2);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);
         	
		i+=1;//8
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->samplesPerDataTrace1);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);
		i+=1;//9
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->samplesPerDataTrace2);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);

		i+=1;//10
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->sampleFormat);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);
		i+=1;//11
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->overLapNum);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);
		i+=1;//12
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->traceSelectNum);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);
		i+=1;//13
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->overLapNum2);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);

		i+=1;//14
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->startScanFrequency);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);

        i+=1;//15
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->endScanFrequency);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);
		i+=1;//16
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->scanTimePer);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);
		 	i+=1;//17
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->scanType);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);

		i+=1;//18
	     lvitem.iItem =  m_ListControl.GetItemCount();
		str.Format("%u", i);
		 lvitem.iSubItem = 0 ;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		iActualItem =  m_ListControl.InsertItem( &lvitem );
        //添加字段名称列
		 lvitem.iItem = iActualItem;
		 lvitem.iSubItem = 1;
		 lvitem.pszText = (LPTSTR)(LPCTSTR)HeadName[i];
		 m_ListControl.SetItem ( &lvitem );
		//添加字节值
		 lvitem.iSubItem = 2;
		 str.Format("%d",m_HeadBlock->scanChannelNum);
		 lvitem.pszText = (LPTSTR)(LPCTSTR)str;
		 m_ListControl.SetItem(&lvitem);
		 i+=1;//19

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -