|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<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 "databuffer.h"
|
|
|
|
|
|
#include "SeisFileHeader.h"
|
|
|
|
|
|
#include "TInterval.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace NSeis
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
enum EUniformType
|
|
|
|
|
|
{
|
|
|
|
|
|
ufoTypeNone = 0,
|
|
|
|
|
|
ufoTypeRMS = 1, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ufoTypeAvg, //ƽ<><C6BD>ֵ
|
|
|
|
|
|
ufoTypeMax, //<2F><><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
class AFX_EXT_CLASS CSeisTraceDataInfo
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CSeisTraceDataInfo()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_dMaxValue = 0; //<2F><><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
m_dMinValue = 0; //<2F><>Сֵ
|
|
|
|
|
|
m_dRms = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
m_dAverage = 0; //ƽ<><C6BD>ֵ
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
double m_dMaxValue; //<2F><><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
double m_dMinValue; //<2F><>Сֵ
|
|
|
|
|
|
double m_dRms; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
double m_dAverage; //ƽ<><C6BD>ֵ
|
|
|
|
|
|
//double m_dSum; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//double m_dSumSquare; //<2F><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//double m_dSumSquareW; //<2F><><EFBFBD><EFBFBD>Ȩ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//double m_dMedian; //<2F><>ֵ
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>ù<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
double GetUniformFactor(EUniformType ut);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
class AFX_EXT_CLASS CSeisTraceData : public CDataBuffer
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CSeisTraceData(void);
|
|
|
|
|
|
~CSeisTraceData(void);
|
|
|
|
|
|
|
|
|
|
|
|
void Create(int num, int samBytes);
|
|
|
|
|
|
void Create(int num, CFileSegy::EDataType dt);
|
|
|
|
|
|
void Attach(BYTE* pData, int nSampleNum, int nSampleBytes);
|
|
|
|
|
|
void Attach(BYTE* pData, int nSampleNum, CFileSegy::EDataType dt);
|
|
|
|
|
|
|
|
|
|
|
|
virtual void Clear(void);
|
|
|
|
|
|
void Serialize(CArchive& ar, const short &ver);
|
|
|
|
|
|
CSeisTraceData& operator=(CSeisTraceData& dbf);
|
|
|
|
|
|
CSeisTraceDataInfo& GetDataInfo() { return dataInfo; }
|
|
|
|
|
|
void SetDataInfo(CSeisTraceDataInfo& di) { dataInfo = di; }
|
|
|
|
|
|
|
|
|
|
|
|
void RestatDataInfo(CFileSegy::EDataType& dt); //<2F><><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>m_dataInfo<66><6F>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Read<61>н<EFBFBD><D0BD><EFBFBD>
|
|
|
|
|
|
inline double GetValue(int nIndex, CFileSegy::EDataType& dt); //<2F><><EFBFBD>øõ<C3B8><C3B5>е<EFBFBD>nIndex<65><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void QuickSort(CFileSegy::EDataType& dt);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>Ϊָ<CEAA><D6B8><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD>SegYΪ<59>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>ʱ
|
|
|
|
|
|
enum EOutType
|
|
|
|
|
|
{
|
|
|
|
|
|
outTypeCurve = 1, //˫<><CBAB><EFBFBD><EFBFBD><EFBFBD>߸<EFBFBD>ʽ<EFBFBD><CABD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Yʱ<59><CAB1>
|
|
|
|
|
|
outTypeTV, //δƥ<CEB4><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>ʽ
|
|
|
|
|
|
outTypeStationV, //ƥ<><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>ʽ
|
|
|
|
|
|
outTypeXYTA, //<2F><><EFBFBD><EFBFBD>(XY)<29><>ʱ<EFBFBD><CAB1>(T)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(A)
|
|
|
|
|
|
outTypeXYICTA, //<2F><><EFBFBD><EFBFBD>(XY)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(I)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(C)<29><>ʱ<EFBFBD><CAB1>(T)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(A)
|
|
|
|
|
|
};
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>CSeisTraceHeader<65>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꼰<EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>TIntervalStep<65><70>Ϊ<EFBFBD><CEAA>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 <= <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <= <20><><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>-1
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>bRemoveBeginZero<72><6F><EFBFBD>Ƿ<EFBFBD><C7B7>Ƴ<EFBFBD><C6B3><EFBFBD>ʼ<EFBFBD><CABC>0<EFBFBD><30><EFBFBD><EFBFBD>
|
|
|
|
|
|
void Write( CFile& fw, CSeisTraceInfo& sti, TIntervalStep<int> ts,
|
|
|
|
|
|
EOutType wt, CFileSegy::EDataType& dt, bool bRemoveBeginZero ); //<2F><><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD>Χ
|
|
|
|
|
|
void Write( CFile& fw, CSeisTraceInfo& sti, TIntervalStep<double> ts,
|
|
|
|
|
|
EOutType wt, CFileSegy::EDataType& dt, double offsetTime, bool bRemoveBeginZero ); //ʱ<>䷶Χ<E4B7B6><CEA7><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ֵ
|
|
|
|
|
|
void Write( CFile& fw, double sample_interval, TIntervalStep<int> ts,
|
|
|
|
|
|
double offsetTime, EOutType wt, CFileSegy::EDataType& dt, bool bRemoveBeginZero );
|
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////
|
|
|
|
|
|
CRowCol m_rowcol; //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>
|
|
|
|
|
|
CPoint2D m_coor; //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ<D0A1><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϊfloat<61><74>
|
|
|
|
|
|
CSeisTraceDataInfo dataInfo;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
inline double CSeisTraceData::GetValue(int nIndex, CFileSegy::EDataType& dt)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch(dt)
|
|
|
|
|
|
{
|
|
|
|
|
|
case CFileSegy::typeIbmGainLong:
|
|
|
|
|
|
case CFileSegy::typeIbmFloat:
|
|
|
|
|
|
case CFileSegy::typeIeeFloat: return GetDataFloat()[nIndex];
|
|
|
|
|
|
|
|
|
|
|
|
case CFileSegy::typeIbmShort:
|
|
|
|
|
|
case CFileSegy::typeIeeShort: return GetDataShort()[nIndex];
|
|
|
|
|
|
|
|
|
|
|
|
case CFileSegy::typeIbmLong:
|
|
|
|
|
|
case CFileSegy::typeIeeLong: return GetDataLong()[nIndex];
|
|
|
|
|
|
|
|
|
|
|
|
case CFileSegy::typeIeeDouble: return GetDataDouble()[nIndex];
|
|
|
|
|
|
|
|
|
|
|
|
case CFileSegy::typeChar: return GetDataChar()[nIndex];
|
|
|
|
|
|
}
|
|
|
|
|
|
return 0.0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}//namespace
|
|
|
|
|
|
|
|
|
|
|
|
using namespace NSeis;
|