Verwenden von Umgebungseinstellungen in Python
Jedes Werkzeug verfügt über mehrere Parameter, die zum Ausführen eines Vorgangs verwendet werden. Einige dieser Parameter sind bei allen Werkzeugen gleich, wie z. B. Toleranz oder Ausgabeverzeichnis. Die Standardwerte für diese Parameter können aus einer Umgebungseinstellung für die Geoverarbeitung abgerufen werden, auf die alle Werkzeuge bei der Ausführung zugreifen. Beim Ausführen eines Werkzeugs können die aktuellen Umgebungseinstellungen auch als globale Eingabeparameterwerte verwendet werden. Verschiedene Einstellungen, wie z. B. ein Interessensbereich, der Raumbezug des Ausgabe-Datasets oder die Zellengröße eines neuen Raster-Datasets, können in der Geoverarbeitungsumgebung angegeben werden.
Ein Skript kann auf verschiedene Weisen ausgeführt werden. Das Skript kann als Skriptwerkzeug in einer ArcGIS-Anwendung wie ArcMap ausgeführt werden. Es kann auch aus einem anderen Skript heraus oder eigenständig aus dem Python-Fenster heraus ausgeführt werden. Wenn ein Skript in einer ArcGIS-Anwendung innerhalb eines Werkzeugs oder aus einem anderen Geoverarbeitungsskript heraus ausgeführt wird, werden die Umgebungseinstellungen der aufrufenden Anwendung bzw. des Skriptes an das Skript übergeben. Diese Einstellungen dienen als Standardeinstellungen für das Skript des Werkzeugs, wenn dieses ausgeführt wird. Das aufgerufene Skript kann die übergebenen Einstellungen ändern. Diese Änderungen gelten jedoch ausschließlich innerhalb des Skriptes und für Werkzeuge, die von diesem Skript aufgerufen werden. Die Änderungen werden nicht an das aufrufende Skript bzw. die aufrufende Anwendung zurückgegeben. Das Umgebungsmodell lässt sich am besten als kaskadierend beschreiben, wobei Werte an jeden Prozess abwärts in der Aufrufhierarchie weitergereicht werden, der die Geoverarbeitungsumgebung verwendet.
Abrufen und Festlegen von Umgebungseinstellungen
Umgebungseinstellungen werden als Eigenschaften in der env-Klasse verfügbar gemacht. Über diese Eigenschaften können die aktuellen Werte abgerufen und festgelegt werden. Jede Umgebungseinstellung verfügt über einen Namen und eine Beschriftung. Die Beschriftungen werden im Dialogfeld Umgebungseinstellungen in ArcGIS angezeigt. Die Namen werden in Skripten oder an der Befehlszeile in ArcGIS-Anwendungen verwendet. Im Folgenden finden Sie einige Beispiel für die Verwendung von Werten der Umgebungseinstellungen:
Auf Umgebungen kann als Lese-/Schreibeigenschaften von der Umgebungsklasse aus zugegriffen werden, z. B. arcpy.env.<environmentName>. Statt jedem Umgebungsnamen arcpy.env voranzustellen, können Sie den Code alternativ durch das Nutzen der Python-Anweisung from-import vereinfachen. Diese Alternative hat den Vorteil, dass der Code vereinfacht wird und besser lesbar ist.
import arcpy |
|
from arcpy import env |
|
Beispiel 1: Festlegen von Werten für Umgebungseinstellungen
import arcpy
from arcpy import env
# Set the workspace environment setting
#
env.workspace = "c:/St_Johns/data.gdb"
# Set the XYTolerance environment setting
#
env.XYTolerance = 2.5
# Calculate the default spatial grid index, divide in half, then
# set the spatial grid 1 environment setting
#
result = arcpy.CalculateDefaultGridIndex_management("roads")
env.spatialGrid1 = float(result.getOutput(0)) / 2
# Clip the roads by the urban area feature class
#
arcpy.Clip_analysis("roads","urban_area","urban_roads")
Beispiel 2: Abrufen und Festlegen eines Wertes für eine Umgebungseinstellung
import arcpy
from arcpy import env
# Check the current raster cell size and make sure it is a certain size
# for standard output
#
env.workspace = "c:/avalon/data"
if env.cellSize < 10:
env.cellSize = 10
elif env.cellSize > 20:
env.cellSize = 20
arcpy.HillShade_3d("island_dem", "island_shade", 300)
Beachten Sie beim Festlegen von Umgebungswerten die Rechtschreibung und die Groß-/Kleinschreibung. Wenn Sie arcpy.env.Workspace einen Wert zuweisen, ist das nicht dasselbe wie arcpy.env.workspace (Hinweis: arcpy.env.workspace ist das richtige Format). Wenn Sie auf den Fall stoßen, dass Sie eine Umgebung festgelegt haben, aber die Auswirkung in nachfolgenden Werkzeugen nicht sehen, überprüfen Sie die Schreibweise und die Groß-/Kleinschreibung.
Die Funktion "ListEnvironments" kann verwendet werden, um richtige Umgebungsnamen zu überprüfen.
import arcpy
print arcpy.ListEnvironments()
Verwenden von Umgebungseinstellungen zur Handhabung von Scratch-Daten
scratchGDB und scratchFolder sind schreibgeschützte Umgebungen, die eine Geodatabase und einen Ordner an einem Speicherort bereitstellen, der mit Sicherheit vorhanden ist. Das bedeutet, dass Sie zu jedem Zeitpunkt eine Geodatabase oder einen Ordner verwenden können, ohne diese bzw. diesen erstellen oder verwalten zu müssen.
import arcpy
inputFC = arcpy.GetParameterAsText(0)
clipFC = arcpy.GetParameterAsText(1)
outputFC = arcpy.GetParameterAsText(2)
# Use scratchGDB environment to write intermediate data
#
tempData = arcpy.CreateScratchName(workspace=arcpy.env.scratchGDB)
bufferResult = arcpy.Buffer_analysis(inputFC, tempData, "50 METERS")
arcpy.Clip_analysis(clipFC, bufferResult, outputFC)
Vorgehensweise zum Festlegen der scratchFolder-Umgebung:
- Wenn scratchWorkspace nicht festgelegt wurde, wird scratchFolder standardmäßig im Verzeichnis für temporäre Dateien des aktuellen Benutzers festgelegt.
- Wenn scratchWorkspace auf eine Geodatabase verweist, ist scratchFolder der Ordner, der die Geodatabase enthält.
- Wenn scratchWorkspace auf einen Ordner festgelegt ist, stimmt scratchFolder mit scratchWorkspace überein.
Vorgehensweise zum Festlegen der scratchFolder-Umgebung:
- Wenn scratchWorkspace nicht festgelegt wurde, wird scratchGDB standardmäßig auf eine GDB mit der Bezeichnung scratch.gdb im Verzeichnis für temporäre Dateien des aktuellen Benutzers festgelegt.
- Wenn scratchWorkspace auf eine GDB verweist, stimmt scratchGDB mit scratchWorkspace überein.
- Wenn scratchWorkspace auf einen Ordner festgelegt ist, wird scratchGDB auf eine Geodatabase mit dem Namen scratch.gdb im Ordner scratchWorkspace festgelegt.
Zurücksetzen von Umgebungen
Da sich Geoverarbeitungsumgebungen erheblich auf den Umgang mit und die Ausgabe von Werkzeugen auswirken können, ist es wichtig, dass Umgebungseinstellungen nachverfolgt und Umgebungen auf die Standardeinstellung zurückgesetzt werden können, wenn dies erforderlich ist.
Die Funktion ResetEnvironments kann verwendet werden, um die Standardumgebungswerte wiederherzustellen. Mit der Funktion ClearEnvironment kann eine bestimmte Umgebung zurückgesetzt werden.
# Reset geoprocessing environment settings
arcpy.ResetEnvironments()
# Reset a specific environment setting
arcpy.ClearEnvironment("workspace")