【问题标题】:Writing compressed netCDF4 files with raster使用光栅写入压缩的 netCDF4 文件
【发布时间】:2015-06-04 11:13:59
【问题描述】:

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

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

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

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

bash $ > cdo sinfo test.nc 
   File format : netCDF

不仅未压缩,甚至 netCDF4。

根据 GDAL 文档,这些选项应该可以工作(请参阅“创建选项”下的 here)。 根据光栅手册,writeRaster下:

选项:字符。文件格式特定的 GDAL 选项。例如,当 编写可以使用的 geotiff 文件: options=c("COMPRESS=NONE", "TFW=YES")

可能出了什么问题?

【问题讨论】:

  • 如果可以的话,避免使用writeRaster 来编写NetCDF,而更喜欢ncdf4 包中的函数。它将允许您使用压缩(在函数 ncvar_def 中)。

标签: r raster gdal rgdal


【解决方案1】:

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)   

force_v4 参数被传递给nc_create)。

【讨论】:

  • 谢谢。我认为应该在手册中指定:我知道raster 使用了ncdf4,但在writeRaster 手册条目中,options 中只提到了GDAL。我将尝试开发版本。再次感谢您的回复和优秀包。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
相关资源
最近更新 更多