public List ReadFeatureClassList(IWorkspace pWs)
{
//定义接收所有featureclass的数组
List list_sdefeatures = new List();
//打开要素集
IFeatureWorkspace pFeatureWorkspace = pWs as IFeatureWorkspace;
IFeatureClass esriFeatureClass = null;
//遍历要素集Dataset下的featureclass
IEnumDataset penumDatasets = pWs.get_Datasets(esriDatasetType.esriDTFeatureDataset);
penumDatasets.Reset();
IDataset pesriDataset = penumDatasets.Next();
while (pesriDataset != null)
{
if (pesriDataset is IFeatureDataset)
{
// try to find class in dataset
try
{
IFeatureClassContainer featContainer = (IFeatureClassContainer)pesriDataset;
IEnumFeatureClass pEnumFC = featContainer.Classes;
esriFeatureClass = pEnumFC.Next();
while (esriFeatureClass != null)
{
IDataset pDS = esriFeatureClass as IDataset;
list_sdefeatures.Add(pDS.Name.ToString());
esriFeatureClass = pEnumFC.Next();
}
}
catch { }
// try another dataset
}
pesriDataset = penumDatasets.Next();
}
//遍历工作空间下的featureclass
IEnumDataset enumDatasets = pWs.get_Datasets(esriDatasetType.esriDTFeatureClass) as IEnumDataset;
enumDatasets.Reset();
IDataset esriDataset = enumDatasets.Next() as IDataset;
while (esriDataset is IFeatureClass)
{
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(esriDataset.Name);
//获取面要素
if (pFeatureLayer.FeatureClass.ShapeType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon)
{
list_sdefeatures.Add(esriDataset.Name.ToString());
}
//获取线要素
if (pFeatureLayer.FeatureClass.ShapeType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline)
{
list_sdefeatures.Add(esriDataset.Name.ToString());
}
//获取点要素
if (pFeatureLayer.FeatureClass.ShapeType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint)
{
list_sdefeatures.Add(esriDataset.Name.ToString());
}
esriDataset = enumDatasets.Next();
}
return list_sdefeatures;
}