用R中的某些值计算栅格面积

MIH*_*MIH 0 r raster r-raster

我有一个raster图像 (.tif),每个像素的连续值在 0 和 1 之间。我想计算这个区域(也可以是多个像素),raster其中的值在一组值间隔中:即 0.1 - 0.2 , 0.3 - 0.4, 0.7 - 0.8。最终目的是看哪个区间占据的面积更大。有什么想法可以尝试或如何处理它R

maR*_*tin 6

如果ras是您的光栅图像,您可以执行以下操作:

sum(ras[] >= 0.1 & ras[] <= 0.2)
Run Code Online (Sandbox Code Playgroud)

这将返回包含 0.1 - 0.2 范围内的值的像素数。如果将其乘以平方单元格大小:

sum(ras[] >= 0.1 & ras[] <= 0.2) * res(ras)[1]^2
Run Code Online (Sandbox Code Playgroud)

你得到的面积以平方米为单位。

只需更改值以调整范围,或编写一个函数/循环来迭代预定义的值范围,甚至可能创建一个条形图。

就像是:

intervals <- list(c(0.1,0.2), 
                  c(0.2,0.3),
                  c(0.3,0.4))

sapply(intervals, function(x) { 
  sum(ras[] > x[1] & ras[] <= x[2])
})
Run Code Online (Sandbox Code Playgroud)