Esperando que o ArcPy substitua arquivos no arquivo geodatabase?


13

Estou escrevendo um script python, tenho um mxd e seu espaço de trabalho é um arquivo de geodatabase com todos os arquivos de que preciso. O problema que estou encontrando ao testar e escrever código é que, apesar do comando:

arcpy.env.overwriteOutput=True

todos os arquivos contidos no geodatabase falham em sobrescrever. Existe uma maneira de contornar isso?


No ArcMap, você verificou a opção "Substituir as saídas das operações de geoprocessamento" em Geoprocessamento> Opções de geoprocessamento?
Baltok

sim eu fiz. Mas não funcionou.
Annalisa Minelli

3
Você conhece algum bloqueio de esquema nos seus dados? Isso pode impedir a substituição também. Os bancos de dados geográficos e de arquivos pessoais são particularmente sensíveis a isso, porque se uma classe de recurso possui um bloqueio, ela bloqueia todo o geodatabase.
Baltok

2
Quando você diz que "todos os arquivos contidos no geodatabase falham em sobrescrever", você quer dizer que o script falhou ou foi concluído, mas simplesmente não substitui as classes de características que deveria?
Chad Cooper

tente executar seu código a partir de um IDE python como o PyScripter e feche o ArcMap.
Geogeek

Respostas:


16

Se bem me lembro, há certas situações em que overwriteOutput não funcionará. Nesse caso, use o seguinte código antes de escrever novos arquivos:

if arcpy.Exists(fileInQuestion):
    arcpy.Delete_management(fileInQuestion)

1

Verifique se o geodatabase do arquivo não está compactado, isto é, somente leitura.


0

Eu também estava tendo esse problema e o comentário sobre os bloqueios do esquema realmente ajudou. Se você possui um mxd com essa classe de recurso, ele bloqueia essa classe de recurso para que não possa ser excluído. Se você acabou de sair do mxd que contém essa classe de recurso e executar o mesmo código de substituição, ele parece funcionar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.