zoukankan      html  css  js  c++  java
  • 介绍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二次开发,如果有不对的地方,请多多包涵!

  • 相关阅读:
    office 365 sharepoint online 学习资料
    NPOI 导入 导出 Excel
    800703fa Illegal operation attempted on a registry key that has been marked for deletion
    js 获取身份证号码出生日期,籍贯等信息
    直接在浏览器中修改网页内容
    asp.net 按指定模板导出word,pdf
    StackPanel在增加控件的问题
    解决iOS工程被Xcode识别成Mac工程的问题
    Swift之异常处理
    Swift中的协议和闭包
  • 原文地址:https://www.cnblogs.com/edcoder/p/11718735.html
Copyright © 2011-2022 走看看