[R-br] Criando um processo de pontos sobre uma área regular [Resolvido]

ASANTOS alexandresantosbr em yahoo.com.br
Terça Janeiro 10 17:15:54 BRST 2012


Muito Obrigado Elias,

            Era exatamente isso que eu estava procurando,

Redobrados agradecimentos,

Alexandre




Em 10-01-2012 16:42, Elias T. Krainski escreveu:
> Veja um exemplo a seguir:
>
> x0 <- seq(3, 21, 3)
> y0 <- seq(2.5, 21, 2.5)
> xy0 <- as.matrix(expand.grid(x=x0, y=y0))
> n0 <- nrow(xy0)
>
> symbols(xy0[,1], xy0[,2], rep(0.3, n0),
>         inches=FALSE, bg=4, asp=1)
>
> rpts <- function(n, xy.no, xlim, ylim, radius) {
>   xy.res <- matrix(NA, n, 2)
>   for (i in 1:n) {
>     sim <- TRUE
>     while (sim) {
>       x <- runif(1, xlim[1], xlim[2])
>       y <- runif(1, ylim[1], ylim[2])
>       sim <- min(sqrt((xy.no[,1]-x)^2 + (xy.no[,2]-y)^2))<radius
>     }
>     xy.res[i,] <- c(x,y)
>   }
>   return(xy.res)
> }
>
> pts <- rpts(30, xy0, c(2,22), c(2,21), 0.3)
>
> points(pts, col=2, pch=3)
>
> Att.
> Elias T. Krainski
>
>     ------------------------------------------------------------------------
>     *De:* ASANTOS <alexandresantosbr em yahoo.com.br>
>     *Para:* r-br em listas.c3sl.ufpr.br
>     *Enviadas:* Terça-feira, 10 de Janeiro de 2012 16:14
>     *Assunto:* Re: [R-br] Criando um processo de pontos sobre uma área
>     regular
>
>     Boa tarde pessoal,
>
>                 Retornei ao problema de simular um processo de pontos
>     sobre uma área regular, representada por um plantio de árvores com
>     25cm de tronco (com espaçamento 3x2.5m), onde os pontos não podem
>     sobrepor os troncos. Tentei montar o algoritmo sugerido pelo Prof.
>     Paulo, mas me deparei com alguns problemas, vou explicar passo a
>     passo e ver se alguém da programação pode me dar um help, fiz:
>
>     require(plotrix)
>     require(gpclib)
>     require(spatstat)
>
>     ##Cria o limite da área
>     limx<-c(2,2,21,21)
>     limy<-c(2,21,21,2)
>     plot(limx,limy)##Plota o limite
>     lim=cbind(limx,limy)
>     lim<-as.matrix(lim)
>     polygon(lim)
>
>     ##Cria as árvores regularmente espaçadas -3x2m
>     sq=seq(2.5,20,2.5)
>     coord<-NULL
>     for (k in sq) {
>         for(j in sq){
>     draw.circle(k,j+0.5,radius=0.25,col="red")##Representação gráfica
>     dos troncos com 25cm de diâmetro
>     coord<-rbind(coord,c(k,j+0.5))##Coordenada das árvores -3x2m
>     colnames(coord)<-c("xc","yc")
>     }}
>
>     ###Criando a janela a ser utilizada no pacote spatstat
>     cont<-lim
>     a <- as(lim, "gpc.poly")
>     w <- as.owin(a)
>
>     ### Cria o processo de pontos - Poisson
>
>     E é aqui vem o problema, pois não tem como eu adicionar um
>     contador para ver ponto por ponto se a coordenada do ponto esta
>     sobrepondo o tronco, pois a função rpoispp() do spatstat, cria o
>     processo de pontos de Poisson em intensidade por unidade de área,
>     sendo que minha ideia seria fazer:
>
>     res<-NULL
>
>     while (sqrt(outer(xy[,1],xc,"-")^2+outer(xy[,2],yc,"-")^2)>0.25)
>     {##Calcula a distância dos pontos que não sobrepõem o tronco
>
>     xypois=rpoispp(2,win=a)##Lambda = 2/m^2
>     xd=xypois$x
>     yd=xypois$y
>     points(xd,yd)
>     res=cbind(res,c(xd,yd)) #Cria a matriz de coordenada dos pontos
>     }
>     point(res[,1],res[,2])
>     ##
>     Sendo que o resultado final que espero obter são as coordenadas
>     dos pontos que não ocupam o mesmo local que os troncos. Então
>     pergunto se alguém poderia me dar uma luz,
>     Obrigado,
>     Alexandre
>
>
>
>     Em 16-11-2011 17:03, ASANTOS escreveu:
>>     Prof. Paulo,
>>
>>            Perfeito, as árvores tem aproximadamente o mesmo diâmetro
>>     sim, pois são clones de eucalipto. Vou montar o algoritmo
>>     sugerido e calcular as distâncias com a função outer().
>>
>>     Novamente 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:29, Paulo Justiniano escreveu:
>>>     Alexandre
>>>
>>>     todas as arvores tem o mesmo " diametro" (area)
>>>
>>>     se positivo o caminho seria uma simulação dentro de um loop "while"
>>>     até conseguir completar o numero de pontos requerido
>>>
>>>     o algoritmo seria
>>>
>>>     enquanto o numero de pontos nao é atingido:
>>>
>>>     1. sorteie 1 ponto
>>>     2. calcule a distancia deste 'as arvores presentes e tome a menor
>>>     3. verifique se ele está no raio da árvoce
>>>     4 se nao estiver guarde o ponto e aumente o valor do contador
>>>     caso contrario simule outro sem mudar o contador
>>>
>>>
>>>
>>>
>>>     On Wed, 16 Nov 2011, ASANTOS wrote:
>>>
>>>>     Boa tarde pessoal,
>>>>
>>>>        Estou tentando criar um processo de pontos aleatório sobre
>>>>     uma área regular representada por árvores regularmente
>>>>     espaçadas, sendo que o processo de pontos só pode ocorrer onde
>>>>     não existam árvores e estou quebrando a cabeça com isso, bom
>>>>     primeiro criei a área com as árvores:
>>>>
>>>>     require(plotrix)
>>>>     ##Cria o limite da área
>>>>     limx<-c(2,2,20.5,20.5)
>>>>     limy<-c(2,20.5,20.5,2)
>>>>     plot(limx,limy)
>>>>     lim=cbind(limx,limy)
>>>>     lim<-as.matrix(lim)
>>>>     polygon(lim)
>>>>
>>>>     ##Aqui criei a posição das árvores e com área igual ao seu
>>>>     diâmetro
>>>>     sq=seq(2.5,20,2.5)
>>>>     for (k in sq) {
>>>>        for(j in sq){
>>>>     draw.circle(k,j,radius=0.3,col="red")
>>>>     }}
>>>>
>>>>
>>>>     Bom agora eu queria jogar sobre essa área o processo de pontos:
>>>>
>>>>     ##Criando o processo de pontos
>>>>     x <- runif(n=500,min=0, max=20)
>>>>     y <- runif(n=500,min=0, max=20)
>>>>     xy<-cbind(x,y)
>>>>     points(xy)
>>>>     ##
>>>>
>>>>     Porém, os pontos também caem nas mesmas posições ocupadas pelas
>>>>     árvores (obviamente), onde gostaria de saber se alguém
>>>>     conheceria alguma solução para eu fazer com que não haja
>>>>     sobreposição entre os raios que representam os diâmetros das
>>>>     árvores e os pontos criados? Na verdade, preciso definir uma
>>>>     maneira de fazer com que as coordenadas contidas nos diâmetros
>>>>     das árvores não sejam validas no momento da geração do processo
>>>>     de pontos, atualmente estou tentando soluções com o pacote
>>>>     spatstat mais sem sucesso, pois não consigo fazer com que a
>>>>     área criada seja um objeto ppp valido.
>>>>     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
>>>>
>>>>     _______________________________________________
>>>>     R-br mailing list
>>>>     R-br em listas.c3sl.ufpr.br <mailto: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  <mailto: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  <mailto: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 <mailto: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

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20120110/8412899a/attachment.html>


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