Sobre la puntuación
Cómo condensamos cobertura nubosa, luz lunar y oscuridad astronómica en un único número del 0 al 10 — y qué dejamos fuera deliberadamente.
La pregunta
Si esta noche merece la pena depende de tres cosas: cuánto cielo se ve (nubes), cuán oscuro está (sol y luna) y dónde estás (contaminación lumínica). La puntuación combina las dos primeras. La contaminación lumínica define qué es visible desde tu ubicación, pero no entra en el número.
Tres puntuaciones por noche
- Principal — Media en toda la ventana de oscuridad astronómica (sol ≥ 18° bajo el horizonte). La respuesta honesta a “qué tal está la noche en conjunto”.
- Pico 2h — El mejor tramo de dos horas de la noche. Úsalo cuando solo puedes salir un rato corto.
- Prime 21–01 — Lo que realmente vas a tener si sales sobre las 21:00 y vuelves sobre las 01:00, sin importar cuándo empiece la oscuridad astronómica.
La fórmula
La puntuación combina claridad (parte de cielo sin nubes) y oscuridad (cuán poco ilumina la luna), con un umbral de visibilidad suave.
score = visibility × (clearness × 0.6 + darkness × 0.4) / 10 clearness = 100 − cloudCover% darkness = 100 − moonPenalty visibility = min(1, clearness / 30)
El factor de visibilidad reconoce que las nubes lo bloquean todo: si está mayormente cubierto, ni una noche perfectamente oscura suma puntos. Por encima del 30% de claridad, visibility = 1 y la fórmula se reduce a la media ponderada simple. Por debajo del 30%, la puntuación cae linealmente a cero.
La penalización lunar
La iluminación lunar se trata en tramos, con un descuento para ventanas de madrugada en las que la luna probablemente ya esté poniéndose.
- Menos del 25% iluminada (luna nueva o creciente fina): sin penalización.
- 25–75% iluminada (alrededor del cuarto): penalización = iluminación × 0,5.
- Más del 75% iluminada (gibosa o llena): penalización = iluminación × 1,0.
- Si la ventana empieza entre las 00:00 y las 03:00 Y la iluminación supera el 50%, la penalización se multiplica por 0,6.
Qué no entra en la puntuación
- La contaminación lumínica (clase Bortle, derivada de los datos satelitales VIIRS) modela la lista “Visible esta noche” de cielo profundo, no el número.
- Viento, humedad y precipitación aparecen en la línea temporal si haces scroll, pero no cambian la puntuación.
- Confianza del pronóstico. No bajamos la puntuación cuando el modelo meteo está incierto — confiamos en el pronóstico y dejamos que la siguiente actualización corrija.
Ejemplo: una noche totalmente cubierta
Ámsterdam · 5 mayo 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
Ejemplo: una gran noche
Mismo lugar · cielo despejado, luna creciente
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
Fuentes
- Open-Meteo: cobertura nubosa por hora, horarios de sol y luna, viento, humedad.
- VIIRS Day/Night Band: contaminación lumínica, usada para estimar la clase Bortle para la lista “Visible esta noche”.
Frecuencia de actualización
Las previsiones se refrescan cada 30 minutos arriba. El endpoint de puntuación se cachea 30 minutos en el edge (s-maxage=1800). La previsión a siete noches se actualiza cada día.