版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
GIS二次开发(B)实验报告二〇一五年11月3日目录1 实验一:AOI书签开发 11.1 实验目的 11.2 实验内容 11.3 实验步骤与结果 12 实验二:地图数据组织与访问 82.1 实验目的 82.2 实验内容 82.3 实验步骤与结果 83 实验三:地图渲染与制图输出 163.1 实验目的 163.2 实验内容 163.3 实验步骤结果 164 实验总结 23PAGE2/23实验一:AOI书签开发实验目的掌握AOI书签程序开发实验内容实现AOI书签的创建实现AOI书签的调用实验步骤与结果publicvoidcreatebookmark(stringsbookmarkname)//参数为书签名{//通过iaolbookmark接口创建一个变量,其类型为aoibookmark,保存当前地图范围。IAOIBookmarkaoibookmark=newAOIBookmarkClass();if(aoibookmark!=null){aoibookmark.Location=axMapControl1.ActiveView.Extent;aoibookmark.Name=sbookmarkname;}//通过imapbookmarks接口访问当前地图,并向地图中加入新建书签IMapBookmarksbookmarks=axMapControl1.MapasIMapBookmarks;if(bookmarks!=null){bookmarks.AddBookmark(aoibookmark);}cbbookmarklist.Items.Add(aoibookmark.Name);}}}namespacexy{publicpartialclassAdmitBookmarkName:Form{publicMainFormm_frmMain;publicAdmitBookmarkName(){InitializeComponent();}publicAdmitBookmarkName(MainFormfrm){InitializeComponent();if(frm!=null){m_frmMain=frm;}}//“确认”按钮的“点击”事件响应函数,用于创建书签privatevoidbtnAdmit_Click(objectsender,EventArgse){if(m_frmMain!=null&&tbBookmarkName.Text==""){m_frmMain.createbookmark(tbBookmarkName.Text);}this.Close();}}}
实验二:地图数据组织与访问实验目的了解ArcGISEngine中地图数据的组织结构掌握ArcGISEngine地图数据访问方法实验内容编写“数据操作”类利用DataGridView控件展示Continents图层的序号和名称字段实验步骤与结果初始化窗口usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceMapControlApplication1{publicpartialclassDataboard:Form{publicDataboard(){InitializeComponent();}publicDataboard(stringsDataName,DataTabledataTable){//初始化窗体及控件。InitializeComponent();//设置文本框中的文本和数据网格视图的数据源。tbDataName.Text=sDataName;dataGridView1.DataSource=dataTable;}privatevoidDataboard_Load(objectsender,EventArgse){}privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse){}}}引用一个各种类usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Data;usingESRI.ArcGIS.Carto;usingESRI.ArcGIS.Geometry;usingESRI.ArcGIS.Geodatabase;usingESRI.ArcGIS.DataSourcesFile;namespaceMapControlApplication1{classDataOperator{//保存当前地图对象publicIMapm_map;//用于传入当前地图对象publicDataOperator(IMapmap){m_map=map;}publicILayerGetLaybyName(stringsLayerName){//判断图层名或地图对象是否为空。若为空,函数返回空。if(sLayerName==""&&m_map==null){returnnull;}//对地图对象中的所有图层进行遍历。若某一图层的名称与指定图层名相同,则返//回图层。for(inti=0;i<m_map.LayerCount;i++){if(m_map.get_Layer(i).Name==sLayerName){returnm_map.get_Layer(i);}}//若地图对象中的所有图层名均与指定图层名不匹配,函数返回值为空。returnnull;}publicDataTableGetContinentsNames(){//获取Continents图层,利用IFeatureLayer接口访问,并判断是否成功,若失败函数返回空ILayerlayer=GetLaybyName("Continents");IFeatureLayerfeatureLayer=layerasIFeatureLayer;if(featureLayer==null){returnnull;}//调用IFeatureLayer接口的seach方法,获取是否成功获取第一个要素。若失败,函数返回空。IFeaturefeature;IFeatureCursorfeatureCursor=featureLayer.Search(null,false);feature=featureCursor.NextFeature();if(feature==null){returnnull;}//新建DataTable类型对象,用于函数返回。DataTabledataTable=newDataTable();//新建DataColumn类型对象,分别保存各个州的序号的名称。设置完毕后,加入datatable的列集合DataColumndataColumn=newDataColumn();dataColumn.ColumnName="序号";dataColumn.DataType=System.Type.GetType("System.Int32");dataTable.Columns.Add(dataColumn);dataColumn=newDataColumn();dataColumn.ColumnName="名称";dataColumn.DataType=System.Type.GetType("System.String");dataTable.Columns.Add(dataColumn);//对图层中的要素进行遍历。每获取一个要素,就关联datatable的下一个datarow,DataRowdataRow;while(feature!=null){dataRow=dataTable.NewRow();dataRow[0]=feature.get_Value(0);dataRow[1]=feature.get_Value(2);dataTable.Rows.Add(dataRow);feature=featureCursor.NextFeature();}//返回设置好的数据表。returndataTable;}}}在主窗体中加入代码,并运行privatevoidmiAccessData_Click(objectsender,EventArgse){DataOperatordataOperator=newDataOperator(axMapControl1.Map);DataboarddataBord=newDataboard("各大洲名",dataOperator.GetContinentsNames());//运行载有数据的“数据展示台”窗体对象。dataBord.Show();}
实验三:地图渲染与制图输出实验目的了解地图符号的分类与可视化过程掌握地图符号的渲染方法实验内容编写“地图编制”类,添加成员函数实现获取地图渲染器信息功能实现地图的简单符号渲染实验步骤结果
C#Code
private
void
简单渲染图层ToolStripMenuItem1_Click(object
sender,
EventArgs
e)
{
dataoperator
dataOperator
=
new
dataoperator(axMapControl1.Map);
ILayer
layer
=
dataOperator.getlayerbyname("World
Cities");
IRgbColor
rgbColor
=
new
RgbColorClass();
rgbColor.Blue
=
0;
rgbColor.Red
=
255;
rgbColor.Green
=
0;
IColor
color
=
rgbColor
as
IColor;
ISymbol
symbol
=
MapComposer.getsymbolfromlayer(layer);
bool
res
=
MapComposer.RenderSimply(layer,
color);
if(res)
{
axMapControl1.ActiveView.ContentsChanged();
axMapControl1.ActiveView.Refresh();
简单渲染图层ToolStripMenuItem.Enabled
=
false;
}
else
{
MessageBox.Show("简单渲染图层失败");
}
}主窗体新建渲染图层菜单,并新建子菜单
C#Code
private
void
获取渲染器信息ToolStripMenuItem_Click(object
sender,
EventArgs
e)
{
dataoperator
dataOperator
=
new
dataoperator(axMapControl1.Map);
ILayer
layer
=
dataOperator.getlayerbyname("World
Cities");
MessageBox.Show(MapComposer.getrendertypebylayer(layer));
}新建MapComposer类并输入以下代码
C#Code
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
ESRI.ArcGIS.esriSystem;
using
ESRI.ArcGIS.Carto;
using
ESRI.ArcGIS.Controls;
using
ESRI.ArcGIS.ADF;
using
ESRI.ArcGIS.SystemUI;
using
ESRI.ArcGIS.Geometry;
using
ESRI.ArcGIS.Display;
using
ESRI.ArcGIS.Geodatabase;
namespace
MapControlApplication1
{
class
MapComposer
{
public
static
string
getrendertypebylayer(ILayer
layer)
{
if(layer
==
null)
return
"获取失败";
IFeatureLayer
ftly
=
(IFeatureLayer)layer;
IGeoFeatureLayer
gftly
=
(IGeoFeatureLayer)layer;
IFeatureRenderer
ftren
=
gftly.Renderer;
if(ftren
is
ISimpleRenderer)
return
"ISimpleRenderer";
else
if(ftren
is
IUniqueValueRenderer)
return
"IUniqueValueRenderer";
else
if(ftren
is
IDotDensityRenderer)
return
"IDotDensityRenderer";
else
if(ftren
is
IChartRenderer)
return
"IChartRenderer";
else
if(ftren
is
IProportionalSymbolRenderer)
return
"IProportionalSymbolRenderer";
return
"未知或者获取渲染器失败";
}
public
static
ISymbol
getsymbolfromlayer(ILayer
layer)
{
if(layer
==
null)
return
null;
IFeatureLayer
ftly
=
(IFeatureLayer)layer;
IFeatureCursor
ftcs
=
ftly.Search(null,
false);
IFeature
ft
=
ftcs.NextFeature();
if(ft
==
null)
return
null;
IGeoFeatureLayer
gftly
=
ftly
as
IGeoFeatureLayer;
IFeatureRenderer
ftren
=
gftly.Renderer;
if(ftren
==
null)
return
null;
ISymbol
syb
=
ftren.get_SymbolByFeature(ft);
return
syb;
}
public
static
bool
RenderSimply(ILayer
layer,
IColor
color)
{
if(layer
==
null
||
color
==
null)
return
false;
ISymbol
symbol
=
getsymbolfromlayer(layer);
if(symbol
==
null)
return
false;
IFeatureLayer
featureLayer
=
layer
as
IFeatureLayer;
IFeatureClass
featureClass
=
featureLayer.FeatureClass;
if(featureClass
==
null)
return
false;
esriGeometryType
geoType
=
featureClass.ShapeType;
switch(geoType)
{
case
esriGeometryType.esriGeometryPoint:
{
IMarkerSymbol
markerSymbol
=
symbol
as
IMarkerSymbol;
markerSymbol.Color
=
color;
break;
}
case
esriGeometryType.esriGeometryMultipoint:
{
IMarkerSymbol
markerSymbol
=
symbol
as
IMarkerSymbol;
break;
}
case
esriGeometryType.esriGeometryPolyline:
{
ISimpleLineSymbol
simpleLineSymbol
=
symbol
as
ISimpleLineSymbol;
simpleLineSymbol.Color
=
color;
break;
}
case
esriGeometryType.esriGeometryPolygon:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- YY/T 2001-2026体外诊断检验系统定性检测试剂企业参考品设置要求
- 新店开业活动营销方案(3篇)
- 春晚舞蹈活动方案策划(3篇)
- 河道复堤施工方案(3篇)
- 深基坑施工方案封皮(3篇)
- 砂浆罐安装施工方案(3篇)
- 策划活动运营方案模板(3篇)
- 网卡营销活动策划方案(3篇)
- 节能工程专程施工方案(3篇)
- 蔷薇艺术活动策划方案(3篇)
- 再生资源绿色回收分拣中心项目投资计划书
- 2026智能物流仓储自动化升级与REITs融资模式研究
- 2026年内部审计师考试试卷及答案
- 四川省自然资源投资集团有限责任公司2026年上半年公开招聘考试备考试题及答案解析
- 2025年成都市网格员笔试试题及答案
- 2026年初级社会工作者《社会工作综合能力》通关模拟卷及参考答案详解(突破训练)
- (2026版)铁路货物运输规则课件
- 小学语文综合性学习课题设计
- 水利隐蔽工程验收记录表(示例版)
- XJJ013-2012 新疆维吾尔自治区城市规划管理技术规定
- 中海油校招笔试题库和答案
评论
0/150
提交评论