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.
kev/Drawer/SSBase/MxnFormat/SeisSampleInfo.h

112 lines
3.4 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 "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;