获取mdb下要素类FeatureClass,独立要素类,没有dataset获取要素类

转载自:http://blog.sina.com.cn/s/blog_6faf711d0100za4x.html

获取mdb数据库要素类的名称

整体思路如下:
1.通过IWorkspace的Datasets属性获取工作空间中的所有Dataset对象(IEnumDataset)
2.枚举EnumDataset,获取Dataset对象
3.如果该Dataset是FeatureDataset
4.QI到IFeatureClassContainer接口
for(int i=0;i < pFClContainer.ClassCount;i++)
{
   IFeatureClass pFeatureClass= pFClContainer.Class(i);
   IDataset pDataset = pFeatureClass as IDataset;
   string pFeaClsName= pDataset.Name;
   ……
}
--------------------------------------------  另外 -----------------------------

有一些要素数据集是放到特定的要素数据集中的,而有些则直接位于工作空间中。如下图。

获取独立于要素数据集的要素类很简单,方法如下:

 1 /// <summary>  
 2 /// 获取独立的要素类  
 3 /// </summary>  
 4 /// <param name="IN_SomeFeatureDataset">工作空间下任意一个要素数据集</param>  
 5 /// <param name="IN_FeatureClassName">独立要素类的名称</param>  
 6 /// <returns>找的的独立要素类</returns>  
 7 private IFeatureClass PRV_GetIndependentFeatureClass(IFeatureDataset IN_SomeFeatureDataset,string IN_FeatureClassName)  
 8 {  
 9         //获取所有独立的要素类  
10         IEnumDataset Temp_AllIndependentFeatureClass=(IN_SomeFeatureDataset.Workspace.get_Datasets(esriDatasetType.esriDTFeatureClass));  
11         //获取每一个独立的要素类  
12         IFeatureClass Each_IndependentFeatureClass = Temp_AllIndependentFeatureClass.Next() as IFeatureClass;  
13         //遍历所有要素类  
14         while (Each_IndependentFeatureClass != null)  
15         {  
16             //如果找到了就返回  
17             if (Each_IndependentFeatureClass.AliasName==IN_FeatureClassName)  
18                 return Each_IndependentFeatureClass;  
19         }  
20         return null;  
21 }

 

 

posted @ 2017-08-31 19:26  marvelousone  阅读(1144)  评论(0编辑  收藏  举报