目录
3.1 获取一个Dataset下的所有FeatureClass的别名
3.2 获取所有要素类及要素下的FeatureClass名称
1 接口及帮助
1.1 IWorkspace
属性或方法 | 描述 |
IEnumDataset get_Datasets (esriDatasetTypeDatasetType); | 获取工作空间的要素集 |
IEnumDatasetName get_DatasetNames (esriDatasetTypeDatasetType); | 获取工作空间要素集的名称 |
1.2 IFeatureDataset
BrowseName | The browse name of the dataset. | data的浏览名称 |
CanCopy | True if this dataset can be copied. | 数据集是否可拷贝 |
CanDelete | True if this dataset can be deleted. | 数据集是否可删除 |
CanRename | True if this dataset can be renamed. | 数据集是否可重命名 |
Category | The category of the dataset. | 数据集的目录 |
Copy | Copies this dataset to a new dataset with the specified name. | 将数据集拷贝到一个新指定的数据集中 |
CreateFeatureClass | Creates a new FeatureClass in this FeatureDataset. | 创建一个数据集 |
Delete | Deletes this dataset. | 删除当前数据集 |
FullName | The associated name object. | 数据集的全名 |
Name | The name of the Dataset. | 数据集的名称 |
PropertySet | The set of properties for the dataset. | 数据集的属性集合 |
Rename | Renames this Dataset. | 重命名数据集 |
Subsets | Datasets contained within this dataset. | 数据集中包含的子要素类(IfeatureClass) |
Type | The type of the Dataset. | 数据集的类型 |
Workspace | The workspace containing this dataset. | 数据集的工作空间 |
示例代码(获取数据集下的要素类名称):
IWorkspaceFactory worFact =new FileGDBWorkspaceFactory();
IWorkspace workspace = worFact.OpenFromFile("路径", 0);
IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
IFeatureDataset ipFeaterDataset = featureWorkspace.OpenFeatureDataset(checkLayerName);
IEnumDataset ped = ipFeaterDataset.Subsets;
1.3 IFeatureClassContainer
Class | The FeatureClass associated with the specified index value. | |
ClassByID | The FeatureClass with the specified ID. | |
ClassByName | The FeatureClass with the specified name. | |
ClassCount | The number of FeatureClasses in this container. | |
Classes | An enumerator over the FeatureClasses. |
示例代码(获取数据集下的要素类及其别名):
IFeatureDataset ipFeaterDataset = featureWorkspace.OpenFeatureDataset(checkLayerName);
IFeatureContainer pfc = ipFeaterDataset as IFeatureContainer;
IEnumFeatureClass pefc = pfc.Classes;
2 具体功能函数
2.1 根据名称删除FeatureClass
这个函数的缺点是,不能删除FeatureSet中的FeatureClass
public void DeleteFeatureClass(string featueClassName)
{
//打开GDB文件
IWorkspaceFactory worFact =new FileGDBWorkspaceFactory();
IWorkspace workspace = worFact.OpenFromFile("路径", 0);
IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
//根据名称删除数据库要素
IFeatureWorkspaceManage featureWorkspaceMange = (IFeatureWorkspaceManage)featureWorkspace;
IEnumDatasetName enumDatasetName = workspace.get_DatasetNames(esriDatasetType.esriDTFeatureClass);
IDatasetName datasetName = null;
while ((datasetName = enumDatasetName.Next()) != null)
{
if (datasetName.Name.Equals(featueClassName))
{
featureWorkspaceMange.DeleteByName(datasetName);//删除指定要素类
break;
}
}
}
2.2 删除GDB下的指定数据集
public void DeleteFeatureDataset(string featueClassName, string featueDatasetName)
{
//打开GDB文件
IWorkspaceFactory worFact =new FileGDBWorkspaceFactory();
IWorkspace workspace = worFact.OpenFromFile("路径", 0);
IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
//根据名称删除数据库要素
IFeatureWorkspaceManage featureWorkspaceMange = (IFeatureWorkspaceManage)featureWorkspace;
IEnumDatasetName enumDatasetName = workspace.get_DatasetNames(esriDatasetType.esriDTFeatureDataset);
IDatasetName datasetName = null;
while ((datasetName = enumDatasetName.Next()) != null)
{
if (datasetName.Name.Equals(featueDatasetName))
{
featureWorkspaceMange.DeleteByName(featueDatasetName);//删除指定要素类
break;
}
}
}
3 获取给定数据集下的所有要素层的别名、名称
3.1 获取一个Dataset下的所有FeatureClass的别名
public List<string> getAllFeaClsNamesInDS(IFeatureDataset m_FeatureDataset)
{
List<string> liFeaClsNames = new List<string>();
//利用IFeatureClassContainer对象遍历IFeatureDataset
IFeatureClassContainer m_FeatureClassContainer = (IFeatureClassContainer)m_FeatureDataset;
IEnumFeatureClass m_EnumFC = m_FeatureClassContainer.Classes;
IFeatureClass m_FeatureClass = m_EnumFC.Next();
while (m_FeatureClass != null)
{
liFeaClsNames.Add(m_FeatureClass.AliasName);
m_FeatureClass = m_EnumFC.Next();
}
return liFeaClsNames;
}
3.2 获取所有要素类及要素下的FeatureClass名称
/// <summary>
/// 获取GDB MDB工作空间的要素类
/// </summary>
/// <param name="workspace"></param>
/// <param name="workspaceType"></param>
/// <returns></returns>
public List<string> GetFeatureClassByWorkspace(IWorkspace workspace)
{
List<string> listFeaClass = new List<string>();
try
{
//遍历工作空间下的featureclass
IFeatureWorkspace pFeatureWorkspace = workspace as IFeatureWorkspace;
IEnumDataset pEnumDatasets = workspace.get_Datasets(esriDatasetType.esriDTAny) as IEnumDataset;
IDataset pDataset = pEnumDatasets.Next();
while (pDataset != null)
{
if (pDataset.Type == esriDatasetType.esriDTFeatureClass)
{
//string aliasName = pFeatureWorkspace.OpenFeatureClass(pDataset.Name).AliasName;
listFeaClass.Add(pDataset.Name);
}
else if (pDataset.Type == esriDatasetType.esriDTFeatureDataset)
{
IEnumDataset pESubDataset = pDataset.Subsets;
IDataset pSubDataset = pESubDataset.Next();
while (pSubDataset != null)
{
listFeaClass.Add(pSubDataset.Name);
pSubDataset = pESubDataset.Next();
}
}
pDataset = pEnumDatasets.Next();
}
}
catch (Exception ex)
{
return null;
}
return listFeaClass;
}