为 R 中的每个栅格图层选择最大值
Selecting the maximum value for each raster layer in R
我目前正在尝试 select 我拥有的每个栅格图层的最大值。我这样做了:
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)
但是,我不确定这是否正确select每一层的最大值 - 考虑到显示的最低值(即 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 "apply" 系列函数对其进行循环。在这种情况下,使用 sapply
:
> sapply(unstack(b), function(r){max(values(r))})
[1] 12 23 34
我的三层中的每一层都有最大值。
我目前正在尝试 select 我拥有的每个栅格图层的最大值。我这样做了:
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)
但是,我不确定这是否正确select每一层的最大值 - 考虑到显示的最低值(即 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 "apply" 系列函数对其进行循环。在这种情况下,使用 sapply
:
> sapply(unstack(b), function(r){max(values(r))})
[1] 12 23 34
我的三层中的每一层都有最大值。