# TP manipulation et traitements de données LiDAR avec QGIS et R

Louis Rey

► To cite this version:

Louis Rey. TP manipulation et traitements de données LiDAR avec QGIS et R. Doctoral. Lyon 2, France. 2024. hal-05048934

HAL Id: hal-05048934

https://hal.science/hal-05048934v1

Submitted on 28 Apr 2025

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
# TP manipulation et traitements de données LiDAR avec QGIS et R

Octobre 2024

<figure><img src="image_2.png" /></figure>

Source : [futura-sciences](https://futura-sciences)
Objectifs pédagogiques

* Manipuler des données LiDAR

* Utiliser les principaux algorithmes de classification des points sols

* Utiliser les principaux algorithmes d'interpolation raster

* Utiliser des outils gratuits et open-source R et QGIS pour le traitement des données LiDAR

* Faire une carte de lecture du paysage
Principaux logiciels gratuits pour manipuler des données LiDAR

1. QGIS et QGIS avec le package LasTools

2. CloudCompare

3. R avec package LidR
Contexte du TP

* Sortie terrain du 7 et 8 novembre 2024

* Sur la commune "Les Avenières Veyrins-Thuellin" en Isère

* A environ 4 km du Rhône actuel

* D'après la carte de l'état Major de 1836 il y avait des canaux dans cette zone

Problématique : Peut-on identifier des paléochenaux du Rhône et peut-on identifier des anciens aménagements humains (ex : canaux de dérivation) ?
# Téléchargement d'une dalle de nuage LiDAR HD de l'IGN

Dalle nuage de points LiDAR HD classifé :

https://geoservices.ign.fr/lidarhd#telechargementclassifiees

<figure><img src="image_3.png" /></figure>
# Téléchargement d'une dalle de nuage LiDAR HD de l'IGN

Depuis 2024, uniquement possible de télécharger les nuages de points LiDAR HD de l'IGN classifiées, ainsi pour ce TP vous devrez déclassifier votre nuage pour apprendre à le classifier

Dans QGIS il n'y a pas d'algorithme de classification des points gratuit pour le moment :

* Il est possible de passer par un package LasTools (payant à partir d'un certain nombre de données)

* Logiciel CloudCompare

* Langage de programmation (ex : R)
# Téléchargement d'une dalle de nuage LiDAR HD de l'IGN

<figure><img src="image_4.png" /></figure>

QGIS prend en charge nativement la visualisation des nuages de points \*.las ou \*.laz depuis la version QGIS 3.18+.
## Ouvrir dans QGIS le morceau de dalle LiDAR HD de l'IGN

Chaque bloc d'acquisition LiDAR HD (bloc carré de 50 km x 50 km en général) est découpé en dalles LAZ de 1 km x 1km (source : IGN, 2024). Nuage déjà coupé pour la zone d'étude

<figure><img src="image_5.png" /></figure>

<figure><img src="image_6.png" /></figure>

<figure><img src="image_7.png" /></figure>
Utiliser le profil d'élévation de QGIS

<figure><img src="image_8.png" /></figure>

<figure><img src="image_9.png" /></figure>

<figure><img src="image_10.png" /></figure>
# Classification de l'IGN

Les nuages de points LiDAR HD classifiés issus d'un processus très automatisé de classification internalisé (mélange algorithmes IA et classiques), mis au point par l'IGN (IGN,2024)

Attribut de classe du point :

* 8 classes respectant des valeurs prédéfinies des spécifications ASPRS ;

* 4 classes avec une valeur personnalisée (64, 65, 66 et 67).

<table><thead><tr><td>Valeur</td><td>Description</td></tr></thead><tbody><tr><td>1</td><td>Non classé</td></tr><tr><td>2</td><td>Sol</td></tr><tr><td>3</td><td>Végétation basse (0-50 cm)</td></tr><tr><td>4</td><td>Végétation moyenne (50 cm-1,50 m)</td></tr><tr><td>5</td><td>Végétation haute (+1,50 m)</td></tr><tr><td>6</td><td>Bâtiment</td></tr><tr><td>9</td><td>Eau</td></tr><tr><td>17</td><td>Tablier de pont</td></tr><tr><td>64</td><td>Sursol pérenne</td></tr><tr><td>65</td><td>Artefacts</td></tr><tr><td>66</td><td>Points virtuels</td></tr><tr><td>67</td><td>Divers - bâts</td></tr></tbody></table>
Observer votre nuage de points

1. Quelle est la date de création de cette donnée ?

2. Quelles sont les précisions altimétrique (z) et planimétrique (x,y) annoncées pour cette donnée? Est-ce que cela vous paraît réaliste?

3. Quel est le système de coordonnées planimétrique de cette donnée

4. Quel est le système de coordonnées altimétrique de cette donnée?
## Principaux paramètres

<table><thead><tr><td>Attribut au sein des données</td><td>Point Data Record Format 6 (standard ASPRS)</td><td>Traduction</td></tr></thead><tbody><tr><td>x</td><td>X</td><td>x</td></tr><tr><td>y</td><td>Y</td><td>y</td></tr><tr><td>z</td><td>Z</td><td>z</td></tr><tr><td>intensity</td><td>Intensity</td><td>Intensité du signal retour</td></tr><tr><td>return</td><td>Return Number</td><td>Numéro de l'écho</td></tr><tr><td>number_of_return</td><td>Number of Returns (given pulse)</td><td>Nombre d'écho</td></tr><tr><td>classification_flags</td><td>Classification Flags</td><td>Caractéristique du point</td></tr><tr><td>scanner_channel</td><td>Scanner Channel</td><td>Canal du scanner</td></tr><tr><td>scan_direction</td><td>Scan Direction Flag</td><td>Sens de balayage du scanner</td></tr><tr><td>flight_line_edge</td><td>Edge of flight line</td><td>Fin d'axe de vol</td></tr><tr><td>classification</td><td>Classification</td><td>Classe</td></tr><tr><td>user_data</td><td>User Data</td><td>Donnée utilisateur</td></tr><tr><td>angle</td><td>Scan Angle</td><td>Angle de scan</td></tr><tr><td>point_source_id</td><td>Point Source ID</td><td>ID de l'axe de vol</td></tr><tr><td>gps_time</td><td>GPS Time</td><td>Temps absolu</td></tr></tbody></table>
# Délivrables courantes avec un LiDAR

<figure><img src="image_11.png" /></figure>

Modèle Numérique de Hauteur
(MNH) = MNS - MNT

Source : geoservices 2024
Chaînes de traitements du TP

<figure><img src="image_12.png" /></figure>

$$ \text{MNH} = \text{MNS} - \text{MNT} $$
<figure><img src="image_13.png" /></figure>

Comment obtenir un
MNT ?
Classifier les points sols selon deux méthodes courantes

**CSF** : Cloth Simulation Filter

**PMF**: Progressive Morphological Filter

<figure><img src="image_14.png" /></figure>

Source: [LidR](https://www.lidr.com)
# Classification des points sol → Objectif : MNT

<figure><img src="image_15.png" /></figure>

## CSF : Cloth Simulation Filter

est une approche physique inspirée par une simulation de la chute d'un drap ou d'une toile (cloth). Article scientifique de Wuming Zhang, Jianbo Qi, Peng Wan, Hongtao Wang (School of Geography, Beijing Normal University, China)

<table><thead><tr><th rowspan="2">Parameter</th><th rowspan="2">Value</th><th rowspan="2"></th><th rowspan="2"></th></tr><tr><th>sharply undulating</th><th>gently undulating</th><th>flat</th></tr></thead><tbody><tr><td>Terrain relief amplitude</td><td></td><td></td><td></td></tr><tr><td>Cloth rigidness</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Spring-back ratio</td><td>30%</td><td>51%</td><td>65.70%</td></tr></tbody></table>

<figure><img src="image_16.png" /></figure>

Source : Wikipédia, 2024
# Classification des points sol → Objectif : MNT

<figure><img src="image_17.png" /></figure>

## CSF : Cloth Simulation Filter

<table><thead><tr><td>Paramètres</td><td>Explications</td><td>Standard (par défaut)</td></tr></thead><tbody><tr><td>cloth_resolve</td><td>ajustable en fonction de la granularité désirée.</td><td>1 (unité projection)</td></tr><tr><td>max_iterations</td><td>à chaque itération, il classe progressivement davantage de points comme étant au sol, en se basant sur des critères géométriques.(mais ++ de temps)</td><td>500</td></tr><tr><td>class_threshold</td><td>ajustable selon la hauteur des objets hors-sol à détecter.</td><td>0.5 (unité projection)</td></tr><tr><td>rigidness</td><td>dans des zones très accidentées, vous pouvez réduire la rigidité pour que le tissu suive mieux le relief.</td><td>3</td></tr><tr><td>time_step</td><td>Il définit le pas de temps utilisé dans la simulation de la chute du tissu. Plus la valeur est petite, plus le tissu tombe lentement et peut s'adapter aux petites variations du sol.</td><td>0.65</td></tr></tbody></table>
# Classification des points sol → Objectif : MNT

## PMF: Progressive Morphological Filter → itératif

Filtre progressivement les points à partir des fenêtres de taille croissante pour identifier ceux qui appartiennent au sol.

<figure><img src="image_18.png" /></figure>
Classification des points sol → Objectif : MNT

PMF: Progressive Morphological Filter → itératif

<table><thead><tr><td>Paramètres</td><td>Explications</td><td>Standard (par défaut)</td></tr></thead><tbody><tr><td>ws</td><td>window size</td><td>À vous de choisir</td></tr><tr><td>th</td><td>threshold height for ground points</td><td>À vous de choisir</td></tr></tbody></table>

Source : LidRbook
# Avantages vs inconvénients CSF et PMF

<table><thead><tr><td>Méthode</td><td>Fonctionnement</td><td>Avantage(s)</td><td>Inconvénient(s)</td></tr></thead><tbody><tr><td>CSF</td><td>La méthode CSF simule un drap suspendu au-dessus d'un nuage de points LiDAR, qui s'ajuste progressivement pour s'étendre et "tomber" sur les points les plus bas, identifiant ainsi les points du sol.</td><td>+++ zones complexes et denses<br>++ Fonctionne bien pour des topographies irrégulières</td><td>-Temps de calcul pouvant être conséquent si gros nuage de points<br>- Peut nécessiter un paramétrage complexe dans certains cas</td></tr><tr><td>PMF</td><td>La méthode PMF implémente un algorithme de segmentation de points du sol basé sur un filtre morphologique progressif.<br>Paramètre Th = Limite pour hauteur max sol et Ws = contrôle la taille de la fenêtre locale</td><td>++ Efficace en zone peu complexe (ex : zone urbaine)<br>+++Rapide</td><td>-Fonctionne mal en environnement complexe comme des berges de rivières, forêts...</td></tr></tbody></table>
# Rasterisation des points sol (algorithme TIN)

<figure><img src="image_19.png" /></figure>

## TIN (Triangulated Irregular Network)

Source: [QGIS TIN](https://qgis.org/en/discover/qgis-tin/

<figure><img src="image_20.png" /></figure>

Tente de créer une surface de triangles formés par les points voisins les plus proches.

Le principal inconvénient de l'interpolation TIN est que les surfaces ne sont pas lisses et peuvent donner un aspect irrégulier. Cela est dû à des pentes discontinues sur les bords du triangle et des points de données d'échantillons.

Dans R fonction rasterize_terrain(). L'option "method" te permet de choisir entre TIN et IWD.
# Rasterisation des points sol (algorithme IDW)

<figure><img src="image_21.png" /></figure>

IWD (Inverse Distance Weighting) est une méthode d'interpolation qui repose sur l'idée que les points proches d'un point à estimer ont plus d'influence que les points éloignés.

<figure><img src="image_22.png" /></figure>

Source: [QGIS IDW](https://qgis.org/enODOCS/qq/qgsl/10000000000000000000000000000000.html)

L'altitude de ce point est déterminée par une moyenne pondérée des altitudes des points voisins. Plus un point est proche de celui à estimer, plus son influence sera importante, car le poids attribué diminue avec la distance.

Dans R "algorithm = knnidw(k=10)"

Knnidw : K-Nearest Neighbors (KNN) et Inverse Distance Weighting (IDW).
# Avantages inconvénients TIN et IWD

<figure><img src="image_23.png" /></figure>

<table><thead><tr><td>Méthode</td><td>Avantage</td><td>Inconvénients</td></tr></thead><tbody><tr><td>TIN</td><td>Exploite pleinement la structure irrégulière des points</td><td>Peut donner des zones du MNT avec beaucoup de petits sommets</td></tr><tr><td>IWD</td><td>Fonctionne bien pour des terrains relativement réguliers et lorsque les points sont uniformément répartis</td><td>Lisse les zones et peut être embêtant pour des zones de crêtes ou de changement topographique</td></tr></tbody></table>
Comment obtenir un
MNS ?

<figure><img src="image_24.png" /></figure>
Classification des points les plus hauts → Objectif : MNS

<figure><img src="image_25.png" /></figure>

Source : [geoservices 2024](https://geoservices.2024)
## Rasterisation des points les plus hauts → Objectif : MNS

<figure><img src="image_26.png" /></figure>

**rasterize_canopy ()** : Cette fonction du package lidR est utilisée pour générer un raster de hauteur de la canopée. Hauteur la plus haute

**p2r()** : C'est un algorithme de rasterisation (point-to-raster) utilisé avec **rasterize_canopy()** (source : [R_GIS_04](https://www.gis.org.cn/GIS/GIS_04.html))

**Option Subcircle** = l'algorithme ne prend en compte que les points situés dans un cercle de rayon. **Une fois le point le plus haut trouvé pour chaque cellule, le raster est généré avec la hauteur maximale**

**Exemple** : mns_LiDAR_IGN<- rasterize_canopy(nuageHDclasse, res = 0.45, algorithm = p2r(subcircle = 0.15))
<figure><img src="image_27.png" /></figure>

Quelle résolution spatiale
choisir ?
Quelle résolution spatiale choisir ? (exemple)

<figure><img src="image_28.png" /></figure>

Ex : 20 points/m2

Quelle taille de pixel faut il
choisir pour avoir au moins
**1 point/pixel** ?
Quelle résolution spatiale choisir ? (exemple)

<figure><img src="image_29.png" /></figure>

Ex : 20 points/m2

Quelle résolution [m] de pixel
faut il choisir pour avoir au
moins **1 point/pixel** ?

Densité : Nb pts/surface =
20pts/m2

Spixel [m2] : Stotale/Nb pts

Résolution [m] : $\sqrt{\text{Spixel}}$
Quelle résolution spatiale choisir ? (exemple)

<figure><img src="image_30.png" /></figure>

Ex : 20 points/m2

Quelle résolution [m] de
pixel faut il choisir pour
avoir au moins 1
point/pixel ?

22,36 cm
Avant de commencer le TP

* Ouvrir R et RStudio et QGIS (version >3.18)

* Créer vous un projet QGIS là où vous avez enregistrer le dossier avec les données et le diaporama du TP

* Créez vous un projet RStudio et enregistrer là où vous avez enregistrer le dossier également

* Créer un nouveau script R et enregistrez le au même endroit
Traitements

<figure><img src="image_31.png" /></figure>

Visualisation

<figure><img src="image_32.png" /></figure>

Optionnel

<figure><img src="image_33.png" /></figure>
Court rapport

Un rapport comprenant :

(i) Une explication succincte des principales lignes de code

(ii) Une réponse aux questions avec des captures d'écran si besoin

<figure><img src="image_34.png" /></figure>
# Préparation de l'environnement R studio

<figure><img src="image_35.png" /></figure>

## Ouvrir R studio

Créer un nouveau projet à l'endroit où vous avez copié le dossier `Tp_LiDAR` que je vous ai transmis

Créer un nouveau script et sauvegarder le après l'avoir nommé

Pour savoir où sont enregistrés vos packages, tapper : `>> .libPaths()`

Assurez vous d'avoir une seule version de R installée sur votre ordinateur, risque de problèmes de dépendance autrement (aller dans `C:\Program Files\R`)

Connaître la version R que vous avez tapé dans la console : `>> R.version.String`
# Préparation de l'environnement R studio

<figure><img src="image_36.png" /></figure>

## #installer les packages

install.packages("ggplot2")

install.packages("lidR")

install.packages("raster")

install.packages("sp")

## # activer les librairies

library(ggplot2)

library(lidR)

library(raster)

library(sp)
Charger le fichier .laz de l'IGN

<figure><img src="image_37.png" /></figure>

nuageHDclasse <- readLAS("nuage_coupe.laz")

print(nuageHDclasse)

plot(nuageHDclasse)

nuageHDclasseSol <- filter_poi(nuageHDclasse, Classification == 2)

print(nuageHDclasseSol)

plot(nuageHDclasseSol)

writeLAS(nuageHDclasseSol, "nuage_classifieIGNsol_secteur_1.laz")"
# Déclassification nuage de points

## Regarder les différentes classes dans votre nuage :
nuage@$classification *

<figure><img src="image_38.png" /></figure>

## Reclassifier les points :
nuageHDclasse@$Classification <= 0

plot(nuageHDclasse, color = "Z", size = 1)

writeLAS(nuageHDclasse, "nuage_b brut.laz")

nuageHDdeclasse <-readLAS("nuage_b brut.laz")

<table><thead><tr><td>Valeur</td><td>Description</td></tr></thead><tbody><tr><td>1</td><td>Non classé</td></tr><tr><td>2</td><td>Sol</td></tr><tr><td>3</td><td>Végétation basse (0-50 cm)</td></tr><tr><td>4</td><td>Végétation moyenne (50 cm-1.50 m)</td></tr><tr><td>5</td><td>Végétation haute (+1,50 m)</td></tr><tr><td>6</td><td>Bâtiment</td></tr><tr><td>9</td><td>Eau</td></tr><tr><td>17</td><td>Tablier de pont</td></tr><tr><td>64</td><td>Sursol pérenne</td></tr><tr><td>65</td><td>Artefacts</td></tr><tr><td>66</td><td>Points virtuels</td></tr><tr><td>67</td><td>Divers - bâtis</td></tr></tbody></table>

<footnote>*Le symbole @ est utilisé pour accéder à un slot d'un objet S4. S3 où on utilise le symbole $ pour les dataframes</footnote>
# Classifier les points sols selon les deux méthodes principales

## # Cloth Simulation Filter (CSF) #package lidR

nuage_classif_csf <- classify_ground(nuage, csf()) # csf est la méthode la plus courante de classification des pts sols

print(nuage_classif_csf)

plot(nuage_classif_csf, color = "Classification")

## #Filtrer uniquement pts sol

nuage_classif_csf sol <- filter_poi(nuage_classif_csf, Classification == 2)

## package lidR

plot(nuage_classif_csf sol)

writeLAS(nuage_classif_csf sol, "nuage_classif_csf sol.laz")
Filtrer uniquement les points sols

<figure><img src="image_39.png" /></figure>

**# Progressive Morphological Filter (PMF)**

```
nuage_classif_pmf <- classify(ground(nuage, algorithm = pmf ws = 5, th = 0.2))
```

```
print(nuage_classif_pmf)
```

```
plot(nuage_classif_pmf, color = "Classification")
```

**#Filtrer uniquement pts sol**

```
nuage_classif_pmfsol <- filter_poi(nuage_classif_pmf, Classification ==2) # lidR
```

```
plot(nuage_classif_pmfsol)
```

```
writeLAS(nuage_classif_pmfsol, "nuage_classif_pmf паl. laz")
```

*Question 1 : Quelles différences entre les nuages de points sol CSF et PMF et lequel semble le mieux approprié pour votre terrain d'étude ?*
Filtrer le nuage classifié de l'IGN pour ne garder uniquement les
points sols

<figure><img src="image_40.png" /></figure>

plot(nuageHDclasse)

nuageHDclassesol <- filter_poi(nuageHDclasse, Classification==2)

plot(nuageHDclassesol)

writeLAS (nuageHDclassesol, "nuageHDclasse паl. laz")

Question 2 : Comparer la densité des différents nuages de points sol : (1) IGN classifié (2) Classifié par CSF (3) Calssifé PMF. Qu'observez vous ? Comparer les nuages de points ?
# Rasteriser les points sols en faisant une interpolation (MNT)

<figure><img src="image_41.png" /></figure>

## Méthode TIN Triangulated Irregular Network #par défaut résolution 1 mètre

### #CSF et TIN

```
Mnt_csf_tin <-rasterize_terrain(nuage_classif_csf sol, algorithm = tin(), res=0.25)
writeRaster(Mnt_csf_tin, "mnt_csf_tin.tif", overwrite = TRUE)
```

### #PMF et TIN

```
mnt_pmf_tin <-rasterize_terrain(nuage_classif_pmf sol, algorithm = tin(), res=0.25)
writeRaster(mnt_pmf_tin, "mnt_pmf_tin.tif", overwrite = TRUE)
```
# Rasteriser les points sols en faisant une interpolation (MNT)

<figure><img src="image_42.png" /></figure>

## Méthode IDW Inverse Distance Weighting

Paramètre k : Cela indique que l'algorithme utilisera les k plus proches voisins pour estimer la valeur des cellules du raster

### #CSF et IDW

```
mnt_csf_idw <- rasterize_terrain(nuage_classif_csf sol, algorithm = knnidw(k=10), res = 0.25)
```

```
writeRaster(mnt_csf_idw, "mnt_csf_idw.tif", overwrite = TRUE)
```

### #PMF et IDW

```
mnt_pmf_idw <- rasterize_terrain(nuage_classif_pmf sol, algorithm = knnidw(k=10), res = 0.25)
```

```
writeRaster(mnt_pmf_idw, "mnt_pmf_idw.tif", overwrite = TRUE)
```

> Question 3 : Comparer les MNT interpolation IDW et interpolation TIN. Laquelle des interpolations vous semble la plus adaptée ? et pourquoi ?
Rasteriser les points sol du nuage déjà classifié de l'IGN (MNT)

<figure><img src="image_43.png" /></figure>

print(nuageHDclasse sol)

#IDW

mnt_lidarHD_idw<-rasterize_terrain(nuageHDclasse sol, algorithm = knnidw(k=10),res=0.25)

writeRaster(mnt_lidarHD_idw, "mnt_lidarHD_idw.tif", overwrite = TRUE)

Question 4 : Comparer le MNT à partir des points sols CSF et interpo IDW avec le MNT points sol classifiés par l'IGN interpo IDW. Qu'observez vous ? Lequel semble meilleur ?
# Rasteriser les points de canopé (MNS)

<figure><img src="image_44.png" /></figure>

mns_LiDAR_IGN<- rasterize_canopy(nuageHDclasse, res = 0.45, algorithm = p2r(subcircle = 0.15))

plot(mns_LiDAR_IGN)

writeRaster(mns_LiDAR_IGN, "mns_LiDAR_IGN.tif")

<figure><img src="image_45.png" /></figure>

<figure><img src="image_46.png" /></figure>
## Calculer le MNH

<figure><img src="image_47.png" /></figure>

res(mns_LiDAR_IGN)

res(mnt_lidarHD_idw)

crs(mns_LiDAR_IGN)

crs(mnt_lidarHD_idw)

print(mns_LiDAR_IGN)

print(mnt_lidarHD_idw)

mnt_lidarHD_idw_resampled <- resample(mnt_lidarHD_idw, mns_LiDAR_IGN)

mnh<- mns_LiDAR_IGN - mnt_lidarHD_idw_resampled

writeRaster(mnh, "mnh.tif")

**Question 5 : Quels intérêts d'utiliser un MNH ?**
# Carte

Doit comprendre :

(i) Une carte avec une vue 2D du MNT LiDAR HD IGN avec vos analyses de paysages

(ii) Un profil en long montrant une coupe du nuage de points brute (prendre un maximum de diversité du paysage)

Vous pouvez vous aider du MNT- 1m de l'IGN

Remarques :

* Doit apparaître la légende, la flèche du Nord, l'échelle et toutes autres informations qui vous semblent utiles.

* Pour le choix de la zone de profil, choisez une zone pertinente.

* Utilisez de préférence QGIS → vous pouvez utilisez d'autres outils pour améliorer votre carte finale, libre à vous
<figure><img src="image_48.png" /></figure>

<figure><img src="image_49.png" /></figure>
Merci pour votre écoute !

Avez vous des questions ?
Vous pourriez en avoir besoin

<figure><img src="image_50.png" /></figure>

QGIS
# Reprojeter le nuage de points

las <- lastransform(las, epsg_to = 4326)

<figure><img src="image_51.png" /></figure>

<figure><img src="image_52.png" /></figure>

<figure><img src="image_53.png" /></figure>
# Reprojeter le vecteur d'emprise

emprise <- st_transform(emprise, crs = EPSG0)

<figure><img src="image_54.png" /></figure>

<figure><img src="image_55.png" /></figure>

<figure><img src="image_56.png" /></figure>
# Couper un LiDAR par vecteur

lasCoupe < lasclip(las, emprise)

<figure><img src="image_57.png" /></figure>

<figure><img src="image_58.png" /></figure>

<figure><img src="image_59.png" /></figure>
## Fusionner des nuages de points LiDAR avec

<figure><img src="image_60.png" /></figure>

* `folder_path <- getwd()` # récupérer chemin dans lequel votre projet est enregistré

* `nomFichiers_laz <- list.files(path = folder_path, pattern = "\\.laz$", full.names = T)` # $ signifie la fin de la chaîne

* `las_list <- lapply(las_files, readLAS)` # laply permet d'appliquer une fonction à chaque élément d'une lsite

* `nuage_fusionne <- do.call(r.bind, last_list)`

* `writeLAS(nuage_fusionne, "nuage_fusionne.laz")`

## Fusionner des nuages de points LiDAR avec QGIS

<figure><img src="image_61.png" /></figure>

* Gestion des données nuage de points > Fusionner

<figure><img src="image_62.png" /></figure>
# Avantages vs inconvénients des méthodes d'interpolation raster

<table><thead><tr><td>Méthode</td><td>Fonctionnement</td><td>Avantage(s)</td><td>Inconvénient(s)</td></tr></thead><tbody><tr><td>Triangulated Irregular Network (TIN)</td><td>La triangulation de Delaunay est unique et l'interpolation linéaire est sans paramètre.</td><td>la solution la plus simple car elle ne fait intervenir aucun paramètre</td><td>créer un MNT non lisse et qu'elle ne peut pas extrapoler le terrain en dehors de l'enveloppe convexe délimitée par les points au sol car il n'y a pas de facettes de triangle en dehors de l'enveloppe convexe.</td></tr><tr><td>Invert distance weighting (IDW)</td><td>Elle repose sur l'hypothèse selon laquelle la valeur à un point non échantillonné peut être estimée comme une moyenne pondérée des valeurs à des points situés à une certaine distance limite d ou à partir d'un nombre k donné de voisins les plus proches.</td><td>elle est plus résistante aux artefacts de bord car elle utilise un voisinage plus pertinent</td><td>génère des terrains « bosselés » et probablement pas aussi réalistes que ceux générés à l'aide de TIN.</td></tr><tr><td>Krigeage</td><td>Est une méthode d'interpolation géostatistique qui estime la valeur d'une variable en un point inconnu en se basant sur les valeurs observées des points voisins, tout en prenant en compte la structure spatiale et la covariance entre ces points. Il permet ainsi de minimiser l'erreur d'estimation en intégrant des modèles de variogramme pour décrire la variabilité spatiale.</td><td>approche la plus avancée et la plus fiable</td><td>Complexe et prend du temps à être utiliser avec fiabilité</td></tr></tbody></table>
Manipulation CloudCompare (optionnel)

<figure><img src="image_63.png" /></figure>

CloudCompare est un logiciel Open Source Français permettant la manipulation, l'affichage, la comparaison et le recalage de nuage de points provenant de données laser et Photogrammétrique.
# Ouverture du nuage de points 3D lidar dans CloudCompare

File>Open ou glisser et déposer le nuage classifié de l'IGN

Du fait de la longueur des coordonnées X Y, CloudCompare va appliquer une translation au fichier pour diminuer le nuage du fichier

<figure><img src="image_64.png" /></figure>

<figure><img src="image_65.png" /></figure>
# Visualiser le nuage de points

## Regarder les propriétés

* click gauche sur le nuage dans l'onglet DB Tree

## Dans l'onglet Scalar Field sélectionner "classification"

## Régler les différents paramètres : colors sclate et SF display params

<figure><img src="image_66.png" /></figure>
## Le visualiser avec une couleur selon l'altitude et regarder la distribution des valeurs

Tools>Projection>>Export coordinates to SF

<figure><img src="image_67.png" /></figure>

Dans la barre du haut sélectionner l'histogramme

<figure><img src="image_68.png" /></figure>

<figure><img src="image_69.png" /></figure>
# Segmenter manuellement votre nuage de points

## Outil ciseaux dans la barre du haut

<figure><img src="image_70.png" /></figure>

## Une nouvelle barre apparaît avec des outils pour le ciseaux

<figure><img src="image_71.png" /></figure>

<figure><img src="image_72.png" /></figure>
## Segmenter à partir d'un intervalle

<figure><img src="image_73.png" /></figure>
# Classifier le sol avec l'algorithme "CSF"

<figure><img src="image_74.png" /><figcaption>## Onglet CSF filter (barre d'affichage de gauche)</figcaption></figure>
# Bibliographie

Blog SIG & Territoires:

https://www.sigterritoires.fr/index.php/qgis-pour-lidarmodele-numerique-de-terrain-mnt-avec-lastools/

LidRbook : https://r-lidar.github.io/lidRbook/

Exploiter les nuages de points LIDAR avec qgis 3.34:

https://www.youtube.com/watch?v=NBkkf-H1G0Y&t=448s

Vidéo youtube pour faire carte QGIS 3D, 2D et profil elevation :

https://www.youtube.com/watch?v=Ocbb86cn8VE

CloudCompare Wikipédia : https://fr.wikipedia.org/wiki/CloudCompare
# Installation et récupération des données LiDAR

Installer l'extension Open LiDAR Toolbox, Lastool

Doit être installer les binaires/exécutables pour le système d'exploitation respectif :

https://rapidlasso.de/downloads/ (Lastool)

Installer sur le C:\ les extension

Explication GitHub pour Lastool →

https://github.com/stefaneichert/OpenLidarToolbox?tab=readme-ov-file#classify-las-laz