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

作者: TroyShen | 来源:发表于2019-10-17 18:58 被阅读0次

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

相关文章

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

    0 . 示例数据 NC示例数据下载注:数据由南师大地理科学学院张超同学提供,截取其中前10个数据用于数据处理流程说...

  • Python 数据预处理(4)

    数据形式 数据读取 数据预处理 数据收集及读取 很多人认为数据分析就是将数据可视化或者对数据趋势做出预测,其实是不...

  • 实现机器学习的初步流程

    1.读取数据(pandas) 读取csv、xls文件等 2.数据预处理、分析(pandas) 预处理工作:缺少列头...

  • 手势识别(多分类问题)

    导入所需的包 上传数据(数据集为参考文献的kaggle数据) 读取数据及预处理 构造batch数据生成器 定义模型...

  • 数据读取与保存

    摘要 Spark的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。 文件格式分为: Text文件 ...

  • SparkCore之文件类数据读取与保存

    Spark的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。文件格式分为:Text文件、Json文...

  • 利用Python处理Excel数据

    读取数据 读取x.xlsx文件 读取文件夹 读取txt文件 读取csv格式Excel表 写入excel 显示数据 ...

  • 2019-02-23 (通达信文件结构)

    通信达股票数据格式读取程序 通信达股票数据格式读取程序 2008-11-21 19:39 例如读取600237 ...

  • JavaScript数组方法及json

    一、json数据格式及json语法 一个简单的json 将数组改为json json的访问/读取格式 修改则直接赋...

  • R-NC格式数据转GeoTIFF及GeoTIFF转NC

    0. 问题导入 目前,很多地理数据均存储为NetCDF格式(下简称NC格式),而往往内含多变量,不方便处理。其中,...

网友评论

    本文标题:R-NC格式数据读取及预处理

    本文链接:https://www.haomeiwen.com/subject/nxyvmctx.html