2 votos

Eliminando tallos de árboles de una nube de puntos en R

Estoy estudiando la densidad de follaje de parcelas forestales por debajo de 2 metros de altura utilizando escaneo láser terrestre móvil. Quiero filtrar los troncos de los árboles de las nubes de puntos para que las estimaciones de densidad de puntos no los incluyan. He estado utilizando los paquetes lidR y TreeLS para procesar mis nubes de puntos. Hasta ahora he normalizado las nubes y clasificado los troncos de árboles utilizando el código de ejemplo proporcionado en la documentación del paquete TreeLS:

tls1 = readTLS("tls1.las") %>%
tlsNormalize %>%
tlsSample
map = treeMap(tls1, map.hough())
tls2 = treePoints(tls1, map, trp.crop(circle=FALSE))
tls3 = stemPoints(tls2, stm.hough(pixel_size = 0.03))

Esto identifica exitosamente los troncos de árboles.

Para filtrar los troncos, he intentado usar la función filter_poi():

tls4 <- filter_poi(tls3, Stem = "FALSE")

Hay una columna en el conjunto de datos de la nube de puntos titulada "Stem" con valores TRUE/FALSE, así que pensé que esto funcionaría, pero obtengo este error:

Error in lasfilter_(las, lazyeval::dots_capture(...)) : 
  `conditions` must be logical.

1voto

Alex Puntos 158

Intenta clasificar los tallos en la columna 'Clasificación' después de llamar stemPoints.

He utilizado el siguiente código para clasificar y luego filtrar los tallos:

Clasificar

tls@data[Stem == T, Clasificación := 20] 

luego filtrar

tallos  = filter_poi(tls, Clasificación == 20L)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X