Summary
Creates an attribute domain in the specified workspace.
Usage
Domain management involves the following steps:
- Create the domain using the this tool.
- Add values to or set the range of values for the domain using the Add Coded Value to Domain tool or Set Value For Range Domain tool.
- Associate the domain with a feature class using the Assign Domain To Field tool.
Coded value domains support only default value and duplicate split policies and default value merge policies.
Range domains support all split and merge policies. After a Split or Merge operation, the attribute values of output features are calculated based on the numeric values of the input features and the specified split or merge policy.
Workspace domains can also be managed in ArcCatalog or the Catalog window. Domains can be created and modified through the Domains tab on the Database Properties dialog box.
Syntax
CreateDomain(in_workspace, domain_name, {domain_description}, {field_type}, {domain_type}, {split_policy}, {merge_policy})
Parameter | Explanation | Data Type |
in_workspace | The geodatabase that will contain the new domain. | Workspace |
domain_name | The name of the domain that will be created. | String |
domain_description (Optional) | The description of the domain that will be created. | String |
field_type (Optional) | The type of attribute domain to create. Attribute domains are rules that describe the legal values of a field type. Specify a field type that matches the data type of the field to which the attribute domain will be assigned.
| String |
domain_type (Optional) | The domain type to create:
| String |
split_policy (Optional) | The split policy of the created domain. The behavior of an attribute's values when a feature that is split is controlled by its split policy.
| String |
merge_policy (Optional) | The merge policy of the created domain. When two features are merged into a single feature, merge policies control attribute values in the new feature.
| String |
Code sample
Create Domain Example (Python Window)
The following Python window script demonstrates how to use the CreateDomain function in immediate mode.
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.CreateDomain_management("montgomery.gdb", "Materials", "Valid pipe materials", "TEXT", "CODED")
Create Domain Example 2 (Stand-alone Script)
This stand-alone script utilized the CreateDomain function as part of a workflow to create an attribute domain, assign values to it, and assign the domain to a field in a feature class.
# Name: MakeDomain.py
# Description: Create an attribute domain to constrain pipe material values
#Import system modules
import arcpy
try:
# Set the workspace (to avoid having to type in the full path to the data every time)
arcpy.env.workspace = "C:/data"
# Set local parameters
domName = "Material4"
gdb = "montgomery.gdb"
inFeatures = "Montgomery.gdb/Water/Distribmains"
inField = "Material"
# Process: Create the coded value domain
arcpy.CreateDomain_management("montgomery.gdb", domName, "Valid pipe materials", "TEXT", "CODED")
#Store all the domain values in a dictionary with the domain code as the "key" and the
#domain description as the "value" (domDict[code])
domDict = {"CI":"Cast iron", "DI": "Ductile iron", "PVC": "PVC", \
"ACP": "Asbestos concrete", "COP": "Copper"}
# Process: Add valid material types to the domain
#use a for loop to cycle through all the domain codes in the dictionary
for code in domDict:
arcpy.AddCodedValueToDomain_management(gdb, domName, code, domDict[code])
# Process: Constrain the material value of distribution mains
arcpy.AssignDomainToField_management(inFeatures, inField, domName)
except Exception as err:
print(err.args[0])
Environments
Licensing information
- Basic: Yes
- Standard: Yes
- Advanced: Yes