Выражения можно использовать в качестве значений почти для всех параметров стиля. Используйте построитель выражений для определения стиля элементов с помощью выражений на основе атрибутов класса элементов и атрибутов связанных элементов или же на любых значениях, рассчитанных с использованием значений атрибутов.
Используйте построитель выражений для создания вычисляемых свойств, которые можно использовать для динамического определения стиля. В отраслевой модели предусмотрены две текстовые функции.
TB_SQL. Используйте эту текстовую функцию для запроса атрибутов из связанных классов элементов. Атрибуты можно использовать для определения стиля. Команда SQL должна соответствовать следующим правилам:
Для тестирования команды SQL выполните команду SELECT g.FID, (команда SQL) FROM <имя класса элементов> g. Например, используйте SQL Sheet для выполнения команды.
Используйте эту текстовую функцию для создания вычисляемого свойства текста, которое предоставляет пользовательскую переменную для тематической стилизации. Эти переменные хранятся в системной таблице TB_VARIABLE. Такую переменную можно определить для каждых персональных данных для входа.
Например, в TB_VARIABLE можно задать переменную BUILDING, значение которой соответствует FID. В Диспетчере отображения переменную можно использовать для определения стиля здания. Чтобы выделить на карте одно здание, введите FID здания в таблицу TB_VARIABLE. Для выделения другого здания нет необходимости изменять модель отображения, можно просто ввести новый FID в таблицу TB_VARIABLE.
Используйте эти функции для определения темы для одного атрибута отображения, такого как цвет или толщина линии. Их можно использовать с несколькими типами данных: строка, целое число, логическая переменная, цвет и дата/время. Каждый параметр может являться константой или выражением для оценки строкового или числового значения.
If
If('условие', истинное_значение, ложное_значение)
Параметр "условие" – это строка, содержащая любое оценочное выражение, дающее логическое значение (по существу, фильтр). Это может быть одно сравнение, такое как "население > 1000", где "население" – это свойство элемента слоя. "Истинное_значение" и "ложное_значение" – это выражения, которые оцениваются и возвращаются, если условие истинно или ложно соответственно. Оба выражения должны оценивать один и тот же тип данных (строку или число).
Этот пример можно использовать для вращения символа стрелки, направленной вверх, чтобы показать рост или уменьшение населения: If('pop2005 > pop2000', 0.0, 180.0)
Lookup
Lookup(выражение, значение_по_умолчанию, ключ1, значение1, … ключN, значениеN)
Эта функция позволяет реализовать таблицу поиска, где каждый ключ связан с одним значением. "Выражение" – это выражение для сравнения с ключом (строкой или числом). Этот ключ сравнивается с оставшимися постоянными параметрами "Ключ№" с целью выбора постоянного параметра "Значение№", который будет возвращен функцией. Если требуемый ключ не найден, возвращается "Значение_по_умолчанию". "Выражение" и все параметры "Ключ" должны принадлежать одному и тому же типу данных. Это же справедливо для параметров "значение_по_умолчанию" и "Значение№". Число пар "ключ-значение" не ограничено.
Следующий пример можно использовать для назначения цветов участкам в зависимости от типа зонирования:
Lookup(zoning, 0xff888888, 'Industrial', 0xffff0000, 'Commercial', 0xff00ff00, 'Residential', 0xff0000ff)
Range
Функция Range используется для сравнения ключа "Выражение" с набором диапазонов, где ключ соответствует диапазону, если МИН <= КЛЮЧ < МАКС:
Range(выражение, значение_по_умолчанию, мин1, макс1, значение1, … минN, максN, значениеN)
Диапазоны определяются параметрами "мин№" и "макс№", с каждым из них связан параметр "значение№". Если запрашиваемый ключ не соответствует ни одному из заданных диапазонов, возвращается "Значение_по_умолчанию". Если диапазоны перекрываются, то выбирается первый диапазон, соответствующий ключу. "Выражение" и все параметры "Мин" и "Макс" должны принадлежать одному и тому же типу данных. Это же справедливо для параметров "Значение_по_умолчанию" и "Значение№". Число наборов "диапазон-значение" не ограничено.
Следующий пример можно использовать для определения размера обозначения в зависимости от размера города:
Range(population, 4.0, 100000, 1000000, 6.0, 1000000, 10000000, 8.0)