GeoEvent 服务中的空间过滤器根据与地理围栏的空间关系过滤 GeoEvent。 在配置空间过滤器之前,必须从发布的要素服务将指定地理围栏的几何导入 GeoEvent Server。
支持以下空间运算符:
- INSIDE - 如果 GeoEvent 的几何全部在 GeoFence 定义的区域内,则认为 GeoEvent 的几何在 GeoFence 内部。 该运算符可确定和 GeoEvent 相关联的点是否在感兴趣区域内。
- OUTSIDE - 如果 GeoEvent 的几何全部在地理围栏定义的区域外,则认为 GeoEvent 的几何在地理围栏外部。 该运算符可确定和 GeoEvent 相关联的点是否在感兴趣区域外。
- ENTER - 当在同一追踪的前一 GeoEvent 位于 GeoFence 外部时,如果当前 GeoEvent 的几何在 GeoFence 定义的区域内,则认为 GeoEvent 的几何进入了 GeoFence。 在检测到进入条件后,GeoEvent 便可通过过滤器,在识别另一次进入前,追踪的对象必须至少报告一个 GeoFence 外部的事件。
- EXIT - 当在同一追踪的前一 GeoEvent 位于 GeoFence 内部时,如果当前 GeoEvent 的几何在 GeoFence 定义的区域外,则认为 GeoEvent 的几何退出了 GeoFence。 在检测到退出条件后,GeoEvent 便可通过过滤器,在识别另一次退出前,追踪的对象必须至少报告一个 GeoFence 内部的事件。
通常,一组地理围栏会定义感兴趣区域并从提供面要素的要素服务导入。 地理围栏不是必须表示面区域,它们也可以从点和线要素导入。
以下空间运算符可用于不同类型的几何。 这些空间运算符返回一个布尔型参数,指明在地理围栏和 GeoEvent 的几何之间是否存在已描述的关系。 某些关系要求 GeoEvent 的几何和与其相比较的 GeoFence 具有相同的维度,而其他关系则有更为灵活的维度限制。 以下许多空间运算符都是相互排斥的 Clementini 运算符。
- CONTAINS - 如果 geofence 是某个事件的几何的子集且这两个几何的交集不为空,该事件的几何将包含 geofence。 “包含”与“被包含”在逻辑上相反。 点几何不能包含折线或面,因此与事件关联的点不能包含作为 GeoFence 导入的线或区域。 点可以包含点或线以包含线,但不推荐测试这种空间关系。 由于投影导致的几何形状的细微差异可能生成一个您期望与 GeoFence 相重合但实际上不完全重合的点或线(在这种情况下,“包含”关系将评估为 false)。
有关包含运算符的详细信息,请参阅 .NET API 参考中的 IRelationalOperator.Contains 方法。
- CROSSES - 如果相交存在于较小维度的几何中,那么事件的几何会与 GeoFence 交叉。 如果两条折线在一个或多个点处相交并且至少一个点不是端点,那么它们会交叉。 如果折线和面在面的内部共享一条折线或一个点(不等于整个折线),那么该折线与面交叉。 交叉仅适用于折线/折线、折线/面或面/折线关系。 如果几何中的任何一个为空,则几何不交叉。
有关交叉运算符的详细信息,请参阅 .NET API 参考中的 IRelationalOperator.Crosses 方法。
- DISJOINT - 如果两个几何不相交,则事件的几何被认为与 GeoFence 不相交。 请注意,事件的几何可以与一个 GeoFence 不相交,同时与另一个 GeoFence 相交。 在指定空间表达式时请注意。 表达式不仅可以指定事件的几何,还可以指定范围(任何或全部),以及一组使用正则表达式模式匹配(例如 SomeCategory/.*)标识的地理围栏。
有关不相交运算符的详细信息,请参阅 .NET API 参考中的 IRelationalOperator.Disjoint 方法。
- EQUALS - 如果事件几何与 GeoFence 几何的对称差为空集,则它们的几何相等。 如果您要迭代每个几何中的各线段并比较线段类型和坐标,并且发现结果均相同(使用空间参考的拓扑容差确定坐标是否相等),则认为这两个几何相等。
有关等于运算符的详细信息,请参阅 .NET API 参考中的 IRelationalOperator.Equals 方法。
- INTERSECTS - 如果两个几何相交,则事件的几何与 GeoFence 相交。 “相交”与“不相交”在逻辑上相反。 位于某个地理围栏区域(面)内的某个事件的点也与该地理围栏相交。 即使某个事件的折线或面未完全位于某个 GeoFence 内,也可以与该 GeoFence 交叉。 某个事件的几何可以与一组 GeoFence 内的某个 GeoFence 相交,并且仍然为 DISJOINT ANY(例如,不相交一个或多个)。 该事件的几何不是 DISJOINT ALL,因为它至少与集合中的一个 GeoFence 相交。
- OVERLAPS - 如果相交尺寸等于正在考虑几何的尺寸,并且相交不等于事件几何或 GeoFence,则事件几何与 geofence 重叠。 重叠仅适用于折线/折线、面/面以及多点/多点关系。 如果几何中的任何一个为空,则几何不重叠。
* 点几何不符合相等条件,因此事件的点位置不能与几何也是点的 GeoFence 重叠。
- TOUCHES - 如果存在交集并且交集的内部为空,则事件的几何与 GeoFence 接触。 这意味着两个几何仅在定义几何的折点处接触,而不是在折点之间的某个点处接触。 点/点关系无接触。 如果几何中的任何一个为空,则几何不接触。
有关接触运算符的详细信息,请参阅 .NET API 参考中的 IRelationalOperator.Touchess 方法。
- WITHIN - 当两个几何相交并且它们内部的交集不为空时,则认为事件的几何被包含在 GeoEvent 内。 “被包含”与“包含”在逻辑上相反。
有关被包含运算符的详细信息,请参阅 .NET API 参考中的 IRelationalOperator.Within Method 方法。
有关关系运算符的详细信息,请参阅 .NET API 参考中的 IRelationalOperator 接口。
有关在 GeoEvent Server 中使用地理围栏的详细信息,请参阅管理地理围栏。