Esri: PREGUNTAS FRECUENTES: ¿Cómo puedo encontrar todos los lugares en los que se hace referencia a dominios en mi geodatabase? . " Funciones de Python que pueden listar las propiedades de estas estructuras en una geodatabase. Entre las propiedades se encuentran los dominios referenciados. Se proporciona un script de ejemplo y un archivo de geodatabase que demuestran cómo se pueden utilizar las funciones de Python para listar los dominios y otras propiedades de las clases y tablas de características. Los dominios pueden asociarse a campos de una clase de característica o tabla; además, pueden establecerse para campos categorizados por un subtipo."
Los resultados son ruidosos para esta pregunta, que va más allá de los dominios en uso, pero es una plataforma más amplia para empezar.
Executing: ParseDomainReferences [...]
fc at root level: Pt1
fld OBJECTID
fld SHAPE
fld Field_Text, domain [Pets]
fld Field_Long
fld Field_Short, domain [Counts]
fld Field_Double, domain [Ratios]
[...]
Subtype Code: 1
subCode: ('Default', False)
subCode: ('Name', u'One')
subCode: ('SubtypeField', u'Field_Long')
FieldValues
fldName: Field_Double, default: [no default], domain: Ratios
fldName: OBJECTID, default: [no default], domain: [no domain]
fldName: Field_Long, default: [no default], domain: [no domain]
fldName: Field_Short, default: 1, domain: Counts
fldName: SHAPE, default: [no default], domain: [no domain]
fldName: Field_Text, default: N, domain: [no domain]
[...etc]
Extracto del código, editado en aras de la brevedad:
def ParseFieldList (fc, fcPath):
...
for fld in fldList:
if fld.domain != None:
if fld.domain != "":
...
arcpy.AddMessage (" fld " + fld.name + s)
# get subtype list
subDict = arcpy.da.ListSubtypes (fcPath)
if len (subDict) > 0:
for stCode in subDict.iteritems():
...
valkey, vallist = stCode
arcpy.AddMessage ("Subtype Code: {0}".format(valkey))
i = 0
for subCode in vallist.iteritems():
i += 1
if i < 4:
arcpy.AddMessage ("subCode: {0}".format(subCode))
else:
fldkey, fldlist = subCode
arcpy.AddMessage (fldkey)
for fld in fldlist.iteritems():
...
if dom != None:
s2 = dom.name
arcpy.AddMessage ("fldName: " + fldName + ", default: " + s1 + ", domain: " + s2)
...