{
//获取\图层,并进行访问,判断是否成功 ILayer layer = GetLayerByName(\);
IFeatureLayerfeatureLayer = layer asIFeatureLayer; if (featureLayer == null) { returnnull; }
//调用IfeatureLayer的Search方法,用于遍历图层中的要素,判断是否成功 IFeature feature;
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(\); dataTable.Columns.Add(dataColumn); dataColumn = newDataColumn(); dataColumn.ColumnName = \名称\;
dataColumn.DataType = System.Type.GetType(\); dataTable.Columns.Add(dataColumn);
//遍历图层中的所有要素,关联数据表中的下一行 //将要素的序号和名称赋给数据表中 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; }
4. 实现创建数据列表功能
//生成菜单项点击事件响应函数,并在数据展示台显示数据表 privatevoidmiAccessData_Click(object sender, EventArgs e) {
DataOperatordataOperator = newDataOperator(axMapControl1.Map); DataBoarddataBoard = newDataBoard(\各大洲洲名\, dataOperator.GetContinentsNames()); dataBoard.Show(); }
实验结果:
2 实验三:地图渲染
3.1 实验目的
? 了解地图符号的分类与可视化过程 ? 掌握地图符号的渲染方法
3.2 实验内容
? 编写“地图编制”类,添加成员函数 ? 实现获取地图渲染器信息功能 ? 实现地图的简单符号渲染
3.3 实验步骤结果
实验思路:
地图渲染是指用不同的颜色和符号对地图进行可视化。特征渲染器有八类,本实验是采用简单渲染器,即对整个图层要素用同一种方式进行渲染,操作对象是“World Cities”图层。由于要用到数据操作类函数,所以实验在实验二的基础上进行。
实验分为以下几个部分:
1. 添加主窗体控件和导入类库:地图表现菜单项和两个下拉菜单项简单渲染器和获取渲染器信息。
2. 添加地图编制类并为其导入部分类库:该类用于管理当前项目中涉及地图整饰、修改和展示的相关功能
3. 添加类成员函数:包括三个,分别是获取指定图层的渲染器类型信息函数、获取指定图层的符号信息函数、统一设置指定图层渲染参数函数 4. 添加事件响应函数:简单渲染图层菜单项的点击事件响应函数、获取渲染器信息点击事件响应函数
实现流程如下:
添加主窗体控件和类库添加地图编制类添加类成员函数图层被渲染并刷新视图运行程序点击简单渲染图层添加事件响应函数点击获取渲染器信息关键代码: 1.添加控件
usingESRI.ArcGIS.Display;
出现渲染器类型文本框
2.添加地图编制类
usingESRI.ArcGIS.Carto;
usingESRI.ArcGIS.Geodatabase; usingESRI.ArcGIS.Geometry; usingESRI.ArcGIS.Display;
3.完善类的功能
//添加成员函数,获取指定图层的渲染器类型信息
publicstaticStringGetRenderTypeByLayer(ILayer layer) {
//判断图层是否获取成功 if (layer == null) {
return\图层获取失败\; }
//使用IFeatureLayer接口访问指定图层,并获取其渲染器 IFeatureLayerfeatureLayer = layer asIFeatureLayer;
IGeoFeatureLayergeoFeatureLayer = layer asIGeoFeatureLayer; IFeatureRendererfeatureRenderer = geoFeatureLayer.Renderer;
//判断该图层渲染器是否为备选渲染器类型之一,匹配成功则返回类型信息 if (featureRendererisISimpleRenderer)
相关推荐: