Пространственные фильтры в сервисе 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 в ArcObjects API Reference for .NET для более подробной информации об операторе Содержит.
- CROSSES – геометрия события перекрещивается с геозоной, если в геометрии меньшего порядка присутствует пересечение. Две полилинии перекрещиваются, если перекрест присутствует в одной или нескольких точках, при этом, хотя бы одна из них не является конечной точкой. Полилиния и полигон перекрещиваются, если они имеют общую линию или точку внутри полигона, которая не эквивалентна всей полилинии. Перекрещивания применимы только в отношениях полилиния/полилиния, полилиния/полигон или полигон/полилиния. Если хотя бы одна геометрия пустая – геометрии не перекрещиваются.
См. Метод IRelationalOperator.Crosses в ArcObjects API Reference for .NET для более подробной информации об операторе Перекрещивает.
- DISJOINT – геометрия события считается разъединенной с геозоной, если обе геометрии не пересекаются. Обратите внимание, что геометрия события может не совпадать с одной геозоной, но при это иметь пересечения с другой геозоной. Будьте внимательны при указании пространственного выражения. В выражении указывается не только геометрия события, но и указатель, например любая (какая-либо) или вся, а также набор геозон, определяющих указанный в выражении шаблон совпадений
(например, SomeCategory/.*).
См. Метод IRelationalOperator.Disjoint в ArcObjects API Reference for .NET для более подробной информации об операторе Разъединены.
- EQUALS – геометрия события равна геометрии геозоны, если их симметричная разность является пустым поднабором. Если вы переберёте каждый сегмент в каждой геометрии для сравнения типа сегмента и координат, и обнаружите, что они являются одинаковыми (с применением кластерных допусков пространственной привязки при определении равенства координат), то две геометрии будут считаться равными.
См. Метод IRelationalOperator.Equals в ArcObjects API Reference for .NET для более подробной информации об операторе Равно.
- INTERSECTS – геометрия события пересекает геометрию геозоны, если две геометрий не разъединены. Пересекает логически противопоставляется оператору Разъединены. Точечное событие, которое находится в области геозоны (полигон), также и пересекает эту геозону. Полилинейное или полигональное событие может пересекать геозону, но не обязательно находится полностью внутри геозоны. Геометрия события может пересекать одну геозону внутри набора геозон и может всё ещё быть DISJOINT ANY (например, разделено одним или более). Геометрия события не DISJOINT ALL пока она пересечет хотя бы одну геозону в наборе.
- OVERLAPS – геометрия события перекрывает геозону, если существует пересечение, чьё измерение является тем же, что и у геометрии, которая рассматривается как пересечение и не эквивалентно ни геометрии объекта, ни геозоне. Перекрытия применимы только к отношениям полилиния/полилиния, полигон/полигон и мультиточка/мультиточка. Если хотя бы одна геометрия пустая, геометрии не перекрываются.
*Точечная геометрия нарушает условие равнозначности, точечное местоположение события не может перекрывать геозону, геометрия которой также точечная.
- TOUCHES – геометрия события соприкасается с геозоной, если существует пересечение, и внутренняя часть пересечения пуста. Это означает, что две геометрии только касаются вершинами, которые определяют геометрию, а не точками, располагающимися между вершинами. Свойство Касается не определено для отношений точка/точка. Если хотя бы одна геометрия пустая, геометрии не касаются.
См. Метод IRelationalOperator.Touches Method в ArcObjects API Reference for .NET для более подробной информации об операторе Касается.
- WITHIN – геометрия события считается находящейся внутри геозоны, если две геометрии пересекаются, и пересечение их внутренних частей не является пустым. Находится в логически противопоставляется оператору Содержит.
См. Метод IRelationalOperator.Within Method в ArcObjects API Reference for .NET для более подробной информации об операторе Находится в.
Более подробно о реляционных операторах см. IRelationalOperator Interface в ArcObjects API Reference for .NET.
Для более подробной информации о работе с геозонами в GeoEvent Server см. раздел Управление геозонами.