En este artículo, encontrarás instrucciones paso a paso sobre cómo crear un MDT a partir de una nube LIDAR clasificada y no clasificada, utilizando LAStools y QGis. Veremos las herramientas LASground y LASground_new, las2dem y lastile.
Tutorial Procesamiento de datos HD LIDAR con QGis
2- Descargue los datos del IGN HD LIDAR y cárguelos en QGis
3- Herramientas para datos LIDAR en QGis 3.32
4-Colorear una nube de puntos a partir de una ortofoto
5-Colorear a partir de una imagen con LAStool
6- Modelo digital de superficie (MDS) con CloudCompare y LAStools
7- Créer un Modèle Numérique de Terrain avec CloudCompare
8- Creación de un Modelo Digital del Terreno con LAStools
El proceso para crear un MDT a partir de una nube de puntos LIDAR sin clasificar es el mismo que el descrito en el artículo anterior:
1- Hay que clasificar los puntos de la nube en puntos «suelo» y puntos «no suelo».
2- Hay que interpolar un raster a partir de los puntos del terreno
Si leíste el artículo anterior y pensabas que generar un MDT era bastante sencillo, ¡piénsalo otra vez! Aquí la simplicidad no está a la orden del día.
- Tienes 2 herramientas para clasificar puntos que son similares pero diferentes
- Hay más de una docena de parámetros posibles para cada herramienta
- Los mejores resultados se obtienen ejecutando las herramientas dos veces, con parámetros diferentes.
- Tanto si se dispone de una licencia LAStools como si no, no se puede procesar una nube LIDAR del IGN sin dividirla en nubes más pequeñas.
Es imposible ver aquí todas las posibilidades. Te toca a ti armarte de valor y explorar todas las que no te mostraremos.
Clasificación de puntos de tierra y sobre tierra con LAStools
LASGround y LASGround_New son dos herramientas de la caja de herramientas LAStools que se utilizan para extraer puntos de suelo de una nube de puntos LiDAR. Sin embargo, hay diferencias significativas entre estas dos herramientas en términos de métodos y funcionalidad.
- LASGround:
LASGround es una herramienta que identifica y clasifica los puntos del terreno en una nube de puntos LiDAR. Utiliza principalmente algoritmos basados en operaciones morfológicas para detectar puntos de tierra. LASGround utiliza una cuadrícula de celdas y una ventana de tamaño variable para identificar los puntos del terreno basándose en la densidad de los puntos vecinos. Es eficaz para extraer puntos del terreno en zonas llanas o con pendientes suaves.
Esta herramienta funciona muy bien en entornos naturales como montañas, bosques, campos, colinas o cualquier otro terreno con pocos objetos artificiales. - LASGround_New :
LASGround_New es una versión mejorada de LASGround, introducida para proporcionar un mejor rendimiento y una extracción más precisa de los puntos del terreno. A diferencia de LASGround, LASGround_New utiliza un enfoque de aprendizaje automático. Puede utilizar métodos como Random Forest para clasificar los puntos del terreno basándose en características como la altura, la densidad, etc. LASGround_New está diseñado para manejar entornos más complejos, incluyendo áreas con pendientes más pronunciadas y características topográficas variadas.
Es una versión completamente rediseñada de lasground que hace un trabajo mucho mejor en el manejo de terrenos complicados donde hay montañas empinadas cerca de zonas urbanas con muchos edificios.
LASground
Se trata de una herramienta de extracción de tierra desnuda: clasifica los puntos LIDAR en puntos de tierra (clase = 2) y puntos sobre tierra (clase = 1). Esta herramienta funciona muy bien en entornos naturales como montañas, bosques, campos, colinas o cualquier otro terreno con pocos objetos artificiales.
La herramienta también produce excelentes resultados en ciudades, pero los edificios mayores que el tamaño del paso pueden causar problemas.
Step size
- El tamaño de paso por defecto es de 5 metros, lo que es adecuado para bosques o montañas.
- Para ciudades o terrenos planos, «-town» aumenta el tamaño de paso a 10 metros.
- Para ciudades o almacenes, ‘-city’ aumenta el tamaño del paso a 25 metros. Para ciudades muy grandes, utilice ‘-metro’ y el tamaño del paso aumentará a 50 metros.
- También puedes definirlo directamente con ‘-step 35’.
Los usuarios experimentados pueden refinar el algoritmo especificando el umbral en metros a partir del cual se suprimen los picos. El parámetro «-pico 0,5+5» suprime los picos ascendentes de más de 50 centímetros y los picos descendentes de menos de 5 metros en la TIN más gruesa.
Otro parámetro interesante es «-bulge 1.0», que especifica cuánto puede abultarse la TIN al incluir puntos a medida que se refina. El abombamiento por defecto es de una décima parte del paso para tamaños de paso superiores a 5 metros y de una quinta parte del paso en los demás casos.
La desviación estándar máxima para parches planos en centímetros puede fijarse con ‘-stddev 10’. El desplazamiento máximo en metros hasta el que se incluyen los puntos por encima de la estimación actual del terreno puede fijarse con ‘-offset 0.1’.
LASground_new
Esta es una herramienta para extraer el terreno desnudo: clasifica los puntos LIDAR en puntos de terreno (clase = 2) y puntos de no terreno (clase = 1). Se trata de una versión completamente revisada de lasground que maneja mucho mejor los terrenos complicados con montañas escarpadas cerca de zonas urbanas con muchos edificios.
El tamaño del paso por defecto se ha aumentado a 25 metros, lo que significa que la mayoría de los edificios de las ciudades normales pueden eliminarse (con la excepción de almacenes o fábricas muy grandes, que requieren un paso mayor).
Para ciudades pequeñas o zonas con pocos edificios, utiliza la opción «-town», que reduce el tamaño del paso a 10 metros. Para ciudades muy grandes, utiliza la opción «-metro» y el tamaño del paso aumentará a 50 metros.
También puedes experimentar fijando directamente el tamaño del paso con la opción «-step 35».
También está la opción «-nature», que utiliza un tamaño de paso de 5 metros para terrenos sin edificios, y la opción «-wilderness», que utiliza 3 metros si te interesan las características más pequeñas del terreno en LiDAR de alta resolución.
Los usuarios experimentados pueden refinar el algoritmo especificando el umbral en metros por encima del cual se suprimen los picos. El parámetro «-spike 0,5» suprime los picos ascendentes por encima de 50 centímetros y el parámetro «-spike_down 2,5» suprime los picos descendentes por debajo de 2,5 metros en la TIN más gruesa.
El desplazamiento máximo en metros hasta el que se incluyen los puntos por encima de la estimación actual del terreno puede fijarse con ‘-offset 0.1’. Si deseas probar un gran número de parámetros, también puedes jugar con «-bulge 1.5» que, por defecto, se fija en una décima parte del tamaño del paso y luego se ajusta en el rango de 1,0 a 2,0. Esto se aplica a ambas herramientas.
Lo que se aplica a ambas herramientas
Puedes utilizar clasificaciones distintas de la norma ASRPS con ‘-ground_class 10’ o ‘-non_ground_class 25’. Todos los puntos no clasificados como suelo pueden dejarse sin modificar con ‘-non_ground_unchanged’.
Si deseas excluir ciertas clasificaciones del cálculo de tierra desnuda, puedes hacerlo con ‘-ignore_class 7’. Para colinas muy empinadas, puedes intensificar la búsqueda de puntos iniciales de tierra con ‘-fine’, ‘-extra_fine’, ‘-ultra_fine’ o ‘-hyper_fine’. Del mismo modo, para terrenos muy llanos, puedes simplificar la búsqueda con ‘-coarse’ o ‘-extra_coarse’, pero pruebe primero la configuración por defecto.
Por último, puedes pedir a lasground o lasground_new que calcule la altura sobre el suelo de cada punto (para poder utilizar lasclassify después sin necesidad de ejecutar primero lasheight) con ‘-compute_height’ o incluso pedir que la altura calculada sustituya al valor de elevación con la opción ‘-replace_z’. Obtendrás entonces un archivo LAS/LAZ normalizado en altura que puede utilizarse, por ejemplo, con las herramientas lascanopy o lasgrid o con el algoritmo CHM (canopy height model) sin foso. Si lasground o lasground_new no funcionan correctamente, prueba a desactivar ciertas optimizaciones mediante las banderas ‘-no_clean’ o ‘-no_bulge’.
Si hay muy pocos puntos para hacer una clasificación fiable del terreno, los archivos simplemente se copian (y en el caso de ‘-replace_z’, todas las elevaciones se ponen a cero). Estos archivos también pueden ignorarse utilizando la opción de línea de comandos ‘-skip_files’.
Preprocesamiento de la nube de ejemplo con LAStile
Vamos a utilizar la misma nube de puntos LIDAR que en el artículo anterior, una nube clasificada a la que hemos eliminado la clasificación. Esto nos permite comparar los resultados de las herramientas con el MDT realizado directamente con la clasificación ‘suelo’ del IGN.
El primer problema que tenemos es que esta nube de puntos contiene 28 millones de puntos. Si utilizamos las herramientas LAStools de este artículo en esta nube, obtenemos un mensaje
ERROR processing file 'C:\telechargements\ncLHD_FXX_0722_6403_PTS_C_LAMB93_IGN69.laz'. maybe out of memory?
Así que tenemos que dividir nuestra nube en nubes más pequeñas (menos de 1,5 millones si no tienes licencia) y utilizar herramientas de ‘directorio’ en lugar de herramientas de ‘archivo’. Reconstruiremos una única salida al final del procesamiento.
Para crear los mosaicos, creamos un directorio vacío y abrimos la herramienta LAStile
Tendrás que calcular el tamaño de las baldosas (tile size) para que éstas tengan el número de puntos deseado. Nuestra nube de entrada mide 1000mx1000m y contiene 28 millones de puntos. Si queremos menos de 1,5 millones de puntos por mosaico, 25 mosaicos de 200mx200m tendrán alrededor de 1,1 millones de puntos. En ese caso, introduciremos 200 en el tamaño de las baldosas.
Por otro lado, el campo Output LAS/LAZ, que está marcado como opcional, no lo es en absoluto, de lo contrario tendrás que buscarlo en los recovecos de /Users/username/AppData/Local/Temp/. Tienes que introducir un directorio para los tiles y un nombre, por ejemplo «tile.las». Las tiles se llamarán entonces «tile_coordenadaX_coordenadaY.las».
Nuestro tratamiento de estas baldosas incluye interpolaciones entre puntos. Si tuviéramos un mosaico clásico, de borde a borde, tendríamos efectos de borde: los puntos situados en los bordes no tendrían sus vecinos situados en el mosaico adyacente. Para evitarlo, LAStools añade una zona tampón alrededor de cada mosaico. Cuando se reconstituya la nube resultante, se eliminarán automáticamente, pero no habrá efectos de borde en el procesamiento intermedio.
Extracción de puntos del terreno
Cargamos la nube de puntos a procesar, en su versión coloreada ya que será más práctica para analizar los resultados.
Tenemos una zona urbana rodeada de espacios naturales. Vamos a utilizar la herramienta LASground, configurándola con los parámetros -city para el tipo de terreno y -ultra_fine para el preprocesado. Esta es la configuración clásica de procesado LIDAR para arqueología y se corresponde muy bien con nuestra nube LIDAR. No olvides marcar la casilla 64bits ejecutable.
El resultado es una serie de nubes con dos clases:
- 1- sin clasificar (puntos sobre el suelo)
- 2- suelo
Aquí es donde tenemos la mayor diferencia respecto al procesado con CloudCompare. Para evaluar el resultado tenemos dos problemas
- el primero es el hecho de que hemos dividido nuestra nube en múltiples lotes de datos, lo que hace difícil obtener una visión global.
- El segundo es la falta de una verdadera interfaz 3D que permita ver el resultado desde todos los ángulos. La vista 3D de QGis es demasiado tosca para ver el resultado correctamente.
La única forma que nos queda es utilizar la vista de perfil de elevación, pero esto nos obliga a dibujar varios transectos para detectar cualquier problema.
Dependiendo de los tipos de terreno presentes en nuestra nube inicial, será necesario comprobar varias baldosas.
En nuestro ejemplo, nos detendremos aquí. Pero es bastante frecuente necesitar una segunda pasada de lasground. El caso clásico es el de la investigación arqueológica. Supongamos que tenemos una zona interesante en la parte natural de la imagen en nuestra nube de puntos. Utilizamos la opción -city para clasificar los edificios sobre el terreno. Esta opción utiliza un tamaño de paso de 25 metros. Si tenemos estructuras pequeñas, es muy probable que no se clasifiquen como sobre rasante. Una segunda ejecución de lasground, esta vez con la opción -wilderness (área natural sin edificios) y aplicándola exclusivamente a los puntos clasificados como «suelo» por la primera ejecución, podría entonces eliminar las estructuras pequeñas.
Cálculo del MDT con LAS2dem
Esta herramienta lee puntos LIDAR, los triangula temporalmente en un TIN y, a continuación, estratifica el TIN en un ráster MDT. La herramienta puede utilizar valores ‘-elevation’, ‘-slope’, ‘-intensity’, ‘-rgb’, o coloreado ‘-hillshade’ o ‘-gray’ o ‘-false’. La salida puede ser en formato BIL, ASC, IMG, FLT, XYZ, DTM, TIF, PNG o JPG . El rango concreto de valores a mostrar puede limitarse utilizando ‘-set_min_max 10 100’ o puede definirse utilizando ‘-compute_min_max’. Cuando se utilizan filtros como ‘-last_only’ o ‘-keep_class 2’, se puede utilizar la opción ‘-extra_pass’ para determinar primero el número de puntos a triangular. Esto ahorra memoria.
Por defecto, el tamaño de la trama generada se basa en la extensión del cuadro delimitador. Si el archivo LAS/LAZ se ha generado utilizando lastile, como en nuestro ejemplo, su extensión puede ajustarse a la del mosaico utilizando la opción «-use_tile_bb». De este modo, no se rasteriza el «búfer de borde» que pudiera tener el mosaico. De este modo se evitan los artefactos de borde al crear en paralelo los mosaicos correspondientes.
Se genera automáticamente un archivo KML para que el MDE pueda visualizarse en Google Earth (para TIF/PNG/JPG). Como el archivo LAS/LAZ contiene información sobre la proyección, se utiliza para georreferenciar el archivo KML.
Para nuestro ejemplo, he aquí la ventana de diálogo las2dem:
El filtro keep_class 2 significa que sólo se procesarán los puntos clasificados como «suelo» (código 2).
Ajustamos el paso del MDT a 0,5 metros.
Marcamos la casilla «use tile bounding box» para que la salida ráster de cada mosaico sea cortada para mantener sólo el mosaico original, sin la zona tampón creada por lastile.
Se utiliza -extra_pass para optimizar la asignación de memoria.
El resultado es la creación de tres archivos por mosaico: el archivo tif, el archivo world asociado y el archivo kml.
Observe que los mosaicos de salida están unidos (sin desbordamiento):
LAStools dispone de una herramienta para embaldosar la nube de puntos inicial, pero no para reconstruir el MDT final. Tenemos que utilizar la herramienta estándar de QGis: menu-> raster -> varios -> fusionar
Seleccionamos todos los mosaicos, nombramos el archivo tif de salida y ejecutamos el comando.
Por fin podemos ver el resultado completo y compararlo con el MNT de referencia realizado a partir de la clasificación del IGN.
En la parte natural de nuestra zona LIDAR, los dos resultados coinciden:
Sin embargo, en la zona urbanizada, hay diferencias:
Lógicamente, tendríamos que volver a la primera pasada lasground y cambiar el paso a un valor de 10 metros (-town) y volver a hacerlo todo de nuevo…