⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geodao.h

📁 使用VC++程序制作的COM组件是地理信息系统的一个实例
💻 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 + -