Tutoriel: Automatiser la délimitation de ligne de flux et de bassin versant à l’aide du modélisateur graphique

Site: OpenCourseWare for GIS
Cours: Tutoriels avancés de QGIS
Livre: Tutoriel: Automatiser la délimitation de ligne de flux et de bassin versant à l’aide du modélisateur graphique
Imprimé par: Guest user
Date: samedi 20 avril 2024, 13:33

1. Introduction

QGIS a d’excellentes façons d’automatiser vos processus. Vous pouvez utiliser PyQGIS pour créer des scripts. Mais si vous êtes à la recherche d’une manière plus graphique, le Modélisateur graphique ‘Graphical Modeller ‘ est un excellent moyen d’automatiser vos processus à l’aide des outils de la boîte à outils de traitement. 

Après ce tutoriel, vous serez en mesure :

  1. De définir les couches et les variables d’entrée de votre modèle graphique.
  2. Ajouter des outils de traitement à votre modèle graphique.
  3. Enregistrer les résultats de votre modèle graphique.
  4. Enregistrez votre modèle graphique dans la boîte à outils de traitement ‘Processing’.
  5. Créez un modèle graphique pour la délimitation des cours d’eau.
  6. Créez un modèle graphique pour la délimitation des bassins versants.

Dans ce tutoriel, nous allons faire deux modèles que vous pouvez appliquer à n’importe quel domaine pour lequel vous avez téléchargé des données SRTM et créé un polygone de délimitation de la zone d’étude. Pour ce tutoriel, les données sont fournies.  

Ici, nous utilisons QGIS 3.14 Pi, mais la procédure est similaire dans 3.10 LTR.

2. Préparation de données

Nous allons faire deux modèles graphiques:

  1. Délimitation des cours d’eau.
  2. Délimitation du bassin versant.

Le modèle de délimitation du flux devrait s’appliquer aux ‘SRTM 1-Arc Second tiles’ (tuiles SRTM  1 seconde d'arc) que vous pouvez télécharger pour de nombreuses régions du monde. Pour ce tutoriel quatre tuiles sont fournies, qui couvrent la zone du bassin versant Rur.

1. Lancer QGIS.

2. Ajouter des tuiles de MNT.

Four SRTM tiles

Parce que les quatre tuiles couvrent beaucoup plus que la zone du bassin de Rur, nous avons également besoin de numériser un polygone de délimitation. Vous pouvez numériser un polygone ou zoomer sur la zone d’étude et utiliser l’outil ‘Create layer from extent’  à partir de la boîte à outils de traitement ‘Processing Toolbox’. Assurez-vous que la projection à la volée de votre projet est modifiée en type de projection que vous souhaitez utiliser, qui ne devrait pas être un système de coordonnées géographiques avec des coordonnées lat/lon en degrés!

Pour ce tutoriel, nous avons fourni la boîte de délimitation.

3. Ajoutez la zone de délimitation à la toile de la carte.

4. Cliquer droit sur le polygone de délimitation de la zone d’étude ‘boundingbox’ dans le panneau des couche et choisir ‘Set CRS | Set Project CRS from Layer’.


Cela change le projet CRS de GCS (EPSG:4326) à UTM Zone 32N/WGS-84 (EPSG: 32632) que nous allons utiliser.

Set CRS

3. Créer le modèle graphique pour la délimitation de réseau hydrographique

Maintenant, nous allons créer le modèle graphique pour la délimitation des cours d’eau.

1. Dans le menu principal choisir Traitement | Modélisateur graphique  (Processing | Graphical modeler).

2. Maximiser la fenêtre de concepteur de modèle (Model designer window)

3. Sous Propriétés du modèle, ajouter le Nom Délimitation du cours d’eau (Stream delineation) et l’Hydrologie de Groupe (Group Hydrology).


Cela contrôle l’affiche du modèle dans la boîte à outils de traitement (Processing Toolbox). Dans ce cas, vous trouverez le modèle de délimitation du cours d’eau sous le groupe Hydrologie. 

4. Avant de continuer à ajouter les différentes étapes de traitement, nous enregistrerons le modèle en cliquant sur

. Le modèle sera enregistré dans votre profil. Choisir streamdelineation.model3 comme nom. 

Nous sommes maintenant prêts à ajouter différents processus de délimitation des cours d’eau à notre modèle vide.



3.1. Mosaïque de tuiles SRTM

La première étape consiste à créer une mosaïque des tuiles SRTM. 

Nous aimerions offrir à l’utilisateur le choix pour sélectionner plusieurs tuiles à la fois comme entrée. 

1. Dans le panneau Entrées, double cliquez sur

.

2. Dans la définition de paramètre d’entrée multiple ‘Multiple Input Parameter Definition’, écrire Tuiles MNT ‘DEM Tiles’ en tant que description et choisir Raster comme type de couche autorisé. Garder obligatoire vérifié et cliquez sur OK (Mandatory checked and click OK).

De cette façon, l’utilisateur doit sélectionner un ensemble de couches raster avant que le modèle puisse s’exécuter. 

3. Passez au panneau Algorithmes en cliquant sur l’onglet.

4. Recherchez construire raster virtuel (Build virtual raster) et double clic sur l’outil. 

5. Dans le dialogue Build virtual raster, remplacez le texte à Description par Mosaique de Tuiles MNT (Mosaic DEM tiles). 

6. Cliquer sur les couches d’entrée et sélectionnez tuiles MNT (DEM Tiles). Cliquez pour revenir en arrière.

7. Changez chaque fichier d’entrée dans une bande distincte (Place each input file into a separate band) à Non (No), car nous ne voulons pas empiler les couches. Vérifiez si le dialogue ressemble à la figure ci-dessous.

8. Cliquez sur OK.

Notez que nous fournissons uniquement les noms de sortie dans ces outils si la sortie est un résultat final. Dans notre cas, la mosaïque est un résultat  temporaire.

Maintenant, l’écran doit ressembler à ceci:

Ajoutons le processus suivant.


3.2. Reprojeter et couper le MNT

La prochaine étape à mettre en œuvre dans notre modèle graphique est de reprojeter la mosaïque MNT en UTM Zone 32N/WGS-84 et de couper le MNT suivant les limites de  la zone de délimitation. Cela peut être fait avec un seul outil.  

Nous devons d’abord ajouter le polygone de la zone de délimitation comme couche vectorielle d’entrée. 

1. Retournez au panneau Entrée (Input) et double cliquez sur La couche vectorielle.

2. Taper la zone de délimitation en Description (Bounding box at Description) et choisissez ‘Polygon’ comme type de géométrie. Garder la case Obligatoire (Mandatory box) cochée. 

De cette façon, l’utilisateur doit fournir une couche vectorielle de polygone de délimitation.

3. Cliquer sur OK.

4. Passez maintenant à l’onglet Algorithmes et recherchez l’algorithme Warp (reproject) et double clic. 

5. Dans le dialogue Warp (reproject), remplacez la Description par Reproject et clip DEM. 

6. A la couche d’entrée, cliquer sur le bouton et choisir Sortie/résultat de l’algorithme (Algorithm Output).

Parce que nous n’avons qu’un seul autre algorithme, ce sera automatiquement la sortie/résultat du processus ‘Mosaic DEM Tiles’.

Le CRS Source est connu, alors gardez-le vide. Nous devons changer la cible SIR (Target CRS) à celui de la couche du polygone de délimitation fourni. 

7. À ‘Target CRS’, cliquez sur le bouton et choisissez Entrée modèle (Model Input). 

Il sélectionnera automatiquement la couche de zone de délimitation.

8. Garder la méthode de reéchantillonnage (Resampling) à utiliser chez ‘Nearest Neighbo’r afin que les valeurs de pixels d’origine soient conservées autant que possible. Définir la valeur Nodata pour les bandes de sortie à -9999. Définir la résolution du fichier De sortie sur 30 mètres.

Le dialogue doit maintenant ressembler à ceci:

Nous avons encore besoin de couper à la mesure du polygone de délimitation. 

9. Cliquez sur le bouton Afficher les paramètres avancés (Show advanced parameters). 

10. Choisissez ici pour les étendues géoréférencées du fichier de sortie à créer la couche de zone de délimitation d’entrée modèle (Model input Bounding box layer).

11. Cliquez sur OK. 

Maintenant, votre écran devrait ressembler à la figure ci-dessous.

Nous pouvons procéder en ajoutant l’étape suivante.

3.3. Interpoler les lacunes

Parfois, le MNT a des pixels avec nodata. Ces vides doivent être interpolés. 

1. Dans le panneau Algorithmes, double cliquez sur l’outil Remplir les nodata (Fill nodata tool).

2. Modifiez la description en interpoler les vides dans le MNT (Interpolate voids in DEM). Choisissez comme couche d’entrée la sortie de l’algorithme ‘Reproject and clip DEM’. Augmentez la distance maximale à 100 pixels.

3. Cliquez sur OK. 

Votre modèle doit maintenant ressembler à la figure ci-dessous.

Model after interpolation of voids

Nous pouvons passer à l’étape suivante.

3.4. Remplir les puits

Le prochain processus à ajouter est de remplir les puits/éviers dans le MNT pour se débarrasser des dépressions qui piègent le débit d’eau.

1. Dans le panneau Algorithmes, recherchez l’algorithme ‘SAGA Fill sinks’ (Wang et Liu) et double cliquer.

2. Dans le ‘SAGA Fill sinks’ (wang & liu) dialogue choisir pour MNT la sortie de l’algorithme de l’étape précédente. Parce que nous avons besoin d’enregistré MNT rempli sur le disque, nous tapons ‘Filled DEM’ pour ‘Filled DEM’.

3. Cliquer sur OK.

Le modèle ressemble maintenant à la figure ci-dessous. Notez que la couche de sortie (Filled DEM) se trouve dans une boîte verte. Vous pouvez déplacer la boîte sous le dernier algorithme.

Filled DEM model

Nous pouvons maintenant procéder à la mise en œuvre de la prochaine étape.



3.5. Délimiter le réseau de rivière

Maintenant, nous allons délimiter les cours d’eau. Pour cela, nous avons besoin comme entrée le MNT rempli de l’étape précédente et un seuil d’ordre ‘Strahler’ que vous pouvez calibrer. Nous allons ajouter cela comme une entrée entier au modèle. 

1. Retournez au panneau Entrée en cliquant sur l’onglet Entrée. 

2. Double cliquer sur le numéro.

3. Dans le ‘Number Parameter Definition’ taper ‘Strahler order threshold’ en tant que ‘Description’. Le type de nombre est Entier. Les commandes de Strahler ont toujours un minimum de 1. Le maximum dépend de la zone, mais nous pouvons le limiter à 20. Nous pouvons définir une valeur par défaut de 8. Gardez la case Obligatoire cochée.

4. Cliquez sur OK. 

5. Retournez à l’onglet Algorithmes et double cliquer sur l’algorithme SAGA concernant le réseau de cours d’eau et les bassins de drainage.

6. Dans la manche de réseau de cours d’eau et les bassins de drainage, modifier la description en ‘délimiter les cours d’eau’ (Delineate streams). Choisir pour l’élévation la sortie de l’algorithme MNT rempli. Choisir pour Seuil limite (Threshold) la valeur d’entrée seuil d’ordre Strahler. Enregistrer les canaux dans les lignes de cours d’eau.

7. Cliquez sur OK.

Vous pouvez réorganiser un peu les boîtes. Votre modèle doit maintenant être similaire à celui de la figure ci-dessous.

Stream delineated model


3.6. Aligner l'exutoire sur la sortie de la rivière

L’étape suivante consiste à faire une prise d’un exutoire numérisée à partir d’une carte vers le cours d’eau délimité à partir de l’étape précédente. 

1. Accédez au panneau Entrée et double cliquer sur La couche vectorielle.

2. Dans le paramètre de définition de couche vectorielle, taper Outlet sur la carte pour la description et définir le type de géométrie sur Point. Gardez la case Obligatoire cochée. 

3. Cliquez sur OK.

Nous allons ajouter une autre entrée pour la tolérance de l’emprise. 

4. Double-cliquer sur Numéro dans le panneau Entrée. 

5. Dans la manche  de paramètre de définition de nombre, tape ‘Tolerance’ en tant que description, choisir ‘Float’ comme type de nombre, taper une valeur minimale de 30, une valeur maximale de 500 et une valeur par défaut de 100 mètres. Garder la case Obligatoire cochée.


6. Cliquez sur OK.

7. Accédez au panneau Algorithmes, double cliquer sur l’algorithme de géométries ‘Snap to layer’. 

8. Dans la boîte de dialogue ‘Snap geometry to layer’, modifier la description en ‘Snap outlet to delineated stream’, choisir pour la couche d’entrée l’exutoire sur la carte (Outlet on map), pour la couche de référence le résultat de canaux de l’étape précédente et pour Tolérance l’entrée Tolérance (Tolerance). Changer le comportement en ‘préférer le point le plus proche’ (Prefer closest point), insérer des sommets supplémentaires lorsque cela est nécessaire (insert extra vertices where required).

Maintenant, nous devons ajouter les coordonnées à la table d’attributs afin que nous puissions les utiliser plus tard pour la délimitation du bassin versant.

10. Dans le panneau Algorithmes, double cliquer sur l’algorithme Ajouter des attributs de géométrie (the Add geometry attributes).

11. Dans la boîte de dialogue ‘Ajouter des attributs géométriques’ (Add geometry attributes), taper enregistrer l’exutoire avec les coordonnées. Choisir le résultat de géométrie ‘Snapped geometry’ comme couche d’entrée et enregistrer la couche en tant que ‘Snapped outlet’.


12. Cliquer sur OK.

Le modèle ressemble maintenant à la figure ci-dessous.

Model stream delineation complete

13. Enregistrer le modèle en cliquant sur .

14. Fermez la fenêtre du modélisateur graphique (Graphical Modeler window).

3.7. Tourner le modèle de délimitation

Vous pouvez maintenant trouver votre nouveau modèle dans la boîte à outils de traitement.

Avant d’exécuter le modèle, nous devons d’abord numériser un outlet.

1. Installer le ‘QuickMapServices plugin’ et ajouter ‘OSM Standard’ à la toile de carte.

2. Trouver l’exutoire du bassin versant de Rur (Roer in Dutch) sur la carte, où il entre dans la rivière de la Meuse (Maas).

3. Cliquez sur le bouton  ‘créer une nouvelle couche de rayures temporaire’ (New temporary scratch layer).

4. Dans la boîte de dialogue, charger la couche ‘Exutoire’ (Outlet) avec une géométrie de type ‘Point’. Définir la projection sur EPSG: 32632.

5. Pas besoin de définir des attributs. Cliquez sur OK.

6. Le couche est automatiquement définie en mode édition. Cliquer pour ajouter une fonction de point à l’exutoire.

7. Interrompre l’édition en cliquant et en cliquant enregistrer.

Nous pouvons maintenant utiliser notre modèle de délimitation des cours d’eau à partir de la boîte à outils de traitement.

8. Dans la boîte à outils de traitement, double cliquer sur Modèles | Hydrologie | Délimitation des cours d’eau.

9. Dans la boîte de dialogue ‘Délimitation des cours d’eau’ (Stream Delineation) choisir la couche du polygone limitant la zone d’étude ‘boundingbox layer’ comme ‘Bounding box’, choisir les 4 tuiles SRTM comme Tuiles MNT, choisir ‘Exutoire’ (Outlet) comme exutoire sur la carte, garder le seuil défaut ‘Strahler order threshold’ et fixer la capture de Tolérance à 500 m. Enregistrer l’exutoire sélectionné en tant que ‘snapped_outlet.shp’, enregistrer les cours d’eau en tant que ‘streams.shp’ et enregistrer le MNT rempli en tant que ‘filled_DEM.tif’.

10. Cliquer sur Exécuter. Fermer le dialogue après traitement.

 Le résultat devrait ressembler à la figure ci-dessous.

Maintenant, nous pouvons continuer avec la délimitation du bassin versant de Rur en utilisant un deuxième modèle graphique.

4. Créer un model graphique pour la délimitation de bassin versant

Maintenant, nous avons l’exutoire capturé et le MNT rempli, nous pouvons utiliser ces couches comme entré pour un deuxième modèle graphique pour délimiter le bassin versant de Rur.

1. Dans le menu principal aller à ‘Traitement’ | ‘Modélisateur graphique’...

2. Sous la rubrique ‘Propriétés Modèle’, type Délimitation de bassin versant (Catchment delineation) comme  ‘Nom et Hydrologie’ (Name and Hydrology) en tant que Groupe. 

3. Enregistrer le modèle comme ‘catchmentdelineation.model3’.

4.1. Définir les entrées

Nous devons d’abord définir les entrées du modèle. 

1. Dans le panneau ‘Entrée’ (Input), double cliquez sur la ‘couche Raster’ (Raster layer’). 

2. Dans la boîte de dialogue de ‘définition des paramètres de couche Raster’ (Raster Layer Parameter Definition),  tape (MNT rempli’ (Filled DEM’ en tant que description et activer la case ‘Obligatoire’ (Mandatory).

3. Cliquer sur OK. 

4. Double-cliquer sur ‘Numéro’ (Number) dans le panneau ‘Entrée’ (Input). 

5. Dans la boîte de dialogue de ‘définition des paramètres de nombre’ (Number Parameter Definition), tape ‘X Coordinate Outlet’ en tant que description, conserver ‘Float’ en tant que type de nombre et laissez tout le reste par défaut.


6. Cliquer sur OK. 

7. Faites de même pour la coordonnée Y.  Maintenant que les entrées sont définies, nous pouvons les utiliser dans les algorithmes.

4.2. Délimiter le bassin versant en mode raster

Maintenant, nous pouvons ajouter les algorithmes pour dériver le bassin versant.

1. Ajoutez l’algorithme de zone ‘SAGA Upslope area’ du panneau Algorithmes.

2. Dans la boîte de dialogue ‘Upslope area’, modifie la description à ‘délimiter le bassin versant’. Reliez la coordonnée X ‘Target X coordinate à ‘X coordinate Outlet’ et la coordonnée Y ‘Target Y coordinate à ‘Y coordonnées Outlet’. Utiliser le MNT rempli ‘Filled DEM’ en tant que ‘Filled DEM’. Pour la méthode, utilisez D8 et laisser les autres paramètres par défaut.

3. Cliquez sur OK. 

Dans la prochaine étape, nous transformer en polygone cette couche de raster de ce bassin versant.

4.3. Transformer la limite du bassin versant en polygone

Maintenant, nous avons besoin de transformer la couche raster avec le bassin versant.

1. Dans le panneau ‘Algorithmes’, choisir ‘Polygonize’ (de raster au vecteur). 

2. Dans le dialogue, changer la ‘description’ en ‘Polygonize catchment’. Choisir la ‘’Upslope area’ comme ‘couche d’entrée’ (Input layer) et laissez le reste par défaut.

3. Cliquer sur OK.

Maintenant, nous devons sélectionner et enregistrer l’attribut avec la valeur 100, qui est le bassin versant.

4. Dans le panneau Algorithmes, choisissez l’algorithme Extrait par attribut ‘Extract by attribute’.

5. Dans le dialogue Extrait par attribut ‘Extract by attribute’, remplacez la description par enregistrer le polygone du bassin versant uniquement ‘Save catchment polygon only’. Comme ‘couche d’entrée’ (Input layer), choisir le résultat de l’algorithme précédent. Taper pour l’attribut de Sélection DN (Selection attribute DN ) (c’est le champ où avec les valeurs 0 et 100), conservez l’opérateur comme ‘=’ et taper 100 pour la ‘valeur’, de sorte que nous sélectionnerons la fonctionnalité avec DN = 100, qui est la limite du bassin versant. Enregistrez le polygone extrait comme limite du bassin versant.

6. Cliquer sur OK. 

Le modèle doit maintenant ressembler à la figure ci-dessous.

Catchment delineation model

7. Enregistrer le modèle en cliquant sur le bouton et fermez la fenêtre Modélisateur graphique ‘Graphical Modeler’.

Ensuite, nous allons exécuter le modèle.

4.4. Tourner le modèle de délimitation du bassin versant

Maintenant, nous sommes prêts à exécuter le modèle de délimitation du bassin versant. 

1. Ouvrir la table d’attribut de la couche de résultat ‘Snapped outlet’ afin que nous puissions copier les coordonnées plus tard. 

2. Dans la boîte à outils de traitement choisir modèles | Hydrologie | Délimitation du captage ‘Models | Hydrology | Catchment delineation’.

3. Dans le dialogue Délimitation du bassin versant ‘Catchment Delineation’, choisir la couche ‘filled_DEM’ en tant que DEM rempli. Copier les coordonnée X et Y de l’exutoire à partir de la table d’attribut de la couche ‘snapped_outlet’. Enregistrer la limite du bassin versant sous le nom ‘Rur_catchment.shp’.

4. Cliquez sur Exécuter. Fermez le dialogue après traitement.

Le résultat devrait ressembler à la figure ci-dessous.