📄 readheader.cpp
字号:
// 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 + -