|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F>ļ<EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>:
|
|
|
|
|
|
//
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д: 2011-7-21
|
|
|
|
|
|
//
|
|
|
|
|
|
//
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "SeisReader3D.h"
|
|
|
|
|
|
#include "BuilderBase.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace NSeis
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS CSeisBuilder3D
|
|
|
|
|
|
: public CBuilderBase
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CSeisBuilder3D(void);
|
|
|
|
|
|
~CSeisBuilder3D(void);
|
|
|
|
|
|
|
|
|
|
|
|
virtual bool AttachInput(void* pIndex3D, bool bAutoDelete = false); //<2F><><EFBFBD><EFBFBD>ΪCSeisIndex3D<33><44><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual void Clear();
|
|
|
|
|
|
virtual float GetSampleInterval(); //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>дSegY<67><59><EFBFBD><EFBFBD>ʱʹ<CAB1><CAB9>
|
|
|
|
|
|
|
|
|
|
|
|
///< <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣߳<DFB3><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>falseʱ<65><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>
|
|
|
|
|
|
virtual bool IsCanThread();
|
|
|
|
|
|
|
|
|
|
|
|
bool Load(LPCTSTR lpszSegyName, CSeisTraceHeader* pth, CSeisFileHeader* pfh=NULL);
|
|
|
|
|
|
void SetHeader(CSeisTraceHeader* pth, CSeisFileHeader* pfh);
|
|
|
|
|
|
|
|
|
|
|
|
bool InitWithIndex(); //<2F><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>
|
|
|
|
|
|
bool InitFileHeader(); //<2F><><EFBFBD><EFBFBD><EFBFBD>趨<EFBFBD><E8B6A8>SegY<67>ļ<EFBFBD><C4BC><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>ļ<EFBFBD>ͷ
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD>е<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
virtual double Value(double x, double y, double z);
|
|
|
|
|
|
virtual double Value(int row, int col, int k);
|
|
|
|
|
|
|
|
|
|
|
|
virtual CColorBase& GetColorBar() { return GetIndex()->GetColorBar(); }
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//<2F><>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool CreateLine(CSeisLineData& sd, CSeisIndexLine3D* pIndexLine3D, bool bReMemory=true);
|
|
|
|
|
|
//<2F><>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool CreateRandLine(CSeisLineData& sd, CSeisIndexRandomLine* pIndexRandLine, bool bReMemory=true);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>m_survey3D<33><44><EFBFBD><EFBFBD><EFBFBD>кţ<D0BA><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m_pIndex3D<33>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ResetCoordWithRowCol();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>,isCoorΪtrueʱ<65><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>귶Χ<EAB7B6><CEA7>Ϊfalse<73><65>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5>ŷ<EFBFBD>Χ
|
|
|
|
|
|
bool GetInlineRange(int inline_num, CPoint3D& minPoint, CPoint3D& maxPoint, bool isCoor);
|
|
|
|
|
|
bool GetCrosslineRange(int crossline_num, CPoint3D& minPoint, CPoint3D& maxPoint, bool isCoor);
|
|
|
|
|
|
|
|
|
|
|
|
inline CSeisIndex3D* GetIndex() { return (CSeisIndex3D*)GetInput(); }
|
|
|
|
|
|
inline virtual CSeisSurvey3D& GetSurvey() { return GetIndex()->GetSurvey(); }
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>Χʱ<CEA7><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>InitWithIndex<65><78>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD>
|
|
|
|
|
|
// <20><><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 SetRangeZ(TInterval<float>& range);
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SetRangeZ(TInterval<int>& range);
|
|
|
|
|
|
inline TInterval<int> GetRangeZI() { return GetSampleInfo().GetTimeRange(); }
|
|
|
|
|
|
inline TInterval<float> GetRangeZF() { return GetSurvey().zRange(); }
|
|
|
|
|
|
|
|
|
|
|
|
inline CSeisReader3D& GetReader() { return m_reader3D; }
|
|
|
|
|
|
virtual CSeisSampleInfo& GetSampleInfo() { return GetIndex()->m_sampleInfo; }//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
|
|
|
|
|
|
bool IsEmpty();
|
|
|
|
|
|
|
|
|
|
|
|
void Write(CFile& fw, const short& ver);
|
|
|
|
|
|
int Read(CFile& fr, const short& ver);
|
|
|
|
|
|
void Serialize(CArchive& ar, const short &ver);
|
|
|
|
|
|
|
|
|
|
|
|
void WriteSurvey(LPCTSTR lpszFileName);
|
|
|
|
|
|
void WriteSegy(LPCTSTR lpszFileName, CSeisLineData& sd); //<2F><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汣<EFBFBD><E6B1A3>ΪSegY<67>ļ<EFBFBD>
|
|
|
|
|
|
void WriteAscii(LPCTSTR lpszFileName, CSeisLineData& sd, CSeisTraceData::EOutType ot); //<2F><><EFBFBD><EFBFBD>Ϊָ<CEAA><D6B8><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ʽ
|
|
|
|
|
|
|
|
|
|
|
|
CSeisBuilder3D& operator=(CSeisBuilder3D& sb);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
virtual bool CreateData(); //<2F><>ʹ<EFBFBD><CAB9><EFBFBD>̷߳<DFB3>ʽ
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
//<2F><>ά<EFBFBD><CEAC><EFBFBD>ݶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>桢<EFBFBD><E6A1A2>Ƭ<EFBFBD><C6AC>,<2C>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䷶Χ
|
|
|
|
|
|
CSeisReader3D m_reader3D;
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>趨<EFBFBD><E8B6A8>ȡ<EFBFBD><C8A1>SegY<67>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ,<2C><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ʹ<EFBFBD><CAB9>InitFileHeader<65><72>SegY<67>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>г<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>壬<EFBFBD><E5A3AC><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷʱ<C8B7><CAB1><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>趨
|
|
|
|
|
|
CSeisFileHeader fileHeader;
|
|
|
|
|
|
CSeisTraceHeader traceHeader;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
}//namespace
|
|
|
|
|
|
|
|
|
|
|
|
using namespace NSeis;
|
|
|
|
|
|
|