Blog

ГИС-конвейер для извлечения объектов облака точек LIDAR | от Батрана | На пути к науке о данных

Размер скачанного файла составляет 2,2 ГБ. Чтобы распаковать файлы LAZ в исходный Las, можно использовать pylas. Извлеченный файл Las имеет размер 13 ГБ. Впечатляющая степень сжатия! Ниже показано, как распаковать файл LAZ в файл LAS в Python с помощью пакета Python pylas.

Нам пришлось вручную определить CRS (систему координат) файла облака точек, чтобы он отображался в окне просмотра QGIS. Для наложения спутниковых изображений существует множество плагинов QGIS, одним из лучших является Quick Map Services, разработанный NEXTGIS, который имеет наиболее известные URL-адреса базовых карт xyz [6]. В наборе данных, который мы используем, уже классифицировано большинство точек, и его можно отобразить с помощью легенды, как показано ниже: Пцр Пластины

Чтобы прикрепить данные облака точек LIDAR к определенной области интереса, существует множество инструментов и библиотек, таких как клип LAStools [7] или другие параметры Python, такие как PDAL. Почему нам нужно вырезать набор данных LIDAR в меньшую область интереса:

Чтобы получить объекты из точек данных LIDAR, первым шагом является преобразование трехмерных векторных точек (X, Y, Z) в растровое представление на основе сетки. Этот процесс называется растеризацией, выходным растром будет цифровая модель поверхности (DSM). а также будет содержать соответствующую среднюю высоту точек в каждом пикселе.

PDAL имеет API Python для использования в сценариях и для создания конвейеров данных из Python. Реализация API показана ниже:

В приведенном выше блоке кода объект JSON pdal_json хранит необходимое определение конвейера. Сначала мы вводим путь к файлу las как INPUT_LAS_PATH. Затем мы указываем класс ограничения, который мы хотим извлечь, — это класс №. 6, который строится. После этого мы указываем имя выходного файла как OUTPUT_TIFF_DEM и разрешение выходного изображения TIFF.

Чтобы извлечь контур здания, мы должны рассматривать DEM как двоичный файл Tiff, в котором для пикселей здания можно установить значение 1, а для данных о здании не установлено значение np.nan. Этот этап предварительной обработки затем может быть использован в другом процессе извлечения растровой формы или GDAL Polygonize для извлечения пикселей с тем же значением, что и у одного многоугольника.

Данные LIDAR хранятся в las-файле (или сжатом Laz-файле). Чтобы применить кластеризацию, давайте сначала извлечем координаты каждой точки X, Y, Z и связанный с ней класс для каждой точки, как показано ниже:

Результирующий формат данных будет представлять собой массив точек X, Y, Z, C, где x — долгота, y — широта, z — высота, а c — класс точки. В результате общее количество точек данных для интересующей области составляет 12 333 019. Чтобы начать с данных о зданиях, давайте отфильтруем только класс здания, то есть класс №. 6. В результате общее количество строительных баллов составит 1 992 715.

Вышеупомянутые точки затем можно визуализировать на фоновой карте, чтобы увидеть, как классы зданий выглядят в 2D. В этом случае каждая точка данных сохраняется как 2D-точка ГИС, хранящаяся в шейп-файле, а высота является атрибутом. Это отличается от предыдущего хранилища данных las file.

https://xmap.ai/maps/pcloud/dbscan_pcloud_3d.html

https://xmap.ai/maps/pcloud/buildings_vector.html

LinkedIn https://www.linkedin.com/in/mbatran/

[1] https://medium.com/geoai/object-extraction-from-mobile-lidar-point-clouds-with-machine-learning-cb15fcbb5597

[2] https://github.com/beedotkiran/Lidar_For_AD_references

[3] https://download.pdok.nl/rws/ahn3/v1_0/laz/C_37EZ1.LAZ

[5] https://www.cs.unc.edu/~isenburg/lastools/download/laszip.pdf

[6] https://plugins.qgis.org/plugins/quick_map_services/

[7] https://github.com/LAStools/LAStools

[8] https://pdal.io/workshop/exercisions/anaанализ/dtm/dtm.html

[8] https://github.com/google/yapf