Verwenden Sie die Funktion Exists, um in einem Skript zu überprüfen, ob die Daten vorhanden sind.
Exists(dataset) | Führt eine Überprüfung durch, ob im aktuellen Workspace zum Zeitpunkt der Ausführung Feature-Classes, Tabellen, Datasets, Shapefiles, Workspaces, Layer und andere Dateien vorhanden sind. Die Funktion gibt einen booleschen Wert zurück, der angibt, ob das Element vorhanden ist. |
Beim Überprüfen, ob geographische Daten vorhanden sind, müssen Sie die Funktion Exists verwenden, da sie Katalogpfade erkennt. Bei einem Katalogpfad handelt es sich um einen Pfadnamen, der nur von ArcGIS erkannt wird. Beispiel: D:\Data\Final\Infrastructure.gdb\EastValley\powerlines verweist auf die Feature-Class powerlines im Feature-Dataset EastValley in der File-Geodatabase Infrastructure. Dies ist für das Windows-Betriebssystem kein gültiger Systempfad, weil Infrastructure.gdb (ein Ordner) keine Datei mit dem Namen Infrastructure enthält. Anders ausgedrückt: Windows ist über Feature-Datasets oder Feature-Classes nicht informiert, sodass Sie keine Python-Funktionen zum Überprüfen des Vorhandenseins, wie os.path.exists, verwenden können. In ArcGIS werden Katalogpfade ordnungsgemäß verarbeitet. Sie können auch UNC-Pfade (Universal Naming Convention) verwenden.
import arcpy
arcpy.env.workspace = "d:/St_Johns/data.gdb"
fc = "roads"
# Clip a roads feature class if it exists
#
if arcpy.Exists(fc):
arcpy.Clip_analysis(fc, "urban_area", "urban_roads")
Tipp:
Die Funktion Exists beachtet die Workspace-Umgebung der Geoverarbeitung. Es reicht also, nur den Basisnamen anzugeben.
Wenn sich die Daten in einer Enterprise-Geodatabase befinden, muss der Name vollständig qualifiziert sein. import arcpy
arcpy.env.workspace = "Database Connections/Bluestar.sde"
fc = "ORASPATIAL.Rivers"
# Confirm that the feature class exists
#
if arcpy.Exists(fc):
print("Verified {} exists".format(fc))
Bei Skripten besteht das Standardverhalten für alle Werkzeuge darin, dass bereits vorhandene Ausgaben nicht überschrieben werden. Dieses Verhalten kann geändert werden, indem die Eigenschaft overwriteOutput auf True (arcpy.env.overwriteOutput = True) gesetzt wird. Wenn Sie overwriteOutput auf False setzen und versuchen, Ausgaben zu überschreiben, tritt bei der Ausführung des Werkzeugs ein Fehler auf.