![](/img/trans.png)
[英]How to create an individual dataframe for each column in R to then rasterize and bind all raster layers into multi-layer raster?
[英]How to use values in a raster object to create layers?
我有一个在每个单元格中包含不同值的栅格对象,如下例所示:
library(raster)
x <- matrix(1:5,nrow = 5, ncol = 1)
r <- raster(x)
plot(r)
r
> r
class : RasterLayer
dimensions : 5, 1, 5 (nrow, ncol, ncell)
resolution : 1, 0.2 (x, y)
extent : 0, 1, 0, 1 (xmin, xmax, ymin, ymax)
crs : NA
source : memory
names : layer
values : 1, 5 (min, max)
我想知道是否有一种简单的方法可以根据栅格的值创建新图层,同时保留其空间结构。
我在下面的示例中设法手动执行此操作,但我认为如果您有多个值要转换为图层,这不是一种有效的方法。
l1 <- r
l2 <- r
l3 <- r
l4 <- r
l5 <- r
values(l1)[which(values(r)!=1)] <- 0
values(l2)[which(values(r)!=2)] <- 0
values(l3)[which(values(r)!=3)] <- 0
values(l4)[which(values(r)!=4)] <- 0
values(l5)[which(values(r)!=5)] <- 0
r1 <- stack(l1,l2,l3,l4,l5)
plot(r1)
r1
> r1
class : RasterStack
dimensions : 5, 1, 5, 5 (nrow, ncol, ncell, nlayers)
resolution : 1, 0.2 (x, y)
extent : 0, 1, 0, 1 (xmin, xmax, ymin, ymax)
crs : NA
names : layer.1, layer.2, layer.3, layer.4, layer.5
min values : 0, 0, 0, 0, 0
max values : 1, 2, 3, 4, 5
任何帮助表示赞赏!
谢谢
有一个方法
x <- layerize(r)
但如下所示,层数为0 / 1
(FALSE/TRUE)。
x
# (...)
#names : X1, X2, X3, X4, X5
#min values : 0, 0, 0, 0, 0
#max values : 1, 1, 1, 1, 1
要取回原始数字,您可以这样做
x <- layerize(r) * unique(r)
或者也许更明确
u <- unique(r)
x <- layerize(r, classes=u) * u
x
# (...)
#names : X1, X2, X3, X4, X5
#min values : 0, 0, 0, 0, 0
#max values : 1, 2, 3, 4, 5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.