[R-br] get coordinates of patches (clumps) in a raster map

Thiago V. dos Santos thi_veloso em yahoo.com.br
Quarta Agosto 21 13:54:03 BRT 2013


Olá Ludmila,

O seu raster é muito peculiar, pois diferentemente dos rasters usados nos exemplos, ele contém apenas NAs e 1s. 

Eu não diria que é um problema, mas eu suspeitaria que a função clump não está preparada para esse caso específico. No seu lugar, eu enviaria uma pergunta para a lista de geoprocessamento do R (https://stat.ethz.ch/mailman/listinfo/r-sig-geo), da qual os autores do pacote raster participam e provavelmente resolverão o seu problema.

Espero que seja útil,

--
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: Ludmila Rattis <ludmilarattis em gmail.com>
To: r-br em listas.c3sl.ufpr.br; Thiago V. dos Santos <thi_veloso em yahoo.com.br> 
Sent: Wednesday, August 21, 2013 9:24 AM
Subject: Re: [R-br] get coordinates of patches (clumps) in a raster map
 


Oi Thiago,

A função não dá erro. Mas não consigo o que preciso. Tentei um código bem parecido com esse segundo que você postou:


r<-raster("lemure_r")
rc <- clump(r,directions=8,gaps=FALSE)

clump_id <- getValues(rc)    

xy <- xyFromCell(rc,1:ncell(rc))

df <- data.frame(xy, clump_id, is_clump = rc[] %in% freq(rc, useNA = 'no')[,1])

df$is_clump

lemure<-df[df$is_clump == T, ]
lemure$is_clump


e realmente dá certo com o raster aleatório, porque ele identifica cada célula como sendo pertencente a um clump. No meu caso ele reconhece os 309 clumps que eu esperava, até aí ok. O problema ocorre na linha

clump_id <- getValues(rc)

porque ele não atribui números diferentes para as células que estão em clumps diferentes, e eu preciso disso para obter o centroide. Como você verá, o comando

lemure<-df[df$is_clump == T, ]


retorna as coordenadas de TODAS as células que estão em clumps, mas não me diz em qual clump a célula está, por causa do resultado que descrevi acima.

O raster está em anexo.

[ ]'s

Ludmila



2013/8/20 Thiago V. dos Santos <thi_veloso em yahoo.com.br>

Ludmila,
>
>
>Por que o seu código não funciona? Aqui no meu computador funcionou com um raster aleatório.
>
>
>Você tentou usar a função clump? Ela pode ser mais próxima do que você precisa. Veja abaixo:
>
>
>library(raster)
>library(igraph)
>
>
># Create random raster
>r <- raster(ncols=12, nrows=12)
>set.seed(0)
>r[] <- round(runif(ncell(r))*0.7 )
>
>
># Detect clumps and plot result
>rc <- clump(r)
>plot(rc)
>
>
># Extract coordinates
>xy <- coordinates(rc)
>lon <- xFromCol(r,1:ncol(r))
>lat <- yFromRow(r,1:nrow(r))
>
>
>Se o código acima não funcionar no seu computador, por favor retorne a mensagem de erro E o raster que você está usando para que a lista possa ajudar.
> 
>
>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: Ludmila Rattis <ludmilarattis em gmail.com>
>To: R-br em listas.c3sl.ufpr.br 
>Sent: Tuesday, August 20, 2013 1:54 PM
>Subject: [R-br] get coordinates of patches (clumps) in a raster map
> 
>
>
>Prezados,
>
>
>Preciso extrair as coordenadas dos centroides de diferentes clumps de um raster. Para isso, usei o seguinte código: 
>
>
>p <- data.frame(rasterToPoints(meu_raster))
>a<- p[p$layer > 0,]
>
>c<-sapply(split(p[, c("x", "y")], p$layer), colMeans)
>
>
>
>Contudo, esse código não está funcionando.
>
>
>Alguém saberia me dizer como posso obter tais coordenadas?
>
>
>[]'s
>
>
>Ludmila Rattis
>Programa de Pós-graduação em Ecologia/UNICAMP
>Conservation Biogeography Lab
>http://www.wix.com/rdloyola/lab 
>_______________________________________________
>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.
>


-- 
Me. Ludmila Rattis
Programa de Pós-graduação em Ecologia/UNICAMP
Conservation Biogeography Lab
http://www.wix.com/rdloyola/lab 
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130821/c7393be0/attachment.html>


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