В Mapinfo Pro Advanced 2019.3 будут добавлены новые инструменты обработки и анализа данных лидарной съемки для измерения покрытия, плотности и высоты лесного полога. В других ГИС расчет этих параметров включает в себя несколько этапов и промежуточные растры, в отличие от MapInfo Pro, где подобные операции сведены к минимуму. В данной статье рассмотрим новые возможности подробно.
Входные данные
В качестве входных данных используются форматы *.LAS / *.LAZ. Теоретически количество точек, которые могут быть обработаны за один раз, не ограничено, тем не менее, следует иметь в виду, что для качественной обработки, например, миллиарда точек и более, вам потребуются значительные мощности аппаратных ресурсов, чтобы сделать это качественно.
MapInfo Pro автоматически попытается определить систему координат данных из файла, которая, как ожидается, будет находиться в проекции, подобной UTM. Проекции в геодезических системах координат в настоящий момент не поддерживаются. При необходимости вы также можете ввести систему координат вручную. Обратите внимание, что выходной растр будет находиться в той же системе координат, что и входные точки, и в этих операциях не поддерживается перепроецирование точечных данных.
Программа автоматически выберет канал «Z» (т.е. высоту). Это сделано только для того, чтобы программное обеспечение корректно работало на данном этапе технологической цепочки - операции анализа полога никоим образом не зависят от этого выбора канала.
Выходные данные
Выходные данные во всех случаях представляют собой растр в формате MRR. Если требуется, чтобы выходные данные были в другом формате, то по завершении преобразования вам придется выполнить операцию конвертации - из MRR в нужный растровый формат.
Для выходных данных можно установить кодек сжатия и уровень сжатия, а также, при желании, использовать предиктивное кодирование. На выбор предлагаются только кодеки без потерь, так что качество данных никогда не ставится под угрозу.
Методология
Все три операции основаны на определении и подсчете возвратных сигналов (отражений) LiDAR, приходящих от земли (далее называемых GND), и растительности (далее называемых VEG). Отсюда следует, что отраженные импульсы LiDAR должны быть классифицированы, и что наилучшие результаты будут получены, когда отражения от земли и растительности будут четко идентифицированы и зарегистрированы с соответствующими классификационными кодами.
Пользователь должен указать классификационные коды, которые представляют землю, и классификационные коды, которые представляют растительность. Для каждой категории можно выбрать один или несколько кодов, а если вы используете нестандартные коды, то их можно ввести вручную. Если данные LiDAR содержат коды расширенной классификации, вы можете указать для операции использование расширенного, а не стандартного канала классификации.
Параметр «Правила класса» содержит запасной вариант, если ваши данные LiDAR не классифицированы должным образом. Обычно вы выбираете «Земля и растительность», чтобы указать коды классификации и для GND и для VEG. Если же вы выберете правило класса «Земля», то вы укажете только коды классификации земли. Вы можете использовать эту опцию, если ваши данные LiDAR были классифицированы только частично и были идентифицированы только отражения от земли (что происходит довольно часто). В этом случае операции будут подсчитывать отражения от земли, а затем рассматривать все отражения, которые не относятся к земле, как растительность. Очевидно, что в реальности дела обстоят не совсем так, поэтому результат придется интерпретировать с осторожностью. Скорее всего покрытие и плотность, вычисленные в этом случае, будут завышены, потому что будет больше отражений «растительности». Точно так же, если вы выбираете «Растительность», то указываете только классификационные коды растительности, при этом все результаты, которые не определены как растительность, будут априори считаться землей. В этом случае можно ожидать, что показатели покрытия и плотности будут занижены.
Фильтрация
При вводе данных LiDAR, мы выбираем тип отражения на основе фильтра. Фактически, единственное различие между операциями расчета покрытия деревьями и плотности деревьев - это фильтр, отбирающий отражения для обработки, правила отбора которого жестко запрограммированы - коды классификации были утверждены Американским обществом фотограмметрии и дистанционного зондирования (ASPRS) для форматов LAS 1.1, 1.2, 1.3 и 1.4.
При работе с лидарными данными часто возникает ситуация, когда точки попадут сразу в несколько категорий классификации. Эти отражения имеют специальные обозначения, сверх значений, предусмотренных традиционной классификацией: синтетическая (Synthetic), ключевая (Key Point), подлежащая изъятию (Withheld) и перекрываемая (Overlap). Мы не учитываем синтетические отражения в операциях расчёта покрытия и плотности, но используем их при расчете высоты. Мы принимаем ключевые и перекрываемые точки во всех операциях, но отклоняем во всех операциях точки, подлежащие изъятию.
Кроме того, мы можем применять фильтры, которые ограничат используемые отражения по определенному углу сканирования, интенсивности или значению Z в определенных диапазонах. По умолчанию ни один из этих фильтров не используется, и их нельзя применить через пользовательский интерфейс MapInfo Pro. Если же вы выполняете эти операции программно, то вы сможете включить их.
Если вы указываете классификационные коды и для земли и для растительности, то все отражения, которые имеют классы за пределами поставляемого набора будут отклонены. Если же вы указываете классы только для чего-то одного, то будут рассмотрены все отражения независимо от классификации.
Каждый лазерный импульс LiDAR будет генерировать одно или несколько отражений. Другими словами, лазер может пройти сквозь первый объект и попасть в другой. Оба попадания будут генерировать измеримый возвратный импульс и будут записаны в файл LAS. Так, часто лазерный импульс проходит сквозь растительность и падает на землю.
Чтобы рассчитать покрытие деревьев, используется только первое отражение лазерного импульса, чтобы идентифицировать самые высокие объекты на пути лазера. Чаще всего это будет именно растительность. Если же первое отражение классифицируется как "Земля", это означает, что в этом месте находится голая земля, без растительности.
Чтобы рассчитать плотность деревьев, используются все отражения импульса. Это означает, что подсчитывается количество отражений от растительности, и количество отражений от земли. Отношение отражений от растительности к отражениям от земли является косвенным показателем плотности растительности в пределах интересующей нас области.
Чтобы рассчитать высоту деревьев, также используются все отражения импульса. Все отражения от земли используются для построения модели поверхности земли, а отражения от растительности экранируются таким образом, чтобы сохранялась максимальная разница между высотой растительности и поверхностью земли. В лесных районах можно не указывать никаких других классификаций “твердой поверхности”, кроме земли. Но в городских районах в данном случае такие объекты, как здания и дороги, также будут приняты за землю.
Поэтому при считывании лазерного импульса сначала сопоставляются классы. Затем проверяется, что отражение не будет отклонено из-за специальных обозначений или каких-либо правил фильтрации. При поиске "первого" отражения, ищется первое попадание лазера, которое проходит классификацию и другие условия. Другими словами, это может быть не самое первое попадание лазера, но это первое отражение, которое соответствует нашим конкретным критериям.
Покрытие деревьями
"Покрытие деревьями" или, как его еще называют - проективное покрытие, измеряет процент исследуемой площади, которой кроны деревьев закрывают землю. Каждая ячейка растра будет заполнена значением от 0 до 100, представляющим процент покрытия крон деревьев над площадью этой ячейки. На базовом уровне разрешения процент округляется до ближайшего целого числа.
В растре хранятся 32-битные значения с плавающей запятой, поэтому процент, отображаемый на обзорных уровнях, может быть дробным, а не целым. Уровни разрешения обзора генерируются с использованием типа значения диапазона «Дискретный», который гарантирует, что даже когда недопустимые ячейки присутствуют без значения, среднее значение ячейки является пространственно точным. Фактически, недопустимым ячейкам присваивается нулевое значение для усреднения. Это означает, что статистический анализ покрытия на уровне обзора вернет тот же результат, что и ячейки базового уровня, которые использовались для заполнения этого уровня обзора.
Процент покрытия рассчитывается как (100 * VEG) / (GND + VEG), где VEG - это количество отражений растительности, а GND - количество отражений земли. Поскольку учитываются только первые отражения, получается приблизительное отношение растительности к голой земле.
Покрытие можно вычислить, рассматривая отражения, которые пространственно ограничены границей каждой ячейки, или же алгоритм может учитывать отражения в радиусе от центра каждой ячейки. Этот параметр устанавливается с помощью опции «Интеграция», которая может иметь значение «По ячейке» или «По радиусу». Во втором случае вы должны указать радиус в горизонтальных единицах системы координат (обычно в метрах или футах). Вы можете добиться более гладкого результата, включив опцию «Сглаживание». В этом случае применяется взвешивающий коэффициент четвертой степени, который сужает долю образцов, находящихся дальше от центра ячейки.
Если в ячейке или в пределах указанного радиуса от центра ячейки нет подходящих отражений, то по умолчанию значение ячейки будет записано как недопустимое и пустое. При желании можно включить опцию «Сделать пустые нулями» и заполнить эти ячейки нулем, что, соответственно, будет означать отсутствие покрытия, отсутствие плотности или нулевую высоту растительности. В результате вы увидите некоторое количество отступов по краям выходного растра. MRR - это всегда набор тайлов, и эти тайлы будут заполняться нулевыми значениями. В таком случае вам, вероятно, придется обрезать выходной растр.
Плотность деревьев
"Плотность деревьев" измеряет густоту растительности. Каждая ячейка растра будет заполнена значением от 0 до 100, представляющим процент плотности растительности на площади этой ячейки. На базовом уровне разрешения процент округляется до ближайшего целого числа.
В растре хранятся 32-битные значения с плавающей запятой, поэтому процент, отображаемый на обзорных уровнях, может быть дробным, а не целым. Уровни разрешения обзора генерируются с использованием типа значения диапазона «Дискретный», который гарантирует, что даже когда недопустимые ячейки присутствуют без значения, среднее значение ячейки является пространственно точным. Фактически, недопустимым ячейкам присваивается нулевое значение для усреднения. Это означает, что статистический анализ плотности на уровне обзора вернет тот же результат, что и ячейки базового уровня, которые использовались для заполнения этого уровня обзора.
По сути, измерение того, насколько сложно лазерным лучам LiDAR проникнуть через кроны деревьев к земле, является показателем плотности деревьев.
Процент плотности рассчитывается как (100 * VEG) / (GND + VEG). Поскольку учитываются все отражения, это соотношение является показателем плотности растительности.
Высота деревьев
"Высота деревьев" измеряет высоту растительности над поверхностью земли. Для этого алгоритм сначала строит модель поверхности земли, а затем находит в каждой ячейке растра максимальную высоту любой растительности над поверхностью земли.
Первоначально все отражения от земли используются для построения триангулированной модели поверхности земли. После этого результаты растительности в каждой растровой ячейке анализируются, чтобы найти максимальную высоту растительности над поверхностью земли, вычисленную по треугольной сети путем линейной интерполяции в центре ячейки. Высота обрезается таким образом, что она всегда была больше или равна нулю.
В отличие от других операций, высота всегда вычисляется из возвращаемых значений, расположенных в пределах пространственной границы каждой ячейки растра.
Технологический процесс
Понимание технологии обработки может помочь вам, если вы попытаетесь обработать большие объемы данных с ограниченными вычислительными ресурсами.
Данные LiDAR импортируются из предоставленных файлов LAS или LAZ. Этот процесс импорта кэширует точечные данные и пространственно сортирует их. Кэш - это своего рода растр, и, если это возможно, он сохраняется в памяти. Но если кэш растровых листов заполнится, система начнет записывать точечные данные во временный файл. Чтобы максимизировать производительность, желательно иметь как можно больше оперативной памяти, чтобы обеспечить сохранение кэша именно в ней. Если такой возможности нет, то лучше открыть файл временного кэша на быстром твердотельном накопителе SSD с большим количеством свободного места. Обратите внимание, что вам необходимо убедиться, что MapInfo Pro выделяет память для тайлового кэша. Это можно сделать в диалоге настроек растра в меню PRO.
Все операции являются многопоточными и будут выполняться быстрее на многоядерном процессоре. Однако, в настоящее время ни одна операция не будет выполняться более чем в 16 потоков, поэтому нет необходимости в наличии более 16 ядер процессора. По мере формирования выходного растра он будет храниться в тайловом кэше, конкурируя за место с точечным кэшем. Если в кэше нет места, вы можете увидеть, что он записывается в выходной MRR постепенно. Если вы хотите обрезать выходной растр, то это можно сделать как часть операции анализа полога, что более эффективно, чем обрезать растр впоследствии с помощью отдельной операции обрезки.
Когда вы запускаете операцию расчета покрытия или плотности деревьев, у вас есть возможность интеграции по радиусу или же по ячейке. Для достижения максимальной производительности интегрируйте по ячейке и используйте ячейку большого размера, тем не менее помните, что размер ячейки влияет на уровень шума в финальном растре. Если область интегрирования слишком мала, выходной растр будет зашумленным. Если область интеграции слишком велика, растр будет гладким, но вы потеряете детали. Важно тщательно выбирать размер ячейки и радиус интегрирования, чтобы оптимизировать время обработки и результат вычислений.
В операции расчета высоты деревьев есть параметр под названием «Размер участка». Он может быть установлен от 1 до 5. На 1 он использует меньше памяти, но требует больше времени для обработки. На 5 он использует больше памяти, но работает быстрее. Если вы не запускаете обработку на совсем старом ПК, то все время ставьте его на 5.
При вычислении статистики для выходного растра и генерации обзоров, обе эти операции требуют чтения всего базового уровня разрешения растра. Поэтому желательно, чтобы растр умещался в памяти, в противном случае лучше, если выходной растр будет записываться на быстрый SSD. Производительность на этом этапе во многом зависит от используемого кодека сжатия. Если вы используете LZMA и уровень сжатия 5 или выше, можно ожидать гораздо более низкой производительности.
Заключение
Мы надеемся, вам понравятся новые инструменты обработки данных LiDAR . И хотя они и предназначены для анализа лесного полога, вы можете использовать их и для решения других задач, применив другие классификаторы. Например, указав вместо «Растительности» классификатор «Здания», вы можете использовать этот инструмент для определения высот зданий, а не деревьев.
Построение и анализ поверхности в Mapinfo Pro Advanced |
Создание растра в Mapinfo Pro Advanced |
Обзор Mapinfo Pro Advanced |