{
// Must be called within QueuedTask.Run
void CreateCodedDomainSnippet(Geodatabase geodatabase)
{
// Create a CodedValueDomain description for water pipes
CodedValueDomainDescription codedValueDomainDescription = new CodedValueDomainDescription("WaterPipeTypes",
FieldType.String, new SortedList<object, string> { { "C_1", "Copper" }, { "S_2", "Steel" } })
{
SplitPolicy = SplitPolicy.Duplicate,
MergePolicy = MergePolicy.DefaultValue
};
SchemaBuilder schemaBuilder = new SchemaBuilder(geodatabase);
// Create a coded value domain
CodedValueDomainToken codedValueDomainToken = schemaBuilder.Create(codedValueDomainDescription);
schemaBuilder.Build();
}
}
{
// 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.Token
ArcGIS.Core.Data.DDL.CodedValueDomainToken
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)