Create Domain (Data Management)
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
| 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 | The description of the domain that will be created. | String | 
| field_type | 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
The following Python window script demonstrates how to use the CreateDomain function in immediate mode.
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.CreateDomain_management("montgomery.gdb", "Materials", "Valid pipe materials", "TEXT", "CODED")
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
# Author: ESRI
 
#Import system modules
import arcpy
from arcpy import env
 
try:
    # Set the workspace (to avoid having to type in the full path to the data every time)
    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, e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print "Line %i" % tb.tb_lineno
    print e.message