将R栅格堆写入NetCDF

3

我有一个包含1981年月度气温数据的R网格文件,我读取了该文件并尝试使用以下代码将其写入NetCDF:

library(raster)
library(ncdf4)
library(RNetCDF)

test <- raster('.../TavgM_1981.gri', package = "raster")
rstack = stack(test)

writeRaster(rstack, "rstack.nc", overwrite=TRUE, format="CDF",     varname="Temperature", varunit="degC", 
        longname="Temperature -- raster stack to netCDF", xname="X",   yname="Y",zname="nbands",
        zunit="numeric")

这段代码写出了NetCDF文件,但是我只能看到一个月份(我不确定是哪个月),在使用Panoply查看它时,并没有显示一整年的12个月份。请问有可能编写NetCDF文件并尽可能保留来自R-Grid文件的数据吗?特别是每个月份的数据!
编辑:
新可工作的代码:
test <- brick('/TavgM_1981.gri')
writeRaster(test, "rstack.nc", overwrite=TRUE, format="CDF",     varname="Temperature", varunit="degC", 
        longname="Temperature -- raster stack to netCDF", xname="Longitude",   yname="Latitude", zname="Time (Month)")

1
网格文件的链接已经失效。我几乎可以确定你的问题是test <- raster(...)只创建了一个单独的栅格层。因此,当你在其上使用stack时,仍然只有一个层。解决方案是一开始就将网格文件加载为“brick”。但在发布答案之前,我想检查一下,如果你能修复链接的话。 - dww
现在已经修复了链接 - 抱歉,该网站不能长期托管。 - Pad
1个回答

3
正如dww所指出的,要获取所有图层,这个
test <- raster('.../TavgM_1981.gri', package = "raster")

应该是

test <- brick('TavgM_1981.grd')

最重要的是将raster替换为brick。此外,三个点.../没有任何意义。它可以是一个或两个点(或不必要的),而package = "raster"参数则无意义。


谢谢!我现在正在尝试将栅格文件中的x和y坐标从“米”转换为经纬度。 - Pad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接