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