220 lines
5.8 KiB
C
220 lines
5.8 KiB
C
|
|
/**
|
|||
|
|
* @file ObjWell.h
|
|||
|
|
* @brief "井"数据模型
|
|||
|
|
* @date 2014-6-3
|
|||
|
|
* @author: liyonggang
|
|||
|
|
*/
|
|||
|
|
#ifndef PAI_FRAME_OSGWELL_H
|
|||
|
|
#define PAI_FRAME_OSGWELL_H
|
|||
|
|
#pragma warning( push ,0)
|
|||
|
|
|
|||
|
|
#include <vector>
|
|||
|
|
|
|||
|
|
#include <QUuid>
|
|||
|
|
|
|||
|
|
#include "ObjectID.h"
|
|||
|
|
// #include "LineProperty.h"
|
|||
|
|
#include "Well.h"
|
|||
|
|
#include "BaseObject.h"
|
|||
|
|
// #include "ObjWellTrack.h"
|
|||
|
|
#include "BaseFun.h"
|
|||
|
|
#include "ObjWelllogRound.h"
|
|||
|
|
// #include "ObjectViewInfo.h"
|
|||
|
|
|
|||
|
|
#pragma warning( pop )
|
|||
|
|
|
|||
|
|
BEGIN_OSGDATAMODEL_NAMESPACE;
|
|||
|
|
class CObjWellLog;
|
|||
|
|
OSGDATAMODEL_EXPORT CObjWell *GetCurrentObjWell();
|
|||
|
|
OSGDATAMODEL_EXPORT void SetCurrentObjWell( CObjWell *pObjWell );
|
|||
|
|
|
|||
|
|
class OSGDATAMODEL_EXPORT CObjWell/* : public CObjBaseObject*/
|
|||
|
|
{
|
|||
|
|
// Q_OBJECT;
|
|||
|
|
public:
|
|||
|
|
CObjWell();
|
|||
|
|
|
|||
|
|
~CObjWell();
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
QString GetWellCode() const
|
|||
|
|
{
|
|||
|
|
return m_WellCode;
|
|||
|
|
}
|
|||
|
|
void SetWellCode(QString WellCode)
|
|||
|
|
{
|
|||
|
|
m_WellCode=WellCode;
|
|||
|
|
}
|
|||
|
|
void SaveWellHead(QString filename);
|
|||
|
|
//往井次下加入曲线时,根据曲线的类型返回其对应的目录id
|
|||
|
|
QUuid GetTragetFolderID(QUuid aLogTypeid);
|
|||
|
|
//根据folderid找到对应的folder,如果没有则创建
|
|||
|
|
// CObjectFolder* GetTragetFolder(QUuid aFolderTypeid);
|
|||
|
|
//获得井次数
|
|||
|
|
int GetWellRoundCount();
|
|||
|
|
// int GetAllWellRound(QList<PaiObject*> &wellroundchildren);
|
|||
|
|
virtual QUuid GetTypeID()const;
|
|||
|
|
|
|||
|
|
// virtual bool Serialize( CObjectArchive &ar );
|
|||
|
|
// virtual bool AddChild(PaiObject* pChild, bool mountNow = true);
|
|||
|
|
|
|||
|
|
// virtual pai::ios::welllog::DataObject *GetDbObject();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Well的MD得到对应的x,y,z
|
|||
|
|
*/
|
|||
|
|
// bool GetXYZByMD(float fMD,double &x,double &y,double &z );
|
|||
|
|
// bool LoadXYZ(bool isreCreateXYZ=false);
|
|||
|
|
void ClearXYZ();
|
|||
|
|
/**
|
|||
|
|
* Well的点MD对应井口位置的相对位置dx、dy、dz
|
|||
|
|
*/
|
|||
|
|
// bool GetDXDYDZByMD(float fMD,double &dx,double &dy,double &dz );
|
|||
|
|
WellHead &GetWellHead();
|
|||
|
|
/**
|
|||
|
|
* Well log的最上点MD
|
|||
|
|
*/
|
|||
|
|
double GetTopWellLogDepth();
|
|||
|
|
|
|||
|
|
double GetBottomWellLogDepth();
|
|||
|
|
CObjWelllogRound* GetCurrentObjWellRound();
|
|||
|
|
void SetCurrentObjWellRound(CObjWelllogRound*pWellRound);
|
|||
|
|
/**
|
|||
|
|
* Well x,y,z井轨迹信息
|
|||
|
|
*/
|
|||
|
|
// void Compute2DTrajectory(float _HScale=10000,float _VScale=10000);
|
|||
|
|
// void Compute2DTrajectory(float _ProjAngle,double _HorizBoreXE,double _HorizBoreYN,float _HScale=10000,float _VScale=10000);
|
|||
|
|
FLOATPROPERTY & GetDX();
|
|||
|
|
FLOATPROPERTY & GetDY();
|
|||
|
|
float GetDX(float dep);
|
|||
|
|
float GetDY(float dep);
|
|||
|
|
float GetDZ(float dep);
|
|||
|
|
FLOATPROPERTY & GetAngle();
|
|||
|
|
float GetDYToDep(float dy);
|
|||
|
|
float GetDXToDep(float dx);
|
|||
|
|
void SetDX( const FLOATPROPERTY *vDX );
|
|||
|
|
void SetDY( const FLOATPROPERTY *vDX );
|
|||
|
|
void SetAngle(const FLOATPROPERTY *Angle);
|
|||
|
|
DOUBLEPROPERTY & GetX();
|
|||
|
|
DOUBLEPROPERTY & GetY();
|
|||
|
|
DOUBLEPROPERTY & GetZ();
|
|||
|
|
void SetX( const DOUBLEPROPERTY *vX );
|
|||
|
|
void SetY( const DOUBLEPROPERTY *vX );
|
|||
|
|
void SetZ( const DOUBLEPROPERTY *vX );
|
|||
|
|
void SetStartDep(float dep);
|
|||
|
|
void SetEndDep(float dep);
|
|||
|
|
void SetRlev(float rlev);
|
|||
|
|
void SetDepth(float sdep,float edep,float rlev);
|
|||
|
|
float GetStartDep();
|
|||
|
|
float GetEndDep();
|
|||
|
|
float GetRlev();
|
|||
|
|
|
|||
|
|
void SetWellFileName(QString WellName)
|
|||
|
|
{
|
|||
|
|
m_WellFileName=WellName;
|
|||
|
|
}
|
|||
|
|
QString GetWellFileName()
|
|||
|
|
{
|
|||
|
|
CObjWelllogRound *pWR=GetCurrentObjWellRound();
|
|||
|
|
if(pWR) return pWR->GetSlfFileName();
|
|||
|
|
return m_WellFileName;
|
|||
|
|
}
|
|||
|
|
virtual QString GetWellMessageFileName()
|
|||
|
|
{
|
|||
|
|
return m_WellFileName;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool isUsed()
|
|||
|
|
{
|
|||
|
|
return isFLAG;
|
|||
|
|
}
|
|||
|
|
void SetUsed(bool flag)
|
|||
|
|
{
|
|||
|
|
isFLAG=flag;
|
|||
|
|
}
|
|||
|
|
// void SetDepth(CObjWell *pWell);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 井符号图片
|
|||
|
|
*/
|
|||
|
|
QString GetWellSymbol();
|
|||
|
|
void SetWellSymbol(QString imagef)
|
|||
|
|
{
|
|||
|
|
m_strWellImage=imagef;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
virtual void SetDBWell(pai::ios::welllog::Well &DbWell);
|
|||
|
|
|
|||
|
|
pai::ios::welllog::Well &GetDBWell();
|
|||
|
|
|
|||
|
|
|
|||
|
|
// virtual void CopyFrom( CBaseObject *pOSGObjectOther );
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
*@brief 判断井名是否存在
|
|||
|
|
*/
|
|||
|
|
// virtual bool isExistsName(QString name);
|
|||
|
|
/************************************************************************/
|
|||
|
|
/* @brief 得到本井下的对应模板值的井曲线[遍历所有井次,拿到第一条] */
|
|||
|
|
/************************************************************************/
|
|||
|
|
// pai::datamodel::CObjWellLog* GetWellLogByTemplate(const QVariant& templateKey);
|
|||
|
|
/************************************************************************/
|
|||
|
|
/* @brief 得到本井次下的对应模板值的井曲线 */
|
|||
|
|
/************************************************************************/
|
|||
|
|
// pai::datamodel::CObjWellLog* GetWellLogByTemplate(QString wellroundPath,const QVariant& templateKey);
|
|||
|
|
// static int ComputeTrajectory(CObjWell *pWell,QString Slffilename);
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 设置数据所属ID
|
|||
|
|
*/
|
|||
|
|
// void SetBelongID();
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
//井轨迹x,y,z,MD
|
|||
|
|
FLOATPROPERTY m_vDX;
|
|||
|
|
FLOATPROPERTY m_vDY;
|
|||
|
|
FLOATPROPERTY m_vAngle;
|
|||
|
|
|
|||
|
|
DOUBLEPROPERTY m_vX;
|
|||
|
|
DOUBLEPROPERTY m_vY;
|
|||
|
|
DOUBLEPROPERTY m_vZ;
|
|||
|
|
DOUBLEPROPERTY m_vMD;
|
|||
|
|
WellHead m_WellHead;
|
|||
|
|
double m_StartDep,m_EndDep,m_Rlev;
|
|||
|
|
QString m_strWellImage; //井类型符号
|
|||
|
|
pai::ios::welllog::Well m_DbWell; //Db 里的well对象
|
|||
|
|
QString m_WellFileName;
|
|||
|
|
QString m_WellCode; ///<井编码 API编码
|
|||
|
|
CObjWelllogRound*m_pCurrentWelllogRound;
|
|||
|
|
bool isFLAG;
|
|||
|
|
double m_XYZStartDep,m_XYZEndDep,m_XYZRlev;
|
|||
|
|
public slots:
|
|||
|
|
// void slotWellMessage(QString slffile);
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @class CWellViewInfo3DBasemap
|
|||
|
|
* @brief well在3D窗口,Basemap窗口上的viewinfo
|
|||
|
|
*/
|
|||
|
|
// class OSGDATAMODEL_EXPORT CWellViewInfo3DBasemap: public CObjectViewInfo
|
|||
|
|
// {
|
|||
|
|
// Q_OBJECT
|
|||
|
|
// public:
|
|||
|
|
// CWellViewInfo3DBasemap();
|
|||
|
|
|
|||
|
|
// IMPLE_META_PROPERTY();
|
|||
|
|
|
|||
|
|
// GM_PROPERTY_NORMAL( CLineProperty,LineProperty );
|
|||
|
|
// Q_PROPERTY(CLineProperty LineProperty READ GetLineProperty WRITE SetLineProperty );
|
|||
|
|
|
|||
|
|
// GM_PROPERTY_NORMAL( bool,DrawWellPath);
|
|||
|
|
// Q_PROPERTY(bool DrawWellPath READ GetDrawWellPath WRITE SetDrawWellPath );
|
|||
|
|
// };
|
|||
|
|
|
|||
|
|
using namespace pai::datamodel;
|
|||
|
|
|
|||
|
|
END_OSGDATAMODEL_NAMESPACE
|
|||
|
|
|
|||
|
|
#endif
|