2016-03-21 5 views
1

ラスタオブジェクト(uとv)download hereが必要です。 私はRの2つのラスタオブジェクトからatan2を計算しますか?

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)) 

残念ながら、私は以下のエラーメッセージを取得以下、この式に基づいて速度の方向を計算したい:私はatan2 {raster}を参照して、単純なラスタオブジェクトを作成し、その後

Error in atan2(y, x) : Non-numeric argument to mathematical function 

を以下と

r1 <- r2 <- raster(nrow=10, ncol=10) 
r1[] <- (runif(ncell(r1))-0.5) * 10 
r2[] <- (runif(ncell(r1))-0.5) * 10 
atan2(r1, r2) 

答えて

1

raster::atan2のみRasterLayerオブジェクトに対して実施します。..正常に動作し、 RasterBrickではありません。私はバージョン2.5-5(R-Forgeの開発中)で修正しました。現在のバージョンを使用すると、ループを使用する必要があります:

はあなたのコードの@RobertHため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 
+0

おかげで、それは非常に有用だと仮定して... –

+0

注 'WD < - (180/PI)* A風が風に吹かれていく方向です。 'wd < - (180/pi)* a + 180'は風が風から吹き出している方向であるが、気象学的にはより一般的である。 – Badger

関連する問題