我目前正在尝试为我拥有的每个栅格图层选择最大值。我已经做到了:
library(raster)
Model4 <- brick("MaxPrecCCCMACanESM2rcp45.nc", var="onedaymax")
subset<-Model4[[1:90]]
subset
class : RasterStack
dimensions : 64, 128, 8192, 90 (nrow, ncol, ncell, nlayers)
resolution : 2.8125, 2.789327 (x, y)
extent : -181.4062, 178.5938, -89.25846, 89.25846 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
names : X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, ...
得出每个栅格图层的最大值,我尝试过这个:
Maxprec <- max(subset, na.rm=TRUE)
Maxprec
class : RasterLayer
dimensions : 64, 128, 8192 (nrow, ncol, ncell)
resolution : 2.8125, 2.789327 (x, y)
extent : -181.4062, 178.5938, -89.25846, 89.25846 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names : layer
values : 1.690237, 363.9818 (min, max)
但是,我不确定这是否正确选择了每个图层的最大值-给定显示的最小值(即1.69),我不确定是否捕获了最大值?最终,最多只能有90个最大值(即90层每层最多1个)
任何帮助将不胜感激!
谢谢,
如果不确定不确定某项功能是否正常,请进行一次小测试。这是三个小栅格,我知道其中的最大值:
> r1 = raster(matrix(1:12, 3,4))
> r2 = raster(matrix(12:23, 3,4))
> r3 = raster(matrix(23:34, 3,4))
将它做成砖块,或者如果需要,可以叠成堆:
> b = brick(r1,r2,r3)
然后在每个层中找到最大值,请使用unstack
创建一个列表,您可以使用任何标准的R“应用”函数系列进行循环。在这种情况下,请使用sapply
:
> sapply(unstack(b), function(r){max(values(r))})
[1] 12 23 34
并且这三层中的每一层都有最大值。