• 介绍ArcGIS中各种数据的打开方法——shp(矢量文件)


    2、加载shp文件到地图控件

    ShapeFile是一种矢量数据模型的计算机数据组织文件,用于在计算机上表达矢量数据的计算机文件

    加载ShapeFile文件最主要是:axMapControll控件对象所携带的AddShapeFile方法和Addlayer方法。

    介绍两种加载shp文件的方法

    方法一:使用axMapControl1对象的AddShapeFile方法加载ShapeFile文件

    //path——为shp文件的路径目录,fileName——不带后缀的文件名
    axMapControl1.AddShapeFile(path, fileName);

    方法二:使用axMapControl1对象的AddLayer方法加载ShapeFile文件

    //调用AddLayer方法添加shp图层
    this.axMapControl1.AddLayer(pFLayer as ILayer);

    方法二添加shp文件需要用到Map、Dataset、FeatureLayer和FeatureClass等对象。这些对象一般用到的主要接口有IMap、IActiveView、IDataset、IFeatureLayer和IFeatureClass等。

    小提示:

    IWorkspaceFactory 需要引用 using ESRI.ArcGIS.Geodatabase; 

    ShapefileWorkspaceFactory 需要引用 using ESRI.ArcGIS.DataSourcesFile;

    核心代码:

    #region 打开Shp文件
            private void 打开Shp文件toolStripLabel1_Click(object sender, EventArgs e)
            {
                //方法一:
                ///addShapeFile1();
                //方法二:
                addShapeFile2();
            }
            /// <summary>
            /// 方法二:使用axMapControl1对象的AddLayer方法加载ShapeFile文件
            /// </summary>
            private void addShapeFile2()
            {
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Title = "打开shp文件";
                ofd.Filter = "shp layer(*.shp)|*.shp";
                if(ofd.ShowDialog()==DialogResult.OK)
                {
                    string file = ofd.FileName;
                    int index = 0;
                    //获取最后一个“\”时的索引位置
                    index = file.LastIndexOf("\");
                    //获得shp文件的路径
                    string filePath = file.Substring(0, index);
                    //获得shp文件名
                    string fileName = file.Substring(index + 1, file.Length - (index + 1));
                    //由工作空间工厂创建shp工作空间工厂类
                    IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
                    //打开shp文件的路径目录, 并强转赋予要素工作空间
                    IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(filePath,0) as IFeatureWorkspace;
                    //创建要素图层
                    IFeatureLayer pFLayer = new FeatureLayerClass();
                    //打开文件名
                    pFLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(fileName);
                    //定义pFLayer的别名
                    pFLayer.Name = pFLayer.FeatureClass.AliasName;
                    //调用AddLayer方法添加shp图层
                    this.axMapControl1.AddLayer(pFLayer as ILayer);
                    //axMapControl控件刷新
                    this.axMapControl1.Refresh();
                }
            }
    
            /// <summary>
            /// 方法一:使用axMapControl1对象的AddShapeFile方法加载ShapeFile文件
            /// </summary>
            private void addShapeFile1()
            {
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Title = "打开图层文件";
                ofd.Filter = "map documents(*.shp)|*.shp";
                if(ofd.ShowDialog()==DialogResult.OK)
                {
                    //FileInfo类提供创建、复制、删除、移动和打开文件的实例方法
                    FileInfo fileInfo = new FileInfo(ofd.FileName);
                    //获取父目录并强制转换成字符型
                    String path = fileInfo.Directory.ToString();
                    //获取文件名
                    String fileName = fileInfo.Name.Substring(0, fileInfo.Name.IndexOf("."));
                    try
                    {
                        //path——为shp文件的路径目录,fileName——不带后缀的文件名
                        axMapControl1.AddShapeFile(path, fileName);
                    }
                    catch(Exception e)
                    {
                        MessageBox.Show("添加图层失败!!!"+e.ToString());
                    }
                }
            }
            #endregion

    谢谢观看!本人初学GIS二次开发,如果有不对的地方,请多多包涵!

  • 相关阅读:
    设计模式-策略模式
    JavaCV开发详解之19:如何开启GPU硬件加速,使用JavaCV进行音视频的硬解码和硬编码(支持intel、amd和nvidia)
    javaCV开发详解之18:音视频转码(音频编解码和视频编解码)
    JavaCV入门指南:FrameConverter转换工具类及CanvasFrame图像预览工具类(javaCV教程完结篇)
    JavaCV入门指南:帧过滤器(FrameFilter)的原理与应用
    JavaCV入门指南:调用opencv原生API和JavaCV是如何封装了opencv的图像处理操作?
    javaCV开发详解之17:GIF和APNG动态图片推流和录制成视频文件(以gif转mp4和apng转mp4为例)
    javaCV开发详解之16:使用一张图片推流和一张图片录制成视频文件
    JavaCV入门指南:帧录制器/推流器(FrameRecorder)的原理与应用
    JavaCV入门指南:帧抓取器(FrameGrabber)的原理与应用
  • 原文地址:https://www.cnblogs.com/edcoder/p/11718735.html
Copyright © 2020-2023  润新知