Trabajando con nubes de puntos PDAL en QGIS

Con los recientes avances en la fotogrametría y la tecnología de levantamiento LiDAR, ha habido una demanda creciente en la captura y almacenamiento de datos de nubes de puntos. Los datos de las nubes de puntos son de naturaleza vectorial, pero normalmente son órdenes de magnitud mayores que una capa vectorial estándar.

  • Los conjuntos de datos vectoriales típicos varían de miles a millones de entidades.
  • Las nubes de puntos varían de millones a miles de millones o incluso billones de puntos.

Debido a esta gran cantidad de puntos, se necesita un enfoque completamente diferente para visualizar, analizar y almacenar nubes de puntos en una plataforma SIG.

PDAL, Point Data Abstraction Library, es una librería de código abierto en C++ para procesar, consultar, filtrar o realizar conversiones de nubes de puntos. No se limita a los datos LiDAR, aunque el enfoque y el impulso de muchas de las herramientas de la biblioteca tienen su origen en LiDAR.

Además del código de la biblioteca, PDAL proporciona un conjunto de aplicaciones de línea de comandos que los usuarios pueden utilizar cómodamente para trabajar con datos de nubes de puntos.

Trabajando con PDAL en línea de comandos

La manera más fácil y rápida de acceder a pdal mediante la línea de comandos es hacerlo desde la carpeta de aplicaciones de QGIS. PDAL puede utilizarse en QGIS desde la versión 3.18. Para acceder a la línea de comandos abriremos OsGeo4W Shell.

Una vez abierta la ventana escribimos la palabra pdal y se mostrará el listado de comandos disponibles:

Vamos descargar un archivo .laz de muestra y realizaremos un par de operaciones de ejemplo.

Obtener datos de muestra

Para comenzar necesitamos algunos datos de muestra, así que descargaremos el archivo autzen.laz disponible en el repositorio de pdal en Github. Escribiremos la siguiente sentencia en la línea de comandos:

explorer.exe https://github.com/PDAL/data/raw/master/autzen/autzen.laz

Y guardamos el archivo laz en la carpeta de Descargas de nuestro equipo.

Imprimir el primer punto

Para imprimir solo el primer punto del archivo laz, escribimos el siguiente comando (reemplazando, por supuesto, «usuario» con tu nombre de usuario u otra ruta).

pdal info C:\Users\usuario\Downloads\autzen.laz -p 0

Aquí hay un resumen de lo que sucede con esa invocación de comando.

  • pdal: porque estamos ejecutando el comando pdal.
  • info: Queremos obtener información sobre los datos.
  • autzen.laz: El archivo autzen.laz del que queremos información.
  • -p 0: es el punto del que queremos extraer la información (el 0 es el índice).
{
  "file_size": 56350988,
  "filename": "C:\\Users\\usuario\\Downloads\\autzen.laz",
  "now": "2023-12-05T10:56:46+0100",
  "pdal_version": "2.5.5 (git-version: 24f78d)",
  "points":
  {
    "point":
    {
      "Blue": 93,
      "Classification": 1,
      "EdgeOfFlightLine": 0,
      "GpsTime": 245379.3984,
      "Green": 102,
      "Intensity": 4,
      "NumberOfReturns": 1,
      "PointId": 0,
      "PointSourceId": 7326,
      "Red": 84,
      "ReturnNumber": 1,
      "ScanAngleRank": -17,
      "ScanDirectionFlag": 0,
      "UserData": 128,
      "X": 637177.98,
      "Y": 849393.95,
      "Z": 411.19
    }
  },
  "reader": "readers.las"
}

Un ejemplo de conversión

La conversión de datos de un formato a otro puede generar pérdidas, ya que algunos datos en el formato de origen pueden no ser representables en el mismo formato o no ser representables en absoluto en el formato de destino. PDAL intenta convertir datos con la mayor precisión posible, pero debemos asegurarnos de conocer las capacidades de los formatos de datos que estamos utilizando.

En la siguiente sentencia convertimos el archivo .laz a formato de texto.

pdal translate C:\Users\usuario\Downloads\autzen.laz C:\Users\usuario\Downloads\autzen.txt

Visualizando las nubes de puntos LiDAR en QGIS

En el año 2020 Lutra Consulting lanzó una campaña de crowdfunding para el soporte de nubes de puntos en QGIS. El proyecto fue financiado gracias a más de 60 contribuciones organizacionales e individuales e incluso superó el presupuesto original. Los resultados de estos esfuerzos de desarrollo sobre el soporte de nubes de puntos están disponibles desde QGIS 3.18 (lanzado en febrero de 2021).

Vamos a ver cómo trabajar con nubes de puntos en formato las o laz sin necesidad de utilizar LAStools.

Agregamos una nueva conexión a una nube de puntos desde el Administrador de fuentes de datos → Nube de puntos:

Hacemos clic en el botón Añadir y la nube de puntos se añadirá al lienzo de QGIS:

Creación de un MDT a partir una nube de puntos con PDAL

En una sucesiva campaña de crowdfunding se consiguió una integración de algoritmos de PDAL en la caja de herramientas de procesos de QGIS. Cada algoritmo ejecuta una tarea particular (recortar datos, convertir a DEM rasterizado, etc.). Las herramientas de PDAL disponibles en QGIS 3.32 y superior son:

Herramientas pdal en QGIS
Herramientas PDAL en la caja de herramientas de procesos de QGIS

En el primer grupo, Conversión de nubes de puntos encontramos el algoritmo Exportar a ráster (usando triangulación), mediante el cual podemos exportar datos de nube de puntos a un ráster 2D (GeoTIFF) usando una triangulación de puntos y luego interpolando valores de celda desde los triángulos.

Una vez ejecutamos el algoritmo, lo que obtenemos es un MDE con los valores de altitud:

pdal a mdt usando triangulación
De las a geoTIFF usando triangulación mediante el algoritmo «Exportar a raster (usando triangulación)»

 

Con el MDE ya podremos obtener las curvas de nivel, crear un hillshade o cualquier otra operación de análisis raster.

Al implementar las herramientas de gestión de nubes de puntos en la caja de herramientas de procesos, se brinda a los usuarios una interfaz común para acceder a estas herramientas y también se consigue su uso en operaciones avanzadas como el procesamiento por lotes o la creación de modelos gráficos:

Un modelo de procesamiento de QGIS de muestra para crear un DEM ráster y contornos a partir de un conjunto de datos de nube de puntos cuando los algoritmos de procesamiento de nubes de puntos estarán disponibles en QGIS.
Un modelo de procesamiento de QGIS de muestra para crear un DEM ráster y contornos a partir de un conjunto de datos de nube de puntos.

Perfiles de elevación para datos de nubes de puntos

North Road, Hobu y Lutra Consulting decidieron nuevamente unir fuerzas y lanzar una nueva campaña de financiación colectiva para llevar el trabajo con pdal y QGIS al siguiente nivel.

Una herramienta de perfiles de elevaciones es esencial cuando se trabaja con datos 3D. La herramienta está disponible desde el menú Ver → Perfil de elevación.

Un ejemplo de una sección transversal: vista desde arriba que incluye la línea del perfil con una zona de influencia y el perfil con dos formas diferentes de estilo (clasificación/basado en elevación).

Un ejemplo de una sección transversal: vista desde arriba que incluye la línea del perfil con una zona de influencia y el perfil con dos formas diferentes de estilo (clasificación/basado en elevación).
Un ejemplo de una sección transversal: vista desde arriba que incluye la línea del perfil con una zona de influencia y el perfil con dos formas diferentes de estilo (clasificación/basado en elevación).

En la nueva herramienta de perfil integrada se ha incluido una gran variedad de funciones:

  • Soporte unificado para capas ráster, vectoriales, de malla y de nube de puntos.
  • Combina perfiles de una o más capas.
  • Perfiles definidos mediante dibujo lineal ad-hoc o mediante el uso de una cadena lineal de una capa vectorial existente.
  • La vista de perfil admite hacer zoom/panorámica para ver los detalles más finos.
  • Al pasar el ratón sobre la vista de perfil se muestra la ubicación correspondiente del cursor en el lienzo del mapa (y viceversa).
  • Posibilidad de medir distancias en el perfil.
  • Guardar imágenes de perfil en un archivo.
  • Proporcionar una forma rápida de mover la línea del perfil «izquierda» y «derecha», si se basa solo en dos puntos (es decir, un segmento de línea).
  • Mostrar más detalles de los objetos geográficos en las que se hace clic en el perfil (atributos de puntos para capas vectoriales y capas de nube de puntos, valores de bandas ráster, valores de conjuntos de datos de capas de malla).

PDAL y Python

Visita el apartado de Python para descubrir cómo puede utilizar PDAL con Python para procesar datos de nubes de puntos.

PDAL proporciona soporte para Python de dos formas:

  1. En primer lugar incorpora Python para permitirnos escribir programas Python que interactúen con datos usando el filtro filters.python.
  2. En segundo lugar, amplía Python proporcionando una extensión que los programadores de Python pueden utilizar para aprovechar las capacidades de PDAL en sus propias aplicaciones.

La historia de Python de PDAL gira en torno al soporte de Numpy. Los datos de PDAL se proporcionan tanto a los filtros como a la extensión como matrices Numpy.

Vídeo explicativo (en inglés):

3 comentarios en «Trabajando con nubes de puntos PDAL en QGIS»

Deja un comentario