Я рекомендую PDAL библиотеку абстракции точечных данных. Я имел хороший успех, используя PDAL для аналогичной проблемы фильтрации. Мне нравится PDAL, потому что он с открытым исходным кодом, обеспечивает поддержку Python и позволяет мне легко воспроизводить обработку и отслеживать параметры фильтрации. Мне также нравится это, потому что у него есть «конвейеры», где вы можете соединить вместе несколько шагов (например, обрезать, затем отфильтровать, затем экспортировать) и выполнить их сразу. Обратите внимание, что если у вас действительно очень большие облака точек, PDAL может быть не таким быстрым, как некоторые другие решения (LASTools, QTM и т. Д.).
Вы можете решить проблему отдаленных точек с помощью конвейера PDAL, подобного следующему:
{
"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"
}
]
}
Этот конвейер читает в LAS, обрезает его до заданного экстента UTM, затем выполняет фильтр, который помечает все удаленные точки, затем выполняет второй фильтр, который сохраняет только непрямые точки (т. Е. Флаг классификации! = 7), затем экспортирует в разрешение 1 м GeoTIFF. Статистический фильтр выполняет вычисление среднего расстояния ближайшего соседа, чтобы проверить, находится ли точка «слишком далеко» от своих соседей и, следовательно, от выброса.
Из документации :