我想從之前從柵格堆棧寫入的netcdf文件中提取柵格圖層名稱。將柵格堆棧導出到ncdf可以正常工作。例如:將柵格堆棧中的光柵名稱導出到R中的NetCDF文件中
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")
然而,當我讀ncdf文件返回到R上的Z尺寸(即年)不保留。例如:
#Open the new netcdf dataset and look at the Z dimention, i.e. "Year"
data.nc<- open.nc("rstack.nc")
Zdim = var.get.nc(ncfile=data.nc,variable="Year")
print(Zdim)
#[1] 1 2 3
所以我們得到的是帶號,即1,2,3。但是,我需要的是在規定的年份(例如2014,2015,2016)定義的文本:
names(rstack)<-c("2014","2015","2016")
是否有可能做到這一點?這個問題是不是新的,這裏指: https://gis.stackexchange.com/questions/122167/export-band-names-with-netcdf-file-in-r
有一些令人費解的變通方法來獲得需要什麼,但他們似乎大部分是無效的(即堆棧轉換爲基質,然後從這裏操縱它)。只是想知道是否有更優雅的方式,而無需編寫大量的額外代碼並佔用不必要的RAM。