ArcEngine与C#添加shp文件的两种方式

1、利用MapControl控件的AddShapeFile方法直接加载shape格式文件

 axMapControl1.AddShapeFile(path, filename);

2、利用工作空间工厂打开Shape格式文件。基本思想是利用工作空间工厂抽象类的IWorkspaceFactory接口定义接口变量pWorkspaceFactory,再利用其子类ShapfileWorkspaceFactory对应的组件类ShapefileWorkspaceFactoryClass对pWorkspaceFactory进行实例化。利用IWorkspace接口定义工作空间变量pWorkspace接口定义工作空间变量pWorkspace,并使用pWorkspaceFactory的OpenFromFile方法打开工作空间,对其进行实例化。该方法需要传入两个参数,其一为需要打开工作空间的路径(此处值shape格式文件的路径)。接下来利用IFeatureWorkspace接口定义接口变量pFeatureWorkspace,并对该变量利用接口跳转的方式进行实例化。利用IFeatureClass接口定义变量pFeatureClass,并利用pFeatureWorkspace的OpenFeatureClass方法进行实例化,该方法包含的参数是需要打开Shape文件的文件名。定义数据集对象、特征图层对象,定义特征图层的特征数据类以及特征图层的名称,再定义图层,最后将图层添加上MapControl的Map对象上,就能显示所选择的Shape格式文件。下图显示各接口之间的关系.

                                                                                    ArcEngine与C#添加shp文件的两种方式

  IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();//定义工作空间工厂接口
  IWorkspace pWorkSpace = pWorkspaceFactory.OpenFromFile(path,0);//实例化工作空间
  IFeatureWorkspace pFeatureWorkspace = pWorkSpace as IFeatureWorkspace;
  IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(filename);//
  IDataset pDataset = pFeatureClass as IDataset;
  IFeatureLayer pFeatureLayer = new FeatureLayerClass();
  pFeatureLayer.FeatureClass = pFeatureClass;
  pFeatureLayer.Name = pDataset.Name;
  ILayer pLayer = pFeatureLayer as ILayer;
  axMapControl1.Map.AddLayer(pLayer);

       那么问题来了,上述两种方式中,到底哪种方式显示图形的效率高呢???

你可能感兴趣的:(C#,ArcEngine,shapefile)