Чтение сообщения grib2 в кубик Iris - PullRequest
0 голосов
/ 24 января 2019

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

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

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

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

1 Ответ

0 голосов
/ 25 января 2019

Вы можете получить все, что понимает 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из-за того, что не еще поддерживается, вы можете либо:

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

Если у вас есть такая проблема, вы должны определенно поднять ее как проблемуна гипроект thub ( проблемы с радужной оболочкой ) + мы постараемся помочь.

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

...