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_clumplemure<-df[df$is_clump == T, ]lemure$is_clumpe 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 linhaclump_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 comandolemure<-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.[ ]'sLudmila2013/8/20 Thiago V. dos Santos <thi_veloso@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 rasterr <- raster(ncols=12, nrows=12)set.seed(0)r[] <- round(runif(ncell(r))*0.7 )# Detect clumps and plot resultrc <- clump(r)plot(rc)# Extract coordinatesxy <- 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@gmail.com>
To: R-br@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?[]'sLudmila RattisPrograma de Pós-graduação em Ecologia/UNICAMP
Conservation Biogeography Lab
http://www.wix.com/rdloyola/lab
R-br mailing list
R-br@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@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