GIS开发实习报告.doc

上传人:李司机 文档编号:1163999 上传时间:2022-07-11 格式:DOC 页数:8 大小:182KB
返回 下载 相关 举报
GIS开发实习报告.doc_第1页
第1页 / 共8页
GIS开发实习报告.doc_第2页
第2页 / 共8页
GIS开发实习报告.doc_第3页
第3页 / 共8页
GIS开发实习报告.doc_第4页
第4页 / 共8页
GIS开发实习报告.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《GIS开发实习报告.doc》由会员分享,可在线阅读,更多相关《GIS开发实习报告.doc(8页珍藏版)》请在三一办公上搜索。

1、GIS程序设计一、实习目的通过GIS程序设计实习,使学生了解需求分析、项目管理方案设计、系统总体设计以与系统详细设计、系统实施、运行和维护等阶段要完成的具体工作;掌握在C#和ArcEngine环境下构建应用型地理信息系统的方法.二、实习内容l 熟悉开发环境:Visual Studio 2010; C#; Arc Engine 10.1l 功能需求分析l 基于组件技术开发应用型地理信息系统组件式技术已成为当今软件技术的潮流之一.组件式GIS软件的基本思想是把GIS各大功能模块划分为几个控件.各个GIS控件之间,以与GIS控件与其他非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成

2、最终的GIS应用.重点完成的工作包括:1 建立ArcGIS Engine 应用程序框架;2 实现对矢量数据Shape File格式的访问;3 实现采用简单、唯一值、分类等多种方式对面状矢量数据进行渲染Render.三、实习步骤:实习一: 初识ArcGIS Engine 开发环境1、新建一个Windows窗体应用程序2、在新建窗体中添加控件在工具箱中选择添加toolbarcontrol,TOCControl,MapControl控件在解决方案资源管理器中双击program.cs在主函数中添加;使得文件可以加载到MapControl中.右击toolbarcontrol选择属性,如图选择Items选

3、项,添加如图控件右击MapControl属性,在General的map document中添加要加载的地图文件通过以上步骤添加的控件还只是单独存在,而我们的程序需要各控件间协同工作,因此要进行控件绑定.分别右击ToolbarControl、TOCControl控件,将Buddy设置为axMapControl1.试运行一下如图可以看出基本框架已经搭建好了,但是还得调整一下布局在工具箱的所有Windows窗体下选择控件,放在窗体里,如图分别选择窗体里TOCControl,MapControl的属性,将其Dock值设置为fill,如图调整窗体布局如图实习二:建立ArcGIS Engine 应用程序框

4、架2.1 地图浏览1、新建项目,添加控件新建windows窗体应用程序,选择工具箱中StatusStrip,将其拖入到窗体,再选择工具箱中的ToolbarControl控件拖入窗体,修改dock值为TOP,再将SplitContainer控件拖入窗体,Dock设置为Fill,将TabControl控件拖入Panel1,将Alignment属性设置为Bottom,Dock属性设置为Fill.点击TabPages属性右边的按钮,弹出TabPage集合编辑器,将tabPage1的Name设置为Layer,Text设置为图层;将tabPage2的Name设置为Property,Text设置为属性.选择

5、图层选项卡,拖入TOCControl控件,设置Dock属性为Fill,选择属性选项卡,拖入所有Windows窗体|PropertyGrid控件,设置Dock属性为Fill.拖入TabControl控件到Panel2,设置Dock属性为Fill.结果如图所示:2、加shp 数据在工具箱中选择MenuStrip控件,添加到左上角,命名为文件,下拉选项为打开矢量数据和打开栅格数据,如图:同样添加地图渲染,与其下拉选项简单渲染、唯一值渲染、分级渲染,如图:3、代码处理选中文件控件下的加入矢量数据控件,双击事件并写入代码,在开始使用ArcGIS Engine进行编码前,首先需要添加ArcGIS的引用,在

6、解决方案管理器中右键点击添加引用,如图:using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.esriSystem;using ESRI.ArcGIS.Display; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.SystemUI; using ESRI.ArcGIS.DataSourcesRaster; /为SHP数据功能增加的类库using ESRI.ArcGIS.DataSourcesFile; using ESRI.ArcGIS.Geodatabase

7、; using System.IO;键入的代码如图:实习三:矢量要素符号化1、 简单渲染选中简单渲染菜单,在属性框中点击事件按钮,在事件列表中双击Click事件;或者双击简单渲染菜单,在方法内输入处理代码.部分代码如下:privatevoid 简单渲染ToolStripMenuItem_ClickIFeatureLayer pFLForRender = axMapControl1.get_Layer asIFeatureLayer; SimpleRender; privatevoid SimpleRender/设置用于渲染的颜色IRgbColor pColor = newRgbColor; p

8、Color.Red = 255; pColor.Blue = 0; pColor.Green = 0;/设置用于渲染的符号的基本属性面状符号ISimpleFillSymbol pSFSBase = newSimpleFillSymbol; pSFSBase.Style = esriSimpleFillStyle.esriSFSSolid; /设置填充方式 pSFSBase.Outline.Width = 0.4; /设置边框的宽度 pSFSBase.Color = pColor asIColor;/设置简单渲染的相关属性ISimpleRenderer pSR = newSimpleRender

9、er; pSR.Symbol = pSFSBase asISymbol;/接口转换,对渲染方式进行设置IGeoFeatureLayer pGFL = pFeatureLayer asIGeoFeatureLayer; pGFL.Renderer = pSR asIFeatureRenderer;/地图刷新 axMapControl1.Refresh; 2、 唯一值渲染privatevoid 唯一值渲染ToolStripMenuItem_ClickIFeatureLayer pFLForRender = axMapControl1.get_Layer asIFeatureLayer; Defin

10、eUniqueValueRender;privatevoid DefineUniqueValueRender /变量声明bool bValFound; /判断要素值是否存在 int iFieldIndex; /用于存储字段所在的索引值/设置颜色列表,用于随机生成颜色用于填充面状要素/设置颜色的基本属性,包括色调H、饱和度S以与亮度VIRandomColorRamp pRCR = newRandomColorRamp; pRCR.StartHue = 76; pRCR.EndHue = 188; pRCR.MinSaturation = 20; pRCR.MaxSaturation = 40;

11、pRCR.MaxValue = 85; pRCR.MaxValue = 100; pRCR.UseSeed = true; pRCR.Seed = 43;/设置唯一值渲染的相关属性IUniqueValueRenderer pUVR = newUniqueValueRenderer; pUVR.FieldCount = 1; pUVR.set_Field;/遍历要素类的所有要素,并为每个要素设置基本的渲染形式/遍历要素类中的所有要素IFeatureClass pFC = pFeatureLayer.FeatureClass;IFeatureCursor pFCursor = pFC.Search

12、; /通过遍历,返回要素指针FeatureCursorIFeature pFeature = pFCursor.NextFeature; /获取当前第一个要素/获得指定字段的索引值IFields pFields = pFCursor.Fields; iFieldIndex = pFields.FindField;/为不同的要素,设置不同的填充颜色 pRCR.Size = pFC.FeatureCount; /获得应产生的颜色的数目bool bOK; pRCR.CreateRamp; /判断随机颜色生产是否成功?/获得随机生成的颜色列表IEnumColors pEnumColors = pRCR

13、.Colors; pEnumColors.Reset;IColor pColorForFeature = pEnumColors.Next;/开始遍历,为每个要素设置基本的渲染信息while /为每个要素设置基本的渲染符号ISimpleFillSymbol pSFSForFeature = newSimpleFillSymbol; pSFSForFeature.Style = esriSimpleFillStyle.esriSFSSolid; pSFSForFeature.Outline.Width = 0.4; pSFSForFeature.Color = pColorForFeature;

14、/获得当前要素中指定字段的名称string sFeatureName; sFeatureName = pFeature.get_Value asstring;/设置唯一值渲染的相关属性 pUVR.AddValue; pUVR.set_Label; pUVR.set_Symbol; /设置该值渲染信息/获得下一组要素和颜色 pFeature = pFCursor.NextFeature; pColorForFeature = pEnumColors.Next; /接口转换,对渲染方式进行设置IGeoFeatureLayer pGFL = pFeatureLayer asIGeoFeatureLa

15、yer; pGFL.Renderer = pUVR asIFeatureRenderer;/地图刷新 axMapControl1.Refresh; 3、分级渲染先打开ArcMap讲要导入数据的属性表打开添加一个字段命名为X,并进行计算几何处理,分级渲染便以这个字段里的值分级,分为两级,最小值到90,和90到最大值.代码如下:privatevoid 分类渲染ToolStripMenuItem_ClickIFeatureLayer pFLForRender = axMapControl1.get_Layer asIFeatureLayer; ClassBreakRender; privatevoi

16、d ClassBreakRender IRandomColorRamp pRCR = newRandomColorRamp;IClassBreaksRenderer pCBR = newClassBreaksRenderer; pRCR.StartHue = 76; pRCR.EndHue = 188; pRCR.MinSaturation = 20; pRCR.MaxSaturation = 40; pRCR.MinValue = 85; pRCR.MaxValue = 100; pRCR.UseSeed = true; pRCR.Seed = 43; pCBR.Field = sField

17、Name; pCBR.BreakCount = 2;IFeatureClass pFC = pFL.FeatureClass; pRCR.Size = 3;bool bOK; pRCR.CreateRamp;if IEnumColors pEC = pRCR.Colors; pEC.Reset;IColor pColorForFeature = pEC.Next;for int i = 0; i ISimpleFillSymbol pSFSForFeature = newSimpleFillSymbol;ISimpleFillSymbol pSFSForFeature1 = newSimple

18、FillSymbol; pSFSForFeature.Style = esriSimpleFillStyle.esriSFSSolid; pSFSForFeature.Outline.Width = 0.4; pSFSForFeature.Color = pColorForFeature;switch case 0: pCBR.set_Break; pCBR.set_Label; pCBR.set_Description; pCBR.set_Symbol; pSFSForFeature1.Color = pSFSForFeature.Color;break;case 1: pCBR.set_B

19、reak; pCBR.set_Label; pCBR.set_Description; pCBR.set_Symbol;break; pColorForFeature = pEC.Next; IGeoFeatureLayer pGFL = pFL asIGeoFeatureLayer; pGFL.Renderer = pCBR asIFeatureRenderer; axMapControl1.Refresh; 四、实习结果1、实习一结果2、实习二结果3、 实习三结果五、实习感受通过此次实习,了解了用ARC Engine进行地理信息系统的二次开发的大致流程,利用ARC Engine开发可以很好地定制自己所需的功能,而且也不是很难,在VS中敲代码时很多方法和接口就自动提示出现,都不需要记住那么多方法,只要了解那些方法的功能,需要用时能够调用就行.开发的关键还是在于各种接口以与控件方法的引用.此次实习也只是接触了皮毛,要想更好地利用其进行地理信息系统的开发还是得熟悉和了解各种接口和方法的功能,要学会利用帮助文档来查询所需的各种借口和方法.8 / 8

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号