【问题标题】:HDF error with rotate() function raster package ncdf filerotate() 函数光栅包 ncdf 文件的 HDF 错误
【发布时间】:2021-03-16 15:20:49
【问题描述】:

[1]我想将 Lon 0, 360 的 netcdf 文件旋转到 -180, 180。很简单,但是当我尝试在 Rstudio 中使用 rotate() 函数时,出现以下错误:

Error in Rsx_nc4_get_vara_double: NetCDF: HDF error
Var: pr  Ndims: 3   Start: 558,0,0 Count: 1,144,96
Fehler in ncvar_get_inner(ncid2use, varid2use, nc$var[[li]]$missval, addOffset,  : 
  C function R_nc4_get_vara_double returned error

我已经安装了 raster、regal 和 ncdf4 包。我试图安装 rgdal 包,但它告诉我这不适用于我的 R 版本。 我以前在 Mac 上工作过,但是 rgdal 包有很多问题(以及这个 HDF 错误)我切换到 Windows 10 并寄予厚望,希望它能解决我的问题,但不幸的是它不是。所以我在 Mac 和 Windows 上遇到了完全相同的错误,一位朋友在他的 Windows 机器上尝试了代码和文件,它的工作正常。我是 R 和编程的新手,不知道该尝试什么。非常感谢您的帮助!

这是我的代码:

library(raster)   
Stack.nc <- stack("pr_Amon_ACCESS-CM2_historical_r1i1p1f1_gn_185001-201412.nc")
StackRot.nc <- rotate(Stack.nc)`

[这里是我从中获取文件的网站,希望是我选择的所有变量 https://esgf-data.dkrz.de/search/cmip6-dkrz/

【问题讨论】:

    标签: r gdal netcdf r-raster


    【解决方案1】:

    这似乎与 rgdal 无关,因为您的脚本没有使用它(我从您的示例中删除了 library(rgdal) 以使其更清晰)。

    我认为这不仅适用于旋转,而且任何读取数据的尝试都会失败。例如,你能做到吗

    s <- Stack.nc * 1
    

    更新

    提供的文件对我有用

    f <- "pr_Amon_ACCESS-CM2_historical_r1i1p1f1_gn_185001-201412.nc"
    

    terra

    library(terra)
    r <- rast(f)
    rr <- rotate(r)
    
    rr    
    #class       : SpatRaster 
    #dimensions  : 144, 192, 1980  (nrow, ncol, nlyr)
    #resolution  : 1.875, 1.25  (x, y)
    #extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
    #coord. ref. : +proj=longlat +datum=WGS84 +no_defs 
    #source      : memory 
    #names       :         pr_1,         pr_2,         pr_3,         pr_4,         pr_5,         pr_6, ... 
    #min values  : 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, ... 
    #max values  : 0.0004399522, 0.0004903608, 0.0003187894, 0.0004326741, 0.0003904318, 0.0006041837, ... 
    

    还有raster

    library(raster)
    b <- brick(f)
    bb <- rotate(b)
    
    bb
    #class      : RasterBrick 
    #dimensions : 144, 192, 27648, 1980  (nrow, ncol, ncell, nlayers)
    #resolution : 1.875, 1.25  (x, y)
    #extent     : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
    #crs        : +proj=longlat +datum=WGS84 +no_defs 
    #source     : memory
    #names      :  X1850.01.16,  X1850.02.15,  X1850.03.16,  X1850.04.16,  X1850.05.16,  X1850.06.16,  X1850.07.16,  X1850.08.16,  X1850.09.16,  X1850.10.16,  X1850.11.16,  X1850.12.16,  X1851.01.16,  X1851.02.15,  X1851.03.16, ... 
    #min values : 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 4.140691e-18, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, 0.000000e+00, ... 
    #max values : 0.0004399522, 0.0004903608, 0.0003187894, 0.0004326741, 0.0003904318, 0.0006041837, 0.0008112662, 0.0006924249, 0.0005891759, 0.0003935274, 0.0003543252, 0.0003916493, 0.0004465098, 0.0004070048, 0.0003241026, ... 
    Date       : 1850-01-16, 2014-12-16 (min, max)
    

    您使用的是当前版本的 R 吗?您说“rgdal 不适用于我的 R 版本”,这表明您使用的是相当旧的版本?你能显示你的sessionInfo()吗?你能重新安装相关的软件包吗? install.packages(c("raster", "ncdf4", "terra"))

    【讨论】:

    • 感谢您的调查!你是对的,我在尝试 s
    • 它必须是您正在使用的文件。您可以与谷歌驱动器或类似的分享它。
    • 你好罗伯特,“rgdal 不适用于我的 R 版本”我的意思是由于 BigSur 的更新,很难在 Mac 上安装它。在 Windows 上运行良好,我有最新的 R 版本。我尝试从不同的模型中旋转 NetCDF(我在问题中使用的文件来自 ACCESS-CM2),并且成功了。
    猜你喜欢
    • 1970-01-01
    • 2015-06-09
    • 2022-01-26
    • 2019-06-04
    • 2023-01-20
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多