GIS二次开发(B)实验报告_第1页
GIS二次开发(B)实验报告_第2页
GIS二次开发(B)实验报告_第3页
GIS二次开发(B)实验报告_第4页
GIS二次开发(B)实验报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论