Saltar a contenido

Herramientas de Conversión de Datos

Resultados de Aprendizaje

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

  • Acceder a las herramientas de línea de comandos de ecCodes dentro del contenedor wis2box-api
  • Usar la herramienta synop2bufr para convertir informes FM-12 SYNOP a BUFR desde la línea de comandos
  • Activar la conversión synop2bufr a través de la wis2box-webapp
  • Usar la herramienta csv2bufr para convertir datos CSV a BUFR desde la línea de comandos

Introducción

Los datos publicados en WIS2 deben cumplir con los requisitos y estándares definidos por las diversas comunidades de expertos en disciplinas o dominios del sistema terrestre. Para reducir las barreras en la publicación de datos de observaciones superficiales terrestres, wis2box proporciona herramientas para convertir datos al formato BUFR. Estas herramientas están disponibles a través del contenedor wis2box-api y pueden usarse desde la línea de comandos para probar el proceso de conversión de datos.

Las principales conversiones actualmente soportadas por wis2box son de informes FM-12 SYNOP a BUFR y de datos CSV a BUFR. Los datos FM-12 son compatibles porque todavía se usan ampliamente y se intercambian en la comunidad de la OMM, mientras que los datos CSV son compatibles para permitir el mapeo de datos producidos por estaciones meteorológicas automáticas al formato BUFR.

Sobre FM-12 SYNOP

Los informes meteorológicos de superficie de estaciones terrestres históricamente se han reportado cada hora o en las horas sinópticas principales (00, 06, 12 y 18 UTC) e intermedias (03, 09, 15, 21 UTC). Antes de la migración a BUFR, estos informes se codificaban en el formato de texto plano FM-12 SYNOP. Aunque la migración a BUFR estaba programada para completarse en 2012, todavía se intercambia una gran cantidad de informes en el formato heredado FM-12 SYNOP. Se puede encontrar más información sobre el formato FM-12 SYNOP en el Manual de Códigos de la OMM, Volumen I.1 (OMM-No. 306, Volumen I.1).

Sobre ecCodes

La biblioteca ecCodes es un conjunto de bibliotecas de software y utilidades diseñadas para decodificar y codificar datos meteorológicos en los formatos GRIB y BUFR. Es desarrollada por el Centro Europeo de Predicción Meteorológica a Plazo Medio (ECMWF). Consulta la documentación de ecCodes para obtener más información.

El software wis2box incluye la biblioteca ecCodes en la imagen base del contenedor wis2box-api. Esto permite a los usuarios acceder a las herramientas y bibliotecas de línea de comandos desde dentro del contenedor. La biblioteca ecCodes se utiliza dentro de la pila wis2box para decodificar y codificar mensajes BUFR.

Sobre csv2bufr y synop2bufr

Además de ecCodes, wis2box utiliza los siguientes módulos de Python que trabajan con ecCodes para convertir datos al formato BUFR:

  • synop2bufr: para soportar el formato heredado FM-12 SYNOP utilizado tradicionalmente por observadores manuales. El módulo synop2bufr se basa en metadatos adicionales de estaciones para codificar parámetros adicionales en el archivo BUFR. Consulta el repositorio synop2bufr en GitHub.
  • csv2bufr: para habilitar la conversión de extractos CSV producidos por estaciones meteorológicas automáticas al formato BUFR. El módulo csv2bufr se utiliza para convertir datos CSV al formato BUFR utilizando una plantilla de mapeo que define cómo deben mapearse los datos CSV al formato BUFR. Consulta el repositorio csv2bufr en GitHub.

Estos módulos pueden usarse de forma independiente o como parte de la pila wis2box.

Preparación

Requisitos Previos

  • Asegúrate de que tu wis2box ha sido configurado e iniciado
  • Asegúrate de haber configurado un conjunto de datos y al menos una estación en tu wis2box
  • Conéctate al broker MQTT de tu instancia de wis2box usando MQTT Explorer
  • Abre la aplicación web de wis2box (http://YOUR-HOST/wis2box-webapp) y asegúrate de haber iniciado sesión
  • Abre el panel de Grafana para tu instancia accediendo a http://YOUR-HOST:3000

Para usar las herramientas de línea de comandos de BUFR, necesitarás haber iniciado sesión en el contenedor wis2box-api. A menos que se especifique lo contrario, todos los comandos deben ejecutarse en este contenedor. También necesitarás tener MQTT Explorer abierto y conectado a tu broker.

Primero, conéctate a tu máquina virtual de estudiante a través de tu cliente SSH y copia los materiales del ejercicio al contenedor wis2box-api:

docker cp ~/exercise-materials/data-conversion-exercises wis2box-api:/root

Luego, inicia sesión en el contenedor wis2box-api y cambia al directorio donde se encuentran los materiales del ejercicio:

cd ~/wis2box
python3 wis2box-ctl.py login wis2box-api
cd /root/data-conversion-exercises

Confirma que las herramientas están disponibles, comenzando con ecCodes:

bufr_dump -V

Deberías obtener la siguiente respuesta:

ecCodes Version 2.36.0

A continuación, verifica la versión de synop2bufr:

synop2bufr --version

Deberías obtener la siguiente respuesta:

synop2bufr, version 0.7.0

Finalmente, verifica csv2bufr:

csv2bufr --version

Deberías obtener la siguiente respuesta:

csv2bufr, version 0.8.6

Herramientas de línea de comandos de ecCodes

La biblioteca ecCodes incluida en el contenedor wis2box-api proporciona varias herramientas de línea de comandos para trabajar con archivos BUFR. Los siguientes ejercicios demuestran cómo usar bufr_ls y bufr_dump para verificar el contenido de un archivo BUFR.

bufr_ls

En este primer ejercicio, usarás el comando bufr_ls para inspeccionar los encabezados de un archivo BUFR y determinar el tipo de contenido del archivo.

Usa el siguiente comando para ejecutar bufr_ls en el archivo bufr-cli-ex1.bufr4:

bufr_ls bufr-cli-ex1.bufr4

Deberías ver la siguiente salida:

bufr-cli-ex1.bufr4
centre                     masterTablesVersionNumber  localTablesVersionNumber   typicalDate                typicalTime                numberOfSubsets
cnmc                       29                         0                          20231002                   000000                     1
1 of 1 messages in bufr-cli-ex1.bufr4

1 of 1 total messages in 1 file

Se pueden pasar varias opciones a bufr_ls para cambiar tanto el formato como los campos de encabezado impresos.

Question

¿Cuál sería el comando para listar la salida anterior en formato JSON?

Puedes ejecutar el comando bufr_ls con la opción -h para ver las opciones disponibles.

Haz clic para revelar la respuesta

Puedes cambiar el formato de salida a JSON usando la opción -j, es decir:

bufr_ls -j bufr-cli-ex1.bufr4

Al ejecutarlo, deberías obtener la siguiente salida:

{ "messages" : [
  {
    "centre": "cnmc",
    "masterTablesVersionNumber": 29,
    "localTablesVersionNumber": 0,
    "typicalDate": 20231002,
    "typicalTime": "000000",
    "numberOfSubsets": 1
  }
]}

La salida representa los valores de algunas de las claves de encabezado en el archivo BUFR.

Por sí sola, esta información no es muy informativa, ya que solo proporciona información limitada sobre el contenido del archivo.

Al examinar un archivo BUFR, a menudo queremos determinar el tipo de datos contenidos en el archivo y la fecha/hora típica de los datos en el archivo. Esta información puede listarse usando la opción -p para seleccionar los encabezados a imprimir. Se pueden incluir múltiples encabezados usando una lista separada por comas.

Puedes usar el siguiente comando para listar la categoría de datos, subcategoría, fecha típica y hora típica:

bufr_ls -p dataCategory,internationalDataSubCategory,typicalDate,typicalTime -j bufr-cli-ex1.bufr4

Question

Ejecuta el comando anterior e interpreta la salida usando Common Code Table C-13 para determinar la categoría y subcategoría de datos.

¿Qué tipo de datos (categoría y subcategoría) contiene el archivo? ¿Cuál es la fecha y hora típica de los datos?

Haz clic para revelar la respuesta
{ "messages" : [
  {
    "dataCategory": 2,
    "internationalDataSubCategory": 4,
    "typicalDate": 20231002,
    "typicalTime": "000000"
  }
]}

A partir de esto, vemos que:

  • La categoría de datos es 2, lo que indica datos de "Sondeos verticales (distintos de satélites)".
  • La subcategoría internacional es 4, lo que indica datos de "Informes de temperatura/humedad/viento en niveles superiores desde estaciones terrestres fijas (TEMP)".
  • La fecha y hora típicas son 2023-10-02 y 00:00:00z, respectivamente.

bufr_dump

El comando bufr_dump se puede usar para listar y examinar el contenido de un archivo BUFR, incluyendo los datos en sí.

Intenta ejecutar el comando bufr_dump en el segundo archivo de ejemplo bufr-cli-ex2.bufr4:

bufr_dump bufr-cli-ex2.bufr4

Esto genera un JSON que puede ser difícil de interpretar; intenta usar la opción -p para mostrar los datos en texto plano (formato clave=valor):

bufr_dump -p bufr-cli-ex2.bufr4

Verás una gran cantidad de claves como salida, muchas de las cuales están ausentes. Esto es típico en datos del mundo real, ya que no todas las claves de eccodes están pobladas con datos reportados.

Puedes usar el comando grep para filtrar la salida y mostrar solo las claves que no están ausentes. Por ejemplo, para mostrar todas las claves que no están ausentes, puedes usar el siguiente comando:

bufr_dump -p bufr-cli-ex2.bufr4 | grep -v MISSING

Question

¿Cuál es la presión reducida al nivel medio del mar reportada en el archivo BUFR bufr-cli-ex2.bufr4?

Haz clic para revelar la respuesta

Usando el siguiente comando:

bufr_dump -p bufr-cli-ex2.bufr4 | grep -i 'pressureReducedToMeanSeaLevel'

Deberías ver la siguiente salida:

pressureReducedToMeanSeaLevel=105590
Esto indica que la presión reducida al nivel medio del mar es de 105590 Pa (1055.90 hPa).

Question

¿Cuál es el identificador de estación WIGOS de la estación que reportó los datos en el archivo BUFR bufr-cli-ex2.bufr4?

Haz clic para revelar la respuesta

Usando el siguiente comando:

bufr_dump -p bufr-cli-ex2.bufr4 | grep -i 'wigos'

Deberías ver la siguiente salida:

wigosIdentifierSeries=0
wigosIssuerOfIdentifier=20000
wigosIssueNumber=0
wigosLocalIdentifierCharacter="99100"

Esto indica que el identificador de estación WIGOS es 0-20000-0-99100.

Conversión synop2bufr

A continuación, veamos cómo convertir datos FM-12 SYNOP al formato BUFR usando el módulo synop2bufr. El módulo synop2bufr se utiliza para convertir datos FM-12 SYNOP al formato BUFR. Este módulo está instalado en el contenedor wis2box-api y se puede usar desde la línea de comandos de la siguiente manera:

synop2bufr data transform \
    --metadata <station-metadata.csv> \
    --output-dir <output-directory-path> \
    --year <year-of-observation> \
    --month <month-of-observation> \
    <input-fm12.txt>

El argumento --metadata se utiliza para especificar el archivo de metadatos de la estación, que proporciona información adicional que se codificará en el archivo BUFR. El argumento --output-dir se utiliza para especificar el directorio donde se escribirán los archivos BUFR convertidos. Los argumentos --year y --month se utilizan para especificar el año y el mes de la observación.

El módulo synop2bufr también se utiliza en la wis2box-webapp para convertir datos FM-12 SYNOP al formato BUFR mediante un formulario de entrada basado en la web.

Los próximos ejercicios demostrarán cómo funciona el módulo synop2bufr y cómo usarlo para convertir datos FM-12 SYNOP al formato BUFR.

Revisar el mensaje SYNOP de ejemplo

Inspecciona el archivo de mensaje SYNOP de ejemplo para este ejercicio synop_message.txt:

cd /root/data-conversion-exercises
more synop_message.txt

Question

¿Cuántos informes SYNOP hay en este archivo?

Haz clic para revelar la respuesta

La salida muestra lo siguiente:

AAXX 21121
15015 02999 02501 10103 21090 39765 42952 57020 60001=
15020 02997 23104 10130 21075 30177 40377 58020 60001 81041=
15090 02997 53102 10139 21075 30271 40364 58031 60001 82046=

Hay 3 informes SYNOP en el archivo, correspondientes a 3 estaciones diferentes (identificadas por los identificadores de estación tradicionales de 5 dígitos: 15015, 15020 y 15090). Nota que el final de cada informe está marcado por el carácter =.

Revisar la lista de estaciones

El argumento --metadata requiere un archivo CSV con un formato predefinido; un ejemplo funcional se proporciona en el archivo station_list.csv:

Usa el siguiente comando para inspeccionar el contenido del archivo station_list.csv:

more station_list.csv

Question

¿Cuántas estaciones están listadas en la lista de estaciones? ¿Cuáles son los identificadores de estación WIGOS de las estaciones?

Haz clic para revelar la respuesta

La salida muestra lo siguiente:

station_name,wigos_station_identifier,traditional_station_identifier,facility_type,latitude,longitude,elevation,barometer_height,territory_name,wmo_region
OCNA SUGATAG,0-20000-0-15015,15015,landFixed,47.7770616258,23.9404602638,503.0,504.0,ROU,europe
BOTOSANI,0-20000-0-15020,15020,landFixed,47.7356532437,26.6455501701,161.0,162.1,ROU,europe

Esto corresponde a los metadatos de estación para 2 estaciones: con los identificadores de estación WIGOS 0-20000-0-15015 y 0-20000-0-15020.

Convertir SYNOP a BUFR

A continuación, usa el siguiente comando para convertir el mensaje FM-12 SYNOP al formato BUFR:

synop2bufr data transform --metadata station_list.csv --output-dir ./ --year 2024 --month 09 synop_message.txt

Question

¿Cuántos archivos BUFR se crearon? ¿Qué significa el mensaje de ADVERTENCIA en la salida?

Haz clic para revelar la respuesta

La salida muestra lo siguiente:

[WARNING] Station 15090 not found in station file

Si verificas el contenido de tu directorio con el comando ls -lh, deberías ver que se crearon 2 nuevos archivos BUFR: WIGOS_0-20000-0-15015_20240921T120000.bufr4 y WIGOS_0-20000-0-15020_20240921T120000.bufr4.

El mensaje de advertencia indica que la estación con el identificador de estación tradicional 15090 no se encontró en el archivo de lista de estaciones station_list.csv. Esto significa que el informe SYNOP para esta estación no se convirtió al formato BUFR.

Question

Verifica el contenido del archivo BUFR WIGOS_0-20000-0-15015_20240921T120000.bufr4 usando el comando bufr_dump.

¿Puedes confirmar que la información proporcionada en el archivo station_list.csv está presente en el archivo BUFR?

Haz clic para revelar la respuesta

Puedes usar el siguiente comando para verificar el contenido del archivo BUFR:

bufr_dump -p WIGOS_0-20000-0-15015_20240921T120000.bufr4 | grep -v MISSING

Notarás la siguiente salida:

wigosIdentifierSeries=0
wigosIssuerOfIdentifier=20000
wigosIssueNumber=0
wigosLocalIdentifierCharacter="15015"
blockNumber=15
stationNumber=15
stationOrSiteName="OCNA SUGATAG"
stationType=1
year=2024
month=9
day=21
hour=12
minute=0
latitude=47.7771
longitude=23.9405
heightOfStationGroundAboveMeanSeaLevel=503
heightOfBarometerAboveMeanSeaLevel=504

Nota que esto incluye los datos proporcionados por el archivo station_list.csv.

Formulario SYNOP en wis2box-webapp

El módulo synop2bufr también se utiliza en la wis2box-webapp para convertir datos FM-12 SYNOP al formato BUFR utilizando un formulario web como entrada.
Para probar esto, ve a http://YOUR-HOST/wis2box-webapp e inicia sesión.

Selecciona el SYNOP Form del menú de la izquierda y copia el contenido del archivo synop_message.txt:

AAXX 21121
15015 02999 02501 10103 21090 39765 42952 57020 60001=
15020 02997 23104 10130 21075 30177 40377 58020 60001 81041=
15090 02997 53102 10139 21075 30271 40364 58031 60001 82046=

En el área de texto SYNOP message:

synop-form

Question

¿Puedes enviar el formulario? ¿Cuál es el resultado?

Haz clic para revelar la respuesta

Necesitas seleccionar un conjunto de datos y proporcionar el token para "processes/wis2box" que creaste en el ejercicio anterior para enviar el formulario.

Si proporcionas un token no válido, verás:

  • Resultado: Unauthorized, please provide a valid 'processes/wis2box' token

Si proporcionas un token válido, verás "WARNINGS: 3". Haz clic en "WARNINGS" para abrir el desplegable, que mostrará:

  • Station 15015 not found in station file
  • Station 15020 not found in station file
  • Station 15090 not found in station file

Para convertir estos datos al formato BUFR, necesitarías configurar las estaciones correspondientes en tu wis2box y asegurarte de que las estaciones estén asociadas al tema de tu conjunto de datos.

Note

En el ejercicio de ingesting-data-for-publication ingresaste el archivo "synop_202412030900.txt" y fue convertido al formato BUFR por el módulo synop2bufr.

En el flujo de trabajo automatizado en el wis2box, el año y el mes se extraen automáticamente del nombre del archivo y se utilizan para completar los argumentos --year y --month requeridos por synop2bufr, mientras que los metadatos de la estación se extraen automáticamente de la configuración de la estación en el wis2box.

Conversión csv2bufr

Note

Asegúrate de que sigues conectado al contenedor wis2box-api y en el directorio /root/data-conversion-exercises. Si saliste del contenedor en el ejercicio anterior, puedes volver a iniciar sesión de la siguiente manera:

cd ~/wis2box
python3 wis2box-ctl.py login wis2box-api
cd /root/data-conversion-exercises

Ahora veamos cómo convertir datos CSV al formato BUFR utilizando el módulo csv2bufr. El módulo está instalado en el contenedor wis2box-api y se puede usar desde la línea de comandos de la siguiente manera:

csv2bufr data transform \
    --bufr-template <bufr-mapping-template> \
    <input-csv-file>

El argumento --bufr-template se utiliza para especificar el archivo de plantilla de mapeo BUFR, que proporciona el mapeo entre los datos de entrada CSV y los datos de salida BUFR, especificado en un archivo JSON. Las plantillas de mapeo predeterminadas están instaladas en el directorio /opt/csv2bufr/templates en el contenedor wis2box-api.

Revisar el archivo CSV de ejemplo

Revisa el contenido del archivo CSV de ejemplo aws-example.csv:

more aws-example.csv

Question

¿Cuántas filas de datos hay en el archivo CSV? ¿Cuál es el identificador de estación WIGOS de las estaciones que informan en el archivo CSV?

Haz clic para revelar la respuesta

La salida muestra lo siguiente:

wsi_series,wsi_issuer,wsi_issue_number,wsi_local,wmo_block_number,wmo_station_number,station_type,year,month,day,hour,minute,latitude,longitude,station_height_above_msl,barometer_height_above_msl,station_pressure,msl_pressure,geopotential_height,thermometer_height,air_temperature,dewpoint_temperature,relative_humidity,method_of_ground_state_measurement,ground_state,method_of_snow_depth_measurement,snow_depth,precipitation_intensity,anemometer_height,time_period_of_wind,wind_direction,wind_speed,maximum_wind_gust_direction_10_minutes,maximum_wind_gust_speed_10_minutes,maximum_wind_gust_direction_1_hour,maximum_wind_gust_speed_1_hour,maximum_wind_gust_direction_3_hours,maximum_wind_gust_speed_3_hours,rain_sensor_height,total_precipitation_1_hour,total_precipitation_3_hours,total_precipitation_6_hours,total_precipitation_12_hours,total_precipitation_24_hours
0,20000,0,60355,60,355,1,2024,3,31,1,0,47.77706163,23.94046026,503,504.43,100940,101040,1448,5,298.15,294.55,80,3,1,1,0,0.004,10,-10,30,3,30,5,40,9,20,11,2,4.7,5.3,7.9,9.5,11.4
0,20000,0,60355,60,355,1,2024,3,31,2,0,47.77706163,23.94046026,503,504.43,100940,101040,1448,5,25.,294.55,80,3,1,1,0,0.004,10,-10,30,3,30,5,40,9,20,11,2,4.7,5.3,7.9,9.5,11.4
0,20000,0,60355,60,355,1,2024,3,31,3,0,47.77706163,23.94046026,503,504.43,100940,101040,1448,5,298.15,294.55,80,3,1,1,0,0.004,10,-10,30,3,30,5,40,9,20,11,2,4.7,5.3,7.9,9.5,11.4

La primera fila del archivo CSV contiene los encabezados de las columnas, que se utilizan para identificar los datos en cada columna.

Después de la fila de encabezados, hay 3 filas de datos, que representan 3 observaciones meteorológicas de la misma estación con el identificador de estación WIGOS 0-20000-0-60355 en tres momentos diferentes: 2024-03-31 01:00:00, 2024-03-31 02:00:00 y 2024-03-31 03:00:00.

Revisar la plantilla aws-template

El contenedor wis2box-api incluye un conjunto de plantillas de mapeo BUFR predefinidas que están instaladas en el directorio /opt/csv2bufr/templates.

Revisa el contenido del directorio /opt/csv2bufr/templates:

ls /opt/csv2bufr/templates
Deberías ver la siguiente salida:

CampbellAfrica-v1-template.json  aws-template.json  daycli-template.json

Revisemos el contenido del archivo aws-template.json:

cat /opt/csv2bufr/templates/aws-template.json

Esto devuelve un archivo JSON grande, que proporciona el mapeo para 43 columnas CSV.

Question

¿Qué columna del CSV está mapeada a la clave eccodes airTemperature? ¿Cuáles son los valores mínimos y máximos válidos para esta clave?

Haz clic para revelar la respuesta

Usa el siguiente comando para filtrar la salida:

cat /opt/csv2bufr/templates/aws-template.json | grep -i airTemperature
Deberías ver la siguiente salida:

{"eccodes_key": "#1#airTemperature", "value": "data:air_temperature", "valid_min": "const:193.15", "valid_max": "const:333.15"},

El valor que se codificará para la clave eccodes airTemperature se tomará de los datos en la columna CSV: air_temperature.

Los valores mínimos y máximos para esta clave son 193.15 y 333.15, respectivamente.

Question

¿Qué columna del CSV está mapeada a la clave eccodes internationalDataSubCategory? ¿Cuál es el valor de esta clave?

Haz clic para revelar la respuesta

Usa el siguiente comando para filtrar la salida:

cat /opt/csv2bufr/templates/aws-template.json | grep -i internationalDataSubCategory
Deberías ver la siguiente salida:

{"eccodes_key": "internationalDataSubCategory", "value": "const:2"},

No hay ninguna columna CSV asignada a la clave eccodes internationalDataSubCategory, en su lugar se utiliza el valor constante 2, que se codificará en todos los archivos BUFR producidos con esta plantilla de mapeo.

convertir CSV a BUFR

Intentemos convertir el archivo al formato BUFR utilizando el comando csv2bufr:

csv2bufr data transform --bufr-template aws-template ./aws-example.csv

Question

¿Cuántos archivos BUFR se crearon?

Haz clic para revelar la respuesta

La salida muestra lo siguiente:

CLI:    ... Transforming ./aws-example.csv to BUFR ...
CLI:    ... Processing subsets:
CLI:    ..... 384 bytes written to ./WIGOS_0-20000-0-60355_20240331T010000.bufr4
#1#airTemperature: Value (25.0) out of valid range (193.15 - 333.15).; Element set to missing
CLI:    ..... 384 bytes written to ./WIGOS_0-20000-0-60355_20240331T020000.bufr4
CLI:    ..... 384 bytes written to ./WIGOS_0-20000-0-60355_20240331T030000.bufr4
CLI:    End of processing, exiting.

La salida indica que se crearon 3 archivos BUFR: WIGOS_0-20000-0-60355_20240331T010000.bufr4, WIGOS_0-20000-0-60355_20240331T020000.bufr4 y WIGOS_0-20000-0-60355_20240331T030000.bufr4.

Para verificar el contenido de los archivos BUFR ignorando los valores faltantes, puedes usar el siguiente comando:

bufr_dump -p WIGOS_0-20000-0-60355_20240331T010000.bufr4 | grep -v MISSING

Question

¿Cuál es el valor de la clave eccodes airTemperature en el archivo BUFR WIGOS_0-20000-0-60355_20240331T010000.bufr4? ¿Y en el archivo BUFR WIGOS_0-20000-0-60355_20240331T020000.bufr4?

Haz clic para revelar la respuesta

Para filtrar la salida, puedes usar el siguiente comando:

bufr_dump -p WIGOS_0-20000-0-60355_20240331T010000.bufr4 | grep -v MISSING | grep airTemperature
Deberías ver la siguiente salida:

#1#airTemperature=298.15

Mientras que para el segundo archivo:

bufr_dump -p WIGOS_0-20000-0-60355_20240331T020000.bufr4 | grep -v MISSING | grep airTemperature

No obtendrás ningún resultado, lo que indica que el valor de la clave airTemperature está ausente en el archivo BUFR WIGOS_0-20000-0-60355_20240331T020000.bufr4. El comando csv2bufr se negó a codificar el valor 25.0 del archivo CSV, ya que está fuera del rango válido de 193.15 y 333.15 definido en la plantilla de mapeo.

Ten en cuenta que convertir CSV a BUFR utilizando una de las plantillas de mapeo BUFR predefinidas tiene limitaciones:

  • El archivo CSV debe estar en el formato definido en la plantilla de mapeo, es decir, los nombres de las columnas del CSV deben coincidir con los nombres definidos en la plantilla de mapeo.
  • Solo puedes codificar las claves definidas en la plantilla de mapeo.
  • Los controles de calidad están limitados a las verificaciones definidas en la plantilla de mapeo.

Para obtener información sobre cómo crear y usar plantillas de mapeo BUFR personalizadas, consulta el siguiente ejercicio práctico csv2bufr-templates.

Conclusión

¡Felicidades!

En esta sesión práctica has aprendido:

  • cómo acceder a las herramientas de línea de comandos de ecCodes dentro del contenedor wis2box-api
  • cómo usar synop2bufr para convertir informes FM-12 SYNOP a BUFR desde la línea de comandos
  • cómo usar el formulario SYNOP en la wis2box-webapp para convertir informes FM-12 SYNOP a BUFR
  • cómo usar csv2bufr para convertir datos CSV a BUFR desde la línea de comandos