从栅格图块中提取特定像元值

时间:2020-10-28 11:28:46

标签: r extract raster

我已经从两个光栅块计算出风速和风向。

现在,我要提取每个单元的最大风速。我做到了现在的问题是我还需要该特定单元格的风向。

我的代码如下:

speed <- brick(speed)
direction <- brick(dir)
maxWindspeed <- max(speed, na.rm = TRUE) # this gives me a raster with the Max Wind Speed Values

任何人都有一个想法如何在“ maxWindspeed”层中获取“最大风速”单元格的特定风向单元格?

最好的问候 最高

2 个答案:

答案 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.maxstackSelect。使用 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)