Consiglierò PDAL la libreria di astrazione dei dati puntuali. Ho avuto un buon successo usando PDAL per un problema di filtro simile. Mi piace PDAL perché è open source, fornisce supporto Python e mi facilita la riproduzione dell'elaborazione e il monitoraggio dei miei parametri di filtro. Mi piace anche perché ha "condutture" in cui è possibile concatenare più passaggi (ad esempio ritagliare quindi filtrare quindi esportare) ed eseguirli contemporaneamente. Nota che se hai nuvole di punti davvero grandi PDAL potrebbe non essere veloce come alcune altre soluzioni (LASTools, QTM, ecc.).
È possibile affrontare il problema dei punti periferici con una pipeline PDAL simile alla seguente:
{
"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"
}
]
}
Questa pipeline legge in un LAS, lo ritaglia nella misura UTM specificata, quindi esegue un filtro che contrassegna tutti i punti periferici, quindi esegue un secondo filtro che conserva solo punti non periferici (ovvero il flag di classificazione! = 7), quindi esporta in una risoluzione GeoTIFF da 1 m. Il filtro statistico sta eseguendo un calcolo della distanza media del vicino più vicino per verificare se un punto è 'troppo lontano' dai suoi vicini e quindi un valore anomalo.
Dalla documentazione :