Как я могу читать grib-файлы grib в R?

Я пытаюсь открыть данные об осадках MUlti-sensor от eumetsat в R. Я могу получить эти данные только с помощью метода сжатия GZIP и типа формата данных GRIB. Когда я загружаю данные, я получаю tar-файл. Как я могу открыть эти данные в R? Я пробовал использовать код

> untar("1098496-1of1")

но появилось сообщение об ошибке

Error in gzfile(path.expand(tarfile), "rb") : cannot open the connection
In addition: Warning message:
In gzfile(path.expand(tarfile), "rb") :
  cannot open compressed file '1098496-1of1', probable reason 'No such file or directory'

но я, когда использую следующий код:

> dir.create("rainfalldataeumetstatR") 
> getwd() 
[1] "C:/Users/st/Documents" 
> untar("1098496-1of1.tar")
> untar("1098496-1of1.tar", files="rainfalldataeumetstatR")
> list.files("rainfalldataeumetstatR")

У меня нет файлов в каталоге, но я получаю ответ:

character(0)

Может быть, эта ошибка возникает из-за того, что файлы в tar zip являются архивами gz?


person user3642191    schedule 15.05.2014    source источник
comment
Убедитесь, что вы находитесь в правильном каталоге с помощью getwd().   -  person josliber♦    schedule 15.05.2014
comment
Я уже сделал это и получил [1] C: / Users / st / Documents, и мой файл находится в том же каталоге ... Полное имя моего g = файла - 1098496-1of1, тип файла - архив WinRAR. (.tar). Может проблема в имени файла?   -  person user3642191    schedule 15.05.2014
comment
Ах да, тогда вам нужно передать "1098496-1of1.tar" функции   -  person josliber♦    schedule 16.05.2014
comment
На самом деле это не вопрос R, а вопрос наивного пользователя Windows или Mac. Обратите внимание на содержание сообщений об ошибках. R говорит, что не может найти файл, вам нужно поверить сообщению и решить эту проблему.   -  person IRTFM    schedule 16.05.2014
comment
Спасибо, но когда я использую следующий код: dir.create (rainfalldataeumetstatR) ›getwd () [1] C: / Users / st / Documents› #ntar (1098496-1of1.tar) ›untar (1098496-1of1.tar, files = rainfalldataeumetstatR) ›list.files (rainfalldataeumetstatR) У меня нет файлов в моем каталоге и я получаю ответ: символ (0)   -  person user3642191    schedule 16.05.2014
comment
это потому, что искомого файла нет в архиве? Попробуйте untar("1098496-1of1.tar"); list.files() или untar("1098496-1of1.tar",list=TRUE) ...   -  person Ben Bolker    schedule 16.05.2014
comment
Я попытался запустить untar (1098496-1of1.tar, list = TRUE), но получил список с 284 файлами gz. Я не могу понять, как их открыть для одного фрейма данных? Список выглядит как untar (1098496-1of1.tar, list = TRUE) [1] MSG1-SEVI-MSGMPEG-0100-0100-20130101235500.000000000Z-1098496.gz [2] MSG1-SEVI-MSGMPEG-0100-0100-20130101235000.000000000Z- 1098496.gz [3] MSG1-SEVI-MSGMPEG-0100-0100-20130101234500.000000000Z-1098496.gz ...   -  person user3642191    schedule 16.05.2014


Ответы (3)


Я тоже боролся с открытием файлов GRIB в R. У вас есть несколько проблем, и вы можете решать их одну за другой.

Для проблем с распаковкой и gzip работайте из командной строки. Я не знаю, как создается / упаковывается tar-пакет из Eumetsat; создает ли он каталог и помещает в него все файлы данных? В этом случае поместите архив в каталог данных верхнего уровня, а затем

tar xvf tar_file_name cd (в только что созданный каталог) gunzip * .gz Запишите полный путь к файлам, которые вы хотите открыть для дальнейшего использования.

Находятся ли файлы в GRIB1 или GRIB2? Если в GRIB1, вам нужно установить wgrib. Если в GRIB2, вам нужно установить wgrib2. Оба доступны в NCEP.

Вы можете скачать их с: http://www.cpc.ncep.noaa.gov/products/wesley/

В R, 3.1 и новее вы устанавливаете пакет rNOMADS 2.0.1 и новее. Национальная система архива и распространения операционных моделей NOAA (NOMADS) распределяет глобальные сеточные данные в формате GRIB (в настоящее время в GRIB2).

rNOMADS помогает вам открывать данные GRIB1 и GRIB2 в R, вызывая wgrib или wgrib2 для декодирования двоичных данных GRIB и передачи их (в формате csv) для чтения R.

Откройте R, загрузите rNOMADS, а затем вызовите процедуру ReadGrib, используя полный путь к вашему файлу данных в «data_file_name». Это не тот способ, который описан в документации rNOMADS, но он работает.

Установка wgrib и wgrib2 - единственная сложная часть, и это может быть даже не так сложно, в зависимости от вашей системы. Я пишу руководства о том, как установить wgrib, wgrib2 и использовать rNOMADS с локальными файлами данных. Когда я закончу, они будут размещены здесь:

http://rda.ucar.edu/datasets/ds083.2/#!software

А теперь плохие новости: вам нужно открывать каждый файл последовательно. Но вы можете извлечь и сохранить нужные подполя, а затем прочитать их в следующем файле данных, перезаписав большую структуру данных, в которую вы читали предыдущий файл. Если это слишком много для PITA, рассматривали ли вы возможность использования инструмента GRADS для отображения данных GRIB?

person user2565322    schedule 26.08.2014

Нет собственного способа читать файлы grib в R. Используйте wgrib или wgrib2 в зависимости от того, находится ли ваш файл в формате grib или grib2. Я менеджер пакетов для rNOMADS - и поверьте мне, мы пытались найти простой способ R, но в итоге отказались от него. Возможно, люди из NCEP когда-нибудь это сделают, но это выходит за рамки нашего диапазона навыков.

person Danny Bowman    schedule 30.08.2014

Лично я распаковываю свои файлы с помощью cygwin еще и потому, что пакет wgrib в cygwin позволит вам получить файл инвентаризации, чтобы вы могли сообщить R, какие данные содержатся на каждом уровне. При условии, что данные grib1 r могут читать их напрямую. Grib2 требует wgrib2 на вашем компьютере, RNomads работает над этой проблемой.

Хорошо, я недавно нашел отличный веб-сайт, на котором показано, как установить wgrib, чтобы он мог работать в R вместе с rNOMADS.

https://bovineaerospace.wordpress.com/2015/04/26/how-to-install-rnomads-with-grib-file-support-on-windows/#comments

person Badger    schedule 16.05.2014