首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何合并每个ID的波段,以在R中创建两个多波段TIFF?

如何合并每个ID的波段,以在R中创建两个多波段TIFF?
EN

Stack Overflow用户
提问于 2021-09-17 12:21:15
回答 1查看 69关注 0票数 0

我有16个独立的光栅文件,按ID和波段命名,用于8个波段和2个ID。如何合并每个ID的频段以创建两个多频段TIFF?以下是我的数据:

代码语言:javascript
复制
    dput(rastlist)
    c("7398_b10_new.tif", "7398_b2_clip.tif", "7398_b3_clip.tif", 
"7398_b4_clip.tif", "7398_b5_clip.tif", "7398_b6_clip.tif", "7398_b7_clip.tif", 
"7398_pan_new.tif", "9609_b10_new.tif", "9609_b2_clip.tif", "9609_b3_clip.tif", 
"9609_b4_clip.tif", "9609_b5_clip.tif", "9609_b6_clip.tif", "9609_b7_clip.tif", 
"9609_pan_new.tif")

我在列表的前8个元素中做到了这一点。下面是操作步骤:

代码语言:javascript
复制
setwd("mydir")

#first import all files in a single folder as a list 
rlist <- list.files(path = "mydir", pattern='.tif$', all.files=T, full.names=F)

#substract the  first 8 raster of the list
n = tail(rlist,8)

#stack layers
rstack = stack(n)

#substract the first element of the list
one = tail(n, 1)

#get the first 4 letters of the first element of a list (to be used as raster name of the raster stack)
rexport = substr(one, 1, 4)

writeRaster(rstack, filename = rexport, options = "INTERLEAVE=BAND", overwrite = T, format = "GTiff")

基本上,我想要的是创建一个函数,每8个光栅执行上述代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-17 12:31:44

循环遍历每个唯一ID:

代码语言:javascript
复制
for(ras in unique(substr(rastlist, 1, 4))){
  rlist <- list.files(path = "mydir", pattern=paste0(ras, '*.tif$'), all.files=T, full.names=F)
  rstack = stack(rlist)
  writeRaster(rstack, filename = paste0(ras, ".tif"), options = "INTERLEAVE=BAND", overwrite = T, format = "GTiff")
}

或者,同样的事情,但作为一个函数,就像你在问题中说的那样:

代码语言:javascript
复制
stacker <- function(ras){
  rlist <- list.files(path = "mydir", pattern=paste0(ras, '*.tif$'), all.files=T, full.names=F)
  rstack = stack(rlist)
  writeRaster(rstack, filename = rexport, options = "INTERLEAVE=BAND", overwrite = T, format = "GTiff")
}

rass <- unique(substring(rastlist, 1, 4))

lapply(rass, stacker)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69223357

复制
相关文章

相似问题

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