Le MNT de chaque dalle s'étend d'une bande de 100 m remplie avec les points sol des 8 tuiles voisines (option « Raccord des bords ») : les rendus à grand noyau (openness, SVF, LRM) deviennent continus d'une dalle à l'autre, les images restent recadrées sur le kilomètre exact. Pendant une génération, la carte encadre les dalles du run : orange pulsant en cours de rendu, rouge en échec — les coins WGS84 sont portés par /api/status pour toutes les dalles non terminées. La file de génération trie les dalles du nord au sud et passe à 10 workers GPU.
59 lines
2.3 KiB
YAML
59 lines
2.3 KiB
YAML
# Machine de traitement — générateur de tuiles (cf. docs/DEPLOY_WEBAPP.md).
|
|
#
|
|
# Tourne sur la machine puissante (GPU + PDAL) et expose l'API que les
|
|
# webapp distantes (Raspberry Pi, docker-compose.webapp.yml) appellent :
|
|
# dessin d'une zone → téléchargement IGN + traitement GPU ici, les tuiles
|
|
# sont servies à la demande par la webapp (cache peuplé au fil des
|
|
# consultations).
|
|
#
|
|
# docker compose -f docker-compose.worker.yml up -d --build
|
|
# docker compose -f docker-compose.worker.yml logs -f worker
|
|
# docker compose -f docker-compose.worker.yml down
|
|
#
|
|
# Traitement batch ponctuel des dalles présentes dans input/ :
|
|
# docker compose -f docker-compose.worker.yml run --rm --build process [-r 0.5,0.2 | --force]
|
|
services:
|
|
# Générateur de tuiles : API de génération (webapp complète, GPU)
|
|
worker:
|
|
build: .
|
|
image: lidar-lidar
|
|
container_name: lidar-worker
|
|
init: true
|
|
user: "1000:1000"
|
|
gpus: all # retirer cette ligne sur une machine sans GPU
|
|
ports:
|
|
- "8973:8973" # joignable par la webapp distante (LIDAR_GENERATION_URL)
|
|
volumes:
|
|
# input/ en écriture : l'API y télécharge les dalles IGN manquantes
|
|
- ./input:/data/input
|
|
- ./output:/data/output
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
- LIDAR_INPUT_DIR=/data/input
|
|
- LIDAR_OUTPUT_DIR=/data/output
|
|
# Les générations lancées depuis une webapp distante utilisent le GPU
|
|
- LIDAR_GPU=1
|
|
- LIDAR_WORKERS=10
|
|
# Protéger l'API si le réseau n'est pas de confiance : même valeur que
|
|
# LIDAR_REMOTE_TOKEN sur chaque webapp distante (sinon, laisser commenté)
|
|
# - LIDAR_API_TOKEN=change-moi
|
|
command: python3 -m uvicorn lidar_pipeline.webapp:app --host 0.0.0.0 --port 8973
|
|
restart: unless-stopped
|
|
|
|
# Traitement ponctuel des dalles input/ (une passe puis arrêt)
|
|
process:
|
|
build: .
|
|
image: lidar-lidar
|
|
container_name: lidar-process
|
|
init: true
|
|
user: "1000:1000"
|
|
gpus: all # retirer cette ligne sur une machine sans GPU
|
|
volumes:
|
|
- ./input:/data/input
|
|
- ./output:/data/output
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
command: ["python3", "-m", "lidar_pipeline", "/data/input", "-o", "/data/output", "-r", "0.2", "-g", "all"]
|
|
profiles:
|
|
- process
|