Vous vous attendez à ce qu'ArcPy écrase les fichiers dans le fichier de géodatabase?

13

J'écris un script python, j'ai un mxd et son espace de travail est un fichier de géodatabase avec tous les fichiers dont j'ai besoin. Le problème que je rencontre dans le test et l'écriture de code est que, malgré la commande:

arcpy.env.overwriteOutput=True

tous les fichiers contenus dans la géodatabase échouent. Il y a un moyen de contourner cela?

Annalisa Minelli
la source
Dans ArcMap, avez-vous coché la case "Remplacer les sorties des opérations de géotraitement" dans Géotraitement> Options de géotraitement?
Baltok
Oui je l'ai fait. Mais ça n'a pas marché.
Annalisa Minelli
3
Êtes-vous au courant de verrous de schéma sur vos données? Cela peut également empêcher l'écrasement. Les géodatabases fichier et personnelles y sont particulièrement sensibles, car si une classe d'entités possède un verrou, elle verrouille la géodatabase entière.
Baltok
2
Lorsque vous dites que "tous les fichiers contenus dans la géodatabase ne parviennent pas à être écrasés", voulez-vous dire que le script échoue ou qu'il se termine, mais ne remplace tout simplement pas les classes de fonctions qu'il devrait?
Chad Cooper
essayez d'exécuter votre code à partir d'un IDE python comme PyScripter, puis fermez ArcMap.
geogeek

Réponses:

16

Si je me souviens bien, il existe certaines situations pour lesquelles overwriteOutput ne fonctionnera pas. Dans ce cas, utilisez le code suivant avant d'écrire de nouveaux fichiers:

if arcpy.Exists(fileInQuestion):
    arcpy.Delete_management(fileInQuestion)
bluefoot
la source
1

Assurez-vous que la géodatabase fichier n'est pas compressée, c'est-à-dire en lecture seule.

user12711
la source
0

J'avais aussi ce problème et le commentaire sur les verrous de schéma a vraiment aidé. Si vous avez un mxd avec cette classe d'entités, il verrouille cette classe d'entités afin qu'il ne puisse pas être supprimé. Si vous venez de quitter le mxd qui contient cette classe d'entités et d'exécuter le même code d'écrasement, cela semble fonctionner.

JJay
la source