Entre muchas mejoras, la versión 3.32 introduce la largamente esperada característica de procesamiento nativo de nubes de puntos en QGIS, permitiendo a QGIS Desktop convertirse en una potente utilidad de procesamiento de datos LiDAR.

Antes de publicar un tutorial sobre las nuevas características, he recopilado un poco de información dispersa sobre la arquitectura y las decisiones que han tomado los desarrolladores. Siempre es más interesante esperar frente a una barra de progreso cuando sabes lo que está por venir…

Puntos vectoriales clásicos y nubes de puntos

Los recientes avances en tecnología LiDAR y fotogrametría han hecho cada vez más necesario obtener y almacenar datos de nubes de puntos. Aunque los datos de nubes de puntos se basan en vectores, su tamaño suele ser mucho mayor que el de las capas vectoriales estándar. Mientras que los conjuntos de datos vectoriales típicos constan de miles o millones de características, las nubes de puntos pueden contener millones, miles de millones o incluso billones de puntos. Por eso, para visualizar, analizar y almacenar datos de nubes de puntos con eficacia, es necesario un enfoque distinto en una plataforma SIG, dado el enorme volumen de puntos que contienen.

En el mundo de los SIG de código abierto existen herramientas fantásticas para trabajar con nubes de puntos. PDAL («Point Data Abstraction Library») se ha convertido en una herramienta importante que admite muchos formatos de datos de entrada y también ofrece muchos algoritmos para procesar nubes de puntos. Para la visualización en la web, la biblioteca Potree JavaScript es la opción más habitual. Para visualizar nubes de puntos en una aplicación de escritorio, los usuarios suelen abrir CloudCompare, que viene con diversas herramientas integradas.

La integración de un visor de nubes de puntos en un SIG aporta un considerable valor añadido a los usuarios en comparación con un visor de nubes de puntos especializado y dedicado:

  • Los datos de nubes de puntos pueden visualizarse, compararse y analizarse con otros tipos de datos espaciales (incluidas capas vectoriales, ráster y de cuadrícula).
  • Interfaz de usuario y flujo de trabajo familiares
  • Integración con herramientas analíticas para crear rápidamente conjuntos de datos derivados

La principal dificultad a la hora de utilizar datos de nubes de puntos radica en la enorme cantidad de puntos que contienen los conjuntos de datos: tenemos que tratar con millones o incluso miles de millones de puntos para zonas geográficas relativamente pequeñas, mientras que los estudios a escala nacional pueden implicar billones de puntos. Con esta cantidad de datos, no es posible simplemente convertir el conjunto de datos en capas vectoriales «ordinarias»: las herramientas y formatos de datos típicos de los SIG, como GeoPackage o Shapefile, no están optimizados para tales cantidades de datos y cualquier operación llevaría mucho tiempo.

Las nuevas capas de nubes de puntos

Desde la versión 3.26, se ha introducido en QGIS un nuevo tipo de capa cartográfica: la capa de nube de puntos, que se utiliza para todos los datos de nubes de puntos. Como ya se ha mencionado, no fue posible reutilizar el tipo de capa vectorial existente (con geometrías de puntos), ya que no está diseñada para soportar cantidades tan grandes de puntos.

Para el acceso a los datos basados en ficheros, se decidió utilizar PDAL (biblioteca de abstracción de datos de puntos). Esta biblioteca sigue el planteamiento adoptado por la biblioteca GDAL: proporciona una interfaz común para leer, escribir o procesar datos de nubes de puntos, y varios controladores («lectores» y «escritores» en la terminología de PDAL) soportan las características específicas de los distintos formatos. Además, PDAL ofrece un concepto de canalización que permite combinar varios algoritmos de procesamiento.

Lo segundo que había que considerar era cómo mostrar los datos de forma eficaz. Recorrer todos los puntos de un conjunto de datos y dibujarlos no funcionaría bien y llevaría demasiado tiempo. Además, sería un despilfarro, ya que cuando se aleja la imagen, sólo es necesario mostrar una pequeña cantidad de puntos. Un segundo caso a tener en cuenta era que, cuando un usuario hace mucho zoom, deberíamos ser capaces de renderizar sólo los puntos dentro del área de interés en lugar de leer los puntos fuera de la vista actual. Por lo tanto, necesitábamos una forma de interrogar rápidamente a los puntos en estas diferentes situaciones. Esta necesidad suele resolverse mediante el uso de estructuras de datos de partición del espacio (como los octrees) que dividen jerárquicamente el espacio en volúmenes más pequeños. Una característica importante es que no sólo las hojas, sino también los nodos internos contienen datos: gracias a ello, es posible no sólo interrogar rápidamente puntos en una pequeña área de interés, sino también obtener porciones más pequeñas de puntos en diferentes niveles de zoom.

Indexación de nubes de puntos

Los datos de nubes de puntos en formatos de uso común como LAS son conjuntos bastante simples de puntos que no están asociados a ninguna estructura de datos de indexación, y el orden de los puntos puede ser arbitrario. Por lo tanto, es necesario crear una estructura de datos de indexación cuando se abren estos archivos para poder visualizarlos, algo que también hacen otros visualizadores (como CloudCompare). Al indexar, los puntos deben ser reorganizados para que se pueda acceder a ellos rápidamente al renderizarlos. Una vez completada la indexación, tenemos una estructura de datos en forma de árbol donde cada nodo contiene un subconjunto de la nube de puntos – esta nube de puntos indexada puede ser almacenada en disco o en memoria.

Vista de mapa 2D/3D

Lo más importante es que los usuarios pueden ver los datos de la nube de puntos en un mapa 2D o 3D. La ventaja añadida de la plena integración con QGIS es que se pueden superponer otros datos (vectoriales o ráster) a los datos de la nube de puntos.

Para permitir una representación rápida en 2D y 3D incluso de grandes conjuntos de datos, QGIS es capaz de representar subconjuntos de los datos utilizando el índice jerárquico (generado cuando los datos se cargan por primera vez en QGIS). Cuando el usuario aleja el zoom, QGIS dibuja sólo un pequeño número de puntos, y en cuanto el usuario acerca el zoom, QGIS dibuja un número cada vez mayor de puntos (al tiempo que reduce la extensión del mapa).

Renderizado 2D

Todo el proceso de renderizado está dirigido por la clase QgsPointCloudLayerRenderer (donde la mayor parte del trabajo se realiza en un hilo, como es el caso de otros renderizadores de capas). Por el momento, el error geométrico aceptable (es decir, el espaciado aceptable entre puntos) se determina en función de la escala del mapa – por ejemplo, a una escala de 1:1.000.000, un espaciado de 1 km entre puntos puede ser apropiado, pero a una escala de 1:1.000, se requiere un espaciado mucho menor de, digamos, 1 metro. Este parámetro está expuesto a los usuarios para que puedan controlarlo como un parámetro de «filtrado dinámico», en caso de que el usuario desee anular la configuración predeterminada (por ejemplo, para obtener una mejor calidad de renderizado o tiempos de renderizado más rápidos).

nubes de puntos: propiedades de capa: error máximo
Fenêtre «Propriétés de la couche» d’un nuage de points,onglet symbologie

A continuación, recorremos la jerarquía de índices y recuperamos los nodos que cruzan la extensión de la vista del mapa y tienen un error geométrico aceptable. Por último, recuperamos los datos de la nube de puntos de estos nodos, ya sea de la caché de capas (si ya están en memoria) o de los nodos índice, y dibujamos los puntos uno a uno.

En el trabajo realizado hasta ahora, se ha previsto una única implementación del motor de renderizado. Dibuja puntos de un tamaño fijo, el color de los puntos viene determinado por uno de los atributos elegidos por el usuario (por ejemplo, elevación, clasificación, número de vuelta) y la rampa de color elegida. Además, se admiten algunas opciones básicas de filtrado (por ejemplo, sólo el último retorno, sólo un valor o valores concretos de clasificación, sólo un rango concreto de elevaciones).

En el futuro podrán añadirse otras representaciones, como la visualización de una superficie interpolada (calculada sobre la marcha a partir de datos puntuales), sombreados o contornos.

Renderizado 3D

Básicamente, el renderizado de nubes de puntos en 3D sigue los mismos principios que el renderizado en 2D: utilizando el índice jerárquico, determinamos qué nodos deben mostrarse, basándonos en qué datos de puntos se cargan y se muestran en la escena 3D. Parte de la infraestructura necesaria ya existía: las vistas 3D de QGIS permiten renderizar el terreno en «trozos» desde el principio (a medida que el usuario se acerca al terreno, se renderizan elevaciones y texturas de mapa más detalladas). Como el mecanismo es bastante genérico y se ha extendido a los datos de capas vectoriales en el pasado, también se ha extendido a las nubes de puntos. En el pasado estaba limitado por el hecho de que siempre esperaba una jerarquía cuatripartita, pero esto se ha actualizado para permitir jerarquías de árbol octree.

Las opciones de estilo para las vistas 3D son similares a las opciones de renderizado 2D: configuración del tamaño de los puntos, coloración basada en un único atributo y algunas opciones sencillas de filtrado de datos.

También se ha podido añadir el efecto de iluminación eye-dome, que mejora la percepción de la profundidad.

Identificación de puntos

La herramienta de identificación de mapas 2D y 3D se ha actualizado para devolver información completa sobre los puntos identificados. Además de sus coordenadas XYZ, también devuelve el valor de otros atributos de cada punto (como la clasificación y otros atributos).

Novedades de la versión 3.32

Proveedor de procesamiento nativo para nubes de puntos¶

Se ha integrado un nuevo proveedor de procesamiento nativo para algoritmos de nubes de puntos: el proveedor utiliza la herramienta de línea de comandos pdal_wrench y actualmente soporta los siguientes algoritmos:

Nuevos tratamientos de la caja de herramientas para la gestión de nubes de puntos

  • Información: proporciona metadatos básicos sobre la nube de puntos (número de puntos, extensión, crs, etc.).
  • Convertir formato: convierte la nube de puntos a un formato diferente, por ejemplo de las a laz.
  • Reproyectar: reproyecta la nube de puntos a un CRS diferente.
  • Fijar proyección: fija (asigna) el CRS de un archivo de nube de puntos.
  • Recortar: recorta una nube de puntos recortando uno o más polígonos.
  • Fusionar: fusiona varias nubes de puntos en un único archivo
  • Mosaico: crea mosaicos a partir de los datos de entrada
  • Thin: crea una versión más fina de la nube de puntos
  • Límites: exporta una capa vectorial que contiene los límites de la nube de puntos
  • Densidad: exporta un archivo raster en el que cada celda contiene el número de puntos en el área de esa celda.
  • Exportar a ráster: exporta los datos de la nube de puntos a una malla ráster 2D
  • Exportar a vector: exporta los datos de una nube de puntos a una capa vectorial con puntos 3D
  • Exportar a ráster (TIN): exporta datos de una nube de puntos a una malla ráster 2D utilizando triangulación de puntos.
  • Filtro: extraer un subconjunto de la nube de puntos utilizando expresiones PDAL

Como pdal_wrench requiere PDAL >= 2.5.0, el nuevo proveedor de procesamiento sólo estará disponible si se cumple la versión requerida de PDAL.

Hay varias razones para utilizar pdal_wrench en lugar de utilizar la API de PDAL y construir pipelines:

  • facilidad de uso: pdal_wrench proporciona un conjunto de algoritmos listos para usar y oculta al usuario la complejidad de la creación de pipelines, lo que facilita mucho el uso de los datos LiDAR a las personas nuevas en esta tecnología.
  • Ejecución en paralelo: PDAL ejecuta los pipelines en un único hilo, mientras que pdal_wrench admite el procesamiento multihilo, ya sea espacial o por archivos.
  • Soporte para nubes de puntos virtuales: es similar a la trama virtual (VRT) de GDAL: un único archivo hace referencia a otros archivos y los representa como un único dato.

Constructor de expresiones de nubes de puntos para Processing framework¶

En la interfaz gráfica hay disponible un nuevo widget de creación de expresiones para nubes de puntos que permite crear filtros para nubes de puntos de una forma sencilla y coherente con las interfaces de creación de expresiones de QGIS.

asistente de expresión para nubes de puntos

Filtrado por rectángulo y expresión añadido a los algoritmos PDAL¶.

Se ha añadido la opción de filtrar la nube de puntos de entrada por rectángulo (extensión) y expresión en los siguientes algoritmos PDAL:

  • limitar
  • recortar
  • densidad
  • exportación a trama (variantes normal y TIN)
  • exportación a vector
  • fusionar
  • afinar

Esto permite procesar sólo un subconjunto de los puntos del archivo o archivos de entrada, sin necesidad de un paso intermedio de filtrado ni de generar archivos temporales.

Para quienes sólo necesiten filtrar, existe también un algoritmo de filtrado independiente capaz de filtrar por rango, por expresión o por su combinación.

filtrado a nivel de procesamiento para nubes de puntos

Nubes de puntos virtuales (VPC)¶

Existe un nuevo proveedor de datos para los archivos de nubes de puntos virtuales (VPC) creados por la utilidad pdal_wrench y la herramienta Build virtual point cloud (VPC) en el nuevo proveedor Native point cloud Processing.

El archivo VPC se trata como una única capa en QGIS y puede contener un gran número de archivos de nubes de puntos cuyos índices se cargan cuando el lienzo se amplía lo suficiente. Los archivos individuales contenidos en el archivo virtual se muestran como derechos de paso mientras su extensión sea inferior a la anchura de la ventana del mapa. En cuanto el zoom es suficientemente grande y la extensión de un archivo individual supera la anchura de la ventana del mapa, se muestran los puntos del archivo.

Una nube de puntos virtual es un archivo contenedor JSON con extensión .vpc, que remite a otros archivos/URL que contienen los datos reales de la nube de puntos. Este concepto es similar al de los rásters virtuales (VRT) en GDAL.

cómo renderizar una VPC en la ventana de mapa

Bug
En el momento de escribir esto (Julio 2023) se ha encontrado un bug en el manejo por parte de QGis de los renderizados desde pdal_wrench. Por el momento, todo funciona si los archivos utilizados para el VPC son archivos copc. En caso contrario, QGis no muestra los puntos cuando el zoom es suficiente
.

Visualización de nubes de puntos virtuales (VPCs) en vistas 3D¶

Las nubes de puntos virtuales pueden ser renderizadas en vistas 3D. Para la gestión del rendimiento, se especifica un umbral de subíndice para que la vista renderice los puntos de la nube de puntos sólo cuando sea apropiado, y renderice la extensión de un subíndice concreto en su lugar cuando no se cumpla el criterio del umbral.

cómo renderizar una VPC en una vista 3D

Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *