栅格重新分类生成错误值

问题描述 投票:0回答:1

我正在尝试对海拔高度的栅格对象进行重新分类,以便值 >= 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。 然后,奇怪的价值观和海拔之间缺乏区分就成为一个问题。

有人可以帮忙吗?我不知道发生了什么。

r raster qgis
1个回答
0
投票

示例数据

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)
© www.soinside.com 2019 - 2024. All rights reserved.