Sul punteggio
Come riduciamo copertura nuvolosa, luce lunare e oscurità astronomica a un singolo numero da 0 a 10 — e cosa lasciamo deliberatamente fuori.
La domanda
Se vale la pena uscire stasera dipende da tre cose: quanto cielo si vede (nuvole), quanto è buio (sole e luna) e dove ti trovi (inquinamento luminoso). Il punteggio combina i primi due. L’inquinamento luminoso definisce cosa è visibile dalla tua posizione, ma non entra nel numero.
Tre punteggi per notte
- Punteggio principale — Media su tutta la finestra di buio astronomico (sole ≥ 18° sotto l’orizzonte). La risposta onesta a “quanto è buona la notte nel complesso”.
- Picco 2h — La migliore finestra di due ore della notte. Usalo quando puoi uscire solo per poco tempo.
- Prime 21–01 — Ciò che ottieni davvero se esci verso le 21:00 e rientri verso le 01:00, indipendentemente da quando inizia il buio astronomico.
La formula
Il punteggio combina la limpidezza (porzione di cielo non coperta da nuvole) e l’oscurità (quanto poco la luna illumina il cielo), con una soglia di visibilità graduale.
score = visibility × (clearness × 0.6 + darkness × 0.4) / 10 clearness = 100 − cloudCover% darkness = 100 − moonPenalty visibility = min(1, clearness / 30)
Il fattore di visibilità riconosce che le nuvole dominano tutto: se il cielo è prevalentemente coperto, anche un buio perfetto non porta punti. Sopra il 30% di limpidezza, visibility = 1 e la formula si riduce alla media ponderata. Sotto il 30%, il punteggio scende linearmente fino a zero.
La penalità lunare
L’illuminazione lunare è suddivisa in fasce, con uno sconto per le finestre a tarda notte in cui la luna probabilmente sta tramontando.
- Meno del 25% illuminata (luna nuova o falce): nessuna penalità.
- 25–75% illuminata (intorno al primo o ultimo quarto): penalità = illuminazione × 0,5.
- Oltre il 75% illuminata (gibbosa o piena): penalità = illuminazione × 1,0.
- Se la finestra inizia tra le 00:00 e le 03:00 E l’illuminazione supera il 50%, la penalità viene moltiplicata per 0,6.
Cosa non entra nel punteggio
- L’inquinamento luminoso (classe Bortle, derivata dai dati satellitari VIIRS) modella la lista “Visibile stasera” del cielo profondo, non il numero.
- Vento, umidità e precipitazioni sono visibili nella timeline se scorri, ma non cambiano il punteggio.
- Affidabilità della previsione. Non riduciamo il punteggio quando il modello meteo è incerto — ci fidiamo della previsione e lasciamo che il prossimo aggiornamento corregga.
Esempio: una notte completamente coperta
Amsterdam · 5 maggio 2026
moonPenalty(83, 23) = 83 × 1.0 = 83 clearness = 100 − 100 = 0 darkness = 100 − 83 = 17 visibility = min(1, 0 / 30) = 0 raw = 0 × (0×0.6 + 17×0.4) / 10 = 0.0
Esempio: una notte eccellente
Stesso luogo · cielo limpido, luna falcata
moonPenalty(15, 23) = 0 (< 25% bracket) clearness = 100 − 8 = 92 darkness = 100 − 0 = 100 visibility = min(1, 92 / 30) = 1 raw = 1 × (92×0.6 + 100×0.4) / 10 = 9.52
Fonti
- Open-Meteo: copertura nuvolosa oraria, orari di sole e luna, vento, umidità.
- VIIRS Day/Night Band: inquinamento luminoso, usato per stimare la classe Bortle per la lista “Visibile stasera”.
Frequenza di aggiornamento
Le previsioni si aggiornano ogni 30 minuti a monte. L’endpoint del punteggio resta in cache 30 minuti in periferia (s-maxage=1800). La previsione di sette notti si aggiorna ogni giorno.