You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.7 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<2F>ļ<EFBFBD>: SegY<67>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
//
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2011-4-1
//
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include "ProcessThread.h"
#include "SeisLineData.h"
#include "SeisIndex2D.h"
#include "SeisTraceReader.h"
#include "ProgressProcess.h"
#include "ProgressThreadBase.h"
namespace NSeis
{
//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĶ<DDB5>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ά<EFBFBD><CEAC>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>Դ<EFBFBD>ڶ<EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>
class AFX_EXT_CLASS CSeisReaderBase
: public CProgressProcess
{
public:
CSeisReaderBase(void);
~CSeisReaderBase(void);
void AttachFile(CFileSegy* pFile); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>SegY<67>ļ<EFBFBD>
CFileSegy* GetFile() { return m_pFile; }
//** @brief <09>ܵIJ<DCB5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>ʾʱ<CABE><CAB1><EFBFBD>뵱ǰ<EBB5B1><C7B0>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ
unsigned short GetTotalSampleNumber() { return GetSampleInfo().GetTotalSampleNumber(); }
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>ǰ<EFBFBD><C7B0>ʾ<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int GetCustomSampleNumber() { return GetSampleInfo().GetCustomSampleNumber(); }
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float GetSampleInterval() { return GetSampleInfo().GetSampleInterval(); }
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
int GetOneSampleBytes() { return GetSampleInfo().GetOneSampleBytes(); }
float GetStartTime() { return GetSampleInfo().GetStartTime(); }
float GetStopTime() { return GetSampleInfo().GetStopTime(); }
TInterval<int>& GetTimeRange() { return GetSampleInfo().GetTimeRange(); }
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD> <20><><EFBFBD><EFBFBD>m_dataRange<67><65><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
bool IsFullyTraceData() { return GetSampleInfo().IsFullyTraceData(); }
virtual CSeisSampleInfo& GetSampleInfo() = 0;
CSeisTraceReader& GetTraceReader() { return m_traceReader; }
protected:
CSeisTraceReader m_traceReader; //<2F><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>Ƕ<EFBFBD>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float _undef_value; //<2F><>Чֵ<D0A7><D6B5><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>Ƭʱʹ<CAB1><CAB9>
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ָ<EFBFBD>򣬲<EFBFBD><F2A3ACB2><EFBFBD><EFBFBD>ͷ<EFBFBD>
CFileSegy* m_pFile;
};
class AFX_EXT_CLASS CSeisReader2D
: public CSeisReaderBase
{
public:
CSeisReader2D(void);
~CSeisReader2D(void);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧָ<D3A6><D6B8>
void Attach(CSeisLineData* pData, bool bReMemory=false); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>ȡָ<C8A1><D6B8>
void AttachIndex(CSeisIndexLine2D* pIndex); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual CSeisSampleInfo& GetSampleInfo() { return m_pIndex2D->m_sampleInfo; }
bool ReadData(); //<2F><>ʹ<EFBFBD><CAB9><EFBFBD>̷߳<DFB3>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool ReadData(CSeisIndexLine2D* pIndex, TInterval<int>& range); //ʹ<><CAB9><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4>߳<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool ReadData(CSeisIndexLine2D* pIndex, TInterval<float>& range); //ʹ<><CAB9><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD>ȴ<EFBFBD><C8B4>߳<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CSeisIndexLine2D* GetIndex() { return m_pIndex2D; }
protected:
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ָ<EFBFBD>򣬲<EFBFBD><F2A3ACB2><EFBFBD><EFBFBD>ͷ<EFBFBD>
CSeisIndexLine2D* m_pIndex2D; //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
CSeisLineData* m_pData; //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
bool m_bReMemory; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>ȡ<EFBFBD>ڴ<EFBFBD>
};
} //namespace NSeis