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 基本性质读取

#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):数据读取和查询
R语言netcdf格式数据读取与处理

2.2 nc转tif

2.2.1 R语言

(1)

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)

#读取单变量长时间序列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时间堆叠数据集中根据坐标提取数据并展示其趋势

经纬度和属性合并

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

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

其他参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值