ArcGIS Engine打开shp文件

shp文件是目前主流的空间数据存储文件,AE加载shp文件可以通过以下两种方式:

  1. 通过工作空间加载
  2. 通过MapControl的AddShapefile方法加载Shapefile文件

通过工作空间加载:

此方法使用于有复杂空间分析操作的情况

用到的引用

using ESRI.ArcGIS.Geodatabase;  //工作空间使用
using ESRI.ArcGIS.DataSourcesFile;  //打开shp工作空间工厂使用
using ESRI.ArcGIS.Carto;  //添加到显示时使用

步骤:

1、打开窗口获得文件路径

OpenFileDialog pOpenfileDialog = new OpenFileDialog();
pOpenfileDialog.Filter = "Shape文件|*.shp";  //打开shp文件
if (pOpenfileDialog.ShowDialog() == DialogResult.OK) {
   tring path = pOpenfileDialog.FileName;

2、获得文件名与所在文件夹路径

由于shp文件是存储于文件夹当中的,因此打开时要通过文件夹路径创建工作空间,使用工作空间的OpenFeatureClass方法打开

//由于shp文件的特殊性,要通过文件名和文件路径获取
string pFilePath = System.IO.Path.GetDirectoryName(path);
string pFileName = System.IO.Path.GetFileName(path);

3、创建工作空间工厂对象

IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();

4、通过文件夹路径创建要素工作空间

                //打开工作空间
IFeatureWorkspace pFeaWorkspace = pWorkspaceFactory.OpenFromFile(pFilePath, 0) as IFeatureWorkspace;

5、使用工作空间的OpenFeatureClass方法打开shp文件为要素类

IFeatureClass pFeatureClass = pFeaWorkspace.OpenFeatureClass(pFileName);  //打开文件

6、将要素类添加到显示

通过MapControl的AddShapefile方法加载

如果系统仅加载数据用于展示,无需工作空间,使用此方案更加简洁

步骤:

1、打开窗口获得文件路径

OpenFileDialog pOpenfileDialog = new OpenFileDialog();
pOpenfileDialog.Filter = "Shape文件|*.shp";  //打开shp文件
if (pOpenfileDialog.ShowDialog() == DialogResult.OK) {
   tring path = pOpenfileDialog.FileName;

2、获得文件名与所在文件夹路径

//由于shp文件的特殊性,要通过文件名和文件路径获取
string pFilePath = System.IO.Path.GetDirectoryName(path);
string pFileName = System.IO.Path.GetFileName(path);

3、通过MapControl的AddShapefile方法加载

axMapControl1.AddShapeFile(pFilePath,pFileName);

 

全部代码:

方法一:

        private void 打开shpToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog pOpenfileDialog = new OpenFileDialog();
            pOpenfileDialog.Filter = "Shape文件|*.shp";  //打开shp文件
            if (pOpenfileDialog.ShowDialog() == DialogResult.OK) {
                string path = pOpenfileDialog.FileName;

                IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();

                //由于shp文件的特殊性,要通过文件名和文件路径获取
                string pFilePath = System.IO.Path.GetDirectoryName(path);
                string pFileName = System.IO.Path.GetFileName(path);

                //打开工作空间
                IFeatureWorkspace pFeaWorkspace = pWorkspaceFactory.OpenFromFile(pFilePath, 0) as IFeatureWorkspace;
                //创建并实例化要素集
                IFeatureClass pFeatureClass = pFeaWorkspace.OpenFeatureClass(pFileName);  //打开文件

                //将要素添加到显示
                IFeatureLayer pFeatureLyr = new FeatureLayer();
                pFeatureLyr.FeatureClass = pFeatureClass;
                axMapControl1.Map.AddLayer(pFeatureLyr);
                axMapControl1.ActiveView.Refresh();

            }
        }

方法二: 

        private void 打开shp2ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog pOpenfileDialog = new OpenFileDialog();
            pOpenfileDialog.Filter = "Shape文件|*.shp";  //打开shp文件
            if (pOpenfileDialog.ShowDialog() == DialogResult.OK)
            {
                string path = pOpenfileDialog.FileName;

                IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();

                //由于shp文件的特殊性,要通过文件名和文件路径获取
                string pFilePath = System.IO.Path.GetDirectoryName(path);
                string pFileName = System.IO.Path.GetFileName(path);

                axMapControl1.AddShapeFile(pFilePath,pFileName);

            }
        }

 

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值