

Public Class FeatureClassDescription Inherits TableDescription
public class FeatureClassDescription : TableDescription
{
FieldDescription bigIntegerFieldDescription =
new FieldDescription("BigInteger_64", FieldType.BigInteger);
}
{
// 64-bit
FieldDescription oidFieldDescription_64 =
new FieldDescription("ObjectID_64", FieldType.OID)
{
Length = 8
};
// 32-bit
FieldDescription oidFieldDescription_32 =
new FieldDescription("ObjectID_32", FieldType.OID)
{
Length = 4
};
}
{
// Earthquake occurrences date and time
// 9/28/2014 (DateOnly)
FieldDescription earthquakeDateOnlyFieldDescription =
new FieldDescription("Earthquake_DateOnly", FieldType.DateOnly);
// 1:16:42 AM (TimeOnly)
FieldDescription earthquakeTimeOnlyFieldDescription =
new FieldDescription("Earthquake_TimeOnly", FieldType.TimeOnly);
// 9/28/2014 1:16:42.000 AM -09:00 (Timestamp with Offset)
FieldDescription earthquakeTimestampOffsetFieldDescription =
new FieldDescription("Earthquake_TimestampOffset_Local", FieldType.TimestampOffset);
// 9/28/2014 1:16:42 AM (DateTime)
FieldDescription earthquakeDateFieldDescription =
new FieldDescription("Earthquake_Date", FieldType.Date);
}
{
// Must be called within QueuedTask.Run
void CreateFeatureDatasetWithFeatureClassSnippet(Geodatabase geodatabase)
{
// 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;
}
}
}
{
// Must be called within QueuedTask.Run
void CreateFeatureClassInsideFeatureDatasetSnippet(Geodatabase geodatabase)
{
// 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;
}
}
}
{
// Must be called within QueuedTask.Run
void AddFieldWithDomainSnippet(Geodatabase geodatabase)
{
//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>
{
{ "C_1", "Copper" },
{ "S_2", "Steel" }
})
{
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);
domainFieldDescription.SetDomainDescription(codedValueDomainDescription);
//Retrieve existing information for 'Pipes' FeatureClass
FeatureClassDefinition originalFeatureClassDefinition = geodatabase.GetDefinition<FeatureClassDefinition>(featureClassName);
FeatureClassDescription originalFeatureClassDescription =
new FeatureClassDescription(originalFeatureClassDefinition);
// Add domain field on existing fields
// Adding a field,'PipeType', which uses the coded value domain to the 'Pipes' FeatureClass
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;
}
}
}
System.Object
ArcGIS.Core.Data.DDL.Description
ArcGIS.Core.Data.DDL.TableDescription
ArcGIS.Core.Data.DDL.FeatureClassDescription
ArcGIS.Core.Data.DDL.AnnotationFeatureClassDescription
ArcGIS.Core.Data.DDL.DimensionFeatureClassDescription
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)