Детектор вхождения целей в зоны (Trace detector 1)
Данный скрипт предназначен для:
- определения вхождения целей в охраняемые зоны;
- генерирования событий о входе цели в зону и выходе цели из зоны;
- расчета и сохранения списка зон, в которые входит цель, и приоритета слежения за целью;
- генерирования событий о резком изменении скорости и направления цели;
- генерирования событий об остановке и начале движения после остановки;
- генерирования событий об превышении скорости и возврате к нормальной скорости;
- генерирования событий об начале и окончании опасного сближения.
Обычно данный скрипт работает в паре с другим скриптом PTZ Tracer.
Скрипт работает с одной локальной базой трекинга и одной или несколькими удаленными базами интеграции.
Содержание
Зависимости
Скрипт зависит от какого-либо другого модуля поставляющего географические координаты движущихся объектов базе трекинга, т.е. меняющего параметр position у объектов наследников типа MoveableObject.
Построение схемы
Для построения схемы требуется:
1. Добавить триггер EgsScheduled.
- Для этого необходимо:
- 1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент EgsScheduled.
- 2. Дважды нажать на выбранный элемент, после чего появится окно для добавления элемента.
- 3. Нажать кнопку "Добавить". Элемент появится на рабочей области.
- Также все элементы можно добавлять путем захвата и перетаскивания на рабочую область левой кнопкой мыши.
2. Аналогично пункту 1 добавить элементы Egs Модуль EgsModule', менеджер устройств AcuarioManager, Компьютер, Зону и объект TraceDetectorSettings, содержащий настройки скрипта для данной зоны и указанных типов (либо идентификаторов) целей.
3. Настроить сетевой адрес компьютера.
Для этого необходимо выделить на схеме компьютер и нажать на кнопку вызова свойств элемента.
В окне свойств элемента указать ip адрес используемого компьютера в строке "Сетевой адрес".
4. Связать EgsScheduled и Egs Модуль, подключив пины «Egs вход: EgsInput» у EgsScheduled и «Egs выход: EgsOutput» у Egs Модуля.
5. Привязать пин "Привязка к менеджеру: ManagingContent" из Egs Модуля к пину "Менеджер устройств: ManagingContainer" из Менеджера устройств.
6. Подключить пин "ПО: SoftwareContent" из Менеджера устройств с пином "Установленное ПО: SoftwareContainer" из Компьютера.
7. Подключить пин "Логический вход: LogicInput" из Зоны с пином "Логический выход: LogicOutput" из TraceDetectorSettings. C элементом Зона может быть связано несколько элементов TraceDetectorSettings.
8. Настроить следующие параметры триггера:
- текст скрипта (script). Может быть использован один из двух скриптов: Trace detector 2 и Trace detector 3. Последний учитывает пул неопределенных морских целей. Неопределенная цель - это объект, не обладающий автоматической идентификационной системой (АИС) и имеющий наивысший приоритет слежения. При учитывании пула база не заполняется огромным количеством неопределенных целей. Текст скрипта Trace detector 2:
http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%202.put&path=0/params/script/value
; Trace detector 3 -http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%203.put&path=0/params/script/value.
- единица измерения (period_unit), например: секунда;
- интервал в единицах измерения (period_count), например: 1;
- точное время внутри интервала (period_time), например: 00:00:00, 14:30:00;
- повторять через интервал или выполнить один раз в указанное время (repeat), например: 0 (бесконечно), 1 (один раз), 100;
- задействовать триггер (enabled), например: true;
- типы целей, для которых следует генерировать тревожное событие (spawn_alarm_types), например: UndefinedSeaTarget;
- типы целей с высшим приоритетом (trace_highest_types), например: ExtraLargeShip, UndefinedSeaTarget;
- типы целей с высоким приоритетом (trace_high_types), например: LargeShip;
- типы целей с нормальным приоритетом (trace_normal_types), например: SmallShip;
- типы целей с низким приоритетом (trace_low_types), например: TinyShip;
- типы целей с низшим приоритетом (trace_lowest_types), например: Boat;
- максимальное количество секунд с последнего обновления цели (trace_timeout), например: 500;
- таймаут на сброс приоритета для целей с наивысшим приоритетом (trace_highest_timeout), например: 300;
- таймаут на сброс приоритета для целей с высоким приоритетом (trace_high_timeout), например: 240;
- таймаут на сброс приоритета для целей с нормальным приоритетом (trace_normal_timeout), например: 180;
- таймаут на сброс приоритета для целей с низким приоритетом (trace_low_timeout), например: 60;
- таймаут на сброс приоритета для целей с наинизшим приоритетом (trace_lowest_timeout), например: 20.
Настройку параметров триггера можно выполнить, открыв свойства элемента.
9. У каждой охраняемой зоны настроить следующие параметры:
- географический полигон зоны (area), например: POLYGON((50.22190511 53.2362532,50.22222154 53.23630881,50.22224243 53.23622371,50.2218933105469 53.2361679077148,50.22190511 53.2362532)). Первая и последняя точка в полигоне должны быть идентичными;
- высота области (area_heights), например: 121.9 121.6 121.5 121.4. Числа в массиве должны быть разделены, используя клавишу Enter, а количество точек должно быть на 1 меньше, чем в полигоне;
- приоритет зоны (trace_priority), например: normal.
10. У каждого объекта TraceDetectorSettings настроить следующие параметры:
- список типов целей, на которые распространяются данные настройки (types), например: WarShip;
- список идентификаторов целей, на которые распространяются данные настройки (guids), например: 385352c9-e5b2-4c92-af47-c2679806a742;
- максимальная допустимая скорость (speed_limit), например: 7;
- генерировать тревожное или обычное событие по превышению скорости (speed_limit_alarm), например: true;
- порог изменения скорости (speed_change_threshold), например: 20;
- генерировать тревожное или обычное событие по резкому изменению скорости (speed_change_alarm), например: true;
- порог изменения направления (heading_change_threshold), например: 40;
- генерировать тревожное или обычное событие по резкому изменению направления (heading_change_alarm), например: true;
- порог отсутствия движения (stop_threshold), например: 0.6;
- генерировать тревожное или обычное событие по началу или окончанию движения (stop_alarm), например: false;
- минимальное допустимое расстояние между целями (approach_threshold), например: 20;
- генерировать тревожное или обычное событие по опасному сближению (approach_alarm), например: false.
Если types и guids не содержат элементов, то считается, что данный объект хранит настройки по умолчанию.
Замечания:
1. При добавлении нескольких элементов TraceDetectorSettings каждый из них можно настроить на свой список целей и на различную скорость.
2. Если приоритет цели, либо приоритет зоны равен ignore, то события по ним не генерируются.
3. Если у зоны отсутствуют настройки TraceDetectorSettings, то события по ней не генерируются.
Проверка
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который при использовании скрипта Trace detector 2 должен быть равен тексту по следующей ссылке http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%202.put&path=0/params/hash/value
, а при Trace detector 3 - http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%203.put&path=0/params/hash/value
Хэш-сумма будет совпадать только в том случае, если скрипт был импортирован и не был изменен.
Алгоритм работы
- Типы из параметров триггера trace_highest_types, trace_high_types, trace_normal_types, trace_low_types и trace_lowest_types объединяются в общий список отслеживаемых типов целей.
- Bсе типы целей должны быть унаследованы от MoveableObject.
- Выбираются все зоны из всех баз, подключенных к серверу.
- Перебирает все зоны, у которых параметр trace_priority, установлен в значение, отличное от ignore.
- Далее для каждой полученной зоны:
- в памяти создается список идентификаторов целей, находящихся в этой зоне в данный момент;
- выполняет запрос на сервер getObjectsByPoligon с параметром зоны area, списком отслеживаемых типов целей и параметром триггера trace_timeout;
- полученный список идентификаторов целей в зоне сравнивается с сохраненным;
- вычисляются цели, вошедшие в зону и вышедшие из нее;
- по полученным спискам идентификаторов в базе трекинга находятся цели т.е. объекты типа MoveableObject;
- обновляется параметр цели trace_zones, т.е. список идентификаторов зон, в которых в данный момент находится цель;
- Дальнейшее выполняется только для целей, приоритет которых отличен от ignore.
- 6. В соответствии с параметрами trace_highest_types, trace_high_types, trace_normal_types, trace_low_types и trace_lowest_types проставляется определенный приоритет цели в параметр trace_priority, в том случае если приоритет еще не был проставлен, т.е. в данный момент равен DEFAULT. Автоматическое определение приоритета цели происходит в два этапа: сначала приоритет выбирается при условии точного соответствия типа, а затем с учетом наследования.
- 7. Генерируются события ZoneEvent, содержащие следующие параметры:
- 1. owner - идентификатор зоны;
- 2. server - идентификатор сервера трекинга;
- 3. position - географическая позиция цели;
- 4. detector - идентификатор триггера;
- 5. action - действие: enter или exit;
- 6. target - идентификатор цели;
- 7. target_type - тип цели;
- 8. target_info - краткая информация о цели.
- 8. На следующем этапе выбираются все цели с приоритетом отличным от ignore и DEFAULT.
- 1. По приоритету цели выбирается соответствующий таймаут из параметров trace_highest_timeout, trace_high_timeout, trace_normal_timeout, trace_low_timeout и trace_lowest_timeout.
- 2. Если с момента последнего изменения параметра position прошло больше секунд, чем указано в выбранном таймауте, то приоритет этой цели сбрасывается в DEFAULT.
- 9. На последнем этапе выбираются все цели входящие в какие-либо охраняемые зоны и имеющие приоритет отличный от ignore.
- 1. Если модуль скорости цели (параметр speed) меньше, чем stop_threshold и цель находится в движении, то генерируется событие ZoneEvent (с параметром alarm = stop_alarm) с параметром action равным stop.
- 2. Если модуль скорости цели (параметр speed) больше, чем stop_threshold и цель не находится в движении, то генерируется событие ZoneEvent (с параметром alarm = stop_alarm) с параметром action равным start.
- 3. Если скорость цели (параметр speed) больше чем speed_limit, то генерируется событие ZoneEvent (с параметром alarm = speed_limit_alarm) с параметром action равным too_fast. В случае прекращения превышения скорости генерируется событие с параметром action равным not_too_fast.
- 4. Если разница между скоростью цели (параметр speed) и ее предыдущим значением больше, чем speed_change_threshold, то генерируется событие ZoneEvent (с параметром alarm = speed_change_alarm) с параметром action равным severe_speed_change.
- 5. Если разница между направлением цели (параметр heading) и ее предыдущим значением больше, чем heading_change_threshold, то генерируется событие ZoneEvent (с параметром alarm = heading_change_alarm) с параметром action равным severe_heading_change.
- 6. Если расстояние между выбранной целью и какой-либо другой целью в той же зоне меньше approach_threshold, то генерируется событие ZoneEvent (с параметром alarm = approach_alarm) с параметром action равным dangerous_approach и параметром participants, содержащим список идентификаторов, целей находящихся в опасной близости. В случае прекращения опасного сближения генерируется событие с параметром action равным no_dangerous_approach.
- 10. Если приоритет цели, либо приоритет зоны равен ignore, то события по ним не генерируются.
- 11. Если у зоны отсутствуют настройки TraceDetectorSettings, то события по ней не генерируются.
Пример работы
Для построения схемы необходимо:
1. Создать схему по выше описанному алгоритму (см. Построение схемы).
2. Добавить элемент Военный корабль "WarShip".
3. Настроить параметр "Сетевой адрес" компьютера.
4. Настроить следующие параметры триггера:
- единица измерения (period_unit): секунда;
- интервал в единицах измерения (period_count): 1;
- повторять через интервал или выполнить один раз в указанное время (repeat): 0;
- задействовать триггер (enabled): true;
- в настройках:
- типы целей, для которых следует генерировать нормальное событие ZoneEvent (spawn_event_types): WarShip;
- типы целей с высшим приоритетом (trace_highest_types): WarShip;
- типы целей с высоким приоритетом (trace_high_types): WarShip;
- типы целей с нормальным приоритетом (trace_normal_types): WarShip;
- типы целей с низким приоритетом (trace_low_types): WarShip;
- типы целей с низшим приоритетом (trace_lowest_types): WarShip;
- максимальное количество секунд с последнего обновления цели (trace_timeout): 500;
- таймаут на сброс приоритета для целей с наивысшим приоритетом (trace_highest_timeout) : 300;
- таймаут на сброс приоритета для целей с высоким приоритетом (trace_high_timeout): 240;
- таймаут на сброс приоритета для целей с нормальным приоритетом (trace_normal_timeout): 180;
- таймаут на сброс приоритета для целей с низким приоритетом (trace_low_timeout): 60;
- таймаут на сброс приоритета для целей с низшим приоритетом (trace_lowest_timeout): 207.
5. Настроить следующие параметры Зоны:
- область (area): POLYGON((50.22228403 53.2363014,50.2224350 53.23636588,50.2224236 53.2362976,50.22228403 53.2363014));
- высота области (area_heights): 121.9 121.6 121.5. Массив чисел должен быть разделен, используя клавишу Enter;
- приоритет зоны (trace_priority) : normal.
6. У объекта TraceDetectorSettings настроить следующие параметры:
- список типов целей, на которые распространяются данные настройки (types): WarShip;
- список идентификаторов целей, на которые распространяются данные настройки (guids): 385352c9-e5b2-4c92-af47-c2679806a742;
- максимальная допустимая скорость (speed_limit): 7;
- генерировать тревожное или обычное событие по превышению скорости скорости (speed_limit_alarm): true;
- порог изменения скорости (speed_change_threshold): 20;
- генерировать тревожное или обычное событие по резкому изменению скорости (speed_change_alarm): true;
- порог изменения направления (heading_change_threshold): 40;
- генерировать тревожное или обычное событие по резкому изменению направления (heading_change_alarm): true;
- порог отсутствия движения (stop_threshold): 0.6;
- генерировать тревожное или обычное событие по началу или окончанию движения (stop_alarm): true;
- минимальное допустимое расстояние между целями (approach_threshold): 20;
- генерировать тревожное или обычное событие по опасному сближению (approach_alarm): true.
При добавлении нескольких элементов TraceDetectorSettings каждый из них можно настроить на свой список целей и на различную скорость.
Для ввода идентификатора необходимо зайти в свойства элемента WarShip и нажать на ссылку "WarShip". Идентификатор будет скопирован в буфер обмена. В данном случае это: 385352c9-e5b2-4c92-af47-c2679806a742.
Далее если объект не движется, можно запустить скрипт "Симулятор движения (Position Simulator 1)", описание которого приведено на странице Симулятор движения (Position simulator 1), и настроить в свойствах триггера параметр: данные о движении объекта (settings.input): 50.22196217,53.23618268,0 50.22209225,53.23620757,0 50.22223978,53.23623004,0 50.22231622,53.23626456,0 50.22236718,53.23632315,0 50.22231085,53.23636007,0 50.22231086,53.23636008,0 50.22219015,53.23638496,0 50.22204666,53.23636007,0 50.22187902,53.23633359,0 50.22184013,53.23623807,0. Элемент в Position Simulator 1 и в Trace detector 1 должен быть одним и тем же.
Результат:
Для просмотра результата необходимо зайти в Менеджер событий.
Настроить вкладку на необходимый сервер и параметр "Событие в зоне".
После этого будет отображен список событий в зоне. Так как скорость военного корабля превышала максимальную допустимую скорость, то генерируется событие too_fast.
По нажатию на кнопку "Показать информацию" раскроется подробная информация о событии.
Дополнения
1. В пункте 1 раздела Построение схемы добавление триггера EgsScheduledTraceDetector можно осуществить по ссылке.
Для этого необходимо:
- 1. Импортировать скрипт по ссылке. При выборе скрипта Trace detector 2:
http://maps.integra-s.com:5434/resources/typedef2017/egs/Trace%20detector%202.put.
, при выборе Trace detector 3:http://maps.integra-s.com:5434/resources/typedef2017/egs/Trace%20detector%203.put
- 2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
- 3. В открывшемся окне выбрать импортированный скрипт "Trace detector.put".
- Элемент появится на рабочей области.
2. В пункте 7 раздела Построение схемы редактирование параметров элемента можно осуществить, выделив элемент правой кнопкой мыши и в контекстном меню выбрав пункт "Редактировать параметры".
- После этого откроется окно для редактирования параметров.