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 ermöglichen 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 ähnelt der Form von Werkzeugen: Sie übernimmt Argumente, die teilweise erforderlich sind, und gibt Werte zurück. Der zurückgegebene Wert einer Nicht-Werkzeug-Funktion kann unterschiedlich sein, von Zeichenfolgen bis hin zu Geoverarbeitungsobjekten. Werkzeugfunktionen geben immer ein Result-Objekt zurück und unterstützen Geoverarbeitungsmeldungen.
Im folgenden Beispiel werden zwei ArcPy-Funktionen verwendet, GetParameterAsText, um eine Eingabe als Argument zu empfangen, und Exists, um herauszufinden, ob diese 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
import os
# The workspace environment needs to be set before ListFeatureClasses
# to identify which workspace the list will be based on
#
arcpy.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)