[R-br] Frequência dentro de parcelas selecionadas com table()

Paulo Justiniano paulojus em leg.ufpr.br
Segunda Novembro 21 17:49:29 BRST 2011


Alenxandre

o seguinte funcionou aqui

note que com plot(ap3) que o 1o poluigono é o segundo pixel lá no alto
(o o 1o pixel fica como ultimo poligono)

fullgrid(grid) <- FALSE
class(grid)  ## SpatialPixels

ap3 <- as.SpatialPolygons.SpatialPixels(grid)
table(over(pontos, ap3))




On Mon, 21 Nov 2011, ASANTOS wrote:

>  Obrigado Prof. Paulo,
> 
>     Mas não funcionou não, aparentemente não é possível transformar o grid selecionado em SpatialPolygons, msemo
> repetindo a primeira coordenada para fechar o polígono, preciso encontrar uma outra solução,
> 
> Alexandre
> 
> Em 21-11-2011 16:20, Paulo Justiniano escreveu:
>       Aledandre
>
>       se nao funcionar com grid voce poderia rtransformar de grid para SpatialPolygons e operar o over()
>       novamente
> 
>
>       On Mon, 21 Nov 2011, ASANTOS wrote:
>
>             Prof. Paulo,
>                 Obrigado pela ajuda sua solução também funcionou, o Pebesma me forneceu a seguinte
>             solução:
>
>             fullgrid(grid)=FALSE
>             sel.grid <-grid[!is.na(clip),]
>             points(sel.grid, col='blue', pch=3)
>
>             mas o problema agora é que quando tentou calcular a frequência dos pontos dentro do grid com
>             over(pontos, sel.grid),
>              tenho uma resposta muito estranha que não representa a frequência de pontos contida em cada
>             parcela da malha, teria
>              alguma sugestão,
>
>             redobrados agradecimentos,
>
>             Alexandre
> 
> 
>
>             Em 21-11-2011 10:54, Paulo Justiniano escreveu:
>                   Alexandre
>
>                   em meus testes aqui su consegui selecionar o SpatialGridDataFrame
>                   (e nao o SpatialGrid)
>                   deve ter como mas como solucao temporaria:
>
>                   ## o seguinte funciona
>                   ap <- SpatialGridDataFrame(grid, data=data.frame(clip))
>                   ap1 <- ap[!is.na(clip),]
> 
> 
> 
>
>                   On Sat, 19 Nov 2011, ASANTOS wrote:
> 
>
>                         Boa dia pessoal,
>
>                              Então fiz as recomendações que o Prof. Paulo me recomendou, porém
>                         quando utilizo a função overlay() ou over(), para sobrescrever um novo
>                         grid (objeto sel.grid), somente com as parcelas do grid contidas no
>                         limite da área, obtenho o seguinte erro: Erro em grid[!is.na(clip), ] :
>                         (subscript) subscrito lógico muito longo, já verifiquei todos os objetos
>                         espaciais envolvidos e me parece estar tudo Ok não sei o que pode estar
>                         dando errado, segue o script:
>
>                         require(splancs)
>                         require(sp)
>                         set.seed(12)
>                         #Geração dos pontos aleatórios
>                         x<- runif(n=500,min=0, max=20)
>                         y<- runif(n=500,min=0, max=20)
>                         xy<-cbind(x,y)
>                         plot(x=x,y=y,axes=F, xlab="", ylab="",
>                             xlim=c(-1,20),ylim=c(0,21))##Plota os pontos
>                         ##Divide em parcelas
>                         segments(x0=rep(0,20),y0=0:20,
>                                 x1=rep(20,20),y1=0:20, col="gray", lty=2)
>                         segments(x0=0:20,y0=rep(0,20),
>                                 x1=0:20,y1=rep(20,20),col="gray", lty=2)
>                         pt0<- c(0.5,0.5)##Define o centro da primeira parcela
>                         N_S=seq(pt0[1], by=1, length.out=20)##Define o centro das parcelas
>                         L_O=seq(pt0[2],by=1, length.out=20)
>                         grid0<- expand.grid(N_S=seq(pt0[1], by=1, length.out=20),
>                         L_O=seq(pt0[2],by=1, length.out=20))
>                         ##Cria o limite da área
>                         limx<-c(2.5,2.5,18,18,2.5)
>                         limy<-c(2.5,18,18,2.5,2.5)
>                         lim=cbind(limx,limy)
>                         lim<-as.matrix(lim)
>                         ##Passando para objetos da classe Spatial
>                         #Pontos
>                         pontos<- SpatialPoints(cbind(x,y))
>                         pontos<- SpatialPoints(list(x,y))
>                         pontos<- SpatialPoints(data.frame(x,y))
>                         #Grid
>                         grid0= GridTopology(c(0.5,0.5), c(1,1), c(20,20))
>                         grid<-SpatialGrid(grid = grid0)
>                         ##Limite da área
>                         limite=SpatialPolygons(list(Polygons(list(Polygon(lim)),"lim")))
>                         ##Plotando
>                         plot(limite)#Limite
>                         points(pontos,col='red')#Pontos
>                         points(grid,col='blue')#Malha
>                         clip<-overlay(grid,limite)##Jogando o limite sobre a malha
>                         sel.grid<-grid[!is.na(clip),]##Retirando os NA's que correspondem a
>                         parte do grid fora do limite
> 
>
>                         Obrigado,
>
>                         -- 
>                         Alexandre DOS SANTOS
>                         Engenheiro Florestal, Msc.
>                         Laboratório de Entomologia Florestal
>                         Departamento de Entomologia
>                         Universidade Federal de Lavras
>                         Caixa Postal 3037
>                         37200-000 - Lavras - Minas Gerais - Brasil
>                         Tel: +55 35 92230304
> 
> 
> 
> 
> 
>
>                         Em 16-11-2011 15:25, Paulo Justiniano escreveu:
>                                Alexandre
>
>                                sem fornecer codigo especifico aqui vao algums ideias de por ojnde eu
>                                comecaria
>
>                                algumas alternativas caso nao queira programar isto:
>
>                                1. represetnar os dados no formato sp. Um como SpatialPoints
>                                --  Alexandre DOS SANTOS
>                                Engenheiro Florestal, Msc.
>                                Laboratório de Entomologia Florestal
>                                Departamento de Entomologia
>                                Universidade Federal de Lavras
>                                Caixa Postal 3037
>                                37200-000 - Lavras - Minas Gerais - Brasil
>                                Tel: +55 35 92230304
>                                e outro como SpatialGrid
>                                Depois a operaçõa de overlay (over() ) com tabloe vai te fornecer as
>                                contagens
>
>                                2.
>                                este problema é o mesmo do chamado "quadrat counts"
>                                que é tratado em pacotes como spatstat (oficial)
>                                ou Rcitrus (nao oficial)
>
>                                aqui vai um exemplinho usando o 1o
>
>                                require(spatstat)
>                                ## Carregando um conjunto de dados
>                                data(swedishpines)
>                                X<- swedishpines
>                                plot(X)
>                                summary(X)
>                                ## Contagem de Quadrats
>                                Q<- quadratcount(X, nx = 4, ny = 3)
>                                Q
>                                plot(X)
>                                plot(Q, add = TRUE, cex = 2)
> 
> 
> 
>
>                         -- 
>                         Alexandre DOS SANTOS
>                         Engenheiro Florestal, Msc.
>                         Laboratório de Entomologia Florestal
>                         Departamento de Entomologia
>                         Universidade Federal de Lavras
>                         Caixa Postal 3037
>                         37200-000 - Lavras - Minas Gerais - Brasil
>                         Tel: +55 35 92230304
>
>                         _______________________________________________
>                         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.
> 
> 
>
>             _______________________________________________
>             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
>             Engenheiro Florestal, Msc.
>             Laboratório de Entomologia Florestal
>             Departamento de Entomologia
>             Universidade Federal de Lavras
>             Caixa Postal 3037
>             37200-000 - Lavras - Minas Gerais - Brasil
>             Tel: +55 35 92230304
> 
> 
> 
> 
> _______________________________________________
> 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
> Engenheiro Florestal, Msc.
> Laboratório de Entomologia Florestal
> Departamento de Entomologia
> Universidade Federal de Lavras
> Caixa Postal 3037
> 37200-000 - Lavras - Minas Gerais - Brasil
> Tel: +55 35 92230304
> 
>


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