6  Пространственные операции

Загрузите файлы!

Для выполнения заданий из раздела “Запросы” загрузите файлы по ссылке 1 или ссылке 2 и создайте новый проект:

  • Создайте новую папку проекта под названием “Раздел 6” а так же новый проект в QGIS;
  • Загрузите файлы в QGIS;
  • Задайте систему координат проекта EPSG:32646;
  • Сохраните файл проекта в папку проекта.

Панель меню “Вектор” > “Геообработка” содержит основные инстументы для изменения векторных объектов (Рисунок 7.4).

Рисунок 6.1: Инструменты геообработки

Результатом применения каждого инструмента является временный векторный слой с измененной геометрией. Временные слои помечены иконкой 1 справа от названия (см. Рисунок 6.2).

Рисунок 6.2: Временный слой “Буферизовано” в панеле слоев

Если требуется сделать временный слой постоянным, в контекстном меню слоя выберите пункт “Сохранить на диск…” и задайте параметры сохранения, в противном случае, после закрытия проекта данные слоя будут потеряны. При попытке закрытия проекта с несохраненными временными слоями появится соответствующее предупреждение (Рисунок 6.3).

Рисунок 6.3: Предупреждение о несохраненных временных слоях

6.1 Изменение системы координат слоя

В некоторых случаях требуется изменить систему координат слоя. Например, для построения буфера (см. Глава 6.2) в метрах (а не градусах) тебуется спроецированная (плоская) система координат. Изменить систему координат векторного слоя возможно при помощи инструмента “Вектор” > “Управление данными” > “Перепроецировать слой…”. В пункте “Исходный слой” задается слой, проекцию которого необходимо изменить. Пункт “Целевая система координат” определяет новую систему координат. По умолчанию инстумент создает временный слой (Рисунок 6.4).

Рисунок 6.4: Инструмент “Перепроецировать слой”
Задание 6.1

Перепроецируйте слой “rivers” в систему координат “EPSG:32646 - WGS84 / UTM zone 46N”. Переименуйте появившийся временный слой из “Перепроецировано” в “rivers UTM” и сохраните в папку проекта.

6.2 Создание буферной зоны

Инструмент “Вектор” > “Геообработка” > “Буферизация…” создает область заданного радиуса вокруг каждой геометрии слоя (буферная зона или буфер). Единицы измерения радиуса (задается в пункте “Расстояние”) будут зависить от системы координат слоя. В географической системе координат радиус задается в угловой мере (градусах), что не очень удобно. Поэтому для построения буфера в линейной мере (метрах, километрах и т.д.), сначала проводят перепроецирование в “плоскую” (спроецированную) систему координат (это действие было выполнено в предыдущем Задание 6.1), после чего строят буфер заданного радиуса. Чек-бокс “Результат объединения…” определяет будет результат представлен объединенной геометрией или отдельными геометриями для каждого объекта (Рисунок 6.5).

Рисунок 6.5: Инструмент “Буферизация”
Задание 6.2

Постройте буферы радиусом 100 метров вокруг рек (слой “rivers UTM”). Слою буферных зон задайте название “буфер рек 100 м”. Результат выполнения задания изображен на рисунке ниже (Рисунок 6.6).

Рисунок 6.6: Результат применения инструмента “Буферизация”

6.3 Инструменты геообработки

Часто требуется обрезать один слой по границам другого. Для выполнения такой операции применяется инструмент “Вектор” > “Геообработка” > “Обрезать…”. Алгоритм обрезает “Исходный слой” по границам “Слоя наложения”. В результате будут сохранены только те части исходного слоя, которые пересекаются со слоем наложения (Рисунок 6.7).

Рисунок 6.7: Инструмент “Обрезать”
Задание 6.3

Создайте слой частей выделов, которые попадают в стометровые буферные зоны вокруг рек. Для этого, по примеру выше, примените инструмент “Обрезать…” к слоям “videl” и “буфер рек 100 м”. Сохраните временный слой на диск под названием “Части выделов в водоохранной зоне”. Результат выполнения задания приведен на рисунке ниже (Рисунок 6.8).

Рисунок 6.8: Применение инструмента “Обрезать”

Похожим на инструмент “Обрезать” функционалом обладает инструмент “Вектор” > “Геообработка” > “Пересечение…”. Однако, если первый просто обрезает по границе, инструмент пересечение так же копирует атрибуты слоя наложения в исходный слой. Воспользуемся инструментом “Пересечение” что бы определить к водоохранным зонам каких рек принадлежит та или иная часть выдела. На данный момент в проект имеется слой “Буфер рек 100 м” в атрибутах которого присутствует поле “name”, определяющее к какой реке относится тот или иной буфер (это поле было наследовано из слоя rivers) (Рисунок 6.9 (a)). Используем слои “videl” и слой “Буфер рек 100 м” в инструменте “Пересечение” (Рисунок 6.9 (b)). В настройках инструмента возможно задать поля исходного слоя и слоя наложения, которые останутся в результирующем слое (по умолчанию выбраны все поля). В исходном слое выберем поля: “fid”, “kvartal”, “videl”, “zapax_1_ha” (Рисунок 6.9 (c)). В слое наложения выберем поле “name” (Рисунок 6.9 (d)). В результате применения инструмента в панеле слоев появится новый временный слой “Пересечение”. Результат будет идентичен применению инструмента “Обрезать”, за исключением таблицы атрибутов, которая будет содержать выбранные поля одного и другого слоя.

(a) Таблица атрибутов слоя “Буфер рек 100 м”
(b) Окно настройки инструмента “Пересечение”
(c) Сохраняемые исходные поля
(d) Сохраняемые поля слоя наложения
Рисунок 6.9: Настройки инструмента “Пересечение”
Задание 6.4
  • По примеру выше, примените инструмент “Пересечение” к слоям “videl” и “Буфер рек 100 м”.
  • Полученный векторный слой сохраните на диск под названием “Результат пересечения выделов и буферных зон”.
  • Задайте стиль слоя так, что бы выделить цветом выделы, принадлежащие буферным зонам разных рек. Результат выполнения задания отображен на рисунках ниже (Рисунок 6.10, Рисунок 6.11).
Рисунок 6.10: Таблица атрибутов слоя “Результат пересечения выделов и буферных зон”
Рисунок 6.11: Применение инструмента “Пересечение”

Инструмент “Вектор” > “Геообработка” > “Разность…” проводит обратную операцию: из исходного слоя вырезаются части, пересекающиеся со слоем наложения.

Задание 6.5

Используя инструмент “Разность”, вырежите части выделов, которые попадают в стометровые буферы вокруг рек. Для этого примените инструмент “Разность…” к слоям “videl” и “Буфер рек 100 м”. Результат выполнения задания приведен на рисунке ниже (Рисунок 6.12).

Рисунок 6.12: Инструмент “Разность”

Инструмент “Вектор” > “Геообработка” > “Объединение по признаку…” позволяет объединить объекты с одинаковыми атрибутами. Например, он дает возможность создать границы лесных кварталов из слоя выделов. Для этого в качестве “Исходного слоя” выбирают слой выделов, в пункте “Поля классификации” выбирают поле для объединения объектов (“kvartal”) (Рисунок 6.13). В результате применения инструмента, границы выделов с одинаковым номером квартала будут стерты и таким образом образуют квартальную сеть.

Рисунок 6.13: Настройки инструмента “Объединение по признаку”
Задание 6.6

По примеру выше, объедините выделы в слое “videl” по полю “kvartal”. В результате должен появиться новый временный слой с границами кварталов (см. Рисунок 6.14). Сохраните слой на диск под названием “kvartal”.

Рисунок 6.14: Результат применения инструмента “Объединение по признаку”

6.4 Подсчет длины, площади и периметра геометрий.

Программа QGIS позволяет совершить автоматический расчет площади, периметра и длины геометрий. При таком расчете важно обратить внимание на единицы измерения величин. Единицы измерения длины (так же как периметра и площади) зависят от настроек проекта. Для их изменения перейдите в пункт меню “Проект” > “Свойства” > во вкладке “Общие” найдите раздел “Измерения”. Пункты “Единицы измерения расстояния” и “Единицы измерения площади” задают соответствующие единицы измерения.

Задание 6.7

Перейдите в пункт меню “Проект” > “Свойства” > во вкладке слева “Общие” найдите раздел “Измерения” (см. Рисунок 6.15). Пункты “Единицы измерения расстояния” укажите “метры” в пункте “Единицы измерения площади” укажите “гектары”. Примените изменения.

Рисунок 6.15: Настройка единиц измерения проекта

Для подсчета длины геометрий, в таблице атрибутов создают новое поле (тип поля целое или десятичное число) и заполняют его выражением $length которое вычисляет длину для каждой геометрии слоя.

Задание 6.8

В слое “roads” создайте новое поле “length_m” (тип поля целое число). Заполните это поле длиной каждой из дорог в метрах. Сохраните изменения в слое. Cуммарная длина дорог должна составить 17 055 м (см. Видео 6.1).

Видео 6.1: Подсчет длины дорог для слоя “roads”

Периметр и площадь геометрий вычисляются аналогично при помощи функций $perimeter и $area соответственно.

Задание 6.9

В слое “videla” создайте новое поле “perimeter_m” (тип поля десятичное число). Заполните это поле значениями периметра (в метрах) для каждого выдела. Сумма периметров выделов должна составить 335 649,9 м.

Для выполнения предыдущих заданий (Задание 6.8, Задание 6.9) использовались два действия: 1. Создавалось поле с нужным типом данных 2. Созданное поле заполнялось значениями функции ($length, $area и др.) Инструмент “Калькулятор полей” позволяет совместить эти два действия: задаются параметры поля и функция, значениями которой это поле будет заполнено.

!!! Рисунок Калькулятора полей с настройками заполнения поля area_ha

Задание 6.10

В слое “videla” при помощи калькулятора полей создайте новое поле “area_ha” (тип поля десятичное число) заполненное значением площади (в гектарах) для каждого выдела. Сумма площадей выделов должна составить 1 039,8 га.

6.5 Арифметические операции с атрибутами

После выполнения Задание 6.10 в слое “videla” будут находиться два поля с площадью. Поле “s_ha” это данные площади выдела по таксационным описаниям. Второе поле “area_ha” было создано при выполнении Задание 6.10 и содержит площади геометрий, рассчитанные автоматически. Отличаются ли эти две площади? Для сравнения двух значений создайте новое поле “diff_area” (десятичное) куда будет записана разность значений двух полей (выражение "s_ga" - "area"). По разнице можно оценить насколько значения двух полей различаются.

Задание 6.11
  • В слое “videla” создайте поле “diff_area”. Заполните это поле выражением "s_ha" - "area" для подсчета различий между площадями.
  • Создайте карту, где выделы с разностью по абсолютному значению более 0.3 га будут окрашены в красный цвет. Обртите внимание - разность может быть как положительной, так и отрицательной, для получения абсолютного значения используйте функцию abs().
  • Создайте новый макет и сохраните карту как изображение. Результат выполнения задания приведен на рисунке ниже (Рисунок 6.16).
Рисунок 6.16: Выделы с ошибкой площади более 0,3 га

Более корректно использовать относительную разность (в процентах) а не абсолютные значения. Для этого создадим новое поле “diff_area_perc” (тип поля - десятичное) и заполним его выражением abs("area" * 100 / "s_ga" - 100). Функция abs() возвращает абсолютное значение выражения в скобках.

Задание 6.12
  • В слое “videla” создайте новое поле “diff_area_perc”. Заполните это поле относительной разностью полей abs("area" * 100 / "s_ga" - 100).
  • Создайте карту, где выделы с разностью более 15 % (поле “diff_area_perc”) будут окрашены в красный цвет.
  • Создайте новый макет и сохраните карту как изображение. Результат выполнения задания приведен на рисунке ниже (Рисунок 6.17).
Рисунок 6.17: Выделы с ошибкой площади более 15 %

6.6 Кейс 6.1

Задание 6.13

Рассчитайте запас насаждений в водоохранных зонах Караульного лесничества. Выполните следующие этапы задания:

  • Постройте буферные зоны радиусом 50 метров вокруг рек (см. Задание 6.2).
  • Создайте новый слой, содержащий части выделов, попадающих в водоохранные зоны (см. Задание 6.4).
  • Рассчитайте площади частей выделов, попадающих в водоохранные зоны. Для этого создайте новое поле “area_buffer_ha”, заполните его площадью частей выделов (в гектарах) (см. Задание 6.10).
  • Рассчитайте запас для частей выделов. Для этого создайте новое числовое поле “zapas_buffer”, заполните его произведением новой площади выдела (поле “area_buffer_ha”) и запаса на 1 га (поле “zapas_1ga”) (см. Задание 6.11).
  • Сохраните таблицу с запасами в водоохранной зоне как табличный файл Excel (.xlsx). Для этого в контекстном меню слоя выберите пункт “Экспорт” > “Сохранить объекты как…”, после чего укажите необходимый формат и сохраните файл в папку проекта.
  • Проведите подсчет суммарного запаса в водоохранных зонах, запас должен быть равен 15 279,11 \(м^3\).