PCL: выровнять плоскость земли, но держать расстояние над землей
Из данных LiDAR я отделил наземные и незаземные точки с помощью PMF. Теперь я хочу сгладить все точки заземления (z = 0), но сохранить расстояние над землей для всех точек, не являющихся землей. Это можно сделать в LASTools с помощью LASground -replace_z.
Требуемый результат показан на изображении ниже.
1 ответ
В основном вы хотите "нормализовать" значение Z местности для поверхности земли. Вы создаете модель земли, используя свои точки заземления - например, сетку с ячейками - она же растр - удерживает интерполированное значение значения Z на земле, а затем вычитаете все точки до этого значения. Просто нарисуйте сетку поверх ограничительной рамки XY; ниже пример сетки 90 х 100:
int nRowCells = 100;
int nColCells = 90;
vector< vector <float> > grid;
for(int i=0; i < nRowCells; ++i)
{
std::vector<coord> row(nColCells, .0f);
grid.push_back( row );
}
Затем вы присваиваете каждой точке земли ячейку, используя ее координаты и разрешение ячейки.
Кстати, в LasTools это возможно для модуля "lasheight", если вы зайдете в Google, вы прочтете о том, как он работает.