您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 《GIS程序设计实习》实习指导书v20
《GIS程序设计实习》实习指导书一、实习目的通过GIS程序设计实习,使学生了解需求分析、项目管理方案设计、系统总体设计以及系统详细设计、系统实施、运行和维护等阶段要完成的具体工作;掌握在C#和ArcEngine环境下构建应用型地理信息系统的方法。二、实习的内容与要求熟悉开发环境:VisualStudio2010;C#;ArcEngine10.1功能需求分析基于组件技术开发应用型地理信息系统组件式技术已成为当今软件技术的潮流之一。组件式GIS软件的基本思想是把GIS各大功能模块划分为几个控件。各个GIS控件之间,以及GIS控件与其他非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的GIS应用。重点完成的工作包括:1)建立ArcGISEngine应用程序框架;2)实现对矢量数据(ShapeFile格式)的访问;3)实现采用唯一值(UniqueValues)的方式实现对面状矢量数据进行渲染(Render)。三、时间安排:1、实习动员:介绍本次实习的内容和安排,布置任务。(1天)2、以上2项实习内容。(3天)3、编写实习报告,上交成果。(2天)四、成绩评定1、按学生的实习态度占10%。2、独立动手能力20%。3、实习成果70%。五、实习报告内容:1、实习目的2、实习内容3、实习步骤(原理,方法,如何操作)4、实习结果5、实习感受实习一:初识ArcGISEngine开发环境1、新建Windows窗体应用程序启动VS2008,选择“文件|新建|项目|Windos窗体应用程序”,在项目类型中选择VisualC#,再选择Windows应用程序模板,输入名称“MyMap”,点击确定。2、查看ArcGISWindowsForms控件3、添加地图控件添加完这几个控件后,VS会自动为我们添加一些引用,这些应用如下,注意Version这个类库是ArcGISEngine新增加的,而且必不可少。4、设置相应的属性右击ToolbarControl控件,选择“属性|Items(选择工具)|AddCommands”,选择常用工具。5、控件绑定:设置控件之间的关联通过以上步骤添加的控件还只是单独存在,而我们的程序需要各控件间协同工作,因此要进行控件绑定。分别右击ToolbarControl、TOCControl控件,将Buddy设置为axMapControl1。6、编译运行按F5即可编译运行程序,至此桌面GIS应用程序框架基本框架已经搭建好了,你可以通过工具条的工具打开地图文档,浏览地图了。实习二:建立ArcGISEngine应用程序框架2.1地图浏览1、新建项目启动VS2008,选择“文件|新建|项目|Windos窗体应用程序”,在项目类型中选择VisualC#,再选择Windows应用程序模板,输入名称“MyMapFrame”,点击确定。在解决方案管理器中将“Form1.cs”重命名为“MyMap.cs”,在设计视图中,选中窗体,将其属性中的“Text”改为“MyArcGIS”。2、添加控件选择工具箱中的“菜单和工具栏|StatusStrip(状态栏)”,将其拖入到窗体。选择工具箱中的“ArcGISWindowsForms”节,将“ToolbarControl”控件拖入窗体,并将其属性中的Dock设置为Top。选择工具箱中的“容器|SplitContainer(容器)”拖入窗体,并将其属性中的Dock设置为Fill。将TabControl控件拖入Panel1,将Alignment属性设置为Bottom,Dock属性设置为Fill。点击TabPages属性右边的按钮,弹出TabPage集合编辑器,将tabPage1的Name设置为“Layer”,Text设置为“图层”;将tabPage2的Name设置为“Property”,Text设置为“属性”。如下所示:选择“图层”选项卡,拖入TOCControl控件,设置Dock属性为Fill。选择“属性”选项卡,拖入所有Windows窗体|PropertyGrid控件,设置Dock属性为Fill。拖入TabControl控件到Panel2,设置Dock属性为Fill。并用上述类似的方法,将两个选项卡的Name和Text分别设置为:(Map、地图)和(Layout,制版)。选择“地图”选项卡,拖入MapControl控件,设置Dock属性为Fill。选择“制版”选项卡,拖入PageLayoutControl控件,设置Dock属性为Fill。最后将LicenseControl控件拖入到窗体的任意地方。按F5编译运行,可以看到布局好的程序界面。3、控件绑定通过以上步骤添加的控件还只是单独存在,而我们的程序需要各控件间协同工作,因此要进行控件绑定。分别右击ToolbarControl、TOCControl控件,将Buddy设置为axMapControl1,如下图所示。4、添加工具工具条中还没有任何工具,添加的方法也很简单。右击ToolbarControl,选择“属性|Items”,点击Add,选择Commands选项卡中的Generic,双击Open、SaveAs、Redo、Undo即可将相应工具添加到工具条。常见的工具有:MapNavigation中的导航工具,MapInquiry中的查询工具,FeatureSelection中的选择工具,你可以根据需要酌情添加工具。5、右键点击LicenseControl,点击属性菜单.浏览弹出的对话框,其中ArcGISEngine已经选中,如果需要其它扩展模块的许可,可以在右侧选中对应的复选框,点击确定按钮。5、编译运行按F5即可编译运行程序,至此桌面GIS应用程序框架基本框架已经搭建好了,你可以通过工具条的工具打开地图文档,浏览地图了。2.2添加shp数据刚刚在2.1部分在没有写代码的情况下,我们生成了一个地图浏览小程序。下面我们来使用代码的方式添加数据。1、添加菜单控件并设置菜单属性在VS2010的工具箱中,展开菜单和工具栏,双击MenuStrip控件,这样就在窗体上添加了一个菜单控件;同样双击添加openFileDialog控件,置于窗体任何位置.在菜单上点击,输入“添加SHP数据”作为菜单的标题。2、代码处理2.1选中“添加SHP数据”菜单,在属性框中点击事件按钮,在事件列表中双击Click事件;或者双击“添加SHP数据”菜单.自动生成的事件处理方法如下图所示,我们将在方法内输入处理代码。下面开始使用ArcGISEngine进行编码,首先需要添加ArcGIS的引用,在解决方案管理器中右键点击“添加引用”。在MyMap.cs源代码文件中,在源代码的最顶部,输入如下代码,导入命名空间。usingESRI.ArcGIS.Carto;usingESRI.ArcGIS.Controls;usingESRI.ArcGIS.esriSystem;usingESRI.ArcGIS.Display;usingESRI.ArcGIS.Geometry;usingESRI.ArcGIS.SystemUI;usingESRI.ArcGIS.DataSourcesRaster;///////////////为SHP数据功能增加的类库usingESRI.ArcGIS.DataSourcesFile;usingESRI.ArcGIS.Geodatabase;usingSystem.IO;在菜单的Click事件处理方法中添加如下代码。有多种方法添加shapefile文件到地图控件中,本示例的步骤如下:1.创建工作空间工厂。2.打开shapefile工作空间。3.打开要素类。4.创建要素图层。5.关联图层和要素类。6.添加到地图控件中。示例代码:openFileDialog1.Filter=shapefile文件(*.shp)|*.shp;openFileDialog1.Multiselect=false;DialogResultpDialogResult=openFileDialog1.ShowDialog();if(pDialogResult!=DialogResult.OK)return;stringpPath=openFileDialog1.FileName;stringpFolder=System.IO.Path.GetDirectoryName(pPath);stringpFileName=System.IO.Path.GetFileName(pPath);IWorkspaceFactorypWorkspaceFactory=newShapefileWorkspaceFactory();IWorkspacepWorkspace=pWorkspaceFactory.OpenFromFile(pFolder,0);IFeatureWorkspacepFeatureWorkspace=pWorkspaceasIFeatureWorkspace;IFeatureClasspFC=pFeatureWorkspace.OpenFeatureClass(pFileName);IFeatureLayerpFLayer=newFeatureLayerClass();pFLayer.FeatureClass=pFC;pFLayer.Name=pFC.AliasName;ILayerpLayer=pFLayerasILayer;IMappMap=axMapControl1.Map;pMap.AddLayer(pLayer);axMapControl1.ActiveView.Refresh();3、在键盘上按F5键,运行调试。点击“添加SHP数据”菜单,在弹出的对话框中,选中任意一个shp文件,点击确定,即可把shp文件加载到地图控件中。实习三:矢量要素符号化3.1搭建符号化功能界面在之前创建的MenuStrip上,新建“地图渲染”菜单,并新增“简单渲染”和“唯一值渲染”两个菜单项,如下图所示。3.2代码处理3.1选中“简单渲染”菜单,在属性框中点击事件按钮,在事件列表中双击Click事件;或者双击“简单渲染”菜单,自动生成的事件处理方法如下图所示,我们将在方法内输入处理代码。重复相同的操作,为“唯一值渲染”菜单增加事件处理函数。在菜单“简单渲染”的Click事件处理方法中添加如下代码。privatevoidDefineSimpleRender(IFeatureLayerpFeatureLayer,stringsFieldName){//设置用于渲染的颜色IRgbColorpColor=newRgbColorClass();pColor.Red=255;pColor.Blue=0;pColor.Green=0;//设置用于渲染的符号的基本属性(面状符号)ISimpleFillSymbolpSFSBase=newSimpleFillSymbolClass();pSFSBase.Style=esriSimpleFillStyle.esriSFSSolid;//设置填充方式pSFSBase.Outline.Width=0.4;//设置边框的宽度pSFSBase.Color=pColorasIColor;//设置简单渲染的相关属性ISimpleRendererpSR=newSimpleRendererClass();pSR.Symbol=pSFSBaseasISymbol;//接口转换,对渲染方式进行设置IGeoFeatureLayerpGFL=pFeatureLayerasIGeoFeatureLayer;pGFL.Renderer=pSRasIFeatureRenderer;//地图刷新axMapControl1.Refresh();}在菜单“唯一值渲染”的Click事件处理方法中添加如下代码。privatevoidDefineUniqueValueRender(IFeatureLayerpFeatureLayer,stringsFieldName){//变量声明boolbValFound;
本文标题:《GIS程序设计实习》实习指导书v20
链接地址:https://www.777doc.com/doc-2835929 .html