Декодирование данных из бинарных форматов ВМО
Результаты обучения!
К концу этой практической сессии вы сможете:
- запустить контейнер Docker для образа "demo-decode-eccodes-jupyter"
- запустить пример Jupyter-ноутбуков для декодирования данных в форматах GRIB2, NetCDF и BUFR
- узнать о других инструментах для декодирования и визуализации форматов, основанных на таблицах ВМО (TDCF)
Введение
Бинарные форматы ВМО, такие как BUFR и GRIB, широко используются в метеорологическом сообществе для обмена данными наблюдений и моделирования и обычно требуют специализированных инструментов для декодирования и визуализации данных.
После загрузки данных из WIS2 вам часто потребуется декодировать их для дальнейшего использования.
Существуют различные библиотеки кода, которые позволяют писать скрипты или программы для декодирования бинарных форматов ВМО. Также доступны инструменты с пользовательским интерфейсом для декодирования и визуализации данных без необходимости написания программного обеспечения.
В этой практической сессии мы продемонстрируем, как декодировать три различных типа данных с использованием Jupyter-ноутбука:
- GRIB2, содержащий данные для глобального ансамблевого прогноза, созданного системой CMA Global Regional Assimilation PrEdiction System (GRAPES)
- BUFR, содержащий данные о тропических циклонах из ансамблевой прогнозной системы ECMWF
- NetCDF, содержащий данные о месячных аномалиях температуры
Декодирование загруженных данных в Jupyter-ноутбуке
Чтобы продемонстрировать, как можно декодировать загруженные данные, мы запустим новый контейнер с использованием образа 'decode-bufr-jupyter'.
Этот контейнер запустит сервер Jupyter-ноутбуков на вашей виртуальной машине, который включает библиотеку ecCodes, которую можно использовать для декодирования данных BUFR.
Мы будем использовать пример ноутбуков, включенных в ~/exercise-materials/notebook-examples
, чтобы декодировать загруженные данные о тропических циклонах.
Для запуска контейнера используйте следующую команду:
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
Разберем эту команду:
docker run -d --name demo-decode-eccodes-jupyter
запускает новый контейнер в фоновом режиме (-d
) и присваивает ему имяdemo-decode-eccodes-jupyter
-v ~/wis2box-data/downloads:/root/downloads
монтирует каталог~/wis2box-data/downloads
на вашей виртуальной машине в/root/downloads
в контейнере. Здесь хранятся данные, загруженные из WIS2-p 8888:8888
отображает порт 8888 на вашей виртуальной машине на порт 8888 в контейнере. Это делает сервер Jupyter-ноутбуков доступным из вашего веб-браузера по адресуhttp://YOUR-HOST:8888
-e JUPYTER_TOKEN=dataismagic!
задает токен, необходимый для доступа к серверу Jupyter-ноутбуков. Этот токен потребуется указать при доступе к серверу через веб-браузерghrc.io/wmo-im/demo-decode-eccodes-jupyter:latest
указывает образ, используемый контейнером, который включает пример Jupyter-ноутбуков, используемых в следующих упражнениях
Об образе demo-decode-eccodes-jupyter
Образ demo-decode-eccodes-jupyter
был разработан для этого обучения и использует базовый образ с включенной библиотекой ecCodes, а также сервер Jupyter-ноутбуков и пакеты Python для анализа и визуализации данных.
Исходный код этого образа, включая пример ноутбуков, можно найти на wmo-im/demo-decode-eccodes-jupyter.
После запуска контейнера вы можете получить доступ к серверу Jupyter-ноутбуков на вашей виртуальной машине, перейдя по адресу http://YOUR-HOST:8888
в вашем веб-браузере.
Вы увидите экран с запросом "Password or token".
Введите токен dataismagic!
, чтобы войти на сервер Jupyter-ноутбуков (если вы не использовали другой токен в команде выше).
После входа вы должны увидеть следующий экран с перечнем каталогов в контейнере:
Дважды щелкните на каталоге example-notebooks
, чтобы открыть его. Вы должны увидеть следующий экран с перечнем примерных ноутбуков:
Теперь вы можете открыть примерные ноутбуки для декодирования загруженных данных.
Пример декодирования GRIB2: данные GEPS от CMA GRAPES
Откройте файл GRIB2_CMA_global_ensemble_prediction.ipynb
в каталоге example-notebooks
:
Прочитайте инструкции в ноутбуке и выполните ячейки для декодирования загруженных данных для глобального ансамблевого прогноза. Выполняйте каждую ячейку, щелкая на ней и затем нажимая кнопку запуска на панели инструментов или нажимая Shift+Enter
.
В конце ноутбука вы должны увидеть карту, отображающую давление, приведенное к среднему уровню моря (MSL):
Question
Результат отображает температуру на высоте 2 метров над уровнем земли. Как вы бы обновили ноутбук, чтобы отобразить скорость ветра на высоте 10 метров?
Нажмите, чтобы увидеть ответ
Чтобы обновить ноутбук, выполните следующее.
Пример декодирования BUFR: тропические циклоны
Откройте файл BUFR_tropical_cyclone_track.ipynb
в каталоге example-notebooks
:
Прочитайте инструкции в ноутбуке и выполните ячейки для декодирования загруженных данных о тропических циклонах. Выполняйте каждую ячейку, щелкая на ней и затем нажимая кнопку запуска на панели инструментов или нажимая Shift+Enter
.
В конце вы должны увидеть график вероятности удара тропического циклона:
Question
Результат отображает предсказанную вероятность траектории тропического циклона в пределах 200 км. Как вы бы обновили ноутбук, чтобы отобразить вероятность в пределах 300 км?
Нажмите, чтобы увидеть ответ
Чтобы обновить ноутбук для отображения вероятности траектории тропического циклона на другом расстоянии, вы можете обновить переменную distance_threshold
в блоке кода, который вычисляет вероятность удара.
Чтобы отобразить вероятность траектории тропического циклона в пределах 300 км:
# set distance threshold (meters)
distance_threshold = 300000 # 300 км в метрах
Затем выполните ячейки в ноутбуке заново, чтобы увидеть обновленный график.
Декодирование данных BUFR
Упражнение, которое вы только что выполнили, предоставило конкретный пример того, как можно декодировать данные BUFR с использованием библиотеки ecCodes. Разные типы данных могут требовать различных шагов декодирования, и вам может потребоваться обратиться к документации для типа данных, с которым вы работаете.
Для получения дополнительной информации обратитесь к документации ecCodes.
Пример декодирования NetCDF: месячные аномалии температуры
Откройте файл NetCDF4_monthly_temperature_anomaly.ipynb
в каталоге example-notebooks
:
Прочитайте инструкции в ноутбуке и выполните ячейки для декодирования загруженных данных о месячных аномалиях температуры. Выполняйте каждую ячейку, щелкая на ней и затем нажимая кнопку запуска на панели инструментов или нажимая Shift+Enter
.
В конце вы должны увидеть карту аномалий температуры:
Декодирование данных NetCDF
NetCDF — это гибкий формат, который в данном примере содержит значения переменной 'anomaly', представленные вдоль измерений 'lat', 'lon'. Разные наборы данных NetCDF могут использовать разные имена переменных и измерений.
Использование других инструментов для просмотра и декодирования бинарных форматов ВМО
Примерные ноутбуки продемонстрировали, как можно декодировать широко используемые бинарные форматы ВМО с использованием Python.
Вы также можете использовать другие инструменты для декодирования и визуализации форматов, основанных на таблицах ВМО, без необходимости написания программного обеспечения, такие как:
- Panoply — кроссплатформенное приложение для построения графиков географически привязанных и других массивов из NetCDF, HDF, GRIB и других наборов данных
- ECMWF Metview — метеорологическое приложение для анализа и визуализации данных, поддерживающее форматы GRIB и BUFR
- Integrated Data Viewer (IDV) — бесплатная программная платформа на базе Java для анализа и визуализации геонаучных данных, включая поддержку форматов GRIB и NetCDF
Заключение
Поздравляем!
В этой практической сессии вы научились:
- запускать контейнер Docker для образа "demo-decode-eccodes-jupyter"
- запускать пример Jupyter-ноутбуков для декодирования данных в форматах GRIB2, NetCDF и BUFR