pFeatureLayer = (IFeatureLayer)pScene.get_Layer(iLayerIndex); 这句话老是提示错误
ARCENGINEc#开发,碰到获取图层字段的时候:pFeatureLayer=(IFeatureLayer)pScene.get_Layer(iLayerIndex);...
ARCENGINE c#开发,碰到获取图层字段的时候:
pFeatureLayer = (IFeatureLayer)pScene.get_Layer(iLayerIndex); 这句话老是提示错误:
无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“ESRI.ArcGIS.Carto.IFeatureLayer”。此操作失败的原因是对 IID 为“{40A9E885-5533-11D0-98BE-00805F7CED21}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。 怎么办呀? 展开
pFeatureLayer = (IFeatureLayer)pScene.get_Layer(iLayerIndex); 这句话老是提示错误:
无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“ESRI.ArcGIS.Carto.IFeatureLayer”。此操作失败的原因是对 IID 为“{40A9E885-5533-11D0-98BE-00805F7CED21}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。 怎么办呀? 展开
2个回答
展开全部
我也遇到这个问题,我写一个函数:通过图层名称来获得图层,代码如下:
#region 获取图层(根据图层名称)
/// <summary>
/// 获取图层(根据图层名称)
/// </summary>
/// <param name="layerName">图层名称</param>
/// <returns>要素类</returns>
private IFeatureLayer GetLayerByName(string layerName)
{
try
{
IFeatureLayer pFeatureLayer = null;
IFeatureLayer reFeatureLayer = null;
for (int i = 0; i < axMapControl1.LayerCount; i++)
{
pFeatureLayer = (IFeatureLayer)axMapControl1.get_Layer(i); //报错
if (pFeatureLayer.Name == layerName)
{
reFeatureLayer= pFeatureLayer;
}
}
return reFeatureLayer;
}
catch (System.Exception ex)
{
MessageBox.Show("获取图层失败:"+ex.Message);
return null;
}
}
#endregion
最后的问题原来是:图层的问题,我遍历的图层中有栅格图层,它不是FeatureLayer,所以在遍历的时候要做一下判断.
http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=47628
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询