基于ArcGIS的两种三维GIS开发方式的实现和比较 - 图文

更新时间:2024-01-11 18:48:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

江 西 师 范 大 学

本 科 生 毕 业 论 文

中文题目 :基于ArcGIS的两种三维GIS开发方式的

实现和比较

English Title: Two three-dimensional GIS-based

ArcGIS Implementation and Evaluation of

development methods

学 号: 0707070023 姓 名: 焦 志 锋 学 院: 地 理 与 环 境 学 院 指导老师: 方 朝 阳 (教 授) 专 业: 地 理 信 息 系 统 完成时间: 2011年4月25日

声 明

本人郑重声明:

所呈交的毕业设计(论文)是本人在指导教师指导下进行的研究工作及取得的研究成果。其中除加以标注和致谢的地方,以及法律规定允许的之外,不包含其他人已经发表或撰写完成并以某种方式公开过的研究成果,也不包含为获得其他教育机构的学位或证书而作的材料。其他同志对本研究所做的任何贡献均已在文中作了明确的说明并表示谢意。

本毕业设计(论文)成果是本人在江西师范大学读书期间在指导教师指导下取得的,成果归江西师范大学所有。

特此声明。

声明人(毕业设计(论文)作者)学号: 声明人(毕业设计(论文)作者)签名:

签名日期: 年 月 日

江 西 师 范 大 学 本科生毕业论文

基于ArcGIS的两种三维GIS开发方式的实现和比较

摘 要

随着网络和GIS技术的发展和行业应用需求的增加,三维GIS的开发应用已经深入到各行各业,为了更快速和更有效地在不同的行业中推广和使用三维GIS,实现和比较各种不同的三维GIS实现方式是一项既基础又重要的工作。一个通用的基于ArcGIS的三维GIS开发方法是基于ArcGIS Engine的二次开发模式。以开发语言为C#为例,其中可用的控件又有两种,分别是SceneControl和GlobeControl。本文基于这两个控件,设计实现两个系统,分别针对系统性能、功能和应用范围等的差异性来分析两者之间的各种区别,并深入探讨这种区别的原因。分析结果可作为三维GIS设计和实现过程中的参考。

关键词:三维GIS ArcGIS Engine SceneControl GlobeControl 对比分析

研究类型:应用研究

I 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

Two three-dimensional GIS-based ArcGIS Implementation and Evaluation of development

methods

Abstract

As networks and GIS technology development and increased demand for industrial applications, development and application of three-dimensional GIS has gone deep into all walks of life, in order to more quickly and more effectively in different industries in the promotion and use of three-dimensional GIS, implementation and compare different three-dimensional GIS is a way to achieve both the basic and important work. A common three-dimensional GIS ArcGIS-based development approach is based on ArcGIS Engine secondary development model. To develop language for the C # example, where there are the two available controls, respectively SceneControl and GlobeControl. Based on these two controls, designed and implemented two systems, respectively, for system performance, function and application scope to analyze the differences in the various differences between the two, and looking into the reasons for this difference. The results can be used as three-dimensional design and implementation of GIS in the process of reference.

Key words: Three-dimensional GIS, ArcGIS Engine, SceneControl,

GlobeControl, comparative analysis

Research Type: Applied Research

II 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

目 录

第一章 绪 论 ······················································································································· 1 1.1 研究背景 ······························································································································ 1 1.2研究目的和意义···················································································································· 1 1.3国内外研究现状···················································································································· 2 1.4论文研究的内容和方法 ········································································································ 2 第二章 三维开发控件简介 ···································································································· 3 2.1 基于ArcGIS Engine的三维开发 ······················································································· 3 2.2三维开发控件的实现 ············································································································ 8 2.3 ArcScene和ArcGlobe应用程序的比较 ············································································· 9 第三章 系统的总体设计 ······································································································ 10 3.1 系统的需求分析 ················································································································· 10 3.2 系统研制目标及规定要求 ································································································ 10 3.3 系统开发设计 ···················································································································· 11 3.4 数据要求及预处理 ············································································································ 11 3.5 功能模块划分 ··················································································································· 12 第四章 系统开发设计与技术实现 ······················································································· 14 4.1 系统开发的控件定制 ········································································································ 14 4.2 开发过程及其主要代码实现 ···························································································· 14 第五章 不同实现方式的对比分析 ······················································································· 21 5.1性能对比 ···························································································································· 21 5.2功能对比 ···························································································································· 22 5.3所需的要求对比················································································································· 22 5.4 其他对比 ··························································································································· 23 第六章 总 结 ·················································································································· 26 6.1论文研究成果 ···················································································································· 26 6.2 论文的不足及进一步工作展望 ························································································· 26 参 考 文 献 ····························································································································· 27 致 谢 ··································································································································· 28

III 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

基于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 地理与环境学院

江 西 师 范 大 学 本科生毕业论文 在ArcGIS Engine中,有关于三维开发的类库有很多,但主要的几个有:System类库,SystemUI类库,Geometry类库,Display类库,Output类库,GeoDatabase类库, DataSourcesFile类库,DataSourcesRaster类库,Carto类库,Controls类库,GeoAnalyst类库,3DAnalyst类库,GlobeCore类库,SpatialAnalyst类库。 System类库

System类库是ArcGIS体系结构中最底层的类库,它提供了一些可以被其他组件库使用的组件,而这些组件都是非常基本的。System类库定义了大量开发者可以实现的接口,开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。因此,在三维开发中,这是必不可少的类库,SceneContol和GlobeControl都必须用到。 SystemUI类库

SystemUI类库包含用户界面组件接口定义,这些用户界面组件可以在ArcGIS Engine中进行扩展。包含ICommand、ITool和IToolControl接口。这个类库中包含的对象是一些实用工具对象,开发人员可以通过使用这些对象简化用户界面的开发,开发者不能扩展这个类库,但可以通过实现这个类库中包含的接口来扩展ArcGIS系统。因此,在三维开发中,这一类库主要用于用户界面的开发,SceneContol和GlobeControl都必须用到。 Geometry类库

Geometry类库处理存储在要素类中的要素几何图形或形状或其他图形元素,在三维开发中,这一类库主要用于进行要素的表达,SceneContol和GlobeControl都必须用到。 Display类库

Display类库包含用于显示GIS数据的对象。除了负责实际输出图像的主要显示对象外,这个类库还包含表示符号和颜色的对象,它们用来控制在显示上绘制时实体的属性。Display类库的所有部分都能进行扩展;通常扩展的对象包括符号、颜色和显示反馈。这一类库在三维的开发中,主要用于数据的显示和图层的渲染以及图像的输出等,只有用时才被需要。 Output类库

Output类库用于创建图形输出到诸如打印机和绘图仪等设备及诸如增强型元文件和栅格图像格式(JPG、BMP等)等硬拷贝格式,开发人员用这个类库中的对象及ArcGIS系统的其他部分创建图形输出。这一类库在三维的开发中,主要用于场景出图,只有用时才被需要。 GeoDatabase类库

Geodatabase类库中的对象为ArcGIS支持的所有数据源提供了一个统一编程模型,GeoDatabase类库定义了许多由ArcObjects架构中更高级的数据源提供者实现的接口,开发者可以扩展地理数据库,以支持特定类型的数据对象(要素、类等),地理数据库支持的本地数据类型不能扩展。这一类库在三维的开发中,主要用于数据的加载。 DataSourcesFile类库

DataSourcesFile类库包含用于基于文件数据源的GeoDatabaseAPI实现,开发者不能扩展DtaSourcesFile类库。这一类库在三维的开发中,主要用于文档的加载。

6 地理与环境学院

江 西 师 范 大 学 本科生毕业论文 DataSourcesRaster类库

DataSourcesRaste类库包含用于栅格数据源的GeoDatabaseAPI实现,开发者不能扩展DataSourcesRaster类库。这一类库在三维的开发中,主要用于栅格数据的使用和处理。 Carto类库

Carto类库支持地图的创建和显示,这些地图可以在一幅地图或由许多地图及其地图元素组成的页面中包含数据。这一类库在三维的开发中,主要用于二维制图方面,与三维联动。 Controls类库

开发者用Controls类库来构建或扩展具有ArcGIS功能的应用程序,开发者通过创建自己的用于操作控件的命令和工具来扩展Controls类库。这一类库在三维的开发中,主要用于工具条的定制。 GeoAnalyst类库

GeoAnalyst类库包含支持核心空间分析功能的对象,开发者可以通过创建新类型的栅格操作来扩展GeoAnalyst类库。这一类库在三维的开发中,主要用于栅格数据的空间分析。 3DAnalyst类库

3Danalyst类库包含操作3D场景的对象,而Scene对象是3Danalyst类库中主要对象之一,与Map对象一样,是数据的容器。一个场景由一个和多个图层组成,这些图层规定了场景中包含的数据及这些数据如何显示,开发者很少扩展3Danalyst类库。这一类库在三维的开发中,主要用于SceneControl控件。 GlobeCore类库

GlobeCore类库包含操作globe数据的对象, Globe对象是GlobeCore类库中主要对象之一,与Map对象一样,是数据的容器。一个golbe有一个和多个图层,这些图层规定了golbe中包含的数据及这些数据如何显示。这一类库在三维的开发中,主要用于GlobeControl控件。 SpatialAnalyst类库

SpatialAnalyst类库包含在栅格数据和矢量数据上执行空间分析的对象,开发者通常使用这个类库中的对象,而不扩展这个类库。这一类库在三维的开发中,主要用于空间分析。

最后,在使用ArcEngine提供的类库时,我们一般要在工程--“引用”中添加对该库的引用,另外,我们在工程中最好还要对所使用的命名空间作一下引用,这主要是为了方便我们以后代码的输入,例如,

using ESRI.ArcGIS.Analyst3D; using ESRI.ArcGIS.Controls using ESRI.ArcGIS.Display;

其中,using使用的是命名空间,而在工程--“引用”中添加的是程序集,这两者并不是一一对应的关系,一个程序集的库可以分布在多个命名空间中,反之亦然。

7 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

2.2三维开发控件的实现

一个控件能够实现那些功能主要看这个控件封装和引用了哪些类,定义了哪些方法和属性,且必须知道这些类能够做什么,这些方法和属性又有什么用。但由于方法和属性太多,本文就不在这里赘述,仅从另一个角度来说明这个问题。

2.2.1 SceneControl控件实现

从控件的功能实现角度来讲,Scenecontrol控件封装了SceneViewer类,且引用了上述的大部分类库。在前面我们已经知道各个类库的主要作用,而对于SceneViewer类,它其实是SceneControl控件所特有的,主要用于定义3D浏览器。

另外,Scenecontrol在管理方面:包含Scene appearance、Scene、Scene graph、Camera properties四个对象,而这些对象实现了我们所需要的大部分基础功能,比如数据的可视化、表面生成和分析等等。

在命令和工具方面:定义了漫游,缩放,飞行,选择,观察等 在加载文档方面:可加载Scene文档

在工具条方面:可实现ControlSceneSceneToolbar 在类库方面:esriSceneControl.ocx和esri3Danalyst.olb

相对于本文的系统,由于时间的限制,则显得较为简单,主要包括:菜单栏中文档的加载、保存场景图片等;图层的基本操作,如图层的删除,缩放到图层等;场景浏览操作,如漫游、缩放、旋转、飞行、放大、缩小、显示全图、前视、后视等;除了这些基本功能之外,还包括一些应用操作和分析如: 属性查询、空间查询、测量、栅格数据的拉伸和渲染、淹没的演示、视频的录制等,

2.2.2 GlobeControl控件实现

从控件的功能实现角度来讲, GlobeControl封装了GlobeViewer类,且引用了上述的大部分类库。而GlobeViewer 对象和 SceneViewer 一样,用于定义3D浏览器。

另外,GlobeControl在管理方面又包含Globe appearance、 Globe、GlobeDisplay、GlobeCamera properties四个对象,同样,这些类库也实现了大部分基础功能,比如图层的操作、访问、渲染,纹理贴图、数据的输入、输出、缓存等等

在命令和工具方面,定义了漫游,缩放,飞行,选择,目标等。 在加载文档方面:加载Globe文档

在工具条方面:可实现ControlGlobeGlobeToolbar和ControlGlobeRotateToolbar 在类库方面:esriGlobeControl.ocx和esriGlobeCore.olb

总的来说,该控件所实现的功能与SceneControl控件所实现的功能基本相似,这样做主要是为了更好的对比和分析,并且,两者实现的功能还是能够满足本文分析的需要。

8 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

2.3 ArcScene和ArcGlobe应用程序的比较

我们知道,可以通过GlobeControl和SceneControl这两控件分别开发出ArcGlobe和ArcScene两个应用程序,而在ArcGIS Desktop中,可用于三维场景展示的程序为ArcGlobe和ArcScene,又由于Engine与Desktop底层技术都是基于AO的,因此ArcGlobe和ArcScene在功能和性能的比较结果同样适用与GlobeControl和SceneControl。 ArcGlobe与ArcScene功能差别: 表 2.1

描述

3D Analyst工具条 缓存机制展示大量数据

Terrain数据 Tin作为高程数据

显示Tin 动态山影效果

注记的显示(Annotation)

立体视觉

复杂三维符号(如3D Simple Line Symbol)

三维模型数据

动画效果中的沿路径移动图层

无空间参考的数据

VRML支持

Representation symbology

ArcScene和ArcGlobe其他异同点的比较

在相同方面:都可以做3D飞行的动画,两者支持的符号是类似的,都能使用ArcToolbox里的工具来做一些分析功能。在三维显示方面,两者的地形都需要拉伸设置。

在不同方面:两者的旋转不同,后者是围着数据的中心点旋转,而后者是围绕地球的中心轴旋转。只有ArcGlobe有Publisher extension可以用来创建能在ArcReader里浏览的3D场景,浏览时,ArcGlobe则需要二三维的切换。另外,ArcGlobe可以进行纹理贴图,使画面更接近于真实,而ArcScene则不能,不过,ArcScene有一些额外的动画功能,比如移动图层的动画,

另外,在数据应用操作过程中,都可以加载文档,但文档不同,ArcScene加载的是*.3ds, ArcGlobe加载的是*.3dd。

在数据的要求上,ArcGlobe将所有数据投影到球体表面上,使场景显示更接近现实世界,适合于全市,全省,全国甚至全球大范围内的数据展示,其统一的投影系统是WGS84。 ArcScene在显示场景时,会将所有数据加载到场景中,矢量数据以矢量形式显示,栅格数据会自动降低分辨率来显示,以提高效率,并将所有数据投影到当前场景所定义的空间参考中。默认情况下,场景的空间参考由所加入的第一个图层空间参考决定,总的来说,ArcScene更适合于小范围内精细场景刻画。

9 地理与环境学院

[9]

ArcGlobe

No Yes Yes Yes No No Yes No No Yes No No 可导入

图层栅格化后可支持

ArcScene

Yes No No Yes Yes Yes No Yes Yes Yes Yes Yes 可导入/导出 不支持

江 西 师 范 大 学 本科生毕业论文

第三章 系统的总体设计

3.1 系统的需求分析

功能需求分析

功能只要满足基本的浏览功能以及相应的分析功能,主要是方便对比分析,并不做任何商业活动和任何个人目的行为。其基本功能以及相应分析几经在上面说的很清楚,这里就不在赘述,

一致性需求

在空间查询和属性查询中,相关的表之间,有较强的关联性,并建立起了一致性约束

完整性需求

根据线路查询系统的要求,为保持数据的完整性,采用了数据库的事务机制,防止出现操作故障。

可行性分析

1. 技术可行性:熟练操作ArcScene和ArcGlobe应用程序,并具有一定的C# 编程能力。

2. 操作可行性:采用第三方插件如Dotnetbar,使系统界面美观明了,提供的信息语言通

俗易懂,而且操作容易,用户只要懂得初步的计算机操作即可。 3. 经济可行性:本系统瓶颈在于时间,基本不需要什么资金,可以保证本系统的顺利开发。 4. 法律可行性:经研究,本系统的开发符合相关法律条令,不含有任何形式木马和病毒。

3.2 系统研制目标及规定要求

研制目的

本系统的研制目的是为本论文的研究目的所服务的,即研究GlobeControl和SceneControl这两个控件在数据的的要求和预处理,以及基于两个控件开发后的系统性能、功能和应用范围的差异性,以及对电脑配置和要求上区别。并希望本文能够对以后学习三维开发的同学或研发人员提供一个有效的帮助,同时,也算是对自己本科期间做过的一些工作做简单的一个回顾和总结。

规定需求

满足基本的功能和相应的分析应用,并能实现性能的优化。

功能规定

1. 系统的信息输入部分 2. 系统的信息处理部分 3. 系统的输出 4. 系统的维护部分

10 地理与环境学院

江 西 师 范 大 学 本科生毕业论文 性能规定

1、在精度方面:

需求上较高,根据使用需要,在各项数据的输入,输出及传输过程中,尽量满足各种精度的需求。输入的信息要求保证实时性、正确性和全面性,输出的信息要保证正确无误。

2、时间特性要求

a) 响应时间:在正常情况下,不超过2秒 b) 更新处理时间:不超过3秒

c) 数据的转换和传送时间:不超过2秒 d) 解题时间:迅速

3、灵活性

a) 操作方式上:对用户采用友好的界面,信息查询采用模糊检索; b) 运行环境:可以在Windows98、2000、XP、2003上进行查询。

c) 同其他软件的接口的变化:对系统施加不同的外界运行控制时所引起的各种不同的需

求,本系统可以做出相应的调整。 d) 精度和有效时限的变化:本系统确保所提供信息的正确性和完备性,有效时间由于受到

政策和需求的影响应根据各方面的具体情况而定。

e) 计划的变化或改进:如果时间充裕,可以增添更丰富的功能。

3.3 系统开发设计

系统开发平台

1、 硬件环境:CPU:P4 2.0GHz;内存:2GB以上;硬盘:250GB以上设备;

独立显卡:1G;

2、 软件环境:操作系统:Microsoft Windows 2003 Advanced Server;

数 据 库:Microsoft SQL Server 2005; 开发工具:ArcGIS Engine开发包;

3、 系统运行环境:VS2008;

系统开发语言

ArcGIS Engine支持多种开发语言,但本文中所设计的系统用到的语言全是C#。

3.4 数据要求及预处理

3.4.1 数据来源及其要求

数据的来源是我的导师给我的江西省的DEM数据; 纹理数据的来源和处理:我们纹理数据的来源是从GISOnline中的ArcGlobe在线分块截屏,

最后通过相应的软件,如Photoshop和ArcGIS拼合而成。

高程数据的处理:主要由我们的专业人员对数据的投影进行校正,并使用本系统的相关软件

对兴趣区域进行裁剪,最终得到可以为两个控件所共同加载的数据。

11 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

3.4.2 数据预处理方法

因为我们所用到的数据均为栅格数据,因此数据的处理方法主要有:投影转换,栅格裁剪。

3.4.3 数据质量控制

数据质量控制是个复杂的过程,要控制数据质量应从数据质量产生和扩散的所有过程和环节入手,分别用一定的方法减少误差。空间数据质量控制常见的方法有: 1、传统的手工方法

质量控制的人工方法主要是将数字化数据与数据源进行比较,图形部分的检查包括目视方法、绘制到透明图上与原图叠加比较,属性部分的检查采用与原属性逐个对比或其他比较方法。

2、元数据方法

数据集的元数据中包含了大量有关数据质量的信息,通过它可以检查数据质量,同时元数据也记录了数据处理过程中质量的变化,通过跟踪元数据可以了解数据质量状况和变化。 3、地理相关法

用空间数据的地理特征要素自身的相关性来分析数据的质量。如从地表自然特征的空间分布着手分析,山区河流应位于微地形的最低点,因此,叠加河流和等高线两层数据时,如河流的位置不在等高线的外凸连线上,则说明两层数据中必有一层数据有质量问题,如不能确定哪层数据有问题时,可以通过将它们分别与其它质量可靠的数据层叠加来进一步分析。因此,可以建立一个有关地理特征要素相关关系的知识库,以备各空间数据层之间地理特征要素的相关分析之用。

3.5 功能模块划分

3.5.1 场景浏览的基本功能

在ArcScene 程序的窗体中,对于场景的浏览,初步实现了:漫游、飞行、集中到靶心、放大、缩小、移动、选择、前进、后退、全屏、全局放大、全局缩小、刷新等功能。此外还有图层右键功能和场景右键功能,其中图层右键功能包括:图层的删除、缩放到图层、属性表、获取空间参考以及渲染等。而场景右键的功能主要包括:全图、漫游、前进、后退、局部放大、局部缩小、属性、设置地图底色等。

图 3.1 工具栏示意图

在ArcGlobe程序的窗体中,对于地球的浏览,初步实现了:漫游、飞行、集中到靶心、放大、缩小、移动、选择、前进、步行、后退、全屏、刷新以及而三维的切换等功能。此外还有图层右键功能和场景右键功能,其中图层右键功能包括:图层的删除、缩放到图层、属性表、获取空间参考以及渲染等。而球体右键的功能主要包括:全图、漫游、前进、后退、局部放大、局部缩小等。

总之,两者之间的功能大同小异。

12 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

3.5.2 系统应用操作功能

在ArcScene程序的菜单栏中:有新建文档、场景文档的加载、保存场景图片、添加数据、保存数据、另存数据等;另外有二维鹰眼的展示、属性查询、空间查询、点击查询,三维测量等。而在ArcGlobe程序的菜单栏中与在ArcScene的菜单栏中的应用操作功能相似,但区别在于场景数据的格式不同。

3.5.3 系统分析功能

在ArcScene中实现的分析功能,主要包括场景的旋转,它有速率参数控制,可通过选择按钮来控制其是否旋转;

栅格数据的拉伸,需要输入的参数有“要选择拉伸的图层”和“基准高程的设置”,其中基准高程有一个默认的值,这是经过我们很多次的测试之后,认为是配合我们的数据所表现最好的一个值。

另外还有水库淹没演示。在这个窗体中一共有三个参数需要设置,第一个是“大坝的高程的设定”我们一般将其默认为150,也是经过多次测试之后,得出的最佳值。

第二个参数是“地形图层选择”,我们选择经过地形拉伸并渲染之后的图层;第三个参数是“水面图层选择”,选择经过水面拉伸并渲染之后的图层。如下图所示:

图 3.2 淹没演示参数设置

在ArcGlobe中实现的分析功能,与在ArcScene中实现的分析功能相似,区别在与图层的拉伸过程中,后者只需选择相应的图层即可,而前者必须选择高程图层,因为后者一共有三个图层。

3.5.4 系统其他功能

在这里,两控件都实现了一个视频的录制和输出的功能;主要输入的参数包括视频质量,视频帧率,以及视频长度。此外还有帮助文档,主窗体的风格样式和肤色的变换。

13 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

第四章 系统开发设计与技术实现

4.1 系统开发的控件定制

由于本文重在对两个控件的对比分析和研究,因此在控件定制方面,我们主要实现两个系统,这两个系统的控件基本相同,唯一的区别就在于三维操作方面,一个用的是SceneControl控件,另一个用的是GlobeControl控件。其基本控件主要包括:LicenseControl控件和TOCControl,我们在控件的简介中介绍过,所以这里就不再赘述。

除此之外,我们还用到了一个第三方插件DotNetBar。DotNetBar是一组用于.NET Framework环境下的一组组件集,利用该组件集能够打造绚丽并且实用的应用程序界面,给开发人员提供极大的便利。本文用的版本是8.8,最新版本是9.4,用法相同,就看自己的喜好来,DotNetBar这一系列的产品都可以从网站上下载的到。

安装改插件之后,只要将Form类型改为DevComponents.DotNetBar.Office2007Form即可,因为FrmMain类继承了DevComponents.DotNetBar.Office2007Form类,这样界面便由Windows窗体普通风格变成Office2007风格。

4.2 开发过程及其主要代码实现

对于系统的开发过程,由于本文做的是两个系统的对比,加上两者功能相似,为节省篇幅,本文就以SceneControl的系统为例简单的论述一下其开发过程。 1、创建一个新的工程

首先打开Microsoft Visual Studio 2008,点击菜单栏中的“文件”—>“新建”—>“项目”,在弹出的对话框中选择新建一个 Visual C# 的Windows应用程序,之后更改项目名称为“MainForm”,更改文件的路径为个人实习文件夹,点击“确定”即可。

图 4.1 创建新工程文件

14 地理与环境学院

江 西 师 范 大 学 本科生毕业论文 2、添加控件

点击编译器最左侧的“工具箱”,单击右键,选择“新建选项卡”,重命名为dotnetbar然后我们将Dotnetbar控件加载进来,其方法是从网上下载破解文件,破解文件分两种,一种是:

图 4.2 DotNetBar 的加载(1)

另一种是安装文件,如下所示:

图 4.3 DotNetBar 的加载(2)

但我们最终都是要将DevComponents.DotNetBar2.dll拷贝到安装目录覆盖原文件。其方法是右键单击Dotnetbar的“选择项”,然后在弹出的对话框中找到DevComponents.DotNetBar2.dll,单击“确定”如下所示:

图 4.4 DotNetBar 的加载(3)

在添加完Dotnetbar控件之后,选择dotnetbar中的RibbonControl中的控件,拖到Form1中。

15 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

图 4.5 DotNetBar的控件

然后在分别添加状态栏和容器,并修改RibbonControl中的控件的代码,如下所示:

图 4.6修改

最后我们可以看到如下所示的一个Office2007风格界面,如下所示:

图4.7 主界面

16 地理与环境学院

江 西 师 范 大 学 本科生毕业论文 其后,我们分别陆续在这个界面上进行一系列控件的添加和属性的修改以及代码的编辑等,最后得到两个系统的主界面。如下图所示:

图4.8 ArcScene 程序的主界面及其效果示意图

图 4.9 ArcGlobe程序的主界面及其效果示意图

我们可以明显的看出两者风格非常相似,这是因为本文用的是同一个Dotnetbar控件,如果用的是不同版本,那么就会有不同的风格。

17 地理与环境学院

江 西 师 范 大 学 本科生毕业论文 3、代码实现:

在功能的实现过程中,其关键技术主要有地栅格数据的渲染和地形拉伸。

针对于我们的数据,本文将栅格数据的渲染分为地形渲染和水面渲染,由于在具体操作中没有实现像ArcGIS那样强大的功能,而是默认的选择了渲染样式。其代码如下:

//地形渲染

private void 地形渲染ToolStripMenuItem_Click(object sender, EventArgs e) {

IScene scene = axSceneControl1.Scene; ILayer layer = TOCRightLayer;

IRasterLayer pRasterLayer = layer as IRasterLayer; IRaster raster = (IRaster)pRasterLayer.Raster;

IRasterBandCollection rasterbands = raster as IRasterBandCollection; IRasterBand rasterband = rasterbands.Item(0);

IRasterStretchColorRampRenderer pRStretchRender = new RasterStretchColorRampRendererClass(); //创建两个起始颜色

IRgbColor pFromRgbColor = new RgbColorClass(); pFromRgbColor.Red = 40; pFromRgbColor.Green = 30; pFromRgbColor.Blue = 250;

IRgbColor pToRgbColor = new RgbColorClass(); pToRgbColor.Red = 240; pToRgbColor.Green = 80; pToRgbColor.Blue = 40; //创建起止颜色带

IAlgorithmicColorRamp pAlgorithmicColorRamp = new AlgorithmicColorRampClass(); pAlgorithmicColorRamp.Size = 255;

pAlgorithmicColorRamp.FromColor = pFromRgbColor as IColor; pAlgorithmicColorRamp.ToColor = pToRgbColor as IColor; bool btrue = true;

pAlgorithmicColorRamp.CreateRamp(out btrue); //选择拉伸颜色带符号化的波段 pRStretchRender.BandIndex = 1; //设置拉伸颜色带符号化所采用的颜色带

pRStretchRender.ColorRamp = pAlgorithmicColorRamp as IColorRamp; IRasterRenderer pRasterRender = pRStretchRender as IRasterRenderer; pRasterLayer = TOCRightLayer as IRasterLayer; pRasterRender.Raster = pRasterLayer as IRaster; pRasterRender.Update(); //符号化RasterLayer

pRasterLayer.Renderer = pRasterRender; //渲染的刷新

axSceneControl1.Scene.SceneGraph.Invalidate(pRasterLayer, true, false);

18 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

axSceneControl1.SceneViewer.Redraw(true);

axSceneControl1.Scene.SceneGraph.RefreshViewers();

axTOCControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewForeground, pRasterLayer, axSceneControl1.Scene.Extent); axTOCControl1.Update(); }

}

而在水面渲染中,本文将地形的渲染稍作修改:

//创建两个起始颜色

IRgbColor pFromRgbColor = new RgbColorClass(); pFromRgbColor.Red = 80; pFromRgbColor.Green = 80; pFromRgbColor.Blue = 255;

IRgbColor pToRgbColor = new RgbColorClass(); pFromRgbColor.Red = 80; pFromRgbColor.Green = 80; pFromRgbColor.Blue = 255;

其最终效果如下:

图 4.10 图层渲染

另外由于ArcScene和ArcGlobe的自身差异,因此存在刷新的不同, 在渲染刷新中,ArcGlobe代码如下:

//符号化RasterLayer

pRasterLayer.Renderer = pRasterRender;

IGlobeDisplay pGlobeDisp = this.axGlobeControl1.GlobeDisplay; //渲染的刷新

IGlobeDisplayLayers2 pGDispLyrs = pGlobeDisp as IGlobeDisplayLayers2; pGDispLyrs.RefreshLayer(pLayer); this.axTOCControl1.Update();

19 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

在地形拉伸过程中,其代码如下: //拉伸显示

private void buttonX1_Click(object sender, EventArgs e) {

if (comboBoxEx5.Text == \ || comboBoxEx5.Text == null) {

MessageBoxEx.Show(\请选择要拉伸的图层!\); } else

if (comboBoxEx2.Text == null || comboBoxEx2.Text == \) {

MessageBoxEx.Show(\基准高程一定要有参数,否则不做拉伸!\); } else {

ISceneGraph scenegraph = axSceneControl1.SceneGraph; IScene scene = scenegraph.Scene;

LayerIndex = comboBoxEx5.Items.IndexOf(comboBoxEx5.Text);

ILayer layer = m_SceneControl.Scene.get_Layer(LayerIndex) as ILayer; IRasterLayer pLayer = layer as IRasterLayer; IRasterSurface pSurface = new RasterSurface(); IRaster raster = (IRaster)pLayer.Raster;

IRasterBandCollection rasterbands = raster as IRasterBandCollection; IRasterBand rasterband = rasterbands.Item(0); pSurface.RasterBand = rasterband; ISurface surface = pSurface as ISurface;

ILayerExtensions layerextensions = layer as ILayerExtensions; I3DProperties properties = new Raster3DPropertiesClass(); object p3d;

for (int i = 0; i < layerextensions.ExtensionCount; i++) {

p3d = layerextensions.get_Extension(i); if (p3d != null) {

properties = (I3DProperties)p3d; break;} }

properties.ZFactor = Convert.ToDouble(comboBoxEx2.Text); properties.BaseOption = esriBaseOption.esriBaseSurface; properties.BaseSurface = surface; properties.Apply3DProperties(layer);

axSceneControl1.SceneGraph.RefreshViewers(); } }

20 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

第五章 不同实现方式的对比分析

我们知道,在ArcGIS Desktop中,可用于三维场景展示的程序只有ArcGlobe和ArcScene ,由于 Engine与Desktop底层技术都是基于AO的,因此两者比较结果在功能性和整体效率方面同样适用与GlobeControl和SceneControl,换句话说,GlobeControl和SceneControl的对比在某种意义上,其实就是ArcGlobe和ArcScene的对比。下面本文将简单的分析一下两者的对比。

5.1性能对比

5.1.1显示效果对比

在注记方面:在ArcGlobe中,用户可以选择将注记(Annotation)附着显示于地球表面或像广告牌一样面向当前用户,而ArcScene中不支持注记(Annotation)数据的显示。

在显示方面:ArcGlobe在显示场景时,用户可以选择是否将矢量数据栅格化后显示,这样,在ArcGlobe中矢量数据栅格化后可以大幅提高显示效率。ArcScene在显示场景时,会将所有数据加载到场景中,矢量数据以矢量形式显示,栅格数据会自动降低分辨率来显示,以提高效率,并将所有数据投影到当前场景所定义的空间参考中[10]。

在支持场景方面:ArcGlobe只有一个高程表面,需要将数据正确投影到globe上,只能显示地形以上的场景,而ArcScene在这点上就更灵活,是可以支持地下场景展示。

以上的各个方面,就其相同点来说,两者都需要ArcGIS Desktop和3D Analyst许可。

5.1.2 响应速度对比

在数据读入方面:ArcScene是一次将所有数据读入内存,所以操作起来比较快,但是同样的数据加载在ArcGlobe里面速度就明显变慢,因为它事先要进行一个缓存。

在导出图片方面:GlobeControl中将当前视图导出为图片的时候挺快,只是将当前场景中录制好的动画导出来就特别慢,有时候可能会导致系统假死。同样,在SceneControl中将当前视图导出为图片的时候挺快,而将当前场景中录制好的动画导出来时,也会变得很慢,但比GlobeControl要略快一点,主要数据量的问题,因为它的数据量始终小于GlobeControl。

在画面的流畅方面:在进行缩小和放大时会有1秒左右的延迟,主要表现在影像数据的显示上。使用飞行漫游工具进行漫游时,整个过程表现非常流畅,没有出现画面卡的现象[9]。这主要是因为DEM图层在ArcGlobe中不支持建立缓存,我们知道一般建立了缓存后,整个3D场景在ArcGlobe中打开后立即完全显示了,感觉不到有访问延迟。在ArcScene中,不会出现上述问题,经本文分析,认为应该还是数据量的问题,ArcGlobe偏大。就拿本文做的的那个系统来说,一个纹理的数据量有50多M。

21 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

5.2功能对比

5.2.1编程和控制的方便性对比

两者的编程的方便性是相同的,就看操作人员对两个控件的熟悉程度了,越是熟悉的人,编程速度越快;

5.2.2主体功能的对比

两者之间的所实现的主体功能差不多,详细的可以参照第二章所进行的比较。

5.3所需的要求对比

5.3.1对电脑配置要求对比

两者对电脑配置的要求最主要还是体现在缓存与内存管理机制[10],因为ArcGlobe设计用于海量数据展示,所以为提高显示效率而进行数据缓存是很必要的。ArcGlobe将数据分块并按级别建立缓存和索引,并只加载当前视图范围场景到内存,从而使得在ArcGlobe中显示海量数据仍可以高速的展示与漫游。因此,ArcGlobe对电脑的CPU要求比较高。

ArcScene会将所有数据读入场景中完全显示,因此会占用大量显存,物理内存和虚拟内存,由于内存的限制,ArcScene只能浏览小范围的3维场景,这就是为什么ArcScene适于小数据量小场景精细展示的原因。因此,ArcScene对电脑的显卡和电脑内存要求比较高。 另外,如果使用ArcGlobe(作为三维分析的一部分),更多的磁盘空间可能是必需的。 ArcGlobe将创建缓存文件时使用,而ArcScene则不需要。

就目前来说,一般电脑的CPU和内存、显卡什么的都能满足我们目前的需求,因为即便你想买更低的还真没地方买的到。相对的,电脑配置越低,系统的反应速度越慢。

下面列举一些硬件上的要求: 硬件需求[11]

CPU速度 :推荐1.6 GHz或更高

处理器 : 英特尔酷睿,奔腾4或Xeon处理器 ,见双或双核心的支持政策

内存/ RAM :至少1 GB,建议2 GB或更高 ,如果使用微软SQL Server Express的软件

ArcSDE的个人版,2 GB内存是必需的。

显示属性 :24位颜色深度

屏幕分辨率 :1024 × 768建议或正常大小(96dpi)高等教育 交换空间 :确定由操作系统,500 MB的最低水平。

磁盘空间 :3.2 GB的,此外,高达50 MB的磁盘空间可能需要在Windows系统目录(通

常是C:\\的Windows \\ System32)。您可以查看在安装程序中的每个组件9.3 磁盘空间要求。

视频/图形适配器: 检查你的计算机上运行ArcGIS的3D分析 – ArcGlobe,24位的图形

加速器 ,一个OpenGL 1.3或更高版本兼容的视频卡是必需的,至少有32 MB的视频内存,但是64 MB的视频内存或更高的建议。

22 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

5.3.2 对数据要求的对比

在数据来源方面:

ArcGlobe程序所支持的数据来源:地图数据,测量数据,遥感数据,其中数据必须要有参考系,且只能是WGS84。

ArcScene程序所支持的数据来源:地图数据,测量数据,遥感数据,其中数据必须要有参考系,但具体不限。

因此,在数据预处理过程中,ArcScene只要是两者或两者以上的数据具有相同的投影就行,而ArcGlobe则将需要的所有数据的坐标系统都转化为 WGS 84 地理坐标系,其原因是只有采用的 WGS 84 地理坐标系,才能将所有数据投影在球体表面上。 在数据类型要求方面:

ArcGlobe程序所支持的数据类型包括: 1、ArcGIS栅格数据,包括栅格目录; 2、ArcGIS要素数据,包括文本注记;

3、支持TIN数据的加载,但不支持TIN的显示。 ArcScene程序所支持的数据类型包括: 1、ArcGIS栅格数据,包括栅格目录; 2、ArcGIS要素数据,包括文本注记; 3、ArcIMS图层;

4、ArcGIS Server中的MapServer图层; 在数据格式要求方面:

ArcGlobe程序所支持四种三维数据格式有:*.3ds;*.flt; *.skp; *.wrl ArcScene程序所支持四种三维数据格式有:*.3dd;*.flt; *.skp; *.wrl。

5.4 其他对比

5.4.1分析功能

ArcGlobe可以极好的展示大数据的场景,同时提供高速的漫游,但ArcScene对传统的三维分析功能支持的更好。例如Desktop中3D Analyst工具条在ArcScene中被很好的支持,并支持Tin模型的显示,ArcGlobe不支持Tin的显示,但支持其作为高程数据加入场景,另外ArcGlobe支持Terrain数据集,但ArcScene不支持[12]。

5.4.2适用性

由于ArcGlobe适于海量数据量大范围场景的展示,尤其是大数据量的栅格数据展示,因此很适合于很多关注大范围的项目,在军事、林业、水利、交通、测绘、石油等很多行业均有明显优势[13]。而ArcScene中场景表现为平面投影,适合于小范围内精细场景刻画。 为方便进行一个比较,一下据些例子,以作参考: 如果数据流量高,需要缓存将在全分辨率使用,并在广泛的范围内需要用到所在地区的地球曲率,那么我们可以最好选择ArcGlobe。

如果数据体积小,可视化是限制在小范围内,那么ArcScene是最好的选择

23 地理与环境学院

江 西 师 范 大 学 本科生毕业论文 如果数据量不大,需要支持适用符号选项和3D视图装饰图形,对作为高程数据源应用程序没有要求,那么ArcGlobe和ArcScene都是可行的选择。

5.4.3效果展示

我们这次展示的是两个系统都可以用的数据。其中,在ArcGlobe中一共有三个数据,地形数据,水面数据和纹理数据,而在ArcScene中却一共只有两个数据,分别是地形数据和水面数据,正如本文前面所说的,ArcScene不支持纹理贴图。

下面是他们效果展示的对比:

图 5.1 ArcScene淹没前的示意图

图 5.2 ArcScene淹没后的示意图

24 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

图5.3 ArcGlobe中的淹没前的示意图

图5.4 ArcGlobe中淹没后的演示意图

通过对比前后两个控件的效果展示,经本文分析,发现在电脑配置还行的情况下,可以使用GlobeControl控件来实现系统的开发,因为其效果更接近于真实,但同时,工作量也较大,因为需要花一定的时间做纹理贴图的数据预处理工作。

25 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

第六章 总 结

6.1论文研究成果

本文首先阐述了研究目的和内容,然后对本文涉及到的基本概念如ArcEngine,做了一个简单的介绍,接着本文从系统的设计到实现、从功能到代码,做了一个完整的说明,最后再转到本文的重点,即对SceneControl和GlobeControl两个控件在visual C# 2008下的开发做了一个相应的分析,并对两控件在数据上的要求,表现的功能上和性能上以及适用性等作了一个鲜明的对比。总得来说,本文是可以为将要做三维二次开发的研究人员提供一个参考的,同时,也对得起自己这四年的工作。

6.2 论文的不足及进一步工作展望

本文在很多方面表现的不足,主要局限在以下几个方面:

1、 在ArcGlobe中某些功能没有实现,致使某些对比无法进行;

2、 由于本人的专业知识和实践经验有限,致使本论文有些对比分析并不那么全面; 3、 由于时间的仓促,致使某些对比分析最终也没有实现;

4、 本论文的局限性还在于ARCGIS 9.3,而现在,ARCGIS已经发布到10.0,因此有

待继续探讨和研究;

5、 本论文探讨的对象主要还是在于ArcGIS Eengine的二次开发,而据我所知,目前已

经有很多基于其他平台的三维开发,如SketchUp等,因此研究范围也有待扩大。

因此在未来的一段时间,我将继续我的研究,并相继解决前面所述问题,力图与时俱进,将研究广度扩大到各个平台软件,将研究深度拓展到各个环节。

26 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

参 考 文 献

[ 1 ] 肖乐斌,钟耳顺,刘纪远。 三维 GIS的基本问题探讨[J]。中国图像图形学报,2001,

6(9):843-848。

[ 2 ] 杨朝辉,徐秀萍,党立华。 基于 ArcObjects 的地形三维可视化分析系统的研制[ J ]。

海洋测绘,2003,23(6):41-44。 [ 3 ] 韩敏,陈明,李威国。 基于 ArcGIS 的扎龙湿地三维显示模块的开发研究 [ J ]。 计

算机工程与应用,2004,40(22):202-205。

[ 4 ] 王海花,GIS三维可视化平台的数据交换与分析,硕士毕业论文,2009.6-7; [ 5 ] 高照忠,魏海霞,基于ArcGIS Engine 的三维浏览器的开发应用,大众科技,2009.1-2; [ 6 ] ESRI.ArcGIS Engine Develop Guide [M]. 北京:ESRI Press,2004; [ 7 ] ESRI.ArcGIS Desktop Develop Guide [M]. 北京:ESRI Press,2004;

[ 8 ] 兰小机 刘德儿 ,ArcObjects GIS 应用开发——基于C#.NET, 江西理工大学 [ 9 ] ArcGIS 三维分析使用手册[S].ESRI中国(北京)有限公司组织翻译; [10] ArcEngine 二次开发实习初级讲义; [11] http://bbs.esrichina-bj.cn.ESRI中国社区;

[12] .NET Help for VS2008 ArcGIS Engine 开发帮助; [13] ESRI公司. ArcGIS三维分析使用指南[M]. ESRI中国(北京)有限公司出版,2000。

27 地理与环境学院

江 西 师 范 大 学 本科生毕业论文

致 谢

本文的完成是在我的导师方朝阳老师的细心指导下进行的,每当我遇到问题踟蹰不前时,总是方老师不辞辛苦的讲解和坚定有力的支持,才使得我的设计得以顺利的进行。从论文的框架构思到总体设计和详细设计,直至最后的修改等各个环节中,无不花费了方老师很多的宝贵时间和精力,在此向我的导师表示衷心地感谢!因为导师高度的责任心,使学生受益终生,没齿难忘!

除了我的导师之外,还有其他两位老师,也都给予了不少意见和帮助。首先是龚俊老师在去年带我入门,学习了这门开发语言,从而让我能够在比较短的时间上手,因此他间接的对本文的系统的设计做了一个强有力的启蒙的作用。其次是卢成芳老师,是他在我们参加比赛的时候,能够在百忙之中抽出宝贵的时间为我们解疑答问,并无私的为我们的系统设计提供了宝贵的资料,因此是他直接的提高了我的开发技能和缩短了本论文的设计周期。在此,向他们表示深深的谢意。

另外,还要感谢和我同参加比赛的几位同学,他们分别是沈华锦、吕仕榜、张琪和廖蔚,是他们在比赛中和我一起探讨以及给予我无私的帮助,并指出我系统开发上的漏洞,提了宝贵的意见,使我能及时的发现问题把本系统的设计和实现得以顺利的进行下去,说实在的,没有他们的帮助我不可能这样顺利地结稿,在此,我只能怀以最真诚的情感说一句:真的很感谢你们。

当然,还要感谢我的父母和亲友,是他们对我的关心和支持,让我得以进入到这所有名的大学继续深造。其次,也要感谢ESRI公司,是他们给了我这个平台,从而有机会能够参加那次比赛。

最后,由于时间的仓促及自身专业水平的不足,整篇论文肯定存在尚未发现的缺点和错误。恳请阅读此篇论文的各位老师多予指正,不胜感激!

28 地理与环境学院

本文来源:https://www.bwwdw.com/article/50no.html

Top