En lugar de obtener el conjunto de datos:
// Retrieve the first feature dataset from the workspace.
IEnumDatasetName enumDatasetName = workspace.get_DatasetNames
(esriDatasetType.esriDTFeatureDataset);
Puede obtener la clase de entidad de la siguiente manera:
IEnumDatasetName enumDatasetName = workspace.get_DatasetNames(esriDatasetType.esriDTFeatureClass);
Ver este hilo:
Exportar / importar una clase de entidad de geodatabase a un archivo XML
ACTUALIZAR
Puede obtener nombres fc dentro de la geodatabase / dataset de características utilizando este código (solución en VB.NET):
Sub TestGetContents()
Try
Dim pGxApp As IGxApplication
Dim Type As System.Type = System.Type.GetTypeFromCLSID(GetType(ESRI.ArcGIS.Framework.AppRefClass).GUID)
pGxApp = TryCast(Activator.CreateInstance(Type), ESRI.ArcGIS.CatalogUI.IGxApplication)
'select geodatabase in Catalog tree
If Not TypeOf pGxApp.SelectedObject Is IGxDatabase Then
Debug.Print("select a geodb first")
Exit Sub
End If
Dim c As Collection
c = GetContents(pGxApp.SelectedObject)
Dim l As Long
For l = 1 To c.Count
Dim pName As IName
pName = c.Item(l)
If TypeOf pName Is IFeatureClassName Then
Dim pFC As IFeatureClass
pFC = pName.Open
MessageBox.Show(pFC.AliasName)
ElseIf TypeOf pName Is IFeatureDatasetName Then
Dim pDSName As IDatasetName
pDSName = pName
MessageBox.Show(pDSName.Name)
End If
Next l
Catch ex As Exception
MessageBox.Show("Caught an unspecified error in the calling code: " & vbCrLf & ex.ToString)
End Try
End Sub
Function GetContents(ByVal pGxDB As IGxDatabase) As Collection
Try
Dim c As New Collection
Dim pEnumDSName As IEnumDatasetName
pEnumDSName = pGxDB.Workspace.DatasetNames(esriDatasetType.esriDTAny)
Dim pDSName As IDatasetName
pDSName = pEnumDSName.Next
Do Until pDSName Is Nothing
If TypeOf pDSName Is IFeatureClassName Then
c.Add(pDSName)
ElseIf TypeOf pDSName Is IFeatureDatasetName Then
c.Add(pDSName)
AddSubNames(pDSName, c)
End If
pDSName = pEnumDSName.Next
Loop
GetContents = c
Catch ex As Exception
MessageBox.Show("Caught an unspecified error in the calling code: " & vbCrLf & ex.ToString)
End Try
End Function
Sub AddSubNames(ByVal pDSName1 As IDatasetName, ByVal c As Collection)
Try
Dim pEnumDSName As IEnumDatasetName
pEnumDSName = pDSName1.SubsetNames
pEnumDSName.Reset()
Dim pDSName2 As IDatasetName
pDSName2 = pEnumDSName.Next
Do Until pDSName2 Is Nothing
If TypeOf pDSName2 Is IFeatureClassName Then
c.Add(pDSName2)
End If
pDSName2 = pEnumDSName.Next
Loop
Catch ex As Exception
MessageBox.Show("Caught an unspecified error in the calling code: " & vbCrLf & ex.ToString)
End Try
End Sub
Código referenciado desde esta publicación:
ArcObjects: enumerar clases de entidad y conjuntos de datos dentro de una geodatabase
IEnumDatasetName
objeto. El(IName)name.NameString
siempre devuelve una cadena vacía. También recibo una excepción (excepción de HRESULT: 0x80040220)GenerateNameMapping
con el ejemplo de código actual ...IName
aIFeatureClassName
oIFeatureClass
y luego abrirlo, y luego tengo el nombre real. ¡Qué desordenado es eso!Si está en 10.1, intente utilizar la herramienta de geoprocesamiento Exportar documento de espacio de trabajo XML (gestión de datos) .
No estoy seguro de qué hará exactamente si especifica una clase de entidad que participa en una clase de relación, pero imagino que también incluirá la clase de relación y las clases de objeto relacionadas.
fuente