您的位置:GIS门户网 GIS应用 正文
GIS网内容搜索
GIS网热门内容
GIS网推荐内容
GIS网最新内容
提出意见和建议

MapGIS二次开发之打开Tin文件

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建立相应的映射函数
 

收藏本页:

点这里复制本页地址发送给您QQ/MSN上的好友
相关文章

对MAPGIS正版、解密版、虚拟狗版对比研究
MAPGIS TIF格式转成MSI格式
ArcGIS和MAPGIS比较
MapGIS中把注释变为子图的方法
MapGIS删除重复注释子图方法
MapGIS 修改 Clib slib 路径代码
MAPGIS二次开发类库介绍
MapGIS整图变换
MAPGIS6.5 视频教程下载
mapgis6.7教程[收集整理]
基于Delphi的MAPGIS二次开发
Oracle Spatial中上载GIS空间数据方法研究
开放的地图服务器
ArcGIS 9.2 Server Pack 5 蓄势待发
ArcSDE C API在.NET中的调用
ArcGIS Server或IMS的AppLockMgr导致Deskto
Winform自定义控件在网页上的应用
ArcGIS 9.0 绘制扇形
MAPGIS路在何方?
MapGIS · ArcGIS · 一点想法

相关评论


GIS门户网提示:本文章所属分类:首页 GIS应用
GIS

GIS