从fileGDB中获取List<IFeatureClass>

来源:互联网 发布:java求最大公约数 编辑:程序博客网 时间:2024/06/03 17:29
   /// <summary>   /// 从FGDB中获取   /// </summary>   /// <param name="fileGDBPath">fileGDB文件路径</param>   /// <returns>FeatureClass的列表</returns>  public static List<IFeatureClass> getFClFromFGDB(string fileGDBPath)        {            //获取工作空间            IWorkspaceFactory pWorkspaceFactory = new FileGDBWorkspaceFactoryClass();            IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(fileGDBPath, 0);            IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTAny) as IEnumDataset;            pEnumDataset.Reset();            //获取dataset            IDataset pDataset = pEnumDataset.Next();            List<IFeatureClass> fcls = new List<IFeatureClass>();             //判断dataset是IFeatureDataset            if (pDataset is IFeatureDataset)            {                IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);                IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets;                pEnumDataset1.Reset();                IDataset pDataset1 = pEnumDataset1.Next();                //如果子类是FeatureClass且不为空                while (pDataset1 is IFeatureClass &&pDataset1 !=null)                {                    IFeatureClass  fcl= pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);                    fcls.Add(fcl);                    pDataset1 = pEnumDataset1.Next();                }            }            return fcls;          }