Tengo unas pocas docenas de clases de entidad, una de las cuales contiene el campo que estoy buscando. Se almacenan en varias geodatabases de archivos diferentes.
¿Hay una forma rápida de buscar en cada clase de entidad para encontrar la que tiene mi campo? ¿O tengo que verificar la tabla de atributos de cada uno en el Catálogo? Algunos de los archivos tienen los mismos nombres pero se almacenan en ubicaciones separadas.
Me gustaría poder hacer esto dentro de una Calculate Value
herramienta en ModelBuilder, para que cada vez que lo necesitara, pudiera ejecutar el modelo en un solo archivo gdb y buscaría en todas las clases de entidad dentro de ese gdb y buscar el campo .
Hasta ahora, tengo un iterador de clase de entidad que itera sobre todas las clases de entidad en el archivo gdb de forma recursiva. Dentro del Calculate Value
tengo el siguiente código:
findField(r"%Feature%", "%Search Field%")
def findField(fc, fi):
lst = arcpy.ListFields(fc)
for f in lst:
if f.name == fi:
return fc
else:
return "not found"
Los valores devueltos se recopilan Output Values
como cadenas. La salida para todas las clases de entidad no se ha encontrado, aunque el campo exista en al menos 4 de ellas.
Calculate Value
para buscar el campo y devolver la ruta de la clase de entidad como una cadena si encuentra el campo; vea mi respuesta a continuación.