![](/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.