| Документация

Подтипы

Подтипы ( Subtypes ) – это метод классификации данных, в котором используются подгруппы объектов класса с одинаковыми атрибутами.

Подтипы позволяют:

CoGIS Server и CoGIS Portal поддерживают подтипы, заданные на уровне картографического проекта в QGIS.

Настройка подтипов производится путем фильтрации заданных доменов для дочернего поля относительно значения родительского поля.

Дочерних полей может быть несколько. Родительское поле для одного слоя может быть только одно.Родительское поле должно иметь целочисленный тип: smallint, integer, bigint.

Дочерние поля могут быть целочисленными ( smallint, integer, bigint ), строковыми (text, character variyng ) и гуидными ( uuid )Дочернему полю необходимо задать домены со всеми возможными значениями, используя любой следующий способ: через карту значений (InPlace-домен) или через связанное значение из другого слоя (TableBased-домен).

Пример настройки доменов для дочернего поля приведен на рисунке, см. Рисунок 121 .

Рисунок 121 – Пример настройки доменов для дочернего поля

Настройки подтипов задаются через специальные переменные для слоя, см. Таблица 4.

Таблица 4 – Переменные для настройки подтипов в слое

Переменная Пример значенияодного/несколько полей Описание
elitegis_subtypes_main_field parent_field Имя родительского поля
elitegis_subtypes_dependant_fields child_field Имя/имена дочерних полей
child_field1; child_field2
elitegis_subtypes_dependant_fields_default_values 1=101,2=201,3=301 Значения по умолчанию для дочернего поля/полей
child_field1:1=101,2=201,3=301;child_field2:1=st11,2=st21,3=st31;
elitegis_subtypes_dependant_domain_filter {code}>({subtype}*100) AND {code}<(({subtype}+1)*100) Фильтр для числового дочернего InPlace домена
{code} like concat( 'st',{subtype},'%') Фильтр для строкового дочернего InPlace домена
parent_field Имя поля как фильтр TableBased-домена
parent_field = {subtype} Явное указание фильтра для TableBased-домена
child_field1:{code}>({subtype}*100) AND {code}<(({subtype}+1)*100); child_field2:{code} like concat( 'st',{subtype},'%') Указание фильтра для нескольких дочерних полей

Значения по умолчанию для текстового поля указываются без кавычек,

пример: 1=st11.

Значения по умолчанию для гуидного поля указываются в фигурных скобках,

пример: 1={0a2f168e-8b9e-49ed-9a7a-edf8d79b5ee9}.

Для фильтрации дочернего домена используются макросы: {subtype} – значение родительского поля {code} – значение дочернего поля.

Пример заполнения переменных приведен на рисунке ниже, см. Рисунок 122 .

Рисунок 122 – Пример заполнения переменных для настройки подтипов

Пример готовой карты с объектами, для одного из атрибутов которых заданы подтипы, приведен на рисунке ниже, см. Рисунок 123 . На рисунке показано окно создания нового объекта, в котором автоматически подставляются возможные значения для атрибута SybType исходя из выбранного типа ( Type ) объекта.

Рисунок 123 – Создание нового объекта с учетом группировки объектов по подтипам