Dans cet article vous trouverez comment transférer les couleurs (coloriser) d’une image ou une orthophoto vers les points d’un nuage LIDAR avec la boîte à outils LAStools de QGis permettant un rendu du LIDAR comparable à la photo. Nous allons profiter pour voir comment créer des fichiers .bat avec les traitements LAStools pour traiter un ensemble de fichiers.
1- Les données LIDAR dans QGis 3.32
2- Télécharger les données LIDAR HD de l’IGN et les charger dans QGis
3-Les outils pour les données LIDAR dans QGis 3.32
4-Coloriser un nuage de points à partir d’une orthophoto avec CloudCompare
5-Coloriser un nuage de points à partir d’une orthophoto avec LAStools
Les traitements LAStools
La boîte à outils LASTOOLS se compose de trois types d’outils:
- file –Les outils de base qui prennent un fichier en entrée du traitement.
- folder – Des outils similaires mais qui prennent un répertoire en entrée de traitement. Le traitement s’effectuera sur tous les fichiers LAS ou LAZ présents dans ce répertoire. Le nom du traitement se termine par Pro.
- pipelines – des outils qui enchaînent automatiquement une série des outils précédents.
Dans le grouper folder vous trouvez seulement une partie des traitements présents dans le groupe file. Mais vous pouvez, avec peu de travail, créer un fichier de type .bat pour exécuter une commande de type file sur un répertoire complet. Nous verrons ici la procédure avec l’outil LAScolor qui n’est présent que dans le groupe file.
LAScolor: coloriser un nuage de points
Nous allons prendre comme exemple un groupe de quatre nuages de points LIDAR HD de l’IGN non classés et l’image de la BDOrtho correspondante.
LAStools peut être exécuté en ligne de commande, en dehors de QGis. Au lieu de rechercher les syntaxes nécessaires pour la ligne de commande, nous pouvons exécuter l’outil dans QGis et récupérer dans le journal d’exécution la ligne de commande générée par le plugin. Avec quelques modifications, nous aurons le fichier .bat que nous souhaitons.
Exécution de l’outil par le plugin de QGis
Nous exécutons l’outil LAScolor de la boîte de traitements LAStools de QGis:
Pour l’outil nous sélectionnons un des nuages des points, l’orthophoto et nous donnons un nom quelconque en sortie. Nous ne garderons pas le résultat du traitement puisque nous allons le réaliser avec le fichier .bat pour l’ensemble de nuages du répertoire.
Les outils LAStools sont fournis en deux versions : 32 et 64 bits. Par défaut, les dialogues utilisent la version 32 bits de l’outil. Le problème est que ces versions sont limitées à la gestion de 4Go de mémoire et que, vu le nombre de points présents dans les nuages LIDAR, cette limite est très souvent franchie. Il vaut mieux, pour éviter les messages d’erreur d’allocation de mémoire, cocher systématiquement la case version 64 bits.
Quand vous cliquez Exécuter, la fenêtre affiche l’onglet Journal:
A la suite de « LAStools command line » vous trouverez la ligne de commande que nous recherchons.
C:/lidar/cantal/LAStools\bin\lascolor -cpu64 -i "C:\lidar\coloriser\input\semis1.laz" -image "C:\lidar\coloriser\ortho.tif" -o "C:/lidar/coloriser/output/semis1.laz"
Dans cet exemple:
C:/lidar/cantal/LAStools\bin\lascolor est l’exécutable de l’outil
-cpu64 correspond à la demande d’exécuter la version 64 bits de l’outil
-i « C:\lidar\coloriser\input\semis1.laz » est le nuage en entrée
-image « C:\lidar\coloriser\ortho.tif » est l’image à utiliser pour coloriser le nuage de points
-o « C:/lidar/coloriser/output/semis1.laz » est le nuage colorisé résultant
Nous ouvrons un fichier texte vide en édition pour construire notre petit programme batch.
La première ligne de ce fichier sera la ligne qui crée la boucle de traitement pour tous les fichiers d’un répertoire.
Cette ligne sera
for /r répertoire_à_traiter %%i in (extension à retenir) do (
En langage clair on donnera comme contenu à la variable %%i le nom complet (chemin compris) de chaque fichier ayant une certain extension à l’intérieur d’un répertoire donné.
Dans notre exemple cette ligne sera:
for /r "C:\lidar\coloriser\input" %%i in (*.laz) do (
Si vos nuages de points sont au format LAS il faudra changer *.laz par *.las
La deuxième ligne sera la commande qui exécute LAScolor, où nous allons modifier l’entrée et la sortie.
Pour le fichier en entrée de la commande nous remplaçons -i « C:\lidar\coloriser\input\semis1.laz » par la variable de la boucle for : -i %%i
Pour le fichier en sortie, il faut utiliser une variable pas très connue. En effet, nous ne pouvons pas utiliser la variable %%i telle quelle parce qu’elle contient le chemin du fichier en entrée et que nous voulons créer le fichier en sortie dans un autre répertoire. Nous devons donc récupérer le nom du fichier en entrée sans le chemin. Pour cela on utilise la variable %%~ni. Le ~n récupère le nom de %%i sans le chemin ni l’extension.
Notre sortie sera donc:
-o C:/lidar/coloriser/output/%%~ni.laz
On doit ajouter à la variable le chemin du répertoire en sortie ainsi que l’extension que nous souhaitons.
Le résultat final de notre fichier .bat sera alors:
for /r "C:\lidar\coloriser\input" %%i in (*.laz) do (
C:/lidar/cantal/LAStools\bin\lascolor -cpu64
-i %%i
-image "C:\lidar\coloriser\ortho.tif"
-o C:/lidar/coloriser/output/%%~ni.laz
)
Pour l’exécuter, ouvrez une fenêtre du terminal (fenêtre de commande), allez dans le répertoire du fichier bat que vous venez de créer et tapez .\nom_du_fichier.bat (1)
Vous verrez le traitement de vos nuages de points se réaliser (2):
Vous voyez sur la figure le message en raison de l’absence de licence. Au dessus de 3 millions de points, il y aura des petites distorsions et quelques attributs en moins.
Le résultat final des quatre nouveaux nuages de points peut maintenant se charger dans la fenêtre de QGis:
Merci pour l’ensemble de vos tutos ! Je suis en pleine exploration pour exploiter efficacement le Lidar et vos informations me sont précieuses !
Cordialement
Bonne continuation
Merci beaucoup!