Answers:
在中R
,用于crop
提取值,并(例如)table
对它们进行计数。
作为示例,让我们创建一个覆盖地球的1度网格:
library(raster)
x.raster <- raster(outer(179:0, 0:359, `+`), xmn=-180, xmx=180, ymn=-90, ymx=90)
边界框将转换为extent
对象以使用crop
:
y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)
完成后,制表很简单:
table(getValues(y.raster))
在此输出中,第一行列出了值,第二行列出了它们的相应计数:
165 166 167 ... 257 258
1 2 3 ... 2 1
作为检查,我们可以绘制栅格和范围:
plot(x.raster)
plot(y.extent, add=T)
较小的补充:您还可以使用(内存安全)函数“ freq”:
按照胡布的答案:
library(raster)
x.raster <- raster(outer(179:0, 0:359, '+'), xmn=-180, xmx=180, ymn=-90, ymx=90)
y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)
但是现在做:
freq(y.raster)
仅对非常大的对象(文件上的栅格)有意义。“ freq”返回一个两列的矩阵(值/计数),而“ table”返回一个表。
crop
操作时间定为覆盖地面的一分钟网格:它具有10800行和21600列(233,280,000个单元)。在总耗时1.36秒内执行了裁剪。
v <- extract(x.raster, y.extent)
随后 table(v)
extract
来自?这不是一部分raster
和R
帮助系统(??
)未找到这个名字任何函数。