版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年乌兰察布职业学院单招综合素质笔试备考试题带答案解析
- 2026年泸州医疗器械职业学院高职单招职业适应性考试备考题库有答案解析
- 2026年焦作工贸职业学院单招职业技能考试模拟试题带答案解析
- 2026年六盘水职业技术学院单招综合素质考试模拟试题带答案解析
- 2026年外国人就业管理规定试题含答案
- 2026年彩票销售网点形象巡检标准试题题库含答案
- 2026年陕西交通职业技术学院高职单招职业适应性考试备考题库有答案解析
- 2026年新疆职业大学单招综合素质考试参考题库带答案解析
- 2026年江苏电子信息职业学院单招综合素质考试备考题库带答案解析
- 2026年苏州工业职业技术学院单招综合素质笔试备考题库带答案解析
- 施工员个人工作总结课件
- 四川省泸州市2026届数学高二上期末统考试题含解析
- 2026湖北武汉市文旅集团市场化选聘部分中层管理人员4人笔试参考题库及答案解析
- 中国金融电子化集团有限公司2026年度校园招聘备考题库及一套完整答案详解
- 生物实验探究教学中学生实验探究能力培养与评价体系研究教学研究课题报告
- 雨课堂在线学堂《社会研究方法》作业单元考核答案
- 闲置资产盘活利用方案
- 12345工作总结个人
- 高中地理第一学期期中试卷湘教版必修1
- 测定直流电源的参数并研究其输出特性
- 2021年云南公务员考试行测试题及答案
评论
0/150
提交评论