如何在R中读取gzip压缩的grib文件?

如何在R中读取gzip压缩的grib文件?,r,grib,R,Grib,我试图打开欧洲气象卫星组织(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 g

我试图打开欧洲气象卫星组织(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'
但当我使用下一个代码时:

我没有在我的目录中获取某些文件并获取答案:

character(0)

可能是因为tar zip中的文件是gz归档文件而出现错误?

我个人使用cygwin解压我的文件也是因为cygwin中的wgrib包允许您获取一个清单文件,以便您可以告诉R每个层中包含哪些数据。在假设数据为grib1的情况下,r可以直接读取数据。Grib2需要在您的机器上安装wgrib2,RNomads正在解决这一难题

好的,我最近发现了一个很棒的网站,展示了如何安装wgrib,这样它就可以在R中与rnomad一起运行


我也在努力用R打开GRIB文件。您有几个问题,可以逐一解决

对于untar和gzip问题,请从命令行进行操作。我不知道tar包是如何从Eumetsat构建/打包的;它是否创建一个目录并将所有数据文件放在该目录中?在这种情况下,将tarball放在顶级数据目录中,然后

tar xvf tar_文件名 cd(到刚创建的目录) gunzip*.gz 记下要打开以供以后使用的文件的完整路径名

文件是GRIB1还是GRIB2?如果在GRIB1中,则需要安装wgrib。如果在GRIB2中,则需要安装wgrib2。两者都可以从NCEP获得

您可以从以下网站下载:

在R、3.1和更高版本中,安装rNOMADS包2.0.1和更高版本。 NOAA国家运行模型存档和分发系统(NOMADS)以GRIB格式(目前为GRIB2)分发全球网格数据

rNOMADS通过调用wgrib或wgrib2对二进制GRIB数据进行解码,并通过管道(csv格式)将其读入R,从而帮助您在R中打开GRIB1和GRIB2数据

打开R,加载rnomad,然后在“data\u file\u name”中使用数据文件的完整路径名调用ReadGrib例程。这不是rNOMADS文档中描述的方式,但它可以工作

安装wgrib和wgrib2是唯一困难的部分,根据您的系统,它甚至可能没有那么困难。我正在编写关于如何安装wgrib、wgrib2以及如何将rNOMADS与本地数据文件一起使用的教程。当我完成后,它们将发布在这里:

现在来看一些坏消息:
您需要按顺序打开每个文件。但是,您可以提取并保存所需的子字段,然后读入下一个数据文件,覆盖读取前一个文件的大型数据结构。如果这是太多的PITA,您是否考虑过使用GRADS工具来显示GRIB数据?

没有将GRIB文件读入R的原生方法。根据您的文件是GRIB格式还是grib2格式,使用wgrib或wgrib2。我是rNOMADS的软件包经理-相信我,我们试图找到一种简单的R方法,但最终放弃了它。也许NCEP的人有一天会这么做,但这超出了我们的技能范围。

使用
getwd()
验证您是否在正确的目录中。我已经这样做了,我得到[1]“C:/Users/st/Documents”,我的文件也在同一目录中。。。我的g=文件的全名是1098496-1of1,文件类型是WinRAR存档(.tar)。可能是文件名有问题?哦,是的,那么您需要将
“1098496-1of1.tar”
传递给函数这不是一个真正的R问题,而是一个简单的windows或mac用户问题。您需要注意错误消息的内容。它说它找不到文件,你需要相信这个消息并解决这个问题。谢谢,但是当我使用下一个代码:dir.create(“rainfalldataeumetstatR”)>getwd()[1]“C:/Users/st/Documents”>#ntar(“1098496-1of1.tar”)>untar(“1098496-1of1.tar”,files=“rainfalldataeumetstatR”)>list.files(“RainfallDataeumETTR”)我没有在我的目录中获取一些文件,但得到的答案是:字符(0)
character(0)