我已经从两个光栅块计算出风速和风向。
现在,我要提取每个单元的最大风速。我做到了现在的问题是我还需要该特定单元格的风向。
我的代码如下:
speed <- brick(speed)
direction <- brick(dir)
maxWindspeed <- max(speed, na.rm = TRUE) # this gives me a raster with the Max Wind Speed Values
任何人都有一个想法如何在“ maxWindspeed”层中获取“最大风速”单元格的特定风向单元格?
最好的问候 最高
答案 0 :(得分:0)
我不知道我是否正确理解了你想要做什么,但也许你可以试试这个:
library(raster)
#simulate data
r <- s <- t <- raster()
r[] <- sample(1:10,ncell(s),replace = T)
s[] <- sample(2:11,ncell(s),replace = T)
t[] <- sample(3:13,ncell(s),replace = T)
speed <- brick(r,s,t)
direction <- brick(r*s,s/t,t-r)
#max values across layers in speed
maxWindspeed <- max(speed, na.rm = TRUE)
plot(maxWindspeed)
plot(direction)
#boolean raster of where maxWindspeed is max
masker <- maxWindspeed==max(maxWindspeed[])
#brick of values in direction where maxWindspeed is max
plot(maxdirection <- mask(direction,masker,maskvalue=0))
#max values across layers in maxdirection
maxdirectioncell <- max(maxdirection,na.rm = T)
plot(maxdirectioncell)
答案 1 :(得分:0)
通过 raster
,您可以使用 which.max
和 stackSelect
。使用 Elia 的(稍作修改)示例数据
library(raster)
r <- s <- t <- raster(ncol=10, nrow=10, crs="+proj=utm +zone=1 +datum=WGS84")
r[] <- sample(1:10,ncell(s),replace = T)
s[] <- sample(2:11,ncell(s),replace = T)
t[] <- sample(3:13,ncell(s),replace = T)
speed <- stack(r,s,t)
direction <- stack(r*s,s/t,t-r)
mxspeed <- which.max(speed)
sdir <- stackSelect(direction, mxspeed)
通过 terra
,您可以使用 selectRange
library(terra)
spd <- rast(speed)
dir <- rast(direction)
mxspd <- which.max(spd)
sd <- selectRange(dir, mxspd)