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

时间:2014-05-15 19:10:09

标签: r grib

我试图从R中的eumetsat打开多传感器降水数据。我只能使用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档案而出现错误吗?

3 个答案:

答案 0 :(得分:0)

我个人也使用cygwin解压我的文件,因为cygwin中的wgrib包将允许你获得一个库存文件,这样你就可以告诉R每个层包含哪些数据。根据假设数据是grib1 r可以直接读取它。 Grib2在你的机器上需要wgrib2,RNomads正在努力应对这一挑战。

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

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

答案 1 :(得分:0)

我也一直在努力解决在R中打开GRIB文件的问题。你有几个问题,可以一个一个地解决它们。

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

  

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通过调用wgrib或wgrib2来解析二进制GRIB数据并将其管道化(以csv格式)以供R读入,从而帮助您打开R中的GRIB1和GRIB2数据。

打开R,加载rNOMADS,然后使用" data_file_name"中数据文件的完整路径名调用ReadGrib例程。这不是rNOMADS文档中描述的方式,但它可以工作。

安装wgrib和wgrib2是唯一的难点,它可能不会那么难,具体取决于您的系统。我正在编写有关如何安装wgrib,wgrib2以及将rNOMADS与本地数据文件一起使用的教程。当我完成后,他们将被发布在这里:

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

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

答案 2 :(得分:0)

没有本地方法可以将grib文件读入R.使用wgrib或wgrib2,具体取决于您的文件是grib2还是grib2格式。我是rNOMADS的包管理员 - 相信我,我们试图找出一个简单的R方式,最后放弃它。也许NCEP的人有一天会这样做,但它超出了我们的技能范围。