Донецкий техникум промышленной автоматики

Фільтри-Потоки даних і датчики, що працюють в режимі реального часу (10.4.1)

  1. атрибутивні фільтри
  2. просторові фільтри
  3. Фільтри властивостей GeoEvent
  4. Налаштування фільтрів за допомогою тегів
  5. Налаштування фільтрів за допомогою регулярних виразів

Фільтри є налаштованим компонентами сервісів GeoEvent, які дозволяють фільтрувати (видаляти з потокових даних) події GeoEvent, що не відповідають заданим критеріям. Фільтри, як правило, є або атрибутивними фільтрами, або просторовими фільтрами, хоча макроси продукту додаткового модуля GeoEvent, подібні $ DEFINITION_NAME, наприклад, включають фільтрацію GeoEvent за властивостями (подібно імені визначення GeoEvent асоційованого з поточним GeoEvent).

атрибутивні фільтри

Атрибутивні фільтри сервісу GeoEvent фільтрують події з урахуванням критерію атрибута. Атрибутивний фільтр може бути налаштований за допомогою одного або більше атрибутивних виразів. Логічна комбінація цих виразів являє критерії, яким подія GeoEvent має задовольняти для того, щоб проходити через фільтр.

Підтримуються наступні оператори атрибутів:

  • Так само (Equal) (=) - Даний оператор зберігає події GeoEvent, значення атрибутів яких дорівнюють заданому значенню. Наприклад, IdString = 3XAB891
  • Чи не так само (Not Equal) (! =) - Даний оператор зберігає події GeoEvent, значення атрибутів яких не рівні заданому значенню. Наприклад, StatusString! = Err.

    Оператори рівності (Equal) і нерівності (Not Equal) не слід застосовувати для чисел з плаваючою точкою. Наприклад, не налаштовуйте вираз фільтра подібне Radius = 3.14159, замість цього використовуйте оператори більше (Greater Than), менше (Less Than) або інший оператор.

  • Більше (Greater Than) (>) - Даний оператор зберігає події GeoEvent, значення атрибутів яких більше заданого значення. Наприклад, Speed> 50.
  • Більше або дорівнює (Greater Or Equal) (> =) - Даний оператор зберігає події GeoEvent, значення атрибутів яких більше або дорівнює заданому значенню. Наприклад, Speed> = 50.
  • Менше (Less Than) (<) - Даний оператор зберігає події GeoEvent, значення атрибутів яких менше заданого значення. Наприклад, Altitude <1000.
  • Менше або дорівнює (Less Or Equal) (<=) - Даний оператор зберігає події GeoEvent, значення атрибутів яких менше або дорівнює заданому значенню. Наприклад, Altitude <= 1000.

    Оператори більше (Greater Than), менше (Less Than) та інші не слід застосовувати до строкових значень. Наприклад, не налаштовуйте вираз фільтра подібне Company> ABC, замість цього використовуйте оператори одно (Equals) або не дорівнює (Not Equal) і включіть всю рядок в вираз.

  • IN - Даний оператор зберігає події GeoEvent, коли вказане значення поля існує в розділеному комами списку значень. Наприклад, StatusCode IN HK1, HK3, HK5.
  • MATCHES - Даний оператор зберігає події GeoEvent, коли вказане значення поля збігається з регулярним виразом. Наприклад, StatusCode MATCHES ^ HK [135].

    Зазначене регулярний вираз оцінюється або як збігається, або як не співпадає з повним значенням поля події; часткові збіги не підтримуються. В наведеному вище прикладі, якщо StatusCode містить додаткові символи за межами однієї цифри, то в вираз доведеться включити. * Для збігу з будь-якими кінцевими символами в значенні атрибута.

  • EXISTS - Даний оператор зберігає події GeoEvent, коли вказане значення поля існує в отриманої схемою події. Наприклад, Geometry EXISTS.
  • ISNULL - Даний оператор зберігає події GeoEvent, коли вказане значення поля містить нульове (null) значення. Наприклад, Geometry ISNULL.

Перевірка на NULL не підтримується. GeoEvent визначає рядок як порожню (рядок нульової довжини), а не як об'єкт null.

просторові фільтри

Просторові фільтри в сервісі GeoEvent фільтрують події GeoEvent на основі просторових відносин з GeoFence. Геометрії, які визначають GeoFence повинні бути імпортовані в додатковий модуль GeoEvent з опублікованого сервісу об'єктів перед налаштуванням просторового фільтра.

Підтримуються наступні просторові оператори:

  • INSIDE - Геометрія GeoEvent вважається всередині GeoFence, якщо його геометрія повністю потрапляє в межі області, певної GeoFence. Даний оператор може визначити, чи розташована точка, пов'язана з подією GeoEvent, всередині області інтересу.
  • OUTSIDE - Геометрія GeoEvent вважається за межами GeoFence, якщо його геометрія повністю потрапляє за межі області, певної GeoFence. Даний оператор може визначити, чи розташована точка, пов'язана з подією GeoEvent, за межами області інтересу. Фільтри є налаштованим компонентами сервісів GeoEvent, які дозволяють фільтрувати (видаляти з потокових даних) події GeoEvent, що не відповідають заданим критеріям
  • ENTER - Геометрія GeoEvent вважається входить в GeoFence, якщо його геометрія тепер потрапляє всередину області, певної GeoFence, в той час як попередня позиція події GeoEvent з того ж треку перебувала за межами GeoFence. Після виявлення способу entry і отримання дозволу для події GeoEvent пройти через фільтр, відстежується об'єкт повинен повідомити як мінімум про одну подію поза GeoFence, перед тим, як іншу умову enter буде визнано (розпізнано).
  • EXIT - Геометрія GeoEvent вважається виходить з GeoFence, якщо його геометрія тепер потрапляє за межі області, певної GeoFence, в той час як попередня позиція події GeoEvent з того ж треку перебувала всередині GeoFence. Після виявлення способу exit і отримання дозволу для події GeoEvent пройти через фільтр, відстежується об'єкт повинен знайти ще, як мінімум, одна подія усередині GeoFence, перед тим, як іншу умову exit буде визнано (розпізнано).

Оператори атрибутів EXISTS і ISNULL вище також застосовні, коли поле Геометрія задається як частина виразу просторового фільтра.

Зазвичай набір GeoFences визначає області інтересу і імпортуються з сервісу об'єктів, що надає полігональні об'єкти. GeoFences не завжди повинні представляти полігональні області. Вони можуть бути також імпортовані з точкових і лінійних об'єктів.

Просторові оператори нижче застосовні до різних типів геометрій. Ці просторові оператори повертають логічне значення (Boolean), яке вказує, чи існує описані відносини між GeoFence і геометрією GeoEvent. Деякі відносини вимагають, щоб геометрія події GeoEvent мала ту ж розмірність, що і GeoFence, з яким вона порівнюється, в той час як інші мають більш гнучкі просторові обмеження. Багато з просторових операторів нижче є взаємовиключними операторами Клементині (Clementini).

  • CONTAINS - GeoFence вважається містить геометрію GeoEvent, якщо його геометрія є підмножиною геометрії GeoFence і перетин двох цих геометрій не є порожнім. Операція Contains (Містить) є логічною протилежністю операції Within; якщо GeoFence містить геометрію GeoEvent, то геометрія GeoEvent знаходиться всередині GeoFence.

    Операція Contains (Містить) є логічною протилежністю операції Within;  якщо GeoFence містить геометрію GeoEvent, то геометрія GeoEvent знаходиться всередині GeoFence

  • CROSSES - GeoFence вважається перетинає геометрію GeoEvent, якщо будь-яка частина їх геометрій збігається. Дві полилинии перетинаються, якщо вони поділяють внутрішні точки (по крайней мере, одна з яких не є кінцевою точкою). Полилиния і полігон перетинаються, якщо вони мають загальну лінію або точку всередині полігону, яка не є еквівалентною всієї полілінії.

    Полилиния і полігон перетинаються, якщо вони мають загальну лінію або точку всередині полігону, яка не є еквівалентною всієї полілінії

  • INTERSECTS - GeoFence перетинає геометрію GeoEvent, якщо дві геометрії не відокремлені. Оператор Intersects є логічною протилежністю оператора Disjoint.
  • DISJOINT - GeoFence і геометрія GeoEvent вважаються відокремленими, якщо вони не перетинаються.

    DISJOINT - GeoFence і геометрія GeoEvent вважаються відокремленими, якщо вони не перетинаються

  • EQUALS - Дві геометрії вважаються рівними, якщо їх симетрична різниця є порожнім безліччю. Якщо ви перебереться кожен сегмент в кожної геометрії для порівняння типу сегмента і координат, і виявите, що вони є однаковими (із застосуванням кластерних допусків просторової прив'язки при визначенні рівності координат), то дві геометрії будуть вважатися рівними.

    Якщо ви перебереться кожен сегмент в кожної геометрії для порівняння типу сегмента і координат, і виявите, що вони є однаковими (із застосуванням кластерних допусків просторової прив'язки при визначенні рівності координат), то дві геометрії будуть вважатися рівними

  • OVERLAPS - GeoFence вважається перекриває геометрію GeoEvent, якщо дві геометрії перетинаються, перетин збігається з розмірності зі порівнюваними геометриями і геометрії не рівні.

    OVERLAPS - GeoFence вважається перекриває геометрію GeoEvent, якщо дві геометрії перетинаються, перетин збігається з розмірності зі порівнюваними геометриями і геометрії не рівні

  • TOUCHES - GeoFence вважається дотичної з геометрією GeoEvent, коли геометрії перетинаються, але перетин їх внутрішніх частин є порожнім.

    TOUCHES - GeoFence вважається дотичної з геометрією GeoEvent, коли геометрії перетинаються, але перетин їх внутрішніх частин є порожнім

  • WITHIN - GeoFence вважається знаходиться всередині геометрії GeoEvent, якщо дві геометрії перетинаються і перетин їх внутрішніх частин не є порожнім. Оператор Within є логічною протилежністю оператору Contains.

    Оператор Within є логічною протилежністю оператору Contains

Більш докладно про реляційних операторах см. IRelationalOperator Interface in the ArcObjects API Reference for .NET .

Див. Розділ управління GeoFences для отримання більш докладної інформації про роботу з GeoFences в додатковому модулі GeoEvent ..

Фільтри властивостей GeoEvent

Кожна подія GeoEvent в додатковому модулі GeoEvent має відповідний набір властивостей, таких як визначення GeoEvent, що використовується для побудови події GeoEvent. Нагадаємо, що визначення GeoEvent є схемою, яка ідентифікує поля атрибутів і типи даних - дата, рядок, ціле і т.д. - для даних події GeoEvent. Фільтр можна налаштувати для фільтрації подій GeoEvent, грунтуючись на їх властивості, наприклад, на визначенні GeoEvent.

При налаштуванні вираження фільтра, спадаюче меню для параметра поля відображає список імен полів з доступних визначень GeoEvent. У верхній частині цього списку є кілька властивостей додаткового модуля GeoEvent включаючи:

  • $ OWNER_ID
  • $ OWNER_URI
  • $ DEFINITION_NAME
  • $ DEFINITION_GUID
  • $ RECEIVED_TIME

При побудові фільтра з наступним виразом будуть опущені будь GeoEvent, які не містять ім'я визначення GeoEvent Flights-TcpTextIn: $ DEFINITION_NAME = Flights-TcpTextIn. Фільтр, подібний цьому, заснований на властивості визначення GeoEvent, може бути використаний для фільтрації будь-яких подій GeoEvent, що не дотримуються необхідної схеми.

Налаштування фільтрів за допомогою тегів

Тег - це мітка, розміщена в конкретному полі визначення GeoEvent. Теги аналогічні псевдонімів полів; вони підтримують узгодженість у виразах, коли різні визначення подій GeoEvent пов'язують подібні дані з різними іменами полів. Деякі вбудовані теги ідентифікують важливі поля додаткового модуля GeoEvent, що містять інформацію, таку, як TRACK_ID або GEOMETRY.

Як тільки тег був створений і застосований для конкретного поля у визначенні GeoEvent, фільтри можуть посилатися на поле по його тегу, а не по імені поля. Це особливо корисно при налаштуванні фільтру атрибутів, оскільки він дозволяє використовувати один фільтр атрибутів, щоб застосувати точно такі ж критерії, засновані на атрибутах, для кілька типів подій.

Більш докладно про використання тегів в додатковому модулі GeoEvent см. В розділі Управління тегами (Managing tags) .

Налаштування фільтрів за допомогою регулярних виразів

Оператор MATCHES - доступний при налаштуванні фільтру атрибутів - підтримує використання регулярних виразів для пошуку шаблону в рамках цільового поля. Регулярний вираз зіставлення зі зразком може бути потужним інструментом для перевірки даних. Повний опис та синтаксис регулярних виразів не може бути розкритий в рамках цього розділу, але наведені нижче приклади ілюструють їх застосування в фільтрах подій GeoEvent.

Регулярні вирази можуть бути застосовані тільки до атрибутивною полях строкового типу.

Зазначений шаблон порівнюється з усією рядком. Ви не можете ввести California для пошуку рядків, які містять підрядка. Визначення шаблону. * California. * Зчитує від нуля або більше символів до і після підрядка, яку фільтр повинен знайти.

Значення поля RegEx (регулярний вираз) Результат

SWA2382

^ SWA [0-9] + $

Знак (^) закріплює шаблон до початку рядка, а знак долара ($) закріплює шаблон в кінці рядка. [0-9] + частина шаблону вказує на те, що одна або більше цифр від 0 до 9 повинні бути знайдені в кінці рядка.

Всі значення в цільовому поле, які не починаються з SWA, за якими слід кілька цифр, які представляють номер рейсу, не враховуватимуться фільтром.

02/15/1973

[0-1] [0-9] [/] [0-3] [0-9] [/] [0-1] [0-9] [0-9] [0-9]

Використання числових діапазонів, наприклад від 0 до 1, від 0 до 3 і від 0 до 9 задає очікувані значення для mm / dd / yy рядки з датою. Значення, які не мають два числа місяця, за якими слідують дві цифри дня і чотири цифри року, розділені косою рискою (/), не враховуватимуться фільтром.

3.14159

^ [- +]? [0-9] * \.? [0-9] + $

Цей шаблон перевіряє, чи не представлена ​​рядок в цільовому поле як числове значення. Зірочка (*) в RegEx відповідає нулю або більше примірників попереднього символу; знак питання (?) відповідає нулю або одному примірнику. Зворотна коса риска означає, що '.' є буквеної коми, а не будь-яким символом (*). Шаблон робить знак плюс (+) або мінус (-) цілою частиною значення з плаваючою точкою, а десяткове число необов'язковим (може виникати нуль раз).

Приклади регулярних виразів