1. Pourquoi un score de stabilité ?

Quand on demande "quel temps va-t-il faire demain ?" à une application météo classique, la réponse est toujours la même : les valeurs du dernier run du dernier modèle calculé. Cette approche a une limite fondamentale — elle ne dit rien de la fiabilité de cette prévision.

Deux prévisions identiques peuvent avoir des niveaux de confiance très différents. Considérons deux scénarios pour demain à 14h :

Scénario A 9 / 10
Depuis 5 jours, tous les runs de tous les modèles prévoient un vent de 15 nœuds de nord-ouest. La prévision n'a pas bougé. La situation est robuste et bien établie.
Scénario B 3 / 10
Le dernier run prédit 15 nœuds, mais hier il en prévoyait 5, et avant-hier 25. La prévision oscille d'un run à l'autre. La situation est chaotique, difficile à prévoir.

Dans les deux cas, une application classique afficherait "15 nœuds". Solano vous montrerait 9/10 pour le premier scénario et 3/10 pour le second. C'est le cœur de la méthode Solano : mesurer la cohérence temporelle des prévisions, et non seulement leur valeur ponctuelle.

2. Les runs météo : qu'est-ce que c'est ?

Un modèle numérique de prévision atmosphérique est un programme qui résout les équations de la dynamique des fluides sur une grille tridimensionnelle de l'atmosphère mondiale. Il est initialisé à partir d'un "état initial" — une photographie de l'atmosphère à un instant précis, construite à partir de milliers d'observations : stations météo de surface, radiosondages, satellites, bouées marines, mesures d'avions en vol…

Cette initialisation se fait plusieurs fois par jour, à des heures conventionnelles exprimées en temps universel : 00Z, 06Z, 12Z, 18Z (respectivement 1h, 7h, 13h et 19h en heure française d'hiver). Chaque exécution du modèle à partir d'un état initial est appelée un run.

Quelques exemples de fréquence de publication :

À chaque run, le modèle "repart de zéro" avec un état initial légèrement différent (les observations les plus récentes y ont été intégrées), et peut produire des prévisions légèrement — ou parfois très — différentes pour une même date cible. Ce sont ces différences entre runs successifs que Solano mesure et quantifie.

Un run ne remplace pas le précédent : il co-existe avec lui. Pour une date cible qui est dans 3 jours, il existe déjà plusieurs dizaines de runs émis ces derniers jours qui ont prévu les conditions de ce jour-là. Solano conserve cet historique complet.

3. Les modèles analysés par Solano

Solano s'appuie sur la Single Runs API d'Open-Meteo, qui donne accès aux archives historiques de chaque run des grands centres de prévision mondiaux. Jusqu'à 13 modèles atmosphériques sont disponibles selon la localisation, triés du plus précis au plus large :

Modèle Centre Couverture Maille Horizon Fréquence
AROME HDMétéo-FranceFrance1,5 km3 j8×/j
ICON-2IARPAE (Italie)Méditerranée2 km3 j2×/j
UKMO UK HDMet Office (UK)Royaume-Uni2 km2 j24×/j
GEM HRDPSEnvironnement CanadaCanada2,5 km2 j4×/j
ICON-EUDWD (Allemagne)Europe7 km5 j8×/j
ECMWF IFS HRESECMWFMondial9 km15 j4×/j
GEM RDPSEnvironnement CanadaAmérique du Nord10 km3 j4×/j
UKMO ¹Met Office (UK)Mondial10 km7 j2×/j
ARPEGEMétéo-FranceEurope11 km5 j4×/j
GFSNOAA (États-Unis)Mondial13 km16 j4×/j
ICON ¹DWD (Allemagne)Mondial13 km7 j4×/j
ARPEGE Monde ¹Météo-FranceMondial25 km4 j4×/j
GEM GDPS ¹Environnement CanadaMondial25 km10 j2×/j

¹ Modèle de repli mondial — affiché uniquement si la variante régionale haute résolution n'est pas disponible pour ce point (ex : ICON global hors Europe, UKMO global hors Royaume-Uni).

Pour les conditions en mer, Solano analyse également 5 modèles de vagues et courants : ARPEGE-Wave et WAM (Météo-France et ECMWF), GFS-Wave (NCEP), EWAM et le modèle de Courants Météo-France. Les modèles marins ne contribuent pas au score de stabilité atmosphérique — ils sont affichés séparément pour les points en mer.

Chaque modèle couvre des zones géographiques différentes. Lorsqu'un point GPS se trouve hors de la zone de couverture d'un modèle, ce modèle est automatiquement exclu de l'analyse. Pour les familles multi-résolution (ARPEGE, ICON, UKMO, GEM), le modèle régional haute résolution est automatiquement préféré au modèle mondial quand le point est dans sa zone.

4. Le "film des runs" : voir les prévisions évoluer

Pour un point GPS et une date cible données, Solano reconstruit l'ensemble des prévisions émises par chaque modèle pour cette date : depuis le run J-5 jusqu'au run le plus récent. Si la date cible est dans 3 jours, des dizaines de runs ont déjà prévu les conditions de ce jour — depuis différentes distances temporelles.

Ce n'est pas pareil de voir une prévision à 3 jours d'échéance (le modèle tourne aujourd'hui et prédit pour après-demain) et à 1 jour d'échéance (le modèle prédit pour demain avec des données d'initialisation plus récentes et plus précises). En général, plus on est proche du jour cible, plus la prévision est précise — mais pas toujours, et c'est précisément ce que mesure Solano.

Le graphique spaghetti de Solano superpose toutes ces courbes sur un même graphique : chaque ligne représente un run différent, colorée selon son âge. L'interprétation est immédiate :

Cette visualisation permet de distinguer une incertitude structurelle (la situation météo est intrinsèquement difficile à prévoir) d'une incertitude transitoire (les modèles avaient du mal à 5 jours mais s'accordent maintenant à 2 jours).

5. Le calcul du score — formule et pondération

Le calcul du score de stabilité suit un algorithme en quatre étapes, appliqué indépendamment pour chaque modèle et chaque date cible.

Étape 1 — Comparaison heure par heure

Pour chaque heure de la date cible, Solano calcule la moyenne pondérée de tous les runs précédents (chaque run est pondéré selon son âge — voir section 6), puis mesure l'écart entre cette moyenne et la valeur du dernier run :

Δ(heure) = |valeur_dernier_run(heure) − Σ(wi × valeur_runi(heure)) / Σwi|

La moyenne pondérée représente le "consensus historique" des prévisions pour cet instant. Si tous les runs anciens avaient dit 15 nœuds et que le dernier annonce 22 nœuds, l'écart est 7 nœuds — et le score va baisser.

Pour la direction du vent, l'écart n'est pas une différence arithmétique mais l'arc angulaire court (différence angulaire minimale entre deux caps, toujours comprise entre 0° et 180°). Cela évite de considérer que 355° et 5° sont très différents — ils ne le sont que de 10°.

Étape 2 — Moyenne sur toutes les heures

Les écarts heure par heure sont moyennés sur l'ensemble de la journée, produisant un écart_moyen par variable. C'est cette valeur unique — l'écart typique sur la journée entière — qui entre dans la formule de score.

Étape 3 — Conversion en score 0–10 par variable

L'écart moyen est converti en score par une décroissance exponentielle, paramétrée par un seuil S propre à chaque variable :

score = 10 × e−écart_moyen / S

Quelques repères concrets : à écart nul, score = 10 (stabilité parfaite). À écart = S, score ≈ 3,7 — le seuil n'est donc pas le point où le score tombe à 0, mais le point où il a déjà bien chuté. Au-delà de 3×S, le score est inférieur à 0,5 et peut être considéré comme nul. L'exponentielle est délibérément indulgente sur les petits écarts : une divergence de 1 nœud pour des rafales (S = 6) ne fait baisser le score que de 10 à ~8,5.

Variable Seuil S Poids par défaut
💨 Rafales de vent6 nœuds30 %
🌬️ Vent moyen4 nœuds20 %
🌧️ Précipitations1 mm/h20 %
🧭 Direction du vent45°10 %
👁️ Visibilité2 000 m10 %
🌡️ Température3 °C5 %
☁️ Couverture nuageuse20 %5 %

Étape 4 — Agrégation pondérée

Les scores de toutes les variables sont combinés en une moyenne pondérée. Les poids par défaut reflètent l'importance relative de chaque variable pour les activités marines et outdoor (les rafales sont le critère de sécurité le plus critique, suivies du vent moyen et des précipitations). Ces poids sont entièrement personnalisables dans les préférences de l'application.

Lorsqu'un modèle ne dispose pas d'une variable donnée (par exemple, AROME HD ne couvre pas la visibilité marine), le poids de cette variable est automatiquement redistribué sur les autres variables disponibles, afin que le score reste comparable entre modèles.

6. La décroissance temporelle

Tous les runs passés ne sont pas équivalents dans le calcul du score. Un run émis il y a 5 jours était basé sur des données d'observation bien moins récentes qu'un run émis hier — il est donc moins pertinent pour évaluer la cohérence de la prévision actuelle.

Solano applique une pondération exponentielle décroissante à chaque run selon son âge, paramétrée par une constante de temps τ :

poids(run) = e−âge_en_jours / τ avec τ = 2,5 jours

τ est la constante de décroissance : à t = τ, le poids atteint e⁻¹ ≈ 37 % (pas 50 % — la vraie demi-vie serait τ × ln 2 ≈ 1,7 jour). En pratique : un run vieux d'un jour pèse ~67 % d'un run d'aujourd'hui, un run vieux de 4 jours ~20 %, un run vieux de 7 jours moins de 6 %.

Cette décroissance reflète l'intuition météorologique : ce qui était prévu il y a une semaine est moins indicatif de la stabilité actuelle que ce qui était prévu hier ou avant-hier. Un modèle qui "change d'avis" au dernier moment est moins inquiétant qu'un modèle qui oscille depuis plusieurs jours.

Exemple : pour une date cible dans 2 jours, le run d'aujourd'hui pèse 100 %, celui d'hier pèse 67 %, celui d'avant-hier pèse 45 %, et celui de J-5 pèse 14 %. La stabilité récente est donc beaucoup plus déterminante que les fluctuations lointaines.

7. La vérification ERA5 — prévision vs réalité

Le score de stabilité mesure la cohérence interne des prévisions — il ne dit pas si les prévisions étaient justes. Pour compléter cet indicateur, Solano intègre une comparaison directe entre les prévisions historiques et la réanalyse de référence ERA5T.

ERA5 est la réanalyse atmosphérique de l'ECMWF (Centre européen pour les prévisions météorologiques à moyen terme) : une reconstruction cohérente et homogène de l'état de l'atmosphère heure par heure depuis 1940, obtenue par assimilation de données éparses (stations de surface, radiosondages, satellites, bouées) dans un modèle numérique de pointe. Ce n'est pas une mesure directe, mais la meilleure estimation possible de ce qui s'est passé. ERA5T est la version "temps réel" de cette réanalyse, disponible avec environ 1 à 2 jours de délai.

L'onglet 📡 Vérif. du panneau Spaghetti affiche, pour n'importe quel jour des 15 derniers jours disponibles :

Cette visualisation permet de répondre à une question concrète : le modèle qui avait prédit 20 nœuds pour avant-hier avait-il raison ? ERA5T donne-t-il 18 nœuds (bonne prévision) ou 8 nœuds (forte surestimation) ?

Seules les variables atmosphériques disponibles dans ERA5 récent sont affichées : vent, rafales, direction, température, précipitations, couverture nuageuse, pression. Les données marines (vagues, courants) ne sont pas couvertes par ERA5 récent.

8. La fiabilité récente — MAE par échéance

En automatisant la comparaison prévision/ERA5T sur les 15 derniers jours et toutes les échéances, Solano calcule pour chaque modèle une mesure de précision réelle locale : le MAE (Mean Absolute Error — erreur absolue moyenne).

MAE(modèle, variable, échéance J-n) = moyenne(|prévision(J-n) − ERA5T|) sur les 15 derniers jours

Le MAE est calculé séparément :

Ce profil de MAE par échéance révèle le comportement réel de chaque modèle sur votre point géographique précis. Un modèle peut être excellent à J-2 mais médiocre à J-7 ; un autre peut maintenir une précision remarquable jusqu'à J-5. Ces informations aident à pondérer intuitivement les prévisions selon leur échéance.

Variable Bon (<) Acceptable Faible (>)
Vent moyen3 nds3–6 nds6 nds
Rafales4 nds4–8 nds8 nds
Direction du vent20°20–40°40°
Pression MSL1,5 hPa1,5–3 hPa3 hPa
Température1,5 °C1,5–3 °C3 °C

Les MAE sont affichés dans l'application sous forme de badges colorés vert/orange/rouge dans les fiches modèles, et sous forme de graphique temporel J-15 → J-1 dans la vue Spaghetti. Ce graphique montre la courbe de dégradation de la précision avec l'échéance, caractéristique de chaque modèle sur votre point.

9. Le score de départ "Quand partir ?" — formule et calcul

Le score de départ synthétise en un seul score 0–10 les conditions météo rencontrées heure par heure sur l'ensemble de l'itinéraire, pour une activité donnée. Il est distinct du score de stabilité — il n'évalue pas la cohérence des runs mais la qualité météo absolue d'un créneau de départ.

Candidats évalués

Solano évalue 13 créneaux candidats espacés de 3 heures, de D−6h à D+30h (D = heure de départ configurée dans le panneau Route). Pour chaque candidat, le trajet est reconstitué heure par heure — positions calculées par la formule de Haversine à vitesse constante — et la météo est interpolée à chaque position.

Interpolation météo sur la route

Entre deux waypoints consécutifs, toutes les variables scalaires (vent, rafales, précipitations, CAPE, température…) sont interpolées linéairement selon la position sur le segment :

valeur(t) = valeur_A × (1 − t) + valeur_B × t    avec t ∈ [0, 1]

Les directions (vent, vagues, courants) utilisent une interpolation angulaire via les composantes sin/cos (moyenne circulaire pondérée) pour éviter les discontinuités autour de 0°/360° :

θ(t) = atan2(sin(θ_A)·(1−t) + sin(θ_B)·t, cos(θ_A)·(1−t) + cos(θ_B)·t) × 180/π mod 360

Composantes du score

Chaque composante est évaluée par une fonction piecewise linéaire sur des points de rupture [valeur → score 0–10], avec interpolation linéaire entre deux points adjacents et clamp aux extrémités.

Vent moyen (nœuds)

ActivitéOptimumSeuil dégrad.0 kt
⛵ Voile10/10 à 12 kt25 kt → 5 · 32 kt → 02 (calme = pas d'avancement)
🚢 Moteur10/10 de 0 à 10 kt20 kt → 7 · 30 kt → 3 · 40 kt → 010
🚴 Vélo10/10 de 0 à 5 kt15 kt → 6 · 25 kt → 2 · 35 kt → 010
🥾 Rando10/10 de 0 à 10 kt20 kt → 5 · 30 kt → 2 · 40 kt → 010

En voile, la cloche d'optimum reflète qu'un calme plat empêche toute progression à la voile (score 2) et que le vent fort devient dangereux (0 à 32 kt). En moteur, le vent n'impacte la coque que par la mer formée — le vent seul est pénalisé progressivement.

Rafales (nœuds)

Les rafales suivent leur propre piecewise indépendant du vent moyen. En voile, un score de 8 à 0 kt (pas 10) traduit qu'un zéphyr total sans variantes est moins agréable que quelques nœuds de brise :

⛵ Voile  : 0 kt → 8 · 10 kt → 10 · 18 kt → 8 · 25 kt → 7 · 32 kt → 5 · 40 kt → 0
🚢 Moteur : 0–15 kt → 10 · 25 kt → 6 · 35 kt → 2 · 45 kt → 0
🚴 Vélo   : 0 kt → 10 · 20 kt → 5 · 40 kt → 0
🥾 Rando  : 0 kt → 10 · 25 kt → 4 · 45 kt → 0

État de mer — seaStateScore(H, T) (voile et moteur uniquement)

L'état de mer ne se résume pas à la hauteur des vagues. Une mer de 1,5 m en 3 secondes est incomparablement plus dure qu'une houle de 1,5 m en 12 secondes. Solano utilise l'accélération verticale (inconfort physique réel pour une sinusoïde) comme critère principal, capée par la hauteur absolue :

acc = H × 2π² / T² ≈ H × 19,74 / T²   (en m/s²)

seaStateScore(H, T) = min( piecewise(acc, breaks_acc), piecewise(H, cap_hauteur) )

Les deux tables de rupture :

Accélération acc (m/s²)ScoreHauteur H (m)Score cap
0 – 0,1100 – 1,010
0,392,08
0,763,05
1,524,02
2,505,00

Exemple : H = 2 m, T = 6 s → acc = 2 × 19,74 / 36 = 1,10 m/s² → score acc ≈ 3,5 ; cap hauteur = 8 → seaStateScore = 3,5. Même hauteur avec T = 12 s → acc = 0,27 → score acc ≈ 9,2 ; cap hauteur = 8 → seaStateScore = 8.

Angle vent / cap (voile et vélo)

L'angle relatif α est calculé entre la direction du vent et le cap du segment parcouru, ramené à 0–180°. Voile valorise le travers/largue (point de voilure optimal) ; vélo valorise le vent dans le dos :

Angle α⛵ Voile🚴 Vélo
≤ 30–35° (face)0 (inutilisable)1
35–55° (près serré)43
55–80° (près bon)75
80–130° (travers / largue)8 (optimal)7
130–170° (grand largue)69
> 170° (vent arrière)59

Le scoring d'angle n'est calculé que si le vent dépasse 4 nœuds — en dessous, la direction est sans signification pratique.

CAPE, précipitations, température

CAPE (J/kg) — toutes activités : 0 → 10 · 300 → 8 · 800 → 5 · 1 500 → 2 · 2 000 → 0
Précipitations (mm/h) : 0 → 10 · 0,5 → 9 · 2 → 6 · 5 → 3 · 10 → 0
Temp. vélo (°C) : 0 → 3 · 10 → 8 · 15–22 → 10 · 28 → 7 · 33 → 3 · 38 → 0
Temp. rando (°C) : 0 → 3 · 10–20 → 10 · 28 → 6 · 38 → 0

Agrégation statistique sur la route

Pour chaque composante, Solano collecte la valeur heure par heure sur l'ensemble du trajet (toutes positions interpolées, tous modèles actifs agrégés). La composante finale n'est pas la moyenne simple — elle donne davantage de poids aux moments les plus défavorables :

score_composante = 0,30 × piecewise(moyenne) + 0,40 × piecewise(p90) + 0,30 × piecewise(max)

Pour l'état de mer (les scores sont déjà calculés heure par heure, pas les valeurs brutes) :

score_mer = 0,30 × moyenne + 0,40 × p10 + 0,30 × minimum

Le p90 (90e percentile des valeurs brutes) ou le p10 (10e percentile des scores mer) capture le "pire quart" de la route sans être aussi extrême que le maximum ponctuel.

Pondération par activité et score final

Composante⛵ Voile🚢 Moteur🚴 Vélo🥾 Rando
Vent moyen28 %30 %25 %20 %
Rafales22 %25 %15 %15 %
État de mer25 %30 %
Angle vent / cap10 %15 %
CAPE10 %10 %10 %10 %
Précipitations5 %5 %20 %30 %
Température15 %25 %

Le score final est une moyenne pondérée normalisée par la somme des poids actifs (les composantes sans données sont exclues dynamiquement) :

score = Σ(score_composante × poids) / Σ(poids_actifs)   → arrondi au dixième
Les 13 candidats sont triés par score décroissant. Le meilleur créneau est affiché en vert ; le départ courant en bleu. Cliquer sur un candidat recalcule le tableau météo complet pour cet horaire.

10. Le risque orageux — au-delà du CAPE

Le CAPE (énergie potentielle de convection disponible, en J/kg) est souvent présenté comme le chiffre de l'orage. C'est trompeur : un CAPE de 2 000 n'a pas la même portée selon la situation. Tout dépend aussi de la raideur de l'atmosphère, du couvercle qui empêche — ou non — l'air de monter, et de l'organisation des cellules. Solano combine donc plusieurs ingrédients en un seul indice catégoriel, par heure.

Les ingrédients

Suivant l'approche par ingrédients (Doswell), le risque se construit comme un produit : du carburant, multiplié par un facteur d'ouverture du couvercle, puis affiné par l'organisation.

risque = carburant(CAPE, Lifted Index, lapse rate) × facteur_couvercle(CIN)   → 0 à 10

Le score donne une intensité en quatre catégories : Faible (< 1,5) · Modéré (1,5–4) · Marqué (4–7) · Sévère (≥ 7). Le cisaillement affine ensuite la catégorie : « Sévère » est réservé aux orages organisés — une forte intensité mais peu cisaillée est ramenée à « Marqué · isolé », tandis qu'un « Marqué » fortement cisaillé peut être promu « Sévère ».

L'ancrage GFS et l'accord des modèles

Parmi les modèles d'Open-Meteo, seul GFS expose tous les ingrédients (CAPE, inhibition CIN, Lifted Index et les niveaux de pression nécessaires au cisaillement et au lapse rate). L'indice est donc ancré sur GFS, indépendamment des modèles que vous affichez — Solano va le chercher même si GFS n'est pas sélectionné.

À cet indice s'ajoute une mesure d'accord entre les modèles : la dispersion du CAPE entre tous les modèles consultés. Quand ils divergent fortement (par exemple CAPE 10 vs 560 au même point), le risque est marqué comme incertain — fidèle à la philosophie du « film plutôt que la photo ». Tous les seuils sont ajustables.

L'indice décrit un environnement favorable, jamais un orage à une heure précise. La convection reste, par nature, le paramètre le moins prévisible : les indices disent « les ingrédients sont réunis », pas « il y aura un orage à 15 h ».

Du pronostic à l'observation

Quand le risque est notable aujourd'hui, le bouton « Voir le ciel maintenant » bascule la carte sur l'imagerie satellite — infrarouge (sommets froids), foudre (éclairs en direct) et RDT (détection des cellules orageuses en développement, avant l'électrification). On vérifie ainsi d'un coup d'œil si une cellule est réellement en train d'éclater. Contrairement au radar au sol, ces produits satellitaires couvrent aussi la pleine mer.

Le risque orageux le long d'une route

En mode Route, le même indice est calculé tout au long du tracé. Plutôt qu'une grille point par point illisible, Solano évalue le risque à chaque point de calcul — à la position et à l'instant où le bateau y passera. La bande se lit de gauche (départ) à droite (arrivée) : chaque cellule porte sa catégorie, et le détail dépliable liste les points à risque avec leurs ingrédients (CAPE, CIN, Lifted Index, cisaillement, lapse rate). Le calcul reste ancré sur GFS, indépendamment des modèles affichés.

11. L'analyse de mouillage — algorithme de protection

L'analyse de mouillage calcule, pour tout point en mer, un profil de protection directionnel par ray casting topographique, complété par un score de confort 0–100 % sur 3 jours et des données bathymétriques.

Ray casting — collecte des altitudes

Pour chaque point, Solano trace 1 728 rayons (36 directions × 3 offsets ±5° × 16 distances) depuis 25 m jusqu'à 3 000 m. Les altitudes sont issues du modèle numérique de terrain SRTM 30 m (couverture mondiale, qui renvoie 0 sur la mer = pas d'obstacle).

L'éventail ±5° par direction permet de "voir" une falaise même si le rayon central passe en eau. L'extension à 3 km est indispensable pour les grandes baies dont les caps encadrants sont distants de plus d'un kilomètre (exemple : Portoferraio, île d'Elbe).

Digues et ouvrages portuaires — OpenStreetMap

Un modèle de terrain à 30 m est aveugle aux ouvrages portuaires étroits : un môle de 10 à 20 m de large est sous-résolu, lu au niveau de l'eau. Solano superpose donc la géométrie OpenStreetMap autour du point (digues et brise-lames man_made=breakwater, ainsi que le trait de côte natural=coastline, qui porte souvent les môles solides des ports). Chaque rayon teste son intersection géométrique avec ces structures — et non un simple échantillon ponctuel, qui raterait un môle fin de la même façon que le terrain.

Règle de fusion : toute côte ou digue sur le rayon bloque la houle (la mer ne traverse pas la terre) ; seules les digues ajoutent une protection au vent forfaitaire (hauteur émergente ≈ 3 m), le trait de côte naturel laissant le relief réel du terrain décider. La fusion est purement additive : elle ne retire jamais une protection détectée par le terrain.

Protection vent

La protection vent est estimée par le ratio hauteur / distance de l'obstacle le plus haut trouvé sur le rayon :

protection_vent = min(1.0, (H/D) / 0.20) → règle : un obstacle de 20 m à 100 m = protection maximale

La valeur maximale sur les 3 offsets du rayon est retenue. La détection Venturi multiplie la pénalité de vent ×1,5 lorsqu'un secteur non bloqué est encadré par deux secteurs bloqués (effet de canalisation).

Protection houle — seuil adaptatif

La houle n'est pas arrêtée par les mêmes obstacles que le vent. Solano applique un seuil de hauteur terrain variable selon la distance pour éviter les faux positifs (île plate lointaine signalée comme "bloquant" la houle) :

distance < 200 m → seuil 0,5 m (chop locale) distance < 800 m → seuil 2,0 m (obstacle côtier) distance < 2 000 m → seuil 5,0 m (cap ou relief notable) distance ≥ 2 000 m → seuil 15,0 m (relief majeur)

La protection houle est binaire (bloquée / non bloquée) et calculée par nearest-neighbor entre secteurs adjacents — jamais par interpolation OR, qui produirait des faux "bloqués" entre un secteur protégé et un secteur exposé.

Score de confort

Pour chaque heure sur 3 jours, le score combine les prévisions houle (70 %) et vent (30 %) avec le profil de protection :

swell_discomfort = (1 si houle non bloquée) × clamp(Hs / 0,30 m, 0, 1) wind_discomfort = (1 − protection_vent) × venturi_factor × clamp(U10 / 25 kts, 0, 1) discomfort = swell_discomfort × 0,70 + wind_discomfort × 0,30 confort(%) = 100 × (1 − discomfort)

Le seuil Hs = 0,30 m reflète qu'une chop de 30 cm est déjà sensible sur un mouillage. Les rafales sont incluses dans le calcul vent.

Bathymétrie — EMODnet

La profondeur est issue d'EMODnet Bathymetry DTM 2022 (~115 m de résolution, API REST POINT(lon lat)), retournant la valeur lissée + fourchette min/max + type de sondage vulgarisé. La nature du fond est issue d'EMODnet Seabed Habitats — EUSeaMap 2025 (WFS emodnet_view:eusm2025_msfd_full, substrat lu dans le champ msfd_bbht puis classé : sable, vase, roche, herbiers de Posidonie…).

Cache 30 jours par mouillage (clé anchor_v5_, résolution 0,001° ≈ 100 m). Incrémenter la clé en production si l'algorithme change.

12. Limites de la méthode

La méthode Solano présente plusieurs limitations importantes à connaître pour interpréter correctement les scores :

Avertissement : Solano n'est pas un service météorologique agréé. Les informations affichées sont issues de centres de calcul tiers et fournies à titre indicatif uniquement. Elles ne se substituent pas aux bulletins officiels (Météo-France, SHOM, CROSS). L'utilisateur assume l'entière responsabilité des décisions prises sur la base de ces données.
Tester la méthode sur la carte →