Datos LIDAR en R

En la reunión del grupo de interés local (GIL) de R de Madrid, Francisco Mauro habló de aplicaciones de R a conjuntos de datos LIDAR.

En efecto, uno quiere estimar la cantidad de madera que hay en un monte. Uno entonces la calcula en unas pequeñas zonas y luego, barriendo el monte con pulsos de láser desde un avión toma medidas (x,y,z) (es decir, longitud, latitud y altura) en una malla fina de puntos. Esa malla permite identificar, por ejemplo, la densidad y altura de los árboles. Correlacionando estas variables proxy con la cantidad de madera, se puede, por ejemplo, estimar por extrapolación la cantidad total de madera que contiene el monte entero.

Sin embargo, los datos LIDAR se generan habitualmente en un formato, LAS, libre pero binario e ilegible. Que no parecen poder leerse con R aún. Aunque sí con Python, así que…

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
library(rPython)
library(ggplot2)

python.code <- "
from liblas import file
f = file.File('Parcela_209.las',mode='r')
xyz = [(p.x, p.y, p.z) for p in f]
"

python.exec(python.code)
xyz <-python.get("xyz")

xyz <- data.frame(do.call(rbind, xyz))

ggplot(xyz, aes(x = X1, y = X2, col = X3)) + geom_point()

… que produce:

¿Adivinará alguien lo que estoy pensando?