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.

99 lines
3.3 KiB
C

1 month ago
//////////////////////////////////////////////////////////////////////////////
//<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;