【问题标题】:Open multiple netCDF files in a raster stack subsetting by z-value in R通过 R 中的 z 值在栅格堆栈子集中打开多个 netCDF 文件
【发布时间】:2019-04-21 05:24:18
【问题描述】:

我在一个文件夹中有大约 30 个 netCDF 文件。他们每个人看起来像这样:

> test
class       : RasterBrick 
dimensions  : 1680, 4320, 7257600, 8  (nrow, ncol, ncell, nlayers)
resolution  : 0.08333333, 0.08333333  (x, y)
extent      : -180, 180, -56, 84  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : /Users/maps/GCMD_5km/10-18/BS5min.nc 
names       : X4.5, X9.10000038146973, X16.6000003814697, X28.8999996185303, X49.2999992370605, X82.9000015258789, X138.300003051758, X229.600006103516 
centimeter  : 4.5, 9.10000038146973, 16.6000003814697, 28.8999996185303, 49.2999992370605, 82.9000015258789, 138.300003051758, 229.600006103516 
varname     : BS 

如您所见,有一个“厘米”部分表示每个文件中包含的不同层的深度。

我想将所有 .nc 文件堆叠在一个栅格中,以便稍后提取几个点的值。 我只对第一个深度层“4.5”感兴趣。我试过这个,希望只为每个 .nc 文件选择第一个深度层:

filenames <- list.files(path="~/OneDrive/OneDrive - Universitat Autònoma de Barcelona/IIASA/maps/GCMD_5km/10-18/",
                        pattern='*.nc',full.names=TRUE)
soils <- raster::brick(filenames, lvar=4, level=1)

但这会返回所有层(带有额外的警告消息)。

有什么帮助吗?谢谢

【问题讨论】:

  • 为什么是lvar=4?该文件似乎只有 3 个维度。 ncell 不是维度,它是 nrow*ncol。如果你在没有 lvar 参数的情况下尝试它会发生什么?如soils &lt;- brick(lapply(filenames, raster, level=1))

标签: r raster netcdf


【解决方案1】:

如果不访问您的数据,我无法证实这一点, 但也许这样的事情对你有用:

soils <- lapply(filenames, raster::raster, lvar=4, level=1)
raster::brick(soils)

【讨论】:

    【解决方案2】:

    test[[1]]raster(test, 1) 不返回第一层吗?

    raster(filename) 也应该这样做。

    【讨论】:

      猜你喜欢
      • 2017-01-26
      • 2018-10-06
      • 2018-06-09
      • 2019-11-21
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多