2016-03-21 14 views
1

Nesneyi (u ve v) download here taramak zorundayım. Ben maalesef, R'deki iki tarama nesnesinden atan2'yi hesaplıyor mu?

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

altında bu denklemin dayalı hızın yönünü hesaplamak istiyorum , aşağıda bir hata mesajı alıyorum: Sonra

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

, ben atan2 {raster} bakın ve basit bir raster nesnesi oluşturmak aşağıda ve

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

cevap

1

raster::atan2 sadece RasterLayer nesneler için uygulanır .. iyi çalışır, RasterBrick için değil. 2.5-5 versiyonunda (R-Forge üzerinde geliştirme aşamasında) bunu düzeltdim. güncel sürümü ile bir döngü kullanmak gerekir:

kodunuzu @RobertH için 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

sayesinde, çok yararlı olduğunu varsayarak ... –

+0

Not 'wd <- (180/pi) * a rüzgarın esiyor * yönüne *. Wd <- (180/pi) * a + 180 ', rüzgarın meteorolojik terimlerle daha da yayıldığı yön * den * olduğu yönündedir. – Badger