[R-br] Função com vários if e else if que não é SpatialGridDataFrame [RESOLVIDO]
ASANTOS
alexandresantosbr em yahoo.com.br
Segunda Fevereiro 8 18:36:23 BRST 2016
Muito obrigado Éder, funcionou perfeitamente!!!!!!
Também tem outra alteração que resolve o meu problema e aumenta
a velocidade de processamento, uma vez que tenho rasters muito grandes,
sendo:
radconvL <- function(x, band = 2) {
Lmax <- switch(band,
"2" = 120.64,
"3" = 151.31,
"4" = 157.57,
"5" = 69.03,
NA)
if (is.na(Lmax)) stop("invalid band")
Lmin = 0
Qmax = 127
setValues(x, Lmin + ((Lmax-Lmin)*values(x))/Qmax)
}
library(raster)
b <- brick(system.file("external/rlogo.grd", package="raster"))
test <- radconvL(b[[2]], band = 2)
Abraços,
--
======================================================================
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
OrcID: orcid.org/0000-0001-8232-6722
Researchgate: https://www.researchgate.net/profile/Alexandre_Santos10
LinkedIn: https://br.linkedin.com/in/alexandre-dos-santos-87961635
======================================================================
Em 08/02/2016 12:14, Éder Comunello escreveu:
> Alexandre, bom dia!
>
> Fiz apenas uma pequena alteração indicada no código.
>
> ### <code r>
> 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)
> {
> Lmax <- switch(as.character(band),
> "2" = 120.64,
> "3" = 151.31,
> "4" = 157.57,
> "5" = 69.03,
> NA)
>
> if (is.na <http://is.na>(Lmax)) stop("invalid band")
>
> Lmin = 0
> Qmax = 127
> x <- as.vector(as.matrix(x))
> results <- band2 ### <==== alterado aqui!!!
>
> 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
> print(paste(band, Lmax))
> print(results)
> results
> }
> ######--
>
> teste2<-radconvL(band2, band = 2)
> spplot(teste2)
>
> teste3<-radconvL(band2, band = 3)
> teste1<-radconvL(band2, band = 1)
>
> ### </code>
>
>
>
>
> ================================================
> Éder Comunello
> PhD Student in Agricultural Systems Engineering (USP/Esalq)
> Brazilian Agricultural Research Corporation (Embrapa)
> Dourados, MS, Brazil [22 16.5'S, 54 49.0'W]
>
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160208/319620ad/attachment.html>
Mais detalhes sobre a lista de discussão R-br