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

📄 mifdoc.h

📁 地理信息系统常用数据交换文件Mif格式的读取,适合于地理信息系统、遥感、城市规划等专业开发人员使用
💻 H
字号:
// MIFDoc.h : interface of the CMIFDoc class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_MIFDOC_H__98DF45FD_A0C6_49CE_948C_40CF284233F2__INCLUDED_)
#define AFX_MIFDOC_H__98DF45FD_A0C6_49CE_948C_40CF284233F2__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//颜色压缩与释放[unsigned int - 4 bytes]
#define PACK_COLOR(R,G,B,A)   ( (A)<<24 | (B)<<16 | (G)<<8 | (R) )
#define UNPACK_RED(X)         ( (X) & 0xff )
#define UNPACK_GREEN(X)       ( ( (X) >> 8 ) & 0xff )
#define UNPACK_BLUE(X)        ( ( (X) >> 16 ) & 0xff )
#define UNPACK_ALPHA(X)       ( ( (X) >> 24 ) & 0xff )



//地理点结构[用于构造线、多边形等]
struct GeoPoint	
{
	float lon, lat, hgt;		//位置
};

//地理站目标结构[用于测站、城市等]
struct Point
{
	char name[16];				//名称
	float lon, lat, hgt;		//位置
	char others[200];			//属性描述
	int id;                     //点ID
};

struct PointType
{
	char name[16];			 	//类型名
	int num_pt;					//站数目
 	struct Point *pt;		            //站表

	//void free_pt_tp();
};

//地理线目标结构
struct Line
{
	char name[16];				//名称
	GeoPoint *pt;				//点数组
	int num_pt;					//地理点数目
	char others[200];			//属性描述
    int id;                     //线ID

	//void free_ln();
};

struct LineType
{
	char name[16];				//类型名
	int num_ln;					//线数目
	struct Line *ln;				    //线表

	//void free_ln_tp();
};

//地理多边形目标结构
struct Polygon
{
	char name[16];				//名称
	int num_pt;					//边界控制点数目
	GeoPoint  *pt;				//边界控制点数组
	char others[200];			//属性描述
	int id;                     //多边形ID

	//void free_pg();
};

struct PolygonType
{	
	char name[16];				//类型名
	int num_pg;					//多边形数目
	struct Polygon *pg;				 //多边形表

	//void free_pg_tp();
};


/*
void PointType::free_pt_tp()
{
	if (pt)	
	{	delete []pt;	pt = NULL;	}
	num_pt = 0;
}

void Line::free_ln()
{
	if (pt)
	{	delete []pt;		pt = NULL;	}
	num_pt = 0;
}

void LineType::free_ln_tp()
{
	if (ln)
	{	delete []ln;	ln = NULL;	}
	num_ln = 0;
}

void Polygon::free_pg()
{
	if (pt)
	{	delete []pt;		pt = NULL;	}
	num_pt = 0;
}

void PolygonType::free_pg_tp()
{
	if (pg)
	{	delete []pg;	pg = NULL;	}
	num_pg = 0;
}
*/

class CMIFDoc : public CDocument
{
protected: // create from serialization only
	CMIFDoc();
	DECLARE_DYNCREATE(CMIFDoc)

// Attributes
public:
	void free_pg_type();
	void free_ln_type();
	void free_pt_type();
	LineType*  ln_type;
	PointType* pt_type;
	PolygonType* pg_type;
	int num_pt_type;
	int num_ln_type;
	int num_pg_type;
	void load_pg_mapinfo(char* filename);
	void load_ln_mapinfo(char* filename);
	void load_pt_mapinfo(char* filename);
// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMIFDoc)
	public:
	virtual BOOL OnNewDocument();
	virtual void Serialize(CArchive& ar);
	//}}AFX_VIRTUAL

// Implementation
public:
	BOOL redraw;
	virtual ~CMIFDoc();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// Generated message map functions
protected:
	//{{AFX_MSG(CMIFDoc)
	afx_msg void OnFileOpen();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MIFDOC_H__98DF45FD_A0C6_49CE_948C_40CF284233F2__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -