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());
        }


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

posted @ 2013-04-11 18:09  zhzhx0318  阅读(2161)  评论(0编辑  收藏  举报