R:改变rasterstack中图层的顺序

时间:2014-12-15 12:03:50

标签: r

我有两组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)

4 个答案:

答案 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]]