R-NC格式数据读取及预处理

0 . 示例数据

NC示例数据下载
注:截取其中前10个数据用于数据处理流程说明。

1.所需软件包

require(ncdf4)
require(raster)
#安装方法
install.packages('ncdf4')
install.packages('raster')

1. NC 文件数据导入

NC文件是用于储存多维数据的一种栅格数据格式,地理学方面,其内往往包括longitude, latitude 及对应的参数,其中参数可以是一个也可以是很多个。以今天的数据为例,其中参数包括如下:

1   mcdate  EFLX_LH_TOT_R   FSA_R   FSRVI   QIRRIG  SNOW    TREFMXAV_R
2   mcsec   EFLX_LH_TOT_U   FSA_U   GC_HEAT1    QOVER   SNOWDP  TREFMXAV_U
3   mdcur   ELAI    FSDS    GC_ICE1 QRGWL   SNOWICE TSA
4   mscur   ERRH2O  FSDSND  GC_LIQ1 QRUNOFF SNOWLIQ TSAI
5   nstep   ERRH2OSNO   FSDSNDLN    H2OCAN  QRUNOFF_NODYNLNDUSE SNOW_SINKS  TSA_R
6   time_bounds ERRSEB  FSDSNI  H2OSNO  QRUNOFF_R   SNOW_SOURCES    TSA_U
7   date_written    ERRSOI  FSDSVD  H2OSNO_TOP  QRUNOFF_U   SOILICE TSOI
8   time_written    ERRSOL  FSDSVDLN    H2OSOI  QSNOMELT    SOILLIQ TSOI_10CM
9   area    ESAI    FSDSVI  HC  QSNWCPICE   SOILWATER_10CM  TSOI_ICE
10  topo    FCEV    FSH HCSOI   QSNWCPICE_NODYNLNDUSE   SoilAlpha   TV
11  landfrac    FCOV    FSH_G   HEAT_FROM_AC    QSOIL   SoilAlpha_U U10
12  landmask    FCTR    FSH_NODYNLNDUSE LAISHA  QVEGE   TAUX    URBAN_AC
13  pftmask FGEV    FSH_R   LAISUN  QVEGT   TAUY    URBAN_HEAT
14  ZSOI    FGR FSH_U   OCDEP   RAIN    TBOT    WA
15  DZSOI   FGR12   FSH_V   PBOT    RH2M    TBUILD  WASTEHEAT
16  WATSAT  FGR_R   FSM PCO2    RH2M_R  TG  WIND
17  SUCSAT  FGR_U   FSM_R   Q2M RH2M_U  TG_R    WT
18  BSW FIRA    FSM_U   QBOT    SABG    TG_U    ZBOT
19  HKSAT   FIRA_R  FSNO    QCHARGE SABV    THBOT   ZWT
20  BCDEP   FIRA_U  FSR QDRAI   SNOBCMCL    TLAI    
21  BTRAN   FIRE    FSRND   QDRIP   SNOBCMSL    TLAKE   
22  BUILDHEAT   FLDS    FSRNDLN QFLX_ICE_DYNBAL SNODSTMCL   TREFMNAV    
23  DSTDEP  FPSN    FSRNI   QFLX_LIQ_DYNBAL SNODSTMSL   TREFMNAV_R  
24  DSTFLXT FSA FSRVD   QINFL   SNOOCMCL    TREFMNAV_U  
25  EFLX_DYNBAL FSAT    FSRVDLN QINTR   SNOOCMSL    TREFMXAV    

此外,NC数据往往会包含很多个(如今天示例中会有5个),构成一个时间序列,其中比较典型的就是降水,气温等。而通常来说,我们也需要去分析其中某个参数的时间序列。因此,在处理NC数据的第一步就是将其从NC文件中提取出来。但如果说我们依靠循环去遍历NC格式的话,不是不可以,就是相当费劲。特别是当我们需要提取的变量之间在NC中储存的顺序不连续的时候。庆幸的是,raster-package 中的raster与stack工具可以很方便地帮我们导入我们需要的变量。

# 1. 获取变量名
setwd('E:\\简书项目\\20191007-NC数据处理\\test-nnu\\hist') #引号中为文件储存地址
files = list.files(full.names = T) 获取
print(files[1]) 
[1] "./B1850.f19_g16.001.clm2.h0.0001-01.nc"
files_nc = ncdf4::nc_open(files[1])
name_files_nc = names(files_nc$var) #t通过此函数可以获得上述的变量名缩写
# 获取变量名全称方法如下,以TG_R 变量为例
files_nc$var$TG_R$longname
[1] "Rural ground temperature"
#2. 导入单个NC文件,以变量TG_R为例
nc_raster = raster(files[1], varname = 'TG_R')

nc_raster
class      : RasterLayer 
dimensions : 96, 144, 13824  (nrow, ncol, ncell)
resolution : 2.5, 1.894737  (x, y)
extent     : -1.25, 358.75, -90.94737, 90.94737  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
source     : E:/简书项目/20191007-NC数据处理/test-nnu/hist/B1850.f19_g16.001.clm2.h0.0001-01.nc 
names      : Rural.ground.temperature 
z-value    : 0001-02-01 
zvar       : TG_R 

TG_R单个栅格数据
# 3. 导入TG_R变量的时间序列
tgr_ts = stack(files[1:5],varname = 'TG_R')
tgr_ts
class      : RasterStack 
dimensions : 96, 144, 13824, 5  (nrow, ncol, ncell, nlayers)
resolution : 2.5, 1.894737  (x, y)
extent     : -1.25, 358.75, -90.94737, 90.94737  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
names      : Rural.ground.temperature.1, Rural.ground.temperature.2, Rural.ground.temperature.3, Rural.ground.temperature.4, Rural.ground.temperature.5 

TG_R时间序列

2. NC 文件数据预处理

当我们通过raster/stack将对应的变量导入R之后,如果我们需要进一步对其进行切片处理,如统计分布、筛选等,我们可以通过as.data.frame 含函数将其转化为data.frame,然后再进一步处理。

# 4. 将单个raster文件转化为data.frame
df_tgr = as.data.frame(nc_raster,xy = T)
head(df_tgr)
     x  y Rural.ground.temperature
1  0.0 90                       NA
2  2.5 90                       NA
3  5.0 90                       NA
4  7.5 90                       NA
5 10.0 90                       NA
6 12.5 90                       NA
# 5. 将stack文件转化为data.frame
df_tgr_ts = as.data.frame(tgr_ts,xy = T)
head(df_tgr_ts)
    x  y Rural.ground.temperature.1 Rural.ground.temperature.2 Rural.ground.temperature.3
1  0.0 90                         NA                         NA                         NA
2  2.5 90                         NA                         NA                         NA
3  5.0 90                         NA                         NA                         NA
4  7.5 90                         NA                         NA                         NA
5 10.0 90                         NA                         NA                         NA
6 12.5 90                         NA                         NA                         NA
  Rural.ground.temperature.4 Rural.ground.temperature.5
1                         NA                         NA
2                         NA                         NA
3                         NA                         NA
4                         NA                         NA
5                         NA                         NA
6                         NA                         NA
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342