Структура таблицы
Редактирование структуры таблицы доступно через её контекстное меню в режимах отображения «Таблица» или «Двойной вид».
После нажатия на кнопку открывается окно «Редактирование структуры», в котором отображается таблица параметров объектов слоя (наименования колонок) и их тип данных.
Создание колонки
При нажатии на кнопку в окне «Редактирование структуры» открывается окно «Создание колонки», в котором отображаются параметры, указываемые при добавлении новой колонки.
Изменение колонки
При нажатии на кнопку в контекстном меню колонки в окне «Редактирование структуры» или двойным нажатием по названию колонки открывается окно «Редактирование колонки».
Содержание окна «Редактирование колонки» для изменения свойств аналогично окну «Создание колонки».
дата
и файл
).
Типы колонок
При создании или изменении колонки доступен выбор из следующих типов данных:
- Текст – однострочный текст заданной длины;
- Целое число – целочисленное значение (
integer
); - Дробное число – дробное значение (
double_precision
); - Геометрия – геометрия объекта;
- Логический – логическое значение
true
/false
(да
/нет
); - Дата/время – дата и время (без часового пояса);
- JSON – хранение данных типа
JSON
(jsonb
); - UUID – универсальный уникальный идентификатор;
- Заголовок – специальный тип колонки, позволяющий вкладывать в неё другие колонки и таким образом создавать древовидную структуру;
- Файл – один или несколько файлов;
- Любой тип PostgreSQL – любой тип PostgreSQL, обязательно требует указания типа (
db_type
).
Геометрия
Тип данных «Геометрия» используется для указания пространственных данных. В поле «Тип геометрии» предлагается выбор из основных типов:
- Point - точка;
- LineString - линия, связывающая 2 и более точки;
- Polygon - полигон (многоугольник);
- MultiPoint - набор точек;
- MultiLineString - набор линий;
- MultiPolygon - набор полигонов.
В поле «Идентификатор SRS» указывается тип проекции, в котором представлены пространственные данные. При вводе значения появляется список подходящих проекций.
Параметр «Индекс» задается для колонок, которые должны определять геометрию объекта для отображения на карте.
Если для нескольких геометрических колонок одновременно включен чек-бокс «Индекс», то в качестве колонки для отображения геометрии на карте будет использована колонка типа «Геометрия» с кодом geom
, даже если она не является индексируемой. Если такое поле отсутствует в структуре таблицы, в таком случае колонка, ответственная за отображение объектов на карте, назначена не будет.
Параметр «Возможность значения NULL» описан ниже.
UUID
UUID записывается в виде последовательности шестнадцатеричных цифр в нижнем регистре, разделённых знаками минуса на несколько групп, в таком порядке: группа из 8 цифр
, затем три группы из 4 цифр
, и в конце группа из 12 цифр
. Итоговый идентификатор содержит 32 цифры
и занимает 128 бит
. Пример UUID в этом стандартном виде:
Любой тип PostgreSQL
Любой тип PostgreSQL, обязательно требует указания типа (db_type
) в поле «Физический тип». Типы данных в PostgreSQL описаны в официальной документации к СУБД.
Формат значений
Форматирование значений позволяет настраивать отображение данных в приложении. Данные в указанном формате будут отображаться в таблице, а также на картах и в информационных окнах объектов.
Установить и изменить форматирование данных можно для уже существующих и только создаваемых колонок таблиц. Для этого следует в поле «Формат» указать SQL-выражение
, параметры которого настроят необходимое отображение объектов.
SQL-выражения
следует заключать в одинарные кавычки.
В таблице ниже представлены примеры возможных настроек формата выводимых значений различных типов.
Тип данных | Выражение | Описание |
---|---|---|
Число | trunc($col) |
Отбрасывает дробную часть без округления |
round($col) |
Отбрасывает дробную часть с округлением | |
round($col::numeric, N) |
Округляет дробную часть до N знаков после запятой |
|
to_char($col, '999 999 999 999') |
Добавляет пробелы триадам целых чисел | |
to_char($col, '999 999 999D999') |
Добавляет пробелы триадам чисел с явным указанием дробной части | |
Примечание: Если при задании формата числа указать меньше цифр, чем значащих цифр в самом числе, то в результате будет выводиться строка из # согласно указанному формату.
|
||
concat($col, ' ₽') |
Добавляет к числу указание на единицу измерения (валюта / единица площади / и т.д.) | |
concat(round(($col *100)::numeric, 2), '%') |
Выводит дробное число как процент | |
Текст | lower($col) |
Выводит весь текст строчными буквами |
upper($col) |
Выводит весь текст заглавными буквами | |
initcap($col) |
Выводит каждое слово с заглавной буквы | |
upper(substring($col from 1 for 1)) || lower(substring($col from 2)) |
Выводит только первое слово с заглавной буквы | |
concat('Город: ', $col) |
Добавляет указание на населённый пункт (город) | |
Дата | to_char($col AT TIME ZONE 'UTC+3', 'DD/MM/YYYY') |
Выводит дату в формате ДД/ММ/ГГГГ с учетом указанного часового пояса |
Логический | cast($col as int) |
Выводит значение цифрой (0 — Нет, 1 — Да) |
cast($col as bool) |
Выводит значение как true / false |
$col
указывает на использование текущей колонки таблицы, допустима также запись самого кода колонки. При обращении к другим колонкам следует указывать их код.
При задании форматирования можно использовать это условнную конструкцию CASE
, которая позволяет осуществить проверку условий и возвратить в зависимости от выполнения того или иного условия различный результат:
Также задание определенного выражения форматирования позволяет настроить отображение списковых значений согласно данным из колонки другой таблицы. Колонка-справочник содержит в себе перечень значений, которые могут в дальнейшем быть указаны для объектов других таблиц.
Пример выражения форматирования для отображения текстовых значений согласно указанному коду:
В данном случае шаблонные коды имеют следущие обозначения:<column_value>
— код колонки-справочника, хранящей значения для отображения;<map>
— код карты, в которой расположена таблица с колонкой-справочником;<table>
— код таблицы, содержащей колонку-справочник;<code>
— код колонки из таблицы со справочником, со значениями которой будет определяться соответствие указанных в форматируемой колонке данных;$col
— значение текущей колонки, для которой выполняется форматирование, допустимо прямое указание ее кода;LIMIT 1
— служебное выражение, обеспечивающее единственное совпадение значений.
При отсутствии найденного совпадения в таблице объектов будет отображаться заданное в колонке значение.
Значение по умолчанию
Позволяет указать значение по умолчанию для колонки. Для ввода доступны значения, которые соответствуют выбранному типу данных, или SQL-выражение
, результат которого сформирует соответствующее значение. Также это поле обязательно к заполнению при отсутствии «галочки» в параметре «Возможность значения NULL».
текст
, дата/время
значение по умолчанию должно быть заключено в одинарные кавычки.
Справочники
Для более наглядного указания перечня используемых в колонке значений в ORBISmap 3 реализована возможность настройки справочников для отдельных полей.
Настройка справочников допустима для всех колонок, кроме типов «Геометрия», «JSON», «Заголовок» и «Файл».
Для указания справочника необходимо в окне редактирования соответствующей колонки нажать на кнопку . После этого отобразится окно, в котором возможно указать следующие параметры при помощи выпадающих списков:
- Карта, в которой располагается таблица, содержащая колонку-справочник. В списке представлены только карты текущего проекта;
- Таблица с колонкой-справочником;
- Ключ – колонка, которая будет использована в качестве справочника;
- Значение – опциональная колонка, значения которой будут отображаться при сопоставлении с колонкой-ключом;
- Ограничение внешнего ключа – чек-бокс, гарантирующий соблюдение ограничений внешнего ключа.
Ограничения внешнего ключа подразумевают, что если настроена данная связь, то в соответствующую колонку таблицы будет невозможно добавить значения, которые не совпадают с перечнем значений из справочника, при изменении структуры таблицы с колонкой-справочником не получится удалить колонку, определенную как ключ в другой таблице, а также не получится удалить саму эту таблицу в целом.
При указании справочника для уже существующей колонки, содержащей больше уникальных значений, чем содержится в справочнике, допустимо настроить только нестрогий справочник — без активации чек-бокса ограничений внешнего ключа.
Для колонок с настроенными справочниками сохраняется возможность форматирования как самих хранящихся в объектах значений, так и значений, выбранных для отображения при задании справочника.
При задании выражения форматирования для колонки со справочником разрашается использование следующих специальных значений:
$col
— используется для обозначения непосредственно значения, хранящегося в текущей колонке;<код_колонки>
— определяет значение колонки с указанным кодом в этой же таблице;$ref
— используется для обращения к значению справочника, полученного по ключу, либо к самому ключу при отсутствии указания на значение.
Также допустимо использование справочников с несколькими вариантами значений. Для этого необходимо после настройки справочника активировать для колонки параметр «Массив значений».
Если при настройке множественного справочника указывается колонка со значениями для отображения, полученными по ключу, дополнительно в свойствах настраиваемой колонки требуется указать следующее выражение в поле «Формат»:
Используемые в примере коды имеют следущие обозначения:<table>
— код таблицы-справочника;<column_value>
— код колонки со значением для отображения;<map>
— код карты, в которой расположена таблица-справочник;<column_key>
— код колонки из таблицы-справочника, определяемой как ключ;$col
— значение текущей колонки, для которой выполняется указание множественного справочника, допустимо прямое указание ее кода;LIMIT 1
— служебное выражение, обеспечивающее корректную работу справочника.
Возможность значения NULL
Отсутствие отметки в чекбоксе этого параметра означает, что колонка должна всегда иметь некоторое значение.
В этом случае в окнах «Редактирование структуры», «Изменить объект» данная колонка будет отмечена звездочкой (*), что означает обязательность ее заполнения.
null
и пустая строка
. Колонки типов «Геометрия», «Заголовок» не могут быть обязательными к заполнению.
Колонки с уникальными значениями
При установлении отметки в соответствующем чекбоксе в создаваемой колонке будут содержаться только уникальные значения. При попытке ввода ранее использованного значения в колонку с параметром «Уникальные значения», будет отображено сообщение об ошибке.
Первичный ключ
При отсутствии идентифицирующей колонки id (создание таблицы без нее или же при удалении её из структуры) можно выбрать другую колонку первичным ключом, отметив соответствующий чекбокс. Также можно изменить идентифицирующую колонку, предварительно убрав свойство первичный ключ с другой колонки в структуре.
null
.
Массив значений
Данный параметр позволяет указывать несколько значений колонки для одного объекта с возможностью независимого редактирования каждого элемента массива.
Чтобы внести элемент массива в соответствующую колонку необходимо в окне создания или редактирования объекта нажать на иконку и далее нажать на кнопку . Каждый элемент указывается в своем отдельном поле, для добавления следующего значения требуется снова нажать на соответствующую кнопку. Для удаления ненужного элемента следует нажать на значок .
После внесения нескольких элементов в режимах отображения данных «Таблица» и «Двойной вид» значения колонки-массива будут отображаться через специальный разделитель |
.
Автоинкремент
Установление данного параметра создает числовую последовательность, которая будет автоматически и последовательно увеличиваться при создании нового объекта.
Метаданные
Метаданные — дополнительные необязательные параметры колонки в формате JSON
. Задаются для разработчиков.
Изменение порядка и вложенности
Для изменения порядка колонок в окне «Редактирование структуры», необходимо нажать по названию колонки и перетащить элемент на нужное место в структуре.
Для изменения вложенности колонок и создания древовидной структуры с колонкой типа «Заголовок» также необходимо нажать левой кнопкой мыши по названию нужного элемента и перетащить его под колонку-заголовок.
Удаление колонки
Для удаления колонки требуется навести указатель мыши на название колонки в окне «Редактирование структуры» и при нажатии правой кнопкой мыши выбрать пункт .