Verwenden von Funktionen in Python

Eine Funktion ist eine definierte Funktionseinheit, die einen bestimmten Task ausführt und in ein größeres Programm integriert werden kann.

In ArcPy werden alle Geoverarbeitungswerkzeuge als Funktionen bereitgestellt, aber nicht alle Funktionen sind Geoverarbeitungswerkzeuge. Zusätzlich zu Werkzeugen stellt ArcPy eine Reihe von Funktionen bereit, um Geoverarbeitungsworkflows mit Python besser zu unterstützen. Funktionen können verwendet werden, um spezifische Datasets aufzulisten, die Eigenschaften eines Datasets abzurufen oder einen Tabellennamen zu überprüfen, bevor er einer Geodatabase hinzugefügt wird. Sie gestatten zudem die Ausführung einer Vielzahl weiterer hilfreicher Geoverarbeitungs-Tasks. Diese Funktionen stehen nur in ArcPy zur Verfügung und nicht als Werkzeuge in ArcGIS-Anwendungen, da sie ausschließlich für Python-Workflows gedacht sind.

Die allgemeine Form einer Funktion ist der von Werkzeugen ähnlich; sie übernimmt Argumente, die unbedingt erforderlich sind oder auch nicht, und gibt etwas zurück. Der zurückgegebene Wert einer Nicht-Werkzeug-Funktion kann unterschiedlich sein, von Zeichenfolgen bis hin zu Geoverarbeitungsobjekten. Werkzeugfunktionen geben immer ein Ergebnisobjekt zurück und unterstützen Geoverarbeitungsmeldungen.

Im folgenden Beispiel werden zwei ArcPy-Funktionen verwendet, GetParameterAsText, um ein Eingabeargument zu empfangen, und Exists, um zu bestimmen, ob die Eingabe vorhanden ist oder nicht. Die Funktion "Exists" gibt einen booleschen Wert (entweder True oder False) zurück.

import arcpy

input = arcpy.GetParameterAsText(0)
if arcpy.Exists(input):
    print "Data exists"
else: 
    print "Data does not exist"

Im folgenden Beispiel wird mit der Funktion ListFeatureClasses eine Python-Liste mit Feature-Classes erstellt. Diese Liste wird dann in einer Schleife durchlaufen, und jede einzelne Feature-Class wird mit einer Boundary-Feature-Class ausgeschnitten.

import arcpy
from arcpy import env
import os

# The workspace environment needs to be set before ListFeatureClasses
#    to identify which workspace the list will be based on
#   
env.workspace = "c:/data"
out_workspace = "c:/data/results/"
clip_features = "c:/data/testarea/boundary.shp"

# Loop through a list of feature classes in the workspace
#
for fc in arcpy.ListFeatureClasses():
    # Set the output name to be the same as the input name, and 
    #    locate in the 'out_workspace' workspace
    #
    output = os.path.join(out_workspace, fc)

    # Clip each input feature class in the list
    #
    arcpy.Clip_analysis(fc, clip_features, output, 0.1)

Verwandte Themen

9/11/2013