17.24. Exécution itérative d’algorithmes

Note

Cette leçon montre une manière différente d’exécuter des algorithmes qui utilisent des couches vectorielles, en les exécutant de manière répétitive, en itérant sur les caractéristiques dans une couche vecteur d’entrée.

Nous avons déjà vu le modeleur graphique qui est l’une des façons d’automatiser les tâches de traitement. Cependant, dans certains cas, le modeleur n’est peut être pas ce dont nous avons besoin pour automatiser une tâche donnée. Voyons l’une de ces situations et comment la résoudre facilement en utilisant une fonctionnalité différente : l’exécution itérative des algorithmes.

Ouvrez les données correspondantes à ce chapitre. Cela devrait ressembler à cela.

../../../_images/project1.png

Vous reconnaîtrez notre bien connu MNE des précédents chapitres et un ensemble de bassins versants extrait de celui-ci. Imaginez que vous avez besoin de séparer le MNE en plusieurs couches plus petites, chacune d’elles contenant uniquement les données d’élévation correspondant à un même bassin versant. Cela sera utile si vous voulez par la suite calculer certains paramètres liés à chaque bassin versant, comme son élévation moyenne ou sa courbe hypsographique.

Cela peut être une tâche longue et fastidieuse, spécialement si le nombre de bassins versants est grand. Cependant, c’est une tâche qui peut facilement être automatisée, comme nous le verrons.

L’algorithme à utiliser pour couper une couche raster avec une couche polygone est appelé Découper le raster avec des polygones, et possède la boîte de dialogue des paramètres suivante.

../../../_images/clip2.png

Vous pouvez l’exécuter en utilisant la couche « watersheds » et le MNE en entrées et vous obtiendrez le résultat suivant.

../../../_images/full_clip.png

Comme vous pouvez le voir, la zone couverte par tous les polygones des bassins versants est utilisée.

Vous pouvez avoir le MNE coupé avec un seul bassin versant en sélectionnant le bassin versant souhaité, puis en exécutant l’algorithme comme nous l’avons fait avant.

../../../_images/selection.png

Tant que seules les fonctionnalités sélectionnées sont utilisées, seul le polygone sélectionné sera utilisé pour découper la couche raster.

../../../_images/selection_clip.png

Faire ainsi pour tous les bassins versants produira le résultat que nous cherchons, mais cela ne semble pas être une manière très pratique de procéder. À la place, voyons comment automatiser cette routine sélectionner et découper.

Avant toute chose, effaçons la sélection précédente, afin que tous les polygones soient à nouveau utilisables. Ouvrez maintenant l’algorithme Découper la grille avec des polygones et sélectionnez les mêmes entrées qu’avant, mais cette fois cliquez sur le bouton que vous trouverez sur le côté droit de la couche vecteur d’entrée où vous avez sélectionné la couche des bassins versants.

../../../_images/iterate_button.png

Ce bouton permettra à la couche d’entrée sélectionnée d’être séparée en autant de couches qu’elle a de caractéristiques, chacune d’entre elles contenant un simple polygone. Sur ce, l’algorithme sera appelé de manière répétitive, une fois pour chacune des couches de polygone unique. Le résultat, à la place d’une seule couche raster dans le cas de cet algorithme, sera un ensemble de couches raster, chacune d’entre elles correspondant à une des exécutions de l’algorithme.

Voici le résultat que vous obtiendrez si vous exécutez l’algorithme de découpage comme expliqué.

../../../_images/result_iterative.png

Pour chaque couche, la palette de couleur noire et blanche (ou n’importe quelle palette que vous utilisez) est réglée différemment, de ses valeurs minimum à ses valeurs maximum. C’est la raison pour laquelle vous pouvez voir les différentes pièces et que les couleurs ne semblent pas correspondre à la frontière des couches. Cependant, les valeurs coïncident.

Si vous entrez un nom de fichier de sortie, les fichiers résultants seront nommés avec ce nom de fichier et un numéro correspondant à chaque itération comme suffixe.