C# 获取Geodatabase个人数据库中要素类

来源:互联网 发布:通用顶级域名有多少个 编辑:程序博客网 时间:2024/06/06 01:35

去掉了图片转载,原文http://blog.csdn.net/guanzg/article/details/3305241


arcgis进行二次开发中,如何获取geodatabase中的要素类是最基本的一个步骤,以下示意代码实现的就是如何获取geodatabase中的要素类

vate void btn_search_Click(object sender, System.EventArgs e)

  {
 //getfilename()  为获取文件路径
   try
   {
    string path=getfilename().Substring(0,getfilename().Length-2);
    IWorkspaceFactory pFactory=new AccessWorkspaceFactoryClass();
    IWorkspace pWorkspace=pFactory.OpenFromFile(@path,0);
    IFeatureWorkspace pFeatWorkspace=pWorkspace as IFeatureWorkspace;
       
    IEnumDataset iEDS=pWorkspace.get_Datasets(esriDatasetType.esriDTAny) as IEnumDataset;
    iEDS.Reset();
    IDataset ids=iEDS.Next() as IDataset;
    
    while (ids is IFeatureDataset)
    {
     IFeatureDataset pFeatureDataset=pFeatWorkspace.OpenFeatureDataset(ids.Name);
     IEnumDataset iEDS1=pFeatureDataset.Subsets;
     iEDS1.Reset();
     IDataset ids1=iEDS1.Next();
     while(ids1 is FeatureClass)
     {
      IFeatureLayer pFeatureLayer=new FeatureLayerClass();
      pFeatureLayer.FeatureClass=pFeatWorkspace.OpenFeatureClass(ids1.Name);

  //获取面要素
      if(pFeatureLayer.FeatureClass.ShapeType==ESRI.ArcObjects.Core.esriGeometryType.esriGeometryPolygon)
      {
       pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName; 
       this.list_feature.Items.Add(pFeatureLayer.Name.ToString());  
       
      }

//获取线要素

      if(pFeatureLayer.FeatureClass.ShapeType==ESRI.ArcObjects.Core.esriGeometryType.esriGeometryPolyline)
      {
       pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName; 
       this.list_polyline.Items.Add(pFeatureLayer.Name.ToString());  
       
      }

      ids1=iEDS1.Next();

     }
     
     ids=iEDS.Next();
    }
     
   }


   catch(Exception err)
   {
    MessageBox.Show(err.ToString(),"读取空间数据失败",MessageBoxButtons.OK,MessageBoxIcon.Error);
    Application.Exit();
   }
   finally
   {
                
   }
  }

0 0
原创粉丝点击