GIS开发实习报告
- 格式:docx
- 大小:275.84 KB
- 文档页数:10
GIS开发实习报告 Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT 学 号 实习报告
GIS程序设计实习
起止日期: 2015 年 7 月13 日 至 2015 年 7 月 19 日 学生姓名 吴馁 班级 12级地信2 班 成绩 指导教师(签字) 地质与测绘学院 2015年 7 月 20 日 GIS程序设计实习
一、实习目的 通过GIS程序设计实习,使学生了解需求分析、项目管理方案设计、系统总体设计以及系统详细设计、系统实施、运行和维护等阶段要完成的具体工作;掌握在C#和ArcEngine环境下构建应用型地理信息系统的方法。
二、实习内容 熟悉开发环境:Visual Studio 2010; C#; Arc Engine 功能需求分析 基于组件技术开发应用型地理信息系统 组件式技术已成为当今软件技术的潮流之一。组件式GIS软件的基本思想是把GIS各大功能模块划分为几个控件。各个GIS控件之间,以及GIS控件与其他非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的GIS应用。 重点完成的工作包括:1) 建立ArcGIS Engine 应用程序框架;2) 实现对矢量数据(Shape File格式)的访问;3) 实现采用简单、唯一值、分类等多种方式对面状矢量数据进行渲染(Render)。
三、实习步骤:
实习一: 初识ArcGIS Engine 开发环境 1、新建一个Windows窗体应用程序 2、在新建窗体中添加控件 在工具箱中选择添加toolbarcontrol,TOCControl,MapControl控件 在解决方案资源管理器中双击在主函数中添加);使得文件可以加载到MapControl中。 右击toolbarcontrol选择属性,如图选择Items选项,添加如图控件 右击MapControl属性,在General的map document中添加要加载的地图文件 通过以上步骤添加的控件还只是单独存在,而我们的程序需要各控件间协同工作,因此要进行控件绑定。分别右击ToolbarControl、TOCControl控件,将Buddy设置为axMapControl1。 试运行一下如图 可以看出基本框架已经搭建好了,但是还得调整一下布局 在工具箱的所有Windows窗体下选择控件,放在窗体里,如图 分别选择窗体里TOCControl,MapControl的属性,将其Dock值设置为fill,如图 调整窗体布局如图
实习二:建立ArcGIS Engine 应用程序框架 地图浏览 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设置为“属性”。 选择“图层”选项卡,拖入TOCControl控件,设置Dock属性为Fill,选择“属性”
选项卡,拖入所有Windows窗体|PropertyGrid控件,设置Dock属性为Fill。 拖入TabControl控件到Panel2,设置Dock属性为Fill。 结果如图所示: 2、加shp 数据
在工具箱中选择MenuStrip控件,添加到左上角,命名为文件,下拉选项为打开矢量数据和打开栅格数据,如图: 同样添加地图渲染,及其下拉选项简单渲染、唯一值渲染、分级渲染,如图: 3、代码处理
选中文件控件下的加入矢量数据控件,双击事件并写入代码,在开始使用ArcGIS Engine进行编码前,首先需要添加ArcGIS的引用,在解决方案管理器中右键点击“添加引用”,如图: using using using using using using using
///////////////为SHP数据功能 增加的类库 using using
using ; 键入的代码如图:
实习三:矢量要素符号化
1、 简单渲染 选中“简单渲染”菜单,在属性框中点击事件按钮,在事件列表中双击Click事件;或者双击“简单渲染”菜单,在方法内输入处理代码。部分代码如下: private void 简单渲染ToolStripMenuItem_Click(object sender, EventArgs e) { IFeatureLayer pFLForRender = (0) as IFeatureLayer; SimpleRender(pFLForRender, @""); } private void SimpleRender(IFeatureLayer pFeatureLayer, string sFieldName) { //设置用于渲染的颜色 IRgbColor pColor = new RgbColor(); = 255; = 0; = 0; //设置用于渲染的符号的基本属性(面状符号) ISimpleFillSymbol pSFSBase = new SimpleFillSymbol(); = ; //设置填充方式 //设置边框的宽度 = pColor as IColor; //设置简单渲染的相关属性 ISimpleRenderer pSR = new SimpleRenderer(); = pSFSBase as ISymbol; //接口转换,对渲染方式进行设置 IGeoFeatureLayer pGFL = pFeatureLayer as IGeoFeatureLayer; = pSR as IFeatureRenderer; //地图刷新 (); }
2、 唯一值渲染 private void 唯一值渲染ToolStripMenuItem_Click(object sender, EventArgs e) { IFeatureLayer pFLForRender = (0) as IFeatureLayer; DefineUniqueValueRender(pFLForRender, @"CONTINENT"); } private void DefineUniqueValueRender(IFeatureLayer pFeatureLayer, string sFieldName) { //变量声明 bool bValFound; //判断要素值是否存在 int iFieldIndex; //用于存储字段所在的索引值 //设置颜色列表,用于随机生成颜色(用于填充面状要素) //设置颜色的基本属性,包括色调(H)、饱和度(S)以及亮度(V) IRandomColorRamp pRCR = new RandomColorRamp(); = 76; = 188; = 20; = 40; = 85; = 100; = true; = 43; //设置唯一值渲染的相关属性 IUniqueValueRenderer pUVR = new UniqueValueRenderer(); = 1; (0, sFieldName); //遍历要素类的所有要素,并为每个要素设置基本的渲染形式 //遍历要素类中的所有要素 IFeatureClass pFC = ; IFeatureCursor pFCursor = (null, false); //通过遍历,返回要素指针(FeatureCursor) IFeature pFeature = (); //获取当前第一个要素 //获得指定字段的索引值 IFields pFields = ; iFieldIndex = (sFieldName); //为不同的要素,设置不同的填充颜色 = (null); //获得应产生的颜色的数目 bool bOK; (out bOK); //判断随机颜色生产是否成功 //获得随机生成的颜色列表 IEnumColors pEnumColors = ; (); IColor pColorForFeature = (); //开始遍历,为每个要素设置基本的渲染信息 while (pFeature != null) { //为每个要素设置基本的渲染符号 ISimpleFillSymbol pSFSForFeature = new SimpleFillSymbol();