江 西 师 范 大 学 本科生毕业论文
基于ArcGIS的两种三维GIS开发方式的实现和比较
第一章 绪 论
1.1 研究背景
随着现代化的技术飞速发展,地理信息系统已经被广泛使用到各个领域中,而当前GIS的研究成果和应用系统主要集中于描述二维空间信息,各项技术已较为成熟
[1]
。但由于二
维地理信息系统将实际的三维实物采用二维的方式表示,具有很大的局限性,比如说它们只是便于做空间查询、分析等,然而有很多东西具有抽象性,不能直观的观察到,所以导致大量的多维空间信息无法得到利用。而与二维地图相比,地形地物的三维显示,给人创造出一种直观、身临其境的感觉,其显示方式也可以满足人们在综合处理、分析、评价、决策以及可视化等方面的需求
[2]
。因此,随着计算机图形学和硬件技术的迅猛推进,和各部门所需
要求的提高,特别是对重大事件的决策等,就需要直观的对比分析,达到一种身临其境的效果,于是,从二维的地理信息系统转变到地理信息系统的三维数字表示已成为目前GIS 科学发展的新趋势之一
[3]
。
近年来,越来越多的公司推出了三维图形显示软件,而 ESRI 公司推出的产品 ArcGIS Engine就是为我们解决这一问题提供了一个有效的途径。通常,我们用ArcGIS Engine做的三维开发主要用到的控件有两种,分别是SceneControl和GlobeControl。对于这两个控件,很多用户对之并不陌生,但在实际应用过程中,则对他们的作用和区别却不是很清楚。为此,基于这两个控件,设计实现两个系统,来体现两者的各种差异,并进行对比分析和探讨,显得尤为必要和重要。因此希望在总结前人精髓的基础上,能够借助本文将这些问题阐述清楚。
1.2研究目的和意义
论文研究目的主要是:研究这两个控件对数据的要求以及相应的数据预处理,基于两个控件开发后的系统性能、功能和应用范围的差异性,以及对电脑配置和要求上区别。并希望本文能够对以后学习三维开发的同学或研发人员提供一个有效的帮助,同时,也算是对自己本科期间做过的一些工作做简单的一个回顾和总结。
本论文研究的意义在于它能够简单明了的阐述基于ArcGIS Engine三维二次开发中基于SceneControl和GlobeControl两控件实现过程中功能和性能的区别,及其适用性差异等,解决了SceneControl和GlobeControl使用范围差异性不明朗的问题。
1 地理与环境学院
江 西 师 范 大 学 本科生毕业论文
1.3国内外研究现状
近几年,随着网络技术的飞速发展,GIS研究和应用也开始转向互联网,称之为WebGIS。WebGIS利用Intenet技术在Web上发布空间数据,为用户提供空间数据浏览、查询和分析的功能,具有应用范围广泛、平台无关性、操作简便等特点,同样,三维GIS也有转向Web的趋势
[4]
。然而,目前,这些三维WebGIS实验系统在数据模型、数据的存储、网络传输等
方面还存在许多缺陷,因此还没有得到实际应用,但可以肯定的是,他将是未来发展方向的主要趋势。总的来说,目前用的最多的还是用ArcGis Engine开发的桌面版软件系统,它的适用性强,可免受病毒侵害,因此不需要安全保护措施,并且开发周期短,界面友好,操作简单,以及各个功能融合性好,并发挥其功效。
另外,国内对三维GIS系统的开发和研究主要是基于OpenGL平台上陆续开发了一些应用系统,研究的主要方向主要有:三维可视化,三维查询漫游,动态显示、空间分析和交互操作,三维动态显示和操作等。比较先进的有:利用己有的立体测图地物数据、数字高程模型数据,结合其它基础地理资料(全野外测量数据、地形图数字化数据以及建筑物外表结构与纹理数据),获取城市区域的三维景观信息并进行一体化建模,制作三维城市景观图并能以图层的形式进行管理,从而对数据集成、多模态可视化、室内外三维一体化显示与漫游和多媒体属性查询有一个更深的研究
[5]
。
由此可见,很多国内外的研究更多的偏重于三维的可视化、网络化,三维的功能实现和三维的联动以及一些代码研究等,对于那些能够实现相同功能的控件之间的区别和适用性及其各自优势的研究,则相对较少,而这,正是本文的用意和重点所在。
1.4论文研究的内容和方法
研究内容主要是分析和研究ArcGIS Engine中两个三维控件在性能、功能和应用范围以及对电脑配置和要求上的异同点。具体如下所示:
1、其中性能的差异表现在:显示效果和相应速度;
2、功能主要研究的是:系统的主体功能,浏览和操作以及分析等方面,另外,
还涉及一些编程和控制的方便性;
3、对数据的要求体现在:数据的类型和格式及其预处理方式等;
4、对电脑的配置的要求体现在:对硬件如显卡、内存、CPU等的要求; 5、对适用性的研究主要包括:适用范围和适用对象; 6、另外其他的分析还包括:两者之间效果展示的对比。
研究方法主要有:
1、通过实例开发的实证研究法; 2、总结经验的经验总结法;
3、查阅文献和网上搜索的文献研究法;
4、向有关的导师请教和跟有经验的同学交流的功能分析法和描述性研究法。+
2 地理与环境学院
江 西 师 范 大 学 本科生毕业论文
第二章 三维开发控件简介
2.1 基于ArcGIS Engine的三维开发
2.1.1ArcGIS Engine 简介
我们知道,许多用户需要在他们熟悉的软件应用程序里面拥有直接访问专门的行业GIS的特定接口,他们不需要完全的GIS产品,只是需要在他们的应用程序中可以访问复杂的GIS逻辑。在用户需要GIS的定制接口的情况下,ArcGIS Engine就可以为普通的软件应用程序提供这样一个解决方案。
ArcGIS Engine是ESRI在ArcGIS 9.0版本才开始推出的新产品,是一个创建定制的GIS桌面应用程序的开发产品,它是一套完备的并且打包的嵌入式GIS组件库和工具库,开发人员可用来创建新的独立的或扩展已有的桌面地理信息系统(GIS)应用程序
[6]
。
ArcGIS Engine开发包包括 3个关键部分:控件、工具条和工具、对象库。控件是ArcGIS用户界面的组成部分, 它可以嵌入并在你的应用程序中使用。工具条是 GIS工具的集合, 工具在应用界面上用工具条的方式展现。它包括如平移、缩放、点击查询和与地图交互的各种选择工具。对象库是可编程 ArcObjects组件的集合, 包括几何、显示和三维分析等一系列库, 使得程序可以开发出从低级到高级的各种定制的应用。
ArcGIS Engine支持多种应用程序接口, 拥有许多高级 GIS功能,而且构建在工业标准基础之上,具备快速开发和功能扩展能力,可以非常方便地开发出功能强大的 GIS应用系统。ArcGIS Engine 除了具备所有 GIS 的核心功能外,还提供了大量的扩展功能,如更新和创建多用户地理数据库,3D分析和空间分析等。 由于ArcGIS Engine所具有的上述特征, 因此利用ArcGIS Engine 进行开发兼具了可移植性好、扩展性强、跨平台以及系统稳定性好的优点。
使用 ArcGIS Engine ,开发人员可以将 GIS功能嵌入到已有的应用软件中,或嵌入到商业生产应用软件中,还可以创建集中式自定义用软件, 并将其发送给机构内的多个用户。另外,它还可以在非GIS为核心的应用程序中嵌入GIS逻辑,利用ArcGIS桌面软件的制图功能,快速的部署包含高质量地图产品的GIS应用程序,建立专门的数据编辑应用程序,创建球体可视化应用程序来展现空间和三维分析,创建数据集的地理编码和路径分析应用程序。
ArcGIS Engine面向的用户并不是最终使用者,而是那些技术上复杂的专业GIS公司、需要开发企业级GIS和地图制图解决方案的大型单位机构、GIS行业及其垂直产业的第三方解决方案的开发者,以及那些想要向非GIS核心的应用程序中添加GIS和地图制图功能的开发者,也就是GIS项目程序开发员。
3 地理与环境学院
江 西 师 范 大 学 本科生毕业论文
2.1.2 ArcGIS Engine 中的三维开发控件
ArcGIS Engine为三维的二次开发提供的一个可选扩展的模块是3D模块,通过这个模块可以实现地形表面建模、海量数据的交互3D浏览、三维分析等功能,而控件之间的互相联系则是实现整个系统功能的关键所在。
ArcGIS Engine开发控件有很多,但有关于三维开发的控件并不多,主要包括: GlobeControl、SceneControl、TOCControl和LicenseControl。另外还有一些控件如:ToolbarControl、SymbologyControl、ReaderControl、MapControl、PageLayoutControl等,但它们一般用在工具条的定制,符号样式的选择,二维地图的分析以及制图分析等,在三维的二次开发中并不常用,即便用也主要是用在与三维的联动方面,因此这里就不做细论,简而概之。
GlobeControl是“三维地球显示”控件,封装了GlobeViewer对象,可以加载ArcGlobe制作的Globe文档,内置了导航功能,部署是需要ArcGIS Engine的3D运行是选项。它也是专门用于显示三维数据的地图控件,同时也具有对专题地图的三维浏览、漫游以及控制显示,具备大范围海量三维数据的显示漫游功能。
SceneControl是“三维场景显示”控件,封装了SceneView对象,可以加载ArcScene制作的Scene文档,内置了导航功能,部署是需要ArcGIS Engine的3D运行是选项。它实现对专题地图的三维浏览、漫游以及控制显示,该控件是专门用于显示三维数据的地图控件,它使得AE在三维开发方面得到了极大的扩展,但该控件只适合于小量数据在小范围内的投影。
LicenseControl是许可证控件,提供ArcGIS Engine的功能许可,可通过属性扩展和定制许可证保证程序的正常运行,在其他控件前先加载。
TOCControl是内容表控件,主要实现对专题地图的分层显示与管理,并提供图例,支持对图例的修改。需要“伙伴控件”协同工作,提供一个交互树视图保持与“伙伴控件”同步,“伙伴控件”可以是一个 MapControl,PageLayoutControl,ReaderControl,SceneControl 或者 GlobeControl。
另外,MapControl控件是“地图”视图显示控件,封装了Map对象。 MapControl控件主要用于地图的加载和管理以及显示和分析等,可与三维控件联动使用,例如鹰眼。
PageLayoutControl控件是“布局”显示控件,封装了PageLayout对象,主要用于地图的修饰和整理,可以用于生成一幅成品地图,可与三维控件联动使用,用于二维出图。
SymbologyControl是样式控件,主要用于地图文档的符号化,可加载和显示*.ServerStle文件,在三维控件中,主要用于3D符号化。
ToolbarControl是工具条控件,主要提供功能按钮来实现对专题地图的打开、浏览等操作,并可以驻留操作其“伙伴控件”的命令、工具和菜单,需要“伙伴控件”协同工作。该控件一般用的较少,因为工具条一般都是自己做,而这样保证用户界面的美观,个性化。
[7]
4 地理与环境学院
江 西 师 范 大 学 本科生毕业论文
[8]
2.1.3 ArcGIS Engine中的三维开发类库
本文在开篇在介绍过,基于ArcGIS Engine实现三维的二次开发并进行一个效果的展示,主要用到两个大控件,SceneContol和GlobeControl,而在这两个控件中在使用中自然而然的会用到很多类库,且两者之间大多共用。随后,本文将简单的介绍一下在三维开发中主要用到的几个类库,来说明这些类库在三维开发中的重要作用,以及不同类库在不同控件的表现形式和区别。
图 2.1 各类库结构图
5 地理与环境学院