地理信息系统工程实验报告

上传人:hs****ma 文档编号:500843374 上传时间:2023-08-23 格式:DOC 页数:9 大小:30.01KB
返回 下载 相关 举报
地理信息系统工程实验报告_第1页
第1页 / 共9页
地理信息系统工程实验报告_第2页
第2页 / 共9页
地理信息系统工程实验报告_第3页
第3页 / 共9页
地理信息系统工程实验报告_第4页
第4页 / 共9页
地理信息系统工程实验报告_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《地理信息系统工程实验报告》由会员分享,可在线阅读,更多相关《地理信息系统工程实验报告(9页珍藏版)》请在金锄头文库上搜索。

1、地理信息系统工程实验报告(二)一、实验内容 本次实验在上次实验所创建项目的基础上进行,围绕鹰眼窗口的地图同步功能的实现过程展开,通过学习 MapControl 控件的事件处理过程,了解事件处理的基本概念和调用结构;通过学习 Map 组件的事件处理过程,了解利用程序代码处理组件事件;了解“事件驱动”模式的基本概念,了解事件处理的控制流程及其涉及的主要部分,了解事件处理函数的定义规则和作用,学会利用时序图表达事件处理过程,学会通过编写代码的方式自定义事件委托和事件处理函数的基本方法。二、实验原理方案“事件驱动”“事件驱动”是一种常用的交互式程序控制模式,“事件”通常代表程序对象的某些特殊状态,这些

2、状态是其他交互对象或者外界交互设备所关注的,它们可以根据这些状态做出特定的响应,那么程序对象就需要一种机制能够在这些特殊状态发生时通知其他交互方,而其他交互方也需要能自由选择对应的响应行为,这种机制就是“事件处理”机制。如果将主窗口看作被控制方,将鹰眼窗口看作控制方,则同步过程可以看作一种典型的事件处理过程,由控制方监听被控制方的“加载地图”事件,然后在事件响应中加载与被控制方相同的地图数据。“触发”“事件监听”“事件处理函数”“事件响应”三、实验器材计算机 vs2010 AE10.1四、实验步骤1、打开上次的工程文件MyGISProgress;2、在工具栏中找到属性按钮标签,单击,再在窗体体

3、设计窗口中单击Form1窗口,查看相应的属性找到“”事件标签并单击,然后双击Load;3、按照2中的类似方式打开MapControl1的OnMapReplaced事件并双击打开代码编辑。五、实验结果分析 能进行交互操作 问题:鹰眼窗口和主地图窗口都是不可修改的内置事件,所以要交互必须要有一个中间过渡 get_Layer的问题 既然 ItemAdded 表示添加一个新图层的事件,为什么没有命名为更直接的LayerAdded?通常地图都需要加上一个鹰眼,要实现鹰眼功能,不可避免的就需要实现主地图和鹰眼的同步。令人失望的是ArcGIS的帮助文档和范例中都采用同时在主地图和鹰眼中加载mxd文档的方式来

4、实现同步的,确切的说,这样只是加载了地图,并没有实现同步。如果程序启动后并没有加载任何地图文档,而只是添加图层,那么这种处理方式就暴露马脚了。其实会出问题的不仅仅是这种情况,当我们修改主地图的符号、样式等时,也会有问题,因此我们必须使用同步加载图层的方式来才能实现主图和鹰眼的同步。所谓同步加载图层,就是指直接在鹰眼中加载主图的图层,同步就是指主地图中的图层发生变化时这些变化也都要反映到鹰眼中去。 加载mxd文档好办,根据AE的帮助说明,当加载mxd文档后,MapControl会触发OnMapReplaced事件,我们可以在这个事件中添加相应的处理。但是当添加图层时,MapControl并没有并

5、没有LayerAdded之类的事件,这种情况下,如果要同步鹰眼和主地图,就需要捕获类似于LayerAdded之类的事件。如何实现呢,答案就是IActiveViewEvents,具体如下: 添加事件对InitializeComponent 方法的影响,“+=”操作符 The operation was attempted on an empty geometry.六、实验小结地理信息工程实验报告(三)一、实验内容本实验是在上一实验的鹰眼窗口中进行对图形元素的操作,实现在鹰眼窗口中实时显示地图主窗口显示范围标志,并能在鹰眼中利用鼠标控制矩形框来控制主窗口地图显示范围,主要利用到IEnvelope

6、接口类型的组件对象,进行矩形框的代码编写(在上一实验中其实已经实现);了解 Map 组件在数据管理上的图层化结构,掌握AO 组件显示空间数据的基本模式:几何图形+显示符号,了解并熟练掌握IGraphicsContainer,IRectangleElement,IElement,ILineSymbol,IFillSymbol等一些与图形元素绘制相关接口的应用。二、实验原理1、在 AO 组件库中只有一个组件实现了 IEnvelope接口,即 Envelope 组件,它表示了一种特殊的矩形,这种矩形的边框与显示窗口的边框是平行的,常常用来表达其他空间图形的最小外包矩形(MER),在本实验中我们可以获

7、取地图主窗口的 Extent 属性并将其矩形绘制在鹰眼窗口中,这样就实现了在鹰眼中标志地图显示范围的效果。2、Element元素对象是一个非常庞杂的对象集合,主要分为两大部分:图形元素(Graphic Element)和框架元素(Frame Element),本实验我们主要讨论应用图形元素。其中IElement是所有图形元素都实现的接口,它可以确定元素的Geometry属性,Element是一个抽象类。把图形元素添加到视图并显示,主要步骤如下:a、IGraphicsContainer创建一个容器并清除原来元素;b、创建矩形,定义矩形,获取新建矩形;c、创建相应地理要素,定义线性,线色,填充等符

8、号特性d、在容器IGraphicsContainer中加载元素,刷新视图,让添加的元素可以显示出来。三、实验仪器四、实验步骤1、打开MyGISProgress工程文件2、在设计窗口单击MapControl1,找到OnExtenUpDated事件并双击打开,进行相应的代码编写3、进行矩形框的具体代码设计,主要涉及的接口类型和方法有,IGraphicsContainer,IActiveView,IRectangleElement,IElement,IEnvelope,IRgbColor,ILineSymbol,IFillSymbol,DeleteAllElement(),AddElement()等

9、等。4、打开MapControl2中的OnMouseDown事件,并进行相应代码的编写,判断当点击鼠标左右键的区别,本实验中设定的是:点击左键移动当前矩形框的几何中心,点击右键并拖动可以改变矩形框大小,并在MapControl1中进行响应。主要用到两个if()判断,和IPoint,CenterAt(),和Extent等接口和属性。5、同样的道理我们可以在MapControl1的OnMouseDown事件中点击右键拖动,也可以显示相应的图层大小,并在鹰眼中显示同步并且可以改变矩形框的大小。6、进行程序调试直至完成。五、实验结果本实验的结果为,调试后未添加图层之前,在MapControl2鹰眼窗口

10、初始化一个红色的矩形框,表示MapControl1地图主窗口的显示范围,加载图层后单击左键可以移动矩形框,改变地图主窗口的显示区域,拖曳鼠标右键可以改变矩形框大小,扩大图层显示比例。在实验过程中,我们要在Form_Load()事件中,加入矩形框的初始化语句才能使得没有加载图层之前,就已经出现矩形框; 当加载图层后,在IExtendsUpdated()事件中定义矩形框、图形元素和显示范围等,然后在OnMouseDown()事件中判断对矩形框的相应操作,六、实验小结实验四利用 Geodatabase API 读取 shapefiles 数据一、实验内容本实验继续之前的MyGISProgress工程

11、实验,即主要完成属性表的显示和shapefiles文件的添加两个右键菜单功能的实现。实验通过 shapefiles 数据的读取操作,认识 Geodatabase 数据模型下矢量数据的基本管理结构和应用特征,理解 Geodatabase 数据模型的基本框架,掌握 AO 组件中的 Geodatabase API 基本调用规则,初步了解ESRI.ArcGIS.Geodatabase 库和ESRI.ArcGIS.DataSourceFile 库及其与本实验相关的接口如IWorkspaceFactory,IWorkspace,esriDatasetType,IDatasetIEnumDataset,IF

12、eatureClass,ShapefileWorkspaceFactory。实验通过添加窗体、DataGridView控件进行相应shapefile图层属性表的显示和添加ContextMenuStrip控件进行右键菜单的实现。二、实验原理1、Geodatabase 的概念框架完全植根于关系型DBMS 的相关理论,在关系型 DBMS数据存储的基本结构是:数据库-数据集的集合-数据集-数据记录,其中的“-”表达包含关系。在 AO 的 Geodatabase API中都有对照的接口,数据库对应于 IWorkspace,数据集的集合对应于 IDatasets,数据集对应于 IDataset,而字段对应

13、于 IField,在矢量要素环境下数据记录对应于IFeature,有不同的组件实现了上述接口,也有的组件同时实现了上述接口中的多个接口。本实验将通过 Shapefiles 数据的读取操作,分别介绍相关组件和接口的调用方法。2、由于 Shapefile 文件的数据库是以文件形式存储在本地磁盘中的,因此可以利用 IWorkspaceFactory 接口定义的OpenFromFile 方法来创建一个连接了指定 Shapefile 数据库的 Workspace 组件对象;要连接 Shapefile 文件的数据库,必须通过利用 ShapefileWorkspaceFactory 组件对象创建 Works

14、pace 组件对象的方式来实现。Workspace 被定义为“数据集的集合的集合”,数据库中的数据集先按照类型被组合为多种“数据集的集合”(Datasets),然后这些个 Datasets 再组合为 Workspace,从而一个 Workspace 中能包含多种类型的数据集。因此,在这一模型下,要获取一个指定的数据集组件对象,需要先获取指定类型的“数据集的集合”(Datasets),这是一个实现了 IEnumDataset 接口的组件对象,然后在这个对象中查找指定的数据集组件对象。三、实验仪器四、实验步骤1、打开MyGISProgress工程项目;2、新建一个窗体,将窗体的 Name 属性修改

15、为“LayerAttrib”,将窗体的 Text 属性修改为“图层属性表”。 然后向窗体中拖入一个 DataGridView 、MapControl、GroupBox控件及适当按钮标签进行相应窗体美化。3、在LayerAttrib.cs下的ShowFeatureLayerAttrib()方法体中写入打开属性表的相应实现代码。4、在原来的contextMenuStrip1控件下添加“打开属性表”功能项,新建一个contextMenuStrip3控件并添加一个“添加数据”功能。4、依次打开“添加数据”和“打开属性表”的click事件写入相应实现代码。5、程序调试直至完成。五、实验结果六、实验小结、

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号