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…

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?

13 comentarios sobre “Datos LIDAR en R

  1. Javier 7 marzo, 2013 17:35

    Pues no lo adivino pero tengo curiosidad… En cualquier caso lo que yo estoy pensando es que no se puede instalar rPython en R 2.15.3 … : (

    Gracias por el post!

  2. datanalytics 7 marzo, 2013 20:59

    @Javier En Linux y Mac sí que funciona rPython. En Windows no, todavía. De hecho, estoy en ello y pronto debería tener una versión funcionando.

  3. efau 7 marzo, 2013 21:49

    Pues no sé usted, pero yo estoy pensando en contar manifestantes…

  4. datanalytics 7 marzo, 2013 22:26

    Pues necesitas un avión…

  5. Javier 7 marzo, 2013 23:01

    @datanalytics

    ¿rPython está en CRAN? A mi en Debian y en Ubuntu me dice: package ‘rPython’ is not available (for R version 2.15.3) ….

  6. datanalytics 7 marzo, 2013 23:08

    @Javier Pues no, no está en ninguna parte. O sí, depende.

    Está en r-forge (https://r-forge.r-project.org/R/?group_id=843) pero no compila porque los ordenadores de r-forge no tienen las dependencias necesarias (es decir, python). Tampoco lo puedo subir a CRAN por el mismo motivo.

    Además, será complicado obtener una versión binaria en Windows que funcione en todos los ordenadores (32 y 64 bits, con Python 2.7 y 3.1, 3.3, etc.). Pero estoy trabajando en la manera de conseguir una versión binaria del paquete que funcione bajo diversas configuraciones de Windows.

    Si te interesa, escríbeme y te paso el paquete para Linux / Mac. Si usas Windows, te puedo pasar algo tambén que puede o no funcionar en tu máquina.

  7. datanalytics 7 marzo, 2013 23:10

    @Javier Se me olvidaba: se puede instalar (en Linux/Mac) así: install.packages(“rPython”, repos = “http://www.datanalytics.com/R”)

  8. Javier 7 marzo, 2013 23:23

    @datanalytics

    Eso ha funcionado, gracias! Me interesa python cada vez más. Ahora uso el ipython notebook para trabajar con R en lugar de usar knitr o sweave porque es mucho más versátil. Un saludo y gracias de nuevo

  9. datanalytics 7 marzo, 2013 23:45

    @Javier ¿Cómo usas ipython? ¿Hay gente usándolo para R? ¿Alguna referencia?

  10. Javier 8 marzo, 2013 9:59

    @datanalytics

    Yo lo uso para R! Porque python estoy aprendiendo poco a poco. Lo mejor es que puedes combinar python y R (o cualquier lenguaje de programación compatible) e ir usando las variables con uno u otro de manera que aprovechas el potencial de cada uno. Ejemplos tienes en: https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks

    Hay muchas más ventajas, en realidad, porque también aprovecha el potencial de pandoc para convertir los notebooks a diferentes formatos con un solo click, pueden compilarse online con un visor que tienen montado (como los ejemplo de arriba), etc. Puedes ver también este vídeo de Fernando Pérez que lo explica mejor: http://blog.fperez.org/2012/11/back-from-pycon-canada-2012.html

    Saludos,

    Javier

  11. David Fuente Herraiz 7 junio, 2013 0:07

    @Javier
    Hola Javier,

    me gustaría trabajar con Python en R ya que ahí tengo un programa al que me gustaría acceder desde R por comodidad y capacidades estadísticas. Ya instalé rJython, pero me parece que hay una opción python.load que sólo está en rPython. Aunque tengo bastante experiencia en R, desconozco cómo solucionar el siguiente problema (más abajo). Quizás me puedas echar una mano, si tienes tiempo. Gracias por leer mi mensaje. David

    * installing *source* package ‘rPython’ …
    could not locate python-config
    ERROR: configuration failed for package ‘rPython’
    * removing ‘/home/david/R/i686-pc-linux-gnu-library/3.0/rPython’
    Warning in install.packages :
    installation of package ‘rPython’ had non-zero exit status

  12. datanalytics 7 junio, 2013 19:45

    @David Fuente Herraiz Necesitas las librerías de desarrollo de Python (las que se llaman python-dev en Debian, Ubuntu, etc.). Te permiten “extender” Python y, en particular, compilarlo contra R (a través de rPython).

Los comentarios están desabilitados.