Verwenden der Umgebungseinstellungen „Aktueller Workspace“ und „Scratch-Workspace“
Fast alle Geoverarbeitungswerkzeuge verwenden als Eingabe Datasets und erstellen neue Datasets. Bei der Verwendung von Geoverarbeitungswerkzeugen sollten Sie die Eingabe langer Dataset-Namen vermeiden, wie:
E:\Data\D052753_a\infrastructure\BK16_c1\approved.gdb\roads\mjrst.
Die Eingabe eines solchen langen Dataset-Namens ist mühsam, langwierig und fehleranfällig. Daher ermöglicht die Geoverarbeitung das Ziehen von Datasets und Layern in ein Werkzeug-Dialogfeld. Verwenden Sie die Schaltfläche "Durchsuchen". um zu einem Dataset zu navigieren oder einen Layer aus einer Dropdown-Liste auszuwählen. Darüber hinaus wurden zwei Funktionen entwickelt, um die Angabe von Eingabe- und Ausgabe-Datasets viel einfacher zu gestalten: die Umgebungseinstellungen Aktueller Workspace und Scratch-Workspace.
Im Folgenden finden Sie die wichtigsten Punkte zu „Aktueller Workspace“ und „Scratch-Workspace“:
- Sie legen den „Aktuellen Workspace“ und den „Scratch-Workspace“ im Fenster Geoverarbeitungsumgebungen fest, auf das Sie durch Klicken auf Geoverarbeitung > Umgebungen zugreifen können.
- Die Einstellungen für den aktuellen und den Scratch-Workspace, z. B. alle Geoverarbeitungsumgebungen, werden zusammen mit Ihrem Kartendokument gespeichert.
- In ArcMap werden der aktuelle und der Scratch-Workspace automatisch auf die Standard-Geodatabase festgelegt. Sie können den aktuellen und den Scratch-Workspace jederzeit in eine andere Database als diese Geodatabase ändern.
- Wenn Sie ein Werkzeug-Dialogfeld verwenden oder ein Werkzeug in Python ausführen, können Sie den Basisnamen eines Datasets eingeben und das Werkzeug findet diesen Namen im aktuellen Workspace.
- Beim Verwenden des Werkzeug-Dialogfelds werden die Ausgabe-Dataset-Namen mithilfe der Einstellungen für den aktuellen und den Scratch-Workspace automatisch generiert.
Festlegen der Umgebungseinstellung für den aktuellen Workspace
- Klicken Sie in ArcMap auf Geoverarbeitung > Umgebung. Das Fenster Umgebungseinstellungen wird geöffnet.
-
Erweitern Sie die Kategorie Workspace und geben Sie den Pfad zum Workspace ein. In der Abbildung unten wird gezeigt, wie der aktuelle Workspace auf D:\ArcTutor\BuildingaGeodatabase\Montgomery.gdb\Landbase festgelegt wird. Der Workspace ist also ein Feature-Dataset innerhalb der Geodatabase.
Sie können den aktuellen Workspace auf einen Systemordner, eine Geodatabase oder ein Feature-Dataset innerhalb einer Geodatabase festlegen.
- Klicken Sie auf Fertig stellen.
Es gibt verschiedene Umgebungseinstellungen. Sie können Umgebungen für die Anwendung auf alle Werkzeuge, für die Ausführung eines Werkzeugs, für ein Modell, für einen Modellprozess oder für ein Skript einstellen.
Verwenden von Basisnamen
Der Vorteil des aktuellen und des Scratch-Workspaces besteht darin, dass ein Workspace nur einmal festgelegt werden muss und anschließend bei der Angabe von Eingabe- und Ausgabepfaden nur noch der Basisname erforderlich ist. Ein Dataset-Name besteht aus zwei Komponenten: dem Workspace- und dem Basisnamen, die ebenfalls nachfolgend darstellt sind.
Verwendungsbeispiele von Basisnamen
In der folgenden Abbildung wird eine Beispiel-Geodatabase dargestellt, die als aktueller Workspace verwendet wird. Der aktuelle Workspace ist festgelegt auf D:\BuildingaGeodatabase\Montgomery.gdb\Landbase.
Nachdem der Workspace festgelegt wurde, müssen Sie nur noch den Basisnamen eingeben, wenn der Dataset-Name benötigt wird. Das Beispiel unten zeigt die Verwendung des Werkzeugs Ausschneiden.
- Der Basisname (Blocks) wird mit dem aktuellen Workspace verbunden und bildet den Dataset-Namen (D:\BuildingaGeodatabase\Montgomery.gdb\Landbase\Blocks). Der Parameter Eingabe-Features wird dann durch den Dataset-Namen ersetzt.
- Es wird automatisch ein eindeutiger Ausgabe-Dataset-Name generiert. Der Basisname entspricht dem Eingabebasisnamen (Blocks), an den ein Unterstrich und der Name des Werkzeugs (in diesem Beispiel Ausschneiden) und gegebenenfalls eine Nummer angehängt wird, um sicherzustellen, dass der Name eindeutig ist.
- Wenn Sie den automatisch generierten Ausgabenamen nicht verwenden möchten, können Sie den automatisch generierten Namen löschen und einen Basisnamen eingeben, der zu einem Dataset-Namen erweitert wird, wie nachfolgend dargestellt.
Nach der Ausführung des Werkzeugs kann es sein, dass sich die Ausgabe nicht dort befindet, wo Sie sie erwartet haben – vielleicht haben Sie bei der Eingabe des Ausgabenamens einen Fehler gemacht, oder Sie haben einfach vergessen, wohin die Ausgabe geschrieben wurde. Öffnen Sie in diesem Fall das Fenster Ergebnisse, es enthält den Datensatz des ausgeführten Werkzeugs, zusammen mit den zugehörigen Eingabe- und Ausgabe-Datasets.
Sie können außerdem einen Basisnamen im Stapel-Raster verwenden, wie nachfolgend dargestellt.
Anzeigen des aktuellen Workspaces in einem Werkzeugdialogfeld
Wenn Sie den Zeiger über die Schaltfläche „Durchsuchen“ positionieren, wird der aktuelle Workspace angezeigt, wie nachfolgend dargestellt.
Wenn Sie auf die Schaltfläche „Durchsuchen“ klicken, öffnet sich im aktuellen Workspace das Dialogfeld „Durchsuchen“.
Aktueller Workspace und Basisname in der Skripterstellung
Im Fenster Python wird in der Umgebungseinstellung für den Workspace der aktuelle Workspace festgelegt. Nachdem der Workspace festgelegt wurde, können Sie den Basisnamen eines beliebigen Datasets im Workspace verwenden, wie nachfolgend dargestellt.
>> import arcpy >> arcpy.env.workspace = "c:/projects/RedRiverBasin/data.mdb" >> arcpy.Intersect_analysis("roads ; streams ", "stream_crossings", "#", 1.5, "point")
Das folgende Beispiel eines Python-Skripts veranschaulicht die Verwendung des Workspace-Befehls:
# Purpose: Determine the type of vegetation within 100 meters of all stream crossings # Import the ArcPy site-package import arcpy try: # Set the workspace (to avoid having to type in the full path to the data every time) arcpy.env.workspace = "c:/projects/RedRiverBasin/data.mdb" # Process: Find all stream crossings (points) arcpy.Intersect_analysis("roads ; streams ", "stream_crossings", "#", 1.5, "point") # Process: Buffer all stream crossings by 100 meters arcpy.Buffer_analysis("stream_crossings","stream_crossings_100m", "100 meters") # Process: Clip the vegetation feature class to stream_crossings_100m arcpy.Clip_analysis("vegetation", "stream_crossings_100m", "veg_within_100m_of_crossings") # Process: Summarize how much (area) of each type of vegetation is found within 100 meters of the stream crossings arcpy.Statistics_analysis("veg_within_100m_of_crossings", "veg_within_100m_of_crossings_stats","shape_area sum","veg_type") except: # If an error occurred while running a tool print the messages print arcpy.GetMessages()
Die Umgebungseinstellung für den Scratch-Workspace
Zusätzlich zum aktuellen Workspace ist eine Umgebungseinstellung für den Scratch-Workspace verfügbar. Es wird auf die Einstellung für den Scratch-Workspace zugegriffen und sie wird so festgelegt, dass Sie auf den aktuellen Workspaces zugreifen und ihn festlegen können.
Die Scratch-Workspace-Umgebung ist vor allem für die Verwendung durch ModelBuilder vorgesehen. ModelBuilder benötigt einen Workspace, um Zwischen-Datasets zu schreiben – Datasets, die nach dem Ausführen eines Modells nicht mehr benötigt werden. Er ist zwar vor allem für ModelBuilder vorgesehen, jedoch können Sie ihn auch für Werkzeug-Dialogfelder festlegen. Oder Sie haben den Scratch-Workspace für die Verwendung in ModelBuilder festgelegt und vergessen, ihn vor dem Ausführen eines Werkzeugs mithilfe des Dialogfelds zurückzusetzen.
Wenn Sie eine Scratch-Workspace-Umgebung festlegen, wird diese von allen Werkzeugen verwendet, um automatisch Ausgabe-Dataset-Namen anstelle des aktuellen Workspaces zu generieren, wie nachfolgend dargestellt.
Wenn Sie einen Basisnamen für eine Ausgabe eingeben, wird zur Bildung des Dataset-Namens nicht der Scratch-Workspace, sondern der aktuelle Workspace verwendet.
Jedes Mal, wenn ein Basisname verwendet wird, wird dieser mit dem aktuellen Workspace verbunden und nicht mit dem Scratch-Workspace. Dies ist beim Schreiben von Skripten zu berücksichtigen. Im folgenden Codeausschnitt wird das Ausgabe-Dataset "stream_crossings" in den aktuellen Workspace und nicht in den Scratch-Workspace geschrieben.
arcpy.env.workspace = "c:/projects/RedRiverBasin/data.mdb" arcpy.env.scratchWorkspace = "c:/projects/Scratch/scratch.gdb" arcpy.Intersect_analysis("roads ; streams ", "stream_crossings", "#", 1.5, "point")
Da der Scratch-Workspace für temporäre Daten bestimmt ist, sollte keine ArcSDE-Geodatabase dafür festgelegt werden. Es werden temporäre Scratch-Daten in eine Enterprise-Geodatabase geschrieben, was möglicherweise zu Performance-Einbußen führen kann. Es wird empfohlen, stets eine File-Geodatabase als Scratch-Workspace zu verwenden. Von der Verwendung einer Personal-Geodatabase oder eines Shapefile-Workspaces wird abgeraten.
Automatisch generierte Ausgabe-Dataset-Namen
Alle Werkzeuge erstellen automatisch einen Ausgabe-Dataset-Namen. Beim Generieren des Ausgabenamens gelten folgende Regeln:
- Wenn die Scratch-Workspace-Umgebung festgelegt ist, wird der automatisch generierte Ausgabepfad der Scratch-Workspace sein.
- Wenn die Scratch-Workspace-Umgebung nicht festgelegt ist, wird die aktuelle Workspace-Umgebung überprüft. Wenn die aktuelle Workspace-Umgebung festgelegt ist, wird die automatisch generierte Ausgabe der aktuelle Workspace sein.
- Wenn weder der Scratch- noch der aktuelle Workspace festgelegt sind, wird der automatisch generierte Ausgabepfad der Workspace eines der Eingaben sein. In diesem Fall gelten bestimmte Einschränkungen. Wenn es sich beispielsweise bei dem Workspace um einen Coverage-Workspace handelt und die Ausgabe eine neue Feature-Class ist, erfolgt die Ausgabe als Shapefile in das Verzeichnis über dem Coverage-Workspace. Ferner gelten weitere Einschränkungen, beispielsweise für den Schreibzugriff. In bestimmten Fällen wird die Ausgabe in das temporäre Verzeichnis des Systems geschrieben.
- Wenn Sie einen Basisnamen für das Ausgabe-Dataset eingeben, wird zur Bildung des Ausgabe-Pfads der aktuelle Workspace verwendet, unabhängig davon, ob der Scratch-Workspace festgelegt ist.