Día y noche, mezclando visible y otros canales de satélite con xarray y Python

Siempre me fascina ver nubes, desde abajo y desde arriba. Desde arriba las veo usando satélites ya que, de momento, no he podido viajar al espacio 🙁

Los satélites nos muestran las nubes de varias formas, usando distintos canales para distintas bandas espectrales. Juntando varios de estos canales podemos crear productos interesantes. En el caso del Meteosat Second Generation se puede crear un producto parecido a si sacásemos una fotografía desde el espacio juntando los canales NIR1.6, VIS0.8 y VIS0.6.

Son las imágenes más bonitas, en mi modesta opinión, pero solo se pueden obtener de día.

¿Pero yo he visto que a veces retuiteas vídeos de ciclones/huracanes/etc y salen imágenes durante más de 24h?, ¿cómo lo hacen? Pues se hace una mezcla de imágenes visibles durante el día y por la noche se mezclan con imágenes de otros canales. Normalmente, se usa algún canal infrarrojo que nos da información de la temperatura. Las nubes -el tope nuboso, más bien-, al estar en altura, suelen estar más frías y contra más altas, normalmente, más frías.

Pues me he liado la manta a la cabeza y he intentado replicar lo que muestra, por ejemplo, @weatherdak en tuiter.

¿Vamos a ello?

Como siempre, empezamos importando algunas cosas:

Una de las gemas aquí es rioxarray. Hace que rasterio y xarray se pongan, incluso, más interesantes añadiendo funcionalidad extra.

Lo siguiente es una pequeña función que genera un rango de fechas que nos servirá para generar las URLs para descargar las imágenes que usaremos.

El diccionario siguiente me sirve para seleccionar lo que quiero descargar. En realidad solo usaré el IR10.8 y el producto Natural (que viene a ser como una fotografía de la Tierra):

El siguiente código es el que descarga las imágenes. La llamada a get_datetime_range me genera un listado de fechas para descargar las imágenes (cada 15 minutos). Como he comentado anteriormente, descargamos imágenes de dos productos. ATENCIÓN, EL SIGUIENTE CÓDIGO DESCARGARÁ UNOS CUANTOS GIGABYTES DE DATOS. Las fechas de lo siguiente corresponden al día en que hice esto:

Si abro la imagen Natural_20210501_0600.tif, una imagen que usa datos de canales visibles, verás que parte de la imagen no tiene información:

Lo anterior mostrará:

Imagen del visible del MSG

Lo que vamos a hacer es rellenar esas blancos de la imagen de color natural (la visible) usando información del canal Infrarrojo 10.8.

Con el siguiente código mezclaremos las dos buscando cuando en la imagen visible se cumple cierta condición. Todos los píxeles con esa condición serán rellenados con píxeles de la imagen Infrarroja. Por último, guardamos las imágenes llamándolas merged…:

Y, por último, vamos a hacer un vídeo de esos que os gustan. Pero esta vez voy a usar ffmpeg-python por probar una cosa distinta.

El resultado debería ser algo parecido a lo siguiente:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

− two = seven