无法提取我在Panoply中看到的R中的netcdf变量

问题描述

我有一个带气候数据的netcdf文件。我使用全景(https://www.giss.nasa.gov/tools/panoply/)进行了探索,在其中看到了以下变量:

  • lat(1D)-每个网格单元中的参考纬度列表
  • lat_bnds(2D)-每个网格单元的两列最小/最大纬度
  • lon(1D)-与经纬度相同,但经度
  • lon_bnds(2D)-与经度相同lat_bnds
  • tas(Geo2D;近地面气温)
  • 时间(1D):变量tas的第3维中的时间步长列表
  • time_bnds(2D):两列,其最大/最小时间范围为tas第三维度

我现在需要使用R提取这些变量。

ncpath <- ("[PATH WHERE FILE IS SAVED]") 
ncfname <-paste(ncpath,'[FILENAME].nc',sep = '')
ncin <- nc_open(ncfname) # open netcdf file
view(ncin) # to see the structure of the netcdf,which is messier than what appears in panoply

摘要输出

  • 文件名(带有路径+文件名的字符串)
  • 可写(TRUE / FALSE)
  • Id(一个我不知道的数字)
  • 安全模式(TRUE / FALSE)
  • 格式(“ NC_FORMAT_NETCDF4_CLASSIC”)
  • Is_GMT(TRUE / FALSE)
  • 组(带有其他变量的列表):id / name / ndims / nvars / natts / dimid / fqgn(每个变量只有一个整数;不知道它们到底是什么)
  • Fqgn2Rindex(带有其他变量的列表):只有一个带有整数4的变量“ [1]”(不知道这是什么)
  • Ndims(维度数:4)
  • Natts(属性数:1)
  • 暗淡(带有其他变量的列表):->这是存储时间/经度/经度的地方
  1. 时间:名称/ len / unlim / group_index / group_id / id / units / calendar / vals / create_dimvar / dimvarid(最后一个是另一组看起来很混乱的变量)
  2. 界限:与上面类似的列表,但变量“ vals” = [1,2],因此此处没有坐标限制
  3. 拉特(请参阅此here的屏幕截图)
  4. Lon(没有屏幕截图,但与lat类似)
  • Unlimdimid(某物的尺寸:1)
  • Nvars(变量数:4->在这种情况下,我仅以常规时间/纬度/经度提取温度)
  • Var(包含所有变量的组):
  1. Time_bnds:这是另一组变量,仅包含维数和一些混乱情况-不知道为什么它在上面的“ var”下而不是在“ time”下
  2. Lat_bnds:我已经完成了此here)的屏幕截图
  3. Lon_bnds:没有屏幕截图,与lat相似
  4. Tas(数据本身不包含经度/纬度)

全屏使用: 变量lat_bnds(我最感兴趣的变量)以CSV格式提取时,看起来像: two columns of min/max latitude ranges. Size: 128*2

在R中:

ncin[["dim"]][["lat"]][["vals"]]”

-87.863799 -85.096527 -82.312913 -79.525607 -76.736900 -73.947515 -71.157752 -68.367756 -65.577607 -62.787352 -59.997020 -57.206632 -54.416200 -51.625734 -48.835241 -46.044727 -43.254195 -40.463648 -37.673090 -34.882521 -32.091944 -29.301360 -26.510769 -23.720174 -20.929574 -18.138971 -15.348365 -12.557756  -9.767146  -6.976534  -4.185921  -1.395307   1.395307   4.185921   6.976534   9.767146  12.557756  15.348365  18.138971  20.929574  23.720174  26.510769  29.301360  32.091944  34.882521  37.673090  40.463648  43.254195  46.044727  48.835241  51.625734  54.416200  57.206632  59.997020  62.787352  65.577607  68.367756  71.157752  73.947515  76.736900  79.525607  82.312913  85.096527  87.863799

ncin[["var"]][["lat_bnds"]][["dim"]][[2]][["vals"]]

-87.863799 -85.096527 -82.312913 -79.525607 -76.736900 -73.947515 -71.157752 -68.367756 -65.577607 -62.787352 -59.997020 -57.206632 -54.416200 -51.625734 -48.835241 -46.044727 -43.254195 -40.463648 -37.673090 -34.882521 -32.091944 -29.301360 -26.510769 -23.720174 -20.929574 -18.138971 -15.348365 -12.557756  -9.767146  -6.976534  -4.185921  -1.395307   1.395307   4.185921   6.976534   9.767146 12.557756  15.348365  18.138971  20.929574  23.720174  26.510769  29.301360  32.091944  34.882521  37.673090  40.463648  43.254195 46.044727  48.835241  51.625734  54.416200  57.206632  59.997020  62.787352  65.577607  68.367756  71.157752  73.947515  76.736900 79.525607  82.312913  85.096527  87.863799

问题:我无法在R中提取lat_bnds变量,因为我只能获得与在panoply中(以及在R中-的lat变量)相同的纬度字符串以上提取)。任何对我做错事的帮助将不胜感激!

解决方法

使用适当的函数ncdf4::ncvar_get提取变量似乎可行:

df <- ncdf4::nc_open(filename = "MIROC-ES2L_LGM_moclim_tas.nc")
ncdf4::ncvar_get(df,"lat_bnds")

          [,1]      [,2]      [,3]      [,4]      [,5]      [,6]      [,7]      [,8]      [,9]     [,10]     [,11]     [,12]     [,13]
[1,] -90.00000 -86.57775 -83.75703 -80.95502 -78.15835 -75.36394 -72.57070 -69.77815 -66.98603 -64.19420 -61.40258 -58.61111 -55.81976
[2,] -86.57775 -83.75703 -80.95502 -78.15835 -75.36394 -72.57070 -69.77815 -66.98603 -64.19420 -61.40258 -58.61111 -55.81976 -53.02849
         [,14]     [,15]     [,16]     [,17]     [,18]     [,19]     [,20]     [,21]     [,22]     [,23]     [,24]     [,25]     [,26]
[1,] -53.02849 -50.23730 -47.44615 -44.65506 -41.86400 -39.07297 -36.28196 -33.49098 -30.70002 -27.90906 -25.11813 -22.32720 -19.53628
[2,] -50.23730 -47.44615 -44.65506 -41.86400 -39.07297 -36.28196 -33.49098 -30.70002 -27.90906 -25.11813 -22.32720 -19.53628 -16.74537
         [,27]     [,28]      [,29]     [,30]     [,31]    [,32]   [,33]    [,34]    [,35]     [,36]    [,37]    [,38]    [,39]
[1,] -16.74537 -13.95447 -11.163569 -8.372673 -5.581781 -2.79089 0.00000 2.790890 5.581781  8.372673 11.16357 13.95447 16.74537
[2,] -13.95447 -11.16357  -8.372673 -5.581781 -2.790890  0.00000 2.79089 5.581781 8.372673 11.163569 13.95447 16.74537 19.53628
        [,40]    [,41]    [,42]    [,43]    [,44]    [,45]    [,46]    [,47]    [,48]    [,49]    [,50]    [,51]    [,52]    [,53]
[1,] 19.53628 22.32720 25.11813 27.90906 30.70002 33.49098 36.28196 39.07297 41.86400 44.65506 47.44615 50.23730 53.02849 55.81976
[2,] 22.32720 25.11813 27.90906 30.70002 33.49098 36.28196 39.07297 41.86400 44.65506 47.44615 50.23730 53.02849 55.81976 58.61111
        [,54]    [,55]    [,56]    [,57]    [,58]    [,59]    [,60]    [,61]    [,62]    [,63]    [,64]
[1,] 58.61111 61.40258 64.19420 66.98603 69.77815 72.57070 75.36394 78.15835 80.95502 83.75703 86.57775
[2,] 61.40258 64.19420 66.98603 69.77815 72.57070 75.36394 78.15835 80.95502 83.75703 86.57775 90.00000

ncdf4::ncvar_get(df,"lat")

[1] -87.863799 -85.096527 -82.312913 -79.525607 -76.736900 -73.947515 -71.157752 -68.367756 -65.577607 -62.787352 -59.997020
[12] -57.206632 -54.416200 -51.625734 -48.835241 -46.044727 -43.254195 -40.463648 -37.673090 -34.882521 -32.091944 -29.301360
[23] -26.510769 -23.720174 -20.929574 -18.138971 -15.348365 -12.557756  -9.767146  -6.976534  -4.185921  -1.395307   1.395307
[34]   4.185921   6.976534   9.767146  12.557756  15.348365  18.138971  20.929574  23.720174  26.510769  29.301360  32.091944
[45]  34.882521  37.673090  40.463648  43.254195  46.044727  48.835241  51.625734  54.416200  57.206632  59.997020  62.787352
[56]  65.577607  68.367756  71.157752  73.947515  76.736900  79.525607  82.312913  85.096527  87.863799

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...