[R-br] RES: Função com vários if e else if que não funciona [RESOLVIDO]

ASANTOS alexandresantosbr em yahoo.com.br
Segunda Dezembro 21 18:29:54 BRST 2015


Boa tarde Mauro,

       Segue a função abaixo a uma simulação de um raster, como se fosse 
uma imagem de satélite e o emprego da função radconvL():

require(raster)
require(sp)

# RasterLayer inventado
r <- raster(nrows=10, ncols=10)
r <- setValues(r, 1:ncell(r))
plot(r)

band2<- as(r, 'SpatialGridDataFrame')  ### transforma em 
SpatialGridDataFrame


##Função para conversão DN para radiância - LISS III 
---------------------------
radconvL<-function(x, band = 2)
{
     BAND <- c("2", "3", "4", "5")
     band <- pmatch(band, BAND)

     if (is.na(band))
         stop("invalid band")

     Lmin = 0
     Qmax = 127
     x <- as.vector(as.matrix(x))
     results <- x

     if (band == 2) {
     Lmax = 120.64
     }
     else if (band == 3) {
     Lmax = 151.31
     }
     else if (band == 4) {
     Lmax = 157.57
     }
     else if (band == 5) {
     Lmax = 69.03
     }

     x <- Lmin + ((Lmax-Lmin)*x)/Qmax
     if (class(results) == "SpatialGridDataFrame")
         results em data[, 1] <- x
     else if (is.data.frame(x))
         results <- data.frame(matrix(x, nrow = nrow(results),
             ncol = ncol(results)))
     else results <- x
     results
}
######--

teste<-radconvL(band2, band = 2)
teste

-- 
======================================================================
Alexandre dos Santos
Proteção Florestal
IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso
Campus Cáceres
Caixa Postal 244
Avenida dos Ramires, s/n
Bairro: Distrito Industrial
Cáceres - MT                      CEP: 78.200-000
Fone: (+55) 65 8132-8112 (TIM)   (+55) 65 9686-6970 (VIVO)
e-mails:alexandresantosbr em yahoo.com.br
         alexandre.santos em cas.ifmt.edu.br
Lattes: http://lattes.cnpq.br/1360403201088680
======================================================================

Em 20/12/2015 22:04, Mauro Sznelwar escreveu:
>
> ##Função para conversão DN para radiância - LISS III 
> ---------------------------
> radconvL<-function(x, band = 2)
> {
>     BAND <- c("2", "3", "4", "5")
>     band <- pmatch(band, BAND)
>     if (is.na(band))
>         stop("invalid band")
>
>     Lmin = 0
>     Qmax = 127
>     x <- as.vector(as.matrix(x))
>     results <- x
>
>     if (band == 2) {
>     Lmax = 120.64
>     }
>     else if (band == 3) {
>     Lmax = 151.31
>     }
>     else if (band == 4) {
>     Lmax = 157.57
>     }
>     else if(band == 5) {
>     Lmax = 69.03
>     }
>
>     x <- Lmin + ((Lmax-Lmin)*x)/Qmax
>     if (class(results) == "SpatialGridDataFrame")
>         results em data[, 1] <- x
>     else if (is.data.frame(x))
>         results <- data.frame(matrix(x, nrow = nrow(results),
>             ncol = ncol(results)))
>     else results <- x
>     results
> }
> ######



Mais detalhes sobre a lista de discussão R-br