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格式文件。下图显示各接口之间的关系.

                                                                                    171406_eL5p_2376641.png

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

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

转载于:https://my.oschina.net/u/2376641/blog/422322

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值