毕业设计 基于AO的图形编辑工具包的设计

上传人:仙*** 文档编号:74442864 上传时间:2022-04-13 格式:DOC 页数:44 大小:949.03KB
返回 下载 相关 举报
毕业设计 基于AO的图形编辑工具包的设计_第1页
第1页 / 共44页
毕业设计 基于AO的图形编辑工具包的设计_第2页
第2页 / 共44页
毕业设计 基于AO的图形编辑工具包的设计_第3页
第3页 / 共44页
点击查看更多>>
资源描述
开题报告毕业设计题目:基于AO的图形编辑工具包的设计学院:武汉大学遥感信息工程学院专业:地理信息系统学号:200232590064姓名:蔡颖平指导老师:李建松一 该课题的目的和意义地理现象形态各异、复杂多变。人们通常以呈点状分布的、呈线状分布的、呈面状分布的和呈体状分布的四种几何类型来抽象观察和描述地理现象。在进行二维的矢量表达时,地理现象又被进一步抽象为点状图形、线状图形和面状图形。所有点状、线状和面状图形构成了GIS图形编辑的问题空间。从图形分类的角度出发,对GIS图形编辑的问题空间进行分割,得到点对象、线对象和面对象三类对象。在GIS的各种软件中,图形编辑功能占据了重要的一部分,这个模块所包含的功能最琐碎。从大的方面来讲,图形编辑主要包括拓扑关系建立,图形编辑,图形整饰,图幅拼接,图形变换,投影变换,误差校正等功能。包括图形要素选择,图形大小调整,图形的颜色改变,图形节点编辑,图形方向旋转以及删除等操作这些是比较简单的。还有一些复杂操作,比如数字化的图形要素的缓冲区生成,拼接处理,线段的延长与裁剪,线与多边形德分割和缩放与拉伸等。这些操作都是GIS中最基本的。而这些功能对于GIS空间数据的表达,分析具有重要的作用。与GIS系统一样,CAD具有参考系统,能描述图形数据的拓扑关系,也能处理非图形属性数据。它们的主要区别是CAD处理的多为规则几何图形及其结合,图形功能很强,属性库功能相对较弱。一般来说,GIS的图形处理功能不如CAD,但是GIS容量大,数据输入方式多样化,分析功能强,这也是CAD所不能比的。在一些单位的具体作业中,一般都选择CAD来进行图形编辑,只有一些比较简单的编辑用ArcMap ,MapInfo 等软件,而比较复杂的编辑都是在ArcEdit中通过命令完成的,这个非常的繁琐。此外,一些通用的GIS软件提供的图形编辑功能非常的一般化,没有针对性;而且一些功能往往要分几个步骤才能完成,比如在MapInfo中选择一个地物,要先选择所在土层,然后选择地物。针对以上所说的一些不足,我们希望能够开发一个小型的图形编辑工具包,将上面所述的各种图形编辑方法的优点进行融合,不足进行弥补。比如对于一些使用比较多的编辑功能,我们可以使其系统集成化,一些要通过多个步骤才能完成的功能,我们考虑能否一步就能完成。通过一系列的编辑,可以使数字要素能够更好地表示空间地理实体,进行科学的定量分析和美观的地图表达;同时望界面更友好,用户使用起来效率更高。二 国内外现状和发展趋势以及本课题的主攻方向在一般的GIS软件中都提供了丰富的编辑功能。ArcInfo8.0的编辑模块提供了多种图形编辑方式,可以对地图变形进行纠正,支持对复杂目标的编辑修改,可对图形动态拖动,旋转,平行拷贝,可自动建立拓扑关系,建立图形和属性的对应关系等。ArcEdit是一个图形和数据编辑器,它把CAD的功能和地理数据库的能力联合在一起。还把数字化地图的所有功能和一套综合的编辑命令结合起来,能够编辑要素属性,加上高质量的文本注释,可用其它数据库层作为背景显示,容易诊断和修改数字化的错误,以及实现图幅伸缩和图幅边缘匹配等。ArcEdit具有以地图要素为编辑的基本单元的优点,可以移动,拷贝,增加,删除,改形和更新点,线,面以及地图注记,甚至线间独立的点也能被移动,增加或删除;线段能够被改形,光滑,或取直,拐角可以变成直角,还可以产生平行线;注释文本能够被缩放,转动,匀称排列,根据线要素来定字型,以及由一点向任何方向偏移。ArcMap 把传统的空间数据编辑,查询,显示,分析,报表和制图等GIS功能集成到一个简单的可扩展应用框架上。ArcMap包含了一个复杂的专业制图和编辑系统,既是一个面向对象的编辑器,又是一个完整的数据报表生成器。ArcMap可以看成能够完成制图和编辑任务的ArcEdit和 ArcPlot 的合并。ArcMap完全以菜单方式驱动既可以被非技术化的用户熟练掌握,也能够为资深的GIS专家提供完整的工具。一般说来交互式编辑是空间数据处理的重要环节。长期以来,GIS软件的图形编辑功能较CAD软件弱。在一些项目中,混合使用CAD软件和GIS软件进行空间数据建库工作,增加了建库成本,延长了项目周期。 针对这一问题,SuperMap GIS 突破了传统GIS在图形编辑方面的局限,在方便、灵活的可视化编辑基础上,开发了丰富的智能捕捉功能,有效提高了地图编辑的精度和速度。 当待画点与已有图素点重合、待画线段与已有线段平行、垂直,落在已有线段上或其延长线上,自身水平、垂直等特性得到满足时,系统以图标方式智能提示用户,提高了制图的准确性和效率。 本课题旨在研究各种图形编辑工具,糅合各种软件图形编辑工具的优点,然后针对在具体作业过程中存在的有缺陷的地方进行改进,从而便于用户的操作使用。三 该课题主要研究内容,途径以及技术路线传统GIS开发平台均采用专门的设计开发语言,加上庞大的函数和命令库进行开发,这样就面临着开发难度大,投入高,周期长,可重用性差的问题;而组件式GIS很好地解决了这些问题。即将复杂的GIS功能按照对象、功能、应用等层次分解为可以互操作和自我管理的组件,并由一种特定的平台或语言开发,能够在其他的平台或语言中重复使用。AO组件是ESRI公司推出的ArcGIS家族中应用程序ArcMap、ArcCatalog和ArcScene的开发平台,是基于微软的组件对象模型(COM)技术开发的一系列COM组件集。开发人员可以使用任何一种兼容COM 的编程语言扩展AO组件,定制符合自己要求的组件。 在目前常用的AO开发中有2个主要的高级通用控件: MapControl,PageLayoutControl。它们都是由AO基础组件集成向用户提供地图视图窗口。其中MapControl控件提供了类似ArcMap中的数据视图(Data View)的视图窗口,该窗口可以使地图数据布满整个客户区便于对地图数据进行操作,如地图显示、要素编辑、空间和属性数据查询、地图数据分析等。通过以上两个控件可以实现ArcMap中的绝大部分功能。用AO进行系统的开发有多种方式,为实现一个具备常用图形编辑功能并能够脱离ArcGIS独立运行的程序,常用的开发方式就是新建一个EXE工程,将AO引入后编写代码完成特定功能。这种开发方式的优点在于:开发人员可以从某个组件库中取出所需的某个组件快速组装到一起,以构造所需的应用程序,从而加快应用程序的开发;能有一个全新的用户化界面,并且脱离ArcGIS桌面软件而独立运行。 这种方法糅合了AO和面向对象的思想的开发方式一方面利用AO所提供的强大而丰富的接口,提高了开发的效率;另一方面以面向对象的思想进行功能模块的设计,思路清晰便于实现,并且具有很好的扩充性和复用性。该算法对时空数据库中单一图层的图形编辑具有参考价值。该课题主要任务是利用AO和VB完成图形编辑工具包的设计,这些编辑功能大体可以分成四大类:1 一些最基本的功能 如放大,缩小,漫游,全图显示 2 最基本的图形编辑,包括以下几个方面A 图形要素进行选择 B 改变图形形状 用户可以根据拖拉图形给它增加节点来改变形状 C 移动图形位置 用户可以将图形移动到任意位置 D 编辑图形结点 如增加结点,删除结点,移动结点 E 删除图形要素 可以删除所选中的图形 F 新建图形要素 可以在任一层新建与该层属性相同的地物 G 打断图形要素 通过绘制一条线段将所选择的图形要素打断 H 注记3 基本图形的绘制 如点,线,折线,圆,多边形 在鼠标点击处画点, 线是通过确定起点和终点的坐标来画线,折线则是确定一系列的拐点的坐标,将其用线连接。圆则是通过确定圆心和半径来绘出4 其他功能 A 添加图层B 将图层保存为JPEG格式的图像输出 C 设置鹰眼导航功能 D 察看图元属性 E 察看图层列表 从总体上可以将研究的路线归结为以下的步骤:1 熟悉GIS相关软件的图形编辑功能,然后确定所要开发的工具包所应包括的功能2 将图形的各种编辑功能分成几个模块,各个模块完成相关的功能,这样可以避免界面的杂乱无章,便于用户进行选择3 所开发系统的界面设计,要求是简洁美观,便于用户使用4 用VB+AO 完成各个功能的程序编写5 进行测试 6 功能的修改和完善,对于不完善的功能,对程序进行修改,然后再检查遗漏的功能,务必使这个工具包功能完善。四 所查阅的相关资料1ArcInfo 基础教程 测绘出版社 关泽群 秦昆2 GIS 8 Desktop 地理信息系统应用指南清华大学出版社 党安荣 贾海峰 易善桢 刘钊3 MapInfo7中文版入门与提高 清华大学出版社 杜巧玲 吴秀勤 张淼以及在网上下的一些电子书籍1Editing_in_ArcMap 2Exploring_ArcObject3GetStartedinVB4GetStartedMapControl5Using_ArcMap 五 研究的主要阶段,进度及完成时间 该研究主要分为四个阶段:(1) 2006年第二学期前三周完成论文的开题,明确所要研究的内容及相关方面,需要搜集的资料,从整体上把握该课题的结构以及从细节上明确所需要做的工作。 (2) 第4至13周完成论文的研究工作 其中第4 周熟悉ArcMap 中基本图形编辑功能,了解需要哪些图形编辑工具第5周到13周完成程序的设计与开发,即开发一个图形编辑工具包。(3) 14周完成论文的写作(4) 15周论文答辩目录摘要第1章 绪论11.1研究的目的和意义11.2研究内容2第2章 地理信息系统的二次开发技术32.1 GIS开发的三种方式32.2 组件与面向对象的组件模型COM42.3 组件GIS概述52.4 AO组件82.5 调用MapControl控件开发独立应用程序10第3章 GIS中的图形编辑理论133.1图形编辑概述133.2 常用软件的图形编辑功能分析133.3 AO体系中的图形编辑14第4章 功能设计及实现174.1设计内容174.2程序设计总结33第5章 结束语35致谢36参考文献37I 摘要COM技术是新一代的组件式GIS发展的主流。本文在组件式GIS技术发展的背景下,分析了COM 与组件式GIS的关键技术及ArcObjects的体系结构,同时结合空间数据处理中的图形编辑的有关知识,基于ArcObjects和VB的组合开发了一个小应用程序,该程序着重研究几种具体的图形编辑功能以及其他相关功能。关键词:COM GIS 组件式GIS ArcObjects 图形编辑 ABSTRACTCOM technique is the mainstream of modem component GIS developmentIn the context of developing package GIS technology this paper analyzs the key technique of COM,component GIS and the structure of ArcObjects,meanwhile associating with some relative knowledges about the graphic editing methods in spatialdata processing,develop a minitype application procedure based on ArcObject plus VB.This application procedure emphases on some method about graphic editing and some others .Key words:COM GIS ComponentGIS ArcObjects graphic editing第1章 绪论1.1研究的目的和意义本文在组件式GIS技术发展的背景下,分析了COM与组件式GIS的关键技术及ArcObjects的体系结构,结合空间数据处理中的图形编辑的有关知识, 着重研究如何利用AO组件和VB结合对地理信息系统的图形编辑功能方面进行二次开发,并实现了几种具体的图形编辑功能以及其他相关功能。 地理现象形态各异、复杂多变。人们通常以呈点状分布的、呈线状分布的、呈面状分布的和呈体状分布的四种几何类型来抽象观察和描述地理现象。在进行二维的矢量表达时,地理现象又被进一步抽象为点状图形、线状图形和面状图形。所有点状、线状和面状图形构成了GIS图形编辑的问题空间。从图形分类的角度出发,对GIS图形编辑的问题空间进行分割,得到点对象、线对象和面对象三类对象。目前世界上常用的GIS软件已达400多种。它们大小不一,风格各异。在GIS的各种软件中,图形编辑功能占据了重要的一部分,这个模块所包含的功能最琐碎。从广义的方面来来说,图形编辑主要包括拓扑关系建立,图形编辑,图形整饰,图幅拼接,图形变换,投影变换,误差校正等功能。从狭义的方面来说,图形要素选择,图形大小调整,图形的颜色改变,图形节点编辑,图形方向旋转以及删除等操作这些是比较简单而常用的。此外还有一些复杂操作,比如数字化的图形要素的缓冲区生成,拼接处理,线段的延长与裁剪,线与多边形的分割和缩放与拉伸等。这些操作都是GIS中最基本的。而这些功能对于GIS空间数据的表达,分析具有重要的作用。相对来说,GIS的图形处理功能不如CAD,CAD处理的多为规则几何图形及其结合,图形功能很强,属性库功能相对较弱。但是GIS容量大,数据输入方式多样化,分析功能强,这也是CAD所不能比的。此外,一些通用的GIS软件提供的图形编辑功能非常的一般化,没有针对性;而且一些功能往往要分几个步骤才能完成,比如在MapInfo中选择一个地物,要先选择所在图层,然后选择地物。因此研究各种图形编辑功能对于GIS来说的意义就相当重大GIS的二次开发有多种方式,应用比较广泛的是集成式的二次开发。它是指利用专业的GIS工具软件实现GIS的基本功能,以通用软件开发工具尤其是可视化开发工具(Delphi,Visual C+ Visual Basic .net)等为开发平台,进行二者的集成开发。集成式开发主要有两种方式,基于OLE/DDE的二次开发和基于GIS组件的二次开发。其中后者利用GIS工具软件生产商提供的建立在OCX基础上的GIS功能组件(如ESRI的MapObject,ArcObject,MapInfo的MapX)采用可视化开发工具进行二次开发,实现地理信息系统的各种功能,还可以根据需要把相关组件进一步开发,开发出相应的控件,与前者相比,利用控件开发速度快,占用资源少,且易实现许多底层的编程和开发功能,更能表现出上述优点。而本文研究的就是用ESRI的AO组件结合VB对GIS的图形编辑功能进行二次开发。1.2研究内容本文主要研究的内容是在深入了解地理信息系统的前提下,掌握常用GIS软件的一些图形编辑功能,并了解GIS二次开发的相关内容,初步掌握ArcObject的开发方法,然后基于ArcObject技术利用VB编程编写一个小型的程序,实现并完善图形编辑的功能以及其他相关功能。 第2章 地理信息系统的二次开发技术2.1 GIS开发的三种方式地理信息系统历经近四十多年的发展,已逐渐建立起其完整的技术系统和理论体系,应用领域不断扩大,已形成一个多层次、多尺度的应用格局在技术进步和应用需求的双重驱动下,GIS软件技术体系得到迅速发展。从最早的GIS模块逐步发展为集成式GIS、模块化GIS、核心式GIS和组件式GIS等,其应用开发主要有三种方式:(1)独立开发 指不依赖于任何GIS工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言,如Visual C+, Visual Basic, Delphi等,在一定的操作系统平台上编程实现。这种独立开发的优点是开发者有完全的主动权,开发出满足自己行业需求的系统。这种开发方式难度很大,不但要求开发者要有很扎实的GIS理论知识而且还要很强的软件开发实力。这种方式的好处在于无须依赖任何商业GIS工具软件减少了购买商业GIS软件的成本。但对于大多数开发者来说,能力,时间,财力等方面的限制使其开发出来的产品很难在功能上与商业化软件相比。(2)宿主型二次开发 早期许多商用GIS软件是以解释语言方式执行的,大多数GIS平台软件都提供了可供用户进行二次开发的脚本语言,如ESRI的ArcInfo提供的ArcMarcro Language (AML)语言、ArcView提供了Avenue语言,MGE提供了MDL,MapInfo公司的MapInfo Professional提供了MapBasic语言等等。用户可以利用这些脚本宏语言以原CIS工具软件为开发平台,开发出针对不同应用对象的应用程序。 这种方式省时省心,也可以利用平台提供的基本的GIS功能,但这种二次开发有明显的不足,如:开发功能弱,综合处理能力不强;解释执行,效率不高;缺乏好的保护机制,软件质量不易保证;语言规则千差万别,增加学习开发语言的负担;不易保护软件成果等。(3)集成式二次开发 集成式二次开发是指利用专业的GIS工具软件,实现GIS的基本功能,以通用软件开发工具尤其是可视化开发工具为开发平台,进行二者的集成开发。集成开发主要有两种方式: 基于OLE/DDE的二次开发 用软件开发工具开发前台可执行应用程序,采用OLE Automation方式或利用DDE方式启动GIS工具软件在后台执行,利用回调(Callback)技术动态获取其返回信息,实现应用程序中的地理信息处理功能。 基于GIS组件的二次开发利用GIS工具软件生产商提供的建立在OCX技术基础上的GIS功能组件(如ESRI的MapObjects,ArcObject MapInfo的MapX等),采用可视化软件开发工具进行二次开发,实现地理信息系统的各种功能,还可以根据需要把相关的组件进一步开发,开发出相应的控件。与OLE Automation技术相比,利用控件开发速度快,占用资源少,而且易实现许多底层的编程和开发功能。综上所述,集成二次开发正成为应用GIS开发的主流方向。日前许多软件公司都开发了很多ActiveX控件,合理选择和运用现成的控件,减少开发者的编程工作量,使开发者避开某些应用的具体编程,直接调用控件,实现这些具体应用,不仅可以缩短程序开发周期,使编程过程更简洁,用户界面更友好,可以使程序更加灵活、简便。而本文所研究的也正是利用集成式开发中的第二种方式基于GIS组件进行GIS的二次开发。2.2 组件与面向对象的组件模型COM组件式对象模型(COM)不是一种面向对象的语言而是一种二进制标准,其作用是使各种软件组件和应用软件能够用一种统一的标准方式进行交互,而建立在组件基础上的应用程序几乎不用修改。大大提高了代码的应用性。组件是具有以下特点的程序块:(1)具有一定结构和功能;(2)遵循一定的接口标准;(3)单独或与其他组件一起共同完成特定的功能;(4)内部实现完全封装。组件软件开发可以分成两个层次,即标准组件的开发和利用标准组件进行系统组件开发。组件接口标准是组件协同工作的基础,也是组件软件开发的基础。目前有两个公认的工业标准:微软的COM和OMG对象管理组织的CORBA。CORBA模型主要应用于UNIX操作系统平台上,而COM则主要应用于Windows操作系统平台上,因而有更广泛的应用。COM是Microsoft公司提出的一种网络标准,可用于软件组件间跨越多个进程、机器、硬件和操作系统进行互操作 。组件之间的接口是组件软件的关键,因为接口是双方进行通信的基础 COM接口有两个含义:(1)它是一组可以调用的函数;(2)接口是组件及其客户程序之间的协议。当使用COM对象开发时,开发人员不能直接使用COM对象,而是通过接口访问对象获得。一个组件程序可以包含多个COM对象,并且每个COM对象可以实现多个接口。2.3 组件GIS概述传统GIS虽然在功能上已经比较成熟,但是由于这些系统多是基于十多年前的软件技术开发的,属于独立封闭的系统。同时,GIS软件变得日益庞大,用户难以掌握,费用昂贵,阻碍了GIS的普及和应用。组件式GIS的出现为传统GIS面临的多种问题提供了全新的解决思路。组件式GIS是软件组件技术在GIS软件开发中的应用,是指基于组件对象平台,以一组具有某种标准通信接口的、允许跨语言应用的组件提供的GIS。组件式GIS的基本思想是把GIS的各大功能模块划分为几个控件,每个控件完成不同的功能。各个GIS控件之间,以及GIS控件与其他非GIS控件之间,可以方便地通过可视化软件开发工具集成起来,形成最终的GIS应用。2.3.1 组件式GIS的优点一些GIS软件公司纷纷推出了基于COM 技术,由一系列ActiveX控件组成的GIS二次开发软件环境。这些软件具有以下主要优点:(1)软件小巧灵活,性价比高由于传统GIS结构的封闭性,往往使得软件本身变得越来越庞大,不同系统的交互性差,系统的开发难度大。在组件模型下,各组件都集中地实现与自己最紧密相关的系统功能,用户可以根据实际需要选择所需控件,最大限度地降低了用户的经济负担。组件化的GIS平台集中提供空间数据管理能力,并且能以灵活的方式与数据库系统连接。在保证功能的前提下,系统表现得小巧灵活,而其价格仅是传统GIS开发工具的十分之一,甚至更少。这样,用户便能以较好的性能价格比获得或开发GIS应用系统。(2)无须专门GIS开发语言,直接嵌入MIS开发工具 传统GIS往往具有独立的二次开发语言,对用户和应用开发者而言存在学习上的负担。而且使用系统所提供的二次开发语言,开发往往受到限制,难以处理复杂问题。而组件式GIS建立在严格的标准之上,不需要额外的GIS二次开发语言,只需实现GIS的基本功能函数,按照Microsoft的ActiveX控件标准开发接口。这有利于减轻GIS软件开发者的负担,而且增强了GIS软件的可扩展性。GIS应用开发者,只需熟悉基于Windows平台的通用集成开发环境,以及GIS各个控件的属性、方法和事件,就可以完成应用系统的开发和集成。目前,可供选择的开发环境很多,如Visual C+,Visual Basic , Visual FoxPro,以及PowerBuilder等都可直接成为GIS的优秀开发工具,它们各自的优点都能够得到充分发挥。这与传统GIS专门性开发环境相比是一种质的飞跃。(3)GIS功能强大新的GIS组件都是基于32位系统平台的,采用进程内自动化服务器(InProc)直接调用形式,InProc可以作为动态链接库(DLL)加载到客户端的地址空间中,所以无论是管理大数据的能力还是处理速度方面均不比传统GIS软件逊色。小小的GIS组件完全能提供数据浏览、数据编辑等基本数据操作,有的组件可以数据拼接、裁剪、叠合、缓冲区等空间查询与分析。(4)开发简捷方便由于GIS组件可以直接嵌入MIS开发工具中,对于广大开发人员来讲,就可以自由选用他们熟悉的开发工具。而且,GIS组件提供的API形式非常接近MIS工具的模式,开发人员可以像管理数据库表一样熟练地管理地图等空间数据,无须对开发人员进行特殊的培训。这将使大量的MIS开发人员能够较快地过渡到GIS或GMIS的开发工作中,从而大大加速GIS的发展。(5)更加大众化 组件式技术已经成为业界标准,用户可以象使用其他ActiveX控件一样使用GIS控件,使非专业的普通用户也能够开发和集成GIS应用系统,推动了GIS大众化进程。组件式GIS的出现使GIS不仅是专家们的专业分析工具,同时也成为普通用户对地理相关数据进行管理的可视化工具。(6)可扩展性 在组件式软件技术的背后,有一个十分庞大的组件资源库,用户可以从不计其数的组件中挑选需要组件与组件式GIS一起集成应用系统,极大地扩展了ComGIS功能。世界上有许多软件公司在编写各种各样的控件,这些第三方控件差不多可以解决任何通用软件编程中所遇到的问题。ComGIS是组件大家庭中的一员,使用ComGIS集成应用系统,具有无限的扩展性。2.3.2 组件GIS的形式组件式GIS即将复杂的GIS功能按照对象、功能、应用等层次分解为可以互操作和自我管理的组件,并由一种特定的平台或语言开发,能够在其他的平台或语言中重复使用。目前组件式GIS主要有两种形式:一种是由可以实现制图与一般GIS功能的ActiveX控件集构成的组件式GIS。这些控件既可以通过属性、事件、方法等接口与应用程序进行交互,也可以在可视化开发环境中集成构成应用系统。国内外具有代表性的有:ESRI公司出品的MapObject,MapInfo公司推出的MapX武汉吉奥公司研发的GeoMap等。另一种形式的组件式GIS是基于Microsoft COM 技术构建一系列COM 组件集,用户可以利用这些组件开发各种GIS功能,并在此基础上构建GIS应用系统。这种开发模式更为底层,开发较为复杂,功能更为强大,以ESRI公司的ArcObjects(简称AO)组件为典型。两种开发形式的软件都具有地图显示、图层控制、数据查询、地图符号化、专题地图等基本功能。2.3.3 GIS组件产品为了顺应组件式GIS的技术新潮流,目前国内外GIS厂商纷纷推出了由一系列ActiveX控件组成的ComGIS软件,如MapInfo公司推出MapX,Intergraph公司推出的Geomedia、超图公司推出SuperMapObjects、加拿大阿波罗科技集团的TITAN.ESRI公司的MapObjects,ArcObjects和最新ArcGIS 9. 0推出ArcGISEngine, ArcGIS Server等。这为基于GIS软件的系统开发带来了根本性的变革,即由过去的在GIS平台提供的二次开发环境下进行开发转变为在通用的软件开发环境下进行开发,这些GIS组件具有GIS软件的基本功能,如多种格式数据的读取、分层显示、编辑、图形的缩放、漫游、多种方式的查询、制图等。它们遵循了COM标准,可以与可视化编程环境中的非GIS组件一起协调工作,共同完成GIS的功能。其中,ArcObjects以其强大的功能深受GIS开发者的青睐,利用这些组件式GIS工具软件结合可视化开发工具开发出高效无缝、成本低廉应用系统。所以本文选择了基于AO和VB组合进行开发。下面具体阐述一下AO组件。2.4 AO组件2.4.1 AO组件简介AO组件是ESRI公司推出的ArcGIS家族中应用程序ArcMap、ArcCatalog和ArcScene的开发平台,是基于微软的组件对象模型技术开发的一系列COM组件集。它提供了1800多个单独的基于COM的组件,几百个具有良好文档说明的接口和数千个方法,其中囊括了Arclnfo和ArcView中实现的所有功能,开发人员可以使用任何一种兼容COM 的编程语言扩展AO组件,定制符合自己要求的组件。因为基于COM工业标准,用AO开发的应用程序与主流IT是兼容的、开放的、可移植的,很容易融合到一个机构的系统中。 在ArcGIS 8X版本的AO开发中有2个主要的高级通用控件: MapControl和PageLayoutControl。它们都是由AO基础组件集成向用户提供地图视图窗口。MapControl控件提供了类似ArcMap中的数据视图(Data View)的视图窗口,该窗口可以使地图数据布满整个客户区便于对地图数据进行操作,如地图显示、要素编辑、空间和属性数据查询、地图数据分析等。PageLayoutControl控件提供了类似ArcMap中的版面视图(Layout View)的视图窗口,该窗口主要用于制图输出可以进行以下操作:制图版面设置、辅助要素设置、制图数据操作、地图整饰操作等。通过以上两个控件可以实现ArcMap中的绝大部分功能。另外,ArcGIS 8X版本还提供了SceneViewer控件,主要为ArcGIS 3D分析扩展模块提供3维可视化视图窗口, 同样可应用于AO组件编程。与ArcGIS8相比,ArcGIS9最大的变化是它增加了两个基于ArcObject的产品:面向开发的嵌入式ArcGIS Engine和面向企业用户的基于服务器的ArcGIS Server。这两个产品都支持包括Windows、Unix和Linux在内的跨平台技术。2.4.2 AO组件开发类型(1)VBA的开发方式利用嵌入ArcCatalog和ArcMap中的VBA宏进行嵌入式开发。使用系统内置的VBA语言,可以快速地实现针对特殊需求的功能扩展和界面的定制;利用ArcGIS桌面应用程序(如ArcMap)内置的VBA宏进行客户化,这种客户化只是修改一下ArcMap的界面或利用这些桌面软件内置的开发环境VBA进行客户化,主要用于让桌面软件完成一些重复性的工作或添加一些扩展的功能。这是最简单快速的方法,是有效利用现有平台与数据的首选开发方式。其缺点是不能脱离桌面软件独立运行。(2)创建自己的COM组件采用任意一种支持COM 的高级语言(如VC、VB、Delphi等),在AO组件的基础上进一步创建自己的COM组件,满足各种特殊的需求。可以新创建一个DLL或者OCX工程,引用AO核心库,定义自己的接口、属性、方法底层功能调用AO组件加以实现。所生成的COM组件具有很大的灵活性可以应用在由任何支持COM 的语言开发的独立应用程序中,但这种开发方法需要较高的组件开发技术。(3)开发独立的应用程序在支持COM 的高级编程语言环境下,应用AO组件提供的强大的GIS和制图功能, 自行开发符合要求的专业化GIS系统。这种开发方式的一般过程就是新建一个EXE工程,将AcObjects库引入,然后编写代码完成特定功能。其优点是:开发人员可以根据系统的实际需要,从组件信息技术库中选择需要应用的组件快速整合系统,所生成的应用程序不依赖于ArcGIS桌面版软件而独立运行,为专业人士提供了方便、友好的操作方式。独立应用程序的开发方式由于脱离了ArcGIS软件环境,不能使用Application对象组件,因此由Application对象组件所建立的应用程序框架及其管理的对象都不能使用。只能使用Mapcontrol控件和Sceneviewercontrol控件和它们所支持的下层组件,并且是下层组件对象实现以后,已创建的上层组件对象才能使用。因此,这是一种由低到高的开发模式,开发难度较大。本文所采用的方法就是用第三种方式开发独立的应用程序。这种方法难度比较大,但是开发的程序可以独立运行,而且比较灵活,系统针对性强,所以前景很广阔。2.4.3 AO的对象和属性AO组件库的每一个组件中定义有不同的类,类下面定义了不同接口,接口中包含不同的属性和方法。类之间有类型继承(Type Inheritance)关系,接口之间有互相调用(Querylnterface)及相互继承(Interface Inheritance)关系(1)类AO中的类有三种:Abstract Classes,Coclasses和Classes。Coclasses可在开发环境中直接定义并实例化;Classes不能直接实例化,只能从其他类接口的属性函数或其他方法的输出参数中获得;Abstract Classes为抽象类,不能定义及实例化,只是用来派生其他类(2)类的类型继承类型继承是指类之间的接口类型的继承,而不是继承其实现。Element类有六个接口,GraphicElement继承于Element,它有八个接口,包括自身的两个接口和类型继承于Element的六个接口。继承过来的接口只是名称相同,具体的实现则不同(3)接口类下面包含不同接口,接口名前都有“I”字母。如FeatureClass类包含IFeatureClass,IDataset,ITable等不同接口。不同的Coelasses可有同一个接口,如FeatureClass类有IFeatureClass接口,而RelQueryTable类也有IFeatureClass接口:(4)接口调用两个接口之间是否可以相互调用要满足一个条件:它们要同属于一个类,如类FeatureLaver包含IFeatureLayer接口和IDataset接口。如果已知IFeatureLayer的指针,则可得到IDataset的指针。(5)接口继承如ImapFrame接口和IMapSurroundFrame接口继承于IFrameElement接口,则父类接口IFrameElement所具有的方法和属性对派生接口lmapFrame和IMapSurroundFrame都有效。 2.5 调用MapControl控件开发独立应用程序应用ArcObjects定制和嵌入式开发具有强大的功能,并且能满足大多数用户的需求。因为一些用到在ArcMap和ArcCatalog中预先定义好的功能以及内置VBA环境的开发方式使庞大的系统占据了大量的系统资源、运行缓慢,系统的针对性不强,实际上只有10%-20%的系统功能得到应用,造成浪费,所以建立独立应用程序的开发方式仍有很大的市场。2.5.1 MapControl控件 ArcObjects提供的MapControl地图控件能够访问ArcObjects对象模型,包括符号化、地理处理、几何操作等对象,以及ArcGIS的其它核心功能。进行独立应用程序开发的有利和限制条件有益方面: 用户自己定义系统的界面和功能,不受ArcMap, AreCatalog等的限制 自主选择开发环境 系统相对较小,运行迅速容易发布 限制方面: 不能建立和保存为.mxt、.mxd文件 不能利用ArcMap,AreCatalog等预先设置的功能 不能使用开发框架的便利 不能使用扩展和编辑工具 许可限制:必须运行在安装了ArcGIS的机器上 2.5.2开发独立应用程序的一般步骤1 开发环境的选择凡是支持COM协议,能调用COM组件的面向对象的编程语言都能够用于ArcObjects的二次开发。实际常用的主要有Visual C十十、Visual Basic。和Delphi。其中使用最多的是VB,这是因为VB与VBA是同一种语言,使用手册和例程等都是使用VBA编写的,其可读性和移植性好,这样就提供了极大的便利。但是VB在一些需要进行自定义要素等需要COM底层实现的开发技术方面就有些力不从心了,而VC则没有这样的限制。2 程序功能和结构框架设计根据程序应用的专业领域方向和用户需求以及用户的层次、水平等确定程序的功能。其后根据功能模块的不同进行总体结构框架设计,其目的是减少后面编程的复杂度,协调和促进分工合作。3 编程理念在程序编写时要注意代码的通用性、可移植性和可重用性。因此一定要按照COM标准进行编写,对可重用模块的代码编译成DLL库文件(动态连接库),提高开发效率,增强系统的安全性。(4)建立工程(5)引用控件MapControl(6)引用组件库esriCore.olb(7)在窗体中加入控件(8)进行界面设计(9)编写代码(10)实现程序功能 第3章 GIS中的图形编辑理论3.1图形编辑概述在GIS的各种软件中,图形编辑功能占据了重要的一部分,这个模块所包含的功能最琐碎。从广义方面来讲,图形编辑主要包括拓扑关系建立,图形编辑,图形整饰,图幅拼接,图形变换,投影变换,误差校正等功能。从狭义方面来讲,空间数据处理中的图形编辑主要包括两个方面:结点的编辑和图形的编辑。结点的编辑在GIS中非常重要,它是建立点,线,面关联拓扑关系的桥梁和纽带,结点编辑主要有删除,移动,打断结点等。图形的编辑包括新建,删除,移动,拷贝,旋转点,线,面实体,还有打断,合并实体相对而言,图形要素选择,图形大小调整,图形的颜色改变,图形节点编辑,图形方向旋转以及删除等操作这些是比较简单的。还有一些复杂操作,比如数字化的图形要素的缓冲区生成,拼接处理,线段的延长与裁剪,线与多边形的分割和缩放与拉伸等。这些操作都是GIS中最基本的。而这些功能对于GIS空间数据的表达,分析具有重要的作用。3.2 常用软件的图形编辑功能分析与GIS系统一样,CAD具有参考系统,能描述图形数据的拓扑关系,也能处理非图形属性数据。它们的主要区别是CAD处理的多为规则几何图形及其结合,图形功能很强,属性库功能相对较弱。一般来说,GIS的图形处理功能不如CAD,但是GIS容量大,数据输入方式多样化,分析功能强,这也是CAD所不能比的。在一些单位的具体作业中,一般都选择CAD来进行图形编辑,只有一些比较简单的编辑用ArcMap ,MapInfo 等软件,而比较复杂的编辑都是在ArcEdit中通过命令完成的,这个非常的繁琐。此外,一些通用的GIS软件提供的图形编辑功能非常的一般化,没有针对性;而且一些功能往往要分几个步骤才能完成,比如在MapInfo中选择一个地物,要先选择所在土层,然后选择地物。ArcInfo8.0的编辑模块提供了多种图形编辑方式,可以对地图变形进行纠正,支持对复杂目标的编辑修改,可对图形动态拖动,旋转,平行拷贝,可自动建立拓扑关系,建立图形和属性的对应关系等。ArcEdit是一个图形和数据编辑器,它把CAD的功能和地理数据库的能力联合在一起。还把数字化地图的所有功能和一套综合的编辑命令结合起来,能够编辑要素属性,加上高质量的文本注释,可用其它数据库层作为背景显示,容易诊断和修改数字化的错误,以及实现图幅伸缩和图幅边缘匹配等。ArcEdit具有以地图要素为编辑的基本单元的优点,可以移动,拷贝,增加,删除,改形和更新点,线,面以及地图注记,甚至线间独立的点也能被移动,增加或删除;线段能够被改形,光滑,或取直,拐角可以变成直角,还可以产生平行线;注释文本能够被缩放,转动,匀称排列,根据线要素来定字型,以及由一点向任何方向偏移。ArcMap 把传统的空间数据编辑,查询,显示,分析,报表和制图等GIS功能集成到一个简单的可扩展应用框架上。ArcMap包含了一个复杂的专业制图和编辑系统,既是一个面向对象的编辑器,又是一个完整的数据报表生成器。ArcMap可以看成能够完成制图和编辑任务的ArcEdit和 ArcPlot 的合并。ArcMap完全以菜单方式驱动既可以被非技术化的用户熟练掌握,也能够为资深的GIS专家提供完整的工具。一般说来交互式编辑是空间数据处理的重要环节。长期以来,GIS软件的图形编辑功能较CAD软件弱。在一些项目中,混合使用CAD软件和GIS软件进行空间数据建库工作,增加了建库成本,延长了项目周期。 针对这一问题,SuperMap GIS 突破了传统GIS在图形编辑方面的局限,在方便、灵活的可视化编辑基础上,开发了丰富的智能捕捉功能,有效提高了地图编辑的精度和速度。 当待画点与已有图素点重合、待画线段与已有线段平行、垂直,落在已有线段上或其延长线上,自身水平、垂直等特性得到满足时,系统以图标方式智能提示用户,提高了制图的准确性和效率。3.3 AO体系中的图形编辑3.3.1 基本图形操作功能的实现图形显示是通过MapControl控件来实现通过它可获得esfiCoreolb提供的其他组件接口,从而实现各种功能。MapControl控件也支持一些事件响应,如MouseDown,MouseMoveMouseUp等,利用这些事件,可以实现图形的放大、缩小、漫游等基本功能。3.3.2 图层编辑及空间操作美国环境系统研究所在构造地理现象的数据模型时,提出了要素(feature)的概念,每一个要素都是一个地理现象的映射。AO 提供了一个与要素对应的接口IFeature ,封装了要素的基本属性和对要素操作的基本方法,如设置和获得要素的图形、要素的删除和要素的存储等。因为IFeature 接口所封装的属性和方法是所有图形对象共有的,所以自然就是把AO 的Feature 类作为图形的基类,点图形类、线图形类和面图形类都由Feature 类派生得到。在AO体系中,与编辑功能相关的对象类主要是:(1)Geometry类。主要包括派生的Point类、MuhiPoint类、Line类、Polyline类、Polygon类等。(2)集合类。主要包括PointCollection类、GeometrvCollection类、segmentCollection类等(3)空间操作符。主要包括ITopologicalOperator接口、IRelationalOperator接口IproximityOperator接口。合并的思路就是创建一个新的要素,用来存储合并后的多边形;遍历所有被选择的图形,进行合并。3.3.3图形编辑的内容及过程本文所研究的图形编辑方面包括地图的方大,缩小,漫游,全图显示,以及图层的控制和选择,数据的输入输出等等。其中具体的图形编辑方面涉及到l 分割(线的分割)l 移动(地块移动)l 新增(点、线、面的新增,节点新增)l 图形形状的改变l 拾取l 删除l 属性注记l 撤消、重复编辑操作对时空数据库中单一图层的编辑分开始编辑、具体编辑操作、结束编辑、编辑结果入库四个步骤。在开始编辑的环节中要完成选择待编辑的图层;待编辑图层三个操作检查通过后,得到编辑工作空间;协调用户版本和默认版本。如果协调版本时没有出现问题,则开始编辑成功,进行具体的编辑操作。结束编辑要完成的操作是决定是否在用户版本中保存编辑的结果。数据入库环节要把用户版本里的编辑结果提交到默认版本中去,使得编辑的结果对所有的用户来讲都是可见的。编辑操作的流程:开始编辑具体编辑动作ReDo保存UnDo是否撤消结束编辑下一个编辑是否保存 否 是否重复 是否 是 是否 是否第4章 功能设计及实现4.1设计内容本次实验是用AO和VB 组合开发一个小型的图形编辑系统。新建一个工程,然后装入MapControl控件并把它放到界面上。开发一些简单的图形编辑功能。最终的系统界面如下: 图4.1界面4.1.1基本图形操作基本图形操作功能包括放大,缩小,漫游,全图显示。首先在界面上添加工具条控件,增加所需要的按钮,然后再添加Image List控件,在这个控件的属性页上添加所需要的图标,然后把工具条和Image List对应起来。实现这几个功能的代码很简单,如下:If m_bZoomIn = True ThenMapControl1.Extent = MapControl1.TrackRectangle 其中TrackRectangle方法是根据拖拉形成的矩形框放大。ElseIf m_bZoomOut = True Then Set pEnvelop = MapControl1.Extent pEnvelop.Expand 2, 2, True MapControl1.Extent = pEnvelopElseIf m_bPan = True Then MapControl1.Pan是在响应MouseDown的函数中添加的,因为它们都是响应鼠标在地图上点击;而全图显示只需要点击一下工具条上的按钮就可以实现,所以可以直接在响应工具条的函数里添加: Case fullextent.MousePointer = esriPointerDefault 这句话是设置鼠标的形状.Extent = MapControl1.FullExtent4.1.2 基本图形的绘制基本图形包括点,折线,多边形,圆等。首先添加一个工具条,然后增加所需要的按钮,在MouseDown里添加相应的代码。(1)其中画点的过程主要是:新建一个点 Set pRubberPoint = New RubberPoint用TrackNew方法跟踪返回一个新点 Set cPoint = pRubberPoint.TrackNew(MapControl1.ActiveView.ScreenDisplay,Nothing)设置元素的几何类型为点,并在屏幕上添加这个点 pElem.Geometry = cPoint pGraCont.AddElement pElem, 0(2)画线的过程主要的代码如下: Set pPolyline = pRubberLine.TrackNew(pScreenDisplay, pLineSymbol) 其中pLineSymbol是指线的属性,包括线宽和颜色等 With pScreenDisplay .StartDrawing pScreenDisplay.hDC, esriNoScreenCache .SetSymbol pLineSymbol .DrawPolyline pPolyline End With(3)画多边形和线的过程一样,只不过需要改变其中的接口和变量,在TrackNew 方法中pLineSymbo改成pFillSymbol,即多边形的填充颜色;代码就不赘述了。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!