我正在尝试对海拔高度的栅格对象进行重新分类,以便值 >= 2300 变为 1 并且 < 2300 to become 0. (该对象是 Worldclim 海拔 30 秒) 我在QGIS栅格计算器上试过了
"wc2.1_30s_elev@1" >= 2300
它生成的地图很奇怪(奇怪的负数,并且 > 或 < 2300. However, when I manually customized the labels to be 0 or 1, the map appeared to be correct. Also, the "Identify features" tool showed the correct values. But when I used this layer for an operation in Raster Calculator (my next step), the resulting layer showed the same problems.
之间没有明显的区别所以,我尝试在 R 中做到这一点。 一开始我尝试过
r[r < 2300] <- 0
r[r >= 2300] <- 1
但是同样的问题又出现了。 所以我尝试了raster::reclassify
reclass_df <- c(0, 2300, 0,
2301, 6651, 1)
reclass <- matrix(reclass_df,
ncol = 3,
byrow = TRUE)
r_reclassif <- reclassify(r, reclass)
奇怪的值不再存在,但地图仍然显示 > 或 < 2300.
之间没有明显的区别起初,这只是视觉问题。使用指定的中断序列进行绘图似乎可以完成任务。
plot(r, col = color_palette, breaks = seq(0, 0.0109, length.out = 101))
但我需要执行另一个步骤:使用栅格作为概率参数的 terra::xyFromCell。 然后,奇怪的价值观和海拔之间缺乏区分就成为一个问题。
有人可以帮忙吗?我不知道发生了什么。
示例数据
library(terra)
r <- rast(system.file("ex/elev.tif", package="terra"))
哪些地区海拔高于400m?你所要做的就是
x <- r > 400
或者
y <- classify(r, rbind(c(-Inf, 400, 0), c(400, Inf, 1)))
# or
z <- ifel(r < 400, 0, 1)