Mais

Por que arcpy.ListFeatureClasses () demora tanto?


Estou tendo um problema ao ligar arcpy.ListFeatureClasses () em uma área de trabalho com 400 shapefiles leva muito tempo (mais de 10 minutos).

Usando oosmódulo para obter o mesmo efeito leva menos de um segundo:

import os allSingleNonRoadPolys = [] para o arquivo em os.listdir (r'D:  data  allSingleNonRoadPolys '): if file.endswith (". shp"): print (file) allSingleNonRoadPolys.append (file)

Você pode então obter o mesmo efeito queListFeatureClassessimplesmente adicionando o espaço de trabalho ao nome do arquivo, cada vez que você precisar usar um conjunto de dados, como visto aqui:

para shp em allSingleNonRoadPolys: arcpy.someTool (espaço de trabalho + '' + shp)

Por que eu continuaria usandoListFeatureClasses ()e o que faz demorar tanto? Faz algo incrivelmente útil que não possa ser alcançado de outra forma?


Tem certeza que éarcpy.ListFeatureClasses ()isso leva tanto tempo? Poderia ser alguma outra parte do código? Verifique com o criador de perfil apenas um os.time fictício, conforme mostrado aqui.

No disco SSD (2 anos, era muito usado diariamente), oarcpy.ListFeatureClasses ()retorna a lista de ~ 800 shapefiles encontrados na pasta especificada em menos de 5 segundos (recém-testado). O tamanho total da pasta é de aproximadamente 6 GB. Achei que, se você tivesse arquivos de forma grandes (mais de 100 MB cada e sua pasta de 40 GB), isso poderia ter retardado a execução. No entanto, o tempo de execução é o mesmo para uma pasta de ~ 40 GB com uma centena de shapefiles e o desempenho foi idêntico ao que observei com o maior número de shapefiles de tamanho menor.

Lembre-se de que você pode limitar sua pesquisa por nome, tipo de recurso e conjunto de dados de recurso opcional. Isso é útil se você não precisa listar todas as suas classes de recursos (shapefiles).

Por que eu continuaria usando ListFeatureClasses ()

Você precisaria usararcpy.ListFeatureClasses ()para trabalhar em qualquer espaço de trabalho Esri (como um arquivo ou um banco de dados geográfico multiusuário). Claro que você está livre para usar qualquer outro método para listar seus shapefiles (já que este é um formato de arquivo aberto para interagir), mas você precisará voltar a esta função quando trabalhar com qualquer coisa armazenada em um repositório Esri mais tarde.


Assista o vídeo: Dreambox 900 API Youtube (Outubro 2021).