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))。 怎么办呀?
展开
 我来答
若水三千926
推荐于2017-09-27 · TA获得超过179个赞
知道小有建树答主
回答量:198
采纳率:0%
帮助的人:141万
展开全部

我也遇到这个问题,我写一个函数:通过图层名称来获得图层,代码如下:

        #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
llinkin
2010-09-18 · TA获得超过182个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:348万
展开全部
不知道你的pScene是什么东西,也许是这样没法转换吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式