会员注册 | 登录 | 微信快捷登录 支付宝快捷登录 QQ登录 微博登录 | 帮助中心 人人文库renrendoc.com美如初恋!
站内搜索 百度文库

热门搜索: 直缝焊接机 矿井提升机 循环球式转向器图纸 机器人手爪发展史 管道机器人dwg 动平衡试验台设计

VC++开发GIS项目程序.docVC++开发GIS项目程序.doc -- 5 元

宽屏显示 收藏 分享

页面加载中... ... 广告 0 秒后退出

资源预览需要最新版本的Flash Player支持。
您尚未安装或版本过低,建议您

武汉科技学院2005届毕业设计论文11实现图形系统的文档和视图1.1组织矢量图形系统的图形元素类城市的信息化为城市GIS发展带来了机遇。实际上,城市信息化表现为政府管理与决策的信息化(数字政府),企业管理、决策与服务的信息化(数字企业),市民生活的信息化(数字城市生活),即数字城市。由此可见,城市GIS是数字城市最核心的部分,可以分为政府GIS、企业GIS和社会GIS。数字城市的发展,要求政府、企业和社会GIS通过数据通信网络将政府、企业和社会联成一个整体,实现资源的共享。历史给了我们中国人特殊的超越他人的机遇。美国人、加拿大人、西欧人在通讯基础设施,政府、企业信息系统建设,信息系统互联互通,以及网络社会、网络社区四个阶段循序渐进的发展中占尽先机。但是当时的3维GIS技术、VR技术、4D数据融合集成技术、GIS三维表现技术都没有像今天这样成熟和廉价。访遍美国、西欧、加拿大、澳洲的城市政府网站,基于4D数据、三维表现、借助虚拟现实技术的凤毛麟角。时间和市场为我们创造了超越的重大历史机会。这个机会就是数字城市中三维和VR技术的开发和应用。抓住机遇,我国的数字城市将大放异彩。我们认为中国的数字城市特色应该定位在建设具有4D数据的城市基础地理信息公共平台建设以3维和VR技术为主的城市规划、建设和管理业务专业应用系统。集中抢占数字城市43VR的技术应用战略制高点,形成中国数字城市43VR的特色,开拓中国数字城市独特的市场空间10。面向对象的程序设计,是目前程序设计的主流方法,在本设计中,将利用面向对象的程序设计和C类的组织方法,组织建立一个基本矢量图形的图形元素类。组织实现的矢量图形系统,能够处理点类、线类、面类、网络点等类别的图形元素,其中点类图形元素有包括直线,圆,圆弧,子图,标注文本等图形元素,针对每类图形元素组织建立起对其进行管理的C类,并把每个图形元素作为一个独立的对象来管理。1.1.1图形元素基类的组织对各类图形元素进行分析,可以发现各类图形元素具有一些相同的属性和操作功能,如图形元素的颜色、线型线宽所在层等属性和得到一个图形元素是否做了删除标志等操作。把这些图形元素中共性的东西(属性和操作),组织存放在一个图形元素基类CDraw中,具体的图形元素由这个基类来派生。1.1.2点类图形元素组织5对于点类图形元素,其基本特性是各个图形相互独立,且每个图形元素具有有限个固定的特征点。直线的基类是CDraw.,在直线类的构造函数中,共有包括11个参数,并利武汉科技学院2005届毕业设计论文2用前7个参数调用基类CDraw的构造函数,对基类的成员变量进行初始化,而在本身的构造函数中对直线类CLine自身的四个参数(直线的起点和终点)进行了初始化。对圆类的创建方法与直线类CLine类似,圆除了具有图形元素的基本特征外,还有自身的几何特性,可以用圆心和半径作为特征参数表示圆的几何特性。圆是圆弧的一个特例,当圆弧的弧度等于2时就是圆。所以可以从一个圆类派生得到一个圆弧类。矢量图形中可以有大量的标注文本,标注文本除了具有图形元素的基本特性外,还具有位置、字体及标注内容等自身的信息。CText类也有两个构造函数,第二个构造参数有多个参数,并利用多个参数对类的成员变量进行初始化。在构造函数中,调用了基类CDraw的构造函数对基类CDraw的成员变量进行初始化。子图是各类图形元素的集合体,是由多个图形元素组成的整体。为了在图形中插入子图,必须首先建立起管理子图所包含的图形元素的类,形成一个子图定义体,将选定的子图块以一定的横纵比例插入到图形中指定的位置,就形成了一个子图块。1.1.3线类图形元素组织线类图形元素包括很多种,如连续直线、混合线、树状线等,在本设计中,以最简单的连续直线为例进行讨论,对于其他类型线的实现方法,可根据连续直线的实现方法来开发。连续直线除了具有图形元素基类所具有的属性外,从图形的几何特征上,连续直线是由很多顶点组成的,而且顶点数目是不确定的。一条连续直线可能只有两个顶点,也可能有几千个顶点。所以,需要定义一个结构来存储连续直线的一个顶点坐标。1.1.4面类图形元素的组织10面类图形元素一般是由闭合线围成的区域。根据围成面的边界不同,有不同形式的面,如圆形区域椭圆形区域复合线区域多边形区域等。最常用的面是多边形区域,其边界由一条连续直线组成。因为另外各种类型面的边界一般都可以用连续直线来近似描述,所以,本设计只讨论多边形区域的实现方法。在描述多边形区域时,最主要的是要描述边界顶点坐标。描述面的边界顶点坐标时,有不同的描述方法,一种方法是将边界由几段连续直线来描述。另外一种描述方法是直接存储区域的边界顶点坐标,即把区域的整个边界作为一条连续直线来存储。这种方法的缺点是造成坐标的重复存储优点是具有较强的独立性,不用考虑组成区域的连续直线段。在本设计中,采用直接存储边界坐标的方式。用这种方式组织多边形区域时,组织方式与连续直线类似。所以,可以由连续直线类CPline派生出一个CPlineRgn类,来对多边形区域进行管理。1.1.5网络类图形元素的组织网络分析是GIS的一项非常重要的基本功能,最佳路径分析、最佳游历路径分析、连通分析、资源分配等都需要有网络类图形元素对网络进行描述、显示和分析。为了能够对网络进行描述和处理,在系统中增加一类图形元素来描述有方向、无转角的网络图。这类图形元素称为网络点。武汉科技学院2005届毕业设计论文31.1.6图形参数类在矢量图形系统中,图形参数是集中存储的。在图形元素基类中成员变量m_ColorPen,m_ColorBrush等存储的是颜色列表的序列号,m_Layer中存储的也是在图层列表中的序列号。1.2组织矢量图形系统的文档1.2.1组织面向对象的文档管理机制管理矢量图形系统图形数据的方法即文档管理机制。在本设计的开发中,采用一套完全面向对象的文档组织机制。这种机制就是通过图形元素类创建很多图形元素对象,每个图形元素对象作为一个整体来组织存储空间的分配、存取等各种管理功能。然后通过建立一种存储机制,来管理指向所有图形元素对象的指针,达到管理所有图形元素对象的目的。这种文档管理机制具有组织简单结构化和移植性好,以及比较容易利用VC程序设计语言的开发功能等优点。缺点是需要较大的内存空间。1.2.2利用MFC摸板创建管理图形元素对象指针的对象管理一个矢量图形系统文档的思路是每个图形元素是图形元素类创建的一个对象,在创建这个对象时得到指向这个对象的指针,建立一个对象指针数组来管理这些指针,以达到管理所有图形元素对象的目的。在VC下可以较容易地实现对指向图形元素对象的指针的组织和管理。在MFC中有一个类模班CTypedPtrArray,可以用它来创建一个管理类指针的对象。例如,可以定义一个管理CLine类指针的对象如下CTypedPtrArraym_LineArray101.2.3实现矢量图形系统的文档在应用程序Draw中,可以派生几个CObArray对象来分别管理基类图形元素。在文档类CDrawDoc中创建几个管理各类图形元素对象指针的CObArray对象如下privateCTypedPtrArraym_LineArrayCTypedPtrArraym_CircleArrayCTypedPtrArraym_ArcArrayCTypedPtrArraym_TextArrayCTypedPtrArraym_TagArrayCTypedPtrArraym_PLineArrayCTypedPtrArraym_PLineRgnArrayCTypedPtrArraym_NetArray1.2.4实现文档的管理功能⑴增加图形元素在应用程序Draw中增加一个图形元素对象(如一条直线)时,需要进行以下两个步骤的操作武汉科技学院2005届毕业设计论文4①首先需要创建一个图形元素对象,并用图形元素的实际数据初始化这个图形元素对象。如增加一条直线时,需要创建一个CLine对象,并用这条直线的实际数据(起终点、所在图层、颜色等)初始化这个CLine对象的成员变量。②然后需要把指向新创建的图形元素对象的指针,增加到文档类中管理图形元素对象指针的对象中。如增加一条CLine对象后,需要把指向这个CLine对象的指针增加到文档类的m_LineArray对象中。为了实现增加各类图形元素的功能,在文档类CDrawDoc中定义几个函数,分别来完成增加各类图形元素的操作功能3CLineAddLineshortColorPen,shortColorBrush,floatLineWide,shortLineType,shortLayer,intid_only,floatX1,floatY1,floatX2,floatY2CCircleAddCircleshortColorPen,shortColorBrush,floatLineWide,shortLineType,shortLayer,intid_only,floatCircleX,floatCircleY,floatCircleR,BOOLbFillCArcAddArcshortColorPen,shortColorBrush,floatLineWide,shortLineType,shortLayer,intid_only,floatCircleX,floatCircleY,floatCircleR,floatAngle1,floatAngle2CTextAddTextshortColorPen,shortColorBrush,floatLineWide,shortLineType,shortLayer,intid_only,floatStartX,floatStartY,floatAngle1,floatAngle2,floatTextHeight,floatTextWide,floatOffWide,unsignedcharTextFont,intTextLong,CStringTextCTagAddTagshortColorPen,intLayer,floatxInsert,floatyInsert,floatxScale,floatyScale,floatangle,intonly_id,intidBlockCPlineAddPLineshortColorPen,shortColorBrush,floatLineWide,shortLineType,shortLayer,intid_only,intNumble,PointStructPointListCPlineRgnAddPLineRgnshortColorPen,shortColorBrush,floatLineWide,shortLineType,shortLayer,intid_only,intNumble,PointStructPointList,BOOLbTransparent,BOOLbFillCLinkNetAddNetPointfloatx,floaty,floatrRadiu,shortLayer,intid_only,shortColorPen这8个函数分别用来实现增加一条直线、一个圆、一个圆弧、一个标注文本、一个子图、一条连续直线、一个多边形区域、一个网络点的功能。函数返回指向新增图形元素对象的指针。⑵得到指向图形元素对象的指针在一个矢量图形系统中,有大量的图形元素,指向图形元素对象的指针被保存在文档类对应的CObArray对象中。在系统的操作过程中,为了实现对图形元素的各种操作功能,需要得到指向指定图形元素对象的指针,为此,在文档类CDrawDoc中定义一个函数GetGraph如下PublicCDrawGetGraphshortLb,intindex在实现文件drawdoc.cpp中,加入函数的具体实现代码。⑶删除图形元素对象为了能够从CObArray对象中删除一个指定图形元素对象指针,在文档类CDrawDoc中定义一个成员函数Public
编号:201311181310410931    大小:215.00KB    格式:DOC    上传时间:2013-11-18
  【编辑】
5
关 键 词:
专业文献 学术论文 精品文档 VC++开发
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

当前资源信息

4.0
 
(2人评价)
浏览:21次
网游小王子上传于2013-11-18

官方联系方式

客服手机:13961746681   
2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   

相关资源

相关资源

相关搜索

专业文献   学术论文   精品文档   VC++开发  
关于我们 - 网站声明 - 网站地图 - 友情链接 - 网站客服客服 - 联系我们
copyright@ 2015-2017 人人文库网网站版权所有
苏ICP备12009002号-5