Saltar a contenido

Decodificación de datos desde formatos binarios de la OMM

¡Resultados de aprendizaje!

Al final de esta sesión práctica, serás capaz de:

  • ejecutar un contenedor Docker para la imagen "demo-decode-eccodes-jupyter"
  • ejecutar los cuadernos de Jupyter de ejemplo para decodificar datos en formatos GRIB2, NetCDF y BUFR
  • aprender sobre otras herramientas para decodificar y visualizar formatos de códigos impulsados por tablas de la OMM (TDCF)

Introducción

Los formatos binarios de la OMM, como BUFR y GRIB, son ampliamente utilizados en la comunidad meteorológica para el intercambio de datos observacionales y de modelos, y típicamente requieren herramientas especializadas para decodificar y visualizar los datos.

Después de descargar datos desde WIS2, a menudo necesitarás decodificarlos para poder utilizarlos posteriormente.

Existen varias bibliotecas de código disponibles para escribir scripts o programas que decodifiquen formatos binarios de la OMM. También hay herramientas disponibles que proporcionan una interfaz de usuario para decodificar y visualizar los datos sin necesidad de escribir un programa de software.

En esta sesión práctica, demostraremos cómo decodificar 3 tipos diferentes de datos utilizando un cuaderno de Jupyter:

  • GRIB2 que contiene datos de una Predicción Global por Conjunto realizada por el Sistema de Predicción por Asimilación Regional Global de CMA (GRAPES)
  • BUFR que contiene datos de las trayectorias de ciclones tropicales del sistema de predicción por conjuntos del ECMWF
  • NetCDF que contiene datos de anomalías de temperatura mensuales

Decodificación de datos descargados en un cuaderno de Jupyter

Para demostrar cómo puedes decodificar los datos descargados, iniciaremos un nuevo contenedor utilizando la imagen 'decode-bufr-jupyter'.

Este contenedor iniciará un servidor de cuadernos de Jupyter en tu instancia que incluye la biblioteca ecCodes, que puedes usar para decodificar datos BUFR.

Usaremos los cuadernos de ejemplo incluidos en ~/exercise-materials/notebook-examples para decodificar los datos descargados de las trayectorias de ciclones.

Para iniciar el contenedor, utiliza el siguiente comando:

docker run -d --name demo-decode-eccodes-jupyter \
    -v ~/wis2box-data/downloads:/root/downloads \
    -p 8888:8888 \
    -e JUPYTER_TOKEN=dataismagic! \
    ghcr.io/wmo-im/wmo-im/demo-decode-eccodes-jupyter:latest

Aquí tienes un desglose del comando anterior:

  • docker run -d --name demo-decode-eccodes-jupyter inicia un nuevo contenedor en modo desacoplado (-d) y lo nombra demo-decode-eccodes-jupyter
  • -v ~/wis2box-data/downloads:/root/downloads monta el directorio ~/wis2box-data/downloads en tu VM en /root/downloads dentro del contenedor. Aquí es donde se almacenan los datos que descargaste desde WIS2
  • -p 8888:8888 mapea el puerto 8888 en tu VM al puerto 8888 en el contenedor. Esto hace que el servidor de cuadernos de Jupyter sea accesible desde tu navegador web en http://YOUR-HOST:8888
  • -e JUPYTER_TOKEN=dataismagic! establece el token requerido para acceder al servidor de cuadernos de Jupyter. Necesitarás proporcionar este token cuando accedas al servidor desde tu navegador web
  • ghrc.io/wmo-im/demo-decode-eccodes-jupyter:latest especifica la imagen utilizada por el contenedor, que incluye previamente los cuadernos de Jupyter de ejemplo usados en los próximos ejercicios

Acerca de la imagen demo-decode-eccodes-jupyter

La imagen demo-decode-eccodes-jupyter fue desarrollada para esta capacitación y utiliza una imagen base que incluye la biblioteca ecCodes, además de agregar un servidor de cuadernos de Jupyter y paquetes de Python para análisis y visualización de datos.

El código fuente de esta imagen, incluidos los cuadernos de ejemplo, se encuentra en wmo-im/demo-decode-eccodes-jupyter.

Una vez que el contenedor esté iniciado, puedes acceder al servidor de cuadernos de Jupyter en tu VM de estudiante navegando a http://YOUR-HOST:8888 en tu navegador web.

Verás una pantalla solicitándote ingresar una "Contraseña o token".

Proporciona el token dataismagic! para iniciar sesión en el servidor de cuadernos de Jupyter (a menos que hayas utilizado un token diferente en el comando anterior).

Después de iniciar sesión, deberías ver la siguiente pantalla que lista los directorios en el contenedor:

Inicio de cuadernos de Jupyter

Haz doble clic en el directorio example-notebooks para abrirlo. Deberías ver la siguiente pantalla que lista los cuadernos de ejemplo:

Cuadernos de ejemplo de Jupyter

Ahora puedes abrir los cuadernos de ejemplo para decodificar los datos descargados.

Ejemplo de decodificación GRIB2: Datos GEPS de CMA GRAPES

Abre el archivo GRIB2_CMA_global_ensemble_prediction.ipynb en el directorio example-notebooks:

Predicción global por conjunto GRIB2

Lee las instrucciones en el cuaderno y ejecuta las celdas para decodificar los datos descargados de la predicción global por conjunto. Ejecuta cada celda haciendo clic en ella y luego en el botón de ejecutar en la barra de herramientas o presionando Shift+Enter.

Al final del cuaderno deberías ver un mapa que muestra la presión reducida al nivel medio del mar (MSL):

Predicción global por conjunto - temperatura

Question

El resultado muestra la temperatura a 2 metros sobre el nivel del suelo. ¿Cómo actualizarías el cuaderno para mostrar la velocidad del viento a 10 metros sobre el nivel del suelo?

Haz clic para revelar la respuesta

Para actualizar el cuaderno, haz lo siguiente.

Ejemplo de decodificación BUFR: Trayectorias de ciclones tropicales

Abre el archivo BUFR_tropical_cyclone_track.ipynb en el directorio example-notebooks:

Trayectoria de ciclones tropicales BUFR

Lee las instrucciones en el cuaderno y ejecuta las celdas para decodificar los datos descargados de las trayectorias de ciclones tropicales. Ejecuta cada celda haciendo clic en ella y luego en el botón de ejecutar en la barra de herramientas o presionando Shift+Enter.

Al final deberías ver un gráfico de la probabilidad de impacto para las trayectorias de ciclones tropicales:

Trayectorias de ciclones tropicales

Question

El resultado muestra la probabilidad prevista de la trayectoria de una tormenta tropical dentro de 200 km. ¿Cómo actualizarías el cuaderno para mostrar la probabilidad prevista de la trayectoria de una tormenta tropical dentro de 300 km?

Haz clic para revelar la respuesta

Para actualizar el cuaderno y mostrar la probabilidad prevista de la trayectoria de una tormenta tropical dentro de una distancia diferente, puedes actualizar la variable distance_threshold en el bloque de código que calcula la probabilidad de impacto.

Para mostrar la probabilidad prevista de la trayectoria de una tormenta tropical dentro de 300 km:

# establecer el umbral de distancia (metros)
distance_threshold = 300000  # 300 km en metros

Luego vuelve a ejecutar las celdas en el cuaderno para ver el gráfico actualizado.

Decodificación de datos BUFR

El ejercicio que acabas de realizar proporcionó un ejemplo específico de cómo puedes decodificar datos BUFR utilizando la biblioteca ecCodes. Diferentes tipos de datos pueden requerir pasos de decodificación diferentes, y es posible que necesites consultar la documentación para el tipo de datos con el que estás trabajando.

Para más información, consulta la documentación de ecCodes.

Ejemplo de decodificación NetCDF: Anomalías de temperatura mensuales

Abre el archivo NetCDF4_monthly_temperature_anomaly.ipynb en el directorio example-notebooks:

Anomalías de temperatura mensuales NetCDF

Lee las instrucciones en el cuaderno y ejecuta las celdas para decodificar los datos descargados de las anomalías de temperatura mensuales. Ejecuta cada celda haciendo clic en ella y luego en el botón de ejecutar en la barra de herramientas o presionando Shift+Enter.

Al final deberías ver un mapa de las anomalías de temperatura:

Anomalías de temperatura mensuales

Decodificación de datos NetCDF

NetCDF es un formato flexible que, en este ejemplo, reportó los valores para la variable 'anomaly' reportados a lo largo de las dimensiones 'lat', 'lon'. Diferentes conjuntos de datos NetCDF pueden usar diferentes nombres de variables y dimensiones.

Uso de otras herramientas para visualizar y decodificar formatos binarios de la OMM

Los cuadernos de ejemplo demostraron cómo puedes decodificar formatos binarios de la OMM comúnmente utilizados con Python.

También puedes usar otras herramientas para decodificar y visualizar formatos de códigos impulsados por tablas de la OMM sin necesidad de escribir software, como:

  • Panoply - una aplicación multiplataforma que traza arreglos georreferenciados y otros desde NetCDF, HDF, GRIB y otros conjuntos de datos
  • ECMWF Metview - una aplicación meteorológica para análisis y visualización de datos, que soporta formatos GRIB y BUFR
  • Integrated Data Viewer (IDV) - un marco de software gratuito basado en Java para analizar y visualizar datos de geociencias, incluyendo soporte para formatos GRIB y NetCDF

Conclusión

¡Felicidades!

En esta sesión práctica, aprendiste a:

  • ejecutar un contenedor Docker para la imagen "demo-decode-eccodes-jupyter"
  • ejecutar los cuadernos de Jupyter de ejemplo para decodificar datos en formatos GRIB2, NetCDF y BUFR