[R-br] out of topic

Éder Comunello comunello.eder em gmail.com
Sábado Maio 21 08:11:13 BRT 2016


Gabriel, bom dia!

Segue uma ideia inicial para seu caso. Considerei que as distâncias que
você forneceu são de fato as distâncias horizontais e que os pontos foram
tomados a partir de um único ponto de visada. Dê uma olhada no desenho das
copas, de fato eu esperava copas mais circulares...


### <code r>
da <- data.frame(Tree=rep(c("CB6", "CB7", "MB10"), each=8), ID=rep(1:8, 3),
                AZ=c(240.7, 276.6, 301.1, 51.9, 110.8, 130, NA, NA, 211.3,
182.1,
                     178, 111.6, 29.4, 13.8, 307.7, 274.2, 325.5, 228.8,
192.9, 138.9,
                     92.4, 35.9, 330.8, NA),
                DH=c(3.6, 5.6, 3.3, 3.3, 2.5, 6.4, NA, NA, 4.5, 4.3, 3.4,
4.6, 2.4,
                     4.5, 7.6, 3.2, 6.1, 10, 3.2, 3.9, 6.9, 4.2, 3.4, NA))

### remove NA's e calcula coordenadas x e y
da <- da[complete.cases(da),]
da$x = da$DH*cos(da$AZ*pi/180)
da$y = da$DH*sin(da$AZ*pi/180)
da

### "fecha" polígonos
da2 <- NULL
for (tree in unique(da$Tree)) {
     sel <- da[da$Tree==tree,]
     sel <- rbind(sel, sel[1,])
     da2 <- rbind(da2, sel)
}

### visualiza formas das copas
par(mfrow=c(2,2))
for (tree in unique(da$Tree)) {
     sel <- da[da$Tree==tree,]
     plot(sel$y~sel$x, type="n", asp=T, xlab=NA, ylab=NA, xlim=c(-10,10),
ylim=c(-10,10))
     polygon(sel$y~sel$x, col="light green", bor=3)
     area <- paste(round(splancs::areapl(cbind(sel$x, sel$y)),2 ), "m²")
     text(6,6, area)
}

### Exemplos de operações com um polígono
p1 <- as.matrix(da2[1:7, 5:6])
splancs::areapl(p1) # [1] 31.77187 m²
p1.d <- as.matrix(dist(p1))
p1.l <- sapply(1:(nrow(p1.d)-1), function(x) p1.d[x, x+1])
sum(p1.l) # perimeter - 27.21928 m

require(sp)
p1.sp <- SpatialPolygons(list(Polygons(list(Polygon(p1)), "pol1")))
rgeos::gArea(p1.sp) # [1] 31.77187 m²

require(geosphere)
areaPolygon(p1.sp) # 390888183993 ???
perimeter(p1.sp)   # 3014297 ???
### geosphere considera que seriam coordenadas em graus

### é possível calcular um fator de conversão
conv <- sqrt(areaPolygon(p1.sp)/rgeos::gArea(p1.sp)); conv # ~ 110919m
areaPolygon(p1.sp)/conv^2 # 31.77187 m²
perimeter(p1.sp)/conv     # 27.17573 m

### Cálculo para os três polígonos

for (tree in unique(da2$Tree)) {
     sel <- da2[da2$Tree==tree, 5:6]
     sel.sp <- SpatialPolygons(list(Polygons(list(Polygon(sel)), "pol1")))
     conv <- sqrt(areaPolygon(sel.sp)/rgeos::gArea(sel.sp))
     print(paste(tree, round(areaPolygon(sel.sp)/conv^2, 1),
                 round(perimeter(sel.sp)/conv, 1)))
}

# Área e perímetros
# [1] "CB6 31.8 27.2"
# [1] "CB7 48.1 31.3"
# [1] "MB10 74 40.8"

### </code>


[image: Imagem inline 1]


​
================================================
Éder Comunello
Agronomist (UEM), MSc in Environ. Sciences (UEM)
DSc in Agricultural Systems Engineering (USP/Esalq)
Brazilian Agricultural Research Corporation (Embrapa)
Dourados, MS, Brazil |<O>|
================================================
GEO, -22.2752, -54.8182, 408m
UTC-04:00 / DST: UTC-03:00




Em 20 de maio de 2016 09:51, gabriel henrique pires de mello ribeiro <
gabrielgiga em gmail.com> escreveu:

> Prezado Éder, segue o exemplo de três árvores, note que para cada árvore o
> número de medidas de distância e azimute entre os pontos ao redor da copa
> podem variar (de acordo com as dimensões da copa). As medidas Az1 a Az8
> representam os azimutes e D1 a D8 a distância entre os pontos de medição.
> grato
> Gabriel Ribeiro
>
> Em 20 de maio de 2016 09:41, Éder Comunello <comunello.eder em gmail.com>
> escreveu:
>
>> Gabriel, bom dia!
>>
>> Se você tem as coordenadas polares, pode obter as coordenadas cartesianas
>> e somar a distância entre pontos obtidas com dist() ou utilizar o próprio
>> {geosphere}, função perimeter(). Se não me engano {geosphere} trabalha só
>> com lat/long, mas poderia converter o valor considerando que um grau ~111km.
>>
>> Talvez se você fornecer os dados de uma ou duas árvores, alguém possa dar
>> uma sugestão mais precisa.
>>
>>>> ================================================
>> Éder Comunello
>> Agronomist (UEM), MSc in Environ. Sciences (UEM)
>> DSc in Agricultural Systems Engineering (USP/Esalq)
>> Brazilian Agricultural Research Corporation (Embrapa)
>> Dourados, MS, Brazil |<O>|
>> ================================================
>> GEO, -22.2752, -54.8182, 408m
>> UTC-04:00 / DST: UTC-03:00
>>
>>
>>
>>
>> Em 19 de maio de 2016 10:13, gabriel henrique pires de mello ribeiro <
>> gabrielgiga em gmail.com> escreveu:
>>
>>> Prezados estou tentando definir o perímetro de copas de árvores após a
>>> derrubada. Utilizando um true pulse, medi as distâncias e azimutes ao redor
>>> da copa, até o retorno ao ponto de partida. Ainda não consegui achar um
>>> pacote adequado, e.g. o pacote geosphere realiza algo similar (mas no caso
>>> a partir de coordenadas geográficas ele computa a distância entre linhas).
>>> Eu gostaria de fazer o delineamento do perímetro a partir da distância e
>>> azimuth entre os pontos (ao redor da copa de cada árvore derrubada).
>>> Qualquer sugestão será bem vinda.
>>> grato
>>> Gabriel Ribeiro
>>>
>>> _______________________________________________
>>> 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.
>>
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160521/4ab22334/attachment.html>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: image.png
Tipo: image/png
Tamanho: 12799 bytes
Descrição: não disponível
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160521/4ab22334/attachment.png>


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