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