2016-04-30 33 views
1
提取变量

我的目标是提取温度,从每个纬度和经度从这个时代的临时数据文件的日期(见链接https://www.dropbox.com/s/lnxetoy1911q5sg/_grib2netcdf-atls17-95e2cf679cd58ee9b4db4dd119a05a8d-vMTGKo.nc?dl=0年代中期数据来自RNetCDF

我使用RNetCDF包中的R,但是当我用var.get.nc函数我的值都是负数。我被困在这一步。当我打开ArcMap时,我知道netcdf中有数据。我的代码如下所示

require(RNetCDF) 
nc_in1 = open.nc("_grib2netcdf-atls17-95e2cf679cd58ee9b4db4dd119a05a8d-vMTGKo.nc") 
# get all Air temperature data data: 
temp  <- var.get.nc(nc_in1, "t2m") 
head(temp) 

-8355 -8399 -8444 -8487 -8531 -8576

#DATA结构图如下

print.nc(nc_in1) 
    dimensions: 
    longitude = 561 ; 
    latitude = 321 ; 
    time = UNLIMITED ; // (8 currently) 
    variables: 
    float longitude(longitude) ; 
      longitude:units = "degrees_east" ; 
      longitude:long_name = "longitude" ; 
    float latitude(latitude) ; 
      latitude:units = "degrees_north" ; 
      latitude:long_name = "latitude" ; 
    int time(time) ; 
      time:units = "hours since 1900-01-01 00:00:0.0" ; 
      time:long_name = "time" ; 
      time:calendar = "gregorian" ; 
    short t2m(longitude, latitude, time) ; 
      t2m:scale_factor = 0.001140245 ; 
      t2m:add_offset = 264.0577 ; 
      t2m:_FillValue = -32767 ; 
      t2m:missing_value = -32767 ; 
      t2m:units = "K" ; 
      t2m:long_name = "2 metre temperature" ; 

      // global attributes: 
      :Conventions = "CF-1.6" ; 
      :history = "2016-04-30 18:18:33 GMT by grib_to_netcdf-1.14.5: grib_to_netcdf /data/data01/scratch/_mars-atls02-95e2cf679cd58ee9b4db4dd119a05a8d-E36dti.grib -o /data/data01/scratch/_grib2netcdf-atls17-95e2cf679cd58ee9b4db4dd119a05a8d-vMTGKo.nc -uti 

我能够使用相同的封装和代码使用MERRA数据实现相同,但我似乎无法在此ERA临时数据集中找到我的错误。在RNetCDF中解决这个问题的任何帮助都会很有帮助,因为我对这个软件包并不熟悉,并且仍然在学习.nc文件。

+0

只是一个快速评论:用于处理R中格点资料,我强烈建议'raster'包。 – AF7

+0

感谢您的评论我在R的技能不够尖锐。但是,栅格包允许我将数据转换为数据帧提取日期和相应的经纬度在同一行? – nee

+0

我不知道我明白。栅格包定义了R栅格数据的路径,它非常灵活且易于使用。但是,如果您只需执行非常简单的任务,那么您可能会比使用ncdf4或RNetCDF更好。 – AF7

回答

2

的解决您的问题是,你需要解压数据

temp  <- var.get.nc(nc_in1, "t2m", unpack= TRUE) 
+0

谢谢它的工作! – nee

相关问题