À 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.
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.
Le service WFS de la Géoplateforme propose un feature type pour les blocs et une couche pour les dalles du produit LiDAR HD.
- Ensemble des blocs LiDAR HD disponibles
IGNF_NUAGES-DE-POINTS-LIDAR-HD:bloc- Exemple de requête avec filtrage spatial: https://data.geopf.fr/wfs/?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=IGNF_NUAGES-DE-POINTS-LIDAR-HD:bloc&OUTPUTFORMAT=application/json&BBOX=881000,6220000,936000,6283000,EPSG:2154
- Chaque bloc dans la réponse WFS possède un attribut
namequi fournit son identifiant (ex:PQ) - Le flux ne renvoie pas l'URL de chaque VPC pour chaque bloc. Il faut les construire manuellement.
- Ensemble des dalles LiDAR HD disponibles
IGNF_NUAGES-DE-POINTS-LIDAR-HD:dalle- Exemple de requête avec filtrage spatial: https://data.geopf.fr/wfs/?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=IGNF_NUAGES-DE-POINTS-LIDAR-HD:dalle&OUTPUTFORMAT=application/json&BBOX=881000,6220000,936000,6283000,EPSG:2154
- Chaque dalle dans la réponse WFS possède un attribut
urlqui fournit son url de téléchargement. - Il est recommandé de rajouter le contexte
chunkà l'URL fournie par le WFS pour éviter d'être ralenti par les limites d'usage de la géoplateforme. Soit une URL du typehttps://data.geopf.fr/chunk/telechargement/...après ajout.
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.
Bloqué par l'issue suivante : PDAL/PDAL#5088
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])" \
--verboseLe 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)
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.
Bloqué par l'issue suivante : PDAL/PDAL#5088
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.
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.
conda create --yes --name pdal --channel conda-forge pdalconda create --yes --name pdal_wrench --channel conda-forge pdal_wrenchCPL_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