R语言terra包,classify对单元格值进行分类(或重新分类)
# Thu Dec 10 15:00:06 2020 -
# 字符编码:UTF-8
# R 版本:R x64 4.0.3 for window 10
# cgh163email@163.com
# 个人笔记不负责任
# —— 拎了个梨🍐
.rs.restartR()
require(rgl)
# classify对单元格值进行分类(或重新分类)
rm(list=ls());gc()
# 对SpatRaster的值进行分类。函数将一组值重新分类为其他值。
# 分类可以基于范围“从到变成”或特定值“变成”或“切割”。
# 对于“从到变”或“变为”,分类是用矩阵rcl按矩阵的行顺序进行的。因此,如果存在重叠的范围或值,则数字第一次在某个范围内时确定重新分类值。
# 使用“剪切”对值进行排序,因此它们的提供顺序无关紧要。
#
r <- rast(ncols=10, nrows=10)
values(r) <- (0:99)/99
par(mfrow=c(2,1))
plot(r)
#归一化
# 将值分为三组
# 所有>=0和<=0.25的值都变为1,依此类推。
m <- c(0, 0.25, 1,
0.25, 0.5, 2,
0.5, 1, 3)
rclmat <- matrix(m, ncol=3, byrow=TRUE)
rc1 <- classify(r, rclmat, include.lowest=TRUE)
plot(rc1)
dev.copy(png,'色阶对比.jpg');dev.off()
# Thu Dec 10 15:02:18 2020 --
## cuts
# equivalent to the above
rc2 <- classify(r, c(0, 0.25, 0.5, 1), include.lowest=TRUE)
## is-becomes
x <- round(r*3)
unique(x)
# replace 0 with NA
y <- classify(x, cbind(0, NA))
unique(y)
# multiple replacements
m <- rbind(c(2, 200), c(3, 300))
m
rcx1 <- classify(x, m)
unique(rcx1)
rcx2 <- classify(x, m, othersNA=TRUE)
unique(rcx2)