Skip to content

Instantly share code, notes, and snippets.

@esgn
Last active July 31, 2026 14:43
Show Gist options
  • Select an option

  • Save esgn/4bbf298ad76f4d72e9f3c133cbc96cf1 to your computer and use it in GitHub Desktop.

Select an option

Save esgn/4bbf298ad76f4d72e9f3c133cbc96cf1 to your computer and use it in GitHub Desktop.
Extraire une zone du LiDAR HD à distance avec PDAL et PDAL Wrench

Extraire une zone du LiDAR HD à distance avec PDAL et PDAL Wrench

À partir d’une emprise exprimée en Lambert-93, ce tutoriel montre comment extraire depuis la Géoplateforme uniquement les points LiDAR HD nécessaires, même lorsque la zone couvre plusieurs dalles ou plusieurs blocs, sans télécharger intégralement les fichiers COPC sources en local.

Trouver les dalles LiDAR HD concernées sur la zone

Passage par un VPC (Virtual Point Cloud)

Le service de téléchargement de la Géoplateforme propose des fichiers VPC pour chaque bloc de LiDAR HD. Exemple : https://data.geopf.fr/chunk/telechargement/download/LiDARHD-NUALID/NUALHD_1-0__LAZ_LAMB93_PQ_2025-03-14/index.vpc

Ces fichiers indexent les dalles du bloc et peuvent être utilisés directement avec PDAL Wrench et PDAL.

Cette méthode est aisément utilisable si la zone d'intérêt est contenue dans un seul bloc. Sinon, il faut utiliser les flux WFS ci-dessous pour récupérer la liste des blocs concernés.

Passage par le service WFS

Le service WFS de la Géoplateforme propose un feature type pour les blocs et une couche pour les dalles du produit LiDAR HD.

Extraire une zone de la couverture LIDAR HD à distance

On présente ici un large éventail de solutions. L'utilisation de PDAL avec une liste de dalles reste la solution préconisée pour le moment.

Extraire au sein d'un bloc LiDAR HD

En utilisant un VPC

Avec PDAL

Bloqué par l'issue suivante : PDAL/PDAL#5088

Avec PDAL Wrench

L'utilisation de la commande translate est sous-optimale car elle scanne l'ensemble des dalles du VPC (~2500 dalles)

pdal_wrench translate \                                                                                                       
  --input="https://data.geopf.fr/chunk/telechargement/download/LiDARHD-NUALID/NUALHD_1-0__LAZ_LAMB93_PQ_2025-03-14/index.vpc" \
  --output="extract_bbox.copc.laz" \
  --bounds="([890250,890750],[6262500,6263500])" \
  --verbose

Le plus efficace consiste à créer un polygone geojson représentant la zone d'extraction

{
  "type": "FeatureCollection",
  "name": "bbox",
  "crs": {
    "type": "name",
    "properties": {
      "name": "EPSG:2154"
    }
  },
  "features": [
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Polygon",
        "coordinates": [[
          [890250, 6262500],
          [890750, 6262500],
          [890750, 6263500],
          [890250, 6263500],
          [890250, 6262500]
        ]]
      }
    }
  ]
}

puis d'utiliser la commande clip avec ce polygone

pdal_wrench clip \
  --input="https://data.geopf.fr/chunk/telechargement/download/LiDARHD-NUALID/NUALHD_1-0__LAZ_LAMB93_PQ_2025-03-14/index.vpc" \
  --polygon="bbox.geojson" \
  --output="extract_bbox.copc.laz" \
  --verbose    

Il est à noter que cette commande enchaîne un clip multi-threadé et un merge mono-threadé (voir ici pour plus de détails)

En utilisant une liste de dalles avec PDAL

Une fois la liste de dalles sur la zone d'extraction obtenue via le flux WFS (exemple de requête WFS pour cet exemple), il est nécessaire de lister chaque dalle dans un bloc readers.copc au sein d'une pipeline PDAL.

pipeline.json

[
  {
    "type":"readers.copc",
    "filename":"https://data.geopf.fr/chunk/telechargement/download/LiDARHD-NUALID/NUALHD_1-0__LAZ_LAMB93_PQ_2025-03-14/LHD_FXX_0890_6263_PTS_LAMB93_IGN69.copc.laz",
    "bounds":"([890250,890750],[6262500,6263500])"
  },
  {
    "type":"readers.copc",
    "filename":"https://data.geopf.fr/chunk/telechargement/download/LiDARHD-NUALID/NUALHD_1-0__LAZ_LAMB93_PQ_2025-03-14/LHD_FXX_0890_6264_PTS_LAMB93_IGN69.copc.laz",
    "bounds":"([890250,890750],[6262500,6263500])"
  },
  "extract_on_two_tiles.laz"
]

La commande pdal pipeline pipeline.json permet d'éxécuter la pipeline PDAL ainsi définie.

Extraire sur plusieurs blocs

En utilisant plusieurs VPC

Avec PDAL

Bloqué par l'issue suivante : PDAL/PDAL#5088

Avec PDAL Wrench

La meilleure solution est ici de réaliser un clip sur chacun des VPC et de faire un merge final sur les différents extraits obtenus.

En utilisant une liste de dalles avec PDAL

Il n'y ici rien à modifier à la facon de faire pour un seul bloc. Le flux WFS indexe l'ensemble des dalles et permet de récupérer la liste de toutes les dalles concernées quel que soit leur bloc.

FAQ

Comment installer PDAL

conda create --yes --name pdal --channel conda-forge pdal

Comment installer PDAL Wrench

conda create --yes --name pdal_wrench --channel conda-forge pdal_wrench

Comment télécharger l’index complet des dalles LiDAR HD ?

CPL_DEBUG=ON ogr2ogr \
  -f GeoJSON lidar_hd_dalles.geojson \
  WFS:"https://data.geopf.fr/wfs/ows?SERVICE=WFS&VERSION=2.0.0" \
  "IGNF_NUAGES-DE-POINTS-LIDAR-HD:dalle" \
  -t_srs EPSG:4326 \
  -lco RFC7946=YES \
  --config OGR_WFS_PAGING_ALLOWED ON \
  --config OGR_WFS_PAGE_SIZE 5000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment