【问题标题】:stack variables from netCDF file来自 netCDF 文件的堆栈变量
【发布时间】:2021-04-14 08:45:27
【问题描述】:

我正在处理几个 netCDF 文件。每个 nc 文件有 33 个变量。我需要使用这 33 个变量为每个 nc 文件创建一个堆栈来进行一些计算,但我知道的唯一方法是在评估器中转换每个变量并一个一个地堆叠它们......就像这样:

library(raster)
library(ncdf4)
library(rgdal)

nc_data <- nc_open('./data/GCAM/RAW/93d4aa096b15491b1ba136b46d8063cdca59d253c75d59791b4d4cb6f8a1ae91/Project ID 68344/GCAM-Demeter/GCAM-Harmonized/Mean_Std/GCAM_Demeter_LU_H_ssp1_rcp26_modelmean_2030.nc')

PTF0 <- nc_data$var[[1]]
data1 <- ncvar_get( nc_data, PTF0 ) 

data1 <- raster(data1)

plot(data1)

任何人都可以帮助自动化这个吗?提前谢谢了

This is a structure of the NetCDF file, I highlight the files that I need to stack, actually, I need stack just PT1 to PTF8

【问题讨论】:

    标签: stack raster netcdf


    【解决方案1】:

    你现在正在做的事情可以像 tis 那样做

    f <- 'GCAM_Demeter_LU_H_ssp1_rcp26_modelmean_2030.nc'
    
    library(raster)
    r <- raster(f, "PTF0") 
    

    (假设“PTF0”是变量名)

    但如果您想一步为多个变量创建一个对象,请改用terra

    library(terra)
    r <- rast(f) 
    

    你可以指定你想要的变量

     rr <- rast(f, c("PFT1", "PTF2"))
    

    你也可以创建一个 SpatRasterDataSet 然后像这样提取你想要的变量

    s <-sds(f)
    x <- rast(s[2:8])
    

    【讨论】:

    • 其实这是我的第一次尝试。但我收到错误:Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘raster’ for signature ‘"ncdf4"’ 我也尝试了 terra 包的第二种方法。但我收到同样的错误
    • 那你在做别的事情。在我的示例中,您需要使用文件名f。您不能使用 ncdf4 对象。
    【解决方案2】:

    感谢罗伯特先生!通过这几行,我解决了问题,我可以做我需要的一切。

    library(raster)
    library(ncdf4)
    library(rgdal)
    library(terra)
    
    f <- nc_open('./data/GCAM/RAW/93d4aa096b15491b1ba136b46d8063cdca59d253c75d59791b4d4cb6f8a1ae91/Project ID 68344/GCAM-Demeter/GCAM-Harmonized/Mean_Std/GCAM_Demeter_LU_H_ssp1_rcp26_modelmean_2030.nc')
    
    rr <- rast(f$filename)
    
    rrr <- rr[[2:8]]
    
    plot(rrr)
    
    soma <- sum(rrr)
    
    plot(soma)
    
    

    现在我会花更多的时间考虑如何自动执行此操作...因为我需要对每个 NetCDF 文件执行此操作...

    【讨论】:

      猜你喜欢
      • 2013-01-05
      • 1970-01-01
      • 2019-03-21
      • 2021-12-18
      • 1970-01-01
      • 2021-05-28
      • 2014-12-09
      • 1970-01-01
      • 2019-06-15
      相关资源
      最近更新 更多