[R-br] Obter valor médio dos pixels de uma imagem gerada por krigagem
ASANTOS
alexandresantosbr em yahoo.com.br
Terça Abril 9 00:26:10 BRT 2013
Prof. Paulo,
Seguindo seus conselhos ate consigo criar o objeto
SpatialPixelsDataFrame, mas o data não aparece e se faço
img.kc<-raster(kc_output) e ploto, consigo visualizar o grid krigado,
sendo CRM:
#
require(geoR)
require(sp)
require(raster)
plot(s100$coords, xlim=c(0,1.2), ylim=c(0,1.2), xlab="Coord X",
ylab="Coord Y")
loci <- matrix(c(0.2, 0.6, 0.2, 1.1, 0.2, 0.3, 1.0, 1.1), ncol=2)
text(loci, as.character(1:4), col="red")
polygon(x=c(0,1,1,0), y=c(0,0,1,1), lty=2)
# Fitting models with nugget fixed to zero
ml <- likfit(s100, ini = c(1,0.5), fix.nugget = T)
# defining the grid
pred.grid <- expand.grid(seq(0,1, l=51), seq(0,1, l=51))
# kriging calculations
kc <- krige.conv(s100, loc = pred.grid, krige = krige.control(obj.m = ml))
# displaying predicted values
image(kc, loc = pred.grid, col=gray(seq(1,0.1,l=30)), xlab="Coord X",
ylab="Coord Y")
#
#Centro das 25 parcela 0.2 x 0.2
p0<-c(0.1,0.1)
#
c0 <- seq(p0[1],p0[1]+0.9,by=0.2)
d0 <- seq(p0[2],p0[2]+0.9,by=0.2)
d1 <- expand.grid(x=c0, y=d0)
points(d1[,1],d1[,2],col="red")
ver<-c(0.0,0.2,0.4,0.6,0.8,1.0)
hor<-c(0.0,0.2,0.4,0.6,0.8,1.0)
abline(v=ver, col="red")
abline(h=hor, col="red")
#
grid=GridTopology(c(0.1,0.1), c(0.2,0.2), c(5,5))
grid=SpatialGrid(grid=grid)
class(grid) ## SpatialPixels
gridPol <- as(grid, "SpatialPolygons")
options(digits=5)
pixelsize <- ((1.0-0.0)/30)*((1.0-0.0)/30)#Tamanho do pixel é dado por
seq Xmaior - Xmenor/l * Ymaior-Ymenor/l
#
coordinates(pred.grid) <- ~ Var1+Var2## Transformando as coordenadas do grid
kc$predict<-as.data.frame(kc$predict)### Valores dos pixels preditos
kc_output<-SpatialPixelsDataFrame(points=pred.grid, data=kc$predict)###
Criando o objeto SpatialPixelsDataFrame
summary(kc_output)## Não aparece o data mas:
#
Obrigado,
Alexandre
Em 08/04/2013 15:55, Paulo Justiniano escreveu:
> como nao?< é um veror numerico de valores!
>
> a melhor solicao é fazer uma funcao que converta a saida de kriging
> para o formato sp como SpatialPoitsDataFrame (ou Pixel ou Grid -
> dependendo da malha de predicao)
>
>
> vou ver se tenho aogo aqui, mas isto é simples de qq forma
>
>
> On Mon, 8 Apr 2013, ASANTOS wrote:
>
>> Thiago,
>>
>> Vou continuar tentando, mas extract() não funciona, pois o
>> objeto kc$predict pertence a classe numeric.
>>
>> Abraço,
>>
>> Alexandre
>>
>>
>> Em 07/04/2013 02:54, Thiago V. dos Santos escreveu:
>> Alexandre,
>>
>> Você já tem o polígono gridPol de onde você quer criar a média da
>> krigagem. Não conheço bem as classes do pacote geoR, mas as
>> coordenadas do kc$predict parecem estar no objeto pred.grid. A
>> abordagem que eu usaria seria criar um objeto raster da krigagem e em
>> seguida contar os valores usando a função extract (raster) usando
>> como argumentos o raster da krigagem e o gridPol.
>>
>> Além da ajuda para a função extract no manual do raster, talvez o
>> último exemplo dessa página possa te
>> ajudar: http://stackoverflow.com/questions/14682606/extract-value-from-raster-stack-from-spatialpolygondataframe
>>
>>
>> Mas não estou certo se era isso que você estava buscando. Acho que o
>> Paulo vai te ajudar melhor.
>
>
>>
>> Saudações,
>> --
>> Thiago V. dos Santos
>> PhD student
>> Land and Atmospheric Science
>> University of Minnesota
>> http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm
>>
>> Phone: (612) 323 9898
>>
>> ____________________________________________________________________________________________________________________________________________
>>
>> From: ASANTOS <alexandresantosbr em yahoo.com.br>
>> To: r-br em listas.c3sl.ufpr.br; Thiago V. dos Santos
>> <thi_veloso em yahoo.com.br>
>> Sent: Saturday, April 6, 2013 10:26 PM
>> Subject: Re: [R-br] Obter valor médio dos pixels de uma imagem gerada
>> por krigagem
>>
>> Thiago,
>>
>> Já pensei isto, mas para SpatialPoints(vp), preciso fazer um
>> list() das coordenadas dos pixels (vp$x e vp$y) e isto não tenho e
>> nem sei como recuperar o valor de um pixel à partir de uma coordenada
>> conhecida.
>>
>> Abraço,
>>
>> Alexandre
>>
>>
>> Em 06/04/2013 21:32, Thiago V. dos Santos escreveu:
>> Nao conheco bem todas as funcoes do sp, mas para pela mensagem
>> de erro eu transformaria a tabela vp em SpatialPoints, que
>> eh o argumento esperado pela funcao over.
>>
>> Saudações,
>> --
>> Thiago V. dos Santos
>> PhD student
>> Land and Atmospheric Science
>> University of Minnesota
>> http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm
>>
>> Phone: (612) 323 9898
>>
>> ____________________________________________________________________________________________________________________________________________
>>
>> From: ASANTOS <alexandresantosbr em yahoo.com.br>
>> To: r-br em listas.c3sl.ufpr.br
>> Sent: Saturday, April 6, 2013 8:12 PM
>> Subject: Re: [R-br] Obter valor médio dos pixels de uma imagem gerada
>> por krigagem
>>
>> Boa noite pessoal,
>>
>> Acho evoluí um pouco na questão, mas agora a dificuldade esta
>> em contar os pixels contidos no interior das malhas, quando
>> tento um over(), ocorre o seguinte erro:
>>
>> Erro em function (classes, fdef, mtable) :
>> unable to find an inherited method for function "over", for
>> signature "table", "SpatialPolygons"
>>
>>
>> segue CRM:
>> #
>> require(geoR)
>> plot(s100$coords, xlim=c(0,1.2), ylim=c(0,1.2), xlab="Coord X",
>> ylab="Coord Y")
>> loci <- matrix(c(0.2, 0.6, 0.2, 1.1, 0.2, 0.3, 1.0, 1.1), ncol=2)
>> text(loci, as.character(1:4), col="red")
>> polygon(x=c(0,1,1,0), y=c(0,0,1,1), lty=2)
>>
>> # Fitting models with nugget fixed to zero
>> ml <- likfit(s100, ini = c(1,0.5), fix.nugget = T)
>>
>> # defining the grid
>> pred.grid <- expand.grid(seq(0,1, l=51), seq(0,1, l=51))
>> # kriging calculations
>> kc <- krige.conv(s100, loc = pred.grid, krige = krige.control(obj.m =
>> ml))
>> # displaying predicted values
>> image(kc, loc = pred.grid, col=gray(seq(1,0.1,l=30)), xlab="Coord X",
>> ylab="Coord Y")
>> #
>>
>> #Centro das 25 parcela 0.2 x 0.2
>> p0<-c(0.1,0.1)
>> #
>> c0 <- seq(p0[1],p0[1]+0.9,by=0.2)
>> d0 <- seq(p0[2],p0[2]+0.9,by=0.2)
>> d1 <- expand.grid(x=c0, y=d0)
>> points(d1[,1],d1[,2],col="red")
>> ver<-c(0.0,0.2,0.4,0.6,0.8,1.0)
>> hor<-c(0.0,0.2,0.4,0.6,0.8,1.0)
>> abline(v=ver, col="red")
>> abline(h=hor, col="red")
>> #
>> require(sp)
>> grid=GridTopology(c(0.1,0.1), c(0.2,0.2), c(5,5))### Cria as área
>> grid=SpatialGrid(grid=grid)
>> class(grid) ## SpatialPixels
>> gridPol <- as(grid, "SpatialPolygons") ## Transfoma as areas em
>> polígonos espaciais
>> options(digits=5)
>> pixelsize <- (1.0-0.0/30)*(1.0-0.0/30)#Tamanho do pixel é dado por
>> seq Xmaior - Xmenor/l * Ymaior-Ymenor/l
>> vp <- table(area <- kc$predict)## Valor dos pixels
>> count.pix<-table(over(vp, gridPol)) #contar quantos pontos tem em
>> cada area
>>
>>
>> Obrigado,
>>
>> Alexandre
>>
>> Em 06/04/2013 17:11, ASANTOS escreveu:
>> > Boa noite membros da lista,
>> >
>> > Gostaria de receber ideias para calcular o valor médio dos
>> pixel em uma imagem gerada por krigagem em sub-regiões de
>> interesse na imagem, por exemplo usando um exemplo do Prof. Paulo,
>> onde ajusta-se um semivariograma e faz a krigagem ordinária
>> dos dados:
>> >
>> > #
>> > require(geoR)
>> > plot(s100$coords, xlim=c(0,1.2), ylim=c(0,1.2), xlab="Coord X",
>> ylab="Coord Y")
>> > loci <- matrix(c(0.2, 0.6, 0.2, 1.1, 0.2, 0.3, 1.0, 1.1), ncol=2)
>> > text(loci, as.character(1:4), col="red")
>> > polygon(x=c(0,1,1,0), y=c(0,0,1,1), lty=2)
>> >
>> > # Fitting models with nugget fixed to zero
>> > ml <- likfit(s100, ini = c(1,0.5), fix.nugget = T)
>> >
>> > # defining the grid
>> > pred.grid <- expand.grid(seq(0,1, l=51), seq(0,1, l=51))
>> > # kriging calculations
>> > kc <- krige.conv(s100, loc = pred.grid, krige = krige.control(obj.m
>> = ml))
>> > # displaying predicted values
>> > image(kc, loc = pred.grid, col=gray(seq(1,0.1,l=30)), xlab="Coord
>> X", ylab="Coord Y")
>> > #
>> >
>> > #Agora vou dividir esta área em 25 partes e lançar os centroides
>> destas subáreas:
>> >
>> > #Centro das 25 parcela 0.2 x 0.2
>> > p0<-c(0.1,0.1)
>> > #
>> > c0 <- seq(p0[1],p0[1]+0.9,by=0.2)
>> > d0 <- seq(p0[2],p0[2]+0.9,by=0.2)
>> > d1 <- expand.grid(x=c0, y=d0)
>> > points(d1[,1],d1[,2],col="red")
>> > ver<-c(0.0,0.2,0.4,0.6,0.8,1.0)
>> > hor<-c(0.0,0.2,0.4,0.6,0.8,1.0)
>> > abline(v=ver, col="red")
>> > abline(h=hor, col="red")
>> > #
>> >
>> > E aqui vem minha pergunta, como calcular o valor médio dos pixels
>> contidos em cada subárea de 0.2 x 0.2?
>> >
>> > Obrigado,
>> >
>>
>> --
>> ======================================================================
>> Alexandre dos Santos
>> Proteção Florestal
>> Coordenador do curso Técnico em Florestas
>> Vice Coordenador do curso de Engenharia 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
>> ======================================================================
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>>
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>>
>> --
>> ======================================================================
>> Alexandre dos Santos
>> Proteção Florestal
>> Coordenador do curso Técnico em Florestas
>> Vice Coordenador do curso de Engenharia 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
>> ======================================================================
>>
>>
>>
>> --
>> ======================================================================
>> Alexandre dos Santos
>> Proteção Florestal
>> Coordenador do curso Técnico em Florestas
>> Vice Coordenador do curso de Engenharia 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
>> ======================================================================
>>
>>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
--
======================================================================
Alexandre dos Santos
Proteção Florestal
Coordenador do curso Técnico em Florestas
Vice Coordenador do curso de Engenharia 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
======================================================================
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130408/1311e7dd/attachment-0001.html>
Mais detalhes sobre a lista de discussão R-br