Erstellen von Workflows mit dem Python-Fenster

Das Python-Fenster unterstützt die Ausführung von Hunderten von Geoverarbeitungswerkzeugen über das ArcPy-Site-Paket. Sie können ein einzelnes Werkzeug oder mehrere Werkzeuge in einer bestimmten Reihenfolge ausführen. Das Python-Fenster bietet über ArcPy auch Zugriff auf viele Funktionen und Klassen, die komplexere Python-Workflows unterstützen.

Zu den Funktionen, die Python-Workflows unterstützen, sind Verfahren wie das Erstellen von Listen mit bestimmten Datentypen, Abrufen der Eigenschaften eines Datasets, Überprüfen eines Tabellennamens vor dem Hinzufügen zu einer Geodatabase oder das Ausführen einer anderen nützlichen Skriptfunktion.

Im folgenden Codebeispiel wird die Funktion ListFeatureClasses verwendet, um eine Liste aller Feature-Classes in einem Workspace zu generieren. Anschließend wird das Werkzeug GetCount verwendet, um die Anzahl der Features für die einzelnen Feature-Classes in der Liste zu drucken.

>>> arcpy.env.workspace = "c:/data"
>>> for fc in arcpy.ListFeatureClasses():
...     print fc, arcpy.GetCount_management(fc)

Mithilfe von Klassen vom Typ Raumbezüge, Feldzuordnungen und Felder und Indizes können Sie Objekte erstellen, die mit anderen Geoverarbeitungswerkzeugen oder Funktionen verwendet werden können.

Es ist z. B. zeitaufwändig und unpraktisch, alle ausführlichen Eigenschaften eines Raumbezugs in Python anzugeben. Indem Sie die Klasse SpatialReference verwenden, können Sie die Eigenschaften eines SpatialReference-Objekts schnell vervollständigen und das Objekt als Eingabe für ein Geoverarbeitungswerkzeug verwenden. Im folgenden Codebeispiel wird ein SpatialReference-Objekt mit Eigenschaften der äquidistanten Kegelprojektion für Nordamerika gefüllt. Anschließend wird das Objekt mit dem Werkzeug CreateFeatureClass verwendet, um eine neue Feature-Class mit dem angegebenen Raumbezug zu erstellen.

import arcpy
inputWorkspace = "c:/temp"
outputName =  "rivers.shp"
spatialRef = arcpy.SpatialReference("c:/data/North America Equidistant Conic.prj")
arcpy.CreateFeatureClass_management(inputWorkspace, outputName, "POLYLINE", "", "", "", spatialRef)

Erstellen von Funktionen

Funktionen sind kleine Codeblöcke, die einen bestimmten Task ausführen und die in komplexere Workflows integriert werden können. Nachdem Sie eine Funktion erstellt haben, können Sie sie immer wieder verwenden. So sparen Sie sich den Aufwand, der beim Schreiben der immer gleichen Tasks anfallen würde.

def listFieldNames(table, wildcard=None, fieldtype=None):
    fields = arcpy.ListFields(table, wildcard, fieldtype)
    nameList = []
    for field in fields:
        nameList.append(field.name)
    return nameList

In Python werden Funktionen mit dem Python-Schlüsselwort def, gefolgt vom Funktionsnamen und einer Liste der Parameter, definiert. Die obige Funktion, listFieldNames, ist eine kurze Funktion, die aus einer Tabelle oder Feature-Class eine Liste der Feldnamen zurückgibt. Die return-Anweisung wird verwendet, um einen Wert aus der Funktion zurückzugeben.

>>> fieldNames = listFieldNames("c:/data/water.gdb/water_pipes")

Falls Sie jedoch regelmäßig Funktionen erstellen müssen, sollten Sie das Schreiben eines Skriptwerkzeugs in Betracht ziehen. Der Übergang vom Schreiben kurzer Codeausschnitte zum Schreiben eigener Funktionen und zum Schreiben von Skriptwerkzeugen für die Geoverarbeitung ist ein natürlicher Prozess. Weitere Informationen zum Erstellen eigener Skriptwerkzeuge.


7/10/2012