AE中shp文件的加载

来源:互联网 发布:淘宝中国质造申请条件 编辑:程序博客网 时间:2024/04/29 09:34

AEshp文件的加载

步骤:

1) 创建工作空间工厂

2) 打开shapefile工作空间

3) 打开要素类

4) 创建要素图层

5) 关联图层和要素类

6) 添加到地图空间

具体代码(后面数字为对应的步骤):

        IWorkspaceFactory pWorkspaceFactory=new ShapefileWorkspaceFactory (); // 1

            openFileDialog1.Filter="shaperfile(*.shp)|*.shp";

            openFileDialog1.InitialDirectory=@"E:\test\文档和数据\Data";

            openFileDialog1.Multiselect=false;

            DialogResult pDialogResult=openFileDialog1.ShowDialog ();

            if(pDialogResult !=DialogResult.OK)

                return;

            string pPath=openFileDialog1 .FileName;

            string pFolder=Path.GetDirectoryName (pPath);

            string pFileName=Path.GetFileName(pPath);

            IWorkspace pWorkspace=pWorkspaceFactory .OpenFromFile(pFolder ,0); // 2

            IFeatureWorkspace pFeatureWorkspace =pWorkspace as IFeatureWorkspace ;

            IFeatureClass pFC=pFeatureWorkspace .OpenFeatureClass (pFileName ); //3

            IFeatureLayer pFLayer=new FeatureLayerClass (); // 4

            pFLayer.FeatureClass =pFC;

            pFLayer.Name =pFC.AliasName ; // 5

            ILayer pLayer=pFLayer as ILayer ;

            IMap pMap=axMapControl1.Map ;

            pMap.AddLayer(pLayer); // 6

            axMapControl1.ActiveView .Refresh ();

-----------------------------------------------------------------------------------------------------------

//添加ArcGIS命名空间

using ESRI.ArcGIS.Carto;

using ESRI.ArcGIS.Geometry;

using ESRI.ArcGIS.Geodatabase;

using ESRI.ArcGIS.DataSourcesFile;

using ESRI.ArcGIS.DataSourcesRaster;

//存储打开文件的全路径

string fullFilePath;

//设置OpenFileDialog的属性,使其能打开多种类型文件

OpenFileDialog penFile = new OpenFileDialog();

openFile.Filter = "shape文件(*.shp)|*.shp|";

openFile.Filter +="栅格数据(*.jpg,*.bmp,*.tiff)|*.jpg;*.bmp;*.tiff|";

openFile.Filter +="地图文档(*.mxd,*.mxt,*.jmf)|*.mxd;*.mxt;*.jmf";

openFile.Title = "打开文件";

try

{

  if (openFile.ShowDialog() == DialogResult.OK)

   {

fullFilePath = openFile.FileName;

//获得文件路径

    int index = fullFilePath.LastIndexOf("\\");

    string filePath = fullFilePath.Substring(0, index);

    //获得文件名称

    string fileNam = fullFilePath.Substring(index + 1);

    //加载shape文件

    if (openFile.FilterIndex == 1)

    {

      //打开工作空间工厂

      IWorkspaceFactory workspcFac = new ShapefileWorkspaceFactory();

      IFeatureWorkspace featureWorkspc;

      IFeatureLayer featureLay = new FeatureLayerClass();

      //打开路径

      featureWorkspc = workspcFac.OpenFromFile(filePath, 0) as IFeatureWorkspace;

      //打开类要素

      featureLay.FeatureClass = featureWorkspc.OpenFeatureClass(fileNam);

      //清空图层

      axMapControl1.ClearLayers();

      //添加图层

      axMapControl1.AddLayer(featureLay);

      axMapControl1.Refresh();

   }

   //加载栅格图像

   else if (openFile.FilterIndex == 2)

   {

     IWorkspaceFactory workspcFac = new RasterWorkspaceFactory();

     IRasterWorkspace rasterWorkspc;

     IRasterDataset rasterDatst = new RasterDatasetClass();

     IRasterLayer rasterLay = new RasterLayerClass();

     rasterWorkspc = workspcFac.OpenFromFile(filePath, 0) as IRasterWorkspace;

     rasterDatst = rasterWorkspc.OpenRasterDataset(fileNam );

     rasterLay.CreateFromDataset(rasterDatst);

     axMapControl1.ClearLayers();

     axMapControl1.AddLayer(rasterLay);

     axMapControl1.Refresh();

  }

     //加载地图文档

     else if (openFile.FilterIndex == 3)

     {

      IMapDocument mapDoc = new MapDocumentClass();

      mapDoc.Open(filePath ,"");

      axMapControl1.ClearLayers();

      for (int i = 0; i < mapDoc.MapCount - 1; i++)

      {

        axMapControl1.Map =mapDoc.get_Map (i);

      }

      IActiveView activeViw = axMapControl1.Map as IActiveView;

      activeViw.Extent = axMapControl1.FullExtent;

      axMapControl1.Refresh();

     }

    }

   }

   catch (Exception ex)

   {

     MessageBox.Show(ex.Message.ToString ());

   }

  }

}

 

原文链接:

http://hi.baidu.com/galileo0405/blog/item/6689be922a431381a977a4bd.html

原创粉丝点击