ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:23.21KB ,
资源ID:16540727      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16540727.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(mapgis二次开发教程文档格式.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

mapgis二次开发教程文档格式.docx

1、数字化设备参数设置及初始化调用函数W32_Dig.h图框生成函数frmdll32.h投影变换函数projdll.h工作区投影变换函数cordcvt.h工程管理及拼版文件操作函数Map_prj.h窗口操作类库CGisView.h输入编辑类库CGisEdit.h工程管理类库CPrjEdit.h地图库读取显示函数Dbs_View.h空间分析函数Spc_anly.hTin基本操作函数TinBas32.hTin工作区函数Tin_area.h网络分析函数Net_oper.h统计分析和统计图制作函数Att_Sta.h转换函数GisConv.h客户化菜单函数Custom.h图像输入输出函数msiio.h表4-

2、1 二次开发头文件4.2 MAPGIS基本术语下面介绍MAPGIS系统中经常使用的一些基本概念。 地图:是按一定的数学法则和特有的符号系统及制图综合原则将地球表面的各种自然和社会经济现象缩小表示在平面上的图形,它反映制图现象的空间分布、组合、联系及在时空方面的变化和发展。 窗口:是用户坐标系中的一个矩形区域。用户可以改变这个矩形的大小、或移动位置来选择所要观察的图形。窗口就象照相机的取景框,当我们瞄准不同的地方,就选取了不同的景物。离景物越远框内包括的景物越多而成像就小;当我们靠近它,所包括的景物越少,成像越大。利用窗口技术,我们可以有选择的考察图形的某一部分,观察图形的细致部分或全局。 视区

3、:是设备坐标系中的矩形区域,它是图形在设备上的显示区。可视区是在一定高程和一个或多个视点内,通过计算所得到的一个或多个视点的可见区域。 图层:用户按照一定的需要或标准把某些相关的物体组合在一起,我们称之为图层。如地图中水系构成一个图层,铁路构成一个图层等。我们可以把一个图层理解为一张透明薄膜,每一层上的物体在同一张薄膜上。一张图就是由若干层薄膜叠置而成的,图形分层有利于提高检索和显示速度。 靶区:是屏幕上用来捕获被编辑物体(图形)的矩形区域,它由用户在屏幕上形成。控制点:控制点是指已知平面位置和地表1 工作区介绍 工作区是MAPGIS提出的一个概念,简单的说,工作区就是一个数据池,存放实体的空

4、间数据、拓扑数据、图形数据和属性数据,每个工作区对应一个MAPGIS数据文件。MAPGIS开发函数库提供对工作区实施操作的一系列函数,如将工作区中的内容存盘,从盘上将数据装入工作区,对工作区中的内容进行添加、修改、删除、检索等等。对硬盘数据的存取及虚拟内存的管理等等复杂繁琐的工作无需应用程序的编程者去关心,而是有MAPGIS工作区管理模块自动完成。因此,深入了解工作区的逻辑结构和工作区操作函数的使用,是进行成功的二次开发的关键。2 工作区操作函数 MAPGIS的空间数据和属性数据的读写操作都是在工作区的基础上进行的,工作区是应用程序和数据文件的桥梁,他保证了数据的一致性、完整性。 工作区操作流

5、程 1)初始化工作区实例(_InitWorkArea)可循环执行2-5步 2)打开工作区(点,线,区,网,表)(_OpenArea) 3)装文件至工作区(_LoadFile) 4).实体(图形,属性)操作,表格操作. 5)关闭打开的工作区(_CloseArea) 6)释放工作区实例(_FreeWorkArea)工作区实例是MAPGIS为了便于管理工作区而定义的句柄。MAPGIS应用程序在结束之前,必须调用_CloseAllArea函数或者_FreeWorkArea函数,以便关闭所有工作区并且释放工作区实例。_CloseAllArea函数和_FreeWorkArea函数功能相同。C示范5-1:打

6、开点工作区,装入点文件: AREA_HINST AHInst;short AiPnt;AHInst = _InitWorkArea(NULL);AiPnt =_OpenArea(AHInst,PNT);If(_LoadFile(AiPnt) 0)./实体操作 /关闭工作区 if(_IsOpenArea(AiPnt) /如果工作区打开 _SetChangeFlag(AiPnt, 0); /如果工作区改变了,且不想保留更改的内容 _CloseArea(AiPnt); _FreeWorkArea(AHInst);3 工作区函数1)AREA_HINST _InitWorkArea(HINSTANCE

7、hInst);/初始化工作区实例2)int _FreeWorkArea(AREA_HINST ahInst);/释放工作区实例3)short _OpenArea(AREA_HINST,short type);/打开某种类型的工作区4)int _CloseArea(short ai);/关闭指定的工作区5)short _LoadAFile(char * datName,short ai);/将某个文件装入指定的工作区,datName为文件名指针,必须带路径short _LoadFile(short ai);6)char _GetAreaType(short ai); /取工作区文件类型7)sho

8、rt _IsAreaEmpty(short ai); /指定的工作区是否为空8)short _IsOpenArea(short ai); /指定的工作区是否已经打开9)short _GetAreaNumber(AREA_HINST ahInst); /获取打开的工作区数10)short _GetFirstAreaNo(AREA_HINST ahInst);/取属于ahInst实例的第一个工作区号。11)short _GetNextAReaNo(AREA_HINST ahInst);/取属于ahInst实例的下一个工作区号。12)short _SetPackFlag(short ai,short

9、 flag);/设置数据压缩标志,flag=0/1:不压/压缩13)short _SetChangeFlag(short ai,char chg);/设工作区改变标志14)short _SaveFile(short ai,short ver=VERSION); /将工作区内容存入文件_SaveAFile /将工作区内容存入指定文件注意:版本号ver只能取VERSION50或VERSION60。 C示范5-2:读取属于AREA_HINST实例的所有工作区(假设工作区已经打开)short i,ai,an; an = _GetAreaNumber(AHInst); ai = _GetFirstAre

10、aNo(AHInst); for(i = 0; i 0表示实体号,否则表示失败。 C示范5-3:将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,i,&lxy,&len,&linf) = 0) continue; /处理线实体代码if(linf.lclr=1) linf.lclr=5; _UpdateLinInfo(ai,i,&linf);C示范5-

11、4:取ai工作区中的所有点,并进行处理 long i,pntN; short len; PNT_INFO inf; D_DOT xy; char *dat;_GetPntNum(ai,&pntN); /取点数for(i=1;ipntN;i+)if(_GetPnt(ai,i,&xy,&dat,&inf)=0)switch(inf.type) case PNT_NOTE: break; /处理字符串 case PNT_SUB: /处理子图 case PNT_CIR: /处理圆 case PNT_ARC: /处理弧 case PNT_IMAGE: /处理图象case PNT_TEXT: /处理文本

12、default:C示范5-5:添加一个字符串类型的点,坐标为(500,500),内容为“中地公司”,颜色为红色,字高宽均为10, dat64;xy.x=500;xy.y=500;lstrcpy(dat,”中地公司”);memset(&inf,0,sizeof(PNT_INFO);inf.type=PNT_NOTE;inf.info.ch.height=10;inf.info.ch.width=10;inf.iclr=6;_AppendPnt(ai,&xy,dat,lstrlen(dat),&inf);C示范5-6:添加一条折线,颜色为绿色,坐标点为(20,50),(100,200),(200,

13、200);LIN_INFO inf;D_DOT xy3;xy0.x=20; xy0.y=50;一、显示输出的基本概念 1. 逻辑坐标、设备坐标、窗口坐标、屏幕坐标 逻辑坐标:又称图形坐标或用户坐标,是用户处理自己的图形实际所采用的坐标系。例如:用户自定义坐标、大地坐标、地理坐标。设备坐标:是图形设备的坐标系。数字化仪,该设备的坐标原点一般在中心;笔式绘图仪,该设备通常以步距为单位,以中心或某一角为原点。在MAPGIS二次开发中,应用程序窗口也是一种设备,它的设备坐标称为窗口设备坐标,它把某窗口的客户区当作将要绘图的设备,该坐标系以窗口客户区左下角为原点,右手坐标系。窗口坐标:原点在指定窗口客户

14、区左上角的坐标,以象素为单位,左手坐标系。屏幕坐标:原点在屏幕左上角的坐标,以象素为单位,左手坐标系。2. HDC、MyDCDC、HDC:熟悉Windows编程的人,对DC、HDC的概念一定不会陌生。设备描述表(DC)不仅描述了设备对象、设备对象的属性以及图形显示模式;同时,还指向了一个实际的物理输出设备,包括设备名称、设备驱动程序以及其他一些信息。实际用GDI函数进行编程时,我们经常使用的是一个指向DC的句柄HDC。利用HDC,我们就可以避开千变万化的外部输出设备,以一种透明、简便的方式实现对图形设备的控制,最终达到我们所要实现的目的。在开始绘图前,如果您调用Windows API绘图函数,

15、首先需获取当前绘图窗口的HDC。绘图结束后应释放该HDC。MyDC:显示对象,有时候也称显示设备句柄,类似于Windows中的HDC, 是MAPGIS引入的一个新概念。在显示对象中集成了Windows的DC和MAPGIS基本显示处理的函数。MAPGIS的所有显示函数都是针对某一个显示对象的,即所有显示都显示在这个对象所联系的窗口上。每个窗口都对应不同的显示对象,都可以设置不同的图形模式和显示参数。在开始绘图前,如果您使用MAPGIS API绘图函数,首先需调用_GetMyDC获取当前绘图窗口的MyDC。绘图结束后应调用_DeleteMyDC释放该MyDC。3. 显示模式、显示参数、显示范围显示

16、模式:MAPGIS的显示模式概念与Windows的显示模式概念类似。显示模式将决定最终的显示效果。函数_SetMyDCMode将显示对象设置为多边形交错填充模式、设备左下角为原点、右手坐标系。显示参数:定义了视口原点坐标,x、y方向的缩放比例,显示角度等信息。通过对显示参数的设置,可实现地图的移动、放大、缩小等操作。函数_SetDispParam实现显示参数的设置。函数_GetDispParam实现显示参数的读取。显示范围:显示对象所显示的地图的范围。函数_SetDispRect实现显示范围的设置。函数_GetDispRect实现显示范围的读取。4. 还原显示、坐标点显示还原显示:还原显示状态

17、下,显示图元的函数按模拟输出的标准显示,所用的线型、图案等都显示出来,在这个状态下显示速度较慢;在非还原显示状态下,线型、图案等信息都不显示,汉字显示等函数也作了简化处理,故显示速度较快。可用_SetOriginalDisp函数来设置还原显示或非还原显示状态。坐标点显示:在坐标点显示状态下,显示图元的函数在图元的坐标点处显示一个小的红十字,在编辑时可作为参考。可用_SetCoordPntDisp函数来设置坐标点显示或非坐标点显示状态。5. 调色板、笔、刷子调色板:MAPGIS有一套自己的调色板,该调色板是针对地图着色而设计的。调用_SetMyDCPalette函数可以将原来的Windows逻辑

18、调色板替换为MAPGIS调色板。笔:定义了画笔的颜色、笔宽、模式等信息。使用前,需用_SetPen函数来定义画笔;使用结束,应用函数_CleanPen来清除画笔。画线、画圆、画弧、显示字符串等函数多用到画笔。刷子:定义了刷子的颜色、填充图案、笔宽、模式等信息。使用前,需用_SetBrush函数来定义刷子;使用结束,应用函数_CleanBrush来清除刷子。与画笔不同的是,刷子多用于与填充有关的函数。二、图形显示输出的过程在开始绘图或显示图形前,首先需获得图形显示设备句柄(HDC)或显示对象句柄(MyDC)。如果您调用Windows API绘图函数,则需获取当前绘图窗口的HDC,如果您使用MAP

19、GIS API绘图函数,则需获取当前绘图窗口的MyDC。获得了显示设备句柄后,可以设置不同的图形模式和显示参数,接着可以开始绘图或进行图形显示了。在使用画笔绘图时,您需要设置画笔的颜色、笔宽、模式等。在使用刷子填充区域时,您同样需要设置刷子的颜色、填充图案、笔宽、模式等。在绘图完毕,需要将设置的画笔和刷子清除掉。在此过程中可能会涉及各类坐标之间的转换。三、图形显示输出基本函数 本章所有函数为MAPGIS API函数,函数头文件为map_out.h。设备设置函数:MyDC _GetMyDC(HWND hwnd,PAINTSTRUCT *lpps=NULL); /显示对象句柄的获取void _De

20、leteMyDC(MyDC mdc); /删除显示对象句柄void _SetMyDCMode(MyDC mdc); /设置显示对象图形模式void _SetMyDCPalette(MyDC mdc); /设置设备调色板short _SetDispParam(MyDC mdc,double fx0,double fy0,double fScalex,double fScaley = 0,double fAngle = 0); /设置显示参数short _GetDispParam(MyDC mdc,double *pfx0,double *pfy0,double *pfScalex,double

21、*pfScaley= NULL,double *pfAngle=NULL); /获取显示参数short _SetDispRect(MyDC mdc,D_RECT frc); /设置显示范围short _GetDispRect(MyDC mdc,D_RECT *frc); /获取显示范围/*设置特殊显示状态*/short _SetOriginalDisp(MyDC mdc,short Origif); /设置还原显示状态short _SetCoordPntDisp(MyDC mdc,short sCoord); /设置坐标点显示状态short _SetMessageDisp(MyDC mdc,s

22、hort Dispif); /设置错误信息提示状态/*颜色锁定和解除*/void _LockColor(MyDC mdc,COLORREF col); /颜色锁定void _UnLockColor(MyDC mdc); /颜色锁定解除short _GetLockState(MyDC mdc);/取颜色锁定状态/*绘图工具设置*/void _SetPen(MyDC mdc,int penno,int color);void _CleanPen(MyDC mdc);void _SetBrush(MyDC mdc,long bcol, short pno=0, double phei=1,long

23、pcol=0);void _CleanBrush(MyDC mdc);void _SetPenColor(MyDC mdc, COLORREF clr);void _CleanPenColor(MyDC mdc);int _SetPenMode(MyDC mdc,int nMode); _GetPenMode(MyDC mdc);/*逻辑坐标(或图形坐标)与设备坐标互换*/void _LpToDp(MyDC mdc,D_DOT *pdP);void _DpToLp(MyDC mdc,double *pfx,double *pfy);显示、输出整个工作区:short _DispPntArea(MyDC mdc,short ai,short layon=0);short _DispLinArea(MyDC mdc,short ai,short layon=0);short _DispRegArea(MyDC mdc,short ai,short layon=0);在用户坐标系下显示输出实体:sh

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1