我有一个raster图像 (.tif),每个像素的连续值在 0 和 1 之间。我想计算这个区域(也可以是多个像素),raster其中的值在一组值间隔中:即 0.1 - 0.2 , 0.3 - 0.4, 0.7 - 0.8。最终目的是看哪个区间占据的面积更大。有什么想法可以尝试或如何处理它R?
如果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)
| 归档时间: |
|
| 查看次数: |
5660 次 |
| 最近记录: |