介紹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二次開發,如果有不對的地方,請多多包涵!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM