📄 geodao.h
字号:
// GeoDAO.h: interface for the GeoData Access Object classes.
//
//////////////////////////////////////////////////////////////////////
#include <dbdao.h> //DAO Classes
#include <dbdaoerr.h> //DAO errors
#include "GeoDataEngine.h" //基本地理数据库类
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CSymbol;
class CAttriField;
class CMapFeature;
class CPointFeature;
class CLineFeature;
class CPolygonFeature;
class CTextFeature;
class CLabel;
class CBaseSet;
class CPointFeatureSet;
class CNodeFeatureSet;
class CLineFeatureSet;
class CPolygonFeatureSet;
class CLabelSet;
class CSymbolSet;
class CLayer;
class CWorkspace;
//***********************************************************
//要素符号类
class CSymbol : public SYMBOLFEATURE
{
public:
CSymbol();
//Attribute
public:
};
//--------------------------------------------------------------------
//属性字段类
class CAttriField
{
public:
CAttriField();
//Attribute
public:
CString csName;
COleVariant Value;
};
//--------------------------------------------------------------------
//属性字段集合类
class CAttriFieldSet : public CArray<CAttriField, CAttriField&>
{
public:
CAttriFieldSet();
//Attribute
public:
long lGeoObjID;
};
//***********************************************************
//空间要素类——所有地理目标的基类
//封装了所有地理目标类共同的行为和描述地理目标所需的各种数据。
class CMapFeature : public CObject
{
protected:
DECLARE_SERIAL(CMapFeature)
//Constructors
public:
CCMapFeature(); //构造函数
CMapFeature(const CMapFeature& obj); //拷贝构造函数
virtual ~CMapFeature(); //析构函数
//Attributes
public:
//Operation
public:
};
//--------------------------------------------------------------------
//点状要素类
class CPointFeature : public POINTFEATURE, public CMapFeature
{
protected:
DECLARE_SERIAL(CPointFeature)
//Constructors
public:
CPointFeature(); //构造函数
~CPointFeature(); //析构函数
//Attributes
public:
CAttriFieldSet m_AttriFieldSet;
CSymbol m_Symbol;
//Operation
public:
};
//--------------------------------------------------------
//线状要素类
class CLineFeature : public LINEFEATURE, public CMapFeature
{
protected:
DECLARE_SERIAL(CLineFeature)
//Constructors
public:
CLineFeature(); //构造函数
~CLineFeature(); //析构函数
//Attribute
public:
CAttriFieldSet m_AttriFieldSet;
CSymbol m_Symbol;
//Operations
public:
};
//--------------------------------------------------------------------
//面状要素类(包括空间数据、属性数据以及各种操作函数)
class CPolygonFeature : public POLYGONFEATURE, public CMapFeature
{
protected:
DECLARE_SERIAL(CPolygonFeature)
public:
CPolygonFeature(); //构造函数
~CPolygonFeature(); //析构函数
//Attribute
public:
CAttriFieldSet m_AttriFieldSet;
CSymbol m_Symbol;
//Operations
public:
};
//--------------------------------------------------------------------
//文本要素类
class CTextFeature : public TEXTFEATURE, public CMapFeature
{
protected:
DECLARE_SERIAL(CTextFeature)
public:
CTextFeature(); //构造函数
~CTextFeature(); //析构函数
//Attribute
public:
//Operations
public:
};
//--------------------------------------------------------------------
//要素注记类
class CLabel : public LABELFEATURE, public CMapFeature
{
protected:
DECLARE_SERIAL(CLabel)
public:
CLabel(); //构造函数
~CLabel(); //析构函数
//Attribute
public:
//Operations
public:
};
//********************************************************************
//--------------------------------------------------------------------
//各种集合类的基类,完成对数据库表的访问
class CBaseSet
{
public:
CBaseSet();
//Attribute
protected:
CString m_csTableName; //各种数据库表名
CGeoRecordset m_rs; //记录集对象
//Operations
public:
virtual BOOL Open(CGeoDatabase& db, CString tablename); //与数据库表建立关联
void Close();
int GetCount();
void MoveFirst();
void MoveNext();
void MovePrev();
void MoveLast();
BOOL IsEOF();
BOOL IsBOF();
BOOL DeleteOf(long id);
void Delete();
};
//--------------------------------------------------------------------
//符号集合类(一个集合类对应一个文本数据库表)
class CSymbolSet : public CBaseSet
{
public:
CSymbolSet();
//Attribute
public:
//Operations
public:
// virtual BOOL Open(CGeoDatabase& db, CLayer* pLayer); //与数据库表建立关联
long AddFeature(CSymbol& obj); //增加符号(一个记录)
void GetFeature(CSymbol* obj); //获得当前符号
BOOL GetFeatureOf(long id, CSymbol* obj); //根据ID号获得符号
void UpdateFeature(CSymbol& obj); //更新记录
};
//--------------------------------------------------------------------
//注记集合类(一个集合类对应一个文本数据库表)
class CLabelSet : public CBaseSet
{
public:
CLabelSet();
//Attribute
public:
//Operations
public:
// virtual BOOL Open(CGeoDatabase& db, CLayer* pLayer); //与数据库表建立关联
long AddFeature(CLabel& obj); //增加注记(一个记录)
void GetFeature(CLabel* obj); //获得当前注记
BOOL GetFeatureOf(LONG id, CLabel* obj); //根据ID号获得注记
void UpdateFeature(CLabel& obj); //更新记录
};
//--------------------------------------------------------------------
//点状要素集合类(一个集合类对应一个点数据库表)
class CPointFeatureSet : public CBaseSet
{
public:
CPointFeatureSet();
~CPointFeatureSet();
//Attribute
public:
CLayer* m_pLayer; //所属要素层对象的指针
CSymbolSet m_SymbolSet; //对应的符号集合
CLabelSet m_LabelSet; //对应的注记集合
//Operations
public:
virtual BOOL Open(CGeoDatabase& db, CLayer* pLayer); //与数据库表建立关联
long AddFeature(CPointFeature& obj); //增加要素(一个记录)
void GetFeature(CPointFeature* obj); //获得当前要素
BOOL GetFeatureOf(long id, CPointFeature* obj); //根据ID号获得要素
void GetAttriFieldSet(CAttriFieldSet& obj); //获得当前要素的属性数据
BOOL GetAttriFieldSetOf(long id, CAttriFieldSet& obj); //获得当前要素的属性数据
void UpdateFeature(CPointFeature& obj); //更新记录
};
//--------------------------------------------------------------------
//线状要素集合类(一个集合类对应一个线数据库表)
class CLineFeatureSet : public CBaseSet
{
public:
CLineFeatureSet();
~CLineFeatureSet();
//Attribute
public:
CLayer* m_pLayer; //所属要素层对象的指针
CSymbolSet m_SymbolSet; //对应的符号集合
CLabelSet m_LabelSet; //对应的注记集合
//Operations
public:
virtual BOOL Open(CGeoDatabase& db, CLayer* pLayer); //与数据库表建立关联
long AddFeature(CLineFeature& obj); //增加要素(一个记录)
void GetFeature(CLineFeature* obj); //获得当前要素
BOOL GetFeatureOf(long id, CLineFeature* obj); //根据ID号获得要素
void GetAttriFieldSet(CAttriFieldSet& obj); //获得当前要素的属性数据
BOOL GetAttriFieldSetOf(long id, CAttriFieldSet& obj); //根据ID号获得当前要素的属性数据
void UpdateFeature(CLineFeature& obj); //更新记录
};
//--------------------------------------------------------------------
//面状要素集合类(一个集合类对应一个面数据库表)
class CPolygonFeatureSet : public CBaseSet
{
public:
CPolygonFeatureSet();
~CPolygonFeatureSet();
//Attribute
public:
CLayer* m_pLayer; //所属要素层对象的指针
CSymbolSet m_SymbolSet; //对应的符号集合
CLabelSet m_LabelSet; //对应的注记集合
//Operations
public:
virtual BOOL Open(CGeoDatabase& db, CLayer* pLayer); //与数据库表建立关联
long AddFeature(CPolygonFeature& obj); //增加要素(一个记录)
void GetFeature(CPolygonFeature* obj); //获得当前要素
BOOL GetFeatureOf(LONG id, CPolygonFeature* obj); //根据ID号获得要素
void GetAttriFieldSet(CAttriFieldSet& obj); //获得当前要素的属性数据
BOOL GetAttriFieldSetOf(long id, CAttriFieldSet& obj);//根据ID号获得当前要素的属性数据
void UpdateFeature(CPolygonFeature& obj); //更新记录
};
//--------------------------------------------------------------------
//文本集合类(一个集合类对应一个文本数据库表)
class CTextFeatureSet : public CBaseSet
{
public:
CTextFeatureSet();
//Attribute
public:
CLayer* m_pLayer; //所属要素层对象的指针
//Operations
public:
virtual BOOL Open(CGeoDatabase& db, CLayer* pLayer); //与数据库表建立关联
long AddFeature(CTextFeature& obj); //增加文本(一个记录)
void GetFeature(CTextFeature* obj); //获得当前文本
BOOL GetFeatureOf(LONG id, CTextFeature* obj); //根据ID号获得文本
void UpdateFeature(CTextFeature& obj); //更新记录
};
//********************************************************************
//--------------------------------------------------------------------
//空间要素层类
class CLayer : public LAYERFEATURE, public CObject
{
protected:
DECLARE_SERIAL(CLayer)
public:
CLayer();
CLayer(CWorkspace* pWorkspace);
//Attributes
public:
CWorkspace* m_pWorkspace;
CPointFeatureSet* m_pPointSet;
CLineFeatureSet* m_pLineSet;
CPolygonFeatureSet* m_pPolygonSet;
CTextFeatureSet* m_pTextSet;
CLabelSet* m_pLabelSet;
CPointFeatureSet* m_pSelPointSet;
CLineFeatureSet* m_pSelLineSet;
CPolygonFeatureSet* m_pSelPolygonSet;
CTextFeatureSet* m_pSelTextSet;
//Operations
public:
void ReName(CString newname);
BOOL QueryAtPoint(DPOINT point);
BOOL QueryInRectangle(DRECT rect);
BOOL QueryInCircle(double Radius);
};
//--------------------------------------------------------------------
//工作区(CWorkspace)类的说明
class CWorkspace : public WORKSPACEFEATURE, public CObject
{
protected:
DECLARE_SERIAL(CWorkspace)
public:
CWorkspace();
~CWorkspace();
//Attributes
public:
int m_iDatabaseNameLen;
CString m_csDatabaseName;
CGeoDatabase m_GeoDatabase;
CTypedPtrList<CObList, CLayer*> m_listLayer;
//Operations
public:
virtual void Serialize(CArchive& ar);
private:
BOOL OpenDB();
void CloseDB();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -