Je recommanderai PDAL la bibliothèque d'abstraction de données ponctuelles. J'ai eu un bon succès en utilisant PDAL pour un problème de filtrage similaire. J'aime PDAL car il est open source, fournit un support Python et me permet de reproduire facilement le traitement et de garder une trace de mes paramètres de filtrage. Je l'aime aussi parce qu'il a des «pipelines» où vous pouvez enchaîner plusieurs étapes (par exemple recadrer puis filtrer puis exporter) et les exécuter en même temps. Notez que si vous avez de très gros nuages de points, PDAL peut ne pas être aussi rapide que d'autres solutions (LASTools, QTM, etc.).
Vous pouvez résoudre le problème des points périphériques avec un pipeline PDAL similaire au suivant:
{
"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"
}
]
}
Ce pipeline lit dans un LAS, le recadre dans une étendue UTM spécifiée, puis effectue un filtre qui marque tous les points périphériques, puis effectue un deuxième filtre qui conserve uniquement les points non périphériques (c.-à-d. Le drapeau Classification! = 7), puis exporte vers un GeoTIFF d'une résolution de 1 m. Le filtre statistique effectue un calcul de la distance moyenne du plus proche voisin pour tester si un point est «trop loin» de ses voisins et donc une valeur aberrante.
De la documentation :