我更改了光栅堆栈(R堆栈)中20层的名称,然后将新命名的堆栈写入文件,但当我将该文件读回R中时,名称没有保留,因此如果我想使用该文件,每次必须重新堆栈光栅.这是我的代码:
Rstack <- Rstack[[name]] #changing names of layers to match model filenames
writeRaster(Rstack, filename="Rstack.tif", options="INTERLEAVE=BAND", overwrite=TRUE)
Rstack <- raster("Rstack.tif") #read in the stack但是,当我尝试使用"read-in“堆栈时,会出现一个错误,即名称与模型顺序名称不匹配--因此,如果我想使用该堆栈需要很长时间,则必须重新定位和重命名。在writeRaster()中是否有什么东西可以在我更改名称后保留它们呢?
发布于 2022-04-05 17:44:42
您正确地说,writeRaster不保留层名(除非使用"grd“格式)。
library(raster)
s <- stack(system.file("external/rlogo.grd", package="raster")) [[1:2]]
names(s) <- c("a", "b")
writeRaster(s, "test.tif", overwrite=TRUE)
b <- brick("test.tif")
names(b)
#[1] "test.1" "test.2"然而,不需要花费太多的精力来重新设置它们。
names(b) <- c("a", "b")
names(b)
#[1] "a" "b"也可以将其保存为"grd“。
writeRaster(s, "test.grd", overwrite=TRUE)
b <- brick("test.grd")
names(b)
#[1] "a" "b"要将名称保存在tif文件中,可以使用terra ( raster包的替换)。
library(terra)
x <- rast(system.file("ex/logo.tif", package="terra"))[[1:2]]
names(x) <- c("a", "b")
r <- writeRaster(x, "test.tif", overwrite=TRUE)
names(r)
#[1] "a" "b"https://stackoverflow.com/questions/71745987
复制相似问题