为R中的每个栅格图层选择最大值

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

我目前正在尝试为我拥有的每个栅格图层选择最大值。我已经做到了:

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个)

任何帮助将不胜感激!

谢谢,

r max r-raster
1个回答
0
投票

如果不确定不确定某项功能是否正常,请进行一次小测试。这是三个小栅格,我知道其中的最大值:

> 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

并且这三层中的每一层都有最大值。

© www.soinside.com 2019 - 2024. All rights reserved.