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")) 

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

其他参考

相关推荐
Tiger Z1 天前
R 语言科研绘图第 6 期 --- 散点图-基础
r语言·贴图
LvManBa1 天前
R 常用的内置软件包及功能介绍
开发语言·r语言·rstudio
新知图书2 天前
R语言的数据结构-数据框
开发语言·r语言
新知图书3 天前
R语言的字符串操作
开发语言·r语言
新知图书4 天前
R语言函数简介
开发语言·python·r语言
还没想好1234 天前
mlr3机器学习AUC的置信区间提取
人工智能·机器学习·r语言·学习笔记
拓端研究室TRL5 天前
R语言混合模型回归GBTM群组轨迹模型绘图可视化研究
开发语言·人工智能·数据挖掘·回归·r语言
_刘文凯_6 天前
R环境配置 以及Debug方法 (VSCode, conda, 远程R)
vscode·r语言·conda
新知图书7 天前
R语言的数据结构-数组
开发语言·数据结构·r语言
赵钰老师9 天前
【ArcGIS】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作
开发语言·arcgis·数据分析·r语言