Python et géotraitement

Python est le langage de script d’ArcGIS. ArcGIS inclut une API Python, ArcPy, qui donne accès à tous les outils de géotraitement ainsi qu’à des fonctions et des classes supplémentaires et à des modules spécialisés qui vous aident à automatiser les tâches SIG. Vous pouvez écrire des scripts qui font appel à ArcPy en conjonction avec diverses fonctions fournies par des bibliothèques Python standard et de tiers. Vous pouvez exécuter des commandes et des scripts Python avec ArcGIS Notebooks, dans la fenêtre Python, par le biais d’outils de script, ou vous pouvez exécuter Python en dehors de ArcGIS Pro. Quelle que soit la manière dont vous exécutez Python, les commandes fonctionnement fondamentalement de la même façon et utilisent les mêmes outils de géotraitement.

Vous trouverez ci-dessous un script de géotraitement simple utilisant ArcPy.

import arcpy

roads = "c:/base/data.gdb/roads"
output = "c:/base/data.gdb/roads_Buffer"

# Run Buffer
arcpy.analysis.Buffer(roads, output, "100 Feet")

Définir les paramètres des outils

Chaque outil de géotraitement présente un ensemble défini de paramètres qui lui fournissent les informations nécessaires à son exécution. Lorsqu’un outil est utilisé dans Python, les valeurs de ses paramètres doivent être correctement définies pour qu’il puisse s’exécuter lorsque le script est exécuté. Une fois qu’un ensemble valide de valeurs pour les paramètres a été spécifié, l’outil peut être exécuté. Les paramètres, pour la plupart, peuvent prendre la forme de chaînes. Il est possible de spécifier certains paramètres complexes sous la forme d’objets, plus faciles d’utilisation que des chaînes longues.

Les chaînes correspondent à un texte identifiant de façon unique une valeur de paramètre telle qu’un chemin vers un jeu de données ou un mot-clé. Dans l'exemple de code suivant, les paramètres en entrée et en sortie sont définis pour l'outil Zone tampon. Notez que l'alias de boîte à outils est ajouté au nom d'outil. Dans cet exemple, deux variables de chaîne servent à définir les paramètres en entrée et en sortie afin de faciliter la lecture de l’appel à l’outil.

La plupart des outils de géotraitement incluent à la fois des arguments facultatifs et obligatoires. Dans bien des cas, vous êtes dispensé de spécifier de nombreux arguments facultatifs. Vous pouvez gérer ces arguments non utilisés de différentes manières. Vous pouvez conserver l’ordre de tous les arguments facultatifs et indiquer ceux dont vous n’avez pas besoin par une chaîne vide "", le symbole dièse "#" ou le type None.

import arcpy
arcpy.management.AddField("schools", "school_id", "LONG", "", "", "", "", "NON_NULLABLE")
Vous pouvez également faire appel à des arguments de mots-clés et utiliser le nom de l'argument pour attribuer une valeur. L’utilisation des arguments de mots-clés vous permet d’ignorer les arguments facultatifs inutilisés ou de les spécifier dans un ordre différent.

import arcpy
arcpy.management.AddField("schools", "school_id", "LONG", field_is_nullable="NON_NULLABLE")

Sortie d'outil

ArcPy renvoie les valeurs en sortie d’un outil sous la forme d’un objet Result. L’objet Result conserve des informations détaillées sur l’exécution de l’outil, notamment les messages, les paramètres et les valeurs des jeux de données en sortie, ainsi que leur chemin d’accès. Ces résultats peuvent être conservés même après avoir exécuté plusieurs autres outils.

Les exemples suivants montrent comment obtenir la sortie à partir d’un objet Result après l’exécution d’un outil de géotraitement :

import arcpy

arcpy.env.workspace = "c:/city/data.gdb"

# Geoprocessing tools return a Result object 
result = arcpy.management.CopyFeatures("roads", "urban_roads")

# A print function will display the string representation of the output.
print(result)

# A Result object can be indexed to get the output value.
result_value = result[0]

Si la sortie que vous créez est simplement une étape intermédiaire d’un processus plus vaste, vous pouvez omettre l’argument en sortie pour laisser l’outil créer un chemin d’accès et un nom uniques pour la sortie. Pour ce faire, définissez la sortie sur "#" ou None, ou si la sortie correspond au dernier argument utilisé, ignorez-la dans son intégralité. Dans chaque cas, la valeur renvoyée est le chemin d'accès complet à la nouvelle source de données.

import arcpy
arcpy.env.workspace = "c:/city/data.gdb"

result = arcpy.management.CopyFeatures("roads", "#")

Créer un workflow de géotraitement

ArcPy propose plusieurs classes et fonctions utiles pour développer votre script de géotraitement au-delà de l’exécution séquentielle des outils. Les fonctions permettent de répertorier certains jeux de données pour procéder à des traitements par lots, de décrire un jeu de données pour lire ses propriétés par programmation ou d'exécuter de nombreuses autres tâches utiles de géotraitement.

En savoir plus sur la création de scripts de géotraitement avec des fonctions ArcPy