Création de workflow à l'aide de la fenêtre Python

La fenêtre Python permet d'exécuter, par le biais du site-package ArcPy, les centaines d'outils de géotraitement disponibles. Vous pouvez exécuter un seul outil ou plusieurs dans un ordre spécifique. Par ArcPy, la fenêtre Python permet également d'accéder à de nombreuses fonctions et classes prenant en charge des workflows Python plus complexes.

Parmi les fonctions prenant en charge les workflows Python, citons les méthodes permettant de répertorier certains types de données, de récupérer les propriétés d'un jeu de données, de valider un nom de table avant de l'ajouter à une géodatabase ou d'effectuer de nombreuses autres fonctions de script pratiques.

L'exemple de code suivant utilise la fonction ListFeatureClasses pour répertorier toutes les classes d'entités d'un espace de travail ; ensuite, il exécute l'outil GetCount pour imprimer le nombre d'entités de chaque classe d'entités répertoriée.

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

Vous pouvez utiliser des classes telles que références spatiales, appariements de champs et champs et index pour créer des objets qui pourront être utilisés par d'autres outils ou fonctions de géotraitement.

Par exemple, il serait fastidieux de spécifier précisément toutes les propriétés d'une référence spatiale dans Python. En revanche, si l'on utilise la classe SpatialReference, les propriétés d'un objet SpatialReference sont rapidement renseignées et l'objet peut être utilisé en tant qu'entrée pour un outil de géotraitement. Dans l'exemple de code suivant, un objet Référence spatiale est renseigné avec les propriétés de la projection conique équidistante nord-américaine issue d'un fichier de projection ; ensuite, l'objet est utilisé avec l'outil Créer une classe d'entités pour créer une classe d'entités avec cette référence spatiale.

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

Création de fonctions

Les fonctions sont de petits blocs de code qui effectuent une tâche spécifique et qui peuvent être intégrés à des workflows. Une fois que vous avez créé une fonction, vous pouvez l'utiliser de façon répétitive, ce qui vous évite d'avoir à réécrire indéfiniment les mêmes tâches.

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

Dans Python, les fonctions sont définies à l'aide du mot-clé def de Python, suivi du nom de la fonction et d'une liste de paramètres. La fonction ci-dessus, listFieldNames, est une fonction courte qui retourne une liste de noms de champ issue d'une table ou d'une classe d'entités. L'instruction return permet de faire renvoyer une valeur par la fonction.

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

Toutefois, si vous devez fréquemment créer des fonctions dans le cadre de votre travail, nous vous conseillons d'écrire un outil de script. Passer de l'écriture de segments de code courts, puis à celle de fonctions personnalisées, puis à celle d'outils de script de géotraitement constitue une évolution normale. Pour en savoir plus sur la création d'outils de script personnalisés.

5/10/2014