Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды.

В ПК «Нева» для отбора объектов по определённым критериям используются формулы логических выражений. Данные выражения используются:

· в диалоге настроек фильтра выборки команды «Выборка/Фильтр…» в поле «Условие»

· в диалоге настроек фильтра выборки команды «Выборка/Фильтр…» на странице «Отношение» в дополнительных параметрах сравнения объектов по характеристикам (кнопка Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru ).

· в диалоге команды «Разное/Создать «DBF»…»

· в диалоге настроек отображаемых атрибутов команды «Настройка/Отображаемые атрибуты…»

· в настройках Классификатора (команда редактора Классификатора «Окна/Графика») если требуется изменять графическое представление объектов, в зависимости от наличия или значения определённых атрибутов у этих объектов;

· в настройках Классификатора для карт с объектно-ориентированной моделью данных в настройках связей объектов и настройках ограничений по семантике.

Операторы.

1. Арифметические операторы:

"+" – сложить

"-" – вычесть

"*" – умножить

"/" – разделить

2. Логические операторы:

"&" – логическая операция "И"

"!" – логическая операция "ИЛИ"

3. Операторы сравнения:

">" – больше

"<" – меньше

">=" – больше или равно

"<=" – меньше или равно

"=" – равно

"<>" – не равно

4. Операторы позиционирования:

"?" – указание вхождения простой характеристики внутри комплексной

Операнды.

1. Константы:

"2014" – числа целые и десятичные дроби

"Москва" – текстовые строки (в выражении заключаются в кавычки или в некоторых случаях можно использовать одинарные кавычки)

"*" – обозначает «любой символ» в текстовой строке, в соответствии с общими правилами

"^" – ставится в начале выражения после кавычки для исключения отдельного анализа слов (игнорирование пробелов в тексте)

"^#" – обозначает «любая цифра» в текстовой строке

"^$" – обозначает «любая буква» в текстовой строке

"?" – символ, замещающий любой знак в строке

2. Функции:

"nil" – отсутствие значения

"sin" – синус

"cos" – косинус

"exp" – экспонента

"ln" – натуральный логарифм

"%" – модуль остатка от деления

3. Переменные:

Признаком переменной служит символ «@», после которого ставится либо номер характеристики, либо сами переменные:

"V" – порог отображения объекта

"S" – площадь объекта

"L" – длина метрики объекта

"N" – количество точек метрики объекта

"C" – количество дочерних объектов

"Z" – служебная характеристика «Z»

"U" – уровень положения объекта в дереве карты (0 – корень карты, 1 – слои, 2 – объекты слоёв, 3 – «дети» объектов слоя и т.д.)

"I" – цвет объекта (служебная переменная)

"F" – запреты редактирования объекта (служебная переменная)

Переменные для анализа расположения подписей:

"G" – атрибуты текста, признак расположения подписи (0 – Над линией, 1 – По линии, 2 – Под линией)

"H" – атрибуты текста, признак центрирования (0 – Плотный слева, 1 – Разрядка по буквам, 2 – Точка-буква, 3 – Вектор-буква, 4 – Плотный справа, 5 – Плотный по центру, 6 – Разрядка по словам, 7 – Выноска)

Альтернативные переменные для анализа расположения подписей:

"Y" – атрибуты текста, признак расположения подписи (1 – Над линией, 2 – По линии, 4 – Под линией)

"T" – атрибуты текста, признак центрирования (0 – Плотный слева, 1 – Разрядка по буквам, 2 – Точка-буква, 3 – Вектор-буква, 4 – Плотный справа, 5 – Плотный по центру, 6 – Разрядка по словам, 7 – Выноска)

Переменные для работы с объектно-ориентированной моделью

"unk(n)" – поиск объектов с характеристикой «unknown», где«n» - номер характеристики

"O" – характер локализации класса объекта в объектно-ориентированной модели (*new)

"dst(role_type)=n" – поиск целевого объекта с наличием указанного типа связи, где “n” – количество связей (значения role_type: 1 – ассоциация, 2 – агрегация, 3 – композиция, 4 – наследование). Пример условия поиска целевого объекта с типом связи «композиция» и количеством связей равным 4: dst(3)=4

"dst(“role_name”)=n" – поиск целевого объекта с указанной связью, где “n” – количество связей, а “rol_name” – название акронима связи

"src(role_type)=n" – поиск исходного объекта с наличием указанного типа связи, где “n” – количество связей (значения role_type: 1 – ассоциация, 2 – агрегация, 3 – композиция, 4 – наследование). Пример условия поиска исходного объекта с типом связи «композиция» и количеством связей равным 4: src(3)=4

"src(“role_name”)=n" – поиск исходного объекта с указанной связью, где “n” – количество связей, а “rol_name” – название акронима связи

4. Команды для контроля характеристик:

"TEXT" – анализ символов текстовой строки в характеристике (1 – все цифры, 2 – все строчные буквы, 3 – все ЗАГЛАВНЫЕ буквы)

"CHAR" – анализ первых символов текстовой строки в характеристике (1 – первая цифра, 2 – первая буква строчная, 3 – первая буква ЗАГЛАВНАЯ)

"LEN" – количество символов в значении характеристики, пример условия: LEN(9)<>4(количество символов в строке не равно 4)

"TYPE" – тип характеристики, пример условия: TYPE(9)=3 (0-byte, 1-word, 2-int, 3-long, 4-time, 5-data, 6-float, 7-single, 8-angle, 9-string, 10-dbase, 11-enum, 12-logic, 13-link, 14-double, 15-unicode, 16-list, 17-text, 18-color, 19-int64, 20-number, 21-enumw)

"" – кавычки без команды – поиск характеристики, значение которой состоит только из пробелов

"DT" – количество характеристик DataType у объекта, пример условия: dt(301)=2(количество характеристик 301 с типом DataType у объекта равно 2)

Примеры использования типовых условий фильтра:

Простые выражения:

1. nil(9)=0 – объекты, у которых есть 9-я характеристика;

2. nil(9)=1 – объекты, у которых отсутствует 9-я характеристика;

3. @401="*город*" – объекты, у которых в тексте 401-й характеристики встречается слово «город»;

4. @401<>"*город*" – все объекты, у которых в тексте 401-й характеристики нет слова «город»;

5. @262="бер*" – значение 262-й характеристики начинается на «бер»

6. @9="???ий" *" – объекты с окончанием «ий» и с количеством символов равным 5 в тексте 9-й характеристики;

7. @100="*к^#" – объекты с текстом в 100-й характеристике с буквой "к", после которой стоит цифра;

8. text(100)=1 – все символы в 100-й характеристике цифры

9. char(601)=1 – первый символ в 601-й характеристике цифра

10. char(601)=2 – первый символ в 601-й характеристике строчная буква

11. type(7)=9 – тип 7-й характеристики «string»

12. type(12)<>3– тип 12-й характеристики не «long»

13. len(9)<4 – количество символов в строке меньше 4

14. @1>80 – объекты, с числовым значением 1-й характеристики больше 80

15. @4=127.5 – объекты со значением числовой 4-й характеристики равной «127.5»

16. @u=2 – выбрать только объекты слоёв без дочерних объектов

17. @z=1 – выбрать объекты с характеристикой «Z»

18. @c=0 – выбрать объекты у которых нет дочерних объектов

19. @c>1 – выбрать объекты у которых есть дочерние объекты (количество дочерних объектов больше 1)

20. @9='*"*' – объекты с кавычками в 9-й характеристике (вместо обычных кавычек в выражениях можно использовать символ одинарной кавычки, если требуется искать значения характеристик, которые содержат обычные кавычки)

21. @9=<>'^(*' – выбор объектов с 9-й характеристикой, где строка не начинается с открывающей скобки, но внутри строки может быть слово в скобках.

Сложные выражения:

1. (nil(1)=1)&(@U<>3) – объекты слоёв без 1-й характеристики, кроме дочерних;

2. (nil(100)=0)&(nil(601)=1) – объекты у которых есть характеристика с номером 100, но нет 601-й характеристики.

3. (@601="^$^#*")&(@601<>"* *") – объекты с номером дороги в 601-й характеристике типа «М16» без пробелов после номера (не указан тип названия дороги после номера дороги, если требуется давать названия по образцу «М16 шоссе»)

4. (@601="*.*")!(@601="^$ *")!(@601="* ^$ *") – объекты с символом «.» или с одной буквой в начале строки или с одной буквой в середине строки в 601-й характеристике (поиск сокращений в названии улицы типа «А.Пушкина улица» или «А Пушкина улица» или «улица А Пушкина»)

5. (@G=1)&(@H=5) – объекты типа «Текст» с параметрами подписи «По линии» и «Плотный по центру». Аналогичное условие с альтернативными переменными: (@Y=2)&(@T=5)

6. (nil(100)=0)&(text(100)<>1) – объекты с наличием 100-й характеристики, в которых не все символы цифры (поиск номеров домов с буквенными символами)

Работа с комплексными атрибутами в фильтре

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

Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru

Рисунок 1

Объект, представленный на рис.1, имеет 3 атрибута:

- 11 атрибут имеет значение 1

- 13 атрибут имеет значение 3

- 12 – комплексный атрибут в двух экземплярах.

Комплексный атрибут номер 12 объединяет два атрибута:

- 14 – простой атрибут

- 15 – комплексный атрибут

Первый экземпляр атрибута 12 имеет одно значение атрибута 14=4 и два значения 15 атрибута. Атрибут 15, в свою очередь, состоит из простых атрибутов 16 и 17, имеющие конкретные значения в своих экземплярах.

Таким образом, атрибуты данного объекта организованы в виде трехуровневой иерархии, при этом в условиях семантики фильтра для отбора объектов могут анализироваться только значения простых атрибутов. В данном примере это атрибуты: 11, 13, 14, 16 и 17. При этом атрибут 14 имеет два значения (4 и 5), атрибуты 16 и 17 имеют по три значения каждый. Для того, чтобы в логическом выражении условия по семантике указать значение конкретного экземпляра одного из этих атрибутов, необходимо описать точки ветвления в дереве атрибутов, которыми являются комплексные атрибуты 12 и 15.

Для описания точек ветвления в логическом выражении фильтра введен символ знака вопроса, размещаемый перед номером комплексного атрибута (в данном примере - ?12 или ?15).

Рассмотрим примеры описания условий отбора представленного на рис.1 объекта в выборку по его характеристикам:

Пример 1. Для атрибутов первого уровня: (@11=1) ! (@13=3)

Пример 2. Для анализа в условии 14 атрибута, расположенного на втором уровне иерархии, необходимо указать комплексный атрибут, в который он входит, т.е. опуститься на второй уровень иерархии:

(?12 @14=4) или

(?12 (@14=4) ! (@14=5))

Пример 3. Для анализа атрибутов 3 уровня (16 и 17) необходимо сначала опуститься на второй уровень, а затем на третий уровень иерархии:

(?12 @14=4)&(?15 @16=2)

По данному условию будет выбран тот экземпляр 12 атрибута, в котором 14 атрибут имеет значение =4, а затем тот 15 атрибут, внутри которого атрибут 16=2.

Анализ характеристик перечислимого типа с множественностью больше 1 (работает для типов list, dbase, enumw)

1. Обычный запрос на поиск объектов, которые содержат значения «3» или «5» в характеристике перечислимого типа № 262:

(@262=3)!(@262=5)– 262-я характеристика содержит только значение «3» ИЛИ только значение «5».

2. Дополнительные варианты синтаксиса выражения для анализа характеристик перечислимого типа:

"3,5"->@262– 262-я характеристика содержит значения «3» И «5» в списке значений;

"3,5"->@262=0– 262-я характеристика содержит другие значения кроме «3» И «5» в списке значений;

@262->"3,5"– 262-я характеристика содержит значение «3» ИЛИ «5» в списке значений и не допускает наличия других значений в списке значений.

@262->"3,5"=0– 262-я характеристика содержит другие значения кроме «3» И «5» в списке значений

Выборка объектов без использования выражений, по наличию или отсутствию характеристик у объектов.

Если требуется выбирать объекты только по наличию или отсутствию характеристик, то в блоке «Семантика» устанавливается опция «наличие» или «отсутствие», а в блоке «Условие» указывается номер характеристики. Если требуется указать несколько характеристик, то их номера указываются через запятую:

1. Пример выборки объектов, у которых отсутствует 4-я характеристика

Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru

2. Пример выборки объектов, у которых есть 4-я и 9-я характеристики

Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru

Блок параметров фильтра «Фрагмент» (используется, при нажатии кнопки «Применить»[u66] ).

Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru

· «Карта» – при нажатии кнопки фильтра «Применить» сохраняются текущие параметры фильтра и запускается процесс фильтрации объектов по карте

· «Прямоугольник» – при нажатии кнопки фильтра «Применить» сохраняются текущие параметры фильтра, программа переходит в режим выделения объектов прямоугольником аналогично инструменту Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru , при этом курсор на карте принимает вид Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru , после чего прямоугольным выделением указывается область на карте, по которой будет запущен процесс фильтрации объектов.

· «Круг» – при нажатии кнопки фильтра «Применить» сохраняются текущие параметры фильтра, программа переходит в режим выделения объектов полигоном аналогично инструменту Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru в режиме цифрования «Эллипс», при этом курсор на карте принимает вид Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru , после чего указываются центр круга и радиус, в пределах которого будет запущен процесс фильтрации объектов.

· «Полигон» – при нажатии кнопки фильтра «Применить» сохраняются текущие параметры фильтра, программа переходит в режим выделения объектов полигоном аналогично инструменту Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru , при этом курсор на карте принимает вид Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru , после чего произвольным выделением указывается область на карте, по которой будет запущен процесс фильтрации объектов.

· «Объект» – при нажатии кнопки фильтра «Применить» сохраняются текущие параметры фильтра, программа переходит в режим выделения объектов другим объектом аналогично инструменту Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru , при этом курсор на карте принимает вид, как в режиме захвата метрики Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru , после чего на карте указывается объект с замкнутым контуром, в пределах которого будет запущен процесс фильтрации объектов.

Блок параметров фильтра «Точки».

Логические выражения условий отбора объектов в ПК «Нева». Операторы и операнды. - student2.ru

Ø «все точки» – в выборку будут включены только те объекты, все точки которых попали в указанную область;

Ø «несколько точек» – в выборку будут включены все объекты, у которых хотя бы одна точка попала в указанную область;

Ø «пересечение» – в выборку будут включены те объекты, которые пересекают указанную область;

Ø «рассогласование» – выборку будут включены только те объекты, которые не согласованы с указанной областью;[u67]

Ø «нет точек» – в выборку будут включены только те объекты, у которых ни одна точка не попадает в указанную область;

Ø «вне рамки» – в выборку будут включены объекты, находящиеся за рамкой карты;

Ø «-» – при фильтрации не учитываются параметры блока «Точки».

Наши рекомендации