|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<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 "TInterval.h"
|
|
|
|
|
|
#include "RowCol.h"
|
|
|
|
|
|
#include "SeisFileHeader.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace NSeis
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еIJ<D0B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
#define OUT //<2F><>ʶ<EFBFBD><CAB6>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
#define IN //<2F><>ʶ<EFBFBD><CAB6>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>ID<49>Ŷ<EFBFBD><C5B6>壬Ϊ<E5A3AC><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>Ԫ<EFBFBD>ز<EFBFBD><D8B2><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>200<30><30>ʼ
|
|
|
|
|
|
enum ESeisID
|
|
|
|
|
|
{
|
|
|
|
|
|
idIndex2D = 200 , //2D<32><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
idIndex3D //3D<33><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS CSeisIndexPoint
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CSeisIndexPoint(){posFile=-1;}
|
|
|
|
|
|
CPoint2D coor; //<2F>ߵ<EFBFBD><DFB5>Ŷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CRowCol rowcol; //<2F>ߵ<EFBFBD><DFB5><EFBFBD>
|
|
|
|
|
|
__int64 posFile; //<2F>ļ<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
|
|
|
|
|
|
|
bool operator == (CSeisIndexPoint& sp) const;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS CSeisSampleInfo
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CSeisSampleInfo();
|
|
|
|
|
|
|
|
|
|
|
|
//ʹ<>ò<EFBFBD><C3B2><EFBFBD>CSeisFileHeader<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
void Initialize(CSeisFileHeader& fh);
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief <09><><EFBFBD><EFBFBD><EFBFBD>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
unsigned short GetTotalSampleNumber() { return sample_num; }
|
|
|
|
|
|
/** @brief <09><><EFBFBD>ø<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
CFileSegy::EDataType& GetFormatCode() { return dataType; }
|
|
|
|
|
|
/** @brief <09><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
float GetSampleInterval() { return sample_interval * 0.001f; }
|
|
|
|
|
|
/** @brief <09><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD> */
|
|
|
|
|
|
int GetOneSampleBytes() { return CFileSegy::SizeofDataType(dataType); }
|
|
|
|
|
|
/** @brief <09><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ֽڳ<D6BD><DAB3><EFBFBD> */
|
|
|
|
|
|
int GetTotalSampleBytes() { return GetOneSampleBytes()*GetTotalSampleNumber(); }
|
|
|
|
|
|
|
|
|
|
|
|
void Write(CFile& fw, const short& ver);
|
|
|
|
|
|
int Read(CFile& fr, const short& ver);
|
|
|
|
|
|
void Serialize(CArchive& ar, const short &ver);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//ʱ<>䷶Χ<E4B7B6><CEA7><EFBFBD>ã<EFBFBD>ȱʡΪȫ<CEAA><C8AB>
|
|
|
|
|
|
void InitRange();
|
|
|
|
|
|
|
|
|
|
|
|
float GetStartTime() { return m_dataRange.start * GetSampleInterval(); }
|
|
|
|
|
|
float GetStopTime() { return m_dataRange.stop * GetSampleInterval(); }
|
|
|
|
|
|
TInterval<int>& GetTimeRange() { return m_dataRange; }
|
|
|
|
|
|
TInterval<float> GetTimeRangeF();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ÿ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡʱ<C8A1><CAB1><EFBFBD><EFBFBD>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD>Χ<EFBFBD>ڵIJ<DAB5><C4B2><EFBFBD><EFBFBD>㣬<EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CSeisIndexLine2D<32><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SetTimeRange(TInterval<float>& range); //<2F><><EFBFBD><EFBFBD>Ϊʱ<CEAA><CAB1>ֵ<EFBFBD><D6B5><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SetTimeRange(TInterval<int>& range); //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SetTimeRange(int start, int stop); //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SetTimeRange(float start, float stop); //<2F><><EFBFBD><EFBFBD>Ϊʱ<CEAA><CAB1>ֵ
|
|
|
|
|
|
|
|
|
|
|
|
//<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();
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
unsigned short GetCustomSampleNumber() { return m_dataRange.width()+1; }
|
|
|
|
|
|
/** @brief <09><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ݵ<EFBFBD><DDB5>ֽڳ<D6BD><DAB3><EFBFBD> */
|
|
|
|
|
|
int GetCustomSampleBytes() { return GetOneSampleBytes()*GetCustomSampleNumber(); }
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>Ŀ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC>ʹ<EFBFBD><CAB9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>Ϊ0<CEAA><30>С<EFBFBD><D0A1>0<EFBFBD><30><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>潫<EFBFBD><E6BDAB><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
|
TInterval<int> m_dataRange; //<2F><><EFBFBD><EFBFBD><EFBFBD>㷶Χ<E3B7B6><CEA7>>=0 <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܸ<EFBFBD><DCB8><EFBFBD>
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ֽ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>ת
|
|
|
|
|
|
BOOL IsSwap() { return m_bSwap; }
|
|
|
|
|
|
void EnableSwap(BOOL bEnable) { m_bSwap = bEnable; }
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
/** @brief <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD>棬ʹ<E6A3AC><CAB9>ʱ<EFBFBD><CAB1>Ҫ*0.001<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>룩 */
|
|
|
|
|
|
unsigned short sample_interval;
|
|
|
|
|
|
unsigned short sample_num; //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>ݵIJ<DDB5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CFileSegy::EDataType dataType; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
BOOL m_bSwap; //<2F><>дSegY<67>ļ<EFBFBD>ʱ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ת<EFBFBD>ֽ<EFBFBD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
}//namespace
|
|
|
|
|
|
|
|
|
|
|
|
using namespace NSeis;
|
|
|
|
|
|
|