Utilisation de fonctions dans Python

Une fonction est un élément de fonctionnalité défini qui réalise une tâche spécifique et peut être intégré dans un programme plus important.

Dans ArcPy tous les outils de géotraitement sont fournis sous forme de fonctions, mais toutes les fonctions ne sont pas des outils de géotraitement. En plus des outils, ArcPy fournit plusieurs fonctions permettant une meilleure prise en charge des workflows de géotraitement Python. Les fonctions peuvent servir à répertorier certains jeux de données, à récupérer les propriétés d'un jeu de données, à valider un nom de table avant de l'ajouter à une géodatabase ou à effectuer de nombreuses autres tâches de géotraitement utiles. Ces fonctions sont uniquement disponibles à partir d'ArcPy et non comme outils dans les applications ArcGIS, puisqu'elles sont conçues pour les workflows Python.

La forme générale d'une fonction est semblable à celle d'un outil ; elle accepte des arguments pouvant être facultatifs et retourne un résultat. La valeur retournée d'une fonction ne correspondant pas à un outil peut prendre des formes variées allant des chaînes aux objets de géotraitement. Les fonctions d'outil retournent toujours un objet Result et fournissent une prise en charge des messages de géotraitement.

L'exemple suivant utilise deux fonctions ArcPy, GetParameterAsText pour recevoir un argument en entrée et Exists pour déterminer si l'entrée existe ou non. La fonction Exists renvoie une valeur booléenne (True ou False).

import arcpy

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

L'exemple suivant crée une liste Python de classes d'entités à l'aide de la fonction ListFeatureClasses, puis parcourt la liste avec une boucle, en découpant chaque classe d'entités individuelle avec une classe d'entités limites.


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)

Rubriques connexes