Чтение сообщения grib2 в кубик Iris

В настоящее время я изучаю идею использования iris в проекте для чтения файлов прогноза grib2 с использованием python.

Моя цель - загрузить / преобразовать сообщение grib в куб радужной оболочки на основе ключа сообщения grib, имеющего определенное значение.

Я экспериментировал с радужной оболочкой, которая использует грибапи. Используя iris-grib, я не смог найти ключ в файле grib2, хотя ключ виден через 'grib_ls -w...' через cli. gribapi делает эту работу, но я не уверен, как связать ее с iris (для этого, как я полагаю, iris-grib).

Мне было интересно, знает ли кто-нибудь о способе передачи сообщения в куб радужной оболочки на основе ключа сообщения grib, имеющего определенное значение. Спасибо

1 ответ

Решение

Вы можете получить все, что понимает gribapi, через интерфейс низкоуровневого grib в iris-grib, который является классом iris_grib.GribMessage.
Как правило, вы бы использовали for msg in GribMessage.messages_from_filename(xxx): а затем получить к нему доступ, например, msg.sections[4]['productDefinitionTemplateNumber']; msg.sections[4]['parameterNumber'] и так далее.

Вы можете использовать это для идентификации необходимых сообщений, а затем преобразовать в кубы с помощью iris_grib.load_pairs_from_fields ().

Однако Iris-grib знает только, как переводить определенные кодировки в кубы: он достаточно строг в отношении того, что именно он распознает, и потерпит неудачу во всем остальном. Так что, если ваши данные используют какие-либо нераспознанные шаблоны или кодировки данных, их определенно не удастся загрузить.
Я просто ожидаю, что у вас может быть что-то необычное здесь, так что это может быть проблемой?
Вы можете проверить ожидаемое содержимое сообщения по коду перевода на iris_grib: _load_convert.py, начиная с convert() рутина.

Чтобы получить кубик Iris из чего-то, что еще не поддерживается, вы должны:

  • (а) расширить правила перевода (например, Github PR), или
  • (б) иногда вы можете изменить сообщение так, чтобы оно выглядело как нечто, что можно распознать.
    В противном случае вы можете
  • (c) просто создайте куб Iris самостоятельно из данных, найденных в вашем GribMessage: это может быть немного проще, чем использовать "gribapi" напрямую (возможно, нет, в зависимости от деталей).

Если у вас возникла такая проблема, вам обязательно нужно поднять ее как проблему в проекте github ( проблемы с iris-grib) + мы постараемся помочь.

PS Так как вы зарегистрировали интерес к Python3, вы, возможно, захотите знать, что в скором времени должна появиться более новая замена "ecCodes" для gribapi, что сделает наконец возможной поддержку Python3 для данных grib.
Тем не менее, версия Python3 все еще находится в бета-версии, и в настоящее время мы испытываем некоторые проблемы с ней, в настоящее время возникшие с ECMWF, поэтому она все еще почти, но не вполне достижима.

Другие вопросы по тегам