Перейти к содержанию

Декодирование данных из бинарных форматов ВМО

Результаты обучения!

К концу этого практического занятия вы сможете:

  • запустить 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 ~/wis2-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 ~/wis2-downloads:/root/downloads монтирует каталог ~/wis2-downloads на вашей виртуальной машине в /root/downloads в контейнере. Здесь будут храниться данные, загруженные вами из WIS2 после выполнения инструкций из предыдущего практического занятия по загрузчику 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-ноутбуков, используемых в следующих упражнениях

О демо-образе decode-eccodes-jupyter

Образ demo-decode-eccodes-jupyter разработан для этого обучения и использует базовый образ, включающий библиотеку ecCodes, а также сервер Jupyter-ноутбуков и Python-пакеты для анализа данных и визуализации.

Исходный код этого образа, включая пример ноутбуков, можно найти на wmo-im/demo-decode-eccodes-jupyter.

После запуска контейнера вы можете получить доступ к серверу Jupyter-ноутбуков на вашей виртуальной машине, перейдя по адресу http://YOUR-HOST:8888 в вашем веб-браузере.

Вы увидите экран с запросом на ввод "Пароля или токена".

Введите токен dataismagic!, чтобы войти на сервер Jupyter-ноутбуков (если вы не использовали другой токен в команде выше).

После входа вы должны увидеть следующий экран с перечнем каталогов в контейнере:

Jupyter notebook home

Дважды щелкните на каталоге example-notebooks, чтобы открыть его. Вы должны увидеть следующий экран с перечнем примерных ноутбуков:

Jupyter notebook example notebooks

Теперь вы можете открыть примерные ноутбуки для декодирования загруженных данных.

Пример декодирования GRIB2: данные GEPS из CMA GRAPES

Откройте файл GRIB2_CMA_global_ensemble_prediction.ipynb в каталоге example-notebooks:

Jupyter notebook GRIB2 global ensemble prediction

Прочитайте инструкции в ноутбуке и выполните ячейки для декодирования загруженных данных для глобального ансамблевого прогноза. Выполните каждую ячейку, щелкнув на ней, а затем нажав кнопку выполнения на панели инструментов или нажав Shift+Enter.

После выполнения всех ячеек вы должны увидеть визуализацию "Вероятности аномалии температуры на уровне 850 гПа ниже -1.5 стандартных отклонений":

Global ensemble prediction temperature anomaly

Question

Как бы вы обновили визуализацию в этом ноутбуке, чтобы визуализировать одно из других сообщений в файле GRIB2?

Нажмите, чтобы увидеть ответ

В последней ячейке ноутбука вы увидите следующий код:

# показать визуализацию для сообщения номер 8 (Вероятность аномалии температуры на уровне 850 гПа ниже -1.5 стандартных отклонений)
show_map_visualization(grib_file, 8)

Вы можете изменить эту строку или добавить другую строку, чтобы визуализировать одно из других сообщений в файле GRIB2, изменив номер сообщения:

# показать визуализацию для сообщения номер 9
show_map_visualization(grib_file, 9)

Затем выполните ячейки в ноутбуке, чтобы увидеть обновленный график.

Пример декодирования BUFR: треки тропических циклонов

Откройте файл BUFR_tropical_cyclone_track.ipynb в каталоге example-notebooks:

Jupyter notebook tropical cyclone track

Прочитайте инструкции в ноутбуке и выполните ячейки для декодирования загруженных данных для треков тропических циклонов. Выполните каждую ячейку, щелкнув на ней, а затем нажав кнопку выполнения на панели инструментов или нажав Shift+Enter.

В конце вы должны увидеть график вероятности удара для треков тропических циклонов:

Tropical cyclone tracks

Question

Результат отображает прогнозируемую вероятность трека тропического шторма в пределах 200 км. Как бы вы обновили ноутбук, чтобы отобразить прогнозируемую вероятность трека тропического шторма в пределах 300 км?

Нажмите, чтобы увидеть ответ

Чтобы обновить ноутбук для отображения прогнозируемой вероятности трека тропического шторма в пределах другого расстояния, вы можете обновить переменную distance_threshold в блоке кода, который рассчитывает вероятность удара.

Чтобы отобразить прогнозируемую вероятность трека тропического шторма в пределах 300 км:

# установить порог расстояния (в метрах)
distance_threshold = 300000  # 300 км в метрах

Затем выполните ячейки в ноутбуке, чтобы увидеть обновленный график.

Декодирование данных BUFR

Упражнение, которое вы только что выполнили, предоставило один конкретный пример того, как можно декодировать данные BUFR с использованием библиотеки ecCodes. Различные типы данных могут требовать различных шагов декодирования, и вам может понадобиться обратиться к документации для типа данных, с которым вы работаете.

Для получения дополнительной информации, пожалуйста, ознакомьтесь с документацией ecCodes.

Пример декодирования NetCDF: месячные аномалии температуры

Откройте файл NetCDF4_monthly_temperature_anomaly.ipynb в каталоге example-notebooks:

Jupyter notebook monthly temperature anomalies

Прочитайте инструкции в ноутбуке и выполните ячейки для декодирования загруженных данных о месячных аномалиях температуры. Выполните каждую ячейку, щелкнув на ней, а затем нажав кнопку выполнения на панели инструментов или нажав Shift+Enter.

В конце вы должны увидеть карту аномалий температуры:

Monthly temperature anomalies

Декодирование данных 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