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

FeatureClassDescription Class
Represents a mechanism to create a ArcGIS.Core.Data.FeatureClass.
Object Model
FeatureClassDescription ClassShapeDescription Class
Syntax
public class FeatureClassDescription : TableDescription 
Example
Creating a FeatureDataset with a FeatureClass in one operation
// Creating a FeatureDataset named as 'Parcel_Information' and a FeatureClass with name 'Parcels' in one operation

string featureDatasetName = "Parcel_Information";
string featureClassName = "Parcels";

SchemaBuilder schemaBuilder = new SchemaBuilder(geodatabase);

// Create a FeatureDataset token
FeatureDatasetDescription featureDatasetDescription = new FeatureDatasetDescription(featureDatasetName, SpatialReferences.WGS84);
FeatureDatasetToken featureDatasetToken = schemaBuilder.Create(featureDatasetDescription);

// Create a FeatureClass description
FeatureClassDescription featureClassDescription = new FeatureClassDescription(featureClassName,
  new List<FieldDescription>()
  {
    new FieldDescription("Id", FieldType.Integer),
    new FieldDescription("Address", FieldType.String)
  },
  new ShapeDescription(GeometryType.Point, SpatialReferences.WGS84));

// Create a FeatureClass inside a FeatureDataset
FeatureClassToken featureClassToken = schemaBuilder.Create(new FeatureDatasetDescription(featureDatasetToken), featureClassDescription);

// Build status
bool buildStatus = schemaBuilder.Build();

// Build errors
if (!buildStatus)
{
  IReadOnlyList<string> errors = schemaBuilder.ErrorMessages;
}
Creating a FeatureClass in existing FeatureDataset
// Creating a FeatureClass named as 'Tax_Jurisdiction' in existing FeatureDataset with name 'Parcels_Information'
string featureDatasetName = "Parcels_Information";
string featureClassName = "Tax_Jurisdiction";

// Create a FeatureClass description
FeatureClassDescription featureClassDescription = new FeatureClassDescription(featureClassName,
  new List<FieldDescription>()
  {
    new FieldDescription("Tax_Id", FieldType.Integer),
    new FieldDescription("Address", FieldType.String)
  },
  new ShapeDescription(GeometryType.Point, SpatialReferences.WGS84));

FeatureDatasetDefinition featureDatasetDefinition = geodatabase.GetDefinition<FeatureDatasetDefinition>(featureDatasetName);

SchemaBuilder schemaBuilder = new SchemaBuilder(geodatabase);

// Create a FeatureClass inside a FeatureDataset using a FeatureDatasetDefinition
schemaBuilder.Create(new FeatureDatasetDescription(featureDatasetDefinition), featureClassDescription);

// Build status
bool buildStatus = schemaBuilder.Build();

// Build errors
if (!buildStatus)
{
  IReadOnlyList<string> errors = schemaBuilder.ErrorMessages;
}
Adding a Field that uses a domain
// Adding a field,'PipeType', which uses the coded value domain to the 'Pipes' FeatureClass

//The FeatureClass to add field
string featureClassName = "Pipes";

SchemaBuilder schemaBuilder = new SchemaBuilder(geodatabase);

// Create a CodedValueDomain description for water pipes
CodedValueDomainDescription pipeDomainDescription = 
  new CodedValueDomainDescription("WaterPipeTypes", FieldType.String,
  new SortedList<object, string> { { "Copper", "C_1" },
    { "Steel", "S_2" } })
{
  SplitPolicy = SplitPolicy.Duplicate,
  MergePolicy = MergePolicy.DefaultValue
};

// Create a coded value domain token
CodedValueDomainToken codedValueDomainToken = schemaBuilder.Create(pipeDomainDescription);

// Create a new description from domain token
CodedValueDomainDescription codedValueDomainDescription = new CodedValueDomainDescription(codedValueDomainToken);

// Create a field named as 'PipeType' using a domain description
FieldDescription domainFieldDescription = new FieldDescription("PipeType", FieldType.String)
{ DomainDescription = codedValueDomainDescription };

//Retrieve existing information for 'Pipes' FeatureClass
FeatureClassDefinition originalFeatureClassDefinition = geodatabase.GetDefinition<FeatureClassDefinition>(featureClassName);
FeatureClassDescription originalFeatureClassDescription = 
  new FeatureClassDescription(originalFeatureClassDefinition);

// Add domain field on existing fields
List<FieldDescription> modifiedFieldDescriptions = new List<FieldDescription>(originalFeatureClassDescription.FieldDescriptions) { domainFieldDescription };

// Create a new description with updated fields for 'Pipes' FeatureClass 
FeatureClassDescription featureClassDescription = 
  new FeatureClassDescription(originalFeatureClassDescription.Name, modifiedFieldDescriptions,
                                 originalFeatureClassDescription.ShapeDescription);

// Update the 'Pipes' FeatureClass with domain field
schemaBuilder.Modify(featureClassDescription);

// Build status
bool buildStatus = schemaBuilder.Build();

// Build errors
if (!buildStatus)
{
  IReadOnlyList<string> errors = schemaBuilder.ErrorMessages;
}

Inheritance Hierarchy

System.Object
   ArcGIS.Core.Data.DDL.Description
      ArcGIS.Core.Data.DDL.TableDescription
         ArcGIS.Core.Data.DDL.FeatureClassDescription
            ArcGIS.Core.Data.DDL.AnnotationFeatureClassDescription

Requirements

Target Platforms: Windows 11, Windows 10, Windows 8.1

ArcGIS Pro version: 2.8 or higher.
See Also