Arcgis Engine二次开发实验报告Word格式文档下载.docx

上传人:b****1 文档编号:1077924 上传时间:2023-04-30 格式:DOCX 页数:57 大小:1.58MB
下载 相关 举报
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第1页
第1页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第2页
第2页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第3页
第3页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第4页
第4页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第5页
第5页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第6页
第6页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第7页
第7页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第8页
第8页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第9页
第9页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第10页
第10页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第11页
第11页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第12页
第12页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第13页
第13页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第14页
第14页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第15页
第15页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第16页
第16页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第17页
第17页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第18页
第18页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第19页
第19页 / 共57页
Arcgis Engine二次开发实验报告Word格式文档下载.docx_第20页
第20页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Arcgis Engine二次开发实验报告Word格式文档下载.docx

《Arcgis Engine二次开发实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Arcgis Engine二次开发实验报告Word格式文档下载.docx(57页珍藏版)》请在冰点文库上搜索。

Arcgis Engine二次开发实验报告Word格式文档下载.docx

创建书签,保存当前感兴趣范围,将书签名加入组合框,以便调用

3.添加“书签名称设置”窗体:

获取书签名,传递给主窗体

4.添加两个事件响应函数:

“创建书签”菜单项的点击事件,作用是打开“书签名称设置”窗体;

“确认”按钮的点击事件,作用是调用创建书签函数

5.实现与调用书签:

添加组合框的事件响应函数,作用是当组合框中选项改变时,地图将刷新显示出书签所记录的范围。

实现创建书签的流程图如下:

关键代码:

1.添加控件和类库引用

usingESRI.ArcGIS.Geometry;

2.添加“创建书签”函数

publicvoidCreateBookmark(stringsBookmarkName)//参数名为书签名

{

//通过IAOIBookmark接口创建一个变量,用于保存当前地图的范围

IAOIBookmarkaoiBookmark=newAOIBookmarkClass();

//判断如果变量不为空的话,将当前地图的属性赋给变量,变量名为书签名

if(aoiBookmark!

=null)

aoiBookmark.Location=axMapControl1.ActiveView.Extent;

aoiBookmark.Name=sBookmarkName;

}

//通过IMapBookmarks接口访问当前地图,在地图中加入新建书签

IMapBookmarksbookmarks=axMapControl1.MapasIMapBookmarks;

if(bookmarks!

bookmarks.AddBookmark(aoiBookmark);

//将新建书签名加入组合框,以便调用

cbBookmarkList.Items.Add(aoiBookmark.Name);

3.添加“书签名称设置”窗体

//定义一个主窗体变量,用于保存主窗体对象

publicMainFormm_frmMain;

//用于传入主窗体对象

publicAdmitBookmarkName(MainFormfrm)

InitializeComponent();

if(frm!

m_frmMain=frm;

//“确认”按钮的“点击”事件响应函数,用于创建书签

privatevoidbtAdmit_Click(objectsender,EventArgse)

if(m_frmMain!

=null||tbBookmarName.Text=="

"

m_frmMain.CreateBookmark(tbBookmarName.Text);

this.Close();

4.实现与调用书签

//“创建书签”按钮的“点击”事件响应函数

privatevoidmiCreateBookmark_Click(objectsender,EventArgse)

AdmitBookmarkNamefrmABN=newAdmitBookmarkName(this);

frmABN.Show();

//组合框的事件响应函数,选择不同书签,显示不同范围

privatevoidcbBookmarkList_SelectedIndexChanged(objectsender,EventArgse)

//访问地图所包含的书签,获取书签序列

IEnumSpatialBookmarkenumSpatialBookmark=bookmarks.Bookmarks;

//对地图所包含的书签进行遍历,获取与组合框所选项名称相符的书签

enumSpatialBookmark.Reset();

ISpatialBookmarkspatialBookmark=enumSpatialBookmark.Next();

while(spatialBookmark!

if(cbBookmarkList.SelectedItem.ToString()==spatialBookmark.Name)

spatialBookmark.ZoomTo((IMap)axMapControl1.ActiveView);

axMapControl1.ActiveView.Refresh();

break;

spatialBookmark=enumSpatialBookmark.Next();

5.运行结果

实验二:

地图数据组织与访问

2.1实验目的

✧了解ArcGISEngine中地图数据的组织结构

✧掌握ArcGISEngine地图数据访问方法

2.2实验内容

✧编写“数据操作”类

✧利用DataGridView控件展示Continents图层的序号和名称字段

2.3实验步骤与结果

本实验要实现的功能是地理数据列表显示,是用.NETFramework提供的数据格网视图控件显示指定图层的属性数据,操作对象为“Continents”图层中各个洲的名称数据。

实验包含以下几部分:

1.添加控件:

“空间数据”菜单项和“访问图层数据”下拉菜单项

2.添加“数据展示台”窗体:

用于显示访问图层的名称数据

3.添加数据操作类,为该类导入相关引用和类库:

用于管理当前项目中涉及数据操作的相关功能

4.为数据操作类添加相应函数:

主要是两个获取函数,一个是获取图层函数,目的是获取各图层;

一个是获取“Continents”图层,并读取该图层中各个洲的名称,以DataTable类型返回

5.添加事件响应函数:

添加“访问图层数据”菜单项点击函数,显示数据展示台窗体

实验实现的流程图如下:

1.添加“数据展示台”窗体

publicDataBoard(StringsDataName,DataTabledataTable)

//初始化窗体及控件

//设置文本框中的文本和数据格网视图的数据源

tbDataName.Text=sDataName;

dataGridView1.DataSource=dataTable;

2.添加数据操作类

usingSystem.Data;

usingESRI.ArcGIS.Carto;

usingESRI.ArcGIS.Geodatabase;

usingESRI.ArcGIS.DataSourcesFile;

//定义一个变量保存当前地图对象

publicIMapm_map;

//用于传入当前地图对象

publicDataOperator(IMapmap)

m_map=map;

3.获取地图图层

//添加成员函数,获取地图中各大洲名称,用表的形式返回

publicDataTableGetContinentsNames()

//获取"

Continents"

图层,并进行访问,判断是否成功

ILayerlayer=GetLayerByName("

);

IFeatureLayerfeatureLayer=layerasIFeatureLayer;

if(featureLayer==null)

returnnull;

//调用IfeatureLayer的Search方法,用于遍历图层中的要素,判断是否成功

IFeaturefeature;

IFeatureCursorfeatureCursor=featureLayer.Search(null,false);

feature=featureCursor.NextFeature();

if(feature==null)

//新建DataTable类型对象

DataTabledataTable=newDataTable();

//新建DataColumn对象,保存各个州的序号和名称,并将其加入DataTable中

DataColumndataColumn=newDataColumn();

dataColumn.ColumnName="

序号"

;

dataColumn.DataType=System.Type.GetType("

System.Int32"

dataTable.Columns.Add(dataColumn);

dataColumn=newDataColumn();

名称"

System.String"

//遍历图层中的所有要素,关联数据表中的下一行

//将要素的序号和名称赋给数据表中

DataRowdataRow;

while(feature!

dataRow=dataTable.NewRow();

dataRow[0]=feature.get_Value(0);

dataRow[1]=feature.get_Value

(2);

dataTable.Rows.Add(dataRow);

//返回数据表

returndataTable;

4.实现创建数据列表功能

//生成菜单项点击事件响应函数,并在数据展示台显示数据表

privatevoidmiAccessData_Click(objectsender,EventArgse)

DataOperatordataOperator=newDataOperator(axMapControl1.Map);

DataBoarddataBoard=newDataBoard("

各大洲洲名"

dataOperator.GetContinentsNames());

dataBoard.Show();

实验结果:

2实验三:

地图渲染

3.1实验目的

✧了解地图符号的分类与可视化过程

✧掌握地图符号的渲染方法

3.2实验内容

✧编写“地图编制”类,添加成员函数

✧实现获取地图渲染器信息功能

✧实现地图的简单符号渲染

3.3实验步骤结果

地图渲染是指用不同的颜色和符号对地图进行可视化。

特征渲染器有八类,本实验是采用简单渲染器,即对整个图层要素用同一种方式进行渲染,操作对象是“WorldCities”图层。

由于要用到数据操作类函数,所以实验在实验二的基础上进行。

实验分为以下几个部分:

1.添加主窗体控件和导入类库:

地图表现菜单项和两个下拉菜单项简单渲染器和获取渲染器信息。

2.添加地图编制类并为其导入部分类库:

该类用于管理当前项目中涉及地图整饰、修改和展示的相关功能

3.添加类成员函数:

包括三个,分别是获取指定图层的渲染器类型信息函数、获取指定图层的符号信息函数、统一设置指定图层渲染参数函数

4.添加事件响应函数:

简单渲染图层菜单项的点击事件响应函数、获取渲染器信息点击事件响应函数

实现流程如下:

1.添加控件

usingESRI.ArcGIS.Display;

2.添加地图编制类

3.完善类的功能

//添加成员函数,获取指定图层的渲染器类型信息

publicstaticStringGetRenderTypeByLayer(ILayerlayer)

//判断图层是否获取成功

if(layer==null)

return"

图层获取失败"

//使用IFeatureLayer接口访问指定图层,并获取其渲染器

IGeoFeatureLayergeoFeatureLayer=layerasIGeoFeatureLayer;

IFeatureRendererfeatureRenderer=geoFeatureLayer.Renderer;

//判断该图层渲染器是否为备选渲染器类型之一,匹配成功则返回类型信息

if(featureRendererisISimpleRenderer)

SimpleRenderer"

elseif(featureRendererisIUniqueValueRenderer)

UniqueValueRenderer"

elseif(featureRendererisIDotDensityRenderer)

DotDensityRenderer"

elseif(featureRendererisIChartRenderer)

ChartRenderer"

elseif(featureRendererisIProportionalSymbolRenderer)

ProportionalSymbolRenderer"

elseif(featureRendererisIRepresentationRenderer)

RepresentationRenderer"

elseif(featureRendererisIClassBreaksRenderer)

ClassBreaksRenderer"

elseif(featureRendererisIBivariateRenderer)

BivariateRenderer"

//如果匹配失败,返回提示

未知或渲染器获取失败"

//添加静态成员函数,获取指定图层的符号信息

publicstaticISymbolGetSymbolFromLayer(ILayerlayer)

//访问图层,获取图层中的第一个要素,判断是否成功

IFeaturefeature=featureCursor.NextFeature();

//访问指定图层,获取其渲染器,判断是否成功

IGeoFeatureLayergeoFeatureLayer=featureLayerasIGeoFeatureLayer;

if(featureRenderer==null)

//访问图层要素对应的符号信息,作为函数信息返回

ISymbolsymbol=featureRenderer.get_SymbolByFeature(feature);

returnsymbol;

//添加静态成员函数,设置指定图层符号的颜色,并进行简单渲染

publicstaticboolRenderSimply(ILayerlayer,IColorcolor)

//判断图层和颜色是否获取成功

if(layer==null||color==null)

returnfalse;

//调用成员函数,获取指定图层的符号,判断是否成功

ISymbolsymbol=GetSymbolFromLayer(layer);

if(symbol==null)

//获取指定图层的要素类,判断是否成功

IFeatureClassfeatureClass=featureLayer.FeatureClass;

if(featureClass==null)

//获取指定图层要素类的几何形状信息,并匹配,设置不同类型符号的颜色

esriGeometryTypegeoType=featureClass.ShapeType;

switch(geoType)

caseesriGeometryType.esriGeometryPoint:

IMarkerSymbolmarkerSymbol=symbolasIMarkerSymbol;

markerSymbol.Color=color;

caseesriGeometryType.esriGeometryMultipoint:

caseesriGeometryType.esriGeometryPolyline:

ISimpleLineSymbolsimplelinesymbol=symbolasISimpleLineSymbol;

simplelinesymbol.Color=color;

caseesriGeometryType.esriGeometryPolygon:

IFillSymbolfillSymbol=symbolasIFillSymbol;

fillSymbol.Color=color;

default:

//新建简单渲染器对象,设置符号,通过接口访问,判断是否成功

ISimpleRenderersimpleRenderer=newSimpleRendererClass();

simpleRenderer.Symbol=symbol;

IFeatureRendererfeatureRenderer=simpleRendererasIFeatureRenderer;

//通过接口访问指定图层,设置其渲染器

geoFeatureLayer.Renderer=featureRenderer;

returntrue;

4.实现图层简单渲染

//实现图层简单渲染

privatevoidmiRenderSimply_Click(objectsender,EventArgse)

WorldCities"

图层

ILayerlayer=dataOperator.GetLayerByName("

//设置颜色为红色

IRgbColorrgbColor=newRgbColorClass();

rgbColor.Red=255;

rgbColor.Green=0;

rgbColor.Blue=0;

图层的符号信息,并通过接口访问设置好的颜色对象

ISymbolsymbol=MapComposer.GetSymbolFromLayer(layer);

IColorcolor=rgbColorasIColor;

//实现该图层的简单渲染,判断是否成功,若成功,则刷新视图,显示渲染效果

boolbRes=MapComposer.RenderSimply(layer,color);

if(bRes)

axTOCControl1.ActiveView.ContentsChanged();

axMapControl1.ActiveView.R

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2