初学咋练 解决不了 求大神啊

冯糖糖 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
...全文
476 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
msdn上面的帮助文档没有介绍吗???
wind_cloud2011 2014-03-26
  • 打赏
  • 举报
回复
dataRow[0] = feature.get_Value(0); -->dataRow[0] = feature.Value(0);好像是这样,
冯糖糖 2014-03-26
  • 打赏
  • 举报
回复
dataRow[0] = feature.get_Value(0); dataRow[1] = feature.get_Value(2); feature = featureCursor.NextFeature(); 就这几句 怎么改啊 feature = featureCursor.NextFeature();我改成了 feature = (FeatureLayer)featureCursor.NextFeature();对吗 大神?
欢乐的小猪 2014-03-26
  • 打赏
  • 举报
回复
错误提示很清楚啊 一是类型转换。。 一是没定义。。 check it out.

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧