5

rasterオブジェクト(R)は異なるモード(データ型)のレイヤーを持つことができますか?

一見すると、常に 1 つのタイプに強制されているように見えます。

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 の係数を使用できないことに注意してください。何か不足していますか?

4

1 に答える 1

3

この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上記の回避策を不要にするアップデートが予定されています。

于 2013-05-01T00:43:06.400 に答える