naivo.fr — Assistant de sécurité en montagne
sécurité montagne, aide à la décision, bera, modélisation géographique, préparation de sorties, gestion des risques, data engineering, open data, SIG, Python, PostGIS
DE 10 SOURCES DISPARATES À UNE PLATEFORME UNIQUE D’AIDE À LA DÉCISION EN MONTAGNE.
- Plateforme utilisée en conditions réelles par des pratiquants de ski de randonnée.
- Centralisation de données officielles (Météo-France) et collaboratives (Skitour et Camptocamp).
- Pipeline GIS automatisé générant des calques topographiques (pentes, ombrages, courbes) à 25m de résolution.
- Sélectionné par data.gouv.fr pour le suivi des sorties de données en décembre 2025 (1).
- Couverture médiatique nationale et régionale (4).

- API et intégration : reverse-engineering et intégration de 5 APIs tierces (Météo-France DPBRA, Skitour, Spotair, Windy, Meteoblue).
- Data Engineering : pipelines ETL incrémentaux (Python, SQLite) avec rate limiting, retry logic et déduplication.
- SIG / GIS : pipeline GDAL complet : clip, reprojection, hillshade, slope, contours, Terrain-RGB, PMTiles.
- Infrastructure : Cloudflare Workers (proxy CORS, cache, allowlist 100+ hosts) et R2 pour distribution Edge.
Le challenge technique :
- Intégrer 5 APIs aux formats et authentifications hétérogènes (Bearer tokens, API keys, XML, JSON, CSV) dans un pipeline unifié.
- Transformer des DEM de plusieurs Go en tuiles vectorielles et raster légères (PMTiles) sans serveur cartographique.
- Construire un proxy Cloudflare Worker gérant le CORS, le caching geospatial (coordonnées normalisées à 3 décimales) et une allowlist de 100+ domaines de webcams.
- Garantir un ETL incrémental fiable basé sur un curseur d’ID persistant en SQLite, avec déduplication par clé naturelle.
1 Contexte et problématique
La préparation d’une sortie en montagne repose sur l’analyse de sources fragmentées : bulletins d’estimation des risques d’avalanche, relevés de stations automatiques, webcams, conditions de terrain et prévisions météo. Cette dispersion augmente la charge cognitive et le risque d’erreur. naivo centralise et spatialise ces données sur une carte interactive pour offrir une lecture immédiate des conditions.
2 Données
- Météo-France DPBRA : bulletins d’Estimation des Risques d’Avalanche. Parsing XML robuste (gestion de namespaces, champs optionnels) vers JSON normalisé.
- Météo-France PaquetObs : relevés horaires CSV (température, vent, rafales, neige) pour 6 départements alpins.
- Skitour API : conditions de skiabilité et sorties récentes. Double mode d’extraction (backfill par date / incrémental par ID).
- Spotair / Windy : URLs de webcams géoréférencées.
- IGN / Copernicus : modèles Numériques de Terrain (DEM) pour le calcul des pentes > 30 degrés.
- Open-Meteo : prévisions météo haute résolution et modèles de surface.
- Meteoblue : météogrammes générés à la volée via le proxy Cloudflare Worker.
3 Approche et méthodologie
Workflow :
- Extraction API : scripts Python dédiés par source (Météo-France, Skitour, Spotair, Windy) avec authentification OAuth2/Bearer, rate limiting configurable et retry.
- Transformation : parsing XML/CSV vers JSON/SQLite normalisé. Nettoyage HTML, déduplication par clé naturelle (sortie_id).
- Pipeline GIS : GDAL (clip DEM par départements, reprojection EPSG:3857, hillshade, slope RGBA, contours vectoriels, Terrain-RGB).
- Tiling : Tippecanoe (vector tiles) et gdal_translate/gdaladdo (raster tiles) vers MBTiles, puis conversion PMTiles.
- Distribution : Cloudflare Worker (3 routes :
/meteogramavec cache geospatial,/headpour le health-check webcam,/imgpour le proxy CORS). - Frontend : Astro et React et MapLibre GL JS.
Justification de l’architecture :
L’utilisation de PMTiles élimine le besoin d’un serveur cartographique (MapServer, GeoServer), réduisant les coûts d’infrastructure à zéro (Cloudflare R2 et Workers). L’ETL incrémental (curseur d’ID persistant en SQLite) minimise les appels API et garantit la fraîcheur des données.
Data Engineer
- Conception de 5 connecteurs API avec gestion unifiée du rate limiting (RateLimiter configurable, MAX_RPM).
- Pipeline ETL dual-mode (backfill/incrémental) avec persistance d’état SQLite.
- Parsing XML robuste du BERA Météo-France (962 lignes, gestion de 5 types de situations avalancheuses).
- Proxy Cloudflare Worker avec allowlist de 100+ domaines, normalisation de coordonnées pour le caching geospatial.
Full-Stack Engineer
- Application Astro/React avec rendu cartographique MapLibre GL JS.
- Hooks React dédiés (useBeraData, useBeraPdf) pour le chargement asynchrone des données BERA.
- Composants interactifs : StationCharts, MassifSearch, MiniMap.
4 Technologies utilisées
- Backbone : Python 3.11+, Rasterio, lxml (XML parsing).
- GIS Pipeline : GDAL (gdalwarp, gdaldem, gdal_contour), Tippecanoe, PMTiles CLI.
- Data Storage : SQLite (conditions, relevés), GeoJSON, Parquet.
- Infrastructure : Cloudflare Workers (JavaScript), Cloudflare R2, PMTiles.
- Frontend : Astro, React, MapLibre GL JS, TypeScript.
- APIs intégrées : Météo-France DPBRA, Météo-France PaquetObs, Skitour, Spotair, Windy, Meteoblue.
5 Lien vers le projet
6 Cas d’usage et perspectives
- Usage : aide à la décision pour le ski de randonnée et l’alpinisme, utilisée avant chaque sortie.
- Perspectives : extension géographique (Pyrénées, Alpes Suisses/Italiennes), intégration de capteurs temps réel supplémentaires et exploitation des données historiques pour l’analyse de tendances.