R中的raster
对象可以具有不同模式(数据类型)的图层吗?
从表面上看,我们似乎总是被迫采用一种类型:
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之类的东西?
另外,请注意,由于raster @ data是矩阵或以其他方式强制为数字/整数,因此我们可能无法使用R的因数。我想念什么吗?
最佳答案
raster
包提供了使用分类变量创建栅格的功能,并且rasterVis
包包括用于绘制栅格的功能。 ratify
函数允许栅格包括将基础栅格整数值与其他值(可以是字符)相关的查找表。这直接允许在已批准栅格的级别部分中使用任何其他值(value)模式。
这是一个例子。
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
即将更新,使上述解决方法变得不必要。关于r - 栅格可以创建具有不同模式的多层对象吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16290208/