📄 geodataengine.h
字号:
// GeoDataEngine.h: interface for the CGeoDataEngine class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_GEODATAENGINE_H__50A3E933_F26E_11D2_B406_97B7537E8706__INCLUDED_)
#define AFX_GEODATAENGINE_H__50A3E933_F26E_11D2_B406_97B7537E8706__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//********************************************************************
//空间要素数据结构
//--------------------------------------------------------------------
//DPOINT结构定义二维空间一个点的x和y坐标
struct DPOINT{
double x; //x坐标
double y; //y坐标
};
//--------------------------------------------------------------------
//DRECT结构定义二维空间一个矩形的左下和右上角的坐标
struct DRECT{
double x1; //矩形左下角的x坐标
double y1; //矩形左下角的y坐标
double x2; //矩形右上角的x坐标
double y2; //矩形右上角的y坐标
};
//--------------------------------------------------------------------
//DSIZE结构定义二维空间一个矩形的宽和高
struct DSIZE{
double cx; //矩形宽
double cy; //矩形高
};
//--------------------------------------------------------------------
//点状(主要是独立点)要素空间数据结构
struct POINTFEATURE
{
long ID; //点标识码
BYTE byType; //点类型 0-无向点,1-有向点
//10-无向结点,11-有向结点
DPOINT ptPosition; //定位点坐标
double dElevation; //高程
DPOINT ptDirection; //方向点坐标(有向)
CArray<long, long> arrayLineID; //关联的弧段标识变长数组
long lAttriCode; //属性编码
};
//--------------------------------------------------------------------
//线状(弧段)要素空间数据结构
struct LINEFEATURE
{
long ID; //线的标识码
BYTE byType; //弧段类型 0-折线,1-光滑曲线,
//2-圆弧
//10--12为具有拓扑关系的弧段
long lStartNodeID; //始结点标识码
long lEndNodeID; //终结点标识码
long lLeftPolygonID; //左多边形标识码
long lRightPolygonID; //右多边形标识码
CArray<DPOINT, DPOINT> arrayVertex; //点列坐标数组
CArray<double, double> arrayElevation; //高程数组
DRECT rectBound; //外接矩形
long lAttriCode; //属性编码
};
//--------------------------------------------------------------------
//面状要素空间数据结构
struct POLYGONFEATURE
{
long ID; //标识码
BYTE byType; //面类型 0-简单面,1-带岛面
CArray<long, long> arrayLineID; //关联的弧段标识变长数组
CArray<long, long> arrayIslandID; //包含的岛屿标识变长数组
long lParentID; //归属面的标识码
DPOINT ptCentroid; //内点坐标
DRECT rectBound; //外接矩形
long lAttriCode; //属性编码
};
//--------------------------------------------------------------------
//TEXTFEATURE结构定义文本要素数据结构
struct TEXTFEATURE{
long ID; //文本标识码
DPOINT ptPosition; //定位点坐标
CString csContent; //文本内容
BYTE byAlignment; //对齐方式
double dVerticalSpace; //行距
CString csFaceName; //文本字体
long lEffect; //字型、效果
SIZE size; //文本尺寸
long lCharExtra; //文本间隔
double dAngle; //文本方向,以角度表示
COLORREF rgbFore; //文本前景色
COLORREF rgbBack; //文本背景色
};
//--------------------------------------------------------------------
//LABELFEATURE结构定义注记数据结构
struct LABELFEATURE{
long ID; //注记标识码
BYTE byType; //注记类型, 0-点, 1-线, 2-面
long lGeoObjID; //关联的地理目标标识码
CString csFieldName; //注记字段名称
CString csContent; //注记内容
CArray<DPOINT, DPOINT> arrayLocation; //变长坐标数组
BYTE byPlaceStyle; //配置方式
CString csFaceName; //注记字体的字样名
long lEffect; //字型、效果
SIZE size; //注记尺寸
long lCharExtra; //注记间隔
double dAngle; //注记方向,以角度表示
COLORREF rgbFore; //注记前景色
COLORREF rgbBack; //注记背景色
};
//--------------------------------------------------------------------
//绘图符号信息数据结构
struct SYMBOLFEATURE
{
long ID; //绘图式样标识码
BYTE byType; //符号类型, 0-点, 1-线, 2-面
long lGeoObjID; //关联的地理目标标识码
long lCode; //符号代码
double dSize; //符号尺寸
COLORREF rgbFore; //符号颜色
COLORREF rgbBack; //符号背景颜色
double dDistance; //配制符号距离
};
//--------------------------------------------------------------------
//专题图数据结构
struct THEMEFEATURE
{
long ID; //标识码
// BYTE byType; //符号类型, 0-点, 1-线, 2-面
// long lGeoObjID; //关联的地理目标标识码
// long lCode; //符号代码
// double dSize; //符号尺寸
// COLORREF rgbFore; //符号颜色
// COLORREF rgbBack; //符号背景颜色
// double dDistance; //配制符号距离
};
//--------------------------------------------------------------------
//要素层数据结构
struct LAYERFEATURE
{
CString csName; //要素层名称
BYTE byType; //类型 0-矢量数据要素层,
// 1-图像数据要素层,
// 2-DEM数据要素层,
// 3-专题数据要素层,
DPOINT ptLocation; //要素层的位置
long lScale; //比例尺分母
double dMinView; //最小视野
double dMaxView; //最大视野
BYTE byVisible; //0-可视, 1-不可视
};
//--------------------------------------------------------------------
//工作区数据结构
struct WORKSPACEFEATURE
{
CString csName; //工作区文件名
COleDateTime dtDate; //建立时间
CString csLevel; //密级
double dLongitude1; //左下角经度
double dLatitude1; //左下角纬度
double dLongitude2; //右上角经度
double dLatitude2; //右上角纬度
double x1; //左下角坐标X
double y1; //左下角坐标Y
double x2; //右上角坐标X
double y2; //右上角坐标Y
BYTE byXYSystem; //平面坐标系统 0--54,1--80,2--WGS-84,3--独立
BYTE byZSystem; //高程坐标系统 0--54黄海,1--85国家基准,2--独立
BYTE byProjection; //地图投影 0--经纬度,1--高斯,2--等角圆锥,3--墨卡托,4--无投影
BYTE byUnit; //坐标单位 当Projection = 0时 0--秒,1--度
//其他 0--毫米,1--米
BYTE byStyle; //显示方式 0--平面,1--立体
BYTE byDisplayProjection; //显示投影方式 0--无投影,1--高斯,2--等角圆锥,3--墨卡托,
};
//********************************************************************
//--------------------------------------------------------------------
//地理要素表类型定义
enum TableTypeConstants
{
comPointTable = 0, //点
comLineTable = 1, //线
comPolygonTable = 2, //面
comTextTable = 3, //文本
comLabelTable = 4, //注记
comSymbolTable = 5, //符号
comLayerTable = 6, //要素层
comWorkspaceTable = 7 //工作区
};
//数据库字段与类型结构
struct FIELDDEF
{
TCHAR csName[32]; //字段名
long lType; //字段类型
long lSize; //字段长度
};
#define comDatabaseProperty _T("ComGIS1.0")
#define comWorkspaceTableName _T("工作区参数表")
#define comLayerTableName _T("要素层数据表")
#define comPointSuffix _T("_点")
#define comPointSymbolSuffix _T("_点符号")
#define comPointLabelSuffix _T("_点注记")
#define comLineSuffix _T("_线")
#define comLineSymbolSuffix _T("_线符号")
#define comLineLabelSuffix _T("_线注记")
#define comPolygonSuffix _T("_面")
#define comPolygonSymbolSuffix _T("_面符号")
#define comPolygonLabelSuffix _T("_面注记")
#define comTextSuffix _T("_文本")
//--------------------------------------------------------------------
typedef CdbDatabase CGeoDatabase;
typedef CdbRecordset CGeoRecordset;
typedef CdbField CGeoField;
//--------------------------------------------------------------------
//地理数据访问对象类成员函数及成员变量说明
class CGeoDataEngine
{
public:
CGeoDataEngine();
virtual ~CGeoDataEngine();
//Attributes
public:
CdbDBEngine m_dbEngine;
CdbWorkspace m_dbWorkspace;
//Operations
public:
BOOL OpenDatabase(CString filename, CGeoDatabase* db);
BOOL CreatePointTable(CGeoDatabase& db, CString tablename);
BOOL CreateLineTable(CGeoDatabase& db, CString tablename);
BOOL CreatePolygonTable(CGeoDatabase& db, CString tablename);
BOOL CreateTextTable(CGeoDatabase& db, CString tablename);
BOOL CreateLabelTable(CGeoDatabase& db, CString tablename);
BOOL CreateSymbolTable(CGeoDatabase& db, CString tablename);
BOOL CreateLayerTable(CGeoDatabase& db, CString tablename);
BOOL CreateWorkspaceTable(CGeoDatabase& db, CString tablename);
BOOL OpenLayerTable(CGeoDatabase& db, CGeoRecordset* rs);
BOOL OpenWorkspaceTable(CGeoDatabase& db, CGeoRecordset* rs);
BOOL OpenTable(CGeoDatabase& db, CString tablename, CGeoRecordset* rs);
BOOL DeleteTable(CGeoDatabase& db, CString tablename);
int GetTableType(CGeoRecordset& rs);
int GetSpatialFieldNum(CGeoRecordset& rs);
void SetPointSpatialData(CGeoRecordset& rs, POINTFEATURE* pdata);
void GetPointSpatialData(CGeoRecordset& rs, POINTFEATURE* pdata);
void SetLineSpatialData(CGeoRecordset& rs, LINEFEATURE* pdata);
void GetLineSpatialData(CGeoRecordset& rs, LINEFEATURE* pdata);
void SetPolygonSpatialData(CGeoRecordset& rs, POLYGONFEATURE* pdata);
void GetPolygonSpatialData(CGeoRecordset& rs, POLYGONFEATURE* pdata);
void SetTextData(CGeoRecordset& rs, TEXTFEATURE* pdata);
void GetTextData(CGeoRecordset& rs, TEXTFEATURE* pdata);
void SetLabelData(CGeoRecordset& rs, LABELFEATURE* pdata);
void GetLabelData(CGeoRecordset& rs, LABELFEATURE* pdata);
void SetSymbolData(CGeoRecordset& rs, SYMBOLFEATURE* pdata);
void GetSymbolData(CGeoRecordset& rs, SYMBOLFEATURE* pdata);
void SetLayerData(CGeoRecordset& rs, LAYERFEATURE* pdata);
void GetLayerData(CGeoRecordset& rs, LAYERFEATURE* pdata);
void SetWorkspaceData(CGeoRecordset& rs, WORKSPACEFEATURE* pdata);
void GetWorkspaceData(CGeoRecordset& rs, WORKSPACEFEATURE* pdata);
BOOL CreateNewLayer(CGeoDatabase& db, LAYERFEATURE* pdata);
void RenameLayer(CGeoDatabase& db, CString oldname, CString newname);
void BeginTrans();
void CommitTrans();
void Rollback();
};
#endif // !defined(AFX_GEODATAENGINE_H__50A3E933_F26E_11D2_B406_97B7537E8706__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -