毕业设计 基于AO的图形编辑工具包的设计_第1页
毕业设计 基于AO的图形编辑工具包的设计_第2页
毕业设计 基于AO的图形编辑工具包的设计_第3页
毕业设计 基于AO的图形编辑工具包的设计_第4页
毕业设计 基于AO的图形编辑工具包的设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、开题报告 毕业设计题目:基于 ao 的图形编辑工具包的设计 学院:武汉大学遥感信息工程学院 专业:地理信息系统 学号:200232590064 姓名:蔡颖平 指导老师:李建松 一 该课题的目的和意义 地理现象形态各异、复杂多变。人们通常以呈点状分布的、呈线状分布的、呈 面状分布的和呈体状分布的四种几何类型来抽象观察和描述地理现象。在进行二 维的矢量表达时,地理现象又被进一步抽象为点状图形、线状图形和面状图形。所 有点状、线状和面状图形构成了gis图形编辑的问题空间。从图形分类的角度出发, 对gis图形编辑的问题空间进行分割,得到点对象、线对象和面对象三类对象。 在gis的各种软件中,图形编辑功

2、能占据了重要的一部分,这个模块所包含的 功能最琐碎。从大的方面来讲,图形编辑主要包括拓扑关系建立,图形编辑,图形 整饰,图幅拼接,图形变换,投影变换,误差校正等功能。 包括图形要素选择,图形大小调整,图形的颜色改变,图形节点编辑,图形方 向旋转以及删除等操作这些是比较简单的。还有一些复杂操作,比如数字化的图形 要素的缓冲区生成,拼接处理,线段的延长与裁剪,线与多边形德分割和缩放与拉 伸等。这些操作都是gis中最基本的。而这些功能对于gis空间数据的表达,分析具 有重要的作用。 与gis系统一样,cad具有参考系统,能描述图形数据的拓扑关系,也能处理非 图形属性数据。它们的主要区别是cad处理的

3、多为规则几何图形及其结合,图形功 能很强,属性库功能相对较弱。一般来说,gis的图形处理功能不如cad,但是gis 容量大,数据输入方式多样化,分析功能强,这也是cad所不能比的。在一些单位 的具体作业中,一般都选择cad来进行图形编辑,只有一些比较简单的编辑用 arcmap ,mapinfo 等软件,而比较复杂的编辑都是在arcedit中通过命令完成的, 这个非常的繁琐。此外,一些通用的gis软件提供的图形编辑功能非常的一般化, 没有针对性;而且一些功能往往要分几个步骤才能完成,比如在mapinfo中选择一 个地物,要先选择所在土层,然后选择地物。 针对以上所说的一些不足,我们希望能够开发一

4、个小型的图形编辑工具包,将 上面所述的各种图形编辑方法的优点进行融合,不足进行弥补。比如对于一些使用 比较多的编辑功能,我们可以使其系统集成化,一些要通过多个步骤才能完成的功 能,我们考虑能否一步就能完成。通过一系列的编辑,可以使数字要素能够更好地 表示空间地理实体,进行科学的定量分析和美观的地图表达;同时望界面更友好, 用户使用起来效率更高。 二 国内外现状和发展趋势以及本课题的主攻方向 在一般的gis软件中都提供了丰富的编辑功能。 arcinfo8.0的编辑模块提供了多种图形编辑方式,可以对地图变形进行纠正, 支持对复杂目标的编辑修改,可对图形动态拖动,旋转,平行拷贝,可自动建立拓 扑关系

5、,建立图形和属性的对应关系等。 arcedit是一个图形和数据编辑器,它把cad的功能和地理数据库的能力联合在 一起。还把数字化地图的所有功能和一套综合的编辑命令结合起来,能够编辑要素 属性,加上高质量的文本注释,可用其它数据库层作为背景显示,容易诊断和修改 数字化的错误,以及实现图幅伸缩和图幅边缘匹配等。arcedit具有以地图要素为 编辑的基本单元的优点,可以移动,拷贝,增加,删除,改形和更新点,线,面以 及地图注记,甚至线间独立的点也能被移动,增加或删除;线段能够被改形,光滑, 或取直,拐角可以变成直角,还可以产生平行线;注释文本能够被缩放,转动,匀 称排列,根据线要素来定字型,以及由一

6、点向任何方向偏移。 arcmap 把传统的空间数据编辑,查询,显示,分析,报表和制图等gis功能集 成到一个简单的可扩展应用框架上。arcmap包含了一个复杂的专业制图和编辑系统, 既是一个面向对象的编辑器,又是一个完整的数据报表生成器。arcmap可以看成能 够完成制图和编辑任务的arcedit和 arcplot 的合并。 arcmap完全以菜单方式驱动既可以被非技术化的用户熟练掌握,也能够为资深的 gis专家提供完整的工具。 一般说来交互式编辑是空间数据处理的重要环节。长期以来,gis软件的图形 编辑功能较cad软件弱。在一些项目中,混合使用cad软件和gis软件进行空间数据 建库工作,增

7、加了建库成本,延长了项目周期。 针对这一问题,supermap gis 突 破了传统gis在图形编辑方面的局限,在方便、灵活的可视化编辑基础上,开发了 丰富的智能捕捉功能,有效提高了地图编辑的精度和速度。 当待画点与已有图素 点重合、待画线段与已有线段平行、垂直,落在已有线段上或其延长线上,自身水 平、垂直等特性得到满足时,系统以图标方式智能提示用户,提高了制图的准确性 和效率。 本课题旨在研究各种图形编辑工具,糅合各种软件图形编辑工具的优点,然 后针对在具体作业过程中存在的有缺陷的地方进行改进,从而便于用户的操作使用。 三 该课题主要研究内容,途径以及技术路线 传统gis开发平台均采用专门的

8、设计开发语言,加上庞大的函数和命令库进行 开发,这样就面临着开发难度大,投入高,周期长,可重用性差的问题;而组件式 gis很好地解决了这些问题。即将复杂的gis功能按照对象、功能、应用等层次分解 为可以互操作和自我管理的组件,并由一种特定的平台或语言开发,能够在其他的 平台或语言中重复使用。 ao组件是esri公司推出的arcgis家族中应用程序arcmap、arccatalog和 arcscene的开发平台,是基于微软的组件对象模型(com)技术开发的一系列com组件 集。开发人员可以使用任何一种兼容com 的编程语言扩展ao组件,定制符合自己要 求的组件。 在目前常用的ao开发中有2个主要

9、的高级通用控件: mapcontrol,pagelayoutcontrol。它们都是由ao基础组件集成向用户提供地图 视图窗口。其中mapcontrol控件提供了类似arcmap中的数据视图(data view)的视 图窗口,该窗口可以使地图数据布满整个客户区便于对地图数据进行操作,如地 图显示、要素编辑、空间和属性数据查询、地图数据分析等。通过以上两个控件可 以实现arcmap中的绝大部分功能。 用ao进行系统的开发有多种方式,为实现一个具备常用图形编辑功能并能够脱 离arcgis独立运行的程序,常用的开发方式就是新建一个exe工程,将ao引入后编 写代码完成特定功能。这种开发方式的优点在于

10、:开发人员可以从某个组件库中取 出所需的某个组件快速组装到一起,以构造所需的应用程序,从而加快应用程序的 开发;能有一个全新的用户化界面,并且脱离arcgis桌面软件而独立运行。 这种方法糅合了ao和面向对象的思想的开发方式一方面利用ao所提供的强 大而丰富的接口,提高了开发的效率;另一方面以面向对象的思想进行功能模块的 设计,思路清晰便于实现,并且具有很好的扩充性和复用性。该算法对时空数据 库中单一图层的图形编辑具有参考价值。 该课题主要任务是利用ao和vb完成图形编辑工具包的设计,这些编辑功能大体可以 分成四大类:1 一些最基本的功能 如放大,缩小,漫游,全图显示 2 最基本的图形编辑,包

11、括以下几个方面 a 图形要素进行选择 b 改变图形形状 用户可以根据拖拉图形给它增加节点来改变形状 c 移动图形位置 用户可以将图形移动到任意位置 d 编辑图形结点 如增加结点,删除结点,移动结点 e 删除图形要素 可以删除所选中的图形 f 新建图形要素 可以在任一层新建与该层属性相同的地物 g 打断图形要素 通过绘制一条线段将所选择的图形要素打断 h 注记 3 基本图形的绘制 如点,线,折线,圆,多边形 在鼠标点击处画点, 线是通过确定起点和终点的坐标来画线,折线则是确 定一系列的拐点的坐标,将其用线连接。圆则是通过确定圆心和半径来绘出 4 其他功能 a 添加图层 b 将图层保存为jpeg格

12、式的图像输出 c 设置鹰眼导航功能 d 察看图元属性 e 察看图层列表 从总体上可以将研究的路线归结为以下的步骤: 1 熟悉gis相关软件的图形编辑功能,然后确定所要开发的工具包所应包括的 功能 2 将图形的各种编辑功能分成几个模块,各个模块完成相关的功能,这样可以 避免界面的杂乱无章,便于用户进行选择 3 所开发系统的界面设计,要求是简洁美观,便于用户使用 4 用vb+ao 完成各个功能的程序编写 5 进行测试 6 功能的修改和完善,对于不完善的功能,对程序进行修改,然后再检查遗漏 的功能,务必使这个工具包功能完善。 四 所查阅的相关资料 1arcinfo 基础教程 测绘出版社 关泽群 秦昆

13、 2 gis 8 desktop 地理信息系统应用指南清华大学出版社 党安荣 贾 海峰 易善桢 刘钊 3 mapinfo7中文版入门与提高 清华大学出版社 杜巧玲 吴秀勤 张淼 以及在网上下的一些电子书籍 1editing_in_arcmap 2exploring_arcobject 3getstartedinvb 4getstartedmapcontrol 5using_arcmap 五 研究的主要阶段,进度及完成时间 该研究主要分为四个阶段: (1) 2006 年第二学期前三周完成论文的开题,明确所要研究的内容及相关方面, 需要搜集的资料,从整体上把握该课题的结构以及从细节上明确所需要做的

14、 工作。 (2) 第 4 至 13 周完成论文的研究工作 其中第 4 周熟悉 arcmap 中基本图形编辑功能,了解需要哪些图形编辑工 具 第 5 周到 13 周完成程序的设计与开发,即开发一个图形编辑工具包。 (3) 14 周完成论文的写作 (4) 15 周论文答辩 i 目录 摘要摘要 第第 1 章章 绪论绪论.1 1.1 研究的目的和意义.1 1.2 研究内容.2 第第 2 章章 地理信息系统的二次开发技术地理信息系统的二次开发技术.3 2.1 gis 开发的三种方式 .3 2.2 组件与面向对象的组件模型com.4 2.3 组件 gis 概述.5 2.4 ao 组件.8 2.5 调用 m

15、apcontrol控件开发独立应用程序.10 第第 3 章章 gis 中的图形编辑理论中的图形编辑理论.13 3.1 图形编辑概述.13 3.2 常用软件的图形编辑功能分析.13 3.3 ao 体系中的图形编辑.14 第第 4 章章 功能设计及实现功能设计及实现.17 4.1 设计内容.17 4.2 程序设计总结.33 第第 5 章章 结束语结束语.35 致谢致谢.36 参考文献参考文献.37 摘要 com技术是新一代的组件式gis发展的主流。本文在组件式gis技术发展的背 景下,分析了com 与组件式gis的关键技术及arcobjects的体系结构,同时结合 空间数据处理中的图形编辑的有关知

16、识,基于arcobjects和vb的组合开发了一 个小应用程序,该程序着重研究几种具体的图形编辑功能以及其他相关功能。 关键词:com gis 组件式gis arcobjects 图形编辑 abstract com technique is the mainstream of modem component gis development in the context of developing package gis technology this paper analyzs the key technique of com,component gis and the structure o

17、f 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 gi

18、s componentgis arcobjects graphic editing 1 第 1 章 绪论 1.1 研究的目的和意义 本文在组件式gis技术发展的背景下,分析了com与组件式gis的关键技术及 arcobjects的体系结构,结合空间数据处理中的图形编辑的有关知识, 着重研究 如何利用ao组件和vb结合对地理信息系统的图形编辑功能方面进行二次开发,并实 现了几种具体的图形编辑功能以及其他相关功能。 地理现象形态各异、复杂多变。人们通常以呈点状分布的、呈线状分布的、呈 面状分布的和呈体状分布的四种几何类型来抽象观察和描述地理现象。在进行二 维的矢量表达时,地理现象又被进一步抽象为点

19、状图形、线状图形和面状图形。所 有点状、线状和面状图形构成了gis图形编辑的问题空间。从图形分类的角度出发, 对gis图形编辑的问题空间进行分割,得到点对象、线对象和面对象三类对象。 目前世界上常用的gis软件已达400多种。它们大小不一,风格各异。在gis的 各种软件中,图形编辑功能占据了重要的一部分,这个模块所包含的功能最琐碎。 从广义的方面来来说,图形编辑主要包括拓扑关系建立,图形编辑,图形整饰,图 幅拼接,图形变换,投影变换,误差校正等功能。从狭义的方面来说,图形要素选 择,图形大小调整,图形的颜色改变,图形节点编辑,图形方向旋转以及删除等操 作这些是比较简单而常用的。此外还有一些复杂

20、操作,比如数字化的图形要素的缓 冲区生成,拼接处理,线段的延长与裁剪,线与多边形的分割和缩放与拉伸等。这 些操作都是gis中最基本的。而这些功能对于gis空间数据的表达,分析具有重要的 作用。 相对来说,gis的图形处理功能不如cad,cad处理的多为规则几何图形及其结 合,图形功能很强,属性库功能相对较弱。但是gis容量大,数据输入方式多样化, 分析功能强,这也是cad所不能比的。此外,一些通用的gis软件提供的图形编辑功 能非常的一般化,没有针对性;而且一些功能往往要分几个步骤才能完成,比如在 mapinfo中选择一个地物,要先选择所在图层,然后选择地物。因此研究各种图形 编辑功能对于gi

21、s来说的意义就相当重大 2 gis的二次开发有多种方式,应用比较广泛的是集成式的二次开发。它是指利 用专业的gis工具软件实现gis的基本功能,以通用软件开发工具尤其是可视化开 发工具(delphi,visual c+ visual basic .net)等为开发平台,进行二者的集成开发。 集成式开发主要有两种方式,基于ole/dde的二次开发和基于gis组件的二次开发。 其中后者利用gis工具软件生产商提供的建立在ocx基础上的gis功能组件(如 esri的mapobject,arcobject,mapinfo的mapx)采用可视化开发工具进行二次开发, 实现地理信息系统的各种功能,还可以根

22、据需要把相关组件进一步开发,开发出相 应的控件,与前者相比,利用控件开发速度快,占用资源少,且易实现许多底层的 编程和开发功能,更能表现出上述优点。 而本文研究的就是用esri的ao组件结合vb对gis的图形编辑功能进行二次开 发。 1.2 研究内容 本文主要研究的内容是在深入了解地理信息系统的前提下,掌握常用gis软件 的一些图形编辑功能,并了解gis二次开发的相关内容,初步掌握arcobject的开发 方法,然后基于arcobject技术利用vb编程编写一个小型的程序,实现并完善图形 编辑的功能以及其他相关功能。 3 第 2 章 地理信息系统的二次开发技术 2.1 gis 开发的三种方式

23、地理信息系统历经近四十多年的发展,已逐渐建立起其完整的技术系统和理论 体系,应用领域不断扩大,已形成一个多层次、多尺度的应用格局在技术进步和 应用需求的双重驱动下,gis软件技术体系得到迅速发展。从最早的gis模块逐步发 展为集成式gis、模块化gis、核心式gis和组件式gis等,其应用开发主要有三种方 式: (1)独立开发 指不依赖于任何gis工具软件,从空间数据的采集、编辑到数据的处理分析及结 果输出,所有的算法都由开发者独立设计,然后选用某种程序设计语言,如visual c+, visual basic, delphi等,在一定的操作系统平台上编程实现。这种独立开 发的优点是开发者有完

24、全的主动权,开发出满足自己行业需求的系统。 这种开发方式难度很大,不但要求开发者要有很扎实的gis理论知识而且还要 很强的软件开发实力。这种方式的好处在于无须依赖任何商业gis工具软件减少了 购买商业gis软件的成本。但对于大多数开发者来说,能力,时间,财力等方面的 限制使其开发出来的产品很难在功能上与商业化软件相比。 (2)宿主型二次开发 早期许多商用gis软件是以解释语言方式执行的,大多数gis平台软件都提供了 可供用户进行二次开发的脚本语言,如esri的arcinfo提供的arcmarcro language (aml)语言、arcview提供了avenue语言,mge提供了mdl,ma

25、pinfo公司的mapinfo professional提供了mapbasic语言等等。用户可以利用这些脚本宏语言以原cis工 具软件为开发平台,开发出针对不同应用对象的应用程序。 这种方式省时省心,也可以利用平台提供的基本的gis功能,但这种二次开发有 明显的不足,如:开发功能弱,综合处理能力不强;解释执行,效率不高;缺乏好 4 的保护机制,软件质量不易保证;语言规则千差万别,增加学习开发语言的负担; 不易保护软件成果等。 (3)集成式二次开发 集成式二次开发是指利用专业的 gis 工具软件,实现 gis 的基本功能,以通用软 件开发工具尤其是可视化开发工具为开发平台,进行二者的集成开发。集

26、成开发主 要有两种方式: 基于 ole/dde 的二次开发 用软件开发工具开发前台可执行应用程序,采用 ole automation 方式或利用 dde 方式启动 gis 工具软件在后台执行,利用回调(callback)技术动态获取其返回 信息,实现应用程序中的地理信息处理功能。 基于 gis 组件的二次开发 利用 gis 工具软件生产商提供的建立在 ocx 技术基础上的 gis 功能组件(如 esri 的 mapobjects,arcobject mapinfo 的 mapx 等),采用可视化软件开发工具进 行二次开发,实现地理信息系统的各种功能,还可以根据需要把相关的组件进一步 开发,开发

27、出相应的控件。与 ole automation 技术相比,利用控件开发速度快, 占用资源少,而且易实现许多底层的编程和开发功能。 综上所述,集成二次开发正成为应用 gis 开发的主流方向。日前许多软件公司 都开发了很多 activex 控件,合理选择和运用现成的控件,减少开发者的编程工作 量,使开发者避开某些应用的具体编程,直接调用控件,实现这些具体应用,不仅 可以缩短程序开发周期,使编程过程更简洁,用户界面更友好,可以使程序更加灵 活、简便。而本文所研究的也正是利用集成式开发中的第二种方式基于 gis 组 件进行 gis 的二次开发。 2.2 组件与面向对象的组件模型com 组件式对象模型(

28、com)不是一种面向对象的语言而是一种二进制标准,其作 用是使各种软件组件和应用软件能够用一种统一的标准方式进行交互,而建立在组 件基础上的应用程序几乎不用修改。大大提高了代码的应用性。 组件是具有以下特点的程序块:(1)具有一定结构和功能;(2)遵循一定的接口 5 标准;(3)单独或与其他组件一起共同完成特定的功能;(4)内部实现完全封装。组 件软件开发可以分成两个层次,即标准组件的开发和利用标准组件进行系统组件开 发。组件接口标准是组件协同工作的基础,也是组件软件开发的基础。目前有两个 公认的工业标准:微软的com和omg对象管理组织的corba。corba模型主要应用于 unix操作系统

29、平台上,而com则主要应用于windows操作系统平台上,因而有更广泛 的应用。com是microsoft公司提出的一种网络标准,可用于软件组件间跨越多个进 程、机器、硬件和操作系统进行互操作 。组件之间的接口是组件软件的关键,因 为接口是双方进行通信的基础 com接口有两个含义:(1)它是一组可以调用的函数; (2)接口是组件及其客户程序之间的协议。当使用com对象开发时,开发人员不能直 接使用com对象,而是通过接口访问对象获得。一个组件程序可以包含多个com对象, 并且每个com对象可以实现多个接口。 2.3 组件 gis 概述 传统gis虽然在功能上已经比较成熟,但是由于这些系统多是基

30、于十多年前的 软件技术开发的,属于独立封闭的系统。同时,gis软件变得日益庞大,用户难以 掌握,费用昂贵,阻碍了gis的普及和应用。组件式gis的出现为传统gis面临的多 种问题提供了全新的解决思路。组件式gis是软件组件技术在gis软件开发中的应用, 是指基于组件对象平台,以一组具有某种标准通信接口的、允许跨语言应用的组件 提供的gis。 组件式gis的基本思想是把gis的各大功能模块划分为几个控件,每个控件完成不 同的功能。各个gis控件之间,以及gis控件与其他非gis控件之间,可以方便地通 过可视化软件开发工具集成起来,形成最终的gis应用。 2.3.1 组件式 gis 的优点 一些g

31、is软件公司纷纷推出了基于com 技术,由一系列activex控件组成的gis二 次开发软件环境。这些软件具有以下主要优点: (1)软件小巧灵活,性价比高 由于传统gis结构的封闭性,往往使得软件本身变得越来越庞大,不同系统 的交互性差,系统的开发难度大。在组件模型下,各组件都集中地实现与自己最 6 紧密相关的系统功能,用户可以根据实际需要选择所需控件,最大限度地降低了 用户的经济负担。组件化的gis平台集中提供空间数据管理能力,并且能以灵活 的方式与数据库系统连接。在保证功能的前提下,系统表现得小巧灵活,而其价 格仅是传统gis开发工具的十分之一,甚至更少。这样,用户便能以较好的性能 价格比

32、获得或开发gis应用系统。 (2)无须专门gis开发语言,直接嵌入mis开发工具 传统gis往往具有独立的二次开发语言,对用户和应用开发者而言存在学习 上的负担。而且使用系统所提供的二次开发语言,开发往往受到限制,难以处理 复杂问题。而组件式gis建立在严格的标准之上,不需要额外的gis二次开发语言, 只需实现gis的基本功能函数,按照microsoft的activex控件标准开发接口。这 有利于减轻gis软件开发者的负担,而且增强了gis软件的可扩展性。gis应用开 发者,只需熟悉基于windows平台的通用集成开发环境,以及gis各个控件的属性、 方法和事件,就可以完成应用系统的开发和集成

33、。目前,可供选择的开发环境很 多,如visual c+,visual basic , visual foxpro,以及powerbuilder等都可直 接成为gis的优秀开发工具,它们各自的优点都能够得到充分发挥。这与传统gis 专门性开发环境相比是一种质的飞跃。 (3)gis功能强大 新的gis组件都是基于32位系统平台的,采用进程内自动化服务器(inproc) 直接调用形式,inproc可以作为动态链接库(dll)加载到客户端的地址空间中, 所以无论是管理大数据的能力还是处理速度方面均不比传统gis软件逊色。小小 的gis组件完全能提供数据浏览、数据编辑等基本数据操作,有的组件可以数据 拼

34、接、裁剪、叠合、缓冲区等空间查询与分析。 (4)开发简捷方便 由于gis组件可以直接嵌入mis开发工具中,对于广大开发人员来讲,就可以 自由选用他们熟悉的开发工具。而且,gis组件提供的api形式非常接近mis工具 的模式,开发人员可以像管理数据库表一样熟练地管理地图等空间数据,无须对 开发人员进行特殊的培训。这将使大量的mis开发人员能够较快地过渡到gis或 gmis的开发工作中,从而大大加速gis的发展。 (5)更加大众化 组件式技术已经成为业界标准,用户可以象使用其他activex控件一样使用 gis控件,使非专业的普通用户也能够开发和集成gis应用系统,推动了gis大众 化进程。组件式

35、gis的出现使gis不仅是专家们的专业分析工具,同时也成为普通 用户对地理相关数据进行管理的可视化工具。 (6)可扩展性 在组件式软件技术的背后,有一个十分庞大的组件资源库,用户可以从不计 7 其数的组件中挑选需要组件与组件式gis一起集成应用系统,极大地扩展了 comgis功能。世界上有许多软件公司在编写各种各样的控件,这些第三方控件差 不多可以解决任何通用软件编程中所遇到的问题。comgis是组件大家庭中的一员, 使用comgis集成应用系统,具有无限的扩展性。 2.3.2 组件 gis 的形式 组件式gis即将复杂的gis功能按照对象、功能、应用等层次分解为可以互操作 和自我管理的组件,

36、并由一种特定的平台或语言开发,能够在其他的平台或语言中 重复使用。目前组件式gis主要有两种形式: 一种是由可以实现制图与一般gis功能的activex控件集构成的组件式gis。这 些控件既可以通过属性、事件、方法等接口与应用程序进行交互,也可以在可视化 开发环境中集成构成应用系统。国内外具有代表性的有:esri公司出品的 mapobject,mapinfo公司推出的mapx武汉吉奥公司研发的geomap等。 另一种形式的组件式gis是基于microsoft com 技术构建一系列com 组件集, 用户可以利用这些组件开发各种gis功能,并在此基础上构建gis应用系统。这种开 发模式更为底层,

37、开发较为复杂,功能更为强大,以esri公司的arcobjects(简称 ao)组件为典型。 两种开发形式的软件都具有地图显示、图层控制、数据查询、地图符号化、专 题地图等基本功能。 2.3.3 gis 组件产品 为了顺应组件式gis的技术新潮流,目前国内外gis厂商纷纷推出了由一系列 activex控件组成的comgis软件,如mapinfo公司推出mapx,intergraph公司推出的 geomedia、超图公司推出supermapobjects、加拿大阿波罗科技集团的titan.esri 公司的mapobjects,arcobjects和最新arcgis 9. 0推出arcgisengi

38、ne, arcgis server等。 这为基于gis软件的系统开发带来了根本性的变革,即由过去的在gis平台提供 的二次开发环境下进行开发转变为在通用的软件开发环境下进行开发,这些gis组 件具有gis软件的基本功能,如多种格式数据的读取、分层显示、编辑、图形的缩 放、漫游、多种方式的查询、制图等。它们遵循了com标准,可以与可视化编程环 境中的非gis组件一起协调工作,共同完成gis的功能。 8 其中,arcobjects以其强大的功能深受gis开发者的青睐,利用这些组件式gis 工具软件结合可视化开发工具开发出高效无缝、成本低廉应用系统。所以本文选择 了基于ao和vb组合进行开发。下面具

39、体阐述一下ao组件。 2.4 ao 组件 2.4.1 ao 组件简介 ao组件是esri公司推出的arcgis家族中应用程序arcmap、arccatalog和 arcscene的开发平台,是基于微软的组件对象模型技术开发的一系列com组件集。 它提供了1800多个单独的基于com的组件,几百个具有良好文档说明的接口和数千 个方法,其中囊括了arclnfo和arcview中实现的所有功能,开发人员可以使用任何 一种兼容com 的编程语言扩展ao组件,定制符合自己要求的组件。因为基于com工 业标准,用ao开发的应用程序与主流it是兼容的、开放的、可移植的,很容易融合 到一个机构的系统中。 在a

40、rcgis 8x版本的ao开发中有2个主要的高级通用控件: mapcontrol和 pagelayoutcontrol。它们都是由ao基础组件集成向用户提供地图视图窗口。 mapcontrol控件提供了类似arcmap中的数据视图(data view)的视图窗口,该窗口 可以使地图数据布满整个客户区便于对地图数据进行操作,如地图显示、要素编 辑、空间和属性数据查询、地图数据分析等。pagelayoutcontrol控件提供了类似 arcmap中的版面视图(layout view)的视图窗口,该窗口主要用于制图输出可以 进行以下操作:制图版面设置、辅助要素设置、制图数据操作、地图整饰操作等。 通

41、过以上两个控件可以实现arcmap中的绝大部分功能。另外,arcgis 8x版本还 提供了sceneviewer控件,主要为arcgis 3d分析扩展模块提供3维可视化视图窗口, 同样可应用于ao组件编程。 与arcgis8相比,arcgis9最大的变化是它增加了两个基于arcobject的产品: 面向开发的嵌入式arcgis engine和面向企业用户的基于服务器的arcgis server。 这两个产品都支持包括windows、unix和linux在内的跨平台技术。 9 2.4.2 ao 组件开发类型 (1)vba的开发方式 利用嵌入arccatalog和arcmap中的vba宏进行嵌入式

42、开发。使用系统内置的vba 语言,可以快速地实现针对特殊需求的功能扩展和界面的定制;利用arcgis桌面应 用程序(如arcmap)内置的vba宏进行客户化,这种客户化只是修改一下arcmap的界 面或利用这些桌面软件内置的开发环境vba进行客户化,主要用于让桌面软件完成 一些重复性的工作或添加一些扩展的功能。这是最简单快速的方法,是有效利用现 有平台与数据的首选开发方式。其缺点是不能脱离桌面软件独立运行。 (2)创建自己的com组件 采用任意一种支持com 的高级语言(如vc、vb、delphi等),在ao组件的基础上 进一步创建自己的com组件,满足各种特殊的需求。可以新创建一个dll或者

43、ocx工 程,引用ao核心库,定义自己的接口、属性、方法底层功能调用ao组件加以实现。 所生成的com组件具有很大的灵活性可以应用在由任何支持com 的语言开发的独 立应用程序中,但这种开发方法需要较高的组件开发技术。 (3)开发独立的应用程序 在支持com 的高级编程语言环境下,应用ao组件提供的强大的gis和制图功能, 自行开发符合要求的专业化gis系统。这种开发方式的一般过程就是新建一个exe 工程,将acobjects库引入,然后编写代码完成特定功能。其优点是:开发人员可 以根据系统的实际需要,从组件信息技术库中选择需要应用的组件快速整合系统, 所生成的应用程序不依赖于arcgis桌面

44、版软件而独立运行,为专业人士提供了方便、 友好的操作方式。独立应用程序的开发方式由于脱离了arcgis软件环境,不能使用 application对象组件,因此由application对象组件所建立的应用程序框架及其管 理的对象都不能使用。只能使用mapcontrol控件和sceneviewercontrol控件和它们 所支持的下层组件,并且是下层组件对象实现以后,已创建的上层组件对象才能使 用。因此,这是一种由低到高的开发模式,开发难度较大。 本文所采用的方法就是用第三种方式开发独立的应用程序。这种方法难度比较 大,但是开发的程序可以独立运行,而且比较灵活,系统针对性强,所以前景很广 阔。 2

45、.4.3 ao 的对象和属性 10 ao组件库的每一个组件中定义有不同的类,类下面定义了不同接口,接口中包 含不同的属性和方法。类之间有类型继承(type inheritance)关系,接口之间有互 相调用(querylnterface)及相互继承(interface inheritance)关系 (1)类 ao中的类有三种:abstract classes,coclasses和classes。coclasses可在 开发环境中直接定义并实例化;classes不能直接实例化,只能从其他类接口的属 性函数或其他方法的输出参数中获得;abstract classes为抽象类,不能定义及实 例化,只

46、是用来派生其他类 (2)类的类型继承 类型继承是指类之间的接口类型的继承,而不是继承其实现。element类有六 个接口,graphicelement继承于element,它有八个接口,包括自身的两个接口和 类型继承于element的六个接口。继承过来的接口只是名称相同,具体的实现则不 同 (3)接口 类下面包含不同接口,接口名前都有“i”字母。如featureclass类包含 ifeatureclass,idataset,itable等不同接口。不同的coelasses可有同一个接口, 如featureclass类有ifeatureclass接口,而relquerytable类也有ifeat

47、ureclass 接口: (4)接口调用 两个接口之间是否可以相互调用要满足一个条件:它们要同属于一个类,如类 featurelaver包含ifeaturelayer接口和idataset接口。如果已知ifeaturelayer的 指针,则可得到idataset的指针。 (5)接口继承 如imapframe接口和imapsurroundframe接口继承于iframeelement接口,则父 类接口iframeelement所具有的方法和属性对派生接口lmapframe和 imapsurroundframe都有效。 2.5 调用 mapcontrol 控件开发独立应用程序 应用 arcobje

48、cts 定制和嵌入式开发具有强大的功能,并且能满足大多数用户 的需求。因为一些用到在 arcmap 和 arccatalog 中预先定义好的功能以及内置 vba 环境的开发方式使庞大的系统占据了大量的系统资源、运行缓慢,系统的针对性不 11 强,实际上只有 10%-20%的系统功能得到应用,造成浪费,所以建立独立应用程 序的开发方式仍有很大的市场。 2.5.1 mapcontrol 控件 arcobjects提供的mapcontrol地图控件能够访问arcobjects对象模型,包括符 号化、地理处理、几何操作等对象,以及arcgis的其它核心功能。进行独立应用程 序开发的有利和限制条件 有益

49、方面: 用户自己定义系统的界面和功能,不受arcmap, arecatalog等的限制 自主选择开发环境 系统相对较小,运行迅速容易发布 限制方面: 不能建立和保存为.mxt、.mxd文件 不能利用arcmap,arecatalog等预先设置的功能 不能使用开发框架的便利 不能使用扩展和编辑工具 许可限制:必须运行在安装了arcgis的机器上 2.5.2 开发独立应用程序的一般步骤 1 开发环境的选择 凡是支持com协议,能调用com组件的面向对象的编程语言都能够用于 arcobjects的二次开发。实际常用的主要有visual c十十、visual basic。和 delphi。其中使用最多

50、的是vb,这是因为vb与vba是同一种语言,使用手册和例程 等都是使用vba编写的,其可读性和移植性好,这样就提供了极大的便利。但是vb 在一些需要进行自定义要素等需要com底层实现的开发技术方面就有些力不从心了, 而vc则没有这样的限制。 2 程序功能和结构框架设计 根据程序应用的专业领域方向和用户需求以及用户的层次、水平等确定程序的 功能。其后根据功能模块的不同进行总体结构框架设计,其目的是减少后面编程的 复杂度,协调和促进分工合作。 3 编程理念 12 在程序编写时要注意代码的通用性、可移植性和可重用性。因此一定要按照 com标准进行编写,对可重用模块的代码编译成dll库文件(动态连接库

51、),提高开发 效率,增强系统的安全性。 (4)建立工程 (5)引用控件mapcontrol (6)引用组件库esricore.olb (7)在窗体中加入控件 (8)进行界面设计 (9)编写代码 (10)实现程序功能 13 第 3 章 gis 中的图形编辑理论 3.1 图形编辑概述 在gis的各种软件中,图形编辑功能占据了重要的一部分,这个模块所包含的 功能最琐碎。从广义方面来讲,图形编辑主要包括拓扑关系建立,图形编辑,图形 整饰,图幅拼接,图形变换,投影变换,误差校正等功能。从狭义方面来讲,空间 数据处理中的图形编辑主要包括两个方面:结点的编辑和图形的编辑。结点的编辑 在gis中非常重要,它是

52、建立点,线,面关联拓扑关系的桥梁和纽带,结点编辑主 要有删除,移动,打断结点等。图形的编辑包括新建,删除,移动,拷贝,旋转点, 线,面实体,还有打断,合并实体 相对而言,图形要素选择,图形大小调整,图形的颜色改变,图形节点编辑, 图形方向旋转以及删除等操作这些是比较简单的。还有一些复杂操作,比如数字化 的图形要素的缓冲区生成,拼接处理,线段的延长与裁剪,线与多边形的分割和缩 放与拉伸等。这些操作都是gis中最基本的。而这些功能对于gis空间数据的表达, 分析具有重要的作用。 3.2 常用软件的图形编辑功能分析 与gis系统一样,cad具有参考系统,能描述图形数据的拓扑关系,也能处理非 图形属性

53、数据。它们的主要区别是cad处理的多为规则几何图形及其结合,图形功 能很强,属性库功能相对较弱。一般来说,gis的图形处理功能不如cad,但是gis 容量大,数据输入方式多样化,分析功能强,这也是cad所不能比的。在一些单位 的具体作业中,一般都选择cad来进行图形编辑,只有一些比较简单的编辑用 arcmap ,mapinfo 等软件,而比较复杂的编辑都是在arcedit中通过命令完成的, 这个非常的繁琐。 此外,一些通用的gis软件提供的图形编辑功能非常的一般化,没有针对性; 14 而且一些功能往往要分几个步骤才能完成,比如在mapinfo中选择一个地物,要先 选择所在土层,然后选择地物。

54、arcinfo8.0的编辑模块提供了多种图形编辑方式,可以对地图变形进行纠正, 支持对复杂目标的编辑修改,可对图形动态拖动,旋转,平行拷贝,可自动建立拓 扑关系,建立图形和属性的对应关系等。 arcedit是一个图形和数据编辑器,它把cad的功能和地理数据库的能力联合在 一起。还把数字化地图的所有功能和一套综合的编辑命令结合起来,能够编辑要素 属性,加上高质量的文本注释,可用其它数据库层作为背景显示,容易诊断和修改 数字化的错误,以及实现图幅伸缩和图幅边缘匹配等。arcedit具有以地图要素为 编辑的基本单元的优点,可以移动,拷贝,增加,删除,改形和更新点,线,面以 及地图注记,甚至线间独立的

55、点也能被移动,增加或删除;线段能够被改形,光滑, 或取直,拐角可以变成直角,还可以产生平行线;注释文本能够被缩放,转动,匀 称排列,根据线要素来定字型,以及由一点向任何方向偏移。 arcmap 把传统的空间数据编辑,查询,显示,分析,报表和制图等gis功能集 成到一个简单的可扩展应用框架上。arcmap包含了一个复杂的专业制图和编辑系统, 既是一个面向对象的编辑器,又是一个完整的数据报表生成器。arcmap可以看成能 够完成制图和编辑任务的arcedit和 arcplot 的合并。arcmap完全以菜单方式驱动 既可以被非技术化的用户熟练掌握,也能够为资深的gis专家提供完整的工具。 一般说来

56、交互式编辑是空间数据处理的重要环节。长期以来,gis软件的图形 编辑功能较cad软件弱。在一些项目中,混合使用cad软件和gis软件进行空间数据 建库工作,增加了建库成本,延长了项目周期。 针对这一问题,supermap gis 突 破了传统gis在图形编辑方面的局限,在方便、灵活的可视化编辑基础上,开发了 丰富的智能捕捉功能,有效提高了地图编辑的精度和速度。 当待画点与已有图素 点重合、待画线段与已有线段平行、垂直,落在已有线段上或其延长线上,自身水 平、垂直等特性得到满足时,系统以图标方式智能提示用户,提高了制图的准确性 和效率。 3.3 ao 体系中的图形编辑 3.3.1 基本图形操作功

57、能的实现 图形显示是通过mapcontrol控件来实现通过它可获得esficoreolb提供的其 15 他组件接口,从而实现各种功能。mapcontrol控件也支持一些事件响应,如 mousedown,mousemovemouseup等,利用这些事件,可以实现图形的放大、缩小、 漫游等基本功能。 3.3.2 图层编辑及空间操作 美国环境系统研究所在构造地理现象的数据模型时,提出了要素(feature)的概 念,每一个要素都是一个地理现象的映射。ao 提供了一个与要素对应的接口 ifeature ,封装了要素的基本属性和对要素操作的基本方法,如设置和获得要素的 图形、要素的删除和要素的存储等。因

58、为ifeature 接口所封装的属性和方法是所 有图形对象共有的,所以自然就是把ao 的feature 类作为图形的基类,点图形类、 线图形类和面图形类都由feature 类派生得到。 在ao体系中,与编辑功能相关的对象类主要是: (1)geometry类。主要包括派生的point类、muhipoint类、line类、polyline类、 polygon类等。 (2)集合类。主要包括pointcollection类、geometrvcollection类、 segmentcollection类等 (3)空间操作符。主要包括itopologicaloperator接口、irelationalop

59、erator接口 iproximityoperator接口。合并的思路就是创建一个新的要素,用来存储合并后的 多边形;遍历所有被选择的图形,进行合并。 3.3.3 图形编辑的内容及过程 本文所研究的图形编辑方面包括地图的方大,缩小,漫游,全图显示,以及图层的 控制和选择,数据的输入输出等等。 其中具体的图形编辑方面涉及到 分割(线的分割) 移动(地块移动) 新增(点、线、面的新增,节点新增) 图形形状的改变 拾取 16 删除 属性注记 撤消、重复编辑操作 对时空数据库中单一图层的编辑分开始编辑、具体编辑操作、结束编辑、编辑 结果入库四个步骤。在开始编辑的环节中要完成选择待编辑的图层;待编辑图层

60、三 个操作检查通过后,得到编辑工作空间;协调用户版本和默认版本。如果协调版本时 没有出现问题,则开始编辑成功,进行具体的编辑操作。结束编辑要完成的操作是决 定是否在用户版本中保存编辑的结果。数据入库环节要把用户版本里的编辑结果提 交到默认版本中去,使得编辑的结果对所有的用户来讲都是可见的。 编辑操作的流程: 否 是 否 是 是 否 是 否 是否重复 开始编辑 具体编辑动作 redo 保存 undo 是否撤消 结束编辑 下一个编辑 是否保存 17 第 4 章 功能设计及实现 4.1 设计内容 本次实验是用 ao 和 vb 组合开发一个小型的图形编辑系统。新建一个工程,然 后装入 mapcontr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论