从 R 中的两个光栅对象计算 atan2?
calculate atan2 from two raster object in R?
我必须光栅对象(u 和 v)download here 。
我想根据下面的这个等式计算速度的方向
u <- brick('D:/uv.nc', varname = 'U')
v <- brick('D:/uv.nc', varname = 'V')
ws <- sqrt(u^2+v^2)
wd <- (180/pi)*(atan2(u,v))
不幸的是,我收到以下错误消息:
Error in atan2(y, x) : Non-numeric argument to mathematical function
然后,我参考atan2 {raster}并在下面创建一个简单的光栅对象并且工作正常..
r1 <- r2 <- raster(nrow=10, ncol=10)
r1[] <- (runif(ncell(r1))-0.5) * 10
r2[] <- (runif(ncell(r1))-0.5) * 10
atan2(r1, r2)
raster::atan2
仅针对 RasterLayer
对象实施,而不针对 RasterBrick
。我已经在 2.5-5 版(在 R-Forge 上开发中)中纠正了这个问题。对于当前版本,您需要使用循环:
假设 nlayers(u) == nlayers(v)
a <- list()
for (i in 1:nlayers(u)) {
a[[i]] <- atan2(u[[i]],v[[i]])
}
a <- stack(a)
wd <- (180/pi) * a
我必须光栅对象(u 和 v)download here 。 我想根据下面的这个等式计算速度的方向
u <- brick('D:/uv.nc', varname = 'U')
v <- brick('D:/uv.nc', varname = 'V')
ws <- sqrt(u^2+v^2)
wd <- (180/pi)*(atan2(u,v))
不幸的是,我收到以下错误消息:
Error in atan2(y, x) : Non-numeric argument to mathematical function
然后,我参考atan2 {raster}并在下面创建一个简单的光栅对象并且工作正常..
r1 <- r2 <- raster(nrow=10, ncol=10)
r1[] <- (runif(ncell(r1))-0.5) * 10
r2[] <- (runif(ncell(r1))-0.5) * 10
atan2(r1, r2)
raster::atan2
仅针对 RasterLayer
对象实施,而不针对 RasterBrick
。我已经在 2.5-5 版(在 R-Forge 上开发中)中纠正了这个问题。对于当前版本,您需要使用循环:
假设 nlayers(u) == nlayers(v)
a <- list()
for (i in 1:nlayers(u)) {
a[[i]] <- atan2(u[[i]],v[[i]])
}
a <- stack(a)
wd <- (180/pi) * a