使用栅格编写压缩的netCDF4文件

AF7*_*AF7 2 r raster gdal rgdal

我想使用该raster包编写压缩的netCDF4文件. ncdf4rgdal正确安装.

但是,以下内容无法返回netCDF4压缩文件:

library(raster)
r <- raster() <- runif(86400)
r[] <- <- runif(86400)
writeRaster(r, "test.nc", options=c("COMPRESS=DEFLATE", "FORMAT=NC4"))
Run Code Online (Sandbox Code Playgroud)

实际上它只返回一个标准的netCDF文件:

bash $ > cdo sinfo test.nc 
   File format : netCDF
Run Code Online (Sandbox Code Playgroud)

不仅没有压缩,甚至不是netCDF4.

根据GDAL文档,这些选项应该有效(参见此处 "创建选项").根据光栅手册,在writeRaster:

选项:角色.文件格式特定的GDAL选项.例如,在编写geotiff文件时,您可以使用:options = c("COMPRESS = NONE","TFW = YES")

可能有什么不对?

Rob*_*ans 6

ncdf文件不是通过GDAL编写的,因为rgdal包(至少是windows上的二进制版本)没有附带ncdf驱动程序.相反,writeRaster使用包ncdf或(最好)ncdf4,因此你必须使用ncdf4包提供的参数(在ncvar_def函数中).也就是说,你会这样做compression=7,这将自动将文件转换为ncdf4格式.但是,当前版本raster会忽略这些参数.我在R-Forge(版本2.4-7)的开发版本中修复了这个问题,这样你就可以:

writeRaster(r, "test.nc", datatype='INT2S', force_v4=TRUE, compression=7)   
Run Code Online (Sandbox Code Playgroud)

(force_v4参数传递给nc_create).