如何从netCDF创建rasterbrick?

如何从netCDF创建rasterbrick?,r,raster,netcdf,R,Raster,Netcdf,我想从netCDF文件创建一个光栅砖。我检查了一些基础知识,过程似乎很简单() 但是,当“构建”我的netCDF文件时,行、列和层的尺寸将被交换。即使我手动定义它们 # load libraries library(ncdf4) library(raster) # Load Outflow file ncfname = "C:/Users/stijn/OneDrive/Bureaublad/Thesis/Rscripts/Outputs/swit.nc" swit = nc_open(ncfn

我想从netCDF文件创建一个光栅砖。我检查了一些基础知识,过程似乎很简单()

但是,当“构建”我的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 ]
#加载库
图书馆(ncdf4)
图书馆(光栅)
#加载输出文件
ncfname=“C:/Users/stijn/OneDrive/Bureaublad/Thesis/rscript/Outputs/swit.nc”
swit=nc_打开(ncfname)
打印(swit)
[1变量(不包括维度变量):
浮动开关[时间,y,x]
单位:米/小时
缺少_值:-9999
_填充值:-9999
3个维度:
时间:2904
单位:2018-12-01 00:00:00起天数
y码:127
单位:米
x尺寸:147
单位:米]

switbrick问题在于文件的顺序不正常,从时间开始,而不是以时间结束。您可以使用
dims
参数对此进行更正(似乎没有文档记录)

试一试

库(光栅)
ncfname=“C:/Users/stijn/OneDrive/Bureaublad/Thesis/rscript/Outputs/swit.nc”

switbrick非常感谢!这完美地解决了问题。很高兴知道@如果你的问题适合你,你需要接受正确的答案。这就是其他人可能注意到这篇文章的回应方式。@Majid谢谢你的提醒!我试着回答工藤的问题,但工藤没有接受,因为我的名声还不到15岁。我想接受也不行,但我现在明白了。
library(raster)
ncfname = "C:/Users/stijn/OneDrive/Bureaublad/Thesis/Rscripts/Outputs/swit.nc"
switbrick <- brick(ncfname, dims=c(3,1,2))