A camada na memória arcpy.MakeFeatureLayer ainda existe quando a etapa subsequente falha durante o teste

9

Quando eu usava o arcgisscripting para criar uma camada de saída na memória com gp.makefeaturelayer, eu o colocava em um bloco try / except e excluía o objeto gp na peça exceto quando o makefeaturelayer falhava. Agora, quando estou usando o arcpy, parece que preciso fechar a janela inativa e abrir novamente para que a camada de saída na memória seja excluída.

Como eu poderia excluir a camada de saída da minha ferramenta makefeaturelayer em um bloco try / except? Obrigado.

Justin
fonte
Uma camada de recurso é uma representação leve de uma classe de recurso. Existe um motivo específico para que ele seja excluído?
blah238
quando estou criando uma camada de recurso na memória e depois a próxima etapa falha .. Eu faço um ajuste e execute novamente o script em modo inativo, mas recebo uma "camada de recurso" que já existe, então preciso fechar o modo inativo e reiniciar .. leva tempo extra.
Justin
A opção Criar camada de recurso não cria nenhum dado, apenas uma visualização de alguns dados existentes. Talvez você esteja criando uma classe de recurso na memória? Nesse caso, eu usaria a sugestão de Dan para substituir a classe de recurso na memória. Também seria uma boa idéia excluir a classe de recurso de memória quando você não precisar mais dela, porque ela continuará ocupando memória até o aplicativo sair.
blah238
Consulte Trabalhando com camadas e visualizações de tabela na ajuda para obter uma explicação melhor do que é uma camada de recurso.
blah238

Respostas:

8

Incluindo

arcpy.env.overwriteOutput = True

dentro do seu script substituirá qualquer versão anterior de um arquivo sem precisar excluir as versões "ruins".

Andy
fonte
2
deveria serarcpy.env.overwriteOutput = True
Josh Werts
7

A exclusão da camada de recurso no bloco de código de exceção não funcionará. Se você estiver no bloco de códigos de exceção, a camada do recurso não foi criada.

Eu recomendo adicionar um bloco de código finalmente que será executado se o bloco try for bem-sucedido ou não. Se você fizer isso, verifique se a camada de recursos existe antes de excluí-la.

try:
    arcpy.MakeFeatureLayer_management(inFeatureClass, "outFeatureLayer", {whereClause})
except:
    print arcpy.GetMessages()
finally:
    if arcpy.Exists("outFeatureLayer"):
        arcpy.Delete_management("outFeatureLayer")
Roy
fonte