【发布时间】:2020-09-11 16:49:21
【问题描述】:
我希望合并两个栅格的值,但是我的意思是连接而不是求和。例如,我想要 1 + 1 = 11 而不是 1 + 1 = 2。此外,我希望保留两个数字,所以 0 + 1 = 01,而不是 1。我可以通过将栅格转换为数据框来实现这一点,但是我无法将它们转换回栅格(我希望制作一张地图作为最终产品)。此外,我无法弄清楚如何在将数据保留为栅格类的同时完成此操作。
这里有一些示例代码来说明我的问题:
library(raster)
#Create two rasters
xmn = 1; xmx = 5; ymn = 10; ymx = 20
rast1<- raster(matrix(1,3,4), xmx=xmx, xmn=xmn, ymx=ymx, ymn=ymn)
rast2<- raster(matrix(2,3,4), xmx=xmx, xmn=xmn, ymx=ymx, ymn=ymn)
rast 1 和 rast2 中的所有单元格分别为 1 和 2。连接这两个栅格应该得到 12 的值。但是,我知道如何做到这一点的唯一方法是将栅格转换为数据框,如下所示:
#Stack the rasters and convert to data frame
rast_df<- as.data.frame(stack(rast1, rast2))
#Concatenate using the layer stack (layer.1 for rast1, layer.2 for rast2)
rast_con<- transform(rast_df, layer.3=paste(layer.1, layer.2, sep = ""))
#Inspect layer.3 values
head(rast_con)
layer.1 layer.2 layer.3
1 1 2 12
2 1 2 12
3 1 2 12
4 1 2 12
5 1 2 12
正如我们所见,这种方法很有效。但是,我似乎无法将数据帧强制返回到具有原始范围/CRS 的栅格,仅具有 layer.3。有关如何执行此操作或如何连接两个栅格而不将它们转换为数据框的任何提示都会有所帮助。
【问题讨论】:
标签: r concatenation raster