Статьи

Ускоряем заполнение таблицы атрибутов в QGIS

ГИС
Время прочтения: 5 минут
Версия QGIS на скриншотах: 3.42

О чем эта статья

В этой статье вы узнаете, как можно ускорить работу с таблицей атрибутов — например, парой кликов заполнить колонку в слое с тысячами объектов либо исправить кучу ошибок в уже имеющихся данных. Если же вы просто занимаетесь векторизацией, то узнаете, как автоматически заполнять нужные поля, не печатая каждый раз вручную один и тот же текст.

Автоматически заполняем все строки одной колонки определенным значением

Заполнять огромное количество строк одинаковым значением — нередкая задача для ГИС-специалиста, которая может быть сложной для новичков. Сделать это можно быстро, но есть пара нюансов, которые необходимо знать, чтобы успешно выполнить эту задачу.
Чтобы заполнить одинаковыми значениями строчки в существующей колонке, открываем таблицу атрибутов слоя: нажимаем правой клавишей мыши на слой и выбираем «Открыть таблицу атрибутов» (можно также использовать клавишу F6). Далее на верхней панели ищем значок в виде счет — «Калькулятор полей» и выбираем его.
Чтобы обновить значения в существующей колонке, нужно поставить галочку напротив «Обновить существующее поле», далее выбираем интересующий слой, а в редакторе выражений пишем нужное нам значение.
ВАЖНО! Если вы хотите ввести текст, то обязательно ставьте с двух сторон одинарные кавычки (‘), как на скриншоте. Если вы напишете просто слово, то программа выдаст ошибку. Единственное исключение — если вы напишете число, программа распознает его и заполнит им колонку.
QGIS в шоке от текста без кавычек, поэтому раскрашивает его разными цветами в надежде, что вас это устроит и вы от него отстанете
Если же вам, наоборот, нужно очистить колонку от всех значений, то это можно сделать так же через обновление колонки, но тогда нужно в редакторе выражений ввести код, состоящий из двух одинарных кавычек: ‘ ’.
Вводить код можно также в поле, которое появляется, как только вы сделаете слой редактируемым. Выбираете колонку, в которую вносите изменения, в пустом поле пишете код, после чего нажимаете «Обновить все». Главный минус — очень маленький шрифт кода в поле, при котором иногда сложно понять, сколько кавычек стоит.
Важно! Если вы ограничите текст парными кавычками, то программа тоже выдаст ошибку, так как она будет искать колонку с таким названием.

Заполнение колонки значениями из другой колонки при создании слоя

При создании колонки можно сразу внести в нее определенное значение, либо же значения из другой колонки. Последнее часто актуально, если у нас есть колонка, где указаны числовые значения, с которыми нужно проводить вычисления, но тип колонки не числовой, а текстовый, и QGIS не может проводить с ней математические операции и использовать некоторые функции.
Для того чтобы создать колонку и заполнить ее значениями из другой, нужно открыть таблицу атрибутов и зайти в калькулятор полей, так же как и при обновлении колонки.
Затем ставим галочку напротив «Создать новое поле» и придумываем название для нового поля. Лучше всего, чтобы название было латиницей и без пробелов.
Затем выбираем тип поля. Если хотим делать вычисления или использовать колонку для вычислений, ставим тип поля «Целое число» или «Десятичное число». Если просто записываем данные, то выбираем тип «Текст». Ниже не забудьте указать размер поля — это максимальное количество символов, которое можно будет в него записать.
Чтобы брать значения из колонки, пишем в редакторе выражений название колонки в двойных кавычках. Можно также выбрать поле из меню справа, если не хотите тратить время на ввод названия вручную.

Автоматически заполняем значения при векторизации

Если вы начинающий ГИС-специалист, то одно из первых заданий, которое вам могут доверить — это: «Перенеси с этой карты все дороги/поля/леса в слои, как нам нужно». И, скорее всего, вам надо будет не только отрисовывать объекты, но и заполнять какие-нибудь атрибуты.
Вы, конечно, можете рисовать объект и каждый раз заполнять колонки, а можете сделать так, чтобы они заполнялись автоматически, если это значение не уникально для каждого объекта.
Допустим, нам нужно отрисовать по космоснимку все улицы в населенном пункте и помимо геометрии дать уникальный номер для каждой улицы, а также указать ее тип и дорожное покрытие.
Типичная русская глубинка, более 90% улиц с грунтовым покрытием. Писать это каждый раз может отвлекать от медитативного кликанья точек.
Чтобы настроить автоматическое заполнение полей при векторизации, правой клавишей мыши щелкните на слой, выберите «Свойства слоя», а дальше «Формы полей».
Дальше кликаем на интересующее наименование колонки в таблице атрибутов и справа ищем поле «Значение по умолчанию», куда в одинарных кавычках записываем то значение, которое хотим автоматически заполнить для каждого объекта.

Приводим в порядок таблицу атрибутов

В суровом мире работы с любыми данными их часто надо приводить в порядок, чтобы с ними можно было работать, и ГИС не является исключением. Я как-то в ковидные времена занимался анализом типов землепользования по данным Роскадастра по Туле. В те времена вид использования земельного участка для индивидуального жилого дома был записан более чем сотней разных способов: орфографические ошибки, разные формулировки, двойные пробелы.
Для того чтобы привести в порядок такое, необходимо использовать различные функции, которые не просто перепишут все данные во всех колонках, а точечно исправят ситуацию. И одной из таких функций является replace.
Эта функция позволяет заменить определенное значение другим, причем она может менять часть строки, например заменить двойной пробел одинарным. Сейчас покажу, как она работает на примере.
Допустим, нам нужно в колонке с названием улицы поменять слово «улица» на «ул.» - это часто бывает полезно, чтобы подписи занимали меньше места. Как это можно сделать?
Как и при обновлении колонки, заходим в Калькулятор полей, выбираем нужно поле и пишем код, который имеет вид:
replace(“название колонки, в которой меняем названия”, ‘что хотим поменять’, ‘чем хотим поменять’)
Внизу окна калькулятора полей можно посмотреть результат работы кода
Replace — не единственная функция, которая помогает приводить значения в порядок. Больше про работу функций можно узнать в документации. Начать советую с left, right и concat, они одни из самых часто используемых.

Что дальше

При работе с таблицей атрибутов очень помогает понимание того, как работают базы данных, какие бывают типы данных, как выбирать определенные значения и редактировать только их. Мне в свое время очень помогло в этом изучение баз данных и PostgreSQL. SQL, кстати, очень похож на язык запросов в QGIS, временами они даже идентичны. Слои — это те же таблицы, только у них есть невидимые нам колонки с координатами.
Базы данных — ориентированная на работу с таблицами наука, и уже на начальном этапе узнаешь, как правильно создавать колонки и почему возникают некоторые ошибки при работе с таблицами атрибутов в QGIS. Бонусом к этому идут полезные навыки по выборке нужных объектов и по объединению данных из разных таблиц. Все аналогичные механизмы есть и в QGIS, так что если вам вдруг и не пригодится умение работы в PostgreSQL, вы все равно вырастете как специалист просто благодаря расширению кругозора и использованию аналогичных механик.
Материал подготовил Александр Зуев