Python et géotraitement

Python est le langage de script d'ArcGIS. ArcGIS inclut une API Python, ArcPy, qui vous donne accès à tous les outils de géotraitement, ainsi qu'à des fonctions de script et à des modules spécialisés, qui vous aident à automatiser les tâches SIG. Vous pouvez écrire des scripts qui font appel à ArcPy en synergie avec diverses fonctions apportées par des bibliothèques standard de Python et des bibliothèques tierces. Vous pouvez exécuter des scripts et commandes Python avec ArcGIS Notebooks, dans la fenêtre Python, par le biais d’outils de script, ou vous pouvez utiliser Python en dehors de ArcGIS Pro. Quel que soit le mode d’utilisation du langage Python, les commandes fonctionnent principalement de la même façon et utilisent les mêmes outils de géotraitement.

Voici un script de géotraitement simple qui utilise ArcPy.

import arcpy
roads = "c:/base/data.gdb/roads"
output = "c:/base/data.gdb/roads_Buffer"
# Run Buffer
arcpy.Buffer_analysis(roads, output, "100 Feet")

Définir les paramètres des outils

Chaque outil de géotraitement intègre un ensemble défini de paramètres qui lui fournissent les informations nécessaires à son exécution. Lorsqu'un outil est utilisé dans Python, ses valeurs de paramètres doivent être correctement définies pour pouvoir lancer l'outil lorsque le script est exécuté. Lorsqu'un ensemble valide de valeurs de paramètres est 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 "", un symbole dièse "#" ou un type None.

import arcpy
arcpy.AddField_management("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.AddField_management("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 résultant conserve des informations détaillées sur l'exécution des outils, y compris 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 indiquent 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.CopyFeatures_management("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, vous pouvez définir la sortie sur "#" ou None. Si la sortie correspond au dernier argument utilisé, ignorez-la entièrement. 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.CopyFeatures_management("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