Reclassificando mapa baseado em outro mapa e distribuição de probabilidades

7 views
Skip to first unread message

Ricardo Dobrovolski

unread,
Oct 5, 2015, 11:37:08 AM10/5/15
to r-eco...@googlegroups.com, r-...@listas.c3sl.ufpr.br, Ludmila Rattis
Prezados,

Quero reclassificar o map1 de acordo com o map2.

O mapa 2 tem duas categorias, 3 e 2.

Quero que as células do map1 com a categoria 3 virem 2 se elas for sobreposta à categoria 1 do map2, de acordo com uma distribuição de probabilidades empírica, armazenada em change.dist.

Na verdade, preparei uma função para resolver esse problema, mas ela é baseada em um for no qual cada célula é avaliada. E isso é muito lento para a área avaliada.

Além disso, como o modelo é probabilistico, teríamos de fazer isso pelo menos 100 vezes. 

Assim, peço a ajuda dos senhores & senhoras para resolver o problema.

Segue abaixo a função e em anexo os arquivos.

Valeu!

Abraço,

RD.
change_dist.txt
map1.asc
map2.asc

Luciano F. Sgarbi

unread,
Oct 5, 2015, 11:50:12 AM10/5/15
to r-eco...@googlegroups.com
Não sei se entendi direito
Seria algo deste tipo? 

require(raster)
map1 <- map2 <- raster(nrows=5, ncols=5)
values(map1) <- sample(1:3, 25, r=T)
values(map1) <- sample(1:3, 25, r=T)
values(map1)
values(map2)
values(map1)[values(map1)==3&values(map2==1)] <- 2
values(map1)

Abraço

--
Sempre envie um código mínimo reproduzível.
Envie ou responda perguntas para o e-mail (r-eco...@googlegroups.com)
---
Você recebeu essa mensagem porque está inscrito no grupo "R-Ecology" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para r-ecologia+...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para r-eco...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/r-ecologia.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/r-ecologia/CAM_OQmD9EeSdPoZP6w_oJwgSD8zsJNn%3D%2B8Wse5Do%2Bpv97Msi-Q%40mail.gmail.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Luciano F. Sgarbi
Laboratório de Ecologia Teórica e Síntese
Departamento de Ecologia, Instituto de Ciências Biológicas V.
Universidade Federal de Goiás, campus II, Goiânia-GO, Brasil

Ricardo Dobrovolski

unread,
Oct 5, 2015, 12:35:14 PM10/5/15
to r-eco...@googlegroups.com, r-...@listas.c3sl.ufpr.br, Ludmila Rattis
Faltou a função!

Em 5 de outubro de 2015 12:37, Ricardo Dobrovolski <rdobro...@gmail.com> escreveu:
teste_maps.R

Leonardo Bergamini

unread,
Oct 6, 2015, 7:57:48 AM10/6/15
to r-eco...@googlegroups.com
Bom, se ainda estiver precisando aqui vai uma opção:



Mantendo a abordagem do Luciano só falta realizar os sorteios. Pra poupar tempo podemos já selecionar as células pelo critério lógico (que exige menos chamadas de função) e só aplicar o sorteio nas células selecionadas. Seria algo assim:


require(raster)
map1 <- map2 <- raster(nrows=5, ncols=5)
values(map1) <- sample(1:3, 25, r=T)
values(map2) <- sample(1:3, 25, r=T)
values(map1)
values(map2)
change.dist<-runif(300) # simulando sua distribuicao empirica
quais<-values(map1)==3&values(map2==1) # as celulas que satisfazem o primeiro criterio
quantas<-sum(quais) # quantas são
unif<-runif(quantas) # "quantas" valores aleatorios
emp<-sample(change.dist,quantas, r=T) # "quantas" valores da sua distribuicao empirica - eu vi uns NA lá, seria melhor removê-los antes
values(map1)[quais] <- 3-(emp>=unif)
values(map1)


Abraço,
Leonardo L. Bergamini

--
Sempre envie um código mínimo reproduzível.
Envie ou responda perguntas para o e-mail (r-eco...@googlegroups.com)
---
Você recebeu essa mensagem porque está inscrito no grupo "R-Ecology" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para r-ecologia+...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para r-eco...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/r-ecologia.
Reply all
Reply to author
Forward
0 new messages