ArcEngine地图基本操作的实现PPT优秀课件_第1页
ArcEngine地图基本操作的实现PPT优秀课件_第2页
ArcEngine地图基本操作的实现PPT优秀课件_第3页
ArcEngine地图基本操作的实现PPT优秀课件_第4页
ArcEngine地图基本操作的实现PPT优秀课件_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 本本 章章 内内 容容 n使用使用ArcEngine控件开发控件开发 n创建桌面应用程序创建桌面应用程序 n地图基本操作实现地图基本操作实现 ArcEngine提供大量高级开发控件,使开发人员可 以建立或扩展GIS应用程序和创建高质量的地图用 户界面。包括MapControl、PageLayoutControl、 ReaderControl、TOCControl和ToolbarControl。 GlobeControl和SceneControl也可以获得,但使用 这两个控件的应用程序必须具有ArcEngine的3D分 析选项授权。 嵌入式组件:可拖放到可视化设计环境提供的容器窗体或 对话框中

2、,并可调整控件的大小和位置。 属性页:右键单击控件并选择“属性”菜单项。 ArcObjects:每个控件为其封装的ArcObjects上频繁使用的 属性和方法提供了快捷方式;每个控件还有一个执行公共 任务的帮助方法。 事件:每个控件都会响应终端用户的键盘和鼠标交互而触 发事件。响应发生在控件内的行为会触发一些其他事件。 1.ArcGIS控件主题和概念 1.ArcGIS控件主题和概念 伙伴控件:ToolbarControl和TOCControl都要与另一个“伙 伴控件”协同工作。 控件命令:ArcEngine提供了一系列命令、工具和菜单与 ArcGIS控件协同工作;开发人员也可以通过创建自定义命

3、 令、工具和菜单来扩展ArcEngine提供的命令集。 地图制作:ArcGIS Desktop应用程序可用于预制作能被装 载到ArcGIS控件中的文档,以便快速生产高质量的地图。 2. MapControl和PageLayoutControl MapControl和PageLayoutControl对应于ArcMap桌面应用程 序的“数据”和“布局”视图。用ArcMap创作的地图文 档可以装载到这两个控件中。 地图文档可在设计时通过这两个控件的属性页设置,控件 可以被设置为“链接”或“包含”地图文档;地图文档也 可以使用LoadMxFile方法通过编程装载到控件中。 MapControl和Pa

4、geLayoutControl不仅可以读取地图文档, 还可以写入地图文档(*.mxd)。 3. GlobeControl和SceneControl GlobeControl和SceneControl对应于ArcGlobe和ArcScene桌 面应用程序的三维试图。用ArcGlobe和ArcScene应用程序 创作的Globe和Scene文档可以分别装载到GlobeControl和 SceneControl中。 这两个控件都具有内置的导航功能,运行终端用户移动三 维视图和可视化三维数据,而不必使用控件命令。要使用 内置的导航工具,必须通过属性页或者编程设置Navigate 属性。 4. Read

5、erControl ReaderControl对应于ArcReader桌面应用程序的“数据”和 “布局”视图及其内容表(TOC)。该控件还包含 ArcReader桌面应用程序使用的内部窗口和工作,如Find窗 口和Identify工具等。用ArcMap桌面应用程序创造并用 ArcGIS Publisher扩展模块发布的发布地图文档(PMF)若 在发布时设置为允许装载到定制的ArcReader应用程序中, 则可以装载到ReaderControl中。 ReaderControl中有一个简单的自包含对象模型,提供 ArcReader桌面应用程序所有功能而不需要访问ArcObjects。 5. TOC

6、Control和ToolbarControl TOCControl要与一个“伙伴控件”协同工作。“伙伴控 件”可在设计时通过TOCControl属性页设置或在驻留 TOCControl的容器被显示时用SetBuddyControl方法通过 编程设置。 ToolbarControl要与一个“伙伴控件”协同工作。“伙伴 控件”可在设计时通过ToolbarControl属性页设置或在驻 留ToolbarControl的容器被显示时用SetBuddyControl方 法通过编程设置。 ToolbarControl可以驻留操作其“伙伴 控件”显示的命令、工具和菜单。 1.目标 创建第一个ArcGIS E

7、ngine桌面应用程序 加载MXD文档 2.准备工作 Visual Studio 2005/2008 ArcGIS Engine Developer kit 9.2 制作ArcGIS实验数据地图文档MXD 3.设计流程图 4.创建第一个ArcGIS Engine桌面应用程序-1 可以看到新创建的项目中自动加载了ToolBarControl、TocControl、 LicenseControl、MapControl四个ArcGISEngine控件以及一个.NET StatusStrip控件 4.创建第一个ArcGIS Engine桌面应用程序-1 5.加载MXD地图文档数据-1 6.创建第一个A

8、rcGIS Engine桌面应用程序-2 1. 动Visual Studio .NET,并从新建项目对话框中创建一个新的Visual C# “Windows应用程序”项目。 2.将项目命名为“DEMO”,并选择位置存取该项目。 3.在“工具箱”的“Windows窗体”标签栏中单击右键,然后从上下文菜 单中 选择“选择项”(VS2005)“添加/移除项(I)”(VS2003);或者工具-选 择工具箱。 4.在“选择工具箱”中选择“.NET Framework组件”,并复选“ AxMapControl”,“AxPageLayoutControl”,“AxTOCControl”和“ AxToolba

9、rControl”,单击确定按钮。这样所选择的控件将显示在工具箱的 Windows窗体标签栏中。 6.创建第一个ArcGIS Engine桌面应用程序-2 6.创建第一个ArcGIS Engine桌面应用程序-2 6.创建第一个ArcGIS Engine桌面应用程序-2 5.设置控件Anchor属性,使控件大小随窗口变化而变化 6.创建第一个ArcGIS Engine桌面应用程序-2 private void Form1_Load(object sender, EventArgs e) this.Location = new Point(0, 0); axToolbarControl1.Lef

10、t = this.Left; axToolbarControl1.Width = this.Width; axToolbarControl1.Top = menuStrip1.Height; axTOCControl1.Left = this.Left; axTOCControl1.Top = axToolbarControl1.Top + axToolbarControl1.Height; axTOCControl1.Width = this.Width / 6; axTOCControl1.Height = this.Height - axToolbarControl1.Top - axT

11、oolbarControl1.Height; axMapControl1.Top = axTOCControl1.Top; axMapControl1.Height = axTOCControl1.Height; axMapControl1.Left = this.Left + axTOCControl1.Width; axMapControl1.Width = this.Width - axTOCControl1.Width; 6.创建第一个ArcGIS Engine桌面应用程序-2 using ESRI.ArcGIS.SystemUI; private void Form1_Load(ob

12、ject sender, EventArgs e) axToolbarControl1.AddItem(esriControls.ControlsMapZoomInTool, -1, -1, true, 0, esriCommandStyles.esriCommandStyleIconOnly); axToolbarControl1.AddItem(esriControls.ControlsMapZoomOutTool, -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly); axToolbarControl1.AddIte

13、m(esriControls.ControlsMapZoomInFixedCommand, -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly); axToolbarControl1.AddItem(esriControls.ControlsMapZoomOutFixedCommand, -1, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly); 6.创建第一个ArcGIS Engine桌面应用程序-2 private void Form1_Load(obje

14、ct sender, EventArgs e) string filename =E:上课资料测绘08-GIS开发mapSD.mxd; if ( axMapControl1.CheckMxFile (filename) ) axMapControl1.LoadMxFile(filename); /using ESRI.ArcGIS.Carto; /IActiveView activeViw = axMapControl1.Map as IActiveView; / activeViw.Extent = axMapControl1.FullExtent; /axMapControl1.Refre

15、sh(); axTOCControl1.SetBuddyControl(axMapControl1); axToolbarControl1.SetBuddyControl(axMapControl1); n加载图层数据 n地图显示基本控制 1.加载图层数据 ArcEngine支持多种文件类型,矢量数据如: ArcInfo Coverage、ESRI Shapefile、AutoCAD的 DXF和DWG文件等,栅格数据如JPG、TIFF、 BMP、GRID等。此外还支持企业数据库中的矢量 和栅格文件以及个人数据库文件等。 1.加载图层数据ShapeFile文件 添加ShapeFile文件一般要用

16、到Workspace、 WorkspaceFactory、FeatureWorkspace、 FeatureClass、FeatureLayer等组件类或者抽象类。 1.加载图层数据ShapeFile文件 p Workspace类类 Workspace类表示工作区,它是空间数据和非空间数据集的容器,它是 一个类,因此不能被直接创建,而只能从别的对象那里获得;它提供 了使用和创建新的数据集的方法。根据esri Workspace的不同, Workspace可以分为以下几种: 文件系统工作区(Filesystem Workspace),Shapefile和ArcInfo的 Workspace属于这

17、种; 本地数据库工作区(LocalDatabase Workspace),例如Microsoft Access中存储的个人地理数据库; 远程数据库工作区(RemoteDatabase Workspace),例如存放在Oracle、 DB2等中需要使用ArcSDE的相关组件来方位的地理数据库。 1.加载图层数据ShapeFile文件 p Workspace类类 从某种意义上来说,我们可以简单地认为一个工作区对应ArcInfo的一 个工作区,一个包含Shapefile文件的文件夹。 Workspace实现了26个接口,每个接口又有各自的方法和属性,我们 在具体应用中往往根据需要选择性地使用这些方法

18、和属性来达到我们 的目的。 1.加载图层数据ShapeFile文件 p WorkspaceFactory类类 WorkspaceFactory是Workspace的调配者,通过它用户可以 打开工作区,它支持对工作区浏览和管理的方法,同时它 也能够连接到远程工作区。 从它派生出很多类,如ArcInfoWorkspaceFactory、Cad WorkspaceFactory、Shapefile WorkspaceFactory等。 1.加载图层数据ShapeFile文件 p FeatureLayer类类 要素层,要素Feature的集合及其可视化表达。 p FeatureClass类类 要素类,

19、它是具有行为和属性的空间实体的集合;要素类 中所有的要素都有同样地属性字段;另外,它有一个专门 存放几何图形的字段。 1.加载图层数据ShapeFile文件 主要组件接口IWorkspaceFactory、IFeatureWorkspace、 IFeatureClass、IFeatureLayer的属性和方法介绍(参见帮 助文件)。 1.加载图层数据ShapeFile文件 p IWorkspaceFactory IWorkspaceFactory:主要负责创建和打开工作区的函数以 及提供该WorkspaceFactory的相关信息。 1.加载图层数据ShapeFile文件 p IFeature

20、Workspace IFeatureWorkspace:主要负责创建和打开各种类型的数据 源或者其他工作区的对象。 1.加载图层数据ShapeFile文件 p IFeatureLayer IFeatureLayer:主要负责控制要素层的通用方面。 1.加载图层数据ShapeFile文件 p IFeatureClass IFeatureClass:主要负责获得或设置要素类的属性。 1.加载图层数据ShapeFile文件 p IFeatureClass IFeatureClass:主要负责获得或设置要素类的属性。 1.加载图层数据ShapeFile文件 private void 打开矢量ToolS

21、tripMenuItem_Click(object sender, EventArgs e) IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspace; IFeatureClass pFeatureClass; IFeatureLayer pFeatureLayer; pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(E:上课资料测绘08-G

22、IS开发map, 0) as IFeatureWorkspace; pFeatureClass = pFeatureWorkspace.OpenFeatureClass(区域); pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureClass; pFeatureLayer.Name = 区域; axMapControl1.AddLayer(pFeatureLayer); axMapControl1.Refresh(); using ESRI.ArcGIS.Geodatabase; using

23、 ESRI.ArcGIS.Carto; using ESRI.ArcGIS.DataSourcesFile; 1.加载图层数据ShapeFile文件 private void 打开矢量ToolStripMenuItem_Click(object sender, EventArgs e) IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspace; IFeatureClass pFeatureClass; IFeatureLayer pFeatureLayer; pWorkspaceFactory = new

24、ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(E:上课资料测绘08-GIS开发map, 0) as IFeatureWorkspace; pFeatureClass = pFeatureWorkspace.OpenFeatureClass(区域); pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureClass; IDataset pDataset = pFeature

25、Class as IDataset; pFeatureLayer.Name = pDataset.Name; ILayer pLayer = pFeatureLayer as ILayer; axMapControl1.Map.AddLayer(pLayer); axMapControl1.Refresh(); 思考:如何利用对话框打开思考:如何利用对话框打开ShapeFileShapeFile文件?文件? 1.加载图层数据栅格数据 栅格数据是GIS中重要的数据源之一。有很强的表达能力, 可以描述许多目标和事物,如高程和植被等。一般的栅格 数据有卫星图像、扫描的地图、照片等。由于存储格式的 不

26、同,栅格数据可以分为bmp、tif、jpg、grid等,这些都 可为ArcGIS所支持。实际应用中,可将它们作为图层添加 到工程中,然后进一步利用和分析。 1.加载图层数据栅格数据 p IRasterLayer IRasterLayer :创建和修改栅格数据层。 1.加载图层数据栅格数据 p IRasterLayer 1.加载图层数据栅格数据 using ESRI.ArcGIS.DataSourcesRaster; CreateFromFilePath private void opengrid_Click(object sender, EventArgs e) IRasterLayer pR

27、asterLayer = new RasterLayerClass(); pRasterLayer.CreateFromFilePath(E:上课资料测绘 08-GIS开发mapSDJT.JPG); axMapControl1.AddLayer(pRasterLayer); axMapControl1.Refresh(); 1.加载图层数据栅格数据 CreateFromDataset private void opengrid_Click(object sender, EventArgs e) string filePath = E:上课资料测绘08-GIS开发map; string file

28、Nam = SDJT.JPG; IWorkspaceFactory workspcFac = new RasterWorkspaceFactory(); IRasterWorkspace rasterWorkspc; IRasterDataset rasterDatst = new RasterDatasetClass(); IRasterLayer rasterLay = new RasterLayerClass(); rasterWorkspc = workspcFac.OpenFromFile(filePath, 0) as IRasterWorkspace; rasterDatst =

29、 rasterWorkspc.OpenRasterDataset(fileNam); rasterLay.CreateFromDataset(rasterDatst); axMapControl1.AddLayer(rasterLay); axMapControl1.Refresh(); 1.加载图层数据 1.加载图层数据 2.地图显示基本控制 放大、缩小、漫游和全图显示是GIS、电子地图、 图形处理、图像处理等软件必备的基本功能,是用 户通过有限的屏幕窗口去认识无限的地理空间必须 具备的工具,是进行这类软件开发时必须开发的功 能。 进行放大和缩小操作时,主要用到IEnvelope接口, 而漫

30、游和全图显示主要用IMapControl2接口。 2.地图显示基本控制 IEnvelope接口:Envelopes是包含特定元素在内的矩形框。所有的几何 对象通过X的最大最小值和Y的最大最小值都有一个Envelope。 p IEnvelope 2.地图显示基本控制 p IEnvelope 2.地图显示基本控制 p IEnvelope 2.地图显示基本控制 p IMapControl2 IMapctrol2接口:主要负责控制Mapcontrol控件。 2.地图显示基本控制 p IMapControl2 2.地图显示基本控制 p 放大放大(Zoom In) using ESRI.ArcGIS.Ge

31、ometry; 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(); 2.地图显示基本控制 p 放大放大(Zoom In) using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.Controls; private

32、void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e) axMapControl1.MousePointer = esriControlsMousePointer.esriPointerZoomIn; IEnvelope IEnvTrc; IEnvTrc = axMapControl1.TrackRectangle(); axMapControl1.Extent = IEnvTrc; 2.地图显示基本控制 p 放大放大(Zoom In) u

33、sing ESRI.ArcGIS.Display; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Controls; private INewEnvelopeFeedback m_feedBack; private IPoint m_point; private Boolean m_isMouseDown; private IActiveView m_pActiveView; private void axMapControl1_OnMouseDown(object sender, ESRI.Arc

34、GIS.Controls.IMapControlEvents2_OnMouseDownEvent e) m_pActiveView = axMapControl1.ActiveView; m_point = m_pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y); axMapControl1.MousePointer = esriControlsMousePointer.esriPointerPageZoomOut; m_isMouseDown = true; 2.地图显示基本控制 p 放大放大(Zoom I

35、n) private void axMapControl1_OnMouseMove(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e) if (!m_isMouseDown) return; if (m_feedBack = null) m_feedBack = new NewEnvelopeFeedbackClass(); m_feedBack.Display = m_pActiveView.ScreenDisplay; m_feedBack.Start(m_point); m_feedBack

36、.MoveTo(m_pActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(e.x, e.y); 2.地图显示基本控制 private void axMapControl1_OnMouseUp(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseUpEvent e) if (!m_isMouseDown) return; IEnvelope pEnvelope; if (m_feedBack = null) pEnvelope = m_pActiveView.Extent; pEnvelope.Expand(2, 2, true); pEnvelope.CenterAt(m_po

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论