如何从 netCDF 创建 rasterbrick?

How to create a rasterbrick from netCDF?

我想从 netCDF 文件创建一个 rasterbrick。我检查了一些基础知识,过程似乎很简单 (https://www.youtube.com/watch?v=jWy_jGZo2oc)。

但是,当 'bricking' 我的 netCDF 文件时,行、列和层的尺寸被交换。即使我手动定义它们。

# load libraries
library(ncdf4)
library(raster)

# Load Outflow file
ncfname = "C:/Users/stijn/OneDrive/Bureaublad/Thesis/Rscripts/Outputs/swit.nc"
swit = nc_open(ncfname)

print(swit)

[     1 variables (excluding dimension variables):
        float SWIT[time,y,x]   
            units: m/hr
            missing_value: -9999
            _FillValue: -9999

     3 dimensions:
        time  Size:2904
            units: days since 2018-12-01 00:00:00
        y  Size:127
            units: Meter
        x  Size:147
            units: Meter]
switbrick <- brick(ncfname, nrows = 127, ncols = 147, nl = 2904)

switbrick

[class      : RasterBrick 
dimensions : 127, 2904, 368808, 147  (nrow, ncol, ncell, nlayers)
resolution : 0.04166667, 5  (x, y)
extent     : -0.02083333, 120.9792, 6615598, 6616233  (xmin, xmax, ymin, ymax)
crs        : NA 
source     : directory/something/swit.nc 
names      : X603301.87, X603306.87, X603311.87, X603316.87, X603321.87, X603326.87, X603331.87, X603336.87, X603341.87, X603346.87, X603351.87, X603356.87, X603361.87, X603366.87, X603371.87, ... 
x (Meter)  : 603301.87, 604031.87 (min, max)
varname    : SWIT ]

尺寸应该与说明的一样,但实际上并非如此。是什么原因导致此错误?

问题是文件的顺序不正常,以 time 开头而不是结尾。您可以使用 dims 参数来纠正这一点(似乎没有记录)。

尝试

library(raster)
ncfname = "C:/Users/stijn/OneDrive/Bureaublad/Thesis/Rscripts/Outputs/swit.nc"
switbrick <- brick(ncfname, dims=c(3,1,2))

从文件创建对象时不考虑您提供的附加参数(nrow、ncols、nlayers)。