获取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.通过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 }