¿Qué herramientas de procesamiento de LiDAR están disponibles en Python?

19

He estado usando FUSION y la línea de comandos FUSION Lidar Toolkit (LTK) para procesar datos LiDAR . Una amplia búsqueda en Google ("Lidar Python") produjo libLAS y pyLAS como bibliotecas LiDAR de Python, sin embargo, estas parecen proporcionar solo acceso de lectura y escritura a los datos LAS.

Estoy particularmente interesado en crear imágenes de intensidad y densidad además de modelos de superficie de dosel a partir de nubes de puntos. ¿Existe un conjunto de herramientas generalmente aceptado en Python que pueda realizar el mismo tipo de tareas que FUSION LTK puede realizar?

    
pregunta Aaron 03.03.2014 - 16:22

6 respuestas

12

laspy es otro buen software de lectura / escritura de LAS. Admite trabajar con los datos directamente en matrices numpy y una serie de otras características agradables de Pythonic. Sin embargo, no es un software de procesamiento en sí mismo.

PDAL tiene la capacidad de usar Python como un lenguaje de filtrado en proceso, pero tampoco es un motor de procesamiento.

No hay mucho en el carcaj de Python para LiDAR y el procesamiento de nubes de puntos. Creo que algo de esto tiene que ver con los volúmenes de datos que normalmente se procesan y la respuesta típica para alcanzar C / C ++ cuando se enfrentan al desafío. Espero que a medida que Python mejore (PyPy está manejando muchas cosas, y es la razón por la que trabajé para desarrollar laspy), más software de procesamiento de nube de puntos de Python esté disponible. Creo que la perspectiva está mejorando, pero las cosas todavía no están del todo ahí.

    
respondido por el Howard Butler 03.03.2014 - 17:46
2

Aunque no es estrictamente una biblioteca 'Python' sino un conjunto de envoltorios para otras herramientas, en particular GRASS, existen los 'ARSF DEM Scripts' que he escrito:

enlace

Uno de los objetivos era proporcionar un conjunto común de funciones de Python para diferentes herramientas de línea de comandos (llamadas mediante subproceso) con un indicador method utilizado para especificar la herramienta.

El uso de ejemplo para generar una imagen DSM, intensidad y densidad es:

from arsf_dem import dem_lidar

# DSM image (GRASS, points2grid, SPDLib, FUSION or licensed LAStools)
dem_lidar.las_to_dsm('in_las.las', 'out_dsm.tif',
                      method='points2grid')

# Intensity image (GRASS or licensed version of LAStools)
dem_lidar.las_to_intensity('in_las.las', 'out_intensity.tif',
                           method='GRASS')

# Density image (GRASS only)
dem_lidar.grass_lidar.las_to_density('in_las.las', 'out_density.tif',
                                     bin_size=10)

Existen bastantes herramientas de procesamiento de LiDAR disponibles a través del envoltorio GRASS Python que también podrían usarse en lugar de / además de lo que está disponible a través de arsf_dem .

    
respondido por el danclewley 01.09.2016 - 07:58
2

pylidar es un conjunto relativamente nuevo de módulos de Python para el procesamiento de LiDAR. Se basa en SPDLib y RIOS y utiliza numpy.

Está disponible para descargar desde aquí

    
respondido por el dmci 01.09.2016 - 10:16
2

Recientemente lancé una biblioteca independiente de código abierto (MIT) (es decir, sin dependencias) denominada WhiteboxTools para realizar muchos tipos de análisis geoespaciales, incluido el procesamiento de datos LiDAR. La biblioteca está escrita en Rust y tiene un amplio soporte para secuencias de comandos basadas en Python . Por ejemplo, la siguiente secuencia de comandos de Python utiliza la biblioteca WhiteboxTools para llenar los datos de color RGB de los puntos LiDAR en un archivo LAS:

from whitebox_tools import WhiteboxTools

wbt = WhiteboxTools()
wbt.work_dir = "/path/to/data/"
in_lidar = "lidar_data.las"
in_image = "airphoto.tif"
out_lidar = "colourized_lidar.las"
wbt.lidar_colourize(in_lidar, in_image, out_lidar) 

Las herramientas de procesamiento específicas de LiDAR de WhiteboxTools incluyen las siguientes funciones:

  • BlockMaximum: crea un ráster de bloque máximo a partir de un archivo LAS de entrada.
  • BlockMinimum: crea un ráster mínimo de bloques a partir de un archivo LAS de entrada.
  • FilterLidarScanAngles: elimina puntos en un archivo LAS con ángulos de escaneo mayores que un umbral.
  • FindFlightlineEdgePoints: identifica puntos a lo largo del borde de una línea de vuelo en un archivo LAS.
  • FlightlineOverlap: lee un archivo de puntos LiDAR (LAS) y genera un ráster que contiene el número de líneas de vuelo superpuestas en cada celda de la cuadrícula.
  • LidarElevationSlice: genera todos los puntos dentro de un archivo de puntos LiDAR (LAS) que se encuentran entre un rango de elevación específico.
  • LasToAscii: convierte uno o más archivos LAS en archivos de texto ASCII.
  • LidarColourize: agrega los campos de color rojo-verde-azul de un archivo LiDAR (LAS) basado en una imagen de entrada.
  • LidarGroundPointFilter: identifica los puntos del terreno dentro del conjunto de datos LiDAR.
  • LidarIdwInterpolation: interpola archivos LAS utilizando un esquema ponderado de distancia inversa (IDW).
  • LidarHillshade: calcula un valor de sombreado para puntos dentro de un archivo LAS y almacena estos datos en el campo RGB.
  • LidarHistogram: crea un histograma a partir de datos LiDAR.
  • LidarInfo: imprime información sobre un conjunto de datos LiDAR (LAS), incluido el encabezado, la frecuencia de retorno del punto y los datos de clasificación e información sobre los registros de longitud variable (VLR) y geokeys.
  • LidarJoin: une varios archivos LiDAR (LAS) en un solo archivo LAS.
  • LidarKappaIndex: realiza un análisis de índice de acuerdo kappa (KIA) en las clasificaciones de dos archivos LAS.
  • LidarNearestNeighbourGridding: Rejillas de archivos LAS que usan el esquema del vecino más cercano.
  • LidarPointDensity: calcula el patrón espacial de densidad de puntos para un conjunto de datos LiDAR.
  • LidarPointStats: crea varios rásteres que resumen la distribución de datos de puntos LAS.
  • LidarRemoveDuplicates: elimina puntos duplicados de un conjunto de datos LiDAR.
  • LidarRemoveOutliers: elimina los valores atípicos (puntos altos y bajos) en una nube de puntos LiDAR.
  • LidarSegmentation: segmenta una nube de puntos LiDAR basada en vectores normales.
  • LidarSegmentationBasedFilter: identifica los puntos del terreno dentro de las nubes de puntos LiDAR utilizando un enfoque basado en la segmentación.
  • LidarTile: genera un archivo LiDAR LAS en varios archivos LAS.
  • LidarTophatTransform: realiza una transformación blanca de sombrero de copa en un conjunto de datos Lidar; como una estimación de la altura sobre el suelo, esto es útil para modelar el dosel de vegetación.
  • NormalVectors: calcula vectores normales para puntos dentro de un archivo LAS y almacena estos datos (componentes del vector XYZ) en el campo RGB.

Además, existen numerosas herramientas para procesar los DEM que se interpolan a partir de los datos de origen de LiDAR (por ejemplo, eliminación de características, eliminación de energía, etc.). Los detalles se pueden encontrar en el Manual del usuario . El código fuente se puede encontrar aquí , y los archivos binarios compilados están en el sitio web de Geomorfometría e Hidrogeomática, aquí .

    
respondido por el WhiteboxDev 20.03.2018 - 22:08
1

Empezando a jugar con las herramientas que se encuentran aquí. Ha sido bastante útil. enlace

    
respondido por el bw4sz 26.11.2018 - 23:57
0

Si observa el código fuente de QGIS toolbox for LAStools (ahora parte del marco del complemento de procesamiento) que puede vea cómo llamar a software externo (aquí LAStools ) para llevar a cabo las operaciones de procesamiento de LiDAR.

    
respondido por el LAStools 10.05.2017 - 02:16

Lea otras preguntas en las etiquetas