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 einem 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 Aufrufhierachie 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:

HinweisHinweis:

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

import arcpy

arcpy.env.workspace = "c:/data"
import arcpy
from arcpy import env

env.workspace = "c:/data"

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)
VorsichtVorsicht:

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 einen Fall stoßen, wo 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()

Speichern und Laden von Einstellungen

Eine automatische Übertragung von Einstellungen erfolgt nur, wenn ein Skript von einem Geoverarbeitungswerkzeug ausgeführt wird. Wenn ein Geoverarbeitungsskript ein anderes Geoverarbeitungsskript aufruft, werden die Umgebungseinstellungen nicht automatisch an das aufgerufene Skript übergeben, weil das erste Skript nicht überprüfen kann, ob das zweite Skript ArcPy verwendet.

Zur Übertragung von Umgebungseinstellungen zwischen Skripten und zur Speicherung zwischen Sitzungen können die Einstellungen in einer Datei gespeichert werden. ArcPy kann seine Umgebung dann durch das Laden einer Einstellungsdatei festlegen. Im ersten der folgenden Beispiele überträgt ein Skript seine Einstellungen an ein zweites Skript, indem es die Einstellungen in einer Datei speichert und den Dateinamen als Parameter an das zweite Skript übergibt. Im zweiten Beispiel wird eine Datei mit Umgebungseinstellungen geladen, deren Name als Skriptargument übergeben wurde.

Beispiel 1:

# Import ArcPy site-package
#
import arcpy
from arcpy import env
import os

# Set the raster environment settings and the workspace
#
env.cellSize = 25
env.mask = "D:/St_Johns/Landcover"
env.workspace = "D:/St_Johns"

# Save the environment settings
#
envfile = arcpy.SaveSettings("c:/St_Johns/settings")

# Call Python script and pass file name as argument
#
os.system('MyHillshade.py ' + envfile)

Beispiel 2:

# Import ArcPy site-package
#
import arcpy

# Get the input parameter value
#
envfile = arcpy.GetParameterAsText(0)

# Load the environment settings
#
arcpy.LoadSettings(envfile)

# Calculate hillshade
#
arcpy.Hillshade_3d("city_dem","city_shade",250)

Umgebungsvariablen können als Argumente von einem Modul an ein anderes übergeben werden. Das Speichern und Laden von Einstellungen bei der Ausführung mehrerer Module ist nicht effizient genug für den gemeinsamen Zugriff auf die Werte. Die Verwendung von Einstellungsdateien ist dann zu empfehlen, wenn Module nicht zusammen ausgeführt werden, wie im vorangegangenen Beispiel gezeigt.

Verwandte Themen


7/10/2012