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.
Índice
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:
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:
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:
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.
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:
- En primer lugar incorpora Python para permitirnos escribir programas Python que interactúen con datos usando el filtro filters.python.
- 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):
Licenciado en Geografía. Máster en Sistemas de Información Geográfica. Consultor GIS desde el año 2004. En MappingGIS desde el año 2012 para ayudarte a impulsar tu perfil GIS y diferenciarte de la competencia. Echa un vistazo a todos nuestros cursos de SIG online.
Hola.
Gran trabajo el tuyo.
La herramienta de Perfiles de elevación para datos de nubes de puntos merece un artículo.
Muchas gracias por todo.
Un saludo.
El conocimiento y aplicación de herramientas GIS es imprescindible en toda actividad.
Es un campo extraordinario al que me interesa introducirme gradualmente