[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