初学咋练 解决不了 求大神啊
冯糖糖 2014-03-26 01:44:23 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.ArcMap;
namespace MapControlApplication3
{
class DataOperator
{
//保存当前地图对象。
public IMap m_map;
//用于传入当前地图对象。
public DataOperator(IMap map)
{
m_map = map;
}
public ILayer GetLayerByName(String sLayerName)
{
//判断图层名或地图对象 是否为空。若为空,函数返回空。
if (sLayerName == "" || m_map == null)
{
return null;
}
//对地图对象中的所有图层进行遍历。若某一图层的名称与指定图层名相同,则返回该图层。
for (int i = 0; i < m_map.LayerCount; i++)
{
if (m_map.get_Layer(i).Name == sLayerName)
{
return m_map.get_Layer(i);
}
}
//若地图对象中的所有图层名均与指定图层名不匹配,函数返回空。
return null;
}
public DataTable GetContinentsNames()
{
//获取“Continents”图层,利用IFeatureLayer接口访问,并判断是否成功。若失败,
//函数返回空。
ILayer layer = GetLayerByName("Continents");
IFeatureLayer featureLayer = layer as IFeatureLayer;
if (featureLayer == null)
{
return null;
}
//调用IFeatureLayer接口的Seach方法,获取要素指针(IFeatureCursor)接口对象,
//用于在之后遍历图层中的全部要素,并判断是否成功获取第一个要素。若失败,函数返回空。
IFeatureLayer feature;
IFeatureCursor featureCursor = featureLayer.Search(null,false);
feature = featureCursor.NextFeature();
if (feature == null)
{
return null;
}
//新建DataTable类型对象,用于函数返回。
DataTable dataTable = new DataTable();
//新建DataColum类型对象,分别保存各个洲的序号和名称。设置完毕后,加入DataTable的列集合(Columns)中。
DataColumn dataColumn = new DataColumn();
dataColumn.ColumnName = "序号";
dataColumn.DataType = System.Type.GetType("System.Int32");
dataTable.Columns.Add(dataColumn);
dataColumn = new DataColumn();
dataColumn.ColumnName = "名称";
dataColumn.DataType = System.Type.GetType("System.String");
dataTable.Columns.Add(dataColumn);
//对图层中的要素进行遍历。每次获取一个要素,就关联DataTable的下一个DataRow,将要素在序号和名称字段上的值赋给DataRow的对应列中。
//在“Continents”图层属性表中,序号信息在第0个字段中,名称信息在第2个字段中。相关内容可以通过ArcMap对地图文档进行查看。
DataRow dataRow;
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();
}
//返回设置好的数据表。
return dataTable;
}
}
}
错误 2 “ESRI.ArcGIS.Carto.IFeatureLayer”不包含“get_Value”的定义,并且找不到可接受类型为“ESRI.ArcGIS.Carto.IFeatureLayer”的第一个参数的扩展方法“get_Value”(是否缺少 using 指令或程序集引用?) D:\袁\冯瑶-201220791\MapControlApplication3\MapControlApplication3\DataOperator.cs 84 38 MapControlApplication3
错误 3 “ESRI.ArcGIS.Carto.IFeatureLayer”不包含“get_Value”的定义,并且找不到可接受类型为“ESRI.ArcGIS.Carto.IFeatureLayer”的第一个参数的扩展方法“get_Value”(是否缺少 using 指令或程序集引用?) D:\袁\冯瑶-201220791\MapControlApplication3\MapControlApplication3\DataOperator.cs 85 38 MapControlApplication3
错误 1 无法将类型“ESRI.ArcGIS.Geodatabase.IFeature”隐式转换为“ESRI.ArcGIS.Carto.IFeatureLayer”。存在一个显式转换(是否缺少强制转换?) D:\袁\冯瑶-201220791\MapControlApplication3\MapControlApplication3\DataOperator.cs 59 23 MapControlApplication3
错误 4 无法将类型“ESRI.ArcGIS.Geodatabase.IFeature”隐式转换为“ESRI.ArcGIS.Carto.IFeatureLayer”。存在一个显式转换(是否缺少强制转换?) D:\袁\冯瑶-201220791\MapControlApplication3\MapControlApplication3\DataOperator.cs 89 27 MapControlApplication3