实习指导书-第八章-ArcGIS-Engine三维开发
基于ArcGIS+Engine的三维地形平台的开发与实现

基本功能。
3。3境理要素的舾载秘渲染
在本系统中通过对DEM数据进行读取,形成三维
场景[5j。同时实对熬进行三维旋转、漫游、效缩、移动
效果。通过ArcGIS Engine技术调用ISeene控件,在窗
疆中显示三维地形的全貌,更有利于对她形的整体把
握,可以进行比较系统的考虑问题,可对局部进行细致
入微的了解。整个系统是一个紧密的整体,所有的模
图3棋盘山的三维地形图
万方数据
第6期
魏东带.基于AreGIS Engine的三维地形平台的开发与实现
61
3。4坡度图的生成 ArcGIS Engine鹩三维空闻分橱以三维表露为研
究对象,其中坡度分析是现实中经常使用的一种空间 分析方法。坡度是指地面的倾斜城陡峭程度,给定点 的坡度是睦面上该点的法线方向N与垂直方向Z之 闻的夹焦a冲1。坡度计算时,TIN巾菜一个三角瑟昭坡 度是指该三角面法线方向N与过该点的铅垂线(Z方 向)的夹角,如图4所示;在栅格表面中,是通过每个栅 格单元与其相邻8个搬格单元的离程变化计算坡度。 通常坡度毙较陡峭麴区域毙坡度院较平缓懿区域趸容 易发生侵蚀和滑坡现象。DEM数据的输入和输】出将 要用到IGxDialog接13的方法。利用Raster SurfaceOp 对象的接I:1 ISurfaceOp褥到方法Slope用于坡度分析, 同时RasterSurfaceOp对象的IRasterAnalysis Environ- ment接口有设置输出坡度图的格网单元大小的方法 SetCellSize。棋盘山的坡度分析效果图如图5所示,图 中筑色表示的是陡螭的区域,绿色裘示的是平坦的区 域。
(1)ToolbarControl控件主要提供功能按钮来宾现
对专题地图的打开、浏览等操作。它提供控制显示按 钮,需要初始化并定制功能按钮,代码如下:
ArcGIS Engine指导书3

ArcEngine开发实例三一、实例目标及其实现的主要功能1、学习编程实现打开、保存,另存地图文档的方法;2、运用工具栏工具进行地图要素的添加;3、运用状态栏控件实现地图坐标信息的显示。
二、具体的实现过程及代码1、如指导书中的过程,新建一个C#工程项目,并为默认建立的窗体分别添加“ToolBarControl”“TOCControl”“MapControl”“LicenseControl”控件,执行与MapControl 控件的绑定操作,并通过“dock”属性排好。
为工具栏添加如下图所示的工具按钮。
2、添加菜单控件,依次添加菜单栏的主菜单text属性为“文件”,其name属性为“menuFile”,依次添加子菜单,其text属性分别为“打开文档”,“新建文档”,“保存文档”,“另存为….”,“退出”,其name属性分别为“menuOpenDoc”,“menuNewDoc”,“menuSaveDoc”,“menuSaveAsDoc”,“menuExitApp”。
3、打开工具箱,通过添加选项,添加statusBar控件,并双击添加到窗体上。
4、添加ArcGIS的引用ESRI.ArcGIS.Geodatabase和ESRI.ArcGIS.ADF类库,在第一个窗体的代码窗口导入命名空间:using ESRI.ArcGIS.esriSystem;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.ADF;using ESRI.ArcGIS.SystemUI;5、在public partial class Form1 : Form代码下添加如下的初始化语句:private IMapControl3 m_mapControl = null;private string m_mapDocumentName = string.Empty;private IContainer components;6、为窗体添加load事件,并添加以下代码:private void Form1_Load(object sender, EventArgs e){m_mapControl = (IMapControl3)axMapControl1.Object;menuSaveDoc.Enabled = false; }7、为菜单“menuOpenDoc”添加click事件,并添加如下代码:ICommand command = new ControlsOpenDocCommandClass();command.OnCreate(m_mapControl.Object);command.OnClick();8、为菜单“menuSaveDoc”添加click事件,并添加如下代码:if (m_mapControl.CheckMxFile(m_mapDocumentName)){IMapDocument mapDoc = new MapDocumentClass();mapDoc.Open(m_mapDocumentName, string.Empty);if (mapDoc.get_IsReadOnly(m_mapDocumentName)){MessageBox.Show("Map document is read only!");mapDoc.Close();return;}mapDoc.ReplaceContents((IMxdContents)m_mapControl.Map);mapDoc.Save(esRelativePaths, false);mapDoc.Close();}9、为菜单“menuSaveAsDoc”添加click事件,并添加如下代码::ICommand command = new ControlsSaveAsDocCommandClass();command.OnCreate(m_mapControl.Object);command.OnClick();10、为菜单“menuExitApp”添加click事件,并添加如下代码:Application.Exit();11、为菜单“menuNewDoc”添加click事件,并添加如下代码:ICommand command = new CreateNewDocument();command.OnCreate(m_mapControl.Object);command.OnClick();12、为控件“axMapControl1”添加OnMouseMove事件,并添加如下代码:statusBar1.Text = string.Format("{0}, {1} {2}", e.mapX.ToString("#######.##"),e.mapY.ToString("#######.##"), axMapControl1.MapUnits.ToString().Substring(4));13、为控件“axMapControl1”添加OnMapReplaced事件,并添加如下代码:m_mapDocumentName = m_mapControl.DocumentFilename;if (m_mapDocumentName == string.Empty){menuSaveDoc.Enabled = false;statusBar1.Text = string.Empty;}else{menuSaveDoc.Enabled = true;statusBar1.Text = Path.GetFileName(m_mapDocumentName);}三、操作通过操作调试该程序源码,观察并掌握AE中对于地图文件保存的操作方法。
Part3 ArcGIS Engine Developer

第三部分 ArcGIS Engine Developer
第三部分 ArcGIS Engine Developer
ArcGIS Engine 应用程序开发
ArcGIS overview
1. What is ArcGIS Engine?
ArcGIS Engine is a complete library of embeddable GIS components for developers to build custom applications. Using ArcGIS Engine, you can embed GIS functions into existing applications and build focused custom applications that deliver advanced GIS systems to many users. ArcGIS Engine consists of a software developer kit and a redistributable runtime providing the platform for all ArcGIS applications. Since ArcGIS Engine is supported on Windows, Solaris, and Linux (Intel), developers can create cross-platform custom solutions for a wide range of users.
ArcGIS Engine software developer kits
The ArcGIS Engine Developer Kit is a component-based software development product for building and deploying custom GIS and mapping applications. The ArcGIS Engine DK for the .NET Framework is not an end user product, but rather a toolkit for application developers. It can be used to build basic map viewers or comprehensive and dynamic GIS editing solutions. With the ArcGIS Engine DK, you, as a developer, have an unprecedented flexibility for creating customized interfaces for maps. You can use VS with C# or VB .NET to create unique applications or combine ArcGIS Engine components with other software components to realize a synergistic relationship between maps and the information that users manage.
基于ArcGIS Engine的三维地理信息系统开发及应用

基于ArcGIS Engine的三维地理信息系统开发及应用作者:刘阳娜来源:《电脑知识与技术》2018年第03期摘要:在可视化技术、空间技术、计算机图形技术等不断发展过程中,逐渐地转变原有的二维地理信息系统,变为三维地理信息系统。
现阶段,地理信息系统领域中,三维地理信息系统已经成为一个新的发展趋势,不过迄今为止,仍然只是在部分实验性原型系统中实现了部分的三维地理信息系统功能,并未广泛推广,而该项技术的广泛推广对于地理信息系统发展来说,意义重大,因此,该文在ArcGIS Engine基础上,分析了三维地理信息系统的开发及应用。
关键词:ArcGIS Engine;三维地理信息系统;开发;应用中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)03-0005-02相比于二维地图,三维显示地形地物时,不仅利于人们直观的观看,且会给人们营造出身临其境的感觉,还能将人们利用地图的各种需求得到充分满足。
因此,不断有公司推出三维图形显示软件,其中,典型代表之一即为GOOGLE EARTH(GOOGLE公司开发),但由于单位数据具有庞大的数据量,现有三维地理信息系统产品均存在一定的不足之处,如建模复杂、代码众多、浏览速度慢等,导致国内并未普遍的应用三维地理信息系统。
ArcGIS Engine由ESRI公司推出后,有利于将上述问题妥善的解决,由此可见,本文在ArcGIS Engine基础上研究开发三维地理信息系统的方法具有十分重要的现实意义。
1 ArcGIS Engine三维组件ArcGIS Engine属于完整GIS组件库,开发公司为美国ESRI公司,组成为一组核心ArcObject包,用于构建定制应用,不仅能够对多种应用程序接口做出有效支持,且可进行自定义独立独立信息系统应用程序的建立,拥有的高级功能众多。
在ArcGIS Engine中,所提供的应用编程接口有三种,分别为C++、COM、.NET,对于存在二次开发需求的用户,其留有的自由空间非常大,用户可按照自身需求,进行相应级别开发方式的选择,促进开发工作便利的完成。
ArcGIS Engine的开发与部署培训资料

ArcGIS Engine的开发与部署朱政ESRI中国(北京)有限公司2004年4月目录z ArcGIS9的开发框架z ArcGIS Engine的概念以及功能z ArcGIS Engine的license部署z ArcGIS Engine的开发z实例1 2 3ArcGIS9 概况ArcGIS9 在8版本上扩展的主要功能–地理处理–3D 可视化–开发工具新产品–ArcGIS Engine–ArcGIS ServerArcGIS 9的开发z ArcGIS Enginez ArcGIS Serverz ArcGIS Desktop 上的开发ArcGIS 9 的开发ArcGIS 9 为开发桌面和服务器应用提供了一个完整的系统,它允许开发人员:1 嵌入GIS地图/功能到其他的应用中2 创建和分发自定义的桌面应用3 配置/客户化ArcGIS的应用,比如ArcMap4 扩展ArcGIS 框架和模型5 创建网络服务和应用ArcGIS Desktop ArcGIS Engine ArcGIS ServerArcGIS9 的产品共享ArcObjectsArcGIS9 开发框架z ArcGIS9 建立在ArcGIS8的基础上z ArcGIS9是在新的模块化的框架下建立.–相同的对象–改进的功能z框架改变的几个方面–模块化–多种APIs–跨平台ArcGIS模块化的框架z模块化在ArcGIS9的各个部分中都被考虑了。
z ArcGIS对象模型被组织成一系列的库。
z库是基于功能来分的对象类。
z These libraries definez Type librariesz Name spacesz Java packagesz C++ header filesArcGIS Engine关键特征z标准的GIS框架z有效的license配置方案z跨平台windows unixz跨语言com,.Net,C++,Javaz ArcGIS的扩展功能z开发控件ArcGIS Engine的简介z ArcGIS Engine是为开发商建立应用提供的完整的嵌入式的GIS组件库z ArcGIS Engine由两部分组成:z开发包(开发人员)z运行包(最终用户)分发ArcGIS Engine能做什么?z显示多个图层组成的地图z漫游和缩放地图z查找地图中的要素z用某一字段显示标注z显示航片和遥感影像的栅格数据z绘制几何要素z绘制描述性的文字z沿线,或者用多边形,圆等选择要素z根据一定距离选择要素z通过sql表达式查询要素z渲染要素z动态显示实时数据,或时间序列数据z地图定位z几何操作z维护几何要素z创建和更新地理要素和属性ArcGIS Engine的功能ArcGIS Engine开发包z ArcGIS Engine开发包包括了支持开发任务所需要的所有的开发资源。
arcengine实习报告

arcengine,实习报告篇一:GIS开发实习报告学号1221030205实习报告GIS程序设计实习起止日期: XX 年 7 月13 日至 XX年 7 月 19 日学班成生姓名级绩吴馁 12级地信2 班指导教师(签字)地质与测绘学院XX年 7 月 20 日GIS程序设计实习一、实习目的通过GIS程序设计实习,使学生了解需求分析、项目管理方案设计、系统总体设计以及系统详细设计、系统实施、运行和维护等阶段要完成的具体工作;掌握在C#和ArcEngine环境下构建应用型地理信息系统的方法。
二、实习内容熟悉开发环境:Visual Studio XX; C#; Arc Engine功能需求分析基于组件技术开发应用型地理信息系统组件式技术已成为当今软件技术的潮流之一。
组件式GIS软件的基本思想是把GIS各大功能模块划分为几个控件。
各个GIS控件之间,以及GIS控件与其他非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的GIS应用。
重点完成的工作包括:1)建立ArcGIS Engine 应用程序框架;2)实现对矢量数据(Shape File格式)的访问;3)实现采用简单、唯一值、分类等多种方式对面状矢量数据进行渲染(Render)。
三、实习步骤:实习一:初识ArcGIS Engine 开发环境1、新建一个Windows窗体应用程序2、在新建窗体中添加控件在工具箱中选择添加toolbarcontrol,TOCControl,MapControl控件在解决方案资源管理器中双击在主函数中添加();使得文件可以加载到MapControl中。
右击toolbarcontrol选择属性,如图选择Items选项,添加如图控件右击MapControl属性,在General的map document中添加要加载的地图文件通过以上步骤添加的控件还只是单独存在,而我们的程序需要各控件间协同工作,因此要进行控件绑定。
GIS应用开发_ArcEngine_

ArcGIS Engine 应用程序开发
课程目标
•ArcObjects 库 •ArcObjects Engine APIs •Engine应用程序开发 •许可
ArcGIS 体系结构
•共享ArcObjects •Engine 包括了ArcObjects的核心功能
ArcGIS 库
共享AO库
有些库不可以共享
ArcGIS Engine designer license
允许你设计和开发ArcGIS Engine应用 .ecp 包含了使得功能可用的代码 ������ Designer ������ standardengine ������ gdbedit ������ networkengine ������ spatialengine ������ 3dengine 对开发者来说可以获得所有级别的功能 使用AuthorizationSummary.exe 来检验 license 配置
������ 如: esriArcMapUI 识别属于不同产品的库 理解库的从属关系 开发工具 ������ ArcGIS Developer Help ������ ESRI Automatic Reference addin
开发控件类库
contains the MapControl, PageLayoutControl, TOCControl(Table of Contents), ToolbarControland, ReaderControltogether with a collection of ControlCommands.
安装和配置
Engine 开发需要:
安装
产品和开发包
配置
开发资源 开发环境
产品的许可
《Arcgis操作及开发》实习报告

《Arcgis操作及开发》实习报告张占阳(长安大学地测学院地理信息系统,陕西西安710054)一、实习课时和类型:学时:5周;实习类型:实践操作与软件开发;二、实习目的:第一部分:“使用 ArcMap浏览地理数据”实习目的:1.了解地理数据是如何进行组织及基于“图层”进行显示的。
2.认识ArcMap 图形用户界面。
3.通过浏览与地理要素关联的数据表,你可以了解地理数据是如何与其属性信息进行连接的。
4.掌握GIS两种基本查询操作,加深对其实现原理的理解。
5.初步了解设置图层显示方式-图例的使用。
第二部分:“空间数据库管理及属性编辑”实习目的:1.利用ArcCatalog管理地理空间数据库,理解Personal Geodatabse空间数据库模型的有关概念及其特点。
2.掌握在ArcMap中编辑属性数据的基本操作。
3.掌握根据数据文件生成矢量图层的方法和过程。
4.理解图层属性表间的连接(Join)或关联(Link)关系。
第三部分:“影像配准及矢量化”实习目的:1.利用影像配准(Georeferencing)工具进行影像数据地理配准。
2.编辑器的使用(点要素、线要素、多边形要素的数字化)。
3.熟悉GRAMIN GPS手持机的基本使用方法。
注意:在基于ArcMap 的操作过程中请注意保存地图文档。
第四部分:“空间分析基本操作”实习目的:1.了解基于矢量数据和栅格数据基本空间分析的原理和操作。
2. 掌握矢量数据与栅格数据间的相互转换、栅格重分类(Raster Reclassify)、栅格计算-查询符合条件的栅格(Raster Calculator)、面积制表(Tabulate Area)、分区统计(Zonal Statistic)、缓冲区分析(Buffer)、采样数据的空间内插(Interpolate)、栅格单元统计(Cell Statistic)、邻域统计(Neighborhood)等空间分析基本操作和用途。
- 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数据生成新的表面,以及分析表面、查询表面某一位置的属性值和分析表面不同位置的可见性。
用户还可以计算表面面积和表面之上或者表面之下的体积,并沿表面上的三维线生成剖面。
18.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设计用于海量数据展示,所以为提高显示效率而进行数据缓存是很必要的。
3ArcGlobe将数据分块并按级别建立缓存和索引,才使得即使在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文件)和保存图片文件。
所用到的控件有:SceneControl45控件(用于显示打开的工程文件和栅格文件)、Button 控件、OpenFileDialog 控件、SaveFileDialog 控件、TabControl 控件(页面布局控件)、TOCControl 控件(用于显示图层)。
其布局如下:图3 文件操作的界面布局(红线内的)控件类型Text 属性 控件名称 备注 SceneControl无 mSceneControl 显示数据 TOCControl无 mTOCControl 显示图层 Button打开sxd 文件 OpenSxdFile 打开工程的文件 Button打开Raster 文件 OpenRasterFile 打开栅格的文件 Button 保存图片文件 SaveImage 抓图TabControl 两个页面分别为“基本操作”和“图层”tabControl1 分为两个页面,“基本操作”和“图层” 除了上述表所列出的属性需要设置,另外还要将TOCControl 的Buddy属性设置为mSceneControl,其方法如下:(1)选中TOCControl控件,右击弹出菜单并选择“属性”。
(2)弹出对话框,选择General页面,并找到Buddy复选框,选择mSceneControl,如下图。
图4 设置TOCControl控件的Buddy属性将控件的属性设置完毕之后,为三个Button控件添加Click事件,并添加以下处理代码:OpenSxdFile按钮控件的Click事件代码:/************************************************************************//* "打开sxd文件"按钮按下事件 *//************************************************************************///打开sxd工程文件private void OpenSxdFile_Click(object sender, EventArgs e){//文件过滤mOpenFileDialog.Filter = "sxd文件|*.sxd";//打开文件对话框打开事件if (mOpenFileDialog.ShowDialog() == DialogResult.OK){//从打开对话框中得到打开文件的全路径,并将该路径传入到mSceneControl中mSceneControl.LoadSxFile(mOpenFileDialog.FileName);6}}OpenRasterFile按钮控件的Click事件代码:/************************************************************************//* "打开Raster文件"按钮按下事件 *//************************************************************************///向工程中添加栅格数据private void OpenRasterFile_Click(object sender, EventArgs e){string sFileName = null;//新建栅格图层IRasterLayer pRasterLayer = null;pRasterLayer = new RasterLayerClass();//取消文件过滤mOpenFileDialog.Filter = "所有文件|*.*";//打开文件对话框打开事件if (mOpenFileDialog.ShowDialog() == DialogResult.OK){//从打开对话框中得到打开文件的全路径sFileName = mOpenFileDialog.FileName;//创建栅格图层pRasterLayer.CreateFromFilePath(sFileName);//将图层加入到控件中mSceneControl.Scene.AddLayer(pRasterLayer,true);//将当前视点跳转到栅格图层ICamera pCamera = mSceneControl.Scene.SceneGraph.ActiveViewer.Camera;//得到范围IEnvelope pEenvelop = pRasterLayer.VisibleExtent;//添加z轴上的范围pEenvelop.ZMin = mSceneControl.Scene.Extent.ZMin;pEenvelop.ZMax = mSceneControl.Scene.Extent.ZMax;//设置相机pCamera.SetDefaultsMBB(pEenvelop);mSceneControl.Refresh();}}SaveImage按钮控件的Click事件代码:7/************************************************************************//* "保存图片文件"按钮按下事件 *//************************************************************************///抓图,将场景保存成图片文件private void SaveImage_Click(object sender, EventArgs e){string sFileName = "";//保存对话框的标题mSaveFileDialog.Title = "保存图片";//保存对话框过滤器mSaveFileDialog.Filter = "BMP图片|*.bmp|JPG图片|*.jpg";//图片的高度和宽度int Width = mSceneControl.Width;int Height = mSceneControl.Height;if( mSaveFileDialog.ShowDialog() == DialogResult.OK){sFileName = mSaveFileDialog.FileName;if(mSaveFileDialog.FilterIndex == 1)//保存成BMP格式的文件{mSceneControl.SceneViewer.GetSnapshot(Width, Height,esri3DOutputImageType.BMP, sFileName);}else//保存成JPG格式的文件{mSceneControl.SceneViewer.GetSnapshot(Width, Height,esri3DOutputImageType.JPEG, sFileName);}MessageBox.Show("保存图片成功!");mSceneControl.Refresh();}}2.2场景浏览有两种方法定制场景的浏览,第一种方法是利用arcgis的向导,定制常用的浏览方法,如漫游、放大、缩小等等,该方法简单,并且不需要编写代码,第二种方法是通过添加代码的方法更改场景的CurrentTool属性,从而实现场景浏览的功能,下面对以上两种方法一一介绍:8第一种方法:第一步:添加ToolbarControl控件,该控件位于“工具箱”中的“ArcGIS Windows Forms”选项中,把它的名字设置为”mToolbarControl”,将“Dock”属性设置为“Top”,并将其Buddy 属性设置为mSceneControl,设置方法与mTOCControl控件相同。