可以光栅创建具有不同模式的多层对象?(can raster create multi-layer o

2019-09-01 10:38发布

一个可以raster对象(R)具有不同的模式(数据类型)的层?

在它的面前,似乎我们总是被迫一种类型:

library(raster)
## create a SpatialPixelsDataFrame with (trivially) two different "layer" types
d <- data.frame(expand.grid(x = 1:10, y = 2:11), z = 1:100, a = sample(letters, 100, replace = TRUE), stringsAsFactors = FALSE)
coordinates(d) <- 1:2
gridded(d) <- TRUE

## now coerce this to a raster brick or stack and our "a" is crushed to numeric NA
all(is.na(getValues(brick(d)[[2]])))
[1] TRUE

有没有像rasterDataFrame什么?

另外请注意,我们大概是因为光栅@数据是一个矩阵,或以其他方式强制转换为数字/整数不能使用的r因素。 我缺少的东西吗?

Answer 1:

raster包提供对与分类变量创建栅格的能力,并且rasterVis封装包括函数绘制它们。 所述ratify功能允许光栅为包括与底层光栅整数值为其它值,其可以是字符的查找表。 这允许直接使用在批准光栅的水平部分值的任何其他模式的。

下面是一个例子。

library(rasterVis)


r <- raster(xmn = 0, xmx = 1, ymn = 0, ymx = 2, nrow = 10, ncol = 11, 
            crs = as.character(NA))
r[] <- sample(seq_along(letters[1:5]), ncell(r), replace = TRUE)

## ratify the raster, and set up the lookup table
r <- ratify(r)
rat <- levels(r)[[1]]
rat$value <- letters[1:5]
rat$code <- 1:5

## workaround for limitation as at 2013-05-01
## see https://stat.ethz.ch/pipermail/r-sig-geo/2013-May/018180.html
rat$code <- NULL
levels(r) <- rat

levelplot(r)

还有即将更新rasterVis ,使上述不必要的解决方法。



文章来源: can raster create multi-layer objects with different modes?
标签: r raster