R语言处理nc数据

一、nc介绍

NC文件,全称为"NetCDF"(Network Common Data Form)文件格式,是一种用于存储科学数据的通用、二进制文件格式,它由国际气象组织(International Organization for Standardization,简称ISO)开发,并作为其OMNIC(Open Multi-Content Information Distribution Network Consortium)项目的一部分,NC文件格式广泛应用于气候科学、地球科学、大气科学等领域,以便在不同的软件和平台上共享和交换数据。

二、读取nc

2.1 基本性质读取

r 复制代码
#nc_open 将数据读入我称为 nc_data 的数据结构中
nc_data <- brick('surfout_d03_2020-07-01_00_00_00')
which(names(nc_data)=="T2_1")
class(nc_data)
T2_variable <- nc_data$T2_1
#由于此NC文件没有坐标系,定义栅格文件的坐标系为WGS1984
crs(nc_data)="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" 

names(nc_data$attr) 
#获取维度变量
names(nc_data$dim) 
#读取变量的维度,三列分别为.nc格式地区的经度、纬度、和时间维度
print(dim(T2))#150 150 24

#看看缺失数据的填充值这里value=0
fillvalue <- ncatt_get(nc_data, "T2", "_FillValue")
fillvalue
#完成读入数据,关闭netCDF文件
nc_close(nc_data) 
#用R标准的"NA"替换所有的填充值
nc_data[nc_data== fillvalue$value] <- NA
dim(T2)
#保留第三维度第一个时间的数据
Time1 =T2[,,1]
dim(Time1)#150 150
View(T2)
#转成栅格数据
nc_data.variables
r <- raster((Time1), xmn=min(lon), xmx=max(lon), ymn=min(lat), ymx=max(lat), crs=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs+ towgs84=0,0,0"))
# 大多数netCDF文件都从左下角记录空间数据,需要转置和翻转以正确定位数据
r <- flip(r, direction='y')

R语言处理气象数据:NetCDF格式数据的读写
ncdf4 | netCDF数据格式处理工具包(1):数据读取和查询

2.2 nc转tif

2.2.1 R语言

(1)

ruby 复制代码
library(raster)
tmpbr <- brick("cru_ts4.04.2001.2010.tmp.dat.nc", varname="tmp")
writeRaster(tmpbr, filename = tmpbr@data@names, bylayer=T, format="GTiff")

(2)

r 复制代码
#读取单变量长时间序列nc数据
ncfile<-nc_open("surfout_d03_2020-07-01_00_00_00")
names(ncfile$var)
input_nc = 'surfout_d03_2020-07-01_00_00_00'
varname = 'T2'
raster1 = stack(input_nc, varname = varname)
#设置输出路径名
outpath<-"../../output/test/"
##为文件名设置做准备
x1<-c(1:24)
x2<-paste("2020_7_0_",x1,sep = "")
out_filename<-sapply(x2, function(x)paste(x,".tif",sep = ""))  #输出tif格式

out_path<-sapply(out_filename, function(x){
  paste(outpath,x,sep = "/")})      #输出路径名
#批量输出
for(i in 1:24){
  writeRaster(raster1[[i]],out_path[i], format = 'GTiff', overwrite = T)
} 

R语言nc转tif
NetCDF(nc)数据读取与格式转换

2.2.2 panoply

官方安装包
Panoply的安装使用和所有相关信息

提取站点信息

使用R语言处理气象站点数据,站点数据批量并行计算合成

根据经纬度利用R语言批量提取NC文件数据
R-如何在NC时间堆叠数据集中根据坐标提取数据并展示其趋势

经纬度和属性合并

r 复制代码
library(ncdf4)
# 导入数据
nc <- nc_open("file_1.nc")
lonlat <- nc_open("file_2.nc")
# 经纬度和属性合并


Var <- ncvar_get(nc, "Var")[,,1]
LAT <- ncvar_get(lonlat, "LAT")
LON <- ncvar_get(lonlat, "LON")
data <- data.frame(var = c(Var),
                   lat = c(LAT),
                   lon = c(LON))
ata_sf <- st_as_sf(data, crs = 4326,
                    coords = c(x = "lon", y = "lat")) 

栅格的属性数据和经纬度是分开的两个文件,将它们整合到同一个文件

其他参考

相关推荐
Omics Pro1 天前
~30,000+引用!理论2005,R包2008,多组学集成AI增强
开发语言·数据库·人工智能·算法·机器学习·自然语言处理·r语言
天桥下的卖艺者3 天前
chrals.CTI函数升级版发布,增加了CTI衍生的脂肪指数提取
数据库·r语言
小师兄吃牛肉4 天前
什么是R语言?如何快速学习R语言
开发语言·学习·r语言
喆星时瑜5 天前
Win10/11 安装 R 与 RStudio 详细图文教程
开发语言·r语言·安装
喆星时瑜5 天前
R语言基础语法入门
开发语言·r语言
喆星时瑜5 天前
R语言向量语法的详细教程
开发语言·r语言
临床数据科学和人工智能兴趣组7 天前
在R语言中, 使用 as.factor() 函数转换数值型变量
开发语言·r语言
babe小鑫17 天前
信息与计算科学专业应届生面试 怎么证明自己能解决业务问题
学习·r语言·excel
深兰科技18 天前
深兰科技受邀参与第二届中国(南宁)—东盟人工智能场景应用对接会,深化AI国际合作
人工智能·qt·r语言·scala·symfony·智能机器人·深兰科技
赵钰老师19 天前
基于ArcGIS Pro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析
python·arcgis·数据分析·r语言