Я пытаюсь извлечь имена растровых слоев из файла netcdf, как ранее было написано из растрового стека. Экспорт растрового стека в ncdf прекрасен. Например:Экспорт растровых имен из растрового стека в файл NetCDF в R
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 г размер (т.е. год) не сохраняется. Например:
#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
Есть некоторые запутанные обходные пути, чтобы получить то, что требуется, но они, кажется, в значительной степени неэффективно (т.е. преобразование стека в матрицу затем манипулируя его здесь). Просто интересно, есть ли более элегантный способ, не имея необходимости писать большой объем дополнительного кода и занимая лишнюю оперативную память.