GIS门户网提示:本文章共1756字,分2页,当前第1页,快速翻页:
|
MAPGIS是我国著名的地理信息系统软件。基于MAPGIS的二次开发已经是越来越普遍,今天要给大家讲的是MapGIS二次开发之打开Tin文件。我们知道不规则三角网(TIN)是由不规则分布的数据点连成的三角网组成,三角面的形状和大小取决于不规则分布的观测点或称节点的密度和位置。下面就来说说如何在mapgis二次开发中打开Tin文件。
先说说mapgis二次开发的开发环境:
Win2000,VC 6.0,平台:mapgis65及其对应的SDK。至于二次开发的开发环境配置我就不细说了。打开Tin文件的操作主要是在Tin工作区进行的。Tin工作区的主要操作函数放在"Tin_area.h"中。

首先我们先熟悉一下mapgis中的Tin三角网的结构。
typedef struct tagTinNetDispParam
{
long PntColNo; //顶点颜色号.
long LinColNo; //网线颜色号.
BOOL IsDispPntNo; //是否显示高程点号.
BOOL IsDispTriNo; //是否显示三角网号.
BOOL IsDispCode; //是否显示地性码.
BOOL IsDispValue; //是否显示高程值.
short sDemValDn; //高程值显示小数位数.
} TinNetDispParam;
打开Tin文件主要用到的就三个函数:
TinAI WINAPI _tnGetTinAI(void); // 创建Tin工作区
short WINAPI _tnClearArea(TinAI tinAi); // 在Tin工作区上装载Tin文件
short WINAPI _tnDispTinNet(MyDC mdc,TinAI tinAi,TinNetDispParam *NetDispParam); // 显示三角剖分
具体的步骤:
1. 在视图类添加必要的变量
TinAI m_Tinai; // 工作区号
TinNetDispParam *NetDispParam; // 三角网结构体指针变量
bool b_ShowTin; // 是否显示Tin文件,初始化为false,即不显示
2. 添加相应的“装入Tin文件”的菜单
3. 通过CLASS WIZARD为装入Tin文件建立对应的映射函数
void CMyEditView::OnTinarea()
{
// TODO: Add your command handler code here
m_Tinai = _tnGetTinAI(); // 获得工作区号
if(_tnLoadFile(m_Tinai)==1) // 假如装载Tin文件成功
{
b_ShowTin=TRUE; // 显示Tin文件
Invalidate(); // 重画客户区
}
}
4. 在OnDraw函数里添加相应的显示Tin文件的代码
void CMyEditView::OnDraw(CDC* pDC)
{
CMyEditDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CGisEditView::OnDraw(pDC);
if(b_ShowTin)
{
MyDC mdc=_GetMyDC(); // // 取显示对象句柄
NetDispParam = new TinNetDispParam; // 为指针变量开辟空间
if(NetDispParam==NULL) return;
NetDispParam->LinColNo=6; // 设置线色的显示颜色为红色,也可以设置其它颜色
NetDispParam->PntColNo=6; // 设置顶点颜色为红色
NetDispParam->IsDispValue=TRUE;
NetDispParam->IsDispPntNo=TRUE;
NetDispParam->IsDispCode = TRUE;
NetDispParam->IsDispTriNo = FALSE;
_tnDispTinNet(mdc,m_Tinai,NetDispParam);
delete NetDispParam;
NetDispParam=NULL;
_DeleteMyDC(mdc); //删除显示对象
return;
}
}
5. 既然有相应的打开工作区的代码,也应有相应的清除工作区的代码。
添加“清除Tin工作区”的菜单,通过CLASS WIZARD建立相应的映射函数
|