Пространственные фильтры в сервисе GeoEvent фильтруют события GeoEvents на основе пространственных отношений с геозоной. Геометрии, которые определяют геозону, должны быть импортированы в GeoEvent Server из опубликованного сервиса объектов перед настройкой пространственного фильтра.
Поддерживаются следующие пространственные операторы:
- INSIDE – геометрия GeoEvent считается внутри геозоны, если его геометрия полностью попадает в пределы области, определенной геозоной. Данный оператор определяет, расположена ли точка, связанная с событием GeoEvent, внутри области интереса.
- OUTSIDE – геометрия GeoEvent считается за пределами геозоны, если его геометрия полностью попадает за пределы области, определенной геозоной. Данный оператор определяет, расположена ли точка, связанная с событием GeoEvent, вне области интереса.
- ENTER – геометрия GeoEvent считается входящей в геозону, если его геометрия теперь попадает внутрь области, определенной геозоной, в то время как предыдущая позиция события GeoEvent из того же трека находилась за пределами геозоной. После обнаружения условия enter и получения разрешения для события GeoEvent пройти через фильтр, отслеживаемый объект должен сообщить как минимум об одном событии вне геозоны, перед тем, как другое условие enter будет признано (распознано).
- EXIT – геометрия GeoEvent считается выходящей из геозоны, если его геометрия теперь попадает за пределы области, определенной геозоной, в то время как предыдущая позиция события GeoEvent из того же трека находилась внутри геозоны. После обнаружения условия exit и получения разрешения для события GeoEvent пройти через фильтр, отслеживаемый объект должен найти еще, как минимум, одно событие внутри геозоны, перед тем, как другое условие exit будет признано (распознано).
Обычно набор геозон определяет области интереса и импортируются из сервиса объектов, предоставляющего полигональные объекты. Геозоны не обязательно должны быть представлены полигональными областями, они также могут быть импортированы из точечных или линейных объектов.
Пространственные операторы ниже могут быть использованы с различными типами геометрий. Эти пространственные операторы возвращают булево значение, указывающее, существует ли описанные отношения между геозоной и геометрией GeoEvent. Некоторые отношения требуют, чтобы геометрия события GeoEvent имела ту же размерность, что и геозона, с которым она сравнивается, в то время как другие имеют более гибкие пространственные ограничения. Многие из пространственных операторов ниже являются взаимоисключающими операторами Клементини (Clementini).
- CONTAINS – геометрия события будет содержать геозону, если геозона является подмножеством геометрии события и пересечение двух этих геометрий не является пустым. Содержит логически противопоставляется оператору Находится в. Точечная геометрия не может содержать полилинии или полигоны, следовательно невозможно, чтобы точка, и связанное с ней событие включало линию или полигон, импортированное как геозона. Теоретически пространственные отношения, в которых точка содержит точку, или линия содержит линию возможны, но проверять это не рекомендуется Незначительные различия в геометрии, например вызванные несовпадением привязки, могут привести к тому, что точка или линия, которые должны совпадать в пределах геозоны, окажутся не совпадающими, что в свою очередь будет оценено как ложь при построении отношения Содержит.
Для получения дополнительной информации об операторе Содержит см. раздел Метод IRelationalOperator.Contains в .NET API Reference.
- CROSSES – геометрия события перекрещивается с геозоной, если в геометрии меньшего порядка присутствует пересечение. Две полилинии перекрещиваются, если перекрест присутствует в одной или нескольких точках, при этом, хотя бы одна из них не является конечной точкой. Полилиния и полигон перекрещиваются, если они имеют общую линию или точку внутри полигона, которая не эквивалентна всей полилинии. Перекрещивания применимы только в отношениях полилиния/полилиния, полилиния/полигон или полигон/полилиния. Если хотя бы одна геометрия пустая – геометрии не перекрещиваются.
Для получения дополнительной информации об операторе Пересекает см. раздел Метод IRelationalOperator.Crosses в .NET API Reference.
- DISJOINT – геометрия события считается разъединенной с геозоной, если обе геометрии не пересекаются. Обратите внимание, что геометрия события может не совпадать с одной геозоной, но при это иметь пересечения с другой геозоной. Будьте внимательны при указании пространственного выражения. В выражении указывается не только геометрия события, но и указатель, например любая или вся, а также набор геозон, определяющих указанный в выражении шаблон совпадений (например, SomeCategory/.*).
Для получения дополнительной информации об операторе Disjoint см. раздел Метод IRelationalOperator.Disjoint в .NET API Reference.
- EQUALS – геометрия события равна геометрии геозоны, если их симметричная разность является пустым поднабором. Если вы переберёте каждый сегмент в каждой геометрии для сравнения типа сегмента и координат, и обнаружите, что они являются одинаковыми (с применением кластерных допусков пространственной привязки при определении равенства координат), то две геометрии будут считаться равными.
Для получения дополнительной информации об операторе Equals см. раздел Метод IRelationalOperator.Equals в .NET API Reference.
- INTERSECTS – геометрия события пересекает геометрию геозоны, если две геометрий не разъединены. Пересекает логически противопоставляется оператору Разъединены. Точечное событие, которое находится в области геозоны (полигон), также и пересекает эту геозону. Полилинейное или полигональное событие может пересекать геозону, но не обязательно находится полностью внутри геозоны. Геометрия события может пересекать одну геозону внутри набора геозон и может всё ещё быть DISJOINT ANY (например, разделено одним или более). Геометрия события не DISJOINT ALL пока она пересечет хотя бы одну геозону в наборе.
- OVERLAPS – геометрия события перекрывает геозону, если существует пересечение, чьё измерение является тем же, что и у геометрии, которая рассматривается как пересечение и не эквивалентно ни геометрии объекта, ни геозоне. Перекрытия применимы только к отношениям полилиния/полилиния, полигон/полигон и мультиточка/мультиточка. Если хотя бы одна геометрия пустая, геометрии не перекрываются.
*Точечная геометрия нарушает условие равнозначности, точечное местоположение события не может перекрывать геозону, геометрия которой также точечная.
- TOUCHES – геометрия события соприкасается с геозоной, если существует пересечение, и внутренняя часть пересечения пуста. Это означает, что две геометрии только касаются вершинами, которые определяют геометрию, а не точками, располагающимися между вершинами. Свойство Касается не определено для отношений точка/точка. Если хотя бы одна геометрия пустая, геометрии не касаются.
Для получения дополнительной информации об операторе Касается см. раздел Метод IRelationalOperator.Touches в .NET API Reference.
- WITHIN – геометрия события считается находящейся внутри геозоны, если две геометрии пересекаются, и пересечение их внутренних частей не является пустым. Находится в логически противопоставляется оператору Содержит.
Для получения дополнительной информации об операторе В пределах см. раздел Метод IRelationalOperator.Within в .NET API Reference.
Более подробно о реляционных операторах см. в разделе Интерфейс IRelationalOperator в .NET API Reference.
Для более подробной информации о работе с геозонами в GeoEvent Server см. раздел Управление геозонами.