GIS开发实习报告

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学号1221030205

实习报告

GIS程序设计实习

起止日期:2015 年7 月13 日至2015 年7 月19 日

学生姓名吴馁

班级12级地信2 班

成绩

指导教师(签字)

地质与测绘学院

2015年7 月20 日

GIS程序设计实习

一、实习目的

通过GIS程序设计实习,使学生了解需求分析、项目管理方案设计、系统总体设计以及系统详细设计、系统实施、运行和维护等阶段要完成的具体工作;掌握在C#和ArcEngine环境下构建应用型地理信息系统的方法。

二、实习内容

熟悉开发环境:Visual Studio 2010; C#; Arc Engine 10.1

功能需求分析

基于组件技术开发应用型地理信息系统

组件式技术已成为当今软件技术的潮流之一。组件式GIS软件的基本思想是把GIS各大功能模块划分为几个控件。各个GIS控件之间,以及GIS控件与其他非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的GIS应用。

重点完成的工作包括:1)建立ArcGIS Engine 应用程序框架;2)实现对矢量数据(Shape File格式)的访问;3)实现采用简单、唯一值、分类等多种方式对面状矢量数据进行渲染(Render)。

三、实习步骤:

实习一:初识ArcGIS Engine 开发环境

1、新建一个Windows窗体应用程序

2、在新建窗体中添加控件

在工具箱中选择添加toolbarcontrol,TOCControl,MapControl控件

在解决方案资源管理器中双击program.cs在主函数中添加ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine);使得文件可以加载到MapControl中。

右击toolbarcontrol选择属性,如图选择Items选项,添加如图控件

右击MapControl属性,在General的map document中添加要加载的地图文件

通过以上步骤添加的控件还只是单独存在,而我们的程序需要各控件间协同工作,因此要进行控件绑定。分别右击ToolbarControl、TOCControl控件,将Buddy设置为axMapControl1。

试运行一下如图

可以看出基本框架已经搭建好了,但是还得调整一下布局

在工具箱的所有Windows窗体下选择控件,放在窗体里,如图

分别选择窗体里TOCControl,MapControl的属性,将其Dock值设置为fill,如图调整窗体布局如图

实习二:建立ArcGIS Engine 应用程序框架

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设置为“属性”。

选择“图层”选项卡,拖入TOCControl控件,设置Dock属性为Fill,选择“属性”选项卡,拖入所有Windows窗体|PropertyGrid控件,设置Dock属性为Fill。

拖入TabControl控件到Panel2,设置Dock属性为Fill。

结果如图所示:

2、加shp 数据

在工具箱中选择MenuStrip控件,添加到左上角,命名为文件,下拉选项为打开矢量数据和打开栅格数据,如图:

同样添加地图渲染,及其下拉选项简单渲染、唯一值渲染、分级渲染,如图:

3、代码处理

选中文件控件下的加入矢量数据控件,双击事件并写入代码,在开始使用ArcGIS Engine 进行编码前,首先需要添加ArcGIS的引用,在解决方案管理器中右键点击“添加引用”,如图:

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;

using System.IO;

键入的代码如图:

实习三:矢量要素符号化

1、简单渲染

选中“简单渲染”菜单,在属性框中点击事件按钮,在事件列表中双击Click事件;或者双击“简单渲染”菜单,在方法内输入处理代码。部分代码如下:

private void简单渲染ToolStripMenuItem_Click(object sender, EventArgs e)

{

IFeatureLayer pFLForRender = axMapControl1.get_Layer(0) as IFeatureLayer;

SimpleRender(pFLForRender, @"");

}

private void SimpleRender(IFeatureLayer pFeatureLayer, string sFieldName)

{

//设置用于渲染的颜色

IRgbColor pColor = new RgbColor();

pColor.Red = 255;

pColor.Blue = 0;

pColor.Green = 0;

//设置用于渲染的符号的基本属性(面状符号)

ISimpleFillSymbol pSFSBase = new SimpleFillSymbol();

pSFSBase.Style = esriSimpleFillStyle.esriSFSSolid; //设置填充方式

pSFSBase.Outline.Width = 0.4; //设置边框的宽度

pSFSBase.Color = pColor as IColor;

//设置简单渲染的相关属性

ISimpleRenderer pSR = new SimpleRenderer();

pSR.Symbol = pSFSBase as ISymbol;

//接口转换,对渲染方式进行设置

IGeoFeatureLayer pGFL = pFeatureLayer as IGeoFeatureLayer;

pGFL.Renderer = pSR as IFeatureRenderer;

//地图刷新

axMapControl1.Refresh();

}

2、唯一值渲染

private void唯一值渲染ToolStripMenuItem_Click(object sender, EventArgs e)

{

IFeatureLayer pFLForRender = axMapControl1.get_Layer(0) as IFeatureLayer;

DefineUniqueValueRender(pFLForRender, @"CONTINENT");

相关文档
最新文档