Essayer Python dans ArcGIS Pro
Configurer un projet et passer en revue les jeux de données
Avant de commencer à écrire du code Python, vous allez télécharger les jeux de données, créer un projet et passer en revue les jeux de données à utiliser.
- Téléchargez les données de ce didacticiel et extrayez le contenu vers le dossier de lecteur C:\.
Le fichier .zip contient un dossier nommé PythonStart.
Remarque :
Vous pouvez utiliser un autre nom de dossier, mais vous devrez alors utiliser ce dossier pour créer le projet lors des étapes qui suivent.
- Démarrez ArcGIS Pro. Si vous y êtes invité, connectez-vous via votre compte d’organisation ArcGIS sous licence.
Remarque :
Si vous n’avez pas accès à ArcGIS Pro ou ne disposez pas d’un compte d’organisation ArcGIS, consultez les options disponibles pour accéder aux logiciels.
- Sous New Project (Nouveau projet), cliquez sur Map (Carte).
- Dans la fenêtre New Project (Nouveau projet), pour Name (Nom), saisissez Prise en main de Python. Pour Location (Emplacement), accédez au dossier C:\PythonStart.
- Décochez la case Create a new folder for this local project (Créer un dossier pour ce projet local).
- Cliquez sur OK.
Le projet s’ouvre avec une carte vierge.
- Si la fenêtre Catalog (Catalogue) n’est pas déjà visible, cliquez sur l’onglet View (Vue) et sur Catalog Pane (Fenêtre Catalogue). Si nécessaire, ancrez la fenêtre Catalog (Catalogue) à droite de l’interface ArcGIS Pro.
- Dans la fenêtre Catalog (Catalogue), développez Folders (Dossiers), puis développez PythonStart.
Le dossier contient six fichiers de formes. Dans ce didacticiel, vous allez uniquement utiliser quelques jeux de données, mais le même code peut être employé avec un plus grand nombre de jeux de données.
Tout d’abord, vous allez déterminer manuellement le nombre d’entités pour une seule classe d’entités, puis exécuter un outil pour obtenir le même résultat. Dans le reste du didacticiel, vous utiliserez Python afin de déterminer le nombre d’entités pour tous les shapefiles.
- Cliquez avec le bouton droit sur le fichier ambulances.shp et sélectionnez Add To Current Map (Ajouter à la carte actuelle).
La carte applique un zoom avant sur Toronto, au Canada, où les points de la couche Ambulances se situent.
- Dans la fenêtre Contents (Contenu), cliquez avec le bouton droit sur la couche ambulances et sélectionnez Attribute table (Table attributaire).
La table attributaire s’affiche. Le nombre d’enregistrements est indiqué en bas de la table.
Le fichier de formes contient 48 enregistrements, autrement dit, il y a 48 entités uniques. Vous allez maintenant compter le même nombre avec un outil.
- Fermez la table attributaire.
Exécuter un outil avec Python
Vous allez à présent exécuter un outil de géotraitement dans ArcGIS Pro. Vous exécuterez ensuite ce même outil à l’aide d’un code Python.
- Sur le ruban, cliquez sur l’onglet Analysis (Analyse). Dans le groupe Geoprocessing (Géotraitement), cliquez sur Tools (Outils).
La fenêtre Geoprocessing (Géotraitement) s’affiche.
- Dans la barre de recherche de la fenêtre Geoprocessing (Géotraitement), saisissez count et appuyez sur Entrée.
- Cliquez sur l’outil Get Count (Compter).
- Dans la fenêtre de l’outil Compter, pour le paramètre Input Rows (Enregistrements en entrée), sélectionnez ambulances.
- Cliquez sur Run (Exécuter).
Au terme de l’exécution de l’outil, un message s’affiche au bas de la fenêtre.
- Cliquez sur Afficher les détails.
La fenêtre Get Count (Data Management Tools) (Compter (Outils de gestion des données)) apparaît avec l’onglet Messages ouvert.
Le message indique Row Count = 48 (Nombre de lignes = 48), autrement dit le nombre que vous avez déterminé manuellement en ouvrant la table attributaire. Vous pouvez répéter ces étapes afin d’effectuer le décompte de tous les fichiers de formes, mais cela se révèlerait chronophage si vous avez de nombreux jeux de données. Au lieu de cela, vous allez développer un script Python pour effectuer cette tâche.
- Fermez la fenêtre Get Count (Compter).
Vous allez maintenant utiliser Python pour exécuter le même outil.
- Sur le ruban, dans le groupe Geoprocessing (Géotraitement) de l’onglet Analysis (Analyse), cliquez sur History (Historique).
La fenêtre History (Historique) s’affiche avec une liste des outils qui ont été exécutés. L’unique entrée disponible correspond à l’outil Get Count (Compter) qui vient d’être exécuté.
- Dans l’onglet Analysis (Analyse), dans le groupe Geoprocessing (Géotraitement), cliquez sur le menu déroulant du bouton Python (Python) et sélectionnez Python Window (Fenêtre Python).
La fenêtre Python s’ouvre.
Remarque :
Vous pouvez déplacer ou ancrer la fenêtre Python (Python) à l’endroit de votre choix. Exemples d’image affichant la fenêtre ancrée sous la carte.
La partie supérieure de la fenêtre Python (Python) est appelée la transcription et la partie inférieure, l’invite. À la base, la transcription est vide. La transcription présente l’enregistrement d’un code précédemment saisi et ses résultats.
L’invite désigne la zone dans laquelle vous saisissez votre code. Lorsque la fenêtre Python (Python) apparaît pour la première fois, le message dans l’invite mentionne Initializing Python interpreter (Initialisation de l’interprète Python), vous indiquant que la fenêtre est prête à recevoir votre code. Après quelques secondes, le message est remplacé par Enter Python code here (Saisir le code Python ici). Autrement dit, vous pouvez commencer à saisir votre code. Une fois que vous avez ouvert la fenêtre Python une première fois, ces messages n’apparaissent plus dans la session actuelle.
- Dans la fenêtre Python, saisissez arcpy.management.GetCount("ambulances").
ArcPy est un paquetage Python qui exploite les fonctionnalités de ArcGIS Pro disponibles depuis Python. GetCount() est une fonction d’ArcPy qui exécute l’outil de géotraitement Get Count (Compter) disponible dans la boîte d’outils Data Management Tools (Outils de gestion des données).
Remarque :
Toutes les rubriques d’aide pour les outils de géotraitement incluent des exemples Python. Par exemple, dans la rubrique d’aide Get Count (Compter), sous Parameters (Paramètres), cliquez sur Python (Python) pour afficher l’exemple de code de la rubrique.
- Appuyez sur Entrée
Le code s’exécute et le résultat est <Result '48'>.
Bien que la mise en forme soit légèrement différente, il s’agit du même nombre d’enregistrements que vous avez précédemment déterminé. L’exécution de la ligne de code dans la fenêtre Python produit les mêmes résultats que l’exécution de l’outil avec la fenêtre de l’outil. L’exécution du code dans la fenêtre Python (Python) a également créé une entrée dans la fenêtre History (Historique).
À part leur horodatage, ces deux entrées sont identiques et il n’y a pas de différence entre exécuter un outil avec la fenêtre de l’outil et utiliser Python. Lors de l’utilisation de Python néanmoins, vous pouvez utiliser le code pour contrôler comment les outils sont exécutés, notamment l’exécution du même outil à plusieurs reprises sur différentes classes d’entités.
- Dans la fenêtre Python, cliquez avec le bouton droit sur le code et sélectionnez Clear Transcript (Effacer la transcription).
Tout ce qui a été exécuté dans le code précédent reste en mémoire.
Exécuter le code dans la fenêtre Python
La fenêtre Python est un emplacement pratique pour appliquer l’écriture du code Python.
- Dans la fenêtre Python, cliquez sur l’invite et saisissez la ligne de code suivante :
print("GIS is cool")
Dans cette ligne de code, print() est une fonction. Une fonction dans Python exécute une tâche spécifique. Dans ce cas, la fonction affiche le texte. La plupart des fonctions dans Python ont des arguments ou des paramètres indiqués entre parenthèses juste après la fonction. Dans ce cas, l’argument est une chaîne. Une chaîne dans Python est constituée d’une séquence de caractères. Vous créez une chaîne en joignant les caractères entre guillemets.
Python utilise les guillemets simples et doubles pour identifier les chaînes, à condition qu’ils soient utilisés de manière cohérente. print("GIS is cool") et print('GIS is cool') sont donc tous deux corrects, mais print("GIS is cool') génère une erreur. Les guillemets dans Python sont toujours droits (et non obliques). Ils sont automatiquement mis en forme de cette façon lorsque vous saisissez votre code dans la fenêtre Python ou dans un autre environnement de codage. Parfois, si vous copiez du code entièrement mis en forme ou écrit dans un logiciel de traitement de texte, les guillemets droits peuvent être remplacés par des guillemets obliques. Par exemple, print(“GIS is cool”) génère une erreur.
- Cliquez sur la fin de la ligne de code et appuyez sur Entrée.
La ligne de code est exécutée et copiée dans la transcription, suivie par le résultat.
L’invite est à nouveau vide, prête à recevoir la ligne de code suivante.
Cet exemple est simple, mais illustre un aspect clé de l’exécution du code Python. Vous écrivez une ligne de code simple qui inclut des instructions spécifiques à exécuter. Lorsque vous appuyez sur Entrée, la ligne de code est exécutée et il en va de même pour les instructions. Dans cet exemple, les instructions consistent à afficher un contenu textuel à l’écran. Cela dit, les instructions peuvent inclure de nombreuses autres tâches, comme vous l’avez déjà vu lors de l’exécution de l’outil Get Count (Compter).
Vous allez maintenant vous exercer avec plusieurs lignes de code.
- À l’invite, saisissez la ligne de code suivante :
x = 37
Dans cette ligne de code, x est une variable. Une variable est similaire à un conteneur qui stocke une valeur. Dans cet exemple, cette valeur est l’entier 37, mais cela pourrait être un autre nombre, ou du texte, ou le nom d’un jeu de données. La ligne de code est appelée une assignation, car la variable est assignée à une valeur. Le signe égal simple est utilisé dans l’assignation de la variable pour indiquer que cette dernière est définie comme étant égale à la valeur. Les variables sont assignées afin de pouvoir être utilisées ultérieurement dans le code.
- À la fin de la ligne de code, appuyez sur Entrée.
La ligne de code est exécutée, mais aucun résultat ne s’affiche. Une valeur est assignée à la variable, mais il n’y a aucune autre instruction à exécuter.
- À l’invite, saisissez la ligne de code suivante et appuyez sur Entrée :
y = 73
Cette ligne est une autre instruction d’assignation.
- À l’invite, saisissez la ligne de code suivante et appuyez sur Entrée :
x * y
Cette ligne exécute un calcul ; dans ce cas, il s’agit de la multiplication des valeurs x et y. Le résultat est affiché.
Jusqu’à présent, vous avez saisi les lignes de code sans vous préoccuper de la manière d’écrire exactement chaque ligne. Lors de l’utilisation d’un énoncé d’assignation, les espaces sont facultatifs. Par conséquent, x = 37 est identique à x=37. Des espaces sont couramment ajoutés pour améliorer la lisibilité.
- À l’invite, saisissez la ligne de code suivante et appuyez sur Entrée :
X * y
Cela génère une erreur :
NameError: name 'X' is not defined. Did you mean: 'x'?
Python est sensible à la casse, aussi X est différent de x. Vous avez défini x en lui affectant la valeur 37, mais aucune valeur n’a été affectée à la capitale X, ce qui explique l’erreur.
Comme vous continuez à exécuter les lignes de code dans la fenêtre Python, tout le code précédemment exécuté ainsi que les résultats s’affichent dans la transcription. Vous pouvez effacer la transcription, mais cela n’efface pas les valeurs des variables attribuées. En revanche, si vous redémarrez la session ArcGIS Pro, elles seront effacées.
- Cliquez avec le bouton droit sur la transcription et sélectionnez Clear Transcript (Effacer la transcription).
À présent, penchons-nous sur un exemple d’application : la conversion entre la température en Fahrenheit (F) et la température en Celsius (C). La formule générale utilisée est :
F = 9/5 * C + 32
Celle-ci peut être écrite en Python comme un simple calcul.
- À l’invite, saisissez les lignes de code suivantes et appuyez sur Entrée à la fin de chaque ligne :
temp_c = 17
temp_f = temp_c * 9 / 5 + 32
print(temp_f)
Le résultat du calcul s’affiche.
La première ligne de code assigne une valeur numérique à la variable temp_c. La deuxième ligne exécute un calcul avec la variable temp_c et le résultat est assigné à une nouvelle variable temp_f. La troisième ligne affiche la valeur de la variable temp_f. Cette troisième ligne peut être également écrite en tant que temp_f, mais la fonction print() est couramment utilisée car elle offre de meilleures options de mise en forme.
Le même résultat peut être également obtenu sans utiliser de variables.
- À l’invite, saisissez la ligne de code suivante et appuyez sur Entrée :
17 * 9 / 5 + 32
Le résultat est également 62.6.
Il y a de bonnes raisons pour utiliser des variables. Tout d’abord, dans de nombreux cas, vous ne souhaitez pas exécuter le calcul sur une seule valeur, mais sur plusieurs. Ensuite, vous devez souvent écrire du code pour exécuter le calcul, mais vous ne connaissez pas à l’avance les valeurs à utiliser. Lorsque vous écrivez un calcul représentant la relation entre deux variables, vous pouvez le réutiliser sans qu’il dépende d’une seule valeur.
Obtenir de l’aide pour écrire du code
La fenêtre Python inclut plusieurs fonctionnalités pour vous aider à écrire du code. Prenez l’exemple précédent avec l’utilisation de la fonction print().
- Effacez la transcription.
- À l’invite, saisissez le code suivant :
pri
Avant même d’avoir fini la saisie de print, une fenêtre contextuelle apparaît avec la fonction print(). L’icône en bleu avec la lettre F indique qu’il s’agit d’une fonction. C’est ce qu’on appelle le remplissage automatique ou remplissage de code.
- Pointez le curseur de la souris sur la fenêtre contextuelle print().
L’aide sur la syntaxe de la fonction s’affiche.
L’aide pour la fonction print() offre des informations concernant ses paramètres et leur ordre.
Vous pouvez continuer à saisir, ou vous pouvez cliquer sur la fenêtre contextuelle pour renseigner automatiquement cette partie de code.
- Cliquez sur la fenêtre contextuelle print().
La fonction print() s’affiche maintenant dans la fenêtre d’invite. Des parenthèses ont été ajoutées automatiquement. Si vous ne cliquez pas sur la fenêtre contextuelle et que vous continuez la saisie après avoir entré print(, une parenthèse fermante est ajoutée automatiquement. Il s’agit là d’un autre exemple de remplissage de code pour vous aider à écrire la bonne syntaxe.
Lorsque votre curseur se situe entre les parenthèses, l’aide sur la syntaxe de la fonction s’affiche à nouveau.
- Saisissez un guillemet entre les parenthèses de la fonction print().
Un deuxième guillemet est ajouté automatiquement.
La fenêtre Python propose des fenêtres contextuelles de remplissage automatique, un affichage interactif de l’aide sur la syntaxe ainsi que des conseils concernant les erreurs de syntaxe.
- Supprimez le code à l’invite.
- Vérifiez que la carte active contient toujours une couche d’entités intitulée ambulances.
- À l’invite, saisissez le code suivant :
arc
Une fenêtre contextuelle apparaît avec le paquetage ArcPy, indiqué par l’icône en rouge avec la lettre P.
Les paquetages permettent d’étendre l’ensemble de base du code Python. ArcPy est un paquetage qui ajoute les fonctions ArcGIS à Python.
- Cliquez sur la fenêtre contextuelle arcpy.
Le paquetage ArcPy s’affiche maintenant à l’invite, suivi d’un point. Pour les très courtes parties de code, comme dans cet exemple, la saisie de tous les caractères est très rapide et le fait de cliquer sur les fenêtres contextuelles ne fait pas gagner tant de temps que cela. Cependant, pour les éléments de code plus longs, utiliser le remplissage de code permet de gagner du temps, d’éviter les coquilles et de bénéficier de l’assistance à la syntaxe.
- Après arcpy., saisissez Get, comme dans la ligne de texte suivante :
arcpy.Get
Une liste d’éléments de code s’affiche, commençant par Get suivi logiquement par arcpy.
L’exécution du code est sensible au contexte. Par exemple, si vous avez commencé par saisir Get au début d’une ligne de code (sans arcpy.), les options affichées sont très différentes par rapport à arcpy.Get.
- Cliquez sur GetCount()management dans la liste des options.
Remarque :
Le mot management (gestion) après GetCount() indique que GetCount() fait partie du jeu d’outils Management (Gestion).
Le code suivant vient compléter l’invite :
arcpy.management.GetCount()
Il est identique au code utilisé précédemment dans ce didacticiel, où management fait référence à la boîte d’outils Data Management Tools (Outils de gestion des données) et GetCount() à l’outil Get Count (Compter).
Lorsque le curseur est entre les parenthèses, deux fenêtres contextuelles s’affichent.
La fenêtre contextuelle inférieure affiche la syntaxe de l’outil Get Count (Compter). La syntaxe explique que l’unique paramètre nommé in_rows comprend une vue tabulaire ou une couche raster en entrée. La fenêtre contextuelle supérieure indique le nom de la couche ambulances dans la carte active. Il s’agit d’une invite de renseignement de code pour le paramètre in_rows de l’outil Get Count (Compter). En d’autres termes, la fenêtre Python reconnaît que la couche de la carte active est un paramètre valide de l’outil. Vous pouvez utiliser cette couche ou saisir un autre élément.
- Cliquez sur la fenêtre contextuelle ambulances.
Le code suivant vient compléter l’invite :
arcpy.management.GetCount('ambulances')
Le remplissage de code, automatique dans ce cas, ajoute des guillemets autour du nom de la couche. Le remplissage de code dans la fenêtre Python est une bonne façon d’apprendre la syntaxe correcte. Même si le remplissage de code ajoute des guillemets simples, vous pouvez également avoir recours aux doubles guillemets ici.
Inutile d’exécuter ce code, puisqu’il est identique au code que vous avez exécuté auparavant.
- Supprimez le code à l’invite.
Itérer à l’aide d’une boucle for
Vous allez à présent vous essayer à l’itération, à savoir répéter les mêmes étapes à plusieurs reprises. Vous allez créer une liste de valeurs et exécuter le même calcul sur chaque élément de la liste.
- À l’invite, saisissez la ligne de code suivante et appuyez sur Entrée :
templist_c = [17, 19, 24, 21, 16]
Ce code crée une liste Python qui contient cinq éléments du même type ; dans ce cas précis, ce sont des valeurs de température centigrade. Les listes sont un type de données très courant dans Python. Une liste est composée d’une séquence d’éléments entourée de crochets [ ] et les éléments sont séparés par des virgules.
- À l’invite, saisissez la ligne de code suivante et appuyez sur Entrée :
for temp_c in templist_c:
Lorsque vous appuyez sur Entrée à la fin de cette ligne de code, le code ne s’exécute pas, mais l’invite passe à la ligne suivante. La ligne de code se termine par un deux-points, indiquant du code à venir et que la ligne seule ne peut pas s’exécuter par elle-même.
La ligne de code est le début d’une boucle for, qui a la structure générale suivante :
for <élément> in <liste>:
<exécuter une ou plusieurs lignes de code>
Une boucle for vous permet de répéter les éléments d’une liste existante et de répéter les mêmes étapes pour chaque élément. La ligne de code qui contient le mot clé for se termine par un deux-points. La ligne suivante de code est indentée, et toutes les lignes de code suivantes avec la même indentation sont exécutées à chaque itération. Le bloc de code qui se répète peut être identifié par son indentation.
La fenêtre Python reconnaît la boucle for en raison de l’utilisation du deux-points, et par conséquent la ligne de code suivante est indentée.
- À l’invite, saisissez la ligne de code suivante et appuyez sur Entrée :
temp_f = temp_c * 9 / 5 + 32
Ce code doit rester indenté. Si vous supprimez involontairement l’indentation, vous pouvez indenter la ligne en ajoutant quatre espaces au début. Les quatre espaces désignent le niveau d’indentation par défaut pour un bloc de code.
- À l’invite, saisissez la ligne de code suivante et appuyez sur Entrée :
print(temp_f)
L’utilisation de print() est inutile ici, mais dans de nombreux cas, cela génère une meilleure mise en forme des résultats.
La boucle for est complète et prête à être exécutée.
- Le curseur se trouvant toujours au niveau de la ligne de code vide, appuyez sur Entrée.
Le résultat est affiché.
La boucle for répète tous les éléments de la liste et exécute le même calcul. Il s’agit d’un concept très puissant de programmation, car l’effort pour écrire le code est identique, que la liste contienne 5 ou 5 000 éléments.
Créer et exécuter une liste de classes d’entités
Maintenant que vous vous êtes exercé à l’écriture et à l’exécution de code dans la fenêtre Python, vous allez revenir à la tâche d’origine consistant à déterminer le nombre d’entités pour chaque classe d’entités dans le dossier concerné.
Vous allez à nouveau utiliser l’outil Compter.
- Effacez la transcription. Vérifiez que la carte active contient toujours une couche d’entités intitulée ambulances.
- Exécutez les lignes de code suivantes :
count = arcpy.management.GetCount("ambulances")
print(count)
Le résultat indique la valeur 48. Ce code est pratiquement identique au code que vous avez exécuté précédemment dans ce didacticiel. Seulement maintenant, le résultat de l’outil Get Count (Compter) est assigné à une variable. Cela simplifie le travail avec le résultat, même si jusqu’à présent la seule chose que vous faisiez avec le résultat consistait à afficher sa valeur.
Le code utilise jusqu’à présent le nom de la couche d’entités ouverte dans la carte active. Même si cela est pratique, ce n’est pas toujours le cas pour ajouter tous les fichiers de formes à une carte et exécuter manuellement le code pour chaque couche d’entités. En revanche, vous pouvez désigner la classe d’entités sur un disque en spécifiant le chemin d’accès complet.
- Exécutez les lignes de code suivantes :
count = arcpy.management.GetCount("C:/PythonStart/ambulances.shp")
print(count)
Le même résultat s’affiche.
Remarque :
Si vous avez enregistré le dossier PythonStart dans un emplacement de votre ordinateur autre que le dossier de votre unité C:\, vous devez mettre à jour le chemin d’accès en conséquence pour cette ligne de code et les futures lignes de code qui feront référence à l’emplacement du dossier.
Le chemin d’accès est entre guillemets car il s’agit d’une chaîne. Une barre oblique (/) est utilisée dans le chemin d’accès plutôt qu’une barre oblique inversée (\). Une barre oblique inversée dans Python est utilisée comme caractère d’échappement, ce qui peut changer la signification du caractère qui le suit. Cela peut entraîner des conséquences inattendues lorsque vous utilisez des barres obliques inversées dans des chaînes. Par ailleurs, la classe d’entités est référencée comme ambulances.shp car l’extension de fichier .shp fait partie du nom. Utiliser uniquement ambulances renverrait une erreur, car il n’y a pas de classe d’entités intitulée ambulances dans le dossier.
Plutôt que de spécifier le chemin d’accès complet, vous pouvez définir l’espace de travail. Un espace de travail désigne un des nombreux paramètres d’environnement qui influencent les opérations de géotraitement. Outre l’espace de travail, les environnements incluent le système de coordonnées en sortie par défaut, la taille de cellule par défaut pour le traitement des données raster, etc.
- Exécutez les lignes de code suivantes :
arcpy.env.workspace = "C:/PythonStart"
count = arcpy.management.GetCount("ambulances.shp")
print(count)
Le même résultat s’affiche.
Même si définir l’espace de travail exige une ligne de code supplémentaire, il est souvent efficace d’utiliser un espace de travail, car toutes les lignes suivantes du code ArcPy l’utiliseront automatiquement. La deuxième ligne de code n’exige plus le chemin d’accès complet. Si aucun espace de travail n’est défini dans le code, l’espace de travail par défaut du projet est utilisé.
L’étape finale pour accomplir la tâche d’origine consistant à déterminer le nombre d’entités de chaque jeu de données dans le dossier consiste à ajouter du code pour créer une liste de shapefiles dans l’espace de travail et à exécuter l’outil Get Count (Compter) sur chaque élément de cette liste. Une fois que l’espace de travail est défini, vous pouvez créer une liste de classes d’entités dans cet espace de travail avec une fonction d’ArcPy.
- Saisissez la ligne de code suivante et appuyez sur Entrée :
fc_list = arcpy.ListFeatureClasses()
La fonction ListFeatureClasses() crée une liste de classes d’entités. En l’attribuant à une variable, vous pouvez utiliser la liste dans d’autres tâches.
Pour vérifier le contenu de la liste, vous pouvez afficher ses valeurs.
- Exécutez la ligne de code suivante :
print(fc_list)
Le résultat est le suivant :
['ambulances.shp', 'boundary.shp', 'fire_stations.shp', 'fire_zones.shp', 'voting_divisions.shp', 'voting_sites.shp']
Vous allez maintenant créer une boucle for pour itérer les éléments dans la liste.
- Saisissez la ligne de code suivante et appuyez sur Entrée pour commander un bloc de code :
for fc in fc_list:
- Saisissez la ligne de code suivante et appuyez sur Entrée :
count = arcpy.management.GetCount(fc)
Cette ligne de code utilise le même outil Compter que vous avez utilisé auparavant, mais désormais elle utilise la variable fc plutôt que le nom d’une classe d’entités spécifique. Parce que fc est mise à jour pour contenir chaque nom de classe d’entités dans la liste de classes d’entités, à chaque itération la classe d’entités suivante est utilisée :
- Saisissez la ligne de code suivante et appuyez deux fois sur Entrée :
print(count)
Le résultat affiche le nombre d’entités pour chaque fichier de formes dans l'espace de travail.
Le code que vous avez développé exécute la tâche de comptabilisation des entités dans shapefile. Ce code n’est pas très sophistiqué car s’il y avait beaucoup de shapefiles, il serait fastidieux de lire les résultats affichés. Vous pouvez ajouter du code pour créer une sortie plus significative, telle qu’inclure le nom de la classe d’entités après chaque décompte, écrire les résultats dans un fichier texte, calculer un nombre total d’entités dans l’espace de travail ou déterminer la classe d’entités ou les classes avec la plupart des entités.
Le même code utilisé dans la fenêtre Python peut également être utilisé dans ArcGIS Notebooks dans ArcGIS Pro (ou dans Jupyter Notebook, en dehors de ArcGIS Pro). Ces étapes ne sont pas abordées ici, mais vous pouvez copier le code depuis la fenêtre Python et le coller dans une cellule dans Notebooks.
Vous pouvez également utiliser le code en dehors de ArcGIS Pro, dans un éditeur Python, ce que vous allez faire maintenant. Vous pouvez enregistrer votre code depuis la fenêtre Python dans un fichier de script Python pour démarrer votre travail dans un éditeur Python.
- Cliquez avec le bouton droit sur le code dans la transcription de la fenêtre Python (Python) et sélectionnez Save Transcript (Enregistrer la transcription).
- Dans la fenêtre Save Transcript (Enregistrer la transcription), accédez au dossier C:\PythonStart et enregistrez votre travail en tant que count_features.py.
- Enregistrez votre projet et fermez ArcGIS Pro.
Vous êtes maintenant prêt à ouvrir le script dans un éditeur Python.
Exécuter un script dans un éditeur Python
Même si exécuter le code Python dans ArcGIS Pro avec la fenêtre Python ou dans un Notebook est pratique, parfois vous devez exécuter le code en dehors de ArcGIS Pro. Ce serait le cas typiquement lorsque vous souhaitez programmer l’exécution d’un script à une heure prédéterminée, mais qu’il y a également d’autres scénarios. Par exemple, des projets plus complexes exigent souvent plusieurs éléments de code qui fonctionnent ensemble, et généralement cela signifie organiser votre code dans plusieurs fichiers .py séparés. Vous pouvez utiliser un script dans le cadre de la création d’un outil personnalisé, ce qui exige également un fichier .py.
Exécuter du code Python en dehors de ArcGIS Pro exige un éditeur de code Python, également appelé environnement de développement intégré (IDE). Vous allez utiliser un environnement de développement intégré, appelé IDLE (environnement de développement intégré pour le langage Python). L’environnement IDLE va de pair avec chaque installation de Python. Ainsi, si votre ordinateur dispose de Python, il dispose également de l’environnement IDLE.
Il existe de nombreux autres IDE Python, notamment PyCharm et Spyder, mais IDLE est parfait pour commencer. Les environnements IDE tels que PyCharm et Spyder nécessitent des étapes supplémentaires pour le téléchargement, l’installation et la configuration, tandis que l’environnement IDLE fait partie intégrante de toute installation Python et est prêt à l’emploi.
- Lancez l’explorateur de fichiers.
- Accédez au dossier C:\PythonStart.
- Cliquez avec le bouton droit sur le fichier count_features.py et sélectionnez Edit with IDLE (ArcGIS Pro) (Modifier avec IDLE [ArcGIS Pro]).
Le script Python s’ouvre dans une fenêtre de script dans IDLE. Vous pouvez également voir l’option Edit with IDLE (Modifier avec IDLE) si vous avez installé ArcGIS Desktop 10.x. Vous devez utiliser Edit with IDLE (ArcGIS Pro) (Mettre à jour avec IDLE (ArcGIS Pro)), car cela ouvre le script avec la version de Python installée avec ArcGIS Pro. ArcGIS Desktop 10.x utilise une précédente version de Python.
Remarque :
Si Edit with IDLE (ArcGIS Pro) (Mettre à jour avec IDLE (ArcGIS Pro)) n’est pas visible dans le menu contextuel, cliquez sur Start (Démarrer), développez ArcGIS, puis ouvrez Python Command Prompt (Invite de commande Python). Dans la fenêtre Python Command Prompt (Invite de commande Python), saisissez idle et appuyez sur Entrée. La fenêtre IDLE (Python 3.9 Shell) apparaît. Cliquez sur File (Fichier) et sélectionnez Open (Ouvrir). Accédez au fichier count_features.py et ouvrez-le.
La partie supérieure de la fenêtre de script affiche la version d’IDLE utilisée dans Python. Il s’agit de la version de Python qui s’installe avec votre application ArcGIS Pro. Un script écrit dans Python 3.7 peut ne pas fonctionner dans des versions précédentes (2.x) de Python.
Le code inclut le contenu entier de la transcription de la fenêtre Python, y compris les résultats. Les résultats sont précédés du symbole # ou croisillon, qui signifie qu’ils sont interprétés comme des commentaires. Python ignore tout dans les commentaires, mais ils peuvent se révéler très utiles pour indiquer ce que font les différentes parties de votre code.
Avant d’utiliser ce code, vous allez observer rapidement comment fonctionne le shell Python dans IDLE.
- Dans le menu supérieur d’IDLE, cliquez sur Run (Exécuter) et sélectionnez Python Shell (Shell Python).
Le shell Python ou un interpréteur interactif s’ouvre. Le symbole >>> est connu comme l’invite. Lorsque que vous utilisez l’interpréteur interactif, vous pouvez laisser la fenêtre de script avec le fichier count_features.py ouverte car vous l’utiliserez ultérieurement.
- Placez votre curseur après l’invite (après >>>) et saisissez le code suivant :
print("GIS is cool")
- Appuyez sur la touche Entrée.
Le résultat s’affiche à la ligne suivante et une nouvelle invite apparaît.
Exécuter le code dans l’interpréteur interactif est similaire à exécuter le code ligne par ligne dans la fenêtre Python. Chaque fois que vous appuyez sur Entrée, la ligne de code est exécutée et le résultat, le cas échéant, s’affiche à la ligne suivante. Le shell Python se différencie essentiellement par son absence de sections distinctes en ce qui concerne la transcription et l’invite, mais sinon les deux approches sont quasiment identiques.
Vous allez à présent effacer le script et à exécuter le code.
- Fermez la fenêtre Python Shell (Shell Python) et retournez à la fenêtre de script du script count_features.py.
- Nettoyez le code en supprimant toutes les lignes avant la ligne commençant par arcpy.env.workspace et supprimez toutes les lignes qui sont des résultats, indiquées par le symbole #, signifiant qu’il s’agit d’un code de commentaire.
- Supprimez ces deux lignes consécutives :
count = arcpy.management.GetCount("ambulances.shp")
print(count)
- Supprimez cette ligne :
print(fc_list)
Le code restant est celui-ci :
arcpy.env.workspace = "C:/PythonStart" fc_list = arcpy.ListFeatureClasses() for fc in fc_list: count = arcpy.management.GetCount(fc) print(count)
- Veillez à ce que la ligne finale soit indentée par quatre espaces pour correspondre à la ligne du dessus.
- Cliquez sur File (Fichier) et sélectionnez Save (Enregistrer) pour enregistrer le script.
- Cliquez sur Run (Exécuter) et sélectionnez Run Module (Exécuter le module) pour exécuter le script.
Le résultat s’affiche dans la fenêtre interactive.
Plutôt que d’afficher le nombre d’entités, la fenêtre interactive affiche l’erreur suivante :
NameError: name 'arcpy' is not defined
Cette erreur est due au fait que vous utilisez le paquetage ArcPy, mais que le code est exécuté en dehors d’ArcGIS Pro. Pour utiliser un paquetage, il doit être importé en haut de votre script.
- Fermez la fenêtre Python Shell (Shell Python).
- Placez votre curseur à l’emplacement du premier caractère de la première ligne du script. Appuyez sur la touche Entrée.
Une ligne vierge est ajoutée au début du script.
- Ajoutez le code suivant à la première ligne du script :
import arcpy
- Enregistrez et exécutez votre script.
Le nombre obtenu s’affiche dans la fenêtre interactive.
La première fois que vous utilisez ArcPy dans votre script, l’affichage des résultats peut prendre un moment, car il faut quelques secondes à Python pour importer ArcPy.
Le résultat est identique à l’exécution du code dans ArcGIS Pro, mais ArcGIS Pro n’a pas besoin d’être ouvert pour exécuter le script (même s’il est nécessaire de l’installer et d’avoir une licence sur l’ordinateur que vous utilisez).
Il y a plusieurs avantages à utiliser l’éditeur Python pour travailler avec votre code. Parmi ses principaux avantages, il vous permet d’écrire des scripts plus longs et d’enregistrer votre code dans un .py. Enregistrer le code dans un fichier simplifie également le débogage et la réutilisation du code.
Comparaisons des approches pour exécuter le code Python
Vous avez vu deux façons d’écrire et d’exécuter du code Python. Vous trouverez ci-après un résumé des avantages et des inconvénients de chaque approche. Ces éléments ne sont pas tous abordés de manière détaillée dans ce didacticiel, mais garder ces éléments en tête est utile au fil de votre apprentissage Python.
Méthode | Avantages | Inconvénients |
---|---|---|
Fenêtre Python dans ArcGIS Pro |
|
|
Éditeur Python (IDE) |
|
|
Remarque :
Pour le code qui est exécuté dans ArcGIS Pro, y compris la fenêtre Python, inutile d’importer arcpy. Par contre, pour le code exécuté en dehors de ArcGIS Pro, comme dans un éditeur Python, vous devez importer arcpy avant d’utiliser les fonctions du paquetage ArcPy.
Il existe plusieurs autres façons d’exécuter du code Python. Cela inclut l’exécution du code dans un bloc-notes, l’exécution du script avec une ligne de commande, ou la reprogrammation pour exécuter un script à partir du système d’exploitation. Ces aspects sont abordés dans d’autres didacticiels.
Vous avez appris à écrire et à exécuter du code Python dans la fenêtre Python et dans IDLE. Vous avez découvert les variables et les boucles, deux concepts très importants dans Python. Vous avez également appris à définir l’environnement dans Python, et à utiliser les outils de géotraitement ArcGIS standard dans Python. Il s’agissait de la première d’une série de didacticiels sur la manière d’utiliser Python dans ArcGIS Pro – plus de détails disponibles prochainement !
Les documentations Script Python pour ArcGIS Pro et Script Python avancé pour ArcGIS Pro par le Dr Paul A. Zandbergen, publiées par Esri Press, peuvent vous intéresser également.
Vous trouverez d’autres didacticiels dans la bibliothèque des didacticiels.