Eu tenho uma pasta com vários bancos de dados geográficos nela. Dentro dos bancos de dados geográficos existem classes de recursos. Gostaria de obter uma lista das classes de recursos nesses bancos de dados geográficos usando um script Python. Eu só cheguei ao ponto de listar os bancos de dados geográficos. Alguém tem uma sugestão para listar as classes de recurso nos geodatabases?
A linha do item de impressão no meu script fornece os seguintes resultados:
C:\output\data.gdb
C:\output\otherdata.gdb
C:\output\somethingelse.gdb
Quero gerar uma lista das classes de recursos nos geodatabases acima. Abaixo está o meu script até agora.
import arcpy, os, sys
from arcpy import env
arcpy.env.workspace = "D:\\output"
inWorkspace = arcpy.env.workspace
workspaces = arcpy.ListWorkspaces("*", "FileGDB")
for item in workspaces:
print item #This part gives me the print statements I shared above
# fcList = arcpy.ListFeatureClasses() #I haven't figured this part out
#I want to list the feature classes in the geodatabases
arcpy
arcgis-10.0
feature-class
workspace
Patty Jula
fonte
fonte
Respostas:
O truque que você está perdendo é tornar cada gdb o espaço de trabalho ativo antes de listar o conteúdo:
Observe também que isso perderá uma classe de recurso dentro dos conjuntos de dados de recursos, consulte Listando todas as classes de recursos no Geodatabase de Arquivos, inclusive nos conjuntos de dados de recursos? para resolver isso.
De maneira mais geral, se você usar
r
, não precisará dobrar a barra invertida (facilita a cópia e a colar da barra de endereços do Windows Explorer etc.): por exemplor'D:\output'
fonte
for wspace in workspaces:
efor fc in featureclasses:
.Este script irá lidar com quaisquer conjuntos de dados de recursos existentes (pelo menos em teoria - eu não testei). A mesma idéia geral, porém, se houver conjuntos de dados de recursos, você precisará definir seu diretório de trabalho para esse conjunto de dados antes de listar os recursos.
fonte
arcpy.env.workspace = gdb
como o ListWorkspaces retorna o caminho completo. ;-)