
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@yahoo.com.br alexandre.santos@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@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]