基于R语言读取NC数据并提取单个波段(netcdf转为tiff或其他格式)

写在前面

netcdf是气象、生态、地理领域非常常用的一种数据格式,读写的方法很多,arcgis、arcpy、python、matlab等等均有相应的方法。
本文基于R语言实现netcdf的数据读取,提取数据中的单个波段(某一时间的数据),展示和写出。

注:本文仅展示基础的代码,多个波段或多个数据的读写操作加上相应的循环即可。

读取netcdf数据的其他方法:

  1. 使用PanoplyWin软件;

具体代码

加载包

library(raster)
library(rasterVis)
library(ncdf4)
library(lattice)

打开nc数据,并展示其中变量

ncfile = ncdf4::nc_open('E:\\1.nc')
names(ncfile$var)

将NC数据转为tif
将nc数据中“tsoil”变量的第一层导入raster。具体的变量名根据上一步展示的变量进行设置,本文设置为“tsoil”。

#该方法生成的raster仅能包含一个波段,band表示读取的波段为nc文件中的第多少个波段
input_nc = 'E:\\1.flt'
varname = 'tsoil'
nc2raster = raster(input_nc,varname = varname,band = 1)

数据可视化检查,参考:
【R语言】栅格数据快速制图-levelplot函数

png("E:\\plot1.png",
    height = 15,
    width = 20,
    units = 'cm',
    res = 1000)
print(levelplot(nc2raster))
dev.off()

将整个nc数据所有波段导入stack

nc2raster = stack(input_nc,varname = varname)

结果写入GeoTiff文件

output = 'E:\\1.tif'
writeRaster(nc2raster,output,format = 'GTiff',overwrite = TRUE)
#此处的overwrite必须为TRUE

也可写出其他格式,参考:writeRaster RDocumentation

output = 'E:\\1.flt'
writeRaster(nc2raster,output,format = 'EHdr',overwrite = TRUE)

你可能感兴趣的:(R语言,GIS,r语言,netcdf,tiff,栅格,raster)