C# 加载Shp文件到MapControl控件

来源:互联网 发布:江西年夜饭事件知乎 编辑:程序博客网 时间:2024/04/28 21:07

加载Shp文件到地图控件MapControl有一般有两种方式。

1、用MapControl控件的AddShapeFile方法可加载Shape格式文件,调用该方法需要传入两个参数,分别是文件路径和不带扩展名的文件名,其调用方法如下:

axMapControl1.AddShapeFile(pathName, fileName);

    利用此方法加载Shape文件时,可能会报未知错误,试试:将LicenseControl控件拖入窗体。

[csharp] view plain copy
print?
  1.    private void AddShp(object sender, EventArgs e)  
  2.    {  
  3.        //利用文件对话框选择加载的shp文件路径  
  4.        OpenFileDialog OpenFdlg = new OpenFileDialog();  
  5.        OpenFdlg.Title = "选择shp文件";  
  6.        OpenFdlg.Filter = "Shape格式文件(*.shp)|*.shp";  
  7.        OpenFdlg.ShowDialog();  
  8.        string strFileName = OpenFdlg.FileName;  
  9.        if (strFileName == string.Empty)  
  10.        {  
  11.            return;  
  12.        }  
  13. //将Shp文件的路径分割为路径和不带格式后缀的文件名  
  14.        string pathName = System.IO.Path.GetDirectoryName(strFileName);  
  15.        string fileName = System.IO.Path.GetFileNameWithoutExtension(strFileName);  
  16.   
  17. ////下面两行为默认指定文件路径和文件名  
  18.        //string pathName = @"E:\HiOS\DataSHP";  
  19.        //string fileName = "River_X";  
  20.        axMapControl1.AddShapeFile(pathName, fileName);  
  21.        axMapControl1.Extent = axMapControl1.FullExtent;  
  22.    }  

2、也可以利用工作空间工厂打开Shape格式文件

[csharp] view plain copy
print?
  1. private void AddShpData(object sender, EventArgs e)  
  2. {  
  3.     //利用文件对话框选择加载的shp文件路径  
  4.     OpenFileDialog OpenFdlg = new OpenFileDialog();  
  5.     OpenFdlg.Title = "选择shp文件";  
  6.     OpenFdlg.Filter = "Shape格式文件(*.shp)|*.shp";  
  7.     OpenFdlg.ShowDialog();  
  8.     string strFileName = OpenFdlg.FileName;  
  9.     if (strFileName == string.Empty)  
  10.     {  
  11.         return;  
  12.     }  
  13.   
  14.     string pathName = System.IO.Path.GetDirectoryName(strFileName);  
  15.     string fileName = System.IO.Path.GetFileNameWithoutExtension(strFileName);  
  16.       
  17.     //声明Shape文件工作空间工厂,并获取要素工作空间,加载要素类  
  18.     IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();  
  19.     IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(pathName, 0);  
  20.     IFeatureWorkspace pFeatureWorkspace;  
  21.     pFeatureWorkspace = pWorkspace as IFeatureWorkspace;  
  22.     IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(fileName);  
  23.     IDataset pDataset = pFeatureClass as IDataset;  
  24.   
  25.     //声明要素图层,设置相应属性  
  26.     IFeatureLayer pFeatureLayer = new FeatureLayerClass();  
  27.     pFeatureLayer.FeatureClass = pFeatureClass;  
  28.     pFeatureLayer.Name = pDataset.Name;  
  29.   
  30.     //将要素图层转为图层,Add to MapControl   
  31.     ILayer pLayer = pFeatureLayer as ILayer;  
  32.     axMapControl1.Map.AddLayer(pLayer);  
  33. }  





原创粉丝点击