En este artículo descubrirás cómo transferir los colores (colorear) de una imagen u ortofoto a los puntos de una nube LIDAR utilizando la caja de herramientas LAStools en QGis, que renderiza el LIDAR como una fotografía. Veremos cómo crear archivos .bat utilizando LAStools para procesar un conjunto de archivos.
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
Tratamientos LAStools
La caja de herramientas LASTOOLS consta de tres tipos de herramientas:
- file– Las herramientas básicas que toman un archivo como entrada de procesamiento.
- folder – Herramientas similares, pero que utilizan un directorio como entrada de procesamiento. Se procesan todos los archivos LAS o LAZ de este directorio. El nombre del procesamiento termina en Pro.
- pipelines – herramientas que encadenan automáticamente una serie de herramientas anteriores.
En el grupo de folder sólo encontrará algunos de los procesos presentes en el grupo de archivos. Pero puede, con un poco de trabajo, crear un archivo .bat para ejecutar un comando de archivo en un directorio entero. Aquí veremos el procedimiento con la herramienta LAScolor, que sólo está presente en el grupo de archivos.
LAScolor: colorear una nube de puntos
Tomaremos como ejemplo un grupo de cuatro nubes de puntos IGN HD LIDAR sin clasificar y la imagen BDOrtho correspondiente
LAStools puede ejecutarse en la línea de comandos, fuera de QGis. En lugar de buscar la sintaxis necesaria para la línea de comandos, podemos ejecutar la herramienta en QGis y recuperar la línea de comandos generada por el complemento del registro de ejecución. Con unas pocas modificaciones, tendremos el archivo .bat que queremos.
Ejecución de la herramienta a través del plugin de QGis
Ejecutamos la herramienta LAScolor desde la caja de herramientas LAStools de QGis:
Para la herramienta, seleccionamos una de las nubes de puntos, la ortofoto, y le damos un nombre cualquiera como salida. No guardaremos el resultado del procesado, ya que lo haremos con el archivo .bat para todas las nubes del directorio.
LAStools se suministra en dos versiones: 32 bits y 64 bits. Por defecto, los diálogos utilizan la versión de 32 bits de la herramienta. El problema es que estas versiones están limitadas a gestionar 4 GB de memoria y, dado el número de puntos presentes en las nubes LIDAR, este límite se supera muy a menudo. Para evitar los mensajes de error de asignación de memoria, es mejor marcar siempre la casilla de la versión de 64 bits.
Al hacer clic en Ejecutar, la ventana muestra la pestaña Journal:
Siguiendo «LAStools command line» encontrarás la línea de comando que estamos buscando.
C:/lidar/cantal/LAStoolsbinascolor -cpu64 -i "C:\lidar/colouriseinput/semis1.laz" -image "C:\lidar/colouriseortho.tif" -o "C:/lidar/colouriseoutput/semis1.laz"
En este ejemplo
C:/lidar/cantal/LAStools\bin\lascolor es el ejecutable de la herramienta
-cpu64 corresponde a la petición de ejecutar la versión de 64 bits de la herramienta
-i «C:\lidar\coloriser\input\semis1.laz» es la nube de entrada
-image «C:lidar\coloriser\ortho.tif» es la imagen que se utilizará para colorear la nube de puntos
-o «C:/lidar/colorise/output/semis1.laz» es la nube coloreada resultante
Abrimos un archivo de texto vacío en edit para construir nuestro pequeño programa por lotes.
La primera línea de este fichero será la que cree el bucle de procesamiento para todos los ficheros de un directorio.
Esta línea será
for /r directorio_a_procesar %%i in (extensión) do (
En lenguaje llano, el contenido de la variable %%i será el nombre completo (incluyendo la ruta) de cada fichero con una extensión determinada dentro de un directorio dado.
En nuestro ejemplo, esta línea será
for /r "C:\lidar\colorise\input" %%i in (*.laz) do (
Si tus nubes de puntos están en formato LAS, tendrás que cambiar *.laz por *.las
La segunda línea será el comando que ejecute LAScolor, donde modificaremos la entrada y la salida.
Para el fichero de entrada del comando sustituimos -i «C:\lidar\coloriser\inputsemis1.laz» por la variable del bucle for: -i %%i
Para el fichero de salida, tenemos que utilizar una variable poco conocida. No podemos utilizar la variable %%i tal cual porque contiene la ruta del fichero de entrada y queremos crear el fichero de salida en otro directorio. Por lo tanto, necesitamos recuperar el nombre del fichero de entrada sin la ruta. Para ello utilizamos la variable %%~ni. La ~n recupera el nombre de %%i sin la ruta ni la extensión.
Nuestra salida será por tanto
-o C:/lidar/colorizador/salida/%%~ni.laz
Debemos añadir a la variable la ruta del directorio de salida y la extensión deseada.
El resultado final de nuestro archivo .bat será entonces:
for /r "C:\lidar\coloriser\input" %%i in (*.laz) do (
C:/lidar/cantal/LAStools\bin\lascolor -cpu64
-i %%i
-image "C:\lidar\coloriser\ortho.tif"
-o C:/lidar/coloriser/output/%%~ni.laz
)
comandos), ve al directorio del archivo bat que acabas de crear y escribe .\nom_du_fichier.bat (1)
Verás cómo se procesan tus nubes de puntos (2):
En la figura, puedes ver el mensaje por falta de licencia. Por encima de 3 millones de puntos, habrá pequeñas distorsiones y algunos atributos menos.
El resultado final de las cuatro nuevas nubes de puntos puede cargarse ahora en la ventana de QGis: