Детектор вхождения целей в зоны (Trace detector 1) — различия между версиями

Материал из Integra-S Wiki
Перейти к: навигация, поиск
(Алгоритм работы)
(Пример работы)
 
(не показана 41 промежуточная версия этого же участника)
Строка 9: Строка 9:
  
 
Обычно данный скрипт работает в паре с другим скриптом [[Слежение_поворотной_камерой_за_целями_в_зоне_(PTZ_Tracer_1)|PTZ Tracer]].
 
Обычно данный скрипт работает в паре с другим скриптом [[Слежение_поворотной_камерой_за_целями_в_зоне_(PTZ_Tracer_1)|PTZ Tracer]].
 +
 +
Скрипт работает с одной локальной базой трекинга и одной или несколькими удаленными базами интеграции.
  
 
==Зависимости==
 
==Зависимости==
Строка 58: Строка 60:
 
[[File:TraceDetector_3.PNG|центр|1000px]]
 
[[File:TraceDetector_3.PNG|центр|1000px]]
  
7. Подключить пин "'''Логический вход: LogicInput'''" из '''Зоны''' с пином "'''Логический выход: LogicOutput'''" из '''TraceDetectorSettings'''.
+
7. Подключить пин "'''Логический вход: LogicInput'''" из '''Зоны''' с пином "'''Логический выход: LogicOutput'''" из '''TraceDetectorSettings'''. C элементом '''Зона''' может быть связано несколько элементов '''TraceDetectorSettings'''.
  
 
[[File:TraceDetector_10.png|центр|1000px]]
 
[[File:TraceDetector_10.png|центр|1000px]]
Строка 64: Строка 66:
 
8. Настроить следующие параметры триггера:
 
8. Настроить следующие параметры триггера:
  
#текст скрипта ('''script''') <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%202.put&path=0/params/script/value;</code>
+
#текст скрипта ('''script'''). Может быть использован один из двух скриптов: Trace detector 2 и Trace detector 3. Последний учитывает пул неопределенных морских целей. Неопределенная цель - это объект, не обладающий автоматической идентификационной системой (АИС) и имеющий наивысший приоритет слежения. При учитывании пула база не заполняется огромным количеством неопределенных целей. Текст скрипта Trace detector 2: <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%202.put&path=0/params/script/value</code>; Trace detector 3 - <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%203.put&path=0/params/script/value.</code>
 
#единица измерения ('''period_unit'''), например: секунда;
 
#единица измерения ('''period_unit'''), например: секунда;
 
#интервал в единицах измерения ('''period_count'''), например: 1;
 
#интервал в единицах измерения ('''period_count'''), например: 1;
Строка 89: Строка 91:
 
9. У каждой охраняемой зоны настроить следующие параметры:
 
9. У каждой охраняемой зоны настроить следующие параметры:
 
#географический полигон зоны ('''area'''), например: POLYGON((50.22190511 53.2362532,50.22222154 53.23630881,50.22224243 53.23622371,50.2218933105469 53.2361679077148,50.22190511 53.2362532)). Первая и последняя точка в полигоне должны быть идентичными;
 
#географический полигон зоны ('''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 меньше, чем в полигоне;
+
#высота области ('''area_heights'''), например: 121.9 121.6 121.5 121.4. Числа в массиве должны быть разделены, используя клавишу Enter, а количество точек должно быть на 1 меньше, чем в полигоне;
 
#приоритет зоны ('''trace_priority'''), например: normal.
 
#приоритет зоны ('''trace_priority'''), например: normal.
  
Строка 96: Строка 98:
 
#список идентификаторов целей, на которые распространяются данные настройки ('''guids'''), например: 385352c9-e5b2-4c92-af47-c2679806a742;
 
#список идентификаторов целей, на которые распространяются данные настройки ('''guids'''), например: 385352c9-e5b2-4c92-af47-c2679806a742;
 
#максимальная допустимая скорость ('''speed_limit'''), например: 7;
 
#максимальная допустимая скорость ('''speed_limit'''), например: 7;
#генерировать тревожное или обычное событие по превышению скорости скорости ('''speed_limit_alarm'''), например: true;
+
#генерировать тревожное или обычное событие по превышению скорости ('''speed_limit_alarm'''), например: true;
 
#порог изменения скорости ('''speed_change_threshold'''), например: 20;
 
#порог изменения скорости ('''speed_change_threshold'''), например: 20;
 
#генерировать тревожное или обычное событие по резкому изменению скорости ('''speed_change_alarm'''), например: true;
 
#генерировать тревожное или обычное событие по резкому изменению скорости ('''speed_change_alarm'''), например: true;
Строка 107: Строка 109:
  
 
Если types и guids не содержат элементов, то считается, что данный объект хранит настройки по умолчанию.
 
Если types и guids не содержат элементов, то считается, что данный объект хранит настройки по умолчанию.
 +
 +
''Замечания:''
 +
 +
:''1. При добавлении нескольких элементов TraceDetectorSettings каждый из них можно настроить на свой список целей и на различную скорость.''
 +
 +
:''2. Если приоритет цели, либо приоритет зоны равен ignore, то события по ним не генерируются.''
 +
 +
:''3. Если у зоны отсутствуют настройки TraceDetectorSettings, то события по ней не генерируются.''
  
 
==Проверка==
 
==Проверка==
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%202.put&path=0/params/hash/value</code>
+
После запуска скрипта в параметре "Хеш" появится хеш текста скрипта, который при использовании скрипта Trace detector 2 должен быть равен тексту по следующей ссылке <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%202.put&path=0/params/hash/value</code>, а при Trace detector 3 - <code>http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Trace%20detector%203.put&path=0/params/hash/value</code>
  
''Хэш-сумма будет совпадать только в том случае, если скрипт не был изменен.''
+
''Хэш-сумма будет совпадать только в том случае, если скрипт был импортирован и не был изменен.''
  
 
==Алгоритм работы==
 
==Алгоритм работы==
Строка 126: Строка 136:
 
##по полученным спискам идентификаторов в базе трекинга находятся цели т.е. объекты типа '''MoveableObject''';
 
##по полученным спискам идентификаторов в базе трекинга находятся цели т.е. объекты типа '''MoveableObject''';
 
##обновляется параметр цели '''trace_zones''', т.е. список идентификаторов зон, в которых в данный момент находится цель;
 
##обновляется параметр цели '''trace_zones''', т.е. список идентификаторов зон, в которых в данный момент находится цель;
##Дальнейшее выполняется только для целей, приоритет которых отличен от '''ignore'''.
+
 
##в соответствии с параметрами '''trace_highest_types''', '''trace_high_types''', '''trace_normal_types''', '''trace_low_types''' и '''trace_lowest_types''' проставляется определенный приоритет цели в параметр '''trace_priority''', в том случае если приоритет еще не был проставлен, т.е. в данный момент равен '''DEFAULT'''. Автоматическое определение приоритета цели происходит в два этапа: сначала приоритет выбирается при условии точного соответствия типа, а затем с учетом наследования;
+
:Дальнейшее выполняется только для целей, приоритет которых отличен от '''ignore'''.
##генерируются события '''ZoneEvent''', содержащие следующие параметры:
+
 
###'''owner''' - идентификатор зоны;
+
:6. В соответствии с параметрами '''trace_highest_types''', '''trace_high_types''', '''trace_normal_types''', '''trace_low_types''' и '''trace_lowest_types''' проставляется определенный приоритет цели в параметр '''trace_priority''', в том случае если приоритет еще не был проставлен, т.е. в данный момент равен '''DEFAULT'''. Автоматическое определение приоритета цели происходит в два этапа: сначала приоритет выбирается при условии точного соответствия типа, а затем с учетом наследования.
###'''server''' - идентификатор сервера трекинга;
+
 
###'''position''' - географическая позиция цели;
+
:7. Генерируются события '''ZoneEvent''', содержащие следующие параметры:
###'''detector''' - идентификатор триггера;
+
::1. '''owner''' - идентификатор зоны;
###'''action''' - действие: enter или exit;
+
::2. '''server''' - идентификатор сервера трекинга;
###'''target''' - идентификатор цели;
+
::3. '''position''' - географическая позиция цели;
###'''target_type''' - тип цели;
+
::4. '''detector''' - идентификатор триггера;
###'''target_info''' - краткая информация о цели.
+
::5. '''action''' - действие: enter или exit;
#На следующем этапе выбираются все цели с приоритетом отличным от '''ignore''' и '''DEFAULT'''.
+
::6. '''target''' - идентификатор цели;
##По приоритету цели выбирается соответствующий таймаут из параметров '''trace_highest_timeout''', '''trace_high_timeout''', '''trace_normal_timeout''', '''trace_low_timeout''' и '''trace_lowest_timeout'''.
+
::7. '''target_type''' - тип цели;
##Если с момента последнего изменения параметра '''position''' прошло больше секунд, чем указано в выбранном таймауте, то приоритет этой цели сбрасывается в '''DEFAULT'''.
+
::8. '''target_info''' - краткая информация о цели.
#На последнем этапе выбираются все цели входящие в какие-либо охраняемые зоны и имеющие приоритет отличный от '''ignore'''.
+
 
##Если модуль скорости цели (параметр '''speed''') меньше, чем '''stop_threshold''' и цель находится в движении, то генерируется событие '''ZoneEvent''' (с параметром '''alarm = stop_alarm''') с параметром '''action''' равным '''stop'''.
+
:8. На следующем этапе выбираются все цели с приоритетом отличным от '''ignore''' и '''DEFAULT'''.
##Если модуль скорости цели (параметр '''speed''') больше, чем '''stop_threshold''' и цель не находится в движении, то генерируется событие '''ZoneEvent''' (с параметром '''alarm = stop_alarm''') с параметром '''action''' равным '''start'''.
+
::1. По приоритету цели выбирается соответствующий таймаут из параметров '''trace_highest_timeout''', '''trace_high_timeout''', '''trace_normal_timeout''', '''trace_low_timeout''' и '''trace_lowest_timeout'''.
##Если скорость цели (параметр '''speed''') больше чем '''speed_limit''', то генерируется событие '''ZoneEvent''' (с параметром '''alarm = speed_limit_alarm''') с параметром '''action''' равным '''too_fast'''. В случае прекращения превышения скорости генерируется событие с параметром '''action''' равным '''not_too_fast'''.
+
::2. Если с момента последнего изменения параметра '''position''' прошло больше секунд, чем указано в выбранном таймауте, то приоритет этой цели сбрасывается в '''DEFAULT'''.
##Если разница между скоростью цели (параметр '''speed''') и ее предыдущим значением больше, чем '''speed_change_threshold''', то генерируется событие '''ZoneEvent''' (с параметром '''alarm = speed_change_alarm''') с параметром '''action''' равным '''severe_speed_change'''.
+
 
##Если разница между направлением цели (параметр '''heading''') и ее предыдущим значением больше, чем '''heading_change_threshold''', то генерируется событие '''ZoneEvent''' (с параметром '''alarm = heading_change_alarm''') с параметром '''action''' равным '''severe_heading_change'''.
+
:9. На последнем этапе выбираются все цели входящие в какие-либо охраняемые зоны и имеющие приоритет отличный от '''ignore'''.
##Если расстояние между выбранной целью и какой-либо другой целью в той же зоне меньше '''approach_threshold''', то генерируется событие '''ZoneEvent''' (с параметром '''alarm = approach_alarm''') с параметром action равным '''dangerous_approach''' и параметром '''participants''', содержащим список идентификаторов, целей находящихся в опасной близости. В случае прекращения опасного сближения генерируется событие с параметром '''action''' равным '''no_dangerous_approach'''.
+
::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, то события по ней не генерируются.
  
 
==Пример работы==
 
==Пример работы==
Строка 154: Строка 172:
 
1. Создать схему по выше описанному алгоритму (см. [[Детектор_вхождения_целей_в_зоны_(Trace_detector_1)#Построение_схемы|Построение схемы]]).
 
1. Создать схему по выше описанному алгоритму (см. [[Детектор_вхождения_целей_в_зоны_(Trace_detector_1)#Построение_схемы|Построение схемы]]).
 
   
 
   
[[File:TraceDetector_3.PNG|центр|1000px]]
+
[[File:TraceDetector_10.png|центр|1000px]]
  
2. Добавить элементы Зона и Мужчина.
+
2. Добавить элемент Военный корабль "WarShip".
  
 
[[File:TraceDetector_7.PNG|центр|1000px]]
 
[[File:TraceDetector_7.PNG|центр|1000px]]
Строка 169: Строка 187:
 
#задействовать триггер ('''enabled'''): true;
 
#задействовать триггер ('''enabled'''): true;
 
#в настройках:
 
#в настройках:
##типы целей, для которых следует генерировать тревожное событие ZoneAlarm ('''spawn_alarm_types'''): UndefinedSeaTarget;
+
##типы целей, для которых следует генерировать нормальное событие ZoneEvent ('''spawn_event_types'''): WarShip;
##типы целей, для которых следует генерировать нормальное событие ZoneEvent ('''spawn_event_types'''): ExtraLargeShip;
+
##типы целей с высшим приоритетом ('''trace_highest_types'''): WarShip;
##типы целей с высшим приоритетом ('''trace_highest_types'''): ExtraLargeShip;
+
##типы целей с высоким приоритетом ('''trace_high_types'''): WarShip;
##типы целей с высоким приоритетом ('''trace_high_types'''): LargeShip;
+
##типы целей с нормальным приоритетом ('''trace_normal_types'''): WarShip;
##типы целей с нормальным приоритетом ('''trace_normal_types'''): Human;
+
##типы целей с низким приоритетом ('''trace_low_types'''): WarShip;
##типы целей с низким приоритетом ('''trace_low_types'''): TinyShip;
+
##типы целей с низшим приоритетом ('''trace_lowest_types'''): WarShip;
##типы целей с низшим приоритетом ('''trace_lowest_types'''): Boat;
 
 
##максимальное количество секунд с последнего обновления цели ('''trace_timeout'''): 500;
 
##максимальное количество секунд с последнего обновления цели ('''trace_timeout'''): 500;
 +
#таймаут на сброс приоритета для целей с наивысшим приоритетом ('''trace_highest_timeout''') : 300;
 +
#таймаут на сброс приоритета для целей с высоким приоритетом ('''trace_high_timeout'''): 240;
 +
#таймаут на сброс приоритета для целей с нормальным приоритетом ('''trace_normal_timeout'''): 180;
 +
#таймаут на сброс приоритета для целей с низким приоритетом ('''trace_low_timeout'''): 60;
 +
#таймаут на сброс приоритета для целей с низшим приоритетом ('''trace_lowest_timeout'''): 207.
  
 
5. Настроить следующие параметры Зоны:
 
5. Настроить следующие параметры Зоны:
  
 
#область ('''area'''): POLYGON((50.22228403 53.2363014,50.2224350 53.23636588,50.2224236 53.2362976,50.22228403 53.2363014));
 
#область ('''area'''): POLYGON((50.22228403 53.2363014,50.2224350 53.23636588,50.2224236 53.2362976,50.22228403 53.2363014));
#приоритет зоны ('''trace_priority'''), например: normal.
+
#высота области (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.
 +
 
 +
Для ввода идентификатора необходимо зайти в свойства элемента WarShip и нажать на ссылку "WarShip". Идентификатор будет скопирован в буфер обмена. В данном случае это: 385352c9-e5b2-4c92-af47-c2679806a742.
 +
[[File:TraceDetector_12.png|центр]]
 +
 
 +
''Замечания:''
 +
 
 +
:''1. При добавлении нескольких элементов TraceDetectorSettings каждый из них можно настроить на свой список целей и на различную скорость.''
 +
 
 +
:''2. Если приоритет цели, либо приоритет зоны равен ignore, то события по ним не генерируются.''
 +
 
 +
:''3. Если у зоны отсутствуют настройки TraceDetectorSettings, то события по ней не генерируются.''
  
Далее необходимо запустить скрипт "Симулятор движения (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.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 должен быть одним и тем же.''
+
Далее если объект не движется, можно запустить скрипт "Симулятор движения (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 должен быть одним и тем же.''
  
 
'''Результат''':
 
'''Результат''':
  
У объекта Мужчина в параметр зона слежения ('''trace_zones''') будет установлена зона, в которой в данный момент находится цель.
+
Для просмотра результата необходимо зайти в [[Онлайн мониторинг событий | Менеджер событий]].
 +
 
 +
Настроить вкладку на необходимый сервер и параметр "Событие в зоне".
 +
 
 +
[[File:TraceDetector_13.png|центр|600px]]
 +
 
 +
После этого будет отображен список событий в зоне. Так как скорость военного корабля превышала максимальную допустимую скорость, то генерируется событие too_fast.
 +
 
 +
[[File:TraceDetector_14.png|центр|1400px]]
 +
 
 +
По нажатию на кнопку "Показать информацию" [[File:manager_38.PNG]] раскроется подробная информация о событии.
 +
 
 +
[[File:TraceDetector_15.png|центр|1400px]]
  
 
==Дополнения==
 
==Дополнения==
Строка 194: Строка 254:
 
Для этого необходимо:
 
Для этого необходимо:
  
:1. Импортировать скрипт по следующей ссылке: <code>http://maps.integra-s.com:5434/resources/typedef2017/egs/Trace%20detector%202.put.</code>
+
:1. Импортировать скрипт по ссылке. При выборе скрипта Trace detector 2: <code>http://maps.integra-s.com:5434/resources/typedef2017/egs/Trace%20detector%202.put.</code>, при выборе Trace detector 3: <code>http://maps.integra-s.com:5434/resources/typedef2017/egs/Trace%20detector%203.put</code>
 
:2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
 
:2. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
  
 
[[File:Scheduled_com_1.png|центр|1000px]]
 
[[File:Scheduled_com_1.png|центр|1000px]]
  
:3. В открывшемся окне выбрать импортированный скрипт "Trace detector 1.put".
+
:3. В открывшемся окне выбрать импортированный скрипт "Trace detector.put".
  
 
[[File:TraceDetector_1.PNG|центр|1000px]]
 
[[File:TraceDetector_1.PNG|центр|1000px]]

Текущая версия на 14:39, 21 мая 2019

Данный скрипт предназначен для:

  1. определения вхождения целей в охраняемые зоны;
  2. генерирования событий о входе цели в зону и выходе цели из зоны;
  3. расчета и сохранения списка зон, в которые входит цель, и приоритета слежения за целью;
  4. генерирования событий о резком изменении скорости и направления цели;
  5. генерирования событий об остановке и начале движения после остановки;
  6. генерирования событий об превышении скорости и возврате к нормальной скорости;
  7. генерирования событий об начале и окончании опасного сближения.

Обычно данный скрипт работает в паре с другим скриптом PTZ Tracer.

Скрипт работает с одной локальной базой трекинга и одной или несколькими удаленными базами интеграции.

Зависимости

Скрипт зависит от какого-либо другого модуля поставляющего географические координаты движущихся объектов базе трекинга, т.е. меняющего параметр position у объектов наследников типа MoveableObject.

Построение схемы

Для построения схемы требуется:

1. Добавить триггер EgsScheduled.

Для этого необходимо:
1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент EgsScheduled.
Scheduled com 4.png
2. Дважды нажать на выбранный элемент, после чего появится окно для добавления элемента.
Scheduled com 5.png
3. Нажать кнопку "Добавить". Элемент появится на рабочей области.
Scheduled com 3.png
Также все элементы можно добавлять путем захвата и перетаскивания на рабочую область левой кнопкой мыши.

2. Аналогично пункту 1 добавить элементы Egs Модуль EgsModule', менеджер устройств AcuarioManager, Компьютер, Зону и объект TraceDetectorSettings, содержащий настройки скрипта для данной зоны и указанных типов (либо идентификаторов) целей.

TraceDetector 9.png

3. Настроить сетевой адрес компьютера.

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

В окне свойств элемента указать ip адрес используемого компьютера в строке "Сетевой адрес".

Scheduled com 7.PNG

4. Связать EgsScheduled и Egs Модуль, подключив пины «Egs вход: EgsInput» у EgsScheduled и «Egs выход: EgsOutput» у Egs Модуля.

TraceDetector 2.PNG

5. Привязать пин "Привязка к менеджеру: ManagingContent" из Egs Модуля к пину "Менеджер устройств: ManagingContainer" из Менеджера устройств.

Scheduled com 9.PNG

6. Подключить пин "ПО: SoftwareContent" из Менеджера устройств с пином "Установленное ПО: SoftwareContainer" из Компьютера.

TraceDetector 3.PNG

7. Подключить пин "Логический вход: LogicInput" из Зоны с пином "Логический выход: LogicOutput" из TraceDetectorSettings. C элементом Зона может быть связано несколько элементов TraceDetectorSettings.

TraceDetector 10.png

8. Настроить следующие параметры триггера:

  1. текст скрипта (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.
  2. единица измерения (period_unit), например: секунда;
  3. интервал в единицах измерения (period_count), например: 1;
  4. точное время внутри интервала (period_time), например: 00:00:00, 14:30:00;
  5. повторять через интервал или выполнить один раз в указанное время (repeat), например: 0 (бесконечно), 1 (один раз), 100;
  6. задействовать триггер (enabled), например: true;
  7. типы целей, для которых следует генерировать тревожное событие (spawn_alarm_types), например: UndefinedSeaTarget;
  8. типы целей с высшим приоритетом (trace_highest_types), например: ExtraLargeShip, UndefinedSeaTarget;
  9. типы целей с высоким приоритетом (trace_high_types), например: LargeShip;
  10. типы целей с нормальным приоритетом (trace_normal_types), например: SmallShip;
  11. типы целей с низким приоритетом (trace_low_types), например: TinyShip;
  12. типы целей с низшим приоритетом (trace_lowest_types), например: Boat;
  13. максимальное количество секунд с последнего обновления цели (trace_timeout), например: 500;
  14. таймаут на сброс приоритета для целей с наивысшим приоритетом (trace_highest_timeout), например: 300;
  15. таймаут на сброс приоритета для целей с высоким приоритетом (trace_high_timeout), например: 240;
  16. таймаут на сброс приоритета для целей с нормальным приоритетом (trace_normal_timeout), например: 180;
  17. таймаут на сброс приоритета для целей с низким приоритетом (trace_low_timeout), например: 60;
  18. таймаут на сброс приоритета для целей с наинизшим приоритетом (trace_lowest_timeout), например: 20.

Настройку параметров триггера можно выполнить, открыв свойства элемента.

TraceDetector 6.PNG

9. У каждой охраняемой зоны настроить следующие параметры:

  1. географический полигон зоны (area), например: POLYGON((50.22190511 53.2362532,50.22222154 53.23630881,50.22224243 53.23622371,50.2218933105469 53.2361679077148,50.22190511 53.2362532)). Первая и последняя точка в полигоне должны быть идентичными;
  2. высота области (area_heights), например: 121.9 121.6 121.5 121.4. Числа в массиве должны быть разделены, используя клавишу Enter, а количество точек должно быть на 1 меньше, чем в полигоне;
  3. приоритет зоны (trace_priority), например: normal.

10. У каждого объекта TraceDetectorSettings настроить следующие параметры:

  1. список типов целей, на которые распространяются данные настройки (types), например: WarShip;
  2. список идентификаторов целей, на которые распространяются данные настройки (guids), например: 385352c9-e5b2-4c92-af47-c2679806a742;
  3. максимальная допустимая скорость (speed_limit), например: 7;
  4. генерировать тревожное или обычное событие по превышению скорости (speed_limit_alarm), например: true;
  5. порог изменения скорости (speed_change_threshold), например: 20;
  6. генерировать тревожное или обычное событие по резкому изменению скорости (speed_change_alarm), например: true;
  7. порог изменения направления (heading_change_threshold), например: 40;
  8. генерировать тревожное или обычное событие по резкому изменению направления (heading_change_alarm), например: true;
  9. порог отсутствия движения (stop_threshold), например: 0.6;
  10. генерировать тревожное или обычное событие по началу или окончанию движения (stop_alarm), например: false;
  11. минимальное допустимое расстояние между целями (approach_threshold), например: 20;
  12. генерировать тревожное или обычное событие по опасному сближению (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

Хэш-сумма будет совпадать только в том случае, если скрипт был импортирован и не был изменен.

Алгоритм работы

  1. Типы из параметров триггера trace_highest_types, trace_high_types, trace_normal_types, trace_low_types и trace_lowest_types объединяются в общий список отслеживаемых типов целей.
  2. Bсе типы целей должны быть унаследованы от MoveableObject.
  3. Выбираются все зоны из всех баз, подключенных к серверу.
  4. Перебирает все зоны, у которых параметр trace_priority, установлен в значение, отличное от ignore.
  5. Далее для каждой полученной зоны:
    1. в памяти создается список идентификаторов целей, находящихся в этой зоне в данный момент;
    2. выполняет запрос на сервер getObjectsByPoligon с параметром зоны area, списком отслеживаемых типов целей и параметром триггера trace_timeout;
    3. полученный список идентификаторов целей в зоне сравнивается с сохраненным;
    4. вычисляются цели, вошедшие в зону и вышедшие из нее;
    5. по полученным спискам идентификаторов в базе трекинга находятся цели т.е. объекты типа MoveableObject;
    6. обновляется параметр цели 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. Создать схему по выше описанному алгоритму (см. Построение схемы).

TraceDetector 10.png

2. Добавить элемент Военный корабль "WarShip".

TraceDetector 7.PNG

3. Настроить параметр "Сетевой адрес" компьютера.

4. Настроить следующие параметры триггера:

  1. единица измерения (period_unit): секунда;
  2. интервал в единицах измерения (period_count): 1;
  3. повторять через интервал или выполнить один раз в указанное время (repeat): 0;
  4. задействовать триггер (enabled): true;
  5. в настройках:
    1. типы целей, для которых следует генерировать нормальное событие ZoneEvent (spawn_event_types): WarShip;
    2. типы целей с высшим приоритетом (trace_highest_types): WarShip;
    3. типы целей с высоким приоритетом (trace_high_types): WarShip;
    4. типы целей с нормальным приоритетом (trace_normal_types): WarShip;
    5. типы целей с низким приоритетом (trace_low_types): WarShip;
    6. типы целей с низшим приоритетом (trace_lowest_types): WarShip;
    7. максимальное количество секунд с последнего обновления цели (trace_timeout): 500;
  6. таймаут на сброс приоритета для целей с наивысшим приоритетом (trace_highest_timeout) : 300;
  7. таймаут на сброс приоритета для целей с высоким приоритетом (trace_high_timeout): 240;
  8. таймаут на сброс приоритета для целей с нормальным приоритетом (trace_normal_timeout): 180;
  9. таймаут на сброс приоритета для целей с низким приоритетом (trace_low_timeout): 60;
  10. таймаут на сброс приоритета для целей с низшим приоритетом (trace_lowest_timeout): 207.

5. Настроить следующие параметры Зоны:

  1. область (area): POLYGON((50.22228403 53.2363014,50.2224350 53.23636588,50.2224236 53.2362976,50.22228403 53.2363014));
  2. высота области (area_heights): 121.9 121.6 121.5. Массив чисел должен быть разделен, используя клавишу Enter;
  3. приоритет зоны (trace_priority) : normal.

6. У объекта TraceDetectorSettings настроить следующие параметры:

  1. список типов целей, на которые распространяются данные настройки (types): WarShip;
  2. список идентификаторов целей, на которые распространяются данные настройки (guids): 385352c9-e5b2-4c92-af47-c2679806a742;
  3. максимальная допустимая скорость (speed_limit): 7;
  4. генерировать тревожное или обычное событие по превышению скорости скорости (speed_limit_alarm): true;
  5. порог изменения скорости (speed_change_threshold): 20;
  6. генерировать тревожное или обычное событие по резкому изменению скорости (speed_change_alarm): true;
  7. порог изменения направления (heading_change_threshold): 40;
  8. генерировать тревожное или обычное событие по резкому изменению направления (heading_change_alarm): true;
  9. порог отсутствия движения (stop_threshold): 0.6;
  10. генерировать тревожное или обычное событие по началу или окончанию движения (stop_alarm): true;
  11. минимальное допустимое расстояние между целями (approach_threshold): 20;
  12. генерировать тревожное или обычное событие по опасному сближению (approach_alarm): true.

Для ввода идентификатора необходимо зайти в свойства элемента WarShip и нажать на ссылку "WarShip". Идентификатор будет скопирован в буфер обмена. В данном случае это: 385352c9-e5b2-4c92-af47-c2679806a742.

TraceDetector 12.png

Замечания:

1. При добавлении нескольких элементов TraceDetectorSettings каждый из них можно настроить на свой список целей и на различную скорость.
2. Если приоритет цели, либо приоритет зоны равен ignore, то события по ним не генерируются.
3. Если у зоны отсутствуют настройки TraceDetectorSettings, то события по ней не генерируются.

Далее если объект не движется, можно запустить скрипт "Симулятор движения (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 должен быть одним и тем же.

Результат:

Для просмотра результата необходимо зайти в Менеджер событий.

Настроить вкладку на необходимый сервер и параметр "Событие в зоне".

TraceDetector 13.png

После этого будет отображен список событий в зоне. Так как скорость военного корабля превышала максимальную допустимую скорость, то генерируется событие too_fast.

TraceDetector 14.png

По нажатию на кнопку "Показать информацию" Manager 38.PNG раскроется подробная информация о событии.

TraceDetector 15.png

Дополнения

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. Выбрать пункт главного меню "Файл". После этого выбрать "Импорт элементов".
Scheduled com 1.png
3. В открывшемся окне выбрать импортированный скрипт "Trace detector.put".
TraceDetector 1.PNG
Элемент появится на рабочей области.
Scheduled com 3.png

2. В пункте 7 раздела Построение схемы редактирование параметров элемента можно осуществить, выделив элемент правой кнопкой мыши и в контекстном меню выбрав пункт "Редактировать параметры".

TraceDetector 4.png
После этого откроется окно для редактирования параметров.
TraceDetector 5.PNG