GIS二次开发B实验报告Word下载.docx

上传人:b****6 文档编号:21905863 上传时间:2023-02-01 格式:DOCX 页数:21 大小:1.01MB
下载 相关 举报
GIS二次开发B实验报告Word下载.docx_第1页
第1页 / 共21页
GIS二次开发B实验报告Word下载.docx_第2页
第2页 / 共21页
GIS二次开发B实验报告Word下载.docx_第3页
第3页 / 共21页
GIS二次开发B实验报告Word下载.docx_第4页
第4页 / 共21页
GIS二次开发B实验报告Word下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

GIS二次开发B实验报告Word下载.docx

《GIS二次开发B实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《GIS二次开发B实验报告Word下载.docx(21页珍藏版)》请在冰豆网上搜索。

GIS二次开发B实验报告Word下载.docx

aoibookmark.Location=axMapControl1.ActiveView.Extent;

aoibookmark.Name=sbookmarkname;

}

//通过imapbookmarks接口访问当前地图,并向地图中加入新建书签

IMapBookmarksbookmarks=axMapControl1.MapasIMapBookmarks;

if(bookmarks!

bookmarks.AddBookmark(aoibookmark);

cbbookmarklist.Items.Add(aoibookmark.Name);

}

namespacexy

{

publicpartialclassAdmitBookmarkName:

Form

{

publicMainFormm_frmMain;

publicAdmitBookmarkName()

InitializeComponent();

publicAdmitBookmarkName(MainFormfrm)

if(frm!

m_frmMain=frm;

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

privatevoidbtnAdmit_Click(objectsender,EventArgse)

if(m_frmMain!

=null&

&

tbBookmarkName.Text=="

"

m_frmMain.createbookmark(tbBookmarkName.Text);

this.Close();

地图数据组织与访问

2.1实验目的

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

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

2.2实验内容

✧编写“数据操作”类

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

2.3实验步骤与结果

初始化窗口

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Windows.Forms;

namespaceMapControlApplication1

publicpartialclassDataboard:

publicDataboard()

InitializeComponent();

publicDataboard(stringsDataName,DataTabledataTable)

//初始化窗体及控件。

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

tbDataName.Text=sDataName;

dataGridView1.DataSource=dataTable;

privatevoidDataboard_Load(objectsender,EventArgse)

privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse)

引用一个各种类

usingESRI.ArcGIS.Carto;

usingESRI.ArcGIS.Geometry;

usingESRI.ArcGIS.Geodatabase;

usingESRI.ArcGIS.DataSourcesFile;

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);

//若地图对象中的所有图层名均与指定图层名不匹配,函数返回值为空。

publicDataTableGetContinentsNames()

//获取Continents图层,利用IFeatureLayer接口访问,并判断是否成功,若失败函数返回空

ILayerlayer=GetLaybyName("

Continents"

);

IFeatureLayerfeatureLayer=layerasIFeatureLayer;

if(featureLayer==null)

//调用IFeatureLayer接口的seach方法,获取是否成功获取第一个要素。

若失败,函数返回空。

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();

dataColumn.ColumnName="

名称"

System.String"

//对图层中的要素进行遍历。

每获取一个要素,就关联datatable的下一个datarow,

DataRowdataRow;

while(feature!

dataRow=dataTable.NewRow();

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

dataRow[1]=feature.get_Value

(2);

dataTable.Rows.Add(dataRow);

//返回设置好的数据表。

returndataTable;

在主窗体中加入代码,并运行

privatevoidmiAccessData_Click(objectsender,EventArgse)

DataOperatordataOperator=newDataOperator(axMapControl1.Map);

DataboarddataBord=newDataboard("

各大洲名"

dataOperator.GetContinentsNames());

//运行载有数据的“数据展示台”窗体对象。

dataBord.Show();

地图渲染与制图输出

3.1实验目的

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

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

3.2实验内容

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

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

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

3.3实验步骤结果

C#Code 

private 

void 

简单渲染图层ToolStripMenuItem1_Click(object 

sender, 

EventArgs 

e)

dataoperator 

dataOperator 

new 

dataoperator(axMapControl1.Map);

ILayer 

layer 

dataOperator.getlayerbyname("

World 

Cities"

IRgbColor 

rgbColor 

RgbColorClass();

rgbColor.Blue 

0;

rgbColor.Red 

255;

rgbColor.Green 

IColor 

color 

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("

简单渲染图层失败"

●主窗体新建渲染图层菜单,并新建子菜单

获取渲染器信息ToolStripMenuItem_Click(object 

MessageBox.Show(MapComposer.getrendertypebylayer(layer));

新建MapComposer类并输入以下代码

using 

System;

System.Collections.Generic;

System.Linq;

System.Text;

ESRI.ArcGIS.esriSystem;

ESRI.ArcGIS.Carto;

ESRI.ArcGIS.Controls;

ESRI.ArcGIS.ADF;

ESRI.ArcGIS.SystemUI;

ESRI.ArcGIS.Geometry;

ESRI.ArcGIS.Display;

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)

ISimpleRenderer"

else 

IUniqueValueRenderer)

IUniqueValueRenderer"

IDotDensityRenderer)

IDotDensityRenderer"

IChartRenderer)

IChartRenderer"

IProportionalSymbolRenderer)

IProportionalSymbolRenderer"

未知或者获取渲染器失败"

getsymbolfromlayer(ILayer 

null;

IFeatureCursor 

ftcs 

ftly.Search(null, 

false);

IFeature 

ft 

ftcs.NextFeature();

if(ft 

IGeoFeatureLayer;

syb 

ftren.get_SymbolByFeature(ft);

syb;

RenderSimply(ILayer 

layer, 

color)

null 

|| 

getsymbolfromlayer(layer);

if(symbol 

featureLayer 

IFeatureLayer;

IFeatureClass 

featureClass 

featureLayer.FeatureClass;

if(featureClass 

esriGeometryType 

geoType 

featureClass.ShapeType;

switch(geoType)

case 

esriGeometryType.esriGeometryPoint:

IMarkerSymbol 

markerSymbol 

IMarkerSymbol;

markerSymbol.Color 

color;

break;

esriGeometryType.esriGeometryMultipoint:

esriGeometryType.esriGeometryPolyline:

ISimpleLineSymbol 

simpleLineSymbol 

=

ISimpleLineSymbol;

simpleLineSymbol.Color 

esriGeometryType.esriGeometryPolygon:

IFillSymbol 

fillSymbol 

IFillSymbol;

fillSymbol.Color 

default:

ISimpleRenderer 

simpleRenderer 

SimpleRendererClass();

simpleRenderer.Symbol 

symbol;

featureRenderer 

IFeatureRenderer;

if(featureRenderer 

geoFeatureLayer 

=

geoFeatureLayer.Renderer 

featureRenderer;

true;

●运行“获取渲染器信息”

●运行“简单渲染器渲染”

4实验总结

通过这次实习,我学到了很多知识,那是在课堂上无法学到的东西。

在我看来,理论知识固然重要,但是若不经过实践,那学得理论知识几乎等于白费。

虽然实习过程是辛苦的,但确

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1