经过几天时间的整理,简单讲一下自己对SegY数据切割和提取的理解。有错误或不妥只处,求大神指点。
简单按道提取,在前文中已经介绍过,笔者在此处说一些自以为高级的。
数据提取的依据是扫描信息,根据扫描结果,提取方式也分为:单炮记录、CMP/CRP、叠后3D(叠后2D的比较简单,可以用基本的方法)
先介绍一下笔者对扫描信息的理解:
1、单炮记录:炮号、每炮的道数, 这样可以炮号提取
2、CMP/CRP:CMP号、线号、这样可以按线提取
3、叠后3D:Inline号,CDP号,这样可以按inline、cdp进行提取
基本的流程如下图, 简要画了一下,勿喷
扫描结果的基类如下
/**************************************************************************
* SlSegYScanResult 类声明 *
**************************************************************************/
/** @brief SegY扫描结果
*
* @details
*/
class SLSEGY_EXPORT SlSegYScanResult
{
public:
SlSegYScanResult();
~SlSegYScanResult();
/** @brief 从二进制序列获取取参数
*
* @details 从二进制序列获取取参数
* @param binary 二进制序列
* @return
*/
virtual void load(QDataStream& dataStream);
/** @brief 将参数写入二进制序列
*
* @details 将参数写入二进制序列
* @param binary 二进制序列
* @return
*/
virtual void save(QDataStream& dataStream);
public:
// 文件名
string m_segyFilename;
// 道头字段对应
SlSegYTraceHeaderIndex m_segyHeaderIndex;
// 数据格式 400字节卷头25-26字段
int m_dataFormat;
// 数据的最大最小值
float m_minimumn, m_maximumn; // 最小、最大值
// SegY的类型: 2D 3D, CMP/CRP ...
SegYDataType m_dataType;
... ...
};
单炮记录提取为按炮提取
CMP、CRP为按线提取
叠后3D为按Inline CDP范围提取