2853.基于MapX的图形编辑工具包的设计【分析代码+开题报告+毕业论文】.doc

上传人:laozhun 文档编号:3930211 上传时间:2023-03-28 格式:DOC 页数:45 大小:556KB
返回 下载 相关 举报
2853.基于MapX的图形编辑工具包的设计【分析代码+开题报告+毕业论文】.doc_第1页
第1页 / 共45页
2853.基于MapX的图形编辑工具包的设计【分析代码+开题报告+毕业论文】.doc_第2页
第2页 / 共45页
2853.基于MapX的图形编辑工具包的设计【分析代码+开题报告+毕业论文】.doc_第3页
第3页 / 共45页
2853.基于MapX的图形编辑工具包的设计【分析代码+开题报告+毕业论文】.doc_第4页
第4页 / 共45页
2853.基于MapX的图形编辑工具包的设计【分析代码+开题报告+毕业论文】.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《2853.基于MapX的图形编辑工具包的设计【分析代码+开题报告+毕业论文】.doc》由会员分享,可在线阅读,更多相关《2853.基于MapX的图形编辑工具包的设计【分析代码+开题报告+毕业论文】.doc(45页珍藏版)》请在三一办公上搜索。

1、开 题 报 告源代码联系本人毕业设计题目:基于MapX的图形编辑工具包的设计学院: 信息工程学院专业:地理信息系统学号: 姓名: 指导老师: 一、 目的和意义 图形编辑在地理信息系统中一直占据着重要的地位。通过数字化和矢量化操作,点、线类数据及区域边界等开始进入系统,由于系统和人工的因素造成了一定的误差,因此,编辑过程是必不可少的步骤,它能辅助提高绘图精度,协助快速利用计算机提供的丰富的色彩和多样化的图示技术,寻求图形的最佳表现形式,有利于空间数据的表达,分析和利用,更好的提供空间决策支持。 然而,图形编辑模块也是地理信息系统中所含功能最琐碎的部件, 现有的GIS软件由于各有所侧重,在图形编辑

2、功能中多多少少都存在些不足或不方便使用的地方。例如: ArcMap的符号功能不够完善,当对管线加注方向是常常无法正确放置箭头符号的位置,给用户带来很大的不便。 随着计算机技术、计算机图形学、地理信息系统等多门学科的发展,图形编辑技术得到极大的发展。一个较好的图形编辑软件,不仅要功能强大,而且要使用方便。只有不断的对现有的图形编辑功能进行拓展和完善,才能满足广大用户日益增加的需求。因此,本课题的研究目的也就是要对现有的编辑功能中的不足之处进行优化设计,以达到功能的完善,寻求一种更方便于用户使用的编辑方法,来提高图形编辑的效率。二、 国内外现状及本课题主攻方向 随着计算机硬件技术和图形图像学的不断

3、发展,图形编辑的理论与技术已发展到比较成熟的阶段,出现了许许多多与数字地图制图及图形编辑相关的软件产品,例如, 通用图形类软件: CorleDraw, FreeHand, Illustrator,PhotoShop;基础制图类软件: AutoCAD, MAPGIS, MicroStation, 方正智绘;GIS类软件:ARC/INFO, MapInfo。但是,这些软件的编辑功能或多或少的存在功能不够完善或使用不方便的地方。以MapInfo为例, MapInfo中的图形编辑功能多为单命令单操作的形式,用户常常需要通过多个命令的组合来完成某项图形编辑的任务。例如,用户要擦除对象或对象的一部分,需要

4、执行以下的命令:首先,在“地图”菜单栏中选中“图层控制”,设置对象所在图层为可编辑;然后,选择要被擦除的对象,并在“对象”栏中选择“设置目标”,设置要被擦除的目标;再然后,创建并选择擦除对象;最后,选择“对象”栏中的“擦除”命令,至此完成擦除操作。可见,一项擦除操作需要用到“图层设置”、“对象选择”、“目标设置”、“对象创建”、“擦除”一系列的命令来完成,对于初学者和没有GIS专业知识的用户来说是不易掌握的。因此,本课题的主攻方向是进行图形编辑工包的设计与实现,完成图形编辑的基本功能,并寻求一种更方便于用户使用的编辑方法,来提高图形编辑的效率。三、主要研究内容、途径及技术路线 1)主要研究内容

5、:首先是图形编辑内容和方法的研究,图形编辑的内容如下:1、图形变换:放大、缩小、平移,全图及居中显示;2、图形编辑:删除、增加、移动、拷贝;3、图形整饰:线形、颜色、符号、注记;4、拓扑关系:节点匹配、组合目标、拓扑检验。然后,以面向对象的思想为指导,以Visual Basic语言作为开发平台,在MapX的基础上进行图形编辑工具包的设计与软件开发。使得工具包的内容应便于以后开发软件时进行自由的功能组合与取舍。2)途径: 1、基于MapX的面向对向的方法在地理信息系统中面向对象的方法以呈点状分布的、呈线状分布的、呈面状分布的和呈体状分布的四种几何类型来抽象观察和描述地理现象。在进行二维的矢量表达

6、时,地理现象又被进一步抽象为点状图形、线状图形和面状图形。所有点状、线状和面状图形构成了GIS图形编辑的问题空间。MapX是美国MapInfo公司推出的一种基于OLE技术的嵌入式GIS组件,其基本组成单元是Object(单个对象)与Collection(集合)。其中集合包括对象,是多个对象的组合。每种对象集合负责处理地图某一方面的功能。它是一种功能强大的地图控件,利用它可以很容易地在用户应用程序中嵌入各种地图功能;并且可以使用VB,VC+等面向对象语言对其进行编程控制。确定图形编辑的功能体系技术路线:确定图形编辑工具包所具有的功能模块及个模块之间的关系图形编辑工具包的框架及界面设计用VB 和M

7、apX实现编辑功能功能的完善工具包的测试和应用 不满意 满意 成型的图形编辑工具包 四、研究的主要阶段和进度 1、2006学年第二学期1至3周完成论文的开题工作,明确所要研究的内容及需要搜集的资料,对用户进行调查,明确课题的内容及目的。 2、第4至13周完成研究工作,其中第4周学习相关GIS软件的编辑功能,第5至13周完成工具包的研究与开发工作。3、第14周完成论文的写作;4、第15周论文答辩。五、查阅的主要文献资料包括:1 王瑞明,MapInfo5.X使用指南。北京:中国铁道出版社,2001.2 齐锐,屈韶林,用MapX开发地理信息系统。北京:清华大学出版社,2003.3 李玉祥,王红,用面

8、向对象方法研制图形编辑软件。测绘科学2004(1).4 MapinfoCorporation,Mapin ProfessionalUser,sGuide5肖计划,数字地图图形编辑系统的面向对象设计与实现,解放军信息工程大学,2003.6Kris Jamsa,Lars Klander .Visual Basic 程序设计技巧1001例,高仁忠,徐瀚伟等译,电子工业出版社,1999.7Deborah Kurata,Visual Basica 6面向对象程序设计,人民邮电出版社,1999.8张保钢,图形编辑软件的优化设计,武汉测绘科技大学学报Vo1.20 No.2 June1995. 9 M. Vi

9、svalingam, Cartgraphy, GIS, and Maps in Perspective, The Cartgraphic Journal Vol 26 June 1993.10 陈荣清,徐琼,邹时林.MapInfo下线分割对象功能的实现J.电脑开发与应用2003(2).11刘光.地理信息系统二次开发教程M.2003.112童瑞华,利用MapX开发MapInfo,国防科技大学,2001 目 录摘 要第1章 引言11.1图形编辑工具包设计的研究背景11.2图形编辑工具包设计的研究目的及意义21.3图形编辑工具包设计的研究内容及技术路线21.4论文结构及内容安排3第2章 面向对象思想

10、及ActiveX技术42.1面向对象的概念及方法42.2 ActiveX技术特性62.3 MapX地图控件分析72.4 基于MapX的开发模式102.5 在VB中使用MapX控件11第3章 图形编辑工具包的设计与实现133.1图形编辑方法分析133.2图形编辑工具包的设计143.3图形编辑工具包的实现153.4图形编辑工具包界面介绍323.5实验结果分析34第4章 结论36参考文献37致 谢38摘 要图形编辑作为地理信息系统的重要组成部分,是利用空间数据进行空间分析、决策的基础,也是地理信息系统中功能最琐碎的部件之一。本系统以面向对象的思想作为指导,进行了地理信息系统图形编辑功能的设计,并以V

11、isual Basic语言作为开发平台,在MapX的基础上初步实现了绘图,选择,擦除,合并,求交,Undo等功能。关键字:图形编辑 , MapX , VB ,面向对象 Abstract As one of the important part of GIS,graphic editing is the basic of spacial analysis and decision-making with spacial datas.It is also one of the parts of GIS with the most trivial functions.This paper analy

12、zes and designs the objects of graphic editing in geographic information system based on object-oriented idea and simply achieving the function of drawing,selecting,erasing,combining,getting intersected part,and Undo functions based on VB and MapX.Key words: graphic editing ,MapX ,VB ,OOP第1章 引言1.1图形

13、编辑工具包设计的研究背景按照GIS对数据进行采集、加工、管理、分析和表达,可将GIS基础软件分为五大子系统即:1、数据输入与转换;2、图形与文本编辑;3、数据存储与管理;4、空间查询与空间分析;5、空间数据的可视化。15作为GIS基础软件的五大子系统之一,图形编辑子系统在地理信息系统中起着十分重要和必不可少的作用。一方面,地理信息系统的诸多功能都与数据离不开,通过数字化和矢量化操作,点、线类数据及区域边界等开始进入系统,由于系统和人工的因素造成了一定的误差,这时就需要对数据进行编辑,例如删除、增加、移动图元及属性数据的修改。另一方面,为了满足空间数据可视化的要求,需要修饰图形,设计线形、颜色、

14、符号、注记,图幅接边等,使得地理信息系统更准确、直观的表达空间信息,需要用到图形编辑功能。此外,在空间查询与分析过程中,需要建立拓扑关系,如结点匹配、目标组合、多边形建立等,为空间查询分析提供数据支持。有时还经常会用到图形变换如开窗、缩放、漫游来辅助空间查询与分析。综上所述,图形编辑功能可以说贯穿地理信息系统的数据输入、空间查询与分析、空间可视化全过程。由此可见,图形编辑在地理信息系统中起着十分重要的作用。随着计算机硬件技术和图形图像学的不断发展,图形编辑的理论与技术已发展到比较成熟的阶段,出现了许许多多与数字地图制图及图形编辑相关的软件产品,例如, 通用图形类软件: CorleDraw, F

15、reeHand, Illustrator,PhotoShop;基础制图类软件: AutoCAD, MAPGIS, MicroStation, 方正智绘;GIS类软件:ARC/INFO, MapInfo。5但是,这些软件的编辑功能或多或少的存在功能不够完善或使用不方便的地方。以MapInfo为例, MapInfo中的图形编辑功能多为单命令单操作的形式,用户常常需要通过多个命令的组合来完成某项图形编辑的任务。例如,用户要擦除对象或对象的一部分,需要执行以下的命令:首先,在“地图”菜单栏中选中“图层控制”,设置对象所在图层为可编辑;然后,选择要被擦除的对象,并在“对象”栏中选择“设置目标”,设置要被

16、擦除的目标;再然后,创建并选择擦除对象;最后,选择“对象”栏中的“擦除”命令,至此完成擦除操作。可见,一项擦除操作需要用到“图层设置”、“对象选择”、“目标设置”、“对象创建”、“擦除”一系列的命令来完成,对于初学者和没有GIS专业知识的用户来说是不易掌握的。因此,由图形编辑在地理信息系统中的重要性以及现有图形编辑软件存在的不足之处给用户的使用带来不便,作为地理信息系统的一个重要组成部分,图形编辑工具包的设计也就成了一个必不可少的研究内容。1.2图形编辑工具包设计的研究目的及意义图形编辑工具包是以图形方式可视化地编辑某些图形的应用系统或功能模块,它所操作的对象是某特定系统内的图元对象,更改其位

17、置、尺寸、形状等属性、符号制作、色彩选择、图层管理、各种各样的属性编辑修改工具以及任意区域的拓扑裁剪,能实现多种编辑操作,自定义符号库、线型库和填充图案库、以及图形的存储及打印等功能。现阶段,在图形编辑的理论与方法已发展的比较成熟的情况下,图形编辑工具包的设计的研究的目的就转为对现有的编辑功能中的不足之处进行优化设计,以达到功能的完善,寻求一种更方便于用户使用的编辑方法,来提高图形编辑的效率。1.3图形编辑工具包设计的研究内容及技术路线本课题的研究内容:首先是图形编辑内容和方法的研究,图形编辑的内容如下:1、图形变换:放大、缩小、平移,全图及居中显示;2、图形编辑:删除、增加、移动、拷贝;3、

18、图形整饰:线形、颜色、符号、注记;4、拓扑关系:节点匹配、组合目标、拓扑检验。然后,以面向对象的思想为指导,以Visual Basic语言作为开发平台,在MapX的基础上进行图形编辑工具包的设计与软件开发。确定图形编辑的功能体系技术路线: 确定图形编辑工具包所具有的功能模块及个模块之间的关系图形编辑工具包的框架及界面设计用VB 和MapX实现编辑功能功能的完善 不满意成型的图形编辑工具包 满意工具包的测试和应用1.4论文结构及内容安排第一章主要介绍本课题的研究背景、目的与意义,以及研究的内容和技术路线。第二章主要介绍了面向对象的概念和方法,ActiveX技术特性以及MapX地图控件。最后介绍了

19、基与MapX的开发模式。第三章介绍图形编辑工具包的功能的设计,每个功能的实现方法,以及实验的结果分析。第四章对该图形编辑工具包优缺点进行了总结。 第2章 面向对象思想及ActiveX技术2.1面向对象的概念及方法一、面向对象的概念面向对象, 概括地说, 就是把问题抽象为对象, 设置属性(数据) , 指定事件或处理方式(代码) 来达到目的, 强调从问题域的概念到软件程序和界面的直接映射。其涉及以下几个基本概念:1、 对象, 事物的抽象(即模型) , 对象可以被定义为一个封装了状态和行为的实体; 或者说是数据结构(或属性) 和操作。所有对象都是类的实例。2、 类, 是具有相同特点的对象的集合, 或

20、者说, 类是可用于产生对象的模板。3、 消息, 消息是对象通讯的方式, 也是获得功能的方式。对象收到发给它的消息后, 或者执行一个内部操作(有时成为方法或过程) , 或者再去调用其他对象的操作。二、面向对象的方法1、封装, 把数据结构同操作数据的过程(函数) 衔接在一起, 构成具有类的类型对象。对象具有明确的功能, 并有接口与其它对象相互调用。而对象的内部代码和数据是受保护的, 别的对象不能访问。这样, 每一个对象就象一个部件一样, 在任何可调用的程序中起作用, 而其功能不变。2、继承, 是面向对象编程的一个重要机制, 编程者可以在原有的类基础上建立新类, 实现了代码的重复利用, 提高开发效率

21、。类可以以一种层次结构来安排。在这个层次结构中, 子类可以从比它高的超类中继承得到状态和方法。3、多态性, 描述的是如下现象: 如果几个子类都重新定义了超类的某个函数(都用相同的函数名) , 当消息被发送到一个子类对象时, 在执行时该消息会由于子类确定的不同而被解释为不同的操作。一个给定的类可以从不止一个超类中继承, 称之为多继承。如果采用动态联编, 继承就导致了多态性。多态性具有灵活、抽象、行为共享、代码共享等优势。三、面向对象技术的优点1、面向对象技术导致软件重用,而软件重用又是快速软件开发和高质量软件设计的基础;2、面向对象软件更易于维护。因为面向对象的软件在体系结构上具有与生俱来的弱偶

22、合,这对于软件的修改带来了较少的负面影响;3、面向对象的软件系统具有很强的适应能力和可扩充性,在创建大系统时往往可以通过集成可重用的子系统来完成。OOP与结构化的程序设计比较起来,其最大的价值就在于应用的稳定性,应用的稳定性是这样定义的:如果在需求发生小规模的变更时不至引发对程序的大规模修改,我们就说应用的稳定性很高。OOP提供了类的封装,将复杂性屏蔽在类的内部,当需求发生大规模的变更时,可能只牵扯到一个或几个类中某些方法的,因此较之结构化的程序设计提供了更好的应用稳定性。四、VB的面向对象特性1、在类模块中定义类 类模块是VB中关键的面向对象特性。类模块包含对类的定义。你可以用变量和Prop

23、erty过程来定义属性,且用类模块中的Sub和Function过程实现行为。也可以在类模块中定义事件和常量以便完全地封装类的代码。2、用属性过程提供访问 属性过程为类中的私有属性提供公共接口。利用属性过程,可以设置和取得对象属性的植或者设置到一个对象的引用。3、定义多态方法 方法是类中的Sub和Function过程,他们提供对象行为的实现。你可以给这些过程起任何名称,然而,如果你对不同类的类似属性和方法使用相同的名称,便可以应用多态性。4、生成事件 除了属性和方法外,可以在类中定义事件。事件为组件之间的通信提供了一个简单的机制。例如,当窗体内容变化时,它可以通知另一个窗体,或者当一个异步过程完

24、成时,它可以提供通知。5、 封装类常量你不能在窗体或类模块中声明公共常量,但可以定义公共枚举,以提供命名的长整型常量的列表。对于公布可能由类产生错误的列表,以及为类属性和方法的参数或返回值提供指定常量代替幻数(magic number),这些常量是很重要的。6、创建对象 你可以从已经创建的类或者从任何ActiveX组件中创建对象。所创建对象的引用存储在一个对象变量中。然后,对象变量就可以用于设置对象的属性或检索调用对象的方法。7、 使用窗体作为对象提供给类的许多特性在窗体中同样可用。你可以给窗体模块中所定义的窗体类增加公共属性或方法。之后,从窗体类创建窗体对象,或者当窗体加载时,VB将为你创建

25、窗体对象。8、定义多接口 类的属性和方法定义它的默认接口。如果这个接口包含许多属性和方法,那么可以比较容易地把属性和方法(或因子)划分成功能逻辑组。每个功能组可定义为一个独立的接口,然后就可以使用特定功能组,这只需通过相关接口简单地访问对象即可。9、 用ActiveX组件公布对象ActiveX描述一组功能,是下一代基于组件的软件开发技术。你可以构对当前控件增加功能的AxtiveX控件,组合几个现有控件,或提供一种全新的风格。这些控件可应用在任何支持ActiveX控件(.OCX)的应用程序中。你也可以建立应用程序,它们把自己的对象公布给其他应用程序。这些是ActiveX EXE或者ActiveX

26、 DLL组件,也叫做ActiveX服务器。2.2 ActiveX技术特性ActiveX控件是一个软件组件,可以把它插入到许多不同的应用程序中,并把它当作应用程序自身的一部分来使用。ActiveX控件曾经被称为OLE2.0。OLE2.0是微软的技术,它把两个或者是更多的应用程序组合起来使他们像一个程序一样工作(或至少可以在同一个应用程序外壳中的不同应用程序之间进行切换)。这一思想是从原来的OLE(对象链接和嵌入) 技术发展而来的,不过最初的OLE仅仅允许把不同的应用程序创建的文档组合成一个单一的文档。当微软为了在分布式环境中使用而修改OLE技术的时候,决定同时修改它的名称。这样,ActiveX就

27、诞生了。 一、ActiveXActiveX是微软公司的构件技术标准,实际上是对象嵌入与链接(OLE)的新版本,使OLE接口加强了对数据和特性的管理,效率更高,而且更加便于进行Internet互操作。作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。同时,ActiveX技术也被用于方便地创建普通的桌面应用程序。二、ActiveX控件ActiveX控件是充分利用OLE和ActiveX技术的自定义控件,是基于与应用程序无关的思想而设计的,其目标是提供一种面向对象、与操作系统无关、与机器平台无关、可以在应用程序之间互相访问对象地机制。ActiveX控件

28、是建立在COM标准上的独立的软件元件,提供给用户应用接口,发送相应的事件,开发者则可以截取这些事件,执行相应的功能。ActiveX控件开发端和使用端是完全独立的,可以用Delphi, VB等各种语言来开发,又可以用于不同语言、不同开发平台、不同的系统环境中。ActiveX控件与VBX不同,VBX的标准是建立在16位段式结构的基础上,并不适用于32位环境。ActiveX控件可以在32位环境下提供与 VBX相类似的功能。一个或多个ActiveX控件会保存在一个动态链接库中,但它是一种特殊的动态链接库,其扩展名不是DLL而是OCX。 从本质上讲,ActiveX控件是一个ActiveX服务器,它能提供

29、所有的OLE功能和服务,包括可视化编辑、拖放和OLE Automation。与所有的ActiveX服务器一样,要使用ActiveX控件,必须先对ActiveX控件进行注册,应用程序通过注册后得到的类ID号找到控件的数据源进行访问。ActiveX控件可以由VB, VC, Delphi等开发工具生成OCX文件时自动进行注册,也可以手工注册,其实质都是通过运行应用程序Regsvr32.exe来实现。三、 ActiveX与ActiveX控件的区别ActiveX技术是OLE技术在Internet上的重定义,而ActiveX控件则是OLE控件在Internet上的扩展。ActiveX不等同于ActiveX

30、构件,从上面的介绍可知,ActiveX是一个很宽的技术家族的标识,而 ActiveX构件只是那个家族的一个特定技术。2.3 MapX地图控件分析MapX控件是MapInfo公司推出的具有强大的地图分析功能的ActiveX控件组件。由于它是一种标准的Windows平台的组件,因而可以支持大部分的Windows平台的开发环境,编程人员可以在开发环境中嵌入地图功能,并且可以脱离MapInfo的平台而与运行。利用MapX可以简单快速的在企业应用中嵌入地图化功能,增强企业应用的空间分析能力实现企业应用的增值。MapX采用MapInfo Professional相同的地图化技术,可以实现MapInfo P

31、rofessional具有的绝大部分地图的编辑和空间分析功能,而且MapX提供了各种工具,属性和方法,实现这些功能是非常容易的。本节主要介绍MapX的主要功能,MapX支持的外部数据及其空间数据结构以及地图对象图层集合概念等。一、 本课题所使用的MapX的主要功能1、MapInfo格式地图的显示MapX支持MapInfo的地图数据格式,可以显示该格式的地图数据以及内置的属性数据。2、对地图的随意浏览功能 MapX提供了方便的工具,使得用户可以对地图进行放大、缩小、漫游、选择等操作。3、图层控制通过MapX程序调整地图的显示缩放比例,用户可以自由地设置图层的显示范围,还可以使用和创建无缝地图图层

32、,以及动态图层、用户图层等。4、生成和编辑地图对象在利用MapX开发程序中,用户可以对地图图层、点、线、面图元,乃至样式、标注等进行随意编辑,并可以创建用户定制的图元等数据。5、工具使用MapX的标准工具或根据需要自己创建的自定义工具,用户可通过点击或拖拽对地图直接进行操作。6、选择可在地图上拖动鼠标以在圆、矩形或特定的点上选择一个或多个对象或记录以供分析。7、投影与坐标系 MapX允许用户调整地图的显示、用本地坐标系处理X-Y坐标数据。8、自动和动态注释MapX提供了地图的注释显示功能,包括自动或者用户以交互的方式向地图填加的文本、符号和标注信息。这使得地图便于查阅和理解。二、MapX的空间

33、数据结构MapX的空间数据结构是基于空间实体和空间索引相结合的。如图2-1所示。空间实体是地理图形的抽象模型,主要包括点、线、面三种类型。任何点、线、面实体都可以用直角坐标点x,y来表示。点可以表示成一组坐标(x,y),对于线和面,则均被表示成多组坐标(x1,y1;x2,y2;xn,yn)。空间索引是查询空间实体的一种机制,通过空间索引,能够以尽量快的速度查询到给定坐标范围内的空间实体及其所对应的数据。同时,就像MapInfo数据一样,MapX的空间数据结构也是分层存放的。用户可以通过图形分层技术,根据自己的需求或一定的标准对各种空间实体进行分层组合,将一张地图分成不同图层。采用这种分层存放的

34、结构,可以提高图形的搜索速度,便于调用、更新和管理。综合地图图层1图层1图层2空间实体对应的空间数据表对应的空间数据表 图2.1 MapX空间数据结构三、MapX的对象模型结构MapX的对象是分层的树状结构。位于最顶层的是Map对象,每一个MapX的对象、属性和方法都从Map对象派生而来。同时,每一个在Map对象下的属性和方法都对生成的整个Map对象有影响。MapX的基本组成单元是Object(单个对象)和Collection(集合)。其中集合包括对象,是多个对象的组合。MapX主要包括以下对象:1、Map Map是MapX的顶层属性,每个Map对象主要包括数据集对象Datasets、图层对象

35、Layers、注释对象Annotations三个对象集合。 Map对象包括一些主要的属性,如Zoom用来设置放大级别(在地图上显示的大小),Rotation控制地图的旋转角度,CenterX和CenterY用于设置地图显示窗口的中心坐标。2、Layers 在MapX中,地理信息按照图层的集合(Layers Collection)表示,每张单独的地图都被表示成单独的图层,所有的图层存储在Layers集合中。Layer对象由Features对象组成,Features对象又是由Feature对象组成,Feature对应于地图中的点、线、面以及符号等地图实体。3、GeoSets GeoSets是在Ge

36、oManager中建立的.GST文件,类似MapInfo中的WorkSpace概念,是图层及其设置的集合,用于控制程序中显示的地图。4、Datasets 在MapX中,属性数据的操作主要通过数据绑定实现,Datasets用于实现地图与数据的绑定。数据绑定的数据源可以是DAO、ADO、ODBC数据源、RDO、MapInfo Table文件,还可以是一个规定了格式的文本文件。要绑定一个数据源,首先要指定所绑定的图层,然后需要指定与图层中地图对象相匹配的关键字段。5、Annotations Annotations集合提供了操纵地图中文字和符号的简单方法。Annotations位于所有其它图层的上方并

37、且不与任何数据连接。四、本课题所使用的MapX可以激发的事件 1、AddFeatureToolUsed事件当用户使用标准对象创建工具(miAddPointTool , miAddLineTool、miAddPolylineTool或miAddRegionTool)中的一个时调用该事件。该事件的行为类似于PolyToolUsed事件。2、SelectionChanged事件当选择结果更改时触发本事件,使容器能够在地图上与选择结果发生作用。使用选择工具或使用Layer对象的某一Selection方法可以将选择结果更改为用户结果。3、MapViewChanged事件当更改(地图)一段显示距离或地图中

38、心点移动时调用该事件。4、PolyToolUsed事件当用户使用标准miPolygonSelectTool工具,或是miToolTypePoly类型的自定义工具来绘制折线或多边形时,激活此事件。5、ToolUsed事件当用户在地图上使用自定义工具时,调用ToolUsed事件。此过程使您可以决定如何使用工具;例如,它会告知用户点击处的地图坐标。在ToolUsed过程内部,可以编写代码支持工具的内部功能。当使用标准工具时,也将调用此事件,在这种情况下,事件调用在用户交互操作之后,但在标准工具执行操作之前。6、MouseDown、MouseMove、MouseUp事件 当鼠标在地图上移动、按下鼠标左

39、键、放开鼠标左键时分别触发MouseMove、 MouseDown、MouseUp事件。2.4 基于MapX的开发模式 COM是一种面向对象的编程模型,该模型提高了软件的“互用性”,使得用户的软件投入达到最小。COM实际上是一种协议,它建立了一个软件模块同另一个软件模块之间的连接,并将其描述出来。当这种连接建立起来之后,两个模块之间就可以通过接口来进行通信。通常一个COM对象支持一个或多个接口,而每个接口又支持多个方法,COM对象之间的连接都必须通过接口来进行,一个接口之间的方法通常都是相互关联的。面向对象和分布式的技术上计算机技术发展的两大潮流,组件化技术是促进二者结合的有效的途径,GIS基

40、础软件的设计和GIS应用系统的开发也不例外。从目前国际国内的GIS开发应用来看,各主要的GIS软件厂商均推出了相应的组件包(控件包),具有代表性的有MapInfo的MapX,MapXtreme; ESRI公司的MapObject;AutoDesk的MapGuide;GeoStar的GeoObject;InterGraph的GeoMedia等。基于MapX的应用系统的开发模式实际上是相当于用OLE的方式嵌入了一个更为精练的MapInfo系统,具有更简单,快速,高效的特点,使用可视化开发语言对MapInfo Professional不具备的功能可以进行极大的扩充。制作的相应的应用系统的组织,结构,

41、稳定性,对计算机资源的开销等都较为合理。2.5 在VB中使用MapX控件 VB是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。它简单易学、效率高,且功能强大可以与Windows专业开发工具SDK相媲美。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(SPI)函数,以用动态链接库(DLL)、对象的链接与世隔嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。在VB中使用MapX控

42、件十分的方便,不论是单文档(SDI)还是多文档(MDI)界面的应用程序,在使用方法上都没有区别。本系统所采用的是多文档界面,调用步骤:一、 生成多文档的工程1、 选择File菜单New Project命令,打开New Project对话框。2、 选择Standard EXE,点击OK.VB将创建一个空白的项目,并在对象窗口内显示一个空白窗体Form1.在属性窗口中将窗体的Name属性值改为Childfrm.并将窗体的MDIChild属性值改为True.3、 选中Project菜单的Add MDIForm选项.VB将向项目中加入对象MDI Form1.MDIForm1是一个MDI父窗体。4、 选

43、中Project菜单project1 Properties选项。将此项目名改为ImageEdit。确保启动对象组合框(Startup Object comboBox)选项关联到了Childfrm窗体。二、在VB中加入MapX控件 选中Project菜单的Components选项,在Components对话框中选择Controls选项卡,在浏览框中找到MapInfo MapX V5,选中其前面的复选框,如图2.2所示。点击应用按钮,就完成了MapX控件的加载。 图2.2 Components对话框三、在VB工程中使用MapX控件1、完成MapX控件加载后,在工程的工具箱中会出现一个地球形状的图标

44、。单击此图标,并在Childfrm窗体上用鼠标拖出一定大小,就在窗体中加载了一个Map对象,可以在控件中显示地图,还可以在程序中通过Map对象调用MapX中的属性,方法。 第3章 图形编辑工具包的设计与实现3.1图形编辑方法分析 一、删除与增加一个顶点 如图3.1(a)所示,删除顶点c,此时由于删除顶点后线目标的顶点个数比原来少,所以该线目标不用删除,只是在原来的存储位置重些一次坐标,拓扑关系不变。相反,如果要在d,e之间增加一个顶点,如图3-1(b),则操作和处理上都要复杂的多。在操作上,首先要找到增加顶点对应的线段如de,给一个新顶点f位置,这是线段增加了一个顶点,它不能重写于原来的存储位

45、置,而必须给一个新的目标标识号,重写一个线状目标,而将原来的目标删除。 (a) (b) 图3.1二、移动一个顶点 移动一个顶点比较简单,因为只改变某个点的坐标,不涉及拓扑关系的维护和调整,所有关系不变。例如,将线段的某顶点由c位置移动到c位置,则只需要改变该顶点的坐标为c位置,其他顶点保持不变。三、使用区域模板的擦除使用区域图元作为模板去进行对区域图元的部分进行擦除操作,实际上是多边形与多边形的叠置操作。这里介绍多边形与多边形叠置操作的处理过程。 如图3.2,用多边形A去裁剪多边形B,实际上是求多边形A与多边形B叠置的交集。如图中的白色部分。首先用多边形A的每一条线段与多边形B的每条线段进行判断,看他们是否有交点,如果存在交点,求出交点的坐标,切割线段,然后根据新切割的线段,重新建立多边形与线段的拓扑关系。 图3.2四、图形的合并 在GIS中经常需要将一幅图内的多层数据合并在一起,或者将相邻的多幅图的同一层数据或多层数据合并在一起,此时涉及到独立图元之间的合并。实际的处理过程是,先删除两

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号