Декодирование данных из бинарных форматов ВМО
Результаты обучения!
К концу этого практического занятия вы сможете:
- запустить 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-ноутбуков (если вы не использовали другой токен в команде выше).
После входа вы должны увидеть следующий экран с перечнем каталогов в контейнере:

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

Теперь вы можете открыть примерные ноутбуки для декодирования загруженных данных.
Пример декодирования GRIB2: данные GEPS из CMA GRAPES
Откройте файл GRIB2_CMA_global_ensemble_prediction.ipynb в каталоге example-notebooks:

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

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:

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

Question
Результат отображает прогнозируемую вероятность трека тропического шторма в пределах 200 км. Как бы вы обновили ноутбук, чтобы отобразить прогнозируемую вероятность трека тропического шторма в пределах 300 км?
Нажмите, чтобы увидеть ответ
Чтобы обновить ноутбук для отображения прогнозируемой вероятности трека тропического шторма в пределах другого расстояния, вы можете обновить переменную distance_threshold в блоке кода, который рассчитывает вероятность удара.
Чтобы отобразить прогнозируемую вероятность трека тропического шторма в пределах 300 км:
# установить порог расстояния (в метрах)
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