ArcGIS Pro 3.0 API Reference Guide
ArcGIS.Core.Data Namespace / FeatureClassDefinition Class
Members Example

In This Topic
    FeatureClassDefinition Class
    In This Topic
    Represents the schema and properties of a FeatureClass.
    Object Model
    FeatureClassDefinition ClassEnvelope ClassSpatialReference Class
    Syntax
    public class FeatureClassDefinition : TableDefinition, System.IDisposable  
    Public Class FeatureClassDefinition 
       Inherits TableDefinition
       Implements System.IDisposable 
    Example
    Obtaining Definition from Geodatabase
    public async Task ObtainingDefinitionFromGeodatabase()
    {
      await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
      {
        using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde"))))
        {
          // Remember that for Enterprise databases you have to qualify your dataset names with the DatabaseName and UserName.
          TableDefinition enterpriseTableDefinition = geodatabase.GetDefinition<TableDefinition>("LocalGovernment.GDB.CitizenContactInfo");
    
          // It does not matter if the dataset is within a FeatureDataset or not.
          FeatureClassDefinition featureClassDefinition = geodatabase.GetDefinition<FeatureClassDefinition>("LocalGovernment.GDB.FireStation");
    
          // GetDefinition For a RelationshipClass.
          RelationshipClassDefinition relationshipClassDefinition = geodatabase.GetDefinition<RelationshipClassDefinition>("LocalGovernment.GDB.AddressPointHasSiteAddresses");
    
          // GetDefinition For a FeatureDataset.
          FeatureDatasetDefinition featureDatasetDefinition = geodatabase.GetDefinition<FeatureDatasetDefinition>("LocalGovernment.GDB.Address");
        }
      });
    }
    Obtaining List of Defintions from Geodatabase
    public async Task ObtainingDefinitionsFromGeodatabase()
    {
      await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
      {
        using (Geodatabase geodatabase = new Geodatabase(
          new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde"))))
        {
          var enterpriseDefinitions = 
            geodatabase.GetDefinitions<FeatureClassDefinition>();
          IEnumerable<Definition> featureClassesHavingGlobalID = 
            enterpriseDefinitions.Where(definition => definition.HasGlobalID());
    
          var featureDatasetDefinitions = 
            geodatabase.GetDefinitions<FeatureDatasetDefinition>();
          bool electionRelatedFeatureDatasets = 
            featureDatasetDefinitions.Any(
              definition => definition.GetName().Contains("Election"));
    
          var attributedRelationshipClassDefinitions = 
            geodatabase.GetDefinitions<AttributedRelationshipClassDefinition>();
    
          var relationshipClassDefinitions = 
            geodatabase.GetDefinitions<RelationshipClassDefinition>();
        }
      });
    }
    Obtaining Related Definitions from Geodatabase
    public async Task ObtainingRelatedDefinitionsFromGeodatabase()
    {
      await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
      {
        using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file\\sdefile.sde"))))
        {
          // Remember the qualification of DatabaseName. for the RelationshipClass.
    
          RelationshipClassDefinition enterpriseDefinition = 
          geodatabase.GetDefinition<RelationshipClassDefinition>("LocalGovernment.GDB.AddressPointHasSiteAddresses");
          IReadOnlyList<Definition> enterpriseDefinitions = 
          geodatabase.GetRelatedDefinitions(enterpriseDefinition, DefinitionRelationshipType.DatasetsRelatedThrough);
          FeatureClassDefinition enterpriseAddressPointDefinition = 
          enterpriseDefinitions.First(
                  defn => defn.GetName().Equals("LocalGovernment.GDB.AddressPoint")) as FeatureClassDefinition;
    
          FeatureDatasetDefinition featureDatasetDefinition = 
            geodatabase.GetDefinition<FeatureDatasetDefinition>("LocalGovernment.GDB.Address");
          IReadOnlyList<Definition> datasetsInAddressDataset = 
            geodatabase.GetRelatedDefinitions(featureDatasetDefinition, DefinitionRelationshipType.DatasetInFeatureDataset);
          FeatureClassDefinition addressPointInAddressDataset = 
            datasetsInAddressDataset.First(
                  defn => defn.GetName().Equals("LocalGovernment.GDB.AddressPoint")) as FeatureClassDefinition;
    
          RelationshipClassDefinition addressPointHasSiteAddressInAddressDataset = datasetsInAddressDataset.First(
                  defn => defn.GetName().Equals("LocalGovernment.GDB.AddressPointHasSiteAddresses")) as RelationshipClassDefinition;
        }
      });
    }
    Sorting a Table
    public RowCursor SortWorldCities(FeatureClass worldCitiesTable)
    {
      using (FeatureClassDefinition featureClassDefinition = worldCitiesTable.GetDefinition())
      {
        Field countryField = featureClassDefinition.GetFields()
          .First(x => x.Name.Equals("COUNTRY_NAME"));
        Field cityNameField = featureClassDefinition.GetFields()
          .First(x => x.Name.Equals("CITY_NAME"));
    
        // Create SortDescription for Country field
        SortDescription countrySortDescription = new SortDescription(countryField);
        countrySortDescription.CaseSensitivity = CaseSensitivity.Insensitive;
        countrySortDescription.SortOrder = SortOrder.Ascending;
    
        // Create SortDescription for City field
        SortDescription citySortDescription = new SortDescription(cityNameField);
        citySortDescription.CaseSensitivity = CaseSensitivity.Insensitive;
        citySortDescription.SortOrder = SortOrder.Ascending;
    
        // Create our TableSortDescription
        TableSortDescription tableSortDescription = new TableSortDescription(
          new List<SortDescription>() { countrySortDescription, citySortDescription });
    
        return worldCitiesTable.Sort(tableSortDescription);
      }
    }
    Inheritance Hierarchy

    System.Object
       ArcGIS.Core.CoreObjectsBase
          ArcGIS.Core.Data.Definition
             ArcGIS.Core.Data.TableDefinition
                ArcGIS.Core.Data.FeatureClassDefinition
                   ArcGIS.Core.Data.Mapping.AnnotationFeatureClassDefinition
                   ArcGIS.Core.Data.Mapping.DimensionFeatureClassDefinition
                   ArcGIS.Core.Data.Realtime.RealtimeFeatureClassDefinition

    Requirements

    Target Platforms: Windows 11, Windows 10, Windows 8.1

    See Also