实习指导书-第八章-ArcGIS-Engine三维开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章ArcGIS Engine的三维开发
8.1ArcGIS三维分析及其控件简介
8.1.1 ArcGIS三维分析简介
ArcGIS三维分析提供了对表面数据有效的可视化和分析。使用三维分析,可以从多个角度来浏览表面数据,查询表面,从表面上一选定的位置来确定什么对象可见,以及通过叠加栅格和矢量数据来创建一幅逼真的透视图。
三维分析(3D Analyst)添加了两个专用的三维可视化应用程序:ArcScene和ArcGlobe,它们扩展了ArcGIS Desktop的功能,并且扩展了ArcCatalog和ArcMap的三维功能。
ArcScene允许用户制作具有透视效果的场景,在这个场景中可以对地理信息系统数据进行浏览和交互。用户可以在表面上叠加栅格和矢量数据,并从矢量数据源创建线、面和体。用户也可以使用ArcScene 中的三维分析工具创建和分析表面。
ArcGlobe提供在标准计算机硬件上对巨型三维栅格、地形和矢量数据集进行实时漫游和缩放,在此过程中基本不会感觉到速度上的问题。这主要是依靠一种新引入的索引和快速检索数据的方法实现的。
利用三维分析扩展ArcCatalog,从而实现对三维数据的管理并且创建具有三维视觉属性的图层。用户可以在ArcCatalog中使用与ArcScene中相同的浏览工具预览三维场景和数据。
利用三维分析扩展ArcMap,从而可以由GIS数据生成新的表面,以及分析表面、查询表面某一位置的属性值和分析表面不同位置的可见性。用户还可以计算表面面积和表面之上或者表面之下的体积,并沿表面上的三维线生成剖面。
1
8.2ArcGIS三维显示简介
ArcGIS Desktop中,可用于三维场景展示的程序为ArcGlobe和ArcScene,由于两者的差别,在三维场景展示中适用的情况有所不同。由于Engine与Desktop底层技术都是基于AO的,因此该比较结果在功能性和整体效率方面同样适用与GlobeControl和SceneControl。
ArcScene简介:
ArcScene是一个适合于展示三维透视场景的平台,可以在三维场景中漫游并与三维矢量与栅格数据进行交互。ArcScene是基于OpenGL 的,支持TIN数据显示。显示场景时,ArcScene会将所有数据加载到场景中,矢量数据以矢量形式显示,栅格数据默认会降低分辨率来显示以提高效率。
图1 ArcScene界面
ArcGlobe简介:
ArcGlobe是ArcGIS9.0之后出现的新产品,设计用于展示大数据量的场景,支持对栅格和矢量数据无缝的显示。ArcGlobe基于全球视
2
野,所有数据均投影到全球立方投影(World Cube Projection)下,并对数据进行分级分块显示。为提高显示效率,ArcGlobe按需将数据缓存到本地,矢量数据可以进行栅格化。
图2 ArcGlobe界面
ArcGlobe和ArcScene的主要区别:
(1)投影坐标系统的不同:
ArcGlobe将所有数据投影到球体表面上,使场景显示更接近现实世界。适合于全市,全省,全国甚至全球大范围内的数据展示。
ArcScene将所有数据投影到当前场景所定义的空间参考中,默认情况下,场景的空间参考由所加入的第一个图层空间参考决定。ArcScene中场景表现为平面投影,适合于小范围内精细场景刻画。
(2)缓存与内存管理机制的不同:
ArcGlobe和ArcScene最重要的区别在于此。ArcGlobe设计用于海量数据展示,所以为提高显示效率而进行数据缓存是很必要的。
3
ArcGlobe将数据分块并按级别建立缓存和索引,才使得即使在ArcGlobe中显示海量数据仍可以高速的展示与漫游。
ArcScene会将所有数据读入场景中完全显示,因此会占用大量显存,物理内存和虚拟内存,这也是ArcScene适于小数据量小场景精细展示的原因之一。
(3)分析功能的不同:
ArcGlobe可以极好的展示大数据的场景,同时提供高速的漫游。但ArcScene对传统的三维分析功能支持的更好。例如Desktop中3D Analyst工具条在ArcScene中被很好的支持,并支持Tin模型的显示。ArcGlobe不支持Tin的显示,但支持其作为高程数据加入场景。ArcGlobe支持Terrain数据集但ArcScene不支持。
(4)显示差别
ArcGlobe中用户可以选择是否将矢量数据栅格化后显示,该功能对注记数据的显示也有很大帮助。用户可以选择将注记(Annotation)附着显示于地球表面或像广告牌一样面向当前用户。ArcScene中不支持注记(Annotation)数据的显示。在ArcGlobe中矢量数据栅格化后可以大幅提高显示效率,我们在ArcGlobe 场景建设中采取“能够栅格化的矢量数据尽量栅格化”的策略也来自于此。
1.ArcGIS 三维系统的设计
该系统分为四个模块,分别是文件的操作、场景的浏览、点查询和矢量文件生成TIN。下面分别对这四个模块做详细介绍,其参考代码请参阅“例子程序”中的Chapter8。
2.1文件操作
该模块包括打开工程文件(打开sxd文件)、打开栅格文件(打开Raster文件)和保存图片文件。所用到的控件有:SceneControl
4
5
控件(用于显示打开的工程文件和栅格文件)、Button 控件、
OpenFileDialog 控件、SaveFileDialog 控件、TabControl 控件(页面布局控件)、TOCControl 控件(用于显示图层)。其布局如下:
图3 文件操作的界面布局(红线内的)
控件类型
Text 属性 控件名称 备注 SceneControl
无 mSceneControl 显示数据 TOCControl
无 mTOCControl 显示图层 Button
打开sxd 文件 OpenSxdFile 打开工程的文件 Button
打开Raster 文件 OpenRasterFile 打开栅格的文件 Button 保存图片文件 SaveImage 抓图
TabControl 两个页面分别为“基本操作”和
“图层”
tabControl1 分为两个页面,“基
本操作”和“图层” 除了上述表所列出的属性需要设置,另外还要将TOCControl 的