我有一个 Landfire Existing Vegetation 数据集 ( http://www.landfire.gov/ ),我已将其投影并裁剪到我的研究地点。栅格有大约 12,000,000 个像元。像元值代表特定的植被类型,值范围为 16:2200。所有这些值都没有出现在我的研究区域中(即值从 20 跃升至 1087)。
由于我的目的可以将许多像素值归为一个分类(例如,将不同的灌木群落归为一类),我想将栅格的值重置为更简单的值(1:11)。这将有助于按植被类型从其他栅格轻松提取数据,并便于绘制分类图。我有一个工作代码,但需要大量输入才能更改我需要更改的所有 61 个值。这是我所做的:
#===============================
############Example#############
#===============================
library(raster)
r <- raster(nrows=30, ncols=10, xmn=0, xmx=10)
r[] <- rep(10:19, 30)
r.omance <- function(x){
x[x==10] <- 1; x[x==11] <- 1; x[x==12] <- 1
x[x==13] <- 1; x[x==14] <- 1; x[x==15] <- 1
x[x==16] <- 2; x[x==17] <- 2; x[x==18] <- 2
x[x==19] <- 2
return(x)}
reclass <- calc(r, fun = r.omance)
有谁知道更简单的方法来解决这个问题?您可以想象输入会更改 61 个值,特别是因为 x[x==16:20] <- 1 会产生错误,因此必须单独输入每个值。正如我所说,我的代码有效。但我只想成为一个更好的 R 编码器。
谢谢。