R语言:NetCDF格式数据的读写

1 读取nc文件

library(ncdf4)                                      #加载ncdf4包

setwd('F:\\data\\SSH\\')                     #设置工作目录

nc <- nc_open( ‘ssh2010average.nc’ )   #打开.nc文档,并将其赋值给nc这个变量

print(nc)                                             #输出.nc文档信息摘要


#​结果显示,ssh2010average.nc数据包含1个数据变量ssh,以及3个维度数据time、latitude、longitude。

#将这个数据集赋值给nc这个变量,通过class()函数我们可以看到nc的数据类型是ncdf4型。


#输出ssh的属性

ncatt_get( nc = nc, varid = 'ssh' )

#读取变量latitude和ssh
#如果想读取变量的所有数据,则只需给出nc和varid参数值:

lat <- ncvar_get( nc = nc, varid = 'latitude')

ssh_1 <- ncvar_get( nc = nc, varid = 'ssh')
​#如果只想读取变量的部分数据,则还应该给出start和count参数值。

sst_2 <- ncvar_get( nc = nc, varid = 'sst', start = c(31,86,1669), count = c(60,10,1) )

#c(31,86,1669)的括号里三个值分别代表三个维度分别为[longitude,latitude,time],count代表选取的个数

​#如果count值取为-1,则表示读取start之后的所有数据。

nc_close( nc ) #关闭文档

2.写入并保存nc文件

#创建维度,分别是time、longitude、latitude

lon<- ncdim_def( name = 'lon', units = 'degrees', vals = seq(0,360,1) )

lat <- ncdim_def( name = 'lat', units = 'degrees', vals = seq(90,-90,-1) )

t <- ncdim_def( name = 't', units = 'year', vals = 1 )

#也可以用上面读取的经纬度的值

lon<- ncdim_def( name = 'lon', units = 'degrees', vals = longitude )

lat <- ncdim_def( name = 'lat', units = 'degrees', vals = latitude) )

#创建变量ssh

ssh <- ncvar_def( name = 'ssh', units = 'cm', dim = list(lon,lat,t), missval = NA, prec = 'double' )

#创建文档,命名为ssh2010.nc,只包含1个数据变量ssh

ncnew <- nc_create( filename = 'ssh2010.nc', vars = ssh)

#写入数据

ncvar_put( nc = ncnew, varid = ssh, vals = ssh_2)#把上面的ssh_2的值存起来

#写入属性

ncatt_put( nc = ncnew, varid = 0, attname = 'description', attval = 'ssh data in  2010')

nc_close(ncnew)    #关闭.nc文档

 

 

 

 

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值