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 nombrademo-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 enhttp://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 webghrc.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:
Haz doble clic en el directorio example-notebooks
para abrirlo. Deberías ver la siguiente pantalla que lista los cuadernos de ejemplo:
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
:
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):
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
:
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:
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
:
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:
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