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

ASANTOS alexandresantosbr em yahoo.com.br
Terça Janeiro 10 16:14:07 BRST 2012


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
>>> 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

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


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