Recomendaré PDAL la biblioteca de abstracción de datos de puntos. He tenido buen éxito al usar PDAL para un problema de filtrado similar. Me gusta PDAL porque es de código abierto, proporciona soporte para Python y me facilita la reproducción del procesamiento y el seguimiento de mis parámetros de filtrado. También me gusta porque tiene 'tuberías' donde puedes encadenar varios pasos (por ejemplo, recortar, luego filtrar y luego exportar) y ejecutarlos a la vez. Tenga en cuenta que si tiene nubes de puntos realmente grandes, PDAL podría no ser tan rápido como algunas otras soluciones (LASTools, QTM, etc.).
Puede abordar el problema de los puntos periféricos con una tubería PDAL similar a la siguiente:
{
"pipeline": [
"input_utm.las",
{
"type":"filters.crop",
"bounds":"([401900,415650],[7609100,7620200])"
},
{
"type":"filters.outlier",
"method":"statistical",
"mean_k":12,
"multiplier":2.0
},
{
"type":"filters.range",
"limits":"Classification![7:7]"
},
{
"filename":"output.tif",
"resolution":1.0,
"output_type":"mean",
"radius":3.0,
"bounds":"([401900,415650],[7609100,7620200])",
"type": "writers.gdal"
}
]
}
Esta tubería lee en un LAS, lo recorta en una extensión UTM especificada, luego realiza un filtro que marca todos los puntos periféricos, luego realiza un segundo filtro que retiene solo puntos no periféricos (es decir, el indicador de Clasificación! = 7), luego exporta a una resolución de 1 m GeoTIFF. El filtro estadístico está realizando un cálculo de distancia media del vecino más cercano para probar si un punto está "demasiado lejos" de sus vecinos y, por lo tanto, un valor atípico.
De la documentación :