Skip to the content.

Tutoriel LiDAR : Génération d’un MNT avec Whitebox Tools sur QGIS

Bienvenue dans ce tutoriel LiDAR ! Nous allons voir comment traiter une grosse quantité de dalles LiDAR, pour pouvoir générer un MNT (Modèle Numérique de Terrain) à une échelle communale.

Un Modèle Numérique de Terrain est une représentation du relief sous forme de données altimétriques. Contrairement à un modèle qui inclurait les bâtiments ou la végétation, un MNT ne représente que le sol nu. Il peut est utilisé pour l’analyse du relief, la gestion des risques naturels, la modélisation hydraulique ou encore la planification d’aménagements.

Dans ce tutoriel, nous allons nous placer sur la commune de Valdrôme, un petit village entouré de colines au coeur de la Drôme.

valdrome Village de Valdrôme au milieu des colines

Tous les matériaux nécéssaires à ce tutoriel sont disponibles sur le dépôt Github associé à cette page, mais vous pouvez très bien le reproduire en sélectionnant vos propres tuiles LiDAR.


Table des matières


Télécharger les données LiDAR

L’IGN produit et diffuse une cartographie 3D de l’intégralité du sol et du sursol en données LiDAR. La couverture est presque complète, et vous pouvez suivre l’état d’avancement de l’acquisition de données LiDAR sur cette page.

Pour télécharger des données, rendez-vous sur la page LiDAR de l’IGN.

Descendez jusqu’à Nuages de points classés et modèles numériques. Vous trouverez l’interface de sélection des tuiles comme indiqué en Figure 1.

Carte de sélection des tuiles LiDAR Figure 1 : Carte de sélection des tuiles LiDAR

Cherchez la zone sur laquelle vous souhaitez récupérer des données LiDAR

Zoom sur la carte des tuiles LiDAR
Figure 2 : Zoom sur la carte des tuiles LiDAR

Avec l’outil Polygone ou Rectangle, tracez l’emprise sur laquelle vous souhaitez télécharger les dalles LiDAR.

Sélection des tuiles LiDAR
Figure 3 : Sélection des tuiles LiDAR

Téléchargez le fichier .txt contenant la liste des liens de téléchargement pour toutes les tuiles, en cliquant sur le bouton représenté en Figure 4.

Téléchargement de la liste des tuiles
Figure 4 : Téléchargement de la liste des tuiles

L’IGN conseille d’utiliser une extension de votre navigateur pour télécharger des fichiers en masse. Toutefois, ce genre d’outil n’est pas toujours très modulable ou facile d’utilisation, alors nous mettons à votre disposition ce script python pour télécharger toutes vos tuiles à partir du fichier liste_dalle.txt dans le dossier de votre choix.

Pour l’utiliser, il vous suffit de le télécharger, dans le bloc if __name__ == "__main__": de modifier les paramètres :

# Fichier contenant la liste de liens de téléchargement des tuiles
TILES_LIST = "liste_dalle.txt"

# Dossier de téléchargement des tuiles
OUT_DIR = "/QGIS/dalles_lidar"

Par vos propres chemins d’accès, absolus ou relatifs à l’emplacement depuis lequel vous allez exécuter le script.

Ensuite, exécutez le script selon vos habitudes, VS Code, Spyder, terminal …

Le processus de téléchargement peut être un peu long selon la quantité de tuiles téléchargées (plusieurs dizaines de minutes, voire plus d’une heure).


Vos dalles sont téléchargées dans votre dossier !

Tuiles téléchargées
Figure 5 : Dalles téléchargées après le téléchargement

Fusionner toutes les dalles LiDAR

Dans l’optique de produire un MNT à l’échelle du village, on ne va pas faire les traitements individuellement pour chacune des dalles.

Il va falloir les fusionner.

Sur QGIS, il existe plusieurs outils qui traitent des données LiDAR : Whitebox Tools que nous allons voir après, LAStools, PDAL…

LAStools a une limitation sur MacOS, et en plus n’est pas open-source.
Whitebox Tools ne permet malheuresement pas de fusionner des dalles LiDAR.
Donc nous allons utiliser PDAL qui est un outil open-source en ligne de commande.

Pour installer PDAL, nous recommandons de passer par Anaconda.

Dans un terminal (PowerShell ou bash), exécutez:

# Vérifier si Conda est bien installé
conda --version

Si Conda n’est pas installé dans votre environnement, vous pouvez vous référer à cette documentation pour procéder à l’installation.

# Activer l'environnement de base de Conda
conda activate base
# Installer PDAL
conda install -c conda-forge pdal

Ensuite, il va falloir créer un fichier de pipeline pour opérer la fusion. Rendez-vous dans votre répertoire de travail et créez un fichier merge_pipeline.json qui devra contenir ceci :

{
    "pipeline": [
        "dalles_lidar/*.laz",
        {
            "type": "writers.las",
            "filename": "data/valdrome_lidar.laz",
            "compression": "laszip"
        }
    ]
}

Vous pouvez également récupérer le fichier directement ici.

Cette pipeline va indiquer à PDAL de charger toutes vos dalles, puis de les écrire dans un nouveau fichier (filename) en format compressé.

Bien entendu, les chemins renseignés dans “pipeline” et “filename” doivent être relatifs à l’emplacement de votre fichier merge_pipeline.json.

Exemple dans notre cas :

└── 📁TUTO_LiDAR
    └── 📁dalles_lidar
        └── LHD_FXX_0899_6379_PTS_C_LAMB93_IGN69.copc.laz
        └── ...
    └── 📁data
    └── merge_pipeline.json

Avec une aussi grosse quantité de tuiles, il est important de rester en format compressé .laz, car si on essaie d’enregistrer le fichier fusionné en format .las (non compressé et donc plus rapide à lire par QGIS par la suite) le fichier résultant fera plusieurs centaines de Go, ce qui, sur la plupart des ordinateurs, risque de saturer complètement l’espace de stockage. C’est pour cette raison que l’on passe par un pipeline, car si on passait directement par une commande dans le terminal avec pdal merge, on n’aurait pas pu contrôler le mode d’écriture en compression laszip.

Ensuite, une fois que tout est mis en place, on peut procéder à la fusion des tuiles en exécutant la commande suivante dans le terminal dans lequel conda a précédemment été activé. Bien entendu, il faut avoir navigué dans le terminal pour rejoindre le dossier dans lequel se trouve merge_pipeline.json.

pdal pipeline merge_pipeline.json

A l’issue de cette étape, toutes vos dalles sont fusionnées ! Le fichier résultant devrait faire plusieurs dizaines de Go.

Installer le plug-in QGIS Whitebox Tools

Cette étape n’est pas la plus facile, le plug-in Whitebox Tools ne fonctionnant pas tout à fait comme les autres plug-in QGIS. Il s’agit d’un outil initialement en ligne de commande, et pour s’en servir dans QGIS il faut d’abord l’installer en ligne de commande.

Commencez par installer le plug-in sur QGIS : plug-in qgis
Figure 6 : Téléchargement du plug-in Whitebox Tools sur QGIS

Vous pouvez essayer de lancer n’importe quel traitement, vous verrez que cela ne fonctionne pas.

Installons donc l’exécutable Whitebox Tools.

Rendez-vous sur le site de la Whitebox Geospatial Incorporated.

Vous allez croire en premier lieu que c’est payant, mais en fait n’ayez crainte, vous pouvez bien le télécharger pour 0$, comme indiqué en Figure 7.

site whitebox
Figure 7 : Téléchargement de l’outil WhiteboxTools

En cliquant sur download, vous serez ensuite invités à télécharger la version compilée de l’outil dans le format adapté à votre système d’exploitation. Choisissez celle qui convient, et suivez les instructions suivantes qui vous correspondent.

Installation pour Windows

Décompressez l’archive zip dans un dossier comme C:\WhiteboxTools\.

Ensuite, allez dans QGIS.
Onglet “Préférences” > “Options”
Option “Traitements” > “Fournisseur de traitement” > “WhiteboxTools executable”

Dans la zone prévue à cet effet, renseignez le chemin d’accès à l’exécutable WhiteboxTools, comme indiqué en Figure 8.

exe whitebox
Figure 8 : Paramétrage du chemin d’accès de l’exécutable WhiteboxTools dans QGIS

Faites ‘OK’ et redémarrez QGIS.

Le plug-in WhiteboxTools est prêt à fonctionner sur QGIS !

Installation pour MacOS/Linux

Dans votre répertoire utilisateur, exécutez :

mkdir -p ~/WhiteboxTools

Pour créer un dossier associé à l’outil.

Ensuite, exécutez :

unzip ~/Downloads/WhiteboxTools_[version].zip -d ~/WhiteboxTools/

A adapter avec le nom de votre version, et éventuellement votre emplacement de téléchargement si celui-ci n’était pas Downloads.

Ensuite, il faut rendre l’outil exécutable :

chmod +x ~/WhiteboxTools/WhiteboxTools_[version]/WBT/whitebox_tools

Vérifiez que l’outil est bien installé en tapant :

 ~/WhiteboxTools/WhiteboxTools_[version]/WBT/whitebox_tools --version

Si cela vous affiche la version, c’est que c’est bon !

Sur MacOS, le popup de la Figure 9 risque de s’afficher.

gatekeeper
Figure 9 : Blocage sur MacOS de l’utilisation d’un logiciel extérieur

Pour contourner ce problème, allez dans “Réglages Système” > “Confidentialité et Sécurité”.

Et en bas de la page, vous trouverez :

contourner autorisation
Figure 10 : Contourner le blocage d’un logiciel extérieur.

Cliquez sur “Autoriser quand même”.

Ensuite, relancez

 ~/WhiteboxTools/WhiteboxTools_[version]/WBT/whitebox_tools --version

Et cette fois vous aurez le popup indiqué en Figure 11.

gatekeeper autorisé
Figure 11 : Blocage d’un logiciel extérieur avec possibilité de contournement

Et vous pouvez cliquer sur “Ouvrir quand même”.

Les informations relatives à la version s’afficheront enfin dans votre terminal.

Ensuite, allez dans QGIS.
Onglet “Préférences” > “Options”
Option “Traitements” > “Fournisseur de traitement” > “WhiteboxTools executable”

Dans la zone prévue à cet effet, renseignez le chemin d’accès à l’exécutable WhiteboxTools, comme indiqué en Figure 12.

exe whitebox
Figure 12 : Paramétrage du chemin d’accès de l’exécutable WhiteboxTools dans QGIS

Faites ‘OK’ et redémarrez QGIS.

Le plug-in WhiteboxTools est prêt à fonctionner sur QGIS !


Maintenant, tout est prêt pour produire un MNT dans de bonnes conditions.

Production d’un MNT avec Whitebox Tools

Dans la boîte à outils QGIS, cherchez l’outil LidarTINGridding.

lidartingridding
Figure 13 : Paramètres du traitement LidarTINGridding

Suivez les paramètres indiqués sur la Figure 13.

Commencez donc par sélectionner votre couche LiDAR fusionnée précédemment.

On souhaite produire un MNT, c’est-à-dire une surface qui représente uniquement le terrain, sans la végétation ni les bâtiments. Pour cela, il faut interpoler les altitudes des points LiDAR, c’est pourquoi on garde l’option elevation dans interpolation parameter. Cette option indique à l’algorithme qu’il doit construire la surface en fonction des valeurs d’altitude des points.

Ensuite, pour l’option points returns included, on choisit last. Un signal LiDAR peut être réfléchi plusieurs fois avant d’atteindre le sol. Le premier retour (first) correspond à la première surface rencontrée, souvent la cime des arbres ou le toit des bâtiments. Le dernier retour (last), lui, correspond à la surface la plus basse touchée, donc généralement le sol. Comme on cherche à produire un MNT et non un MNS, on sélectionne uniquement les last returns afin d’exclure les objets en hauteur et ne garder que le relief du terrain.

Enfin, pour obtenir un MNT précis, il est important de filtrer les points qui ne correspondent pas au sol. Les données LiDAR sont classifiées selon différents types d’objets, et certaines classes doivent être exclues pour éviter d’intégrer des éléments indésirables dans le modèle.
Ici, on exclut les classes :

1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18

Qui correspondent notamment aux points non classifiés, à la végétation de différentes hauteurs, aux bâtiments, aux ponts ou encore aux objets artificiels. En filtrant ces classes, on s’assure de ne conserver que les points réellement situés au niveau du sol (classe 2, la seule non exclue), ce qui permet d’obtenir un MNT fidèle à la réalité topographique.

Vous pouvez consulter les correpondances entre les codes et les classe sur ce document.


Une fois ces paramètres configurés, vous pouvez exécuter le traitement en créant une couche temporaire, ou bien en indiquant directement l’emplacement de sauvegarde du fichier de résultat. Nous vous conseillons de l’enregistrer directement car le traitement va être un peu long (1h30 pour 36 dalles, fichier .laz global de 14 Go), et de cette manière vous vous assurez de ne pas perdre le résultat en fermant QGIS par inadvertance à la fin.


Une fois le traitement terminé, QGIS vous affichera probablement le message indiqué en Figure 14

erreur reproj
Figure 14 : Erreur de reprojection du MNT

Whitebox Tools ne conserve pas le système de projection initial des données LiDAR, et donc le MNT en sortie est sans projection, d’où le terme ‘unnamed’.

Pour résoudre ce problème définitivement, commencez par assigner la projection que vous souhaitez au MNT (ici 2154).

assigner proj
Figure 15 : Assigner la projection 2154

Ensuite, exportez le MNT projecté dans un nouveau fichier.

export 1
Figure 16 : Exporter le MNT reprojeté

De cette manière, le fichier est enregistré avec la bonne projection, et le message ne s’affichera plus à chaque ouverture de QGIS.

export 2
Figure 17 : Sauvegarder le MNT reprojeté


Voilà ! Vous avez un beau MNT.

Pour finir ce tutoriel, on peut ajouter un peu de symbologie à notre MNT pour le rendre plus joli.

Avec le mode ombrage, on obtient avec les réglages par défaut ce genre de visualisation :

ombrages
Figure 18 : Symbologie en ombrages

Avec quelques paramétrages, on obtient une carte très jolie du MNT fusionné avec le fond de plan OSM :

ombages osm
Figure 19 : Symbologie en fusion avec le fond de plan

Et voilà, à vous de jouer !


Auteurs : Doris Ballot, Audrey Barbiero, Robin Heckendorn, Lucas Lima.

Ce tutoriel a été réalisé dans le cadre de l’UE 901_22 : introduction au traitement de données LiDAR, M2 SIGMA 2024-2025.