版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本本 章章 内内 容容n使用ArcEngine控件开发n创建桌面应用程序n地图基本操作实现第1页/共58页第一页,编辑于星期五:十点 四十二分。 ArcEngine提供大量高级开发控件,使开发人员可以建立或扩展GIS应用程序和创建高质量的地图用户界面。包括MapControl、PageLayoutControl、ReaderControl、TOCControl和ToolbarControl。GlobeControl和SceneControl也可以获得,但使用这两个控件的应用程序必须具有ArcEngine的3D分析选项授权。第2页/共58页第二页,编辑于星期五:十点 四十二分。嵌入式组件:可拖放
2、到可视化设计环境提供的容器窗体或对话框中,并可调整控件的大小和位置。属性页:右键单击控件并选择“属性”菜单项。ArcObjects:每个控件为其封装的ArcObjects上频繁使用的属性和方法提供了快捷方式;每个控件还有一个执行公共任务的帮助方法。事件:每个控件都会响应终端用户的键盘和鼠标交互而触发事件。响应发生在控件内的行为会触发一些其他事件。1.ArcGIS控件主题和概念第3页/共58页第三页,编辑于星期五:十点 四十二分。1.ArcGIS控件主题和概念伙伴控件:ToolbarControl和TOCControl都要与另一个“伙伴控件”协同工作。 控件命令:ArcEngine提供了一系列命
3、令、工具和菜单与ArcGIS控件协同工作;开发人员也可以通过创建自定义命令、工具和菜单来扩展ArcEngine提供的命令集。地图制作:ArcGIS Desktop应用程序可用于预制作能被装载到ArcGIS控件中的文档,以便快速生产高质量的地图。第4页/共58页第四页,编辑于星期五:十点 四十二分。2. MapControl和PageLayoutControl MapControl和PageLayoutControl对应于ArcMap桌面应用程序的“数据”和“布局”视图。用ArcMap创作的地图文档可以装载到这两个控件中。地图文档可在设计时通过这两个控件的属性页设置,控件可以被设置为“链接”或“
4、包含”地图文档;地图文档也可以使用LoadMxFile方法通过编程装载到控件中。MapControl和PageLayoutControl不仅可以读取地图文档,还可以写入地图文档(*.mxd)。第5页/共58页第五页,编辑于星期五:十点 四十二分。3. GlobeControl和SceneControl GlobeControl和SceneControl对应于ArcGlobe和ArcScene桌面应用程序的三维试图。用ArcGlobe和ArcScene应用程序创作的Globe和Scene文档可以分别装载到GlobeControl和SceneControl中。 这两个控件都具有内置的导航功能,运行
5、终端用户移动三维视图和可视化三维数据,而不必使用控件命令。要使用内置的导航工具,必须通过属性页或者编程设置Navigate属性。第6页/共58页第六页,编辑于星期五:十点 四十二分。4. ReaderControlReaderControl对应于ArcReader桌面应用程序的“数据”和“布局”视图及其内容表(TOC)。该控件还包含ArcReader桌面应用程序使用的内部窗口和工作,如Find窗口和Identify工具等。用ArcMap桌面应用程序创造并用ArcGIS Publisher扩展模块发布的发布地图文档(PMF)若在发布时设置为允许装载到定制的ArcReader应用程序中,则可以装载
6、到ReaderControl中。 ReaderControl中有一个简单的自包含对象模型,提供ArcReader桌面应用程序所有功能而不需要访问ArcObjects。第7页/共58页第七页,编辑于星期五:十点 四十二分。5. TOCControl和ToolbarControlTOCControl要与一个“伙伴控件”协同工作。“伙伴控件”可在设计时通过TOCControl属性页设置或在驻留TOCControl的容器被显示时用SetBuddyControl方法通过编程设置。ToolbarControl要与一个“伙伴控件”协同工作。“伙伴控件”可在设计时通过ToolbarControl属性页设置或在
7、驻留ToolbarControl的容器被显示时用SetBuddyControl方法通过编程设置。 ToolbarControl可以驻留操作其“伙伴控件”显示的命令、工具和菜单。返回返回第8页/共58页第八页,编辑于星期五:十点 四十二分。1.目标创建第一个ArcGIS Engine桌面应用程序加载MXD文档2.准备工作Visual Studio 2005/2008ArcGIS Engine Developer kit 9.2制作ArcGIS实验数据地图文档MXD第9页/共58页第九页,编辑于星期五:十点 四十二分。3.设计流程图 第10页/共58页第十页,编辑于星期五:十点 四十二分。4.创建
8、第一个ArcGIS Engine桌面应用程序-1 第11页/共58页第十一页,编辑于星期五:十点 四十二分。可以看到新创建的项目中自动加载了ToolBarControl、TocControl、LicenseControl、MapControl四个ArcGISEngine控件以及一个.NET StatusStrip控件 4.创建第一个ArcGIS Engine桌面应用程序-1 第12页/共58页第十二页,编辑于星期五:十点 四十二分。5.加载MXD地图文档数据-1 第13页/共58页第十三页,编辑于星期五:十点 四十二分。6.创建第一个ArcGIS Engine桌面应用程序-2 1. 动Visu
9、al Studio .NET,并从新建项目对话框中创建一个新的Visual C# “Windows应用程序”项目。2.将项目命名为“DEMO”,并选择位置存取该项目。3.在“工具箱”的“Windows窗体”标签栏中单击右键,然后从上下文菜单中选择“选择项”(VS2005)“添加/移除项(I)”(VS2003);或者工具-选择工具箱。4.在“选择工具箱”中选择“.NET Framework组件”,并复选“AxMapControl”,“AxPageLayoutControl”,“AxTOCControl”和“AxToolbarControl”,单击确定按钮。这样所选择的控件将显示在工具箱的Wind
10、ows窗体标签栏中。第14页/共58页第十四页,编辑于星期五:十点 四十二分。6.创建第一个ArcGIS Engine桌面应用程序-2 第15页/共58页第十五页,编辑于星期五:十点 四十二分。6.创建第一个ArcGIS Engine桌面应用程序-2 第16页/共58页第十六页,编辑于星期五:十点 四十二分。6.创建第一个ArcGIS Engine桌面应用程序-2 5.设置控件Anchor属性,使控件大小随窗口变化而变化第17页/共58页第十七页,编辑于星期五:十点 四十二分。6.创建第一个ArcGIS Engine桌面应用程序-2 private void Form1_Load(object
11、 sender, EventArgs e) this.Location = new Point(0, 0); axToolbarControl1.Left = this.Left; axToolbarControl1.Width = this.Width; axToolbarControl1.Top = menuStrip1.Height; axTOCControl1.Left = this.Left; axTOCControl1.Top = axToolbarControl1.Top + axToolbarControl1.Height; axTOCControl1.Width = this
12、.Width / 6; axTOCControl1.Height = this.Height - axToolbarControl1.Top - axToolbarControl1.Height; axMapControl1.Top = axTOCControl1.Top; axMapControl1.Height = axTOCControl1.Height; axMapControl1.Left = this.Left + axTOCControl1.Width; axMapControl1.Width = this.Width - axTOCControl1.Width; 第18页/共5
13、8页第十八页,编辑于星期五:十点 四十二分。6.创建第一个ArcGIS Engine桌面应用程序-2 private void Form1_Load(object sender, EventArgs e) axToolbarControl1.AddItem(esriControls.ControlsMapZoomInTool, -1, -1, true, 0, esriCommandStyles.esriCommandStyleIconOnly); axToolbarControl1.AddItem(esriControls.ControlsMapZoomOutTool, -1, -1, fa
14、lse, 0, esriCommandStyles.esriCommandStyleIconOnly); axToolbarControl1.AddItem(esriControls.ControlsMapZoomInFixedCommand, -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly); axToolbarControl1.AddItem(esriControls.ControlsMapZoomOutFixedCommand, -1, -1, false, 0, esriCommandStyles.esriCom
15、mandStyleIconOnly);第19页/共58页第十九页,编辑于星期五:十点 四十二分。6.创建第一个ArcGIS Engine桌面应用程序-2 private void Form1_Load(object sender, EventArgs e) string filename =E:上课资料测绘08-GIS开发mapSD.mxd; if ( axMapControl1.CheckMxFile (filename) ) axMapControl1.LoadMxFile(filename); / /IActiveView activeViw = axMapControl1.Map as
16、 IActiveView; / activeViw.Extent = axMapControl1.FullExtent; /axMapControl1.Refresh(); axTOCControl1.SetBuddyControl(axMapControl1); axToolbarControl1.SetBuddyControl(axMapControl1); 返回返回第20页/共58页第二十页,编辑于星期五:十点 四十二分。n加载图层数据n地图显示基本控制第21页/共58页第二十一页,编辑于星期五:十点 四十二分。1.加载图层数据 ArcEngine支持多种文件类型,矢量数据如:ArcIn
17、fo Coverage、ESRI Shapefile、AutoCAD的DXF和DWG文件等,栅格数据如JPG、TIFF、BMP、GRID等。此外还支持企业数据库中的矢量和栅格文件以及个人数据库文件等。第22页/共58页第二十二页,编辑于星期五:十点 四十二分。1.加载图层数据ShapeFile文件 添加ShapeFile文件一般要用到Workspace、WorkspaceFactory、FeatureWorkspace、FeatureClass、FeatureLayer等组件类或者抽象类。第23页/共58页第二十三页,编辑于星期五:十点 四十二分。1.加载图层数据ShapeFile文件p Wo
18、rkspace类 Workspace类表示工作区,它是空间数据和非空间数据集的容器,它是一个类,因此不能被直接创建,而只能从别的对象那里获得;它提供了使用和创建新的数据集的方法。根据esri Workspace的不同, Workspace可以分为以下几种:文件系统工作区(Filesystem Workspace),Shapefile和ArcInfo的Workspace属于这种;本地数据库工作区(LocalDatabase Workspace),例如Microsoft Access中存储的个人地理数据库;远程数据库工作区(RemoteDatabase Workspace),例如存放在Oracle
19、、DB2等中需要使用ArcSDE的相关组件来方位的地理数据库。第24页/共58页第二十四页,编辑于星期五:十点 四十二分。1.加载图层数据ShapeFile文件p Workspace类 从某种意义上来说,我们可以简单地认为一个工作区对应ArcInfo的一个工作区,一个包含Shapefile文件的文件夹。 Workspace实现了26个接口,每个接口又有各自的方法和属性,我们在具体应用中往往根据需要选择性地使用这些方法和属性来达到我们的目的。第25页/共58页第二十五页,编辑于星期五:十点 四十二分。1.加载图层数据ShapeFile文件p WorkspaceFactory类 Workspace
20、Factory是Workspace的调配者,通过它用户可以打开工作区,它支持对工作区浏览和管理的方法,同时它也能够连接到远程工作区。 从它派生出很多类,如ArcInfoWorkspaceFactory、Cad WorkspaceFactory、Shapefile WorkspaceFactory等。第26页/共58页第二十六页,编辑于星期五:十点 四十二分。1.加载图层数据ShapeFile文件p FeatureLayer类 要素层,要素Feature的集合及其可视化表达。p FeatureClass类 要素类,它是具有行为和属性的空间实体的集合;要素类中所有的要素都有同样地属性字段;另外,它
21、有一个专门存放几何图形的字段。第27页/共58页第二十七页,编辑于星期五:十点 四十二分。1.加载图层数据ShapeFile文件 主要组件接口IWorkspaceFactory、IFeatureWorkspace、IFeatureClass、IFeatureLayer的属性和方法介绍(参见帮助文件)。第28页/共58页第二十八页,编辑于星期五:十点 四十二分。1.加载图层数据ShapeFile文件p IWorkspaceFactory IWorkspaceFactory:主要负责创建和打开工作区的函数以及提供该WorkspaceFactory的相关信息。第29页/共58页第二十九页,编辑于星期
22、五:十点 四十二分。1.加载图层数据ShapeFile文件p IFeatureWorkspace IFeatureWorkspace:主要负责创建和打开各种类型的数据源或者其他工作区的对象。第30页/共58页第三十页,编辑于星期五:十点 四十二分。1.加载图层数据ShapeFile文件p IFeatureLayer IFeatureLayer:主要负责控制要素层的通用方面。第31页/共58页第三十一页,编辑于星期五:十点 四十二分。1.加载图层数据ShapeFile文件p IFeatureClass IFeatureClass:主要负责获得或设置要素类的属性。 第32页/共58页第三十二页,编
23、辑于星期五:十点 四十二分。1.加载图层数据ShapeFile文件p IFeatureClass IFeatureClass:主要负责获得或设置要素类的属性。 第33页/共58页第三十三页,编辑于星期五:十点 四十二分。1.加载图层数据ShapeFile文件 private void 打开矢量ToolStripMenuItem_Click(object sender, EventArgs e) IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspace; IFeatureClass pFeatureClass
24、; IFeatureLayer pFeatureLayer; pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(E:上课资料测绘08-GIS开发map, 0) as IFeatureWorkspace; pFeatureClass = pFeatureWorkspace.OpenFeatureClass(区域); pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.Fea
25、tureClass = pFeatureClass; pFeatureLayer.Name = 区域; axMapControl1.AddLayer(pFeatureLayer); axMapControl1.Refresh(); 第34页/共58页第三十四页,编辑于星期五:十点 四十二分。1.加载图层数据ShapeFile文件 private void 打开矢量ToolStripMenuItem_Click(object sender, EventArgs e) IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWo
26、rkspace; IFeatureClass pFeatureClass; IFeatureLayer pFeatureLayer; pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(E:上课资料测绘08-GIS开发map, 0) as IFeatureWorkspace; pFeatureClass = pFeatureWorkspace.OpenFeatureClass(区域); pFeatureLayer = new Fe
27、atureLayerClass(); pFeatureLayer.FeatureClass = pFeatureClass; IDataset pDataset = pFeatureClass as IDataset; pFeatureLayer.Name = pDataset.Name; ILayer pLayer = pFeatureLayer as ILayer; axMapControl1.Refresh(); 思考:如何利用对话框打开思考:如何利用对话框打开ShapeFileShapeFile文件?文件?第35页/共58页第三十五页,编辑于星期五:十点 四十二分。1.加载图层数据栅格
28、数据栅格数据是GIS中重要的数据源之一。有很强的表达能力,可以描述许多目标和事物,如高程和植被等。一般的栅格数据有卫星图像、扫描的地图、照片等。由于存储格式的不同,栅格数据可以分为bmp、tif、jpg、grid等,这些都可为ArcGIS所支持。实际应用中,可将它们作为图层添加到工程中,然后进一步利用和分析。第36页/共58页第三十六页,编辑于星期五:十点 四十二分。1.加载图层数据栅格数据p IRasterLayer IRasterLayer :创建和修改栅格数据层。第37页/共58页第三十七页,编辑于星期五:十点 四十二分。1.加载图层数据栅格数据p IRasterLayer第38页/共5
29、8页第三十八页,编辑于星期五:十点 四十二分。1.加载图层数据栅格数据CreateFromFilePathprivate void opengrid_Click(object sender, EventArgs e) IRasterLayer pRasterLayer = new RasterLayerClass(); pRasterLayer.CreateFromFilePath(E:上课资料测绘08-GIS开发mapSDJT.JPG); axMapControl1.AddLayer(pRasterLayer); axMapControl1.Refresh(); 第39页/共58页第三十九页
30、,编辑于星期五:十点 四十二分。1.加载图层数据栅格数据CreateFromDatasetprivate void opengrid_Click(object sender, EventArgs e) string filePath = E:上课资料测绘08-GIS开发map; string fileNam = SDJT.JPG; IWorkspaceFactory workspcFac = new RasterWorkspaceFactory(); IRasterWorkspace rasterWorkspc; IRasterDataset rasterDatst = new RasterD
31、atasetClass(); IRasterLayer rasterLay = new RasterLayerClass(); rasterWorkspc = workspcFac.OpenFromFile(filePath, 0) as IRasterWorkspace; rasterDatst = rasterWorkspc.OpenRasterDataset(fileNam); rasterLay.CreateFromDataset(rasterDatst); axMapControl1.AddLayer(rasterLay); axMapControl1.Refresh(); 第40页
32、/共58页第四十页,编辑于星期五:十点 四十二分。1.加载图层数据第41页/共58页第四十一页,编辑于星期五:十点 四十二分。1.加载图层数据第42页/共58页第四十二页,编辑于星期五:十点 四十二分。2.地图显示基本控制 放大、缩小、漫游和全图显示是GIS、电子地图、图形处理、图像处理等软件必备的基本功能,是用户通过有限的屏幕窗口去认识无限的地理空间必须具备的工具,是进行这类软件开发时必须开发的功能。 进行放大和缩小操作时,主要用到IEnvelope接口,而漫游和全图显示主要用IMapControl2接口。第43页/共58页第四十三页,编辑于星期五:十点 四十二分。2.地图显示基本控制 IE
33、nvelope接口:Envelopes是包含特定元素在内的矩形框。所有的几何对象通过X的最大最小值和Y的最大最小值都有一个Envelope。p IEnvelope第44页/共58页第四十四页,编辑于星期五:十点 四十二分。2.地图显示基本控制p IEnvelope第45页/共58页第四十五页,编辑于星期五:十点 四十二分。2.地图显示基本控制p IEnvelope第46页/共58页第四十六页,编辑于星期五:十点 四十二分。2.地图显示基本控制p IMapControl2 IMapctrol2接口:主要负责控制Mapcontrol控件。第47页/共58页第四十七页,编辑于星期五:十点 四十二分。
34、2.地图显示基本控制p IMapControl2第48页/共58页第四十八页,编辑于星期五:十点 四十二分。2.地图显示基本控制p 放大(Zoom In)private void ZoomIn_Click(object sender, EventArgs e) IEnvelope pEnvelope; pEnvelope = axMapControl1.Extent; pEnvelope.Expand(0.5, 0.5,true); axMapControl1.Extent = pEnvelope; axMapControl1.Refresh(); 第49页/共58页第四十九页,编辑于星期五:
35、十点 四十二分。2.地图显示基本控制p 放大(Zoom In) axMapControl1.MousePointer = esriControlsMousePointer.esriPointerZoomIn; IEnvelope IEnvTrc; IEnvTrc = axMapControl1.TrackRectangle(); axMapControl1.Extent = IEnvTrc; 第50页/共58页第五十页,编辑于星期五:十点 四十二分。2.地图显示基本控制p 放大(Zoom In) private INewEnvelopeFeedback m_feedBack; private
36、IPoint m_point; private Boolean m_isMouseDown; private IActiveView m_pActiveView; m_pActiveView = axMapControl1.ActiveView; axMapControl1.MousePointer = esriControlsMousePointer.esriPointerPageZoomOut; m_isMouseDown = true; 第51页/共58页第五十一页,编辑于星期五:十点 四十二分。2.地图显示基本控制p 放大(Zoom In) if (!m_isMouseDown) return; if (m_feedBack = null) m_feedBack = new NewEnvelopeFeedbackClass(); m_feedBack.Display = m_pActiveView.ScreenDisplay; m_feedBack.Start(m_point); 第52页/共58页第五十二页,编辑于星期五:十点 四十二分。2.地图显示基本控制 if (!m_isMouseDown) return; IEnvel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026春招:医疗器械试题及答案
- 2026春招:信息安全顾问真题及答案
- 2026春招:五粮液笔试题及答案
- 传染病防控与个人卫生知识
- 护理护理教学与科研创新
- 货柜安全检查培训课件
- 2026年广东环境保护工程职业学院高职单招职业适应性测试备考题库带答案解析
- 儿保科服务流程优化报告
- 医疗人员急救培训与考核
- 医疗机构人才队伍建设
- 2024年水利部黄河水利委员会事业单位招聘高校毕业生考试真题
- 2025四川成都益民集团所属企业招聘财务综合岗等岗位28人考试重点题库及答案解析
- 脑缺血与急性脑梗死的影像学表现教学设计
- 《养老机构认知障碍老年人照护指南》
- 2026届四川成都七中高三上学期11月半期考数学试题及答案
- 颅内肿瘤切除术手术配合
- 2025年八年级历史时间轴梳理试卷(附答案)
- 2025年党务工作者试题及答案
- 2025年国家开放大学(电大)《工程项目管理》期末考试复习试题及答案解析
- 2025年水域救援考试题库及答案
- 农贸市场摊位租赁合同
评论
0/150
提交评论