ARCEngine判断要素集或要素类是否在数据库内

  1. 判断要素集
        /// <summary>
        /// 判断要素集是否存在
        /// </summary>
        /// <param name="pWorkspace"></param>
        /// <param name="strname"></param>
        /// <returns></returns>
        private bool IWorkspaceIsExistDataset(IWorkspace pWorkspace, string strname)
        {
    
    
            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset);
            pEnumDataset.Reset();
            IDataset pDataset = pEnumDataset.Next();
            bool ExistDataset = false;
            while (pDataset != null)
            {
    
    
                if (pDataset.Name == strname)
                {
    
    
                    ExistDataset = true;
                    break;
                }
                pDataset = pEnumDataset.Next();
            }
            return ExistDataset;
        }
  1. 判断要素类
        /// <summary>
        /// 判断要素类是否存在
        /// </summary>
        /// <param name="pWorkspace"></param>
        /// <param name="strname"></param>
        /// <returns></returns>
        private bool IWorkspaceIsExistDataset(IWorkspace pWorkspace, string strname)
        {
    
    
            IEnumDatasetName pEnumDatasetName = pWorkspace.get_DatasetNames(esriDatasetType.esriDTFeatureClass);
            pEnumDatasetName.Reset();
            IDatasetName pDatasetName = pEnumDatasetName.Next();
            bool ExistDataset = false;
            while (pDatasetName != null)
            {
    
    
                if (pDatasetName.Name == strname)
                {
    
    
                    ExistDataset = true;
                    break;
                }
                pDatasetName = pEnumDatasetName.Next();
            }
            return ExistDataset;
        }
  1. 判断要素类是否在要素集中
       /// <summary>
        /// 判断要素集中要素类是否存在
        /// </summary>
        /// <param name="pWorkspace"></param>
        /// <param name="strname"></param>
        /// <returns></returns>
        private bool IWorkspaceIsExistDatasetFeatureClass(IWorkspace pWorkspace, string strname)
        {
    
    
            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset);
            IFeatureDataset featureDataset = pEnumDataset.Next() as IFeatureDataset;
            bool ExistDataset = false;
            while (featureDataset != null)
            {
    
    
                IFeatureClassContainer featureClassContainer = (IFeatureClassContainer)featureDataset;
                IEnumFeatureClass enumFeatureClass = featureClassContainer.Classes;
                IFeatureClass featureClass = enumFeatureClass.Next();
                while (featureClass != null)
                {
    
    
                    if (featureClass.AliasName == strname)
                    {
    
    
                        ExistDataset = true;
                        break;
                    }
                    featureClass = enumFeatureClass.Next();
                }
                featureDataset = pEnumDataset.Next() as IFeatureDataset;
            }
            return ExistDataset;
        }
  1. 判断要素类是否在要素集中
       /// <summary>
        /// 判断要素集中要素类是否存在
        /// </summary>
        /// <param name="pWorkspace"></param>
        /// <param name="strname"></param>
        /// <returns></returns>
        private bool IWorkspaceIsExistDatasetFeatureClass(IWorkspace pWorkspace, string strname)
        {
    
    
            IEnumDataset pEDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTAny);
            IDataset pDataset = pEDataset.Next();
            bool ExistDataset = false;
            while (pDataset != null)
            {
    
    
                if (pDataset.Type == esriDatasetType.esriDTFeatureClass)
                {
    
    
                    if (pDataset.Name == strname)
                    {
    
    
                        ExistDataset = true;
                        break;
                    }
                }
                //如果是数据集
                else if (pDataset.Type == esriDatasetType.esriDTFeatureDataset)
                {
    
    
                    IEnumDataset pESubDataset = pDataset.Subsets;
                    IDataset pSubDataset = pESubDataset.Next();
                    while (pSubDataset != null)
                    {
    
    
                        if (pSubDataset.Name == strname)
                        {
    
    
                            ExistDataset = true;
                            break;
                        }
                        pSubDataset = pESubDataset.Next();

                    }
                }
                pDataset = pEDataset.Next();
            }
            return ExistDataset;
        }

猜你喜欢

转载自blog.csdn.net/firstlt0217/article/details/109810372