# Carte LiDAR à tuiles XYZ (image « lidar-maps ») — cf. docs/MAPS.md. # # Sert la pyramide de tuiles Web Mercator (schéma OpenStreetMap) rendue à la # demande depuis les dalles du pipeline, plus l'interface de consultation. # Aucun PDAL, aucun GDAL, aucun GPU : Pillow + pyproj suffisent (ARM64 inclus). # # docker compose -f docker-compose.maps.yml up -d --build FROM python:3.12-slim ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe/Paris # Pillow >= 11.3 : encodage/décodage AVIF natif (dalles et sous-tuiles du # pipeline) ; pyproj : reprojection Lambert 93 → Web Mercator sans GDAL. RUN pip3 install --no-cache-dir \ fastapi \ uvicorn \ "pillow>=11.3" \ pyproj WORKDIR /app # Seuls tiles.py, mapserve.py, mapui.py et index.py (registres de couches) sont # importés ; les modules de traitement sont copiés mais jamais chargés. COPY lidar_pipeline/ ./lidar_pipeline/ # CSS/JS de l'interface bâchés dans l'image : le code de la carte suit l'image, # pas le cache de tuiles (régénéré à chaque build). RUN python3 -c "import sys; sys.path.insert(0, '/app'); \ from lidar_pipeline.mapui import write_map_assets, ASSETS_DIRNAME; \ write_map_assets('/app/lidar_pipeline/' + ASSETS_DIRNAME)" RUN groupadd -g 1000 lidar && \ useradd -u 1000 -g lidar -m -s /bin/bash lidar && \ mkdir -p /data/output && \ chown -R lidar:lidar /data ENV LIDAR_OUTPUT_DIR=/data/output \ LIDAR_PORT=8975 \ PYTHONPATH=/app USER lidar EXPOSE 8975 CMD ["python3", "-m", "uvicorn", "lidar_pipeline.mapserve:app", "--host", "0.0.0.0", "--port", "8975"]