我有两组rasterstacks(每个都有几百个栅格图层) - 第一个是包含一组感知时间序列图像(带间隙)的rasterstack和第二个时间插值图像用于第一个的间隙组。每组中图层的命名是根据测量/插值的日期,从第1天开始.... n
我现在想要将这两个集合组合成一个有序的(根据图层名称从1到n)rasterstack。我已经研究了不同的方法,但未能得到结果;
一种在rasterstack中对图层进行排序的方法(例如,通过使用类似的东西(comb_r是下面我可重复的示例中的栅格堆栈)。这会重新排序名称,但不会重新排序整个图层:
names(comb_r)<-comb_r[order(names(comb_r))]
使用unstack函数在两个堆栈中创建两个层列表,然后创建一个组合的有序列表作为新堆栈操作的输入(没有让它工作)。
最后我想我可以将所有图层保存到硬盘上,然后从那里重新组装一个堆栈(考虑到很多层可能不是最好的前进方式)。
欢迎任何有关如何进行的建议。我在这里添加了一个问题的玩具示例:
library(raster)
r1 <- raster(matrix(runif(9), ncol = 3))
r2 <- raster(matrix(runif(9), ncol = 3))
r3 <- raster(matrix(runif(9), ncol = 3))
r4 <- raster(matrix(runif(9), ncol = 3))
r5 <- raster(matrix(runif(9), ncol = 3))
r <- stack(r1, r2, r3,r4,r5)
names(r)<-c(1,4,6,8,10)
r6 <- raster(matrix(runif(9), ncol = 3))
r7 <- raster(matrix(runif(9), ncol = 3))
r8 <- raster(matrix(runif(9), ncol = 3))
r9 <- raster(matrix(runif(9), ncol = 3))
r10 <- raster(matrix(runif(9), ncol = 3))
rr <- stack(r6,r7,r8,r9,r10)
names(rr)<-c(2,3,5,7,9)
comb_r<-stack(r,rr)
答案 0 :(得分:3)
你能不能以不同的顺序选择'子集':
subset(comb_r, order(c(1,4,6,8,10,2,3,5,7,9))
你可以选择'subset'的第二个参数来反映你想要的顺序 - 你给出的那个有点奇怪,因为它从r获得一个,然后从rr获得两个,然后从r和rr。
交替出现答案 1 :(得分:0)
这应该有效:
ReorderStack<- stack(comb_r[[1]],comb_r[[4]],comb_r[[6]],comb_r[[8]],comb_r[[10]],
comb_r[[2]], comb_r[[3]],comb_r[[5]],comb_r[[7]],comb_r[[9]])
答案 2 :(得分:0)
在order
函数中调用subset
对我不起作用。
我使用了以下内容:
subset(comb_r, c(1,4,6,8,10,2,3,5,7,9))
答案 3 :(得分:0)
如果您的栅格已经命名,则可以像这样对它们进行排序:
ordered_names <- c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
ordered_stack <- comb_r[[ordered_names]]