Überprüfen des Vorhandenseins der Daten
Verwenden Sie die Funktion Exists, um das Vorhandensein von Daten in einem Skript zu überprüfen.
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 des Vorhandenseins geographischer Daten 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 natürlich ordnungsgemäß verarbeitet. Sie können auch UNC-Pfade (Universal Naming Convention) verwenden.
import arcpy from arcpy import env 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")
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 from arcpy import env env.workspace = "Database Connections/Bluestar.sde" fc = "ORASPATIAL.Rivers" # Confirm that the feature class exists # if arcpy.Exists(fc): print "Verified %s exists" % 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" gesetzt wird (arcpy.env.overwriteOutput = True). Wenn Sie "overwriteOutput" auf "False" setzen und versuchen, Ausgaben zu überschreiben, tritt bei der Ausführung des Werkzeugs ein Fehler auf.