Transformation · dbt + PostGIS

Des données brutes aux réponses de l'IA

Toutes les règles vivent dans des modèles dbt, en SQL, dans PostgreSQL. Elles sont versionnées, testées et rejouées à chaque chargement.

Trois étapes

Trois étapes pour la transformation des données

Inspirés de l'architecture médaillon (bronze, argent, or) des plateformes de données modernes.

Ingestion

Les données de chaque source sont enregistrées telles quelles, sans modification.

Transformation

Nettoyées, uniformisées, croisées et enrichies de calculs : les données deviennent fiables.

Exposition

Seules les données utiles sont mises à disposition de l'IA, en lecture seule.

Référentiel

Utiliser un référentiel unique des massifs

Chaque application (Météo-France, Skitour, Camptocamp…) a son propre découpage des massifs. Pour uniformiser les données, celui de Météo-France sert de référence.

  1. Les 35 massifs de Météo-France : ils sont fournis avec leur contour, c'est ce qui en fait la référence.
  2. Chaque point trouve son massif : pour un départ ou un sommet, PostGIS cherche le contour qui le contient. Le bon bulletin d'avalanche s'applique alors directement.
  3. Les autres découpages y sont reliés : le massif Skitour « Ecrins » s'étend sur 4 massifs Météo-France. Le lien passe par la position des sommets.
En service35 massifs · 1 413 points de départ rattachés
Le massif Skitour « Ecrins » chevauche quatre massifs Météo-France Oisans (BRA 15) Pelvoux (BRA 16) Champsaur (BRA 17) Embrunnais-Parpaillon « Ecrins » massif Skitour sommet du massif Skitour « Ecrins »
Les points orange sont les sommets du massif Skitour « Ecrins », répartis sur Oisans, Pelvoux, Champsaur et Embrunnais-Parpaillon.
Météo-France · BRA

Un bulletin par massif et par jour, tel que publié

Le XML du bulletin est découpé en colonnes ; le niveau de risque officiel n'est jamais modifié.

  • Bulletin applicable : le dernier émis qui couvre la date. Un bulletin corrigé remplace celui du jour.
  • Par altitude : niveau sous et au-dessus de l'altitude pivot, évolution dans la journée, orientations signalées (SW → SO).
  • Annexes : hauteur de neige par altitude et versant, neige fraîche, météo, tendances.
  • Licence Ouverte : source et date citées dans chaque réponse, bulletin périmé signalé. Toute estimation Skibrief est un champ séparé.
Exemple · Chartreuse

Bulletin émis le 05/03/2026 pour le 06/03

Sous 2 000 m
1
Au-dessus
2

Pentes signalées : E, SE, S, SO, O

En service22 802 bulletins depuis novembre 2023, 68 406 relevés d'enneigementVoir le code →
Texte libre → données

Du texte libre à une liste d'objets

Le champ « matériel » des topos Skitour, classé par un LLM dans un vocabulaire fermé, depuis SQL (dbt).

Liste de matériel des topos, découpée et normalisée par un LLM 1 · Texte normalisé minuscules, sans accents ni ponctuation 2 · Un appel LLM par texte texte complet envoyé : le contexte reste lisible 3 · Sortie contrainte schéma de sortie JSONimposé au LLM 4 · Incrémental un texte classé est évaluéune seule fois Exemples réels TEXTE DU TOPO LISTE OBTENUE Couteaux si neige dure, crampons et piolet pour le couloir terminal à 45/50° et la crête sommitale couteaux crampons piolet Crampons et/ou piolet utiles, matériel de sécurité sur glacier crampons piolet materiel glacier Couteaux, piolet, crampons, tout l'équipement de progression sur glacier : baudrier, corde, broches, … couteaux piolet crampons baudrier corde broches Règles données au modèle • Obtenir les objets uniquement sans les conditions, lieux ou la quantité « si neige dure », « pour l'arête », « 30 m ») • Singulier (cordes → corde) ou pluriel pour ce qui va par deux (couteaux, crampons) • Ignorer le matériel indispensable pour toute sortie : skis, peaux, bâtons, casque, DVA, pelle, sonde
Géométrie

Découpage d'une trace GPX

Les traces GPX sont nettoyées puis découpées en tronçons avec dbt et PostGIS.

Nettoyage et découpage des traces GPX 1 · Points trop proches retirés un point n'est gardé qu'à plus de 5 m du précédent (GPS à l'arrêt, doublons…) pause : 4 points à moins de 5 m 2 · Morceaux raccordés, variantes séparées Trace corrigée et identification des variantes coupure : raccordée partie 1 (principale) partie 2 > 300 m 3 · Pertes de signal repérées Pour les traces enregistrées (horodatées) si deux points sont à plus de 300 mle signal est considéré comme perdu 420 m sans point Le tronçon est « interpolé » mais le terrain est inconnu et moins fiable 4 · Contrôle qualité, puis tronçons de 50 m simplification à 5 m, puis découpe tous les 50 m le long de la ligne n° 1 n° 2 n° 3 n° 4 n° 5 ok 85% douteuse 14% rejetée <1% rejetée : trace de moins de 500 m ou de plus de 40 km douteuse : départ à plus de 1 km du départ Skitour, ou > 20 % de signal perdu
Relief · IGN

Mesurer la pente le long d'une trace

L'IGN découpe la France en petites cases de 25 m × 25 m et donne l'altitude du sol de chaque case (BD ALTI).

Mesurer la pente le long d'une trace avec le relief de l'IGN 1 · Conserver l'essentiel La carte est découpée en grands carrés de 2,5 km, remplis de cases de 25 m. On ne garde que les carrés où passe une trace. grand carré : 2,5 km · quadrillage fin : les cases de 25 m (simplifié) Carré calculé : une trace (trait noir) passe à moins de 100 m. Ses voisins (pointillés) sont lus aussi : la pente d'une case du bord dépend des cases d'à côté, dans le carré voisin. Environ 1 % du relief chargé est calculé. 2 · La pente d'une case Zoom : 9 cases de 25 m, avec leur altitude. 1712 1727 1742 1710 1725 1740 1708 1723 1738 N S O E Pente 31° Orientation Ouest • D'ouest en est (1 710 → 1 740 m) : 30 m de montée sur 50 m. • Du sud au nord (1 723 → 1 727 m) : 4 m seulement, presque à plat. • Les deux ensemble donnent une pente de 31°. L'orientation est le côté vers lequel la pente descend : ici vers l'ouest. On la range dans l'une des 8 directions. 3 · Deux pentes pour chaque tronçon de 50 m Zoom : chaque case de 25 m affiche sa pente. 26 29 35 37 33 32 37 23 29 33 31 28 30 36 25 31 32 28 28 33 38 28 31 29 26 29 35 38 28 28 25 24 30 35 34 tronçon de 50 m de trace case la plus raide de chaque zone < 30° 30–35° 35–40° > 40° Pente sous les skis : 33° La case la plus raide que touche la trace (à 5 m près). C'est la pente sur laquelle on passe. Pente autour de la trace : 37° La case la plus raide à moins de 25 m, de chaque côté. C'est la pente au-dessus et au-dessous de la trace, celle d'où une avalanche peut partir. Pourquoi deux pentes ? Quand le bulletin annonce un danger faible (1), seule compte la pente sous les skis. Dès le danger limité (2), c'est toute la pente autour qui compte
Exposition

La trace croisée avec le bulletin du jour

Le bulletin signale où la neige est la plus fragile. Skibrief mesure quelle longueur de trace raide y passe.

La trace croisée avec le bulletin d'avalanche 1 · Le bulletin Chartreuse, 6 mars 2026 Danger 2 au-dessus de 2 000 m 1 au-dessous Versants signalés N NE E SE S SO O NO En violet : de l'est à l'ouest 2 · La trace (Chamechaude, versant ouest) Profil de la montée, coupé en morceaux de 50 m. zone signalée par le bulletin 1300 m 1500 m 1700 m 1900 m 2100 m km 0 km 1 km 2 moins de 30° raide, hors zone raide, en zone 3 · Les mesures 0,29 km de pente raide (30° et plus) dans la zone signalée 0,50 km de pente raide hors de la zone signalée Pour comparer des itinéraires, pas pour les juger. Le niveau de danger reste celui de Météo-France, inchangé.
Temps de trajet

Trouver les topos en fonction du temps de trajet en voiture

L'IGN dessine la zone atteignable en voiture. Skibrief garde les points de départ qui s'y trouvent. Exemple : depuis Grenoble.

Trouver les sorties à moins d'une heure d'une position 60 min 30 min Grenoble « environ 60 min » Les Clots, 62 min : exclu dans la zone à moins de 250 m du bord dehors Comment ça marche 1 Une ville ou une position « à moins d'une heure de Grenoble » 2 L'IGN dessine la zone atteignable en voiture en 1 h service d'isochrone de la Géoplateforme 3 Skibrief garde les départs situés dans la zone, ou juste au bord 4 … et propose leurs itinéraires avec les autres critères de la question Source : IGN – Géoplateforme, data.geopf.fr 148 points de départ à moins d'1 h ~350 itinéraires atteignables ~1 s pour répondre