Podrías hacerlo con Python, pero si no estás familiarizado con Arcpy, es un simple cálculo de campo. Añade un nuevo campo de texto y utiliza esto en la calculadora de campo.
BLOQUE DE CÓDIGO:
def domain(field):
if field == 1: return "Integrated Registered Survey Plan"
elif field == 2: return "Survey Plan"
elif field == 3: return "Geo-Referenced Air Photography"
elif field == 4: return "Government Provided"
elif field == 5: return "Expert Knowledge"
else: return "Unknown"
EXPRESIÓN:
domain(<reference to field containing domain values>)
A posteriori, es más fácil utilizar la calculadora de campo que andar con diccionarios y cursores. Si tuvieras que codificar una gran cantidad de valores de dominio, entonces valdría la pena volcar los datos en un archivo .txt y crear tu diccionario a partir de él.
Sólo he probado esto en un shapefile, pero también debería funcionar en un GDB. Este script toma una capa de características, una lista de campos y un archivo de texto como entrada y crea nuevos campos para poblar sus valores de dominio.
import arcpy
shpin = arcpy.GetParameterAsText(0) #Input shapefile.
#String of field(s) to loop over, split into list.
fields = arcpy.GetParameterAsText(1).split(";")
#The text file containing comma separated find/replace values.
textfile = arcpy.GetParameterAsText(2)
values = [str(row[i]) for row in arcpy.da.SearchCursor(shpin, fields)
for i,field in enumerate(fields)]
repfind = dict([line.rstrip().split(",") for line in open(textfile, "r")])
replaced = [repfind.get(x,x) for x in values] #Use .get method to mimic find/replace.
rep_list = zip(*[iter(replaced)]*len(fields)) #Convert to list of lists.
#Add new fields, with name based on old field name with appended underscore.
[arcpy.AddField_management(shpin, "{0}_".format(field), "Text") for field in fields]
newfields = ["{0}_".format(field) for field in fields]
with arcpy.da.UpdateCursor(shpin, newfields) as rowout:
for x, row in enumerate(rowout):
for y, field in enumerate(fields):
row[y] = rep_list[x][y]
rowout.updateRow(row)