您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > GIS设计-GIS设计与开发07122902_周娴
中国矿业大学2012级1班实验报告课程名称GIS设计与开发上机时间2015年6月18日学生姓名周娴学号07122902任课教师张海荣中国矿业大学环境与测绘学院成绩基于ArcObjects组件的常用GIS功能实现【上机目的】熟悉VisualStudio开发环境,掌握ArcGISEngine的组件式开发方式,掌握GIS基本功能的开发方法。【上机内容】以ArcObjectsfor.NET为开发包,用C#高级程序设计语言二次开发一个包含GIS基本操作的应用程序,实现地图文档的打开、保存、地图缩放/漫游,属性查询,空间查询,建立并访问地理空间数据库,TOC控件的右键菜单,添加shape数据,栅格数据等。【上机要求】1.完成代码的编写工作,通过对示例代码的学习,把这些分散的代码相互粘合起来,形成一个能实现常用GIS功能的应用程序。学会VisualStudio2010代码常用调试方法,学会QueryInterface。2.了解利用ComGIS进行应用型地理信息系统建设工作的基本思路。3.独立实验,认真、按时完成实验报告。代码编写过程中,同时思考以下问题:(1)数据源如何被加载访问的?ArcGIS数据组织方式?(2)ArcGISEngine开发中所涉及的面向对象知识中诸如类,继承,对象,接口等如何表达的?【详细步骤】实验一使用控件创建第一个桌面应用程序图一:打开新建一个Windows窗体应用程序(文件—新建—项目—Windows窗体应用程序)图二:拖动工具箱容器里的Panel控件至窗体,右键调整Dock为Top;图三:拖动分栏控件SplitContainer至下方,调整Dock属性为Fill图四:添加TOC,Map,Toolbar,License控件至窗体,调整Dock属性图五:添加地图文档(Map控件—右键—属性)图六:Toolbar控件与Map控件的关联(设置Buddy属性)图七:TOC控件与Map控件的关联(设置Buddy属性)图八:添加工具命令(Toolbar控件—右键—属性—Items选项)图九:在“标准”工具条中点击启动调试按钮,运行程序,发现错误图十:添加语句至使用AO对象的前面图十一:运行成功实验二地图打开与保存图一:从工具箱把MenuStrip放到panell,并新建菜单“打开Mxd”,并将name修改为openMxd图二:在属性对话框中单击事件按钮,打开OpenMxd的Click选项,双击,建立OpenMxd的Click事件的委托处理函数图三:新建菜单“保存Mxd”,在属性对话框中单击事件按钮,修改名称图四:在Click选项中双击,建立SaveMxd的Click事件的委托处理函数图五:运行成功实验三缩放与漫游图一:在菜单栏添加放大菜单,命名为ZoomIn。添加缩小,漫游,全图菜单,分别命名为ZoomOut,Pan,Extene图二:ZoomIn,ZoomOut,Pan,Extene的鼠标单击委托处理如上图三:添加axMapControl的OnMouseDown事件处理函数,添加代码如上图四:Pan可以拖动地图如图图五:FullExtene可以使地图全屏,回到正中间图六:放大地图某一区域如图图七:缩小某一区域地图如图实验四属性查询图一:菜单栏中添加属性查询,Name修改为AttributeQuery,双击添加Click事件处理函数图二:在工程项目右击,添加Windows窗体,Name改为AttributeQueryResult,Text改为属性查询结果图三:从工具箱的Data项添加datagridview,设置Dock为Fill图四:在类中添加代码图五:在AttributeQuery_Click中添加代码图六:运行结果如图实验五:空间查询图一:点选,矩形选择改名并且添加代码图二:在axMapControl1_OnMouseDown里添加代码实验六:建立地理空间数据库图一:打开ArcCatalog,新建文件夹连接到要创建PersonalGeodatabase的文件夹下面,新建PersonalGeodatabase,并重命名图二:导入shape数据图三:在GP导入数据成功后,一个个人空间数据库就建好了图四:在工程项目中添加ESRI.ArcGIS.DataSourceGDB,ESRI.ArcGIS.Geodatabase,ESRI.ArcGIS.Display的引用图五:在菜单栏添加打开mdb数据库的菜单图六:在Click事件处理委托函数中添加代码图七:运行结果如图实验七:TOC控件右键菜单(ContextMenu)添加右键菜单“打开属性表”,在TOC控件鼠标MouseDown事件弹出菜单,在单击“打开属性表”后,将该图层的属性表在新的Form窗体中显示(同属性查询)。这里我们只关注显示右键菜单。图一:从工具箱的菜单项拖动ContextMenuStrip到窗体任意位置,右键单击在弹出菜单中选择编辑项。在Item编辑器中添加菜单,“打开属性表”,并添加单击事件图二:添加TOC控件的MouseDown处理函数,添加代码。这样在鼠标右键单击图层的时候右键菜单便会显示。图三:实验代码如上图,这样,就可以查询所选图层的属性表了。实验八:添加shape数据,栅格数据图一:新建菜单添加数据,并添加菜单项“添加shape数据”,“添加栅格数据”,分别命名为AddShape,AddRaster。图二:添加AddShape的单击处理函数图三:添加AddImage的单击处理函数,核心代码如上实验九:鹰眼图图一:添加一个axMapControl2,显示鹰眼图。图二:当地图载入到主Map控件时,同时也载入到鹰眼控件,在axMapControl1_OnMapReplaced事件响应函数中添加如上代码。若要在添加数据(如shape数据)后更新鹰眼图,需在添加完数据后调用CreateEagleEye()函数。图三:为鹰眼控件MapControl2添加OnMouseDown事件,代码如上图四:为MapControl1添加OnExtentUpdated事件,此事件是在MapControl1控件的显示范围改变时MapControl2作出响应,从而相应更新鹰眼控件中的矩形框。其响应函数代码如上实验心得1、此实验中,放大功能比较机械,每次固定了放大倍数;2、此实验中,缩小功能必须在放大功能的基础上才能够实现,且每次缩小的是固定的倍数;3、此实验中,漫游功能机械且不方便;4、此实验结果需操作运行。5、此系统需要改进。
本文标题:GIS设计-GIS设计与开发07122902_周娴
链接地址:https://www.777doc.com/doc-2874135 .html