首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将栅格堆栈写入带有更改名称的文件

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

Stack Overflow用户
提问于 2022-04-05 03:25:18
回答 1查看 530关注 0票数 1

我更改了光栅堆栈(R堆栈)中20层的名称,然后将新命名的堆栈写入文件,但当我将该文件读回R中时,名称没有保留,因此如果我想使用该文件,每次必须重新堆栈光栅.这是我的代码:

代码语言:javascript
复制
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()中是否有什么东西可以在我更改名称后保留它们呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-05 17:44:42

您正确地说,writeRaster不保留层名(除非使用"grd“格式)。

代码语言:javascript
复制
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"

然而,不需要花费太多的精力来重新设置它们。

代码语言:javascript
复制
names(b) <- c("a", "b")
names(b)
#[1] "a" "b"

也可以将其保存为"grd“。

代码语言:javascript
复制
writeRaster(s, "test.grd", overwrite=TRUE)
b <- brick("test.grd")
names(b)
#[1] "a" "b"

要将名称保存在tif文件中,可以使用terra ( raster包的替换)。

代码语言:javascript
复制
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"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71745987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档