从光栅中提取 'name-values' 而不是 R 指定的 'ID levels'

Extracting 'name-values' from raster instead of the 'ID levels' assigned by R

我在 R 中有以下光栅:

> veg
class       : RasterLayer 
dimensions  : 22142, 18123, 401279466  (nrow, ncol, ncell)
resolution  : 28.5, 28.5  (x, y)
extent      : 329232, 845737.5, 8487420, 9118467  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=20 +south +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs 
data source : C:\Users\Desktop\RO SICAR\ibge_raster 
names       : ibge_raster 
values      : 1, 39  (min, max)
attributes  :
       ID COUNT                               NM_UVEG
 from:  1   953  Contato Savana / Floresta Estacional
 to  : 39 57506 Savana Parque sem floresta-de-galeria

我不太熟悉光栅包,但我正在尝试获取与 R 分配给这些名称的因子水平 ("ID") 相关联的名称列表 ("NM_VEG")。我试过了:

unique(values(veg))

但是 R returns 关卡' "ID" 而不是 "NM_UVEG" 中的名称:

> unique(values(veg))
 [1] NA  5  8  4 14 34  2 13 12 28 36 26 11 25 10 16 17 33 38  3
[21] 15  9 23 29 27 32 22 31 37  6 39 35  7  1 20 24 30 19 18 21

我确定我遗漏了一些基本命令,但我想不出来,有什么想法吗?提前致谢!

levels(veg)[[1]]就是您要找的咒语

为了证明它有效,这里 (from here) 是一些适当的可重现数据...

library(raster)

## Example data
r <- raster(ncol=4, nrow=2)
r[] <- sample(1:4, size=ncell(r), replace=TRUE)
r <- as.factor(r)

## Add a landcover column to the Raster Attribute Table
rat <- levels(r)[[1]]
rat[["landcover"]] <- c("land","ocean/lake", "rivers","water bodies")
levels(r) <- rat

... 这里是将提取一个 data.frame 的调用,该 data.frame 给出与每个级别关联的属性:

levels(r)[[1]]
#   ID    landcover
# 1  1         land
# 2  2   ocean/lake
# 3  3       rivers
# 4  4 water bodies