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):数据读取和查询

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

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

其他参考

相关推荐

  1. R语言处理nc数据

    2024-04-02 08:08:02       15 阅读
  2. R语言系列2——R语言数据处理技巧

    2024-04-02 08:08:02       22 阅读
  3. R语言提取站点的nc文件时间序列数据

    2024-04-02 08:08:02       15 阅读
  4. R语言nc转tif

    2024-04-02 08:08:02       18 阅读
  5. r语言处理 Excel数据当中的缺失值方法

    2024-04-02 08:08:02       10 阅读
  6. R语言数据分析(四)

    2024-04-02 08:08:02       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-02 08:08:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-02 08:08:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-02 08:08:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-02 08:08:02       20 阅读

热门阅读

  1. MongoDB聚合运算符:$log10

    2024-04-02 08:08:02       16 阅读
  2. C# 中 == 和 Equals 的区别

    2024-04-02 08:08:02       15 阅读
  3. https

    https

    2024-04-02 08:08:02      15 阅读
  4. C# 异步问答集

    2024-04-02 08:08:02       15 阅读
  5. CRC循环冗余校验码算法计算

    2024-04-02 08:08:02       18 阅读
  6. 深度学习八股文

    2024-04-02 08:08:02       16 阅读
  7. golang开发类库推荐

    2024-04-02 08:08:02       15 阅读
  8. MetaGPT部分源码解读--Memory

    2024-04-02 08:08:02       14 阅读