Outdated version of the documentation. Find the latest one here.

Калькулятор полей

Кнопка mActionCalculateField Калькулятор полей в таблице атрибутов позволяет осуществлять расчёты на основе существующих значений атрибутов или заданных функций, например для расчёта длины или площади геометрических объектов. Результаты могут быть записаны в новую колонку атрибутов или использоваться для обновления значений существующей колонки.

Прежде чем нажать иконку «Калькулятора полей» (см. figure_attributes_3), необходимо перевести слой в режим редактирования. В появившемся диалоговом окне сначала необходимо выбрать одну из опций: «Обновить существующее поле», «Обновить только выбранные объекты» или создать «Новое поле» таблицы атрибутов, куда будут добавлены результаты вычислений.

Figure Attributes 3:

../../../_images/fieldcalculator.png

Field Calculator nix

Чтобы добавить новое поле, необходимо указать его имя, тип (целое число (integer), десятичное (real) или текст (string)), размер, и точность (только для десятичного числа), см. figure_attributes_3. Например, если задать размер поля, равный 10, а точность 3, то это будет означать, что в поле может быть записано шестизначное число, десятичная запятая и 3 знака после запятой, определяющие точность.

Секция Функции содержит все доступные операторы, а также поля и значения. Описание функции отображается в поле Описание функции. В поле Выражение отображается выражение, составленое из элементов группы Функции. Наиболее часто используемые операторы вынесены на отдельную панель Операторы.

Выберите раздел Поля и значения в списке Функции чтобы увидеть список имеющихся атрибутов. Для добавления атрибута в поле Выражение дважды щелкните по его имени в списке Поля и значения. В общем случае вы можете использовать разные поля, функции и величины при составлении выражения. Чтобы просмотреть все имеющиеся значения, выделите поле в списке, затем воспользуйтесь одной из кнопок [Загрузить все уникальные значения] или [Загрузить 10 значений]. Справа появится поле Значения полей, заполненное значениями. Чтобы добавить значение в поле Выражения, сделайте двойной щелчок по нему в списке Значения полей.

Группы Операторы, Функции, Преобразования, Строковые, Геометрические и Записи предоставляют различные функции. В группе Операторы находятся арифметические и логические операторы. В Функции — математические функции. Группа Преобразования содержит функции преобразования типов данных друг в друга. Раздел Строковые предоставляет функции обработки строк, а группа Геометрические — функции для работы с геометрией объекта. И, наконец, группа Записи содержит функции для нумерации записей таблицы. Чтобы добавить функцию в поле Выражение дважды щелкните по её имени в списке.

Приведём небольшой пример использования «Калькулятора полей». Рассмотрим процесс расчёта длины объектов слоя railroads из демонстрационного набора данных QGIS:

  1. Добавьте shape-файл railroads.shp в QGIS и нажмите кнопку mActionOpenTable Открыть таблицу атрибутов.

  2. Включите mActionToggleEditing Режим редактирования и вызовите mActionCalculateField Калькулятор полей.

  3. Активируйте флажок checkbox Создать новое поле, чтобы записать результаты расчетов в новое поле.

  4. Задайте length в качестве имени результирующего поля, «Десятичное число (real)» в качестве типа поля, укажите «Размер» поля 10 и «Точность» 3.

  5. Теперь найдите в группе Геометрические оператор $length и дважды щелкните по нему. Функция появится в поле Выражение. Теперь нажмите [OK].

  6. В таблице атрибутов теперь можно видеть новое поле length со значениями длин объектов.

Список всех доступных функций находится ниже.

column name "column name"            value of the field column name
'string'                             a string value
NULL                                 null value
a IS NULL                            a has no value
a IS NOT NULL                        a has a value
a IN (value[,value])                 a is below the values listed
a NOT IN (value[,value])             a is not below the values listed
a OR b                               a or *b* is true
a AND b                              a and *b* is true
NOT a                                inverted truth value of a
sqrt(a)                              square root of a
sin(a)                               sinus of a
cos(a)                               cosinus of b
tan(a)                               tangens of a
asin(a)                              arcussinus of a
acos(a)                              arcuscosinus of a
atan(a)                              arcustangens of a
to int(a)                            convert string a to integer
to real(a)                           convert string a to real
to string(a)                         convert number a to string
lower(a)                             convert string a to lower case
upper(a)                             convert string a to upper case
length(a)                            length of string a
atan2(y,x)                           arcustangens of y/x using the signs of the two
                                     arguments to determine the quadrant of the result
replace(*a*, replacethis, withthat)  replace this with that in string a
regexp_replace(a,this,that)          replace the regular expression this with that
substr(*a*,from,len)                 len characters of string *a* starting from from
                                     (first character index is 1)
a || b                               concatenate strings a and b
$rownum                              number current row
$area                                area of polygon
$perimeter                           perimeter of polygon
$length                              length of line
$id                                  feature id
$x                                   x coordinate of point
$y                                   y coordinate of point
xat(n)                               X coordinate of the point of an n-th line (indeces
                                     start at 0; negative values refer to the line end)
yat(n)                               y coordinate of the point of an n-th line (indeces
                                     start at 0; negative values refer to the line end)
a = b                                a and b are equal
a != b and a <> b                    a and b are not equal
a >= b                               a is larger than or equal to b
a <= b                               a is less than or equal to b
a > b                                a is larger than b
a < b                                a is smaller than b
a ~ b                                a matches the regular expression b
a LIKE b                             a equals b
a ILIKE b                            a equals b (without regard to case-sensitive)
a |wedge| b                          a raised to the power of b
a * b                                a multiplied by b
a / b                                a divided by b
a + b                                a plus b
a - b                                a minus b
+ a                                  positive sign
- a                                  negative value of a

Список Функции, а также группы Описание функции, Операторы и Выражение используюся также при создании правил для отрисовки по правилам и при создании подписей на основе выражений.