77范文网 - 专业文章范例文档资料分享平台

二次开发初级培训班培训讲义(5)

来源:网络收集 时间:2019-03-29 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

口的保护和快速恢复等功能。CGisView类是MAPGIS类库中大多数类的基类。

CGisEditView 类继承了CGisView 类。它封装了MAPGIS编辑处理的基本数据对象和方法。包括几乎所有的点、线、区的编辑功能以及图层的处理函数、矢量化函数、节点平差函数、数字化函数、最基本的文件操作功能。CGisEditView类及其基类组成了十分强大的图形编辑函数库。

用户开发自己的软件时最好是继承CGisEditView类,这样用户可以同时使用BaseEditWindow 、CGisView 、CGisEditView类及VC++的Cview类所提供的所有功能。 CPrjEditView类继承了CGisEditView 类,它集成了对工程文件进行编辑处理所必需的数据对象的方法,具有对整个工程文件的各个文件编辑处理功能。

6.MAPGIS的开发环境介绍

使用VC++开发MAPGIS应用程序的最快速有效的方法就是使用MAPGIS类库。这些类已经为用户的程序与MAPGIS操作平台的接口做好了准备,用户可以体会到使用这些类可以很容易地实现MAPGIS系统里的功能,而且在实现MAPGIS系统功能的基础上用户还可以随意地添加自己想要的功能。下面我们以CGisEditView类为例讲述如何构造一个简单的MAPGIS图形编辑器的方法和基本步骤。 第一步、建一个Visual C++的项目。打开Visual C++工作环境,选择File菜单New命令,在弹出的对话框中选择Projects页的MFC AppWizard(EXE)项并在Project name编辑框中敲入工程名(例如:engineer),然后单击OK。这样便进入了AppWizard(向导)的第一步,在这一步里用户要选择工程类型,可以选择单文档或多文档工程(基于对话框的工程不适合我们建MAPGIS工程),初学者最好选单文档类型;单击Next进入向导的第二步、第三步、直到完成(Finish之后OK),这几步用户可以采用默认设置。到此为止一个VC的项目已建好,然后用户的工作就是在这个项目中实现MAPGIS平台中的功能及自己想要的其他功能。

第二步、要完成的工作是将工程中的视图类改为继承CGisEditView类。具体操作是打开工程中的视图类的两个文件(*View.h、*View.cpp),用Visual C++查找替换功能(Edit菜单下的Rplace命令或热键Ctrl+H)分别将这两个文件中的CView字符串全部替换为CGisEditView,替换完毕,在工程中视图类的定义前面加入#include “cgisedit.h”,这样就完成了CGisEditView类的继承。

第三步、调用CGisEditView类中的OnDraw(pDC)函数,以完成绘图工作的预先处理。具体操作方法:在视图类的OnDraw(CDC* pDC)函数中加语句CGisEditView::OnDraw(pDC)。见下面示例:

void CEngineerView::OnDraw(CDC* pDC) { }

图12-3 添加函数实现图形显示

CEngineerDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc);

// TODO: add draw code for native data here CGisEditView::OnDraw(pDC);

第四步、对Visual C++的工作环境进行必要的设置,这些设置很重要。 第1项(字节)设置:选择Project菜单下的Settings命令,在C/C++页面上,Category一栏选择 Code Generation,并将Struct Member alignment设定为1 Byte。

第2项(输出目录)设置:把生成的可执行文件输出到MAPGSI动态连接库所在的目录下。

第3项(包含库)设置:设置头文件及库文件的路径。选择Tools菜单下的Options命令

完成这几步用户就可以进行编译连接,执行,在客户区单击鼠标右键你会发现弹出一个有关MAPGIS操作的快捷菜单。这时用户可以使用CGisEditView类及其基类中的函数设计自己的基于MAPGIS的图形软件了。

CPrjEditView类(或CGisView类)的使用方法和CGisEditView类的使用方法基本相同,只不过要继承CPrjEditView类(或CGisView类)。

第五讲MAPGIS空间数据存取和属性编辑

1.工作区操作

1.1 工作区介绍

逻辑缓冲池 工作区 (实体数据) 网络数据库 本地文件 物理存储 1.2工作区操作函数

[工作区操作流程]

1)初始化工作区实例(_InitWorkArea) 循环[2>,5>]

2)打开工作区(点,线,区,网,表)(_OpenArea) 3)装文件至工作区(_LoadFile) 4)...实体(图形,属性)操作,表格操作...... 5)关闭打开的工作区(_CloseArea) 6)释放工作区实例(_FreeWorkArea)

C示范:打开点工作区,装入点文件

AHINST AHInst; short AiPnt;

AHInst = _InitWorkArea(m_hInstance); AiPnt =_OpenArea(AHInst,PNT); If(_LoadFile(AiPnt) > 0) {

…..//实体操作

}

_CloseArea(AiPnt); _FreeWorkArea(AHInst);

1.3 工作区函数

1>AREA_HINST _InitWorkArea(HINSTANCE hInst); 2>int 3>short 4>int _FreeWorkArea(AREA_HINST ahInst);

_OpenArea(AREA_HINST,short type);

_CloseArea(short ai); (_SetChangeFlag(short ai,char flag);) 5>short

_LoadAFile(char * datName,short ai);

short _LoadFile(short ai); 6>char _GetAreaType(short ai); 7>short _IsAreaEmpty(short ai); 8>short _IsOpenArea(short ai);

9>short _GetAreaNumber(AREA_HINST ahInst); 10>short

_GetFirstAreaNo(AREA_HINST ahInst);

11>short _GetNextAReaNo(AREA_HINST ahInst); 12>short

_SaveFile(short ai,short ver=VERSION); _SaveAFile

C示范:读取属于AHInst实例的所有工作区 short i,ai,an;

an = _GetAreaNumber(AHInst); ai = _GetFirstAreaNo(AHInst);

for(i = 0; i < an; i++,ai = _GetNextAreaNo(AHInst)) { //使用工作区ai... }

2.空间实体操作

实体存取主要依据实体数据的唯一标识:实体号 实体(Lin,Pnt,Nod,Reg,Net) 2.1 取实体个数

_Get...Num: 逻辑数,物理数 2.2 取实体空间数据,图形数据

_Get... 2.3 实体操作

1)取实体图形参数 _Get...Info 2)更新实体图形参数 _Update....Info 3)添加实体 _Append... 4)删除实体 _Del... 5)撤销删除实体 _UnDel...

[注意]:函数返回:1==>成功;0==>失败;-1==>该图元被删除 C示范:从给定的ai号工作区重读区所有的线

long i,linN; long len; LIN_INFO linf; D_DOT *lxy;

_GetLinNum(ai,&i,&linN);//取线实体数,i返回逻辑数,linN返回物理数 for(i = 1;i < linN; i++) {

if(_GetLin(ai,&lxy,&len,&Linf) <= 0) continue;

//处理线实体代码 //... }

2.4 特殊函数

线(拓扑)==>_GetLinTop;_WriteLinTop;_ClearLinTop 区==>合并_UnionRegAtoB,分裂_SplitReg 2.5 拷贝操作

_CopyPart...(_CopyPartLin...) _CopyAll...(_CopyAllLin...) _CopyList...(_CopyListLin...)

3.属性(属性结构)操作

3.1属性结构

1)属性结构描述

CAtt_Stru

2)属性结构函数

a.取属性结构:_GetAttStru b.设置属性结构:_SetAttStru

c:添加属性结构字段:_AppendStruFld

d:删除属性结构字段:_DelStruFldOnNumb, _DelStruFld

e:编辑属性结构:_EditStruct f:浏览属性结构:_ViewStruct

g比较属性结构: _IsSameAttStru

C示范:向给定的ai号点工作区的点属性结构添加double类型字段”产量”,字符串类型字段”地方”;

CFIELD_HEAD fldEntry;

lstrcpy(fldEntry.fieldname,”产量”); fldEntry.fieldtype=DOUBLE_TYPE fldEntry.msk_leng=15;

fldEntry.point_leng=6;

_AppendStruFld(ai,PNT,1,&fldEntry); lstrcpy(fldEntry.fieldname,”地方”); fldEntry.fieldtype=STR_TYPE fldEntry.msk_leng=64;

_AppendStruFld(ai,PNT,1,&fldEntry);

3.2 属性操作

1)属性数据表示===>属性表 2)属性操作函数

a.取属性:_GetAtt

b.写属性:_WriteAtt

d:编辑属性结构:_EditStruct

e:浏览属性结构:_ViewStruct 3)字段操作函数 a.取字段值

_CvtFldToString,_CvtFldToString1 b.设置字段值

_SetFld,_SetFldFromStr

_SetFldOnNumb,_SetFldOnNumbFromStr

设置字段值之后,要写属性_WriteAtt,才能将字段值写入工作区

4)图形数据和属性联动闪烁显示 5)属性数据的输入,输出 6)属性连接

long WINAPI _LinkTbl1(CLinkTblInfo &linkTblInfo); 7)属性外挂

4.网络介绍

4.1 MAPGIS网络环境的建立 4.2函数

1)装文件_LoadFile

2)存文件_SaveFile 3)锁图元 _Lock… 4.3 其他概念 1)数据源 2)用户,角色 3)访问权限 4)加锁

第六讲 图形显示输出及窗口操作

1. 图形显示输出

1.1显示输出的基本原理

1)逻辑坐标、设备坐标、窗口坐标、屏幕坐标 基本概念:

逻辑坐标:逻辑坐标又称图形坐标或用户坐标,(现统称逻辑坐标),是用户处理自己的图形实际所采用的坐标系。例如:用户自定义坐标、大地坐标、地理坐标。

设备坐标:是图形设备的坐标系。数字化仪该设备的坐标原点一般在中心;笔式绘图仪以步距为单位,以中心或某一角为原点;在MAPGIS二次开发中,应用程序窗口也是一种

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库二次开发初级培训班培训讲义(5)在线全文阅读。

二次开发初级培训班培训讲义(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/555315.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: