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>


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