最简单的ArcGIS Engine应用程序(中)

上一篇中只能添加代码中指定的shp文件(最简单的ArcGIS Engine应用程序(上)

为了让用户可以浏览磁盘加载指定的shp文件,需做一下调整。

从工具箱往窗体上添加一个OpenFileDialog控件。

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Carto;

namespace SimpleArcEngineDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void menuAddShp_Click(object sender, EventArgs e)
        {
            //步骤1: 创建工作空间工厂。
            IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();

            //文件过滤器, 选择后缀名为.shp
            openFileDialog1.Filter = "ShapeFile文件(*.shp)|*.shp";
            
            //设定文件对话框的初始路径
            openFileDialog1.InitialDirectory = @"D:\data";
            
            //示例数据文件夹
            openFileDialog1.Multiselect = false; //不允许多选
            DialogResult dialogResult = openFileDialog1.ShowDialog();//打开对话框
            if (dialogResult != DialogResult.OK)
            {
                return; //用户没有选择时返回
            }
            //得到文件名对应的路径、文件夹名等
            string pPath = openFileDialog1.FileName;    //得到完整的路径(路径+文件名)
            string pFolder = Path.GetDirectoryName(pPath);  //得到文件的路径(不包括文件名)
            string pFileName = Path.GetFileName(pPath); //得到文件的文件名

            //步骤2: 打开ShapeFile文件名对应的工作空间。
            IWorkspace pWorkspace1 = pWorkspaceFactory.OpenFromFile(pFolder, 0);  //数据目录
            IFeatureWorkspace pFeatureWorkspce = pWorkspace1 as IFeatureWorkspace; //将工作空间强转成要素工作空间

            //步骤3: 打开要素类。
            IFeatureClass pFC = pFeatureWorkspce.OpenFeatureClass(pFileName);

            //步骤4: 创建要素类图层。
            IFeatureLayer pFLayer = new FeatureLayerClass();
            pFLayer.FeatureClass = pFC;
            pFLayer.Name = pFC.AliasName;

            //步骤5: 关联图层和要素类。
            ILayer pLayer = pFLayer as ILayer;
            IMap pMap = axMapControl1.Map;

            //步骤6: 添加到地图控件中。
            pMap.AddLayer(pLayer);
            axMapControl1.ActiveView.Refresh();

        }
    }
}

 

 简述:

单机“添加shp”,会弹出一个打开文件的对话框,浏览目录后选中任意一个shp文件,单机确定,即可将指定的shp文件加载到地图控件当中。

 

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

posted @ 2019-10-21 14:12  the_path_of_grace  阅读(387)  评论(0编辑  收藏  举报