Una función es una funcionalidad definida que realiza una tarea específica y se puede incorporar a un programa más amplio.
En ArcPy, todas las herramientas de geoprocesamiento se proporcionan como funciones, pero no todas las funciones son herramientas de geoprocesamiento. Además de herramientas, ArcPy proporciona diversas funciones para brindar mayor soporte a los flujos de trabajo de geoprocesamiento que utilizan Python. Las funciones se pueden utilizar para enumerar ciertos datasets, recuperar las propiedades de un dataset, validar el nombre de una tabla antes de agregarlo a una geodatabase o realizar muchas otras tareas de geoprocesamiento útiles. Estas funciones solamente están disponibles desde ArcPy y no como herramientas en las aplicaciones de ArcGIS, ya que se diseñaron para los flujos de trabajo de Python.
La forma general de una función es similar a la de una herramienta: toma argumentos, que pueden o no ser requeridos, y devuelve algo. El valor devuelto por una función que no es una herramienta puede variar: desde cadenas de caracteres a objetos de geoprocesamiento. Las funciones de herramientas siempre devuelven un objeto Result y proporcionan soporte de mensajes de geoprocesamiento.
El siguiente ejemplo utiliza dos funciones de ArcPy, GetParameterAsText para recibir un argumento de entrada y Exists para determinar si la entrada existe o no. La función Exists devuelve un valor Booleano (ya sea True o False).
import arcpy
input = arcpy.GetParameterAsText(0)
if arcpy.Exists(input):
print("Data exists")
else:
print("Data does not exist")
El siguiente ejemplo crea una lista de clases de entidades con la función ListFeatureClasses y después incluye la lista en un bucle, recortando cada clase de entidad individual con una clase de entidad de límite.
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)