Meu escritório verá uma grande mudança na seção GIS. Esta seção está operacional desde os anos 80 e possui uma enorme coleção de dados GIS (por exemplo, arquivos de forma, arquivos raster, dados etc.), mas nunca passou por nenhum inventário. Agora isso vai acontecer.
Existe alguma maneira automatizada de extrair todas as informações sobre os dados GIS (como shapefile, cobertura de informações de arco, arquivo de camada, * .mxd, gdb, arquivo raster e mais) de um PC para um arquivo do Excel? As informações podem incluir data de criação, data da última edição, nome da pasta ou do contêiner, etc.
arcpy
file-geodatabase
excel
metadata
blu_sr
fonte
fonte
arcpy.da.walk
.Respostas:
Isso funciona para mim, usando a
arcpy.da.Walk
função no ArcGIS 10.1 SP1:O
csv
módulo também é usado para simplificar a gravação do arquivo de saída. O Excel pode abrir arquivos CSV para que você possa visualizá-los como planilhas.Consulte a
arcpy.Describe
função para obter propriedades adicionais que você pode incluir na saída.Se você estiver procurando analisar especificamente as informações dos metadados reais , consulte o script nesta resposta: Criando uma tabela contendo todos os nomes de arquivos (e possivelmente metadados) em um banco de dados geográfico de arquivos
fonte
Ao usar o Python, você deve usar os módulos corretos para fazer o que deseja. Para encontrar todos os arquivos em um diretório com extensão shp, por exemplo, existem soluções muito mais simples que foram apresentadas sem interrupção, o que é horrível ... (como a solução apresentada por Nathan W, mas há muitas, muitas outras, apenas pesquisa na Internet)
Alguns exemplos com módulos relevantes:
1) com o módulo glob:
apenas shapefiles:
shapefiles e geodatabases:
se você deseja procurar também nos subdiretórios:
2) com os.listdir e compreensão da lista (em duas linhas) -> lista de resultados
3) com módulo fnmatch:
e muitas outras soluções, recursivas etc.
fonte
Obrigado artwork21 e Nathan W pela sua resposta. E sim, o código de Nathen fez a mágica.
Apenas nome do arquivo e localização. O PC com o qual trabalharei tem muita cobertura (o arquivo de informações do arco), também funcionará?
fonte
arcpy.da.walk
listará as coberturas, mas acho que não, pois não está listado nos filtros dataType ou type.if
declaração.txt.close()
se estiver usando,with
porque ele fará isso quando o bloco sair.Se você possui o ArcGIS Desktop 10.0 (ou qualquer um de seus service packs), acho que sua melhor aposta é escrever um script python que use os.walk para procurar um diretório GIS definido e procurar extensões de arquivo GIS comuns, como .shp,. gdb, .mdb, etc ... e grava o resultado em um arquivo de texto delimitado por vírgula. Você pode trazer o arquivo de texto para o Excel, veja o exemplo de código abaixo:
Se você estiver usando o ArcGIS 10.1 (ou posterior) para Desktop, há outra resposta aqui que usa o arcpy.da.Walk que não estava disponível na versão 10.0 ou anterior.
fonte
csv
módulo para abstrair um pouco a gravação do arquivo e o usoarcpy.da.walk
no 10.1 SP1 para permitir que o ArcGIS identifique os tipos de dados GIS.Se você deseja evitar a programação, esse pode ser o método mais fácil e rápido.
Há um complemento para o Excel chamado Utilitários ASAP . Há uma avaliação gratuita de 90 dias, mas depois disso, custa US $ 49 para uso comercial. É gratuito para uso pessoal ou para estudantes. O complemento adiciona muitas funções úteis. Um deles é criar uma lista de arquivos em uma estrutura de pastas. Ele também fornece propriedades do arquivo. Você pode limitar os resultados por tipo de arquivo, se desejar.
Aqui está um vídeo de como fazer isso.
Eu usei esse complemento antes e os resultados são muito rápidos.
Observe que não sou afiliado a esta empresa de software.
fonte
Não consegui que as outras respostas funcionassem completamente.
No primeiro exemplo, em um diretório com geodatabases e shapefiles, apenas obtive uma lista das classes de recursos no geodatabase, mas quando comentei a parte do script de geodatabases, obtive uma lista de shapefiles.
No segundo exemplo, a parte dos bancos de dados geográficos não funcionou, então copiei na parte dos bancos de dados geográficos do primeiro exemplo. Mais uma vez, recebi uma lista apenas de geodatabases.
Então me ocorreu: os bancos de dados geográficos são lidos antes dos shapefiles, e o script para na parte
break
dos bancos de dados geográficos.Sendo um novato em python, não sei por que
break
é necessário, mas sem ele o script parece ter um loop infinito, mas, comobreak
é necessário, ocorreu-me que colocar os geodatabases em seu próprio loop, após o outro arquivo tipos estão listados, resolveria o problema:#create blank text file with open("C:\\Temp\\GISlayers.txt", "w") as txt: for root, dirs, files in os.walk("C:\\Temp\\temp"): for f in files: #look for shapefiles, etc. [code...] for f in files: #look for geodatabases [code...]
Quando fiz isso, recebi minha lista completa.
fonte