R语言nc转tif

R语言nc转tif

ruby 复制代码
getwd()
setwd("E:/Program1//input/surfout-beijing-202007/")
library(ncdf4) # package for netcdf manipulation
library(sp)
library(raster) # package for raster manipulation
library(rgdal) # package for geospatial analysis
library(ggplot2) # package for plotting
library(gstat)
library(maptools)
library(readxl)
library(tidyr)
library(sf)
library(openxlsx)
rm(list=ls()) 
####nc读取####
nc_data <- raster('../wrfout_d03_2020-08-02_00_00_00.nc')

T2=data.frame()
for (day in 1:31) {
  day=1
  # 假设站点数据存储在另一个文件中
  julyday <- sprintf("%02d", day)
  nc=paste("surfout_d03_2020-07-", julyday, "_00_00_00", sep = "")
  #nc_open 将数据读入我称为 nc_data 的数据结构中
 nc_data <- brick(nc,varname = T2)
 
#which(names(nc_data)=="T2_1")409-432
#由于此NC文件没有坐标系,定义栅格文件的坐标系为WGS1984
crs(nc_data)="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" 

#stack#
input_nc="surfout_d03_2020-07-01_00_00_00"
ncfile<-nc_open(input_nc) 
names(ncfile$var) 
nc_stack = stack(input_nc,varname="T2")
crs(nc_stack)="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" 
#brick 适用于处理具有相同空间范围和分辨率的多维栅格数据,brick函数效率高
#stack 则更适用于处理不同范围和分辨率的栅格数据,或者简单地堆叠多个栅格图层。


####提取站点####
df <- data.frame(lon=116.28,lat=39.48)
bb <- SpatialPoints(df)
crs(bb)="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" 
p <- raster::extract(nc_data,bb)
dim(p)
class(p)
#选择温度的列
T=p[,409:432]

#转置
#T2=t(T)
T2_df <- stack(T, as.data.frame = TRUE)
T2=rbind(T2,T2_df)
# 重新设置列名为 "T2"
}
head(T)
output_folder <- "../../output/"
station_city_file <- paste(output_folder,"wrf_point_data.xlsx", sep = "")
write.xlsx(T2,station_city_file , rowNames= FALSE)


####~~~~~~~~~~~~~####
####法一#####
##读取单变量长时间序列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)
} 


#####法二#####
library(terra)
prebr <- rast("F:/test/out/pre_2020.nc")
terra::writeRaster(prebr,paste0("F:/test/out2/2020_",names(prebr),'.tif'),
                   overwrite = T,filetype = "GTiff") 

####法三####
library(raster)
library(ncdf4)
ncfile<-nc_open("F:/test/pre_2020.nc")
names(ncfile$var) #查看varname
prebr <- brick("F:/test/pre_2020.nc")
raster::writeRaster(prebr, filename = paste0("F:/test/out1/2020_",prebr@data@names),bylayer=T, format="GTiff",varname = 'pre') 

R语言读取nc数据

相关推荐
Tiger Z1 小时前
《R for Data Science (2e)》免费中文翻译 (第9章) --- Layers(2)
r语言·数据科学·中文翻译
海大哥19 小时前
深入解析Java中HashMap的工作原理与性能优化策略
r语言
万粉变现经纪人2 天前
如何解决 pip install -r requirements.txt 约束文件 constraints.txt 仅允许固定版本(未锁定报错)问题
开发语言·python·r语言·django·beautifulsoup·pandas·pip
万粉变现经纪人2 天前
如何解决 pip install -r requirements.txt 无效可编辑项 ‘e .‘(-e 拼写错误)问题
开发语言·python·r语言·beautifulsoup·pandas·pip·scipy
zhangfeng11332 天前
亲测可用,R语言 ggplot2 箱线图线条控制参数详解,箱线图离散数值控制
开发语言·python·r语言·生物信息
zhangfeng11333 天前
R 导出 PDF 时中文不显示 不依赖 showtext** 的最简方案(用 extrafont 把系统 TTF 真正灌进 PDF 内核)
开发语言·r语言·pdf·生物信息
生物小卡拉3 天前
R脚本--PCA分析系列1_v1.0
开发语言·r语言
生物小卡拉3 天前
R脚本——LefSE分析与可视化-v1
开发语言·r语言
猫头虎4 天前
如何解决 pip install -r requirements.txt 本地轮子路径 ‘./packages/xxx.whl’ 不存在 问题
开发语言·网络·python·r语言·pip·gpu算力·国产
zhangfeng11334 天前
R语言 表达矩阵 count_table 筛选出 行名是 某个 基因的 数据或者某个列中的数据是某个基因的数据
矩阵·r语言·生物信息