Введение: в данной статье рассмотрим серию процедур по работе с облаками точек (как с готовыми объектами), для их дальнейшего использования в задачах генплана и инфраструктуры. Данную часть посвятим вопросу преобразования облака точек в ортофотоплан для его использования в обработке в дальнейшем.
1. Инициализация и первичная обработка облаков точек
Здесь мы должны переварить тот материал, который будет у нас в распоряжении. То есть сконвертировать (если это возможно), облако точек в общедоступный формат данных.
Предполагается, что предоставленное облако точек сидит в "плоских координатах". Существует 2 основных пути получения облака точек - это лазерное сканирование (наземное/воздушное), где съемка ведется сразу в прямоугольных координатах, которые при обработке пересчитываются из условных в прямоугольные другой системы координат и фотограмметрия (где идет сшивка ряда фотографий), где используются географические координаты WGS-84 и последующее преобразование результата (ортофотоплана и облака точек) в нужную СК.
1.1 Если облако точек в СК WGS-84
Встречаются ситуации, когда пользователь так и выгружает облако точек в СК WGS-84. Насколько я знаю, бесплатное ПО не умеет конвертировать подобное представление данных. Это можно сделать программно, и я, пожалуй, это как-то рассмотрю, но пока не будем трогать этот момент.
Примечание: технически, данный процесс реализован утилитой gdalwarp в составе пакета GDAL, но мы посвятим этому отдельную статью позже.
Из коммерческих программ, в базовом функционале которых есть опция преобразования координат точек при загрузке в какую-либо СК, я знаю Autodesk ReCap (преобразование только в плоские международные СК, имеющие код EPSG) и Credo 3D Scan.
2 CloudCompare - загрузка и классификация облаков точек
Имея на руках облако точек в плоских координатах, перейдем к следующей позиции - загрузку его в среду CloudCompare для обработки
CloudCompare - это большой open source проект, само приложение написано на C++ и доступно на github. Когда-нибудь позже я постараюсь написать и про него с программной точки зрения, как получу больше практики в C++.
Скачиваем последнюю версию (можно alpha-версию) отсюда и устанавливаем программу.
В случае, если облако "сидит" в любой МСК - у вас появится окно следующего вида: здесь необходимо согласиться с настройками сдвижки (оптимизация веса данных за счет хранения меньшего числа разрядов)
Если вы работаете с большими файлами, целесообразно оставлять эти опции, так как до сохранения (да и в целом, при открытии файла), всё хранится в оперативной памяти. Кроме того, если не выставлять сдвижку, скорее всего вы получите поломанную графику (будет не хватать плотности точек), так что лучше не убирайте эту позицию.
2.1 Объединение сканов в 1 файл
В нашем случае, у нас есть группа las-файлов на одну городскую улицу, которые необходимо объединить в 1 скан перед тем, как формировать на его основе растровое представление.
Примечание: программа крайне нестабильная, и не рекомендуется совершать действия с вращением облака точек до сохранения файла. Особенно это касается площадных/линейных сканов.
Примечание: внутренний формат данных программы CloudCompare формата (*.bin) стоит использовать только если применяется сдвижка. В остальном, использовать его нет смысла (результирующий размер облака точек может быть почти равен представлению облака точек в текстовом виде - форматы типа PTS/XYZ).
2.3 Фильтр точек земли
Применим к полученному облаку точек плагин, который расчленит облако точек на "точки земли" и "остальные точки". Данная опция лежит в группе "Plugins - CSF Filter".
2.4 Формирование ортофотоплана
Как правило, результат работы фотограмметрии - это сшитый ортофотоплан по набору геопривязанных фотографий, который зачастую экспортируется в формат облака точек. Бывает обратная ситуация, когда облако точек необходимо преобразовать в растр. Это может быть актуально для возможности работать в среде AutoCAD в режиме 2D-Каркас (где не видно облака точек), для большей оптимизации, либо в среде ПО, где в силу определенных факторов нет возможности загружать данные в ряде форматов.
Здесь у нас есть устанавливаемый размер точности (step), при уменьшении которого увеличивается размер будущего растра в пикселях (и в размере).
Предупреждение о числе элементов >10 000 000 можно проигнорировать
2.5 Формирование файла привязки для растра
Полученный растр (формата geotiff) теперь лежит в системе координат облака точек, но информация по системе координат в нем отсутствует.
Выгрузим файл координатной привязки используя сперва стандартный функционал Civil 3D + Raster Design, а потом - с помощью библиотеки GDAL.
2.5.1 Формирование файла привязки через Civil 3D + Raster Design
Всё. теперь наше изображение имеет файл привязки (аффинная трансформация):
2.5.2 Формирование геопривязки через консоль GDAL
Здесь нам потребуется всего лишь знать волшебную команду-скрипт для библиотеки GDAL, которая осуществит формирование TFW-файла для нашего растра:
gdal_translate -of GTiff -co tfw=yes PathToOriginRaster PathToFinishRaster
Где PathToOriginRaster - абсолютный путь к исходному файлу, а PathToFinishRaster - абсолютный путь к файлу, который мы хотим получить.
При этом пути должны отличаться (нельзя пересохранить исходный файл). Результат - сформированные пару файлов
3. Заключение
В данной статье мы с вами рассмотрели один из рабочих процессов по работе с облаками точек для задач инфраструктуры (сведение отфильтрованных "точек земли" облака точек к формату растровой подосновы). В качестве программного обеспечения, использовали приложения с открытым исходным кодом - CloudCompare и QGIS (GDAL-библиотеки).