Tenho algumas dezenas de classes de recursos, uma das quais contém o campo que estou procurando. Eles são armazenados em vários bancos de dados geográficos de arquivos diferentes.
Existe uma maneira rápida de pesquisar cada classe de recurso para encontrar a que possui meu campo? Ou tenho que verificar a tabela de atributos de cada um no Catálogo? Alguns dos arquivos têm o mesmo nome, mas são armazenados em locais separados.
Gostaria de poder fazer isso dentro de uma Calculate Value
ferramenta no ModelBuilder, para que, sempre que necessário, pudesse executar o modelo em um único arquivo gdb e ele pesquisasse todas as classes de recursos desse gdb e procurasse o campo .
Até agora, eu tenho um iterador de classe de recurso que itera sobre todas as classes de recurso no arquivo gdb recursivamente. Dentro do Calculate Value
eu tenho o seguinte 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"
Os valores retornados são coletados em Output Values
como seqüências de caracteres. A saída para todas as classes de recursos foi "não encontrada", mesmo que o campo exista em pelo menos 4 delas.
Calculate Value
para pesquisar o campo e retornar o caminho da classe feature como uma string, se encontrar o campo - veja minha resposta abaixo.