Skip To Content

空间过滤器

GeoEvent 服务中的空间过滤器根据与 GeoFence 的空间关系过滤 GeoEvent。在配置空间过滤器之前,必须从发布的要素服务将指定 GeoFence 的几何导入 GeoEvent Server

支持以下空间运算符:

  • INSIDE - 如果 GeoEvent 的几何全部在 GeoFence 定义的区域内,则认为 GeoEvent 的几何在 GeoFence 内部。该运算符可确定和 GeoEvent 相关联的点是否在感兴趣的区域内。
  • OUTSIDE - 如果 GeoEvent 的几何全部在 GeoFence 定义的区域外,则认为 GeoEvent 的几何在 GeoFence 外部。该运算符可确定和 GeoEvent 相关联的点是否在感兴趣的区域外。

    空间过滤器用于确定 GeoEvent 何时在 GeoFence 内部和外部

  • ENTER - 当在同一追踪的前一 GeoEvent 位于 GeoFence 外部时,如果当前 GeoEvent 的几何在 GeoFence 定义的区域内,则认为 GeoEvent 的几何进入了 GeoFence。在检测到进入条件后,GeoEvent 便可通过过滤器,在识别另一次进入前,追踪的对象必须至少报告一个 GeoFence 外部的事件。
  • EXIT - 当在同一追踪的前一 GeoEvent 位于 GeoFence 内部时,如果当前 GeoEvent 的几何在 GeoFence 定义的区域外,则认为 GeoEvent 的几何退出了 GeoFence。在检测到退出条件后,GeoEvent 便可通过过滤器,在识别另一次退出前,追踪的对象必须至少报告一个 GeoFence 内部的事件。

    空间过滤器用于确定 GeoEvent 何时进入和退出 GeoFence

注:

当将几何字段指定为空间过滤器表达式的一部分时,上述 EXISTS 和 ISNULL 属性运算符同样适用。

通常,一组 GeoFence 会定义感兴趣的区域并从提供面要素的要素服务中导入。GeoFence 并不总是必须表示面区域,它们也可以从点和线要素导入。

以下空间运算符可用于不同类型的几何。这些空间运算符返回一个布尔型参数,指明在 GeoFence 和 GeoEvent 的几何之间是否存在已描述的关系。某些关系要求 GeoEvent 的几何和与其相比较的 GeoFence 具有相同的维度,而其他关系则有更为灵活的维度限制。以下许多空间运算符都是相互排斥的 Clementini 运算符。

  • CONTAINS - 如果 geofence 是某个事件的几何的子集且这两个几何的交集不为空,该事件的几何将包含 geofence。“包含”与“被包含”在逻辑上相反。点几何不能包含折线或面,因此与事件关联的点不能包含作为 GeoFence 导入的线或区域。点可以包含点或线以包含线,但不推荐测试这种空间关系。由于投影导致的几何形状的细微差异可能生成一个您期望与 GeoFence 相重合但实际上不完全重合的点或线(在这种情况下,“包含”关系将评估为 false)。

    有关“包含”运算符的详细信息,请参阅适用于 .NET 的 ArcObjects API 参考中的 IRelationalOperator.Contains 方法

    包含空间运算符示例

  • CROSSES - 如果相交存在于较小维度的几何中,那么事件的几何会与 GeoFence 交叉。如果两条折线在一个或多个点处相交并且至少一个点不是端点,那么它们会交叉。如果折线和面在面的内部共享一条折线或一个点(不等于整个折线),那么该折线与面交叉。交叉仅适用于折线/折线、折线/面或面/折线关系。如果几何中的任何一个为空,则几何不交叉。

    有关“交叉”运算符的详细信息,请参阅适用于 .NET 的 ArcObjects API 参考中的 IRelationalOperator.Crosses 方法

    交叉空间运算符示例

  • DISJOINT - 如果两个几何不相交,则事件的几何被认为与 GeoFence 不相交。请注意,事件的几何可以与一个 GeoFence 不相交,同时与另一个 GeoFence 相交。在指定空间表达式时请注意。表达式不仅指定事件的几何,还指定范围(任何全部),以及一组使用正则表达式模式匹配(例如 SomeCategory/.*) 进行确定的 GeoFence。

    有关“不相交”运算符的详细信息,请参阅适用于 .NET 的 ArcObjects API 参考中的 IRelationalOperator.Disjoint 方法

    不相交空间运算符示例

  • EQUALS - 如果事件几何与 GeoFence 几何的对称差为空集,则它们的几何相等。如果您要迭代每个几何中的各线段并比较线段类型和坐标,并且发现结果均相同(使用空间参考的拓扑容差确定坐标是否相等),则认为这两个几何相等。

    有关“相等”运算符的详细信息,请参阅适用于 .NET 的 ArcObjects API 参考中的 IRelationalOperator.Equals 方法

    相等空间运算符示例

  • INTERSECTS - 如果两个几何相交,则事件的几何与 GeoFence 相交。“相交”与“不相交”在逻辑上相反。位于某个 GeoFence 区域(面)内的某个事件的点也与该 GeoFence 交叉。即使某个事件的折线或面未完全位于某个 GeoFence 内,也可以与该 GeoFence 交叉。某个事件的几何可以与一组 GeoFence 内的某个 GeoFence 相交,并且仍然为 DISJOINT ANY(例如,不相交一个或多个)。该事件的几何不是 DISJOINT ALL,因为它至少与集合中的一个 GeoFence 相交。
  • OVERLAPS - 如果相交尺寸等于正在考虑几何的尺寸,并且相交不等于事件几何或 GeoFence,则事件几何与 geofence 重叠。重叠仅适用于折线/折线、面/面以及多点/多点关系。如果几何中的任何一个为空,则几何不重叠。

    重叠空间运算符示例

    * 点几何不符合相等条件,因此事件的点位置不能与几何也是点的 GeoFence 重叠。

  • TOUCHES - 如果存在交集并且交集的内部为空,则事件的几何与 GeoFence 接触。这意味着两个几何仅在定义几何的折点处接触,而不是在折点之间的某个点处接触。点/点关系无接触。如果几何中的任何一个为空,则几何不接触。

    有关“接触”运算符的详细信息,请参阅适用于 .NET 的 ArcObjects API 参考中的 IRelationalOperator.Touches 方法

    接触空间运算符示例

  • WITHIN - 当两个几何相交并且它们内部的交集不为空时,则认为事件的几何被包含在 GeoEvent 内。“被包含”与“包含”在逻辑上相反。

    有关“位于”运算符的详细信息,请参阅适用于 .NET 的 ArcObjects API 参考中的 IRelationalOperator.Within 方法

    位于空间运算符示例

有关关系运算符的详细信息,请参阅适用于 .NET 的 ArcObjects API 参考中的 IRelationalOperator 接口

有关在 GeoEvent Server 中处理 GeoFence 的详细信息,请参阅管理 GeoFence