Erwarten Sie, dass ArcPy Dateien in der Geodatabase-Datei überschreibt?

13

Ich schreibe ein Python-Skript, habe ein mxd und sein Arbeitsbereich ist eine Geodatabase-Datei mit allen Dateien, die ich benötige. Das Problem beim Testen und Schreiben von Code ist, dass trotz des Befehls:

arcpy.env.overwriteOutput=True

Alle in der Geodatabase enthaltenen Dateien können nicht überschrieben werden. Gibt es eine Möglichkeit, dies zu umgehen?

Annalisa Minelli
quelle
Haben Sie in ArcMap unter "Geoverarbeitung> Geoverarbeitungsoptionen" die Option "Ausgaben von Geoverarbeitungsvorgängen überschreiben" aktiviert?
Baltok
Ja, habe ich. Hat aber nicht funktioniert.
Annalisa Minelli
3
Sind Ihnen Schemasperren für Ihre Daten bekannt? Dies kann auch ein Überschreiben verhindern. Datei- und persönliche Geodatabases reagieren besonders empfindlich darauf, denn wenn eine Feature-Class über eine Sperre verfügt, wird die gesamte Geodatabase gesperrt.
Baltok
2
Wenn Sie sagen, dass "alle in der Geodatabase enthaltenen Dateien nicht überschrieben werden können", bedeutet dies, dass das Skript fehlschlägt oder abgeschlossen wird, aber nicht die Feature-Classes überschreibt, die es sollte?
Chad Cooper
Versuchen Sie, Ihren Code von einer Python-IDE wie PyScripter aus auszuführen, und schließen Sie dann ArcMap.
Geogeek

Antworten:

16

Wenn ich mich richtig erinnere, gibt es bestimmte Situationen, in denen overwriteOutput nicht funktioniert. Verwenden Sie in diesem Fall den folgenden Code, bevor Sie neue Dateien schreiben:

if arcpy.Exists(fileInQuestion):
    arcpy.Delete_management(fileInQuestion)
Bluefoot
quelle
1

Stellen Sie sicher, dass die Datei-Geodatabase nicht komprimiert ist, dh schreibgeschützt.

user12711
quelle
0

Ich hatte auch dieses Problem und der Kommentar zu den Schemasperren hat wirklich geholfen. Wenn Sie einen MXD mit dieser Feature-Class haben, wird diese Feature-Class gesperrt, sodass sie nicht gelöscht werden kann. Wenn Sie nur den mxd beenden, der diese Feature-Class enthält, und denselben Überschreibcode ausführen, scheint dies zu funktionieren.

JJay
quelle