将栅格堆栈写入具有更改名称的文件

Writing a raster stack to file with changed names

我更改了光栅堆栈 (Rstack) 中 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

但是,当我尝试使用“读入”堆栈时,出现名称与模型订单名称不匹配的错误 - 因此,如果我想使用需要的堆栈,我必须重新堆栈并重命名很长时间。我在 writeRaster() 中是否遗漏了一些东西可以在我更改名称后保留名称?

您说 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 文件中,您可以改用 terraraster 包的替换)

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"