Want to make creations as awesome as this one?

More creations to inspire you

BEYONCÉ

Horizontal infographics

ALEX MORGAN

Horizontal infographics

OSCAR WILDE

Horizontal infographics

GOOGLE - SEARCH TIPS

Horizontal infographics

NORMANDY 1944

Horizontal infographics

VIOLA DAVIS

Horizontal infographics

Transcript

Automatisation de traitements sig avec arcpy

Option Numérique appliqué aux géosciences

SOMMAIRE

01 - Automatiser un workflow

03 - Accéder aux propriétés des données

04 - Accéder à la géométrie et aux valeurs des tables attributaires

05 - Créer de nouvelles données SIG

02 - Transformer un script en Toolbox

Données

Aide en ligne

00

Créer un script

01

Automatiser un workflow

01

Exercice 1 : création d'un script pour l'outil Clip

Créez un dossier Input et un dossier Output.

Créez manuellement votre premier script, configurez le workspace puis réalisez le workflow ci-contre.

Les données d'entrée doivent être stockées dans le dossier input, et celles en sortie dans le dossier Input.

01

Exercice 2 : Coder un petit workflow

Importez les données d'entrée dans une gdb.

Réalisez un script permettant d'extraire les tronçons de routes situés à moins d'une certaine distance d'un processus géomorphologique. Cette distance sera fixée par l'utilisateur après le lancement du script.

Les données d'entrées seront enregistrées dans la gdb.

01

Exercice 3 : Utiliser les outils de sélection.

Importez les données d'entrée dans une gdb.

Réalisez un script permettant d'extraire les routes passant à moins d'une certaine distance d'un processus géomorphologique actif. Cette distance sera fixée par l'utilisateur après le lancement du script.

Les données d'entrées seront enregistrées dans la gdb.

01

Automatisation complète d'un workflow (CR1)

Vous allez maintenant automatiser un TD de A à Z.

Les données seront stockées dans un dossier choisi par l'utilisateur. Votre script devra créer la géodatabase contenant les données de traitement, qui sera stockée dans le dossier précédemment indiqué par l'utilisateur.

Lien vers la Storymap

02

Transformer un script en toolbox

02

Transformer un script en toolbox

01 : Créer une nouvelle Toolbox Python (.pyt)

02 : Organiser sa Toolbox

03 : Définir les paramètres d'entrée et de sortie

04 : Ajouter les géotraitements

Le but de ce chapitre est de transformer le script Python de l'exercice 3 (ch.01) en Toolbox, en suivant les étapes ci-contre :

Les une fois transformés en Toolbox, vos scripts Python seront utilisables comme n'importe quel autre outil d'ArcGIS. Ce format est plus adapté à une livraison pour un commanditaire qu'un script brut.

02

01 : Créer une nouvelle Toolbox Python (.pyt)

Créer une nouvelle boîte à outils

02

1

01 : Créer une nouvelle Toolbox Python (.pyt)

Créer une nouvelle boîte à outils

2

Edit permet d'accéder au script de la toolbox. Cliquez dessus pour ouvrir le script et continuer l'exercice.

Check syntax permet de vérifier les erreurs dans votre script. A utiliser par exemple si votre outil ne se lance plus.

02

02 : Organiser sa Toolbox : définition de Toolbox, Tool et Category

Toolbox et Tool

La Toolbox Analysis Tool contient plusieurs outils (Tool) : Clip, Select, Split, Split by Attributes, Table Select...

Vous pouvez définir plusieurs class Tool (Tool1, Tool2, ...) pour que votre boîte à outils soit composée de plusieurs outils.

Il faudra penser à les appeler dans la fonction self.tools de la Toolbox (ex : self.tools = [Tool1, Tool2])

02

02 : Organiser sa Toolbox : définition de Toolbox, Tool et Category

Category

La Toolbox Analysis Tool est divisée en plusieurs catégories : Extract, Overlay, ...

Vous pouvez vous aussi créer des catégories dans votre Toolbox, en ajoutant un attribut self.category ="Nom de la catégorie" à vos outils.


02

02 : Organiser sa Toolbox : définition de Toolbox, Tool et Category

N'hésitez pas à changer l'alias de votre Toolbox ainsi que le nom, le label et la description de votre Tool

02

03 : Définition des paramètres d'un outil

Nous allons maintenant modifier la fonction getParameterInfo () de notre outil

Pour cela, il faut savoir quels paramètres sont nécessaires au fonctionnement de notre script.
Pour l'exercice 3 du chapitre 1, nous avons 6 paramètres : la gdb de travail, le shp de géomorpho, le shp de routes, la valeur du buffer, l'unité du buffer, le nom de la couche en sortie.

02

03 : Définition des paramètres d'un outil

Commençons par ajouter un paramètre.

Vous pouvez directement ajouter plusieurs paramètres d'un coup. Pensez à l'ajouter à la liste des paramètres que votre fonction retournera.

02

Il est temps d'en modifier les valeurs!

1

2

3

5

03 : Définition des paramètres d'un outil

4

6

Nom de la variable contenant votre paramètre. Donnez un nom explicite, sans caractère spéciaux!

Alias du paramètre, c'est le nom qui apparaîtra lorsque vous utiliserez votre outil. Tous les caractères sont acceptés!

Nom de votre paramètre. Donnez un nom explicite, sans caractère spéciaux! (il peut être égal au nom de la variable contenant le paramètre)

02

Enregistrez votre script, puis faites un refresh sur votre Toolbox et lancez votre outil en double-cliquant sur le petit parchemin . Voici ce qui devrait apparaître :

03 : Définition des paramètres d'un outil

02

Votre premier paramètre est créé, à vous maintenant de faire tous les autres. Voici quelques petits indices supplémentaires pour définir au mieux vos paramètres :

03 : Définition des paramètres d'un outil

Forcer la géométrie du .shp en entrée

02

03 : Définition des paramètres d'un outil

Votre premier paramètre est créé, à vous maintenant de faire tous les autres. Voici quelques petits indices supplémentaires pour définir au mieux vos paramètres :

Forcer les valeurs prises à être contenues dans une liste, puis paramétrer une valeur par défaut (peuvent être utilisés séparément)

02

Voici ce à quoi devrait ressembler votre outil une fois que tous les paramètres auront été définis :

03 : Définition des paramètres d'un outil

02

04 : Ajout du script de géotraitements

Il est temps de rajouter les différents géotraitements.
C'est au sein de la fonction execute() que nous allons travailler.
Soyez attentifs à ce que la fonction ait en argument la liste de tous les paramètres retournée par getParameterInfo() (appelée avec le bon nom, dans l'exemple : params)

Copiez-collez le script de l'exercice 3 avant le return. Adaptez les indentations.

02

04 : Ajout du script de géotraitements

Mettez en commentaire ou supprimez toutes vos définitions de variables dont les valeurs seront celles prises par les paramètres définis plus tôt (dans l'exemple ci-contre, la couche de géomorphologie et la valeur + l'unité du buffer)

02

04 : Ajout du script de géotraitements

Nous allons ensuite récupérer toutes les valeurs des paramètresqui seront rentrées par l'utilisateur avec .valueAsText ou .value

Les noms que vous donnez aux variables récupérant les valeurs des paramètres devront être ensuite ceux appelés dans le script. Par exemple, j'utiliserai la variable geomorpho pour travailler sur le vecteur de géomorphologie.

02

04 : Ajout du script de géotraitements

Sauvegardez votre script, puis rafraîchissez votre Toolbox et lancez l'outil (si vous ne pouvez pas le lancer, n'hésitez pas à utiliser "Check Syntax")
Vérifiez que votre boîte à outil fonctionne normalement et fournisse le résultat attendu.

02

Bonus : Les indications

En allant modifier les métadonnées, vous pouvez ajouter des indices pour que l'utilisateur sache quels paramètres sont attendus.
Dans l'exemple, un indice est défini pour le fichier de géomorphologie.

02

Bonus : Les indications

Vous pouvez également ajouter des indications sur l'outil en général en rajoutant une miniature et un résumé.


02

Bonus : Les legacy ToolBox

Nous avons vu comment créer une Python Toolbox. Il est important de connaître leur fonctionnement, mais elles sont longues à mettre en place et à maintenir. L'avantage de ce type de toolbox est de pouvoir les encrypter.

Cependant, il existe un second type de Toolbox, plus simples à mettre en oeuvre : les Legacy Toolbox. C'est ce format qu'utilise SAIPEM, pour leur facilité de maintenance.
Vous trouverez comment utiliser les Legacy Toolbox sur ce Genially :

03

Accéder aux propriétés des données

03

Ex. 1 : Lister le contenu d'une gdb

Utilisez les fonctions "List" pour lister le contenu de la géodatabase (features, tables et rasters).

03

Ex. 2 : Accéder aux propriétés des vecteurs

Utilisez la fonction "Describe" pour lister le contenu de la géodatabase (features, tables et rasters) :

  • Feature Class : Nom, Type de fichier, Géométrie, Système de coordonnées
  • Raster : Nom, Type de fichier
  • Table : Nom, Type de fichier

03

Ex.3 : Accéder aux propriétés des rasters

Utilisez la fonction "GetRasterProperties_management" pour lister le contenu de la géodatabase (features, tables et rasters) :

  • Feature Class : Nom, Type de fichier, Géométrie, Système de coordonnées
  • Raster : Nom, Type de fichier, Système de coordonnées, Taille de cellule XY, Type de pixel, Nombre de canaux
  • Table : Nom, Type de fichier

03

Ex.4 : Accéder aux champs
des tables attributaires

Pour les feature classes uniquement, listez :

  • Nom, Type de fichier, Géométrie, Système de coordonnées, Nombre de champs
Pour chaque champ, listez :
  • Nom, Type de champ, longueur (champ txt uniquement)

04

Accéder à la géométrie et aux valeurs des tables attributaires

04

Ex.1 : Accéder aux valeurs
d'une table attributaire

Listez tout le contenu du champ VESSELNAME de la table disponible

04

Listez tout les valeurs uniques contenu du champ VESSELNAME de la table disponible

Ex.2 : Lister les valeurs uniques
d'un champ

04

Mettez à jour le champ "Remark" :

  • Remplacez le contenu du champ par "Main Vessel" si le VESSELNAME est "Fugro Commander";
  • Remplacez le contenu du champ par "Second Main Vessel" si le VESSELNAME est "Wave Walker"

Ex.3 : Mettre à jour des attributs
dans la table attributaire

04


  • Listez les coordonnées XYZ des tours de guet à l'aide de la fonction Search Cursor;
  • Listez les coordonnées XYZ des sommets des lignes de visée à 15km

Ex.4 : Accéder aux propriétés géométriques d'un vecteur

04

A partir de la gdb feu de forêt, vous allez créer un fichier .txt pour chacun des fichiers vecteurs à l'exception de "PNR".
Pour chacun de ces fichiers, vous allez lister :

  • Le Nom/Numéro identifiant l'entité de manière unique
  • Les coordonnées XYZ
Pour les lignes et les polygones, chaque sommet sera listé dans une ligne séparée.

Ex.5 : Exercice en autonomie
(CR2)

05

Créer de nouvelles données SIG

05

Dans la table attributaire, ajoutez 5 nouveaux enregistrements à l'aide d'une boucle : remplissez le champ "VESSELNAME" par "New Vessel" et le champ "Remark" par "Ceci est un nouveau bateau"

Ex.1 : Créer un nouvel enregistrement dans une table non géométrique

05

Créez une nouvelle classe d'entités de type point en WGS84 correspondant à la localisation des deux villes suivantes :

  • Brest, France (4,4878 W 48,3863 N)
  • St John's, Canada (52,7126 W 47,5583N)
A l'intérieur, ajoutez un champ de type texte permettant de stocker le nom des villes.

Ex.2 : Créer une nouvelle classe d'entités de type point et ajouter
des enregistrement

05

Convertissez le système de coordonnées des points créés en Equidistant Conic (world), dont le code EPSG est 54027.
Créez ensuite une feature class de type ligne, accédez aux nouvelles coordonnées des points puis créez une ligne permettant de relier directement ces deux villes.

Ex.3 : Créer une nouvelle classe d'entités de type ligne et ajouter un enregistrement

05

Créez une classe d'entité de type point permettant de stocker l'ensemble des villes de France.
A l'aide du fichier .txt disponible, créez automatiquement les champs dans la table attributaire de la feature class.
Une fois les champs créés, vous devez les remplirs avec les données du .txt et créer les points de localisation des villes.

Ex.4 : Créer des données à partir
d'un fichier .txt

Fin

Fiche récapitulative des fonctions utilisées