将光栅名称从光栅堆栈导出到R中的NetCDF文件
我正在尝试从netcdf文件中提取光栅图层名称,就像以前从光栅堆栈中写入的那样。将光栅堆栈导出到ncdf效果良好。例如:将光栅名称从光栅堆栈导出到R中的NetCDF文件,r,raster,netcdf,netcdf4,R,Raster,Netcdf,Netcdf4,我正在尝试从netcdf文件中提取光栅图层名称,就像以前从光栅堆栈中写入的那样。将光栅堆栈导出到ncdf效果良好。例如: library(raster) library(ncdf4) library(RNetCDF) #Create some rasters (x3) r1<-raster(system.file("external/test.grd", package="raster")) r2<-r1*2 r3<-r2*3 #Stack them rstack<-
library(raster)
library(ncdf4)
library(RNetCDF)
#Create some rasters (x3)
r1<-raster(system.file("external/test.grd", package="raster"))
r2<-r1*2
r3<-r2*3
#Stack them
rstack<-stack(r1,r2,r3)
#Give each raster layer a name - in this instance years 2014 to 2016
names(rstack)<-c("2014","2015","2016")
#Write out to netcdf format
writeRaster(rstack, "rstack.nc", overwrite=TRUE, format="CDF", varname="Temperature", varunit="degC",
longname="Temperature -- raster stack to netCDF", xname="X", yname="Y",zname="Year",
zunit="numeric")
库(光栅)
图书馆(ncdf4)
图书馆(RNetCDF)
#创建一些光栅(x3)
r1我认为这与另一个问题不是同一个问题。NetCDF变量没有dimnames
,因此无法按此处所需的方式往返光栅堆栈
但是,Zdim
,是Z维度上的值,而不是名称,至少我希望您在编写之前setZ(rstack,)
。我没有足够的经验使用writerater
生成3D变量,但这似乎是可行的
library(raster)
library(ncdf4)
library(RNetCDF)
#Create some rasters (x3)
r1<-raster(system.file("external/test.grd", package="raster"))
r2<-r1*2
r3<-r2*3
#Stack them
rstack<-stack(r1,r2,r3)
rstack <- setZ(rstack, 2014:2016)
#names(rstack)<-c("2014","2015","2016")
#Write out to netcdf format
writeRaster(rstack, "rstack.nc", overwrite=TRUE, format="CDF", varname="Temperature", varunit="degC",
longname="Temperature -- raster stack to netCDF", xname="X", yname="Y",zname="Year",
zunit="numeric")
## your ncdf4 code was not right, looked like RNetCDF (which is fine)
data.nc<- nc_open("rstack.nc")
Zdim = ncvar_get(data.nc,varid="Year")
#print(Zdim) ## now it's numeric
##[1] 2014 2015 2016
库(光栅)
图书馆(ncdf4)
图书馆(RNetCDF)
#创建一些光栅(x3)
r1我认为这与另一个问题不是同一个问题。NetCDF变量没有dimnames
,因此无法按此处所需的方式往返光栅堆栈
但是,Zdim
,是Z维度上的值,而不是名称,至少我希望您在编写之前setZ(rstack,)
。我没有足够的经验使用writerater
生成3D变量,但这似乎是可行的
library(raster)
library(ncdf4)
library(RNetCDF)
#Create some rasters (x3)
r1<-raster(system.file("external/test.grd", package="raster"))
r2<-r1*2
r3<-r2*3
#Stack them
rstack<-stack(r1,r2,r3)
rstack <- setZ(rstack, 2014:2016)
#names(rstack)<-c("2014","2015","2016")
#Write out to netcdf format
writeRaster(rstack, "rstack.nc", overwrite=TRUE, format="CDF", varname="Temperature", varunit="degC",
longname="Temperature -- raster stack to netCDF", xname="X", yname="Y",zname="Year",
zunit="numeric")
## your ncdf4 code was not right, looked like RNetCDF (which is fine)
data.nc<- nc_open("rstack.nc")
Zdim = ncvar_get(data.nc,varid="Year")
#print(Zdim) ## now it's numeric
##[1] 2014 2015 2016
库(光栅)
图书馆(ncdf4)
图书馆(RNetCDF)
#创建一些光栅(x3)
r1
library(raster)
library(ncdf4)
library(RNetCDF)
#Create some rasters (x3)
r1<-raster(system.file("external/test.grd", package="raster"))
r2<-r1*2
r3<-r2*3
#Stack them
rstack<-stack(r1,r2,r3)
rstack <- setZ(rstack, 2014:2016)
#names(rstack)<-c("2014","2015","2016")
#Write out to netcdf format
writeRaster(rstack, "rstack.nc", overwrite=TRUE, format="CDF", varname="Temperature", varunit="degC",
longname="Temperature -- raster stack to netCDF", xname="X", yname="Y",zname="Year",
zunit="numeric")
## your ncdf4 code was not right, looked like RNetCDF (which is fine)
data.nc<- nc_open("rstack.nc")
Zdim = ncvar_get(data.nc,varid="Year")
#print(Zdim) ## now it's numeric
##[1] 2014 2015 2016