Стандартный набор инструментов в QGIS позволяет решить множество базовых задач при обработке геоданных, не прибегая к помощи плагинов или интегрированных в QGIS инструментов других программ. Ниже представлен перечень наиболее востребованных инструментов для обработки векторных геоданных.
1. Удаление пустот внутри полигонов
При оцифровке растровых слоёв векторные часто создаются с изъянами. Один из таких изъянов – пустоты внутри полигона, который должен быть сплошным.
Инструмент "Удалить кольцо" актуален, когда таких колец не более десятка, но если их сотни, то нужен инструмент, способный удалить все пустоты сразу. Для этого в инструментах анализа находим инструмент "Удалить дырки".
В открытом окне выбираем слой с пустотами и выполняем. Появится новый очищенный слой.
2. Нумерация объектов натуральными числами
Создав слой случайных или регулярных точек, программа автоматически присвоит им порядковый номер. Проблема в том, что нумерация начинается с 0, в то время как чаще всего нумерация нужна с 1.
Исправить это можно через калькулятор полей, размещённый на верхней панели в окне таблицы атрибутов. В калькуляторе выбираем "Создать новое поле" или "Обновить существующее". Вписываем выражение для натуральной нумерации @row_number и выполняем.
В результате появилась колонка с натуральной нумерацией объектов.
3. Упрощение объектов, сглаживание углов
Необходимость сгладить острые углы также часто возникает после оцифровки растровых данных, когда векторному слою передались квадратные контуры пикселей, либо оцифрованный объект получился слишком угловатым.
На панели оцифровки выбираем "Упростить объект".
Чтобы одни углы не сменить на другие, в строке "Смещение" надо выбрать подходящий процент.
Меандры сгладились. Более подробно применении инструмента сглаживания при векторизации малого водного объекта описано в этой статье.
4. Игнорирование ошибок геометрии
После векторизации растровых слоёв выходной слой может содержать неверные геометрии – наложение объектов друг на друга, самопересечение полигонов или линий. При решении ряда задач нет надобности исправлять эти ошибки, но их наличие останавливает работу некоторых алгоритмов, делая невозможной дальнейшую работу с таким слоем.
Количество неверных геометрий можно вычислить, но их могут быть сотни, поэтому нужен способ, который позволит игнорировать ошибки.
Заходим в "Параметры" во вкладке "Установки". На панели слева переходим в раздел "Анализ". В нём открываем вкладку "Общие улучшения".
В параметре "Фильтрация некорректных объектов" будет установлено "Останавливать работу инструмента при некорректной геометрии". Надо заменить на значение "Не фильтровать".
5. Проверка топологии
Но если нужно таки выявить неверные геометрии, именуемые иначе ошибками топологии, для их дальнейшего устранения, есть инструмент "Проверка топологии", расположенный во вкладке "Вектор". Если его там нет, его нужно включить в разделе "Модули".
Имеется слой, в котором нужно выявить ошибки.
После запуска инструмента, справа появится панель, на которой надо задать правила выявления ошибок. Чтобы это сделать, жмём на обведённую красным цветом кнопку и задаём одно или несколько правил.
ОК и жмём кнопку "Проверить всё". Ошибки отмечаются красным цветом.
6. Вершины и центроиды полигонов, пересечения линий, координаты точек
- Получение вершин полигонального слоя в виде точек: "Вектор – Обработка геометрии – Извлечь вершины".
- Получение центроидов полигонов в виде точек: "Вектор – Обработка геометрии – Центроиды".
- Получение точек пересечения линий как внутри одного слоя, так и между разными линейными слоями: "Вектор – Анализ – Пересечение линий".
- Определение координат точек: "Вектор – Обработка геометрии – Добавить атрибуты геометрии". Важно учитывать проекцию, в которой производится расчёт.
- Определение количества точек в полигональном слое: "Вектор – Анализ – Подсчитать точки в полигоне".
- Определение длины всех линий одного слоя: "Вектор – Анализ – Сумма расстояний".
7. Выбор объектов в пределах полигона
Имеется полигон и объекты. Нужно отсечь объекты, находящиеся за пределами основного полигона.
"Вектор – Выборка – Выбрать по пространственному отношению". Сперва отберём точки.
"Выбрать объекты в слое" – это те объекты, которые должен содержать основной полигон – точки. А "Объекты из слоя для сравнения" – это сам полигон, в пределах которого должны быть выбраны точки. Для данной операции достаточно оператора intersect.
Точки внутри полигона выделены. Остаётся сохранить выделенные объекты отдельным слоем. Контекстное меню: "Экспорт – Сохранить выбранные объекты как".
Далее выделим полигоны. Нам нужны те полигоны, которые пересекают основной, но при этом чтобы они не обрезались по контуру основного полигона.
Вместо точек выбираем полигональный слой. Дополнительно ставим галочку на операторе cross, чтобы выделились объекты как внутри основного полигона, так и те, которые пересекли его, но не вошли полностью.
Если линии и полигоны нужно выделить таким образом, чтобы их части, находящиеся за пределами основного полигона, автоматически отсеклись, применяется другой инструмент: "Вектор – Геообработка – Обрезать".
Исходный слой – слой, который надо обрезать. Оверлейный слой – основной полигон, в пределах которого должна быть произведена обрезка.
После выполнения алгоритма линии, находящиеся за пределами основного полигона, отсеклись.
8. Матрица расстояний
Имеется один или два точечных слоя. Необходимо рассчитать расстояние между всеми точками внутри одного слоя или между точками разных слоёв.
На полигоне шириной около 345 км размещены два точечных слоя, в каждом по восемь точек.
"Вектор – Анализ – Матрица расстояний". Открыв инструмент, указываем точечные слои, расстояние между точками которых хотим определить, также указываем атрибутивное поле с нумераций и выполняем.
Создаётся единый точечный слой, содержащий 64 объекта (8*8), где указаны расстояния между всеми точками. Из таблицы атрибутов следует, что между точками №4 наименьшее расстояние.
Поскольку каждая точка одного слоя соединена с каждой точкой другого, каждый объект нового слоя включает не одну точку, а пару. Если начать перемещать точки нового слоя, они будут перемещаться парно. И выделяются они тоже парно. То, что выглядит как одна точка, на самом деле восемь точек, наложенных друг на друга. Новый слой – это не 64 точки, это 64 пары точек.
Инструмент подходит для тех случаев, когда нужно рассчитать, например, удалённость населённых пунктов от административного центра.
9. Увеличение количества узлов в линиях и полигонах
"Вектор – Обработка геометрии – Уплотнить по количеству". В окне инструмента можно задать количество узлов, которое должно добавиться между узлами исходного слоя. В результате форма объекта не изменится, но количество узлов для редактирования между каждым исходным узлом увеличится на заданное число.
10. Взрыв линии, преобразование линий в полигоны
Эта линия является единым объектом. Взрыв линии создаст слой с отдельными линейными объектами, разорвав исходный на узлах. В панели инструментов анализа инструмент так и называется "Взорвать линии".
Имеется линейный слой, на основе которого надо создать полигоны.
Инструмент "Преобразовать линии в полигоны" во вкладке "Вектор" в "Обработке геометрии" не сработает. Предположительно, причина в том, что все вертикальные и горизонтальные линии снизу и справа переходят в открытые полигоны. При запуске алгоритма из-за этих открытых полигонов возникнет ошибка, результат некорректный.
Взорвать линии также не удастся, потому что у каждой линии в данном случае всего по два узла – начало и конец. Уплотнить по количеству узлов тоже нельзя, поскольку длина открытых отрезков может различаться. Это приведёт к тому, что места новых узлов на вертикальных и горизонтальных линиях не совпадут.
В версии QGIS 3.16.1 выполнить задачу удалось с помощью инструмента "Построить полигоны", найденного в панели инструментов анализа.
Открытые полигоны и наложения одних линий на другие в этом инструменте не становятся причиной ошибок, как в инструменте "Преобразовать линии в полигоны".
Читайте нас в Telegram и ВКонтакте