Выбор максимального значения для каждого растрового слоя в R - PullRequest
0 голосов
/ 30 января 2020

Я сейчас пытаюсь выбрать максимальное значение для каждого имеющегося у меня растрового слоя. Я сделал это:

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 максимальных значений (т.е. 1 максимум на слой для 90 слоев)

Любая помощь будет принята с благодарностью!

Спасибо,

1 Ответ

0 голосов
/ 30 января 2020

Если вы не уверены, что что-то работает, сделайте небольшой тест. Вот три маленьких растра, где я знаю максимальное значение в каждом:

> 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, чтобы создать список, который вы можете * l oop использовать, используя любое стандартное семейство функций R "apply". В этом случае используйте sapply:

> sapply(unstack(b), function(r){max(values(r))})
[1] 12 23 34

, и для каждого из моих трех слоев есть самые большие значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...