Documenter l'export PDF et le sidecar qualité

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Antoine Jacquin
2026-09-27 16:30:21 +02:00
parent 1f8f13dd13
commit b18db21e4a
2 changed files with 52 additions and 0 deletions

View File

@ -167,6 +167,55 @@ filtrées : couche inconnue (ou la précision elle-même) refusée comme
principale, mode validé, opacités bornées à 0–1. Un fichier de l'ancienne pile
(`order`/`on`/`blend`) est ignoré, sauf le fond.
## Export PDF (planche d'impression terrain)
Le bouton **⎙** ouvre une carte de réglages (format A4/A3, paysage/portrait,
échelle 1:1 000 à 1:10 000, titre optionnel) et affiche un **cadre jaune en
pointillés** qui montre la zone qui sera imprimée. Le cadre reste toujours
centré sur la vue : c'est la carte qu'on déplace en dessous, pas le cadre —
il se recalcule (géométrie Lambert 93 exacte, `GET /api/export/frame`) à
chaque déplacement et à chaque changement de réglage. Les réglages sont
mémorisés dans `localStorage` du navigateur et rechargés à l'ouverture
suivante. **Exporter le PDF** télécharge la planche (`GET
/api/export/pdf`), nommée `relief_{x_km}_{y_km}_1-{échelle}.pdf` (centre
Lambert 93 en km, à trois décimales).
La planche (module `lidar_pipeline/export_pdf.py`) est composée directement
en Lambert 93 depuis les sources déjà rendues (pas de passage par les tuiles
XYZ), puis dessinée en vectoriel (texte, grille, légende) avec `reportlab` —
Pillow + pyproj + reportlab uniquement, **sans numpy** : elle tourne aussi
bien sur l'image complète que sur l'image légère du Pi seul. Contenu :
- la carte du **relief orienté**, recadrée à l'échelle demandée (300 dpi en
A4, 250 dpi en A3 — borne la mémoire du Pi, ~36 Mo en A3) ; hors emprise des
dalles disponibles, la zone reste blanche et hachurée ;
- un **quadrillage Lambert 93** (pas 100 m aux échelles 1:1 000/1:2 000, 500 m
au 1:5 000, 1 000 m au 1:10 000) gradué en marge, et les **coins WGS84** de
la zone imprimée aux quatre angles ;
- une **flèche du nord géographique** tenant compte de la convergence du
méridien (la carte est orientée sur le nord du quadrillage L93, pas le nord
géographique — l'écart est indiqué en degrés) ;
- une **échelle graphique** (barre alternée) et l'**échelle numérique** ;
- une **rose des orientations à 8 points** (N/NE/E/SE/S/SO/O/NO), même
formule CIELAB que la rose de la fiche de dalle ;
- le texte de légende du relief orienté, repris de `VIZ_LEGENDS` (source
unique avec l'interface et le TileJSON) ;
- un **encart qualité** : miniature de la densité de points sol (mailles
50 m, classes de couleur), chiffres clés (densité moyenne, maille la plus
faible, part de surface interpolée, période d'acquisition), zones **hachurées
en blanc** là où la qualité n'est pas renseignée, et une ligne « **Donnée
manquante (sans relief)** » listant les dalles de la zone qui n'ont pas
encore été générées ;
- un cartouche : titre (par défaut, liste des dalles couvertes), échelle,
format, dpi, centre L93, taille de la zone, date d'export et mention de
source IGN.
Un seul export PDF à la fois : un second appel pendant qu'un export tourne
reçoit `429` (réessayer). L'export n'est **jamais délégué** à
`LIDAR_GENERATION_URL` : contrairement à la génération de tuiles, la carte
légère seule (Pi sans worker) sait exporter par elle-même, à partir des
sources déjà rapatriées sur disque.
> **Licence** — LiDAR HD est diffusé sous **Licence Ouverte 2.0** :
> l'attribution IGN est obligatoire et doit rester visible chez le client.
> Avant d'utiliser ces rendus comme calque de **saisie** dans OpenStreetMap,