爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 17555|回复: 15

R语言读取NetCDF文件?

[复制链接]

新浪微博达人勋

发表于 2016-1-14 07:42:05 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 yysunnyboy 于 2016-1-14 07:58 编辑

请问有人知道R 怎么读取NetCDF文件啊?  我装了ncdf4包,但是不太会用,无法提取文件中的信息,还请大神指教!

在用nc_open打开NetCDF之后,如何利用ncvar_get得到诸如经纬度、降水量的数据呢?  这一步我总是搞不对。


补充一下,用 x <- ncvar_get()提取出想要分析的变量, 但发现x的属性为list,并且无法利用as.data.frame转化成数据框,这种情况下该怎么得到x中的数据呢?




密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-14 09:13:49 | 显示全部楼层
最近用R语言用的多一点,nc格式文件也用的挺多。我用的是RNetCDF。不知道代码粘贴进来没有,我在复制一遍吧。
library(RNetCDF)
nc<-open.nc("D:\\DATA\\prcp05grid\\prcp05grid_china1961_2013.nc")#括号内是你的nc文件
prcp.sam<-var.get.nc(nc,"prcp",c(y.sam,x.sam,1),c(1,1,636))#读取的函数,这里有必要说明一下,第一个c()是读取数据的初始位置,第二个c()是读取的数据的形式
close.nc(nc)

关于你所说的经纬度,在定义nc文件的维度的时候,会有定义long跟lat,其实只要在属性中说明经纬度的起始点就行,读取的时候,都是按照编号来读取的。比如上面的c(y.sam,x.sam,1)中我y.sam就是对应的纬度的编号,x.sam对应的是经度的编号。后面的c(1,1,636),我的时间序列长度是636,所以这样读取的就是一个点所有时间序列上的数据。如果是c(72,128,1)就是我一个时间点上所有的数据(我是72*128*636的数据)。
还有你说的读取出的数据的格式是list,我读取出来的数据都是array格式的,也都是可以as.data.frame的。不知道你问的得到x的数据是什么意思。希望能帮到你。
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2016-1-15 10:10:28 | 显示全部楼层
dreamdong 发表于 2016-1-14 09:13
最近用R语言用的多一点,nc格式文件也用的挺多。我用的是RNetCDF。不知道代码粘贴进来没有,我在复制一遍吧 ...

非常感谢大神的解答,希望以后可以多多交流R中的问题! 方便留个QQ吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-16 15:19:45 | 显示全部楼层
yysunnyboy 发表于 2016-1-15 10:10
非常感谢大神的解答,希望以后可以多多交流R中的问题! 方便留个QQ吗?

好的啊,我也是在学习R语言,一起学习挺好的啊。844030838
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-1-19 00:11:51 | 显示全部楼层
dreamdong 发表于 2016-1-16 15:19
好的啊,我也是在学习R语言,一起学习挺好的啊。844030838

已经加你啦!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-21 08:39:44 | 显示全部楼层
做气象的越来越多人开始用R语言了,但是这个论坛还没有专栏啊……
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-25 13:12:29 | 显示全部楼层
为什么不开辟R语言专栏呢,同问
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-25 13:20:02 | 显示全部楼层
本帖最后由 grace639 于 2016-11-25 13:43 编辑

library(ncdf4)
nc <- nc_open('***.nc')
varid <- ncvar_get(nc, '变量名',start=c(1,1,1),count=c(-1,-1,-1))
start起始经纬度
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-11-29 01:50:23 | 显示全部楼层

请问 start 是起始经纬度吗? 那怎么会是 c(1,1,1)呢? 谢谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-11-29 01:53:29 | 显示全部楼层
dreamdong 发表于 2016-1-14 09:13
最近用R语言用的多一点,nc格式文件也用的挺多。我用的是RNetCDF。不知道代码粘贴进来没有,我在复制一遍吧 ...

你好,方便再解释一下c(1,1,636)的含义吗? 谢谢!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表