Terrasolid TerraScan. Часть шестая. Проект.
Шестую часть рассказа про возможности TerraScan я решил посвятить такой важной штуке как Project (ну или проект, если по-русски).
В принципе без проекта обрабатывать достаточно большие объемы данных крайне проблематично, а главное такая обработка может привести к не очень хорошим результатам. Поэтому зачастую любые массивы лазерных данных, поступающих на обработку, всегда сопровождаются файлом проекта, который позволяет проводить обработку наиболее грамотно и корректно.
Файл проекта
Для начала приведу пример файла проекта, с которым и работает сам TerraScan.
[TerraScan project] Scanner=Airborne Storage=LAS1.2 StoreTime=1 StoreColor=24 StoreEchoLen=0 StoreParam=0 RequireLock=0 Description=Lidar.asia FirstPointId=1 BlockSize=1000 BlockGroupCount=1000000 BlockNaming=0 BlockPrefix=lidar_ Block lidar_000001.las GroupFirst=1000000 GroupCount=1000000 521000.0000 7498000.0000 521000.0000 7499000.0000 522000.0000 7499000.0000 522000.0000 7498000.0000 521000.0000 7498000.0000 Block lidar_000002.las GroupFirst=2000000 GroupCount=1000000 522000.0000 7498000.0000 522000.0000 7499000.0000 523000.0000 7499000.0000 523000.0000 7498000.0000 522000.0000 7498000.0000 Block lidar_000003.las GroupFirst=3000000 GroupCount=1000000 522000.0000 7497000.0000 522000.0000 7498000.0000 523000.0000 7498000.0000 523000.0000 7497000.0000 522000.0000 7497000.0000 Block lidar_000004.las GroupFirst=4000000 GroupCount=1000000 523000.0000 7497000.0000 523000.0000 7498000.0000 524000.0000 7498000.0000 524000.0000 7497000.0000 523000.0000 7497000.0000
Фактически файл проекта можно разделить на 2 части – шапку файла (в примере до строчки “BlockPrefix=lidar_” включительно), содержащую базовую информацию о проекте в целом, и тело файла, содержащее описание блоков, на которые разбиты лазерные данные. Особое внимание стоит уделить строчкам “GroupFirst” и “GroupCount” – они появились сравнительно недавно и, к сожалению, ломают обратную зависимость со старыми версиями TerraScan (такой проект откроется в старой версии, но вот работать с блоками не сможет).
Как создать проект
Для начала в меню “General” нажимаем кнопку “Define project”, после чего у нас откроется небольшое окошко проекта (по умолчанию пустое, т.к. проекта еще нет).
Далее в меню File выбираем пункт “New project…” и приступаем к заданию основных параметров нового проекта (по сути создаем шапку файла из примера выше).
Итак, что мы видим и что мы должны заполнить:
- Scanner. В этом пункте выбираем тип нашего сканера: воздушный (Airborne), мобильный (Mobile) или наземный (Ground based). Т.к. я зачастую работаю с воздушным сканером, то я и выбираю Airborne.
- Description. Описание проекта или же его название. Тут можно писать то, что душе угодно.
- First point id. Начальный ID-номер для лазерных точек. Нужен в случае вывода точек в форматах “Id E N Z” или “Id E N Z Pulse”, когда для каждой точки выводится уникальный идентификатор (Integer 64). Если никаких указаний на этот счет нет – оставляем 1.
- Storage. Выбираем формат данных. По умолчанию будет задаваться тот, который указан в настройках самого TerraScan в разделе “Default storage format”. Здесь стоит внимательно отнестись не только к самому формату, но и к атрибутам, которые формат способен хранить (выбрать нужные атрибуты позволяет меню, открывающееся после нажатия на кнопку “Attributes…”).
- Require file locking. Данная опция нужна только в том случае, если несколько человек одновременно работают над одним и тем же набором данных. По сути после открытия какого-либо блока через меню “Open block” файл помечается заблокированным путем создания нового файла с аналогичным именем и расширением “.LCK”, в котором прописывается имя компьютера, на котором был открыт этот файл. Более подробно о том как работает блокировка можно почитать в мануале к TerraScan. В реальной работе применение этой функции я не встречал.
- Data in. Определяет место, где будут храниться файлы с данными. Имеет два значения: “Project file directory” и “Separate directory”, т.е. либо в той же папке, где лежит сам файл проекта, либо же в отдельной указанной папке. Тут как говорится “На вкус и цвет…”, но на мой взгляд удобнее использовать опцию “Project file directory” и просто переключаться между разными версиями данных путем открытия разных файлов проекта. Плюс, к примеру, если запускать макрос через проект, то файл проекта автоматически будет скопирован в новую папку, если при запуске будет выбрана опция “Create new copy”.
- Load classes automatically. Автоматическое подключение списка классов. Если активна, то при загрузке проекта будет автоматически подключен указанный PTC. Очень удобно при работе над разными проектами с разными классификаторами.
- Load line colors automatically. Автоматическое подключение цветов для флайтлайнов. Работает аналогично опции “Load classes automatically”. Применения в реальной работе лично я не встречал.
- Load trajectories automatically. Автоматическое подключение папки с траекториями. Опять же если активна, то при открытии проекта будут подключены нужные траектории. Удобно при проведении коррекции данных разных проектов – один раз прописал и не путаешься.
- Reference project exists. Тут указывает эталонный проект, который может использоваться для сравнения точек, переклассификации и в других инструментах TerraScan.
- Default. Размер блока по умолчанию. В данном случае указывается стандартный размер блока, который может быть создан при импортировании точек. Об этом мы поговорим позднее.
- Block prefix. Префикс для новых блоков, т.е. начальная часть имени файла блока.
- Block naming. Задает название блока, по умолчанию номер, но могут также использоваться правила именования блоков, которые создаются в основных настройках TerraScan в разделе “Block naming formulas”. Зачастую в работе используются просто порядковые номера блоков.
Да, настроек у блоков достаточно много, но чаще всего используются базовые настройки, т.е. к примеру создание нового проекта может свестись к 2 пунктам:
- Задали Description, чтобы отличать один проект от другого;
- Проверили Storage, что бы он соответствовал требованиям проекта (например BIN16 с поддержкой отметок времени и цвета точек).
И все, проект готов к работе. Конечно, могут быть и отличия, но т.к. зачастую я те же блоки рисую руками (объясню чуть дальше), то никаких размеров или префиксов мне задавать не нужно, равно как и тректорий, особых PTC и т.п.
Как добавлять блоки
Эта часть работы достаточно обширная и может использовать несколько подходов при выполнении:
- Рисуем блоки руками;
- Используем автоматическое создание блоков (сеткой заданных в Default размеров);
- Генерируем блоки вдоль заданной линии с требуемыми размерами.
Ну а теперь по порядку!
Рисуем блоки руками
Для начала определимся с ответом на вопрос “Что же такое блок?”. Ответ прост – это просто некий замкнутый контур с уникальным именем. И всё. Никаких секретов нет. Поэтому если нужно просто взять и разбить какой-то массив данных на блоки, то мы можем в отдельном слое DGN-файла нарисовать набор Shape-ов, добавить внутрь каждого из них какой-нибудь текст (например номера вида 000001, 000002 и т.д.) и импортировать их в проект.
Например, вот у меня есть небольшой кусочек лазерных данных, для которых я нарисовал два блока и задал им порядковые номер 1 и 2 с нужным мне количеством нулей (это просто особенность).
Далее я выделяю мои элементы (контуры и текст) и в окне проекта выбираю пункт меню Block -> Add by boundaries…:
В окошке “Add block by boundaries” я указываю:
- File prefix. Начальную часть имени будущего блока (а соответственно и файла). Я задал “lidar_”, причем нижнее подчеркивание использовать очень удобно – оно и визуально отлично отделяет префикс от последующей части номера;
- Numbering. Тут выбираем правило нумерации. TerraScan сам может пронумеровать ваши блоки (тогда и подписывать их ручками не нужно), а может использовать существующую подпись в виде номера или строки. Я использую вариант “Selected numbers”, т.к. я сам задал блокам номера, поместив внутрь контуров текстовые элементы;
- First number. Задаем номер первого блока. В случае, если вы выбрали “Selected numbers” или “Selected strings” в пункте Numbering, то для вас этот пункт не актуален – вы уже и так задали номера, а если нумерация задается автоматически, то задать первый номер нужно обязательно.
Подтверждаем настройки добавления и смотрим что получилось:
Теперь мы можем сохранить проект через меню File -> Save project as… и приступать к нарезке данных (об этом чуть позже).
Автоматическое создание блоков
Понятно, что рисовать блоки руками для огромного площадного проекта – дело неблагодарное. Конечно, если у вас есть куча специфических требований к границам блоков, то никуда вы не денетесь – нарисуете руками, но если требований нет, то зачем тратить время на эту работу, если TerraScan может все сделать за вас?
Так вот для автоматического создания блоков вам и требуется задавать в проекте такие параметры как:
- Default
- Block prefix
- Block naming
Итак, размер. Это тот случай, когда размер реально имеет значение! Его нужно выбирать исходя из требований проекта, а также плотности данных и ПО, которое используется для обработки.
Если мы зададим слишком крупные блоки (10000 метров), то можем получить куски данных, которые дальше не сможем даже просто загрузить, например будут у нас блоки по 100 миллионов точек, которые мы как-то должны будем обработать в 32-х битном TerraScan, который и 30 миллионов с трудом перерабатывает.
Но и слишком мелкие блоки станут бедой – странно было бы разбивать 10000 квадратных километров данных на квадраты со стороной в 100 метров: блоков будет очень много, отдельные этапы обработки потребуют слишком много операций чтения/записи, что явно не очень хорошо скажется на темпах обработки, так еще и могут поползти ошибки в какой-нибудь автоматической классификации.
Далее указываем префикс для названия блоков. Тут вопрос только осмысленности и удобства. Можно использовать сокращенное название проекта, наименование СК, номер зоны или любое другое значение. А можно вообще ничего не указывать. Могу лишь посоветовать вот что:
- Не используйте пробелы для префикса. Лучше вообще не используйте пробелы в названии файлов – заменяйте их нижним подчеркиванием или тире;
- В конце префикса добавьте нижнее подчеркивание или тире. Это упрощает последующую навигацию и визуальное восприятие большого количества файлов.
Правило нумерации блоков. По умолчанию доступно только использование порядкового номера, но в настройках TerraScan можно задать формулы для нумерации. Лично я использую только порядковые номера и никогда не испытывал каких-то проблем, хотя в работе встречал и другие подходы к нумерации.
Сами блоки будут сформированы в процессе импорта данных (см. ниже). При этом нужно помнить: в случае автоматической нарезки по сетке после импорта данных необходимо обязательно еще раз сохранить проект (File -> Save project), чтобы сформированные блоки записались в файл.
Формируем блоки вдоль оси
По сути этот способ также является автоматическим, но все же он отличается от предыдущего варианта. Плюс он позволяет нам с одной стороны сгенерировать блоки автоматически, а с другой провести их редактирование перед добавлением в проект. Причем с помощью TerraScan мы можем проверить блоки на количество ТЛС и при необходимости скорректировать их, чтобы количество ТЛС укладывалось в какие-то заданные заказчиком рамки.
У этого способа есть и другой неоспоримый плюс: в отличии от сетки блоки, сформированные вдоль оси, более осмысленны и куда более удобны для последующей обработки. Это конечно только мое мнение и можно привести кучу доводов в пользу сетки, но каждому своё и всё такое.
Этот способ формирования блоков имеет два варианта:
- Create along centerline
- Create along tower string
Настройки для обоих способов практически идентичны и самое главное для нас – это определиться со значениями Block max Length и Block width, которые определяют максимальную длину блока и его ширину. Но здесь стоит обратить внимание на то, что в случае использования “Create along tower string” максимальная длина блока не совсем правильно трактуется.
Дело в том, что способ “Create along tower string” ставит границы блоков так, чтобы они проходили по вершинам опор (вертексам выделенной линии) и максимальная длина блока будет проигнорирована, если длина сегмента LineString будет ее превышать. Грубо говоря если у вас есть LineString длиной 20000 метров с наименьшей длиной сегмента 3000 метров, а при построении блока вы зададите максимальную длину в 1000 метров, то вы получите блоки, границы которых проходят строго по вертексам LineString.
Итог формирования блоков
Как видно формирование блоков не является чем-то сложным вне зависимости от метода построения. Лично я для формирования блоков использую стороннюю утилиту, которая формирует контуры блоков со специфическими требованиями, поэтому не рекомендую зацикливаться только на возможностях самого TerraScan и при необходимости обратиться к тому же VBA, чтобы создать какой-нибудь свой инструмент, который будет удовлетворять вашим личным требованиям.
Есть лишь пара моментов, которые стоит учитывать при формировании блоков:
- Не формируйте блоки со сдвоенными вертексами или слишком сложной формы. Соблюдение этого правила позволит избежать ошибок при работе различных макросов, которые запускаются с заданным перекрытием (Neighbours, см. ниже). При несоблюдении данного правила эффект может быть таким:
Пояснение картинки: черные линии, расходящиеся от блока под курсором – это границы, в пределах которых TerraScan подгрузит точки, считая их соседними (в данном случае на расстоянии 50 метров). Понятно, что часть загруженных точек будет ошибочная и в реальности не будет иметь отношения к активному блоку.
- Проверяйте блоки на дыры и перекрытия. Сама суть разбиения на блоки – получить полную копию исходных данных, но разбитых на удобные для проведения обработки части. Логично, что при этом не нужно допускать дублирования исходных данных из-за наличия перекрытий или же отсутствия данных из-за пропущенной дыры между соседними блоками.
Проверяем блоки на количество точек
Я уже писал выше о том, что размер блока имеет достаточно большое значение. При этом речь идет не только о длине или ширине блоков, но и о количестве ТЛС в блоке. Да, сейчас в эпоху 64-битных систем, большом количестве оперативной памяти и ее относительной доступности, можно на полном серьезе пренебрегать какими-либо проверками, ведь если вы работаете на компьютере с 64Гб оперативной памяти, то сложно представить каким же должен быть блок, чтобы в эту самую память не поместиться.
Но дело всё в том, что считать точки в память – это только часть проблемы. Главное мы должны иметь возможность работать с этими точками, быстро их классифицировать, отрисовывать и проводить другие операции. Поэтому так или иначе размер блока должен хоть как-то проверяться и не выходить за какие-то разумные пределы.
Для проведения такой проверки TerraScan предлагает нам инструмент Design Block Boundaries. По сути этот же инструмент может использоваться и для построения блоков на основании линий, которые будут ограничивать области будущих блоков, однако, чаще всего этот инструмент используется для проверки уже построенных блоков.
Этот инструмент содержит целый ряд настроек:
Параметр | Что делает |
---|---|
Start from | Какие элементы будут использовать для работы
|
Line level | Доступен только в режиме Bounding line work и определяет слой, в котором находятся ограничивающие линии. |
Shape level | Слой в котором находятся готовые контуры или же в который они будут записывать если активен режим Bounding line work |
Label level | Слой для записи текстовых элементов, которые будут показывать количество точек в блоке. |
Load every | Значение “прореживания” загруженных точек. Учитывается только если есть загруженные в TerraScan точки. |
Minimum count | Минимальное количество точек в блоке. Округляется до миллионов. |
Maximum count | Максимальное количество точек в блоке. Округляется до миллионов. |
Good count | Цвет, который будет задан подписи для тех блоков, которые содержат количество точек, находящееся между Minimum count и Maximum count. |
Bad count | Цвет, который будет задан подписи для тех блоков, которые содержат количество точек, выходящее за пределы Minimum count и Maximum count. |
Результат работы этого инструмента в режиме “Shapes already drawn” можно посмотреть на рисунке ниже:
Итак, что мы имеем до и получаем после запуска:
- Блоки lidar_000001 и lidar_000002 я построил сам вдоль полета;
- Подписи “20” и “31” сформировал сам инструмент в ходе проверки блоков;
- Объем блока lidar_000001 выходит за указанные в настройках допуски (от 5 до 20 миллионов точек), поэтому подпись “31” красного цвета;
- Объем блока lidar_000002 соответствует указанным допускам, поэтому подпись “20” имеет зеленый цвет;
А теперь давайте посмотрим, что же делает Design Block Boundaries в режиме “Bounding line work”. Для этого я в слое lines нарисовал 5 линий коричневого цвета, которые ограничивают будущие блоки и запустил инструмент с настройками, которые приведены на рисунке ниже. На этом же рисунке показан результат такого запуска.
Что мы на нем видим:
- Тонкие коричневые линии я нарисовал самостоятельно, ограничив тем самым области для блоков;
- Фиолетовые контуры построил TerraScan после запуска инструмента Design Block Boundaries в режиме “Bounding line work”.
- Подписи “13” и “16” показывают количество точек в построенных блоках. При этом подпись “13” красного цвета, т.к. блок содержит только 13 миллионов, а минимальное количество задано равным 14, а вот подпись “16” зеленого цвета, т.к. второй блок будет содержать 16 миллионов точек, что хорошо укладывается в заданные рамки от 14 до 20 миллионов точек в блоке.
Если честно, то применение режима “Bounding line work” в реальной работе я не встречал никогда, поэтому и рассматриваю этот инструмент не с точки зрения построения блоков с нуля, а только как инструмент для проверки блоков на объем перед добавлением в проект.
Что можно делать с проектом?
Раз с тем как создать проект мы разобрались, то теперь необходимо определиться с тем, что же можно делать с проектом. Поэтому далее я приведу примеры операций, которые можно осуществлять с использованием проекта, а также расскажу о том какие из этих операций применяются постоянно (по сути ради них мы и готовим проект), а какие используются достаточно редко именно с точки зрения обработки лазерных данных.
Импорт лазерных данных
Самая очевидная операция из всех. Импортировать данные можно 2 способами:
- Import points into project. Позволяет импортировать конкретный список файлов;
- Import directory. Позволяет импортировать все файлы, находящиеся в указанной папке. При этом можно указать и маску для файлов, что делает такой импорт более гибким.
Вне зависимости от используемого способа TerraScan даст возможность непосредственно перед импортом указать дополнительные параметры (и даже операции) для импорта.
Параметр | Что делает |
---|---|
Coordinates | Показывает координаты первой точки в импортируемом файле. Помогает определить, находятся ли точки в правильной системе координат или нужно применить ту или иную трансформацию. |
WGS84 | Позволяет изменить систему координат с WGS84 на одну из тех, которые активны в настройках TerraScan. |
Define | Дает возможность задать трансформацию непосредственно в момент импорта. Эта кнопка активна только в том случае, если параметр Transform имеет значение “Define now”. |
Format | Фактически распознается автоматически. Если импортируются ASCII-файлы, то позволяет выбрать конкретный формат. |
Transform | Устанавливает применяемое к импортируемым данным преобразование. Помимо списка имеющихся трансформаций из настроек TerraScan может быть установлено значение “Define now”, чтобы задать нужные параметры трансформаций непосредственно в момент импорта. |
Input times | Указываем формат времени в импортируемых данных. Очень важно выбрать правильный формат в случае, если дальше потребуется какая-либо обработка с участием траекторий. |
Survey date | Дата проведения съемки. Этот параметр доступен только в том случае, если параметр Input times установлен как “GPS seconds-of-week”, а в настройках проекта указан формат времени “GPS standard time” или “GPS time”. |
Outside blocks | Что делать с точками, находящимися за пределами блоков:
|
Block overlap | Как поступать с перекрытиями блоков:
|
Only every | Если параметр активирован, то будет импортирована только каждая N-ая точка. |
Inside fence only | Импортируются только точки, находящиеся в контуре, определенном как Fence в Microstation. Соответственно такой контур должен быть создан (нарисован или задан) до начала импорта. |
Default | Позволяет указать класс для импортируемых точек. Данный параметр доступен только в том случае, если импорт производится из текстового формата, который не содержит атрибут класса. |
Line numbers | Устанавливает какую нумерацию включений необходимо использовать:
|
Scanner numbers | Позволяет выбрать способ нумерации для сканера:
|
Как видно из количества настроек операция импорта достаточно гибкая. Хотя в реальной работе большая часть из указанных настроек не используется, но тем не менее знать их назначение достаточно полезно, чтобы при необходимости провести импорт данных с какими-то отличными от исходных параметрами.
Дополнительно можно уточнить, что при импорте данных в уже существующий проект блоки будут дополнены новыми данными, а не перезаписаны с нуля.
Меню Tools
Теперь, после того как мы разобрались с импортом данных в проект, давайте посмотрим на то, что предлагает нам меню Tools.
Run macro…
Общую статью про макросы я уже писал ранее и с ней можно ознакомиться отдельно вот тут.
Запуск макросов – это самая популярная возможность проекта. Конечно, макросы можно запускать и просто так, но давайте взглянем на интерфейс запуска, который предлагает нам проект:
И вот небольшая табличка по настройкам:
Параметр | Что делает |
---|---|
Process | Для каких блоков применить макрос:
|
Macro | Файл запускаемого макроса |
Neighbours | Расстояние от границ активного блока, на котором будут загружены точки соседних блоков. |
Save points | Как поступать с результатами работы макроса:
|
Temporary | Папка для хранения временных копий в случае запуска в режиме “Temporary copy & replace original” |
Write to | Папка для записи результата в случае запуска в режиме “Create new copy” |
Run using TerraSlave | Если макрос имеет возможность запуска с использованием TerraSlave, то данная опция позволит провести обработку с его использованием. |
Fit view | Позволяет выбрать окна, в которых будут отображены загруженные для обработки точки. |
Update all views after loading | Если активна, то после загрузки блока будут обновлены все окна Microstation. |
А теперь обратим особое внимание на опцию Neighbours. На мой взгляд она является ключевой и самой важной. Именно она позволяет во многих расчетах исключить влияние краевых эффектов, т.к. будет подгружать дополнительные массивы данных. У этой же опции есть и другое предназначение: если в макросе есть операция сохранения результатов Output points, для которой установлен режим “All points”, то в результатах сохранения будут присутствовать как точки исходного блока, так и все подгруженные точки соседних блоков с учетом указанного расстояния.
Опять же можно упомянуть про TerraSlave. Данная опция может помочь вам ускорить обработку данных, если у вас есть несколько компьютеров, объединенных в одну сеть.
А вот отображение загруженных в процессе работы данных я не использую совсем.
Adjust to geoid
Данная команда позволяет провести коррекцию высот точек в соответствии с заданным геоидом. В качестве информации о коррекциях могут использоваться:
- Points from file. Как понятно из названия – точки из указанного файла;
- Selected linear chain. Выделенный элемент Microstation (Line, LineString);
- Модель TerraModeler. Любая загруженная в TerraModeler модель.
В случае работы с выделенным элементом доступен также параметр Extend, который позволяет удлинить выделенный элемент на заданную величину. Для примера влияния такого удлинения можно посмотреть на картинку ниже (в качестве выделенного элемента использовалась синяя линия, а Extend установлен равным 75 метрам):
Adjust xyz
В данном случае речь идет о коррекции точек блоков по всем трем координатам. Для коррекции используется файл, содержащий 5 полей: X, Y, dX, dY, dZ.
Если честно, то в реальной работе применение этой функции я еще не встречал.
Convert storage format
Простая операция изменения формата данных из текущего в новый указанный. При проведении такой операции стоит помнить, что изменение формата – это не просто изменение расширения файла! Поэтому стоит во-первых сделать копию исходных данных, а во-вторых помнить, что после конвертации могут быть утеряны какие-либо параметры данных (например, номер группы, цвет, вектор нормали и т.п.).
На мой взгляд, оптимальнее будет просто создать новый проект с нужным форматом данных и просто перенарезать массивы точек. Да, это потребует чуть больше времени, но зато такая операция более управляемая и понятная.
Output control report
Данный инструмент позволяет получить отчет о разнице высот между лазерными точками проекта и контрольными точками. Контрольные точки могут быть представлены в двух видах:
- Known points. Текстовый файл, состоящий из 3 или 4 полей: ID, Easting, Nothing, Elevation. Поле ID не является обязательным, но при этом может быть как числовым, так и буквенным;
- Модель TerraModeler. Любая загруженная в TerraModeler модель.
В качестве параметра Class необходимо указывать класс точек, которые будут использоваться для сравнения. Зачастую это конечно же класс поверхности земли, хотя могут быть и другие классы.
Используется этот инструмент для анализа точности данных и для расчета необходимых коррекций. Может применяться в связке с TerraMatch, о котором мы поговорим как-нибудь позднее.
Вот такой отчет будет выдан после проведения сравнения:
Пояснение картинки: я искусственно для одного блока сделал коррекцию по высоте 0.5 метров и провел сравнение с моделью исходного блока (точнее суммарная модель поверхности земли всех блоков проекта). Как мы видим в пункте Average dz указано правильное значение отличия между высотами модели и точек.
Особое внимание стоит уделять параметру “Max dz” если вы сравниваете точки с моделью. Этот параметр ограничивает максимально возможное отклонение и если бы я при сравнении указал значение этого параметра равным 0.1 метра, то в отчете я бы увидел Average dz равным 0, т.к. разница высот в 0.5 метра была бы проигнорирована.
Show statistics
Очень нужная, важная и популярная функция. Показывает статистику по всему проекту. Может работать в 3 режимах:
- Project total. Показывает общую статистику всего проекта: количество точек в каждом их классов, а также диапазон высот от самой низкой до самой высокой точки в классе;
- By block. Показывает статистику конкретного блока, при этом добавляет медианное значение высоты точек в классе;
- By flightline. Показывает статистику по каждому из включений. Набор полей как в Project total.
Часто используется для проверки результатов работы макроса. Например, если мы проводили классификацию земли, то можно достаточно оперативно найти блоки, в которых такие точки не были найдены, соответственно можно с минимальными усилиями такой блок определить и начать разбираться в причинах ошибки.
Сам отчет можно сохранить, но для каждого из вариантов отдельно, при этом в итоговом файле какие-то значения могут отсутствовать (почему так сделано – не понятно).
Check coverage
Данный инструмент позволяет провести анализ качество покрытия данными какой-либо области. Область указывается одним или несколькими выделенными контурами в Microstation, или же контурами всех блоков проекта.
Результат может представлен несколькими вариантами:
- Растровое изображение в формате TIFF. При этом имя файла изображения будет совпадать с именем блока;
- Файл с точками. Для отображения плотности покрытия может использоваться три класса. Дополнительно будет создан PRJ-файл, позволяющий работать с результатами анализа;
- Отчетом, который может быть сохранен в виде текстового файла.
Давайте посмотрим как именно работает данный инструмент на реальном примере.
Вот что мы имеем изначально:
А вот что нам показывает результат анализа покрытия фиолетового контура:
Результаты достаточно ясно показывают качество и полноту покрытия точками заданного контура. Причем стоит понимать, что в примере с точками белые области внутри контура – это полностью покрытые точками, а красные – области без покрытия.
Что мы указываем в настройках перед запуском анализа:
- Выбираем нужные нам режимы: генерацию точек, создание tiff или текстовый отчет. Можно выбрать все 3 режима сразу;
- Для точек указываем классы, которые будут использоваться для демонстрации почти покрытых областей, вероятных дырок и явных непокрытий (Almost covered, Almost hole и Hole соответственно), а также папку для записи результатов. При необходимости классы нужно заранее добавить в PTC, используемый для работы;
- Для TIFF-файлов указываем папку для записи результатов и желаемые цвета для областей за контуром, полностью покрытых областей, областей с частичным покрытием, вероятных дырок и явных непокрытий.
- Обязательно указываем класс точек для анализа покрытия. Ну или выбираем Any class, чтобы оценить полное покрытие всеми данными;
- Ну а в конце указываем параметры:
Step size – шаг анализа, который будет влиять на плотность точек в результирующих bin-файлах и размер пикселя в TIFF-ах.
Sample radius – радиус окружности, в которой будет проводиться измерение плотности точек;
Covered > – минимальное значение плотности, которое считается покрытием;
Hole < – порог плотности, ниже которого области будет определяться как дыра в данных.
Validate blocks
Данная функция проекта не имеет настроек. Служит она для проверки блоков на дублирование имен, незначительную площадь и перекрытия между блоками.
Что касается перекрытия, то данная проверка не всегда срабатывает корректно в случае, если блоки строились вручную и могут быть ложные срабатывания, но это достаточно редкое явление.
Сама функция крайне полезна для работы над проектом любого размера.
Результатом проверки будет отчет, пример которого приведен на картинке ниже:
Что мы видим в отчете:
- Два блока имеют одинаковое название ptlidar_000006;
- Один блок имеет слишком маленькую площадь покрытия в сравнении с остальными;
- Блоки 000003 и 000004 имеют перекрытие.
Как итог мы понимаем, что ошибки достаточно серьезные и требуются реальные коррекции блоков.
Merge small blocks
Эта функция доступна в последних версиях TerraScan для Microstation CONNECT. Она позволяет объединить маленькие по объему точек блоки, тем самым уменьшив их общее количество.
Для примера можно посмотреть блоки до слияния и после:
В реальной работе применение этой возможности я не встречал. Зачастую блоки готовятся один раз и далее использую в течении всей работы без изменения, вне зависимости от того как меняется количество точек в блоке. Однако, при работе с той же автоматической сеткой эта опция может быть крайне полезной, чтобы избавится от блоков, которые содержат реально очень мало точек (ведь порой получаются блоки, которые содержат просто 1 точку).
Copy from reference
Очень специфическая опция, применение которой достаточно сложно себе представить.
Что она позволяет сделать: имея текущий активный проект и некий эталонный можно провести сравнение данных и скопировать необходимые параметры точек из эталонного проекта в текущий.
Самое просто, что можно продемонстрировать – это копирование классов в случае, если точки совпадают по включению, отметке времени, интенсивности и координатам XYZ. Для чего это может понадобиться? Ну представим себе такую задачу: работают 2 специалиста – один проводит уточнение поверхности земли, а второй параллельно классифицирует крыши домов, провода и опоры ЛЭП. Далее возникает задача объединения данных. При этом оказывается, что первый специалист еще и провел операцию слияния блоков, соответственно файлы проектов не совпадают.
Как мы видим по результатам – TerraScan успешно справился с поставленной задачей и на выходе мы получили данные, в которых и поверхность земли готова, и различные здания выделены в отдельный класс.
Сценариев применения этой функции проекта можно придумать очень много, поэтому она крайне интересна для изучения и экспериментов.
Draw line boundaries
Достаточно интересная функция, которая позволяет получить контуры съемки для всего проекта. При этом контуры формируются не просто всем данным, а отдельно по каждому из включений, что позволяет легко определить места, в которых могут быть рассогласования данных.
Настройки достаточно незамысловаты:
- Class: какой класс или какие классы точек будут использоваться для построения контуров;
- Gap: если расстояние между точками одного включения больше заданного, то будет сформирован новый контур;
- Level: имеет два возможных значения – Active level, при котором готовые контуры будут записываться в активный слой, и Separate levels, при использовании которого для каждого включения будет создан отдельный слой с названием “Line № включения”
- Draw internal holes: если активировать данную опцию, то внутренние непокрытия, превышающие значение Gap, будут оконтурены отдельно.
Результат работы данной функции представлен на картинке ниже. Можно обратить внимания на маленькие “островки” внутри основных контуров – это и есть результат включения параметра Draw internal holes.
Extract color from images
Данная функция позволяет назначить точкам, содержащимся в проекте, значение цвета, полученное из подключенных в TerraPhoto изображений. Для разных форматов данных может быть извлечено и записано разное количество каналов: для Fast binary можно записать до 10 каналов, для LAS 1.4 до 4 каналов, а для стандартного формата TerraScan Binary можно записать только 3 канала.
В случае использования формата FastBinary для каждой точки также может быть записан номер изображения, который использовался при назначении ей цвета. Для других форматов подобная опция недоступна.
Так как ничего кроме готового ортофото (Ortho images) у меня нет, то я покажу только этот режим работы, хотя существуют еще два режима: Raw images для использования сырых фото, а также Raw images & color points для совместного использования сырых фото и специального файла с указанными цветами для точек.
В качестве параметров в режиме Ortho images нам доступны:
- Process: провести назначение цвета по всем блокам проекта или же только по выделенным;
- For class: точкам какого класса или классов провести назначение цвета;
- Footprint: радиус окружности вокруг точки внутри которой определяет цвет пикселей. Для воздушных данных этот параметр указывается в метрах, а для мобильных – в пикселях;
- Channels: количество используемых каналов. Т.к. у меня простые фотографии и я работаю с LAS, то я указываю стандартные 3 канала, которые идут в настройках по умолчанию.
Результат работы этой функции приведен на трех картинках ниже.
Заключение
Конечно данный пост – это прям длиннопост. Очень уж много информации получилось изложить за один раз. Но как ни странно такая маленькая штука как проект действительно требует такого подробного описания, т.к. зачастую работа над одним файлом и выполнение простейших операций классификации – это лишь вершина айсбера обработки данных лазерного сканирования и большая часть скрыта в не самых популярных и общеизвестных возможностях и опциях.
Думаю, что в будущем компания TerraSolid добавит какие-нибудь новые опции для работы с проектом и мы их конечно же обязательно изучим и рассмотрим.
Здравствуйте. При создании блоков методом along centerline в виде “сверху” блоки выглядят корректно, но в виде “сбоку” они строятся в виде “зубцов” с довольно существенным смещением по оси Z. На функционал это вроде не влияет, но все же интересно – почему так?
Еще один вопрос насчет производительности ПО. Связка MS CE + TS v19 x64 – при работе с блоками (выполнение несложных макросов и т.д.) софт работает очень медленно, ресурсы ЦП и ОП практически не задействуются (ЦП ~ 3-6% загрузки, ОП ~ 600 – 3000 МБ). Это норма или можно как-либо повысить производительность?
Здравствуйте.
При построении блоков с помощью Along Centerline TerraScan берет за основу вашу ось и фактически сдвигает ее вправо/влево на заданную величину. Соответственно где-то у вас высоты вертексов блока совпадают с высотами вертексов оси, а на границах блоков могут быть сброшены на 0-ую высоту. Лучше всего контуры блоков всегда сбрасывать на 0-ую высоту, чтобы избежать в дальнейшем ошибок логических операций над контурами.
Что касается производительности:
1. Далеко не все операции в TerraScan могут быть распараллелены и соответственно они не нагружают ЦП на 100% по всем ядрам.
2. ОП задействуется по необходимости. Если у вас в блоке 1 млн. точек и вы просто перебрасываете точки из класса в класс, то TerraScan не будет потреблять больше памяти, чем необходимо для хранения 1 млн. точек.
3. Дополнительно можете проверить настройки TerraScan, а конкретно раздел Operation. Там в поле Processor usage должно быть установлено значение, равное количеству ядер вашего ЦП.
Спасибо!
Здравствуйте. Имеется такая задача. Возможно она делаеться автоматически. Из того что выше прочел не смог понять смогу ли так сделать.
Суть задачи такова. Имеются файлы las в разных подкаталогах.
каталог “Nysa” в нем еще два каталога (папки) “Katal_1_01” и “Katal_1_02”. В них файлы “dataset1.las”, “dataset2.las”
Интересует как можно получить границы блоков описывающие набор из двух файлов las “dataset1.las”, “dataset2.las” каталога “Katal_1_01” и впоследствии присвоить этому же блоку название как у каталога “Katal_1_01”.
Действие по типу Draw bounding box.
Спасибо
Здравствуйте! Не думаю, что TerraScan способен сделать такое штатными средствами. Проект подразумевает, что вы либо должны дать уже готовые границы, либо согласиться на генерацию сетки.
Если я правильно понимаю, то вы можете создать новый проект, дать в качестве префикса название каталога, в качестве правила нумерации задать пустое правило и указать значение размера сетки, которое будет гарантированно охватывать ваш комплект данных. После импорта данных в такой проект будет сгенерирован 1 блок, который будет иметь название, состоящее только из префикса (название вашего каталога), но вот только его границы будут соответствовать сетке, а не четким границам облака точек.
Cпасибо за ответ. Помогло решить часть задачи:)
А вот интересует будет ли статья или видио на тему. EXTRACT COLOR FROM IMAGES только не с ortho a c данных мобильного сканирования MLS. C UAF есть много и там вроде как проше…
А интересует как правильно создать файлы калибровки камер (*.cal) и файла фотографий (*.iml) или использовать просто свой TXT, но с минимально необходимым набором данных вроде (Time XYZ HRP Image)
http://www.terrasolid.com/guides/tphoto/index.html?mwloadlist.php
(*.cal) – http://www.terrasolid.com/guides/tphoto/index.html?mwloadlist.php
(*.iml) – http://www.terrasolid.com/guides/tphoto/index.html?mwloadlist.php
Граматно это разместить. Корекции. Правки…
Находил что-то подобное https://www.youtube.com/watch?v=Y_-sXx384Us
но там все так быстро и все данные зарание готовы и так идеальны что увы..
А Ваш подход с конкретными выяснениями и примером всех основ очень информативен. Дает полное представление с чем работаешь. А не просто кликаеш там где покажут.
Заранее благодарствую
По TerraPhoto в ближайшее ничего не планирую. Пока только TerraScan и далее возможно что-то по TerraModeler и TerraMatch будет.
TerraMatch тоже было бы супер.
Спасибо. Будем ждать:)