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 <[email protected]>
    *Para:* [email protected]
    *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
    [email protected] <mailto:[email protected]>
    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
    [email protected]  <mailto:[email protected]>
    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
    [email protected]  <mailto:[email protected]>
    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
    [email protected] <mailto:[email protected]>
    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
[email protected]
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
[email protected]
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.

Responder a