ArcObjects使用AddLayer方法添加到图层的方法

运行坏境:vs2010,ArcGID10.1

AO中,通过AddLayer方法添加图层的代码如下:

1        IWorkspaceFactory workSpaceFactory = new ShapefileWorkspaceFactoryClass();
2             IFeatureWorkspace featureWorkspace = workSpaceFactory.OpenFromFile(@"D:\Program Files\ArcGIS\Desktop10.1\ArcGlobeData", 0) as IFeatureWorkspace;
3             IFeatureLayer featureLayer = new FeatureLayerClass();
4             featureLayer.FeatureClass = featureWorkspace.OpenFeatureClass("continent.shp");
5             //featureLayer.Name = featureLayer.FeatureClass.AliasName;
6             this.axMapControl1.AddLayer(featureLayer as ILayer);
7             this.axMapControl1.Refresh();

需要添加的命名空间有:

using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.DataSourcesFile;

 其中,IWorkspaceFactory,IFeatureWorkspace属于ESRI.ArcGIS.Geodatabase这个命名空间, IFeatureLayer属于ESRI.ArcGIS.Carto命名空间,ShapefileWorkspaceFactoryClass则属于ESRI.ArcGIS.DataSourcesFile这个命名空间。

生成解决方案的时候会出现这样的错误:

这就是嵌入互操作的错误,解决方法如下:

 在解决方案资源管理器中找到FeatureLayerClass和ShapefileWorkspaceFactoryClass所引用的命名空间,即ESRI.ArcGIS.Carto和ESRI.ArcGIS.DataSourcesFile,右键选择属性,将嵌入互操作类型改为false,这样就OK了,生成成功!

但是在运行的时候,还会弹出这样一个错误:

说的很清楚,ArcGIS的版本指定不明确,所以在Program.cs中添加

ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);

这样一句话就OK了,如下所示:

static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);
            Application.Run(new Form1());
        }


这样,整个应用程序就都运行成了!

转载于:https://www.cnblogs.com/zhzhx/archive/2013/04/11/3015033.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值