Skip To Content

空間フィルター

ジオイベント サービスの空間フィルターは、ジオフェンスとの空間リレーションシップに基づいてイベント レコードを フィルターします。 空間フィルターを構成する前に、ジオフェンスを指定するジオメトリーを、公開されているフィーチャ サービスから GeoEvent Server にインポートしておく必要があります。

以下の空間演算子がサポートされています。

  • [INSIDE] - イベント レコードのジオメトリーがジオフェンスで定義されたエリアに完全に含まれている場合、そのジオメトリーはジオフェンスの内部にあると見なされます。 この演算子は、イベント レコードに関連付けられたポイントが対象地域内にあるかどうかを判別します。
  • [OUTSIDE] - イベント レコードのジオメトリー全体がジオフェンスで定義されたエリアの外にある場合、そのジオメトリーはジオフェンスの外部にあると見なされます。 この演算子は、イベント レコードに関連付けられたポイントが対象地域外にあるかどうかを判別します。

    ジオフェンスの内側と外側にある 2 つのトラック上のイベント データ

  • [ENTER] - イベント レコードの位置が以前はジオフェンスの外部にあった場合、同じトラックのイベント レコードのジオメトリーがジオフェンスで定義されたエリア内にあれば、そのジオメトリーはジオフェンスに入っていると見なされます。 [ENTER] 演算子が検出され、イベント レコードがフィルターを通過できるようになった場合、別の [ENTER] 演算子が認識されるには、まずジオフェンスの外側に 1 つ以上のイベントがあることがトラック オブジェクトから報告される必要があります。
  • [EXIT] - イベント レコードの位置が以前はジオフェンスの内部にあった場合、同じトラックのイベント レコードのジオメトリーがジオフェンスで定義されたエリアの外側にあれば、そのジオメトリーはジオフェンスを出ていると見なされます。 [EXIT] 演算子が検出され、イベント レコードがフィルターを通過できるようになった場合、別の [EXIT] 演算子が認識されるには、まずジオフェンスの外側に 1 つ以上のイベントがあることがトラック オブジェクトから報告される必要があります。
    注意:

    [EXIT] 演算子で構成された空間フィルターの動作は、インシデント ディテクター プロセッサーとは若干異なります。 インシデント ディテクター プロセッサーは、 その終了条件を評価する際、ジオフェンス内の最後に観測されたジオメトリーとともに [Ended] ステータスを報告します。 空間フィルターを使用すると、[EXIT] 演算子が真と評価された時点で、そのジオメトリーがジオフェンスの外部にある場合に、イベント レコードがフィルターを通過できるようになります。

    [EXIT] 演算子が空間フィルターで使用される場合とインシデント ディテクター プロセッサーで使用される場合の動作の違いについては、Esri Community ページをご参照ください

    イベント データは、2 つのトラックで ENTER 演算子と EXIT 演算子を満たします

通常、一連のジオフェンスは、対象地域を定義し、またポリゴン フィーチャを提供するフィーチャ サービスからインポートされます。 ジオフェンスは、必ずしもポリゴン エリアを表している必要はありません。ポイント フィーチャやライン フィーチャからジオフェンスをインポートすることもできます。

以下の空間演算子は、さまざまなタイプのジオメトリーとともに使用することができます。 これらの空間演算子は、ブール値を返し、記述されたリレーションシップがジオフェンスとイベント レコードのジオメトリーとの間に存在するかどうかを示します。 一部のリレーションシップは、イベント レコードのジオメトリーが、比較対象のジオフェンスと同じ次元を持っていることを要求します。その他のリレーションシップは、より柔軟な次元制約を持っています。 以下の多くの空間演算子は、同時に使用することができない Clementini の演算子です。

  • [CONTAINS] - ジオフェンスがイベントのジオメトリーのサブセットであり、それら 2 つのジオメトリーの交差が空でない場合、イベントのジオメトリーはジオフェンスを含みます。 [CONTAINS] は、[WITHIN] とは論理的に逆の演算です。
    注意:

    ポイント ジオメトリーにポリラインまたはポリゴンを含めることはできません。そのため、イベントに関連付けられているポイントに、ジオフェンスとしてインポートされたラインまたはエリアを含めることはできません。 ポイントにポイント、ラインにラインを含めることはできますが、そのような空間リレーションシップのテストはおすすめしません。 投影法によるジオメトリーのわずかな差異によって、ジオフェンスと一致すると想定されるポイントまたはラインが実際には完全一致しない場合があります (この場合、[CONTAINS] リレーションシップは FALSE と評価されます)。

    CONTAINS 空間演算子の例

  • [CROSSES] - 次元が小さい方のジオメトリーに交差が存在する場合、イベントのジオメトリーはジオフェンスとクロスします。 2 つのポリラインが 1 つ以上のポイントで交差し、少なくとも 1 つのポイントが端点でない場合、それらのポリラインはクロスします。 ポリラインとポリゴンが、そのポリラインと完全には同じではないポリゴンの内部のポリラインまたはポイントを共有している場合、それらのポリラインとポリゴンはクロスしています。 [CROSSES] は、ポリライン/ポリライン、ポリライン/ポリゴン、またはポリゴン/ポリラインの関係にのみ適用されます。 ジオメトリーの 1 つが空の場合、ジオメトリーはクロスしません。

    CROSSES 空間演算子の例

  • [DISJOINT] - 2 つのジオメトリーが交差しない場合、イベントのジオメトリーはジオフェンスと一致しないと見なされます。 イベントのジオメトリーは、別のジオフェンスと交差しながら、ジオフェンスと一致しない可能性があります。 空間式を指定する際は、イベントのジオメトリー、スコープ (any または all のいずれか)、正規表現のパターン マッチを使用して特定された一連のジオフェンス (例: SomeCategory/.*) を定義することで、正確な結果が得られます。

    DISJOINT 空間演算子の例

  • [EQUALS] - イベントとジオフェンスのジオメトリーのシンメトリカル ディファレンスが空のセットである場合、イベントとジオフェンスのジオメトリーが等しいです。 ジオメトリーの場合、対称差は各ジオメトリーが互いにオーバーラップしない部分を指します。 イベントのジオメトリーとジオフェンスのジオメトリーの対称差が空のセットである場合、両者に違いがないため、等しいことを意味します。 2 つのジオメトリー内の各セグメントで反復してセグメントのタイプと座標を比較し (座標の一致を判別するために、空間参照のクラスター許容値を使用)、それらがすべて同じだった場合、2 つのジオメトリーは等しいと見なされます。

    EQUALS 空間演算子の例

  • [INTERSECTS] - 2 つのジオメトリーが一致していない場合、イベントのジオメトリーはジオフェンスと交差しています。 [INTERSECTS] は、[DISJOINT] とは論理的に逆の演算です。 ジオフェンスのエリア (ポリゴン) 内にあるイベントのポイントもジオフェンスと交差します。 イベントのポリラインまたはポリゴンは、ジオフェンス内に完全に含まれていなくても、ジオフェンスと交差する場合があります。 イベントのジオメトリーは、一連のジオフェンス内にある 1 つのジオフェンスと交差しながら、[DISJOINT ANY] (例: 1 つ以上と一致しない) である場合があります。 イベントのジオメトリーは、セット内の少なくとも 1 つのジオフェンスと交差しているため、[DISJOINT ALL] ではありません。
  • [OVERLAPS] - 対象のジオメトリーと次元が同じ交差が存在し、その交差がイベントのジオメトリーまたはジオフェンスと同じではない場合、イベントのジオメトリーはジオフェンスとオーバーラップしています。[OVERLAPS] は、ポリライン/ポリライン、ポリゴン/ポリゴン、またはマルチポイント/マルチポイントの関係にのみ適用されます。 ジオメトリーの 1 つが空の場合、ジオメトリーはオーバーラップしません。

    OVERLAPS 空間演算子の例

    ポイント ジオメトリーは等価条件を満たさないため、 イベントのポイント位置は、ジオメトリーがポイントであるジオフェンスとオーバーラップできません。

  • [TOUCHES] - 交差が存在し、交差の内側が空の場合、イベントのジオメトリーはジオフェンスと接しています。 これは、2 つのジオメトリーが、ジオメトリーを定義する頂点のみで接し、頂点間のポイントでは接していないことを意味します。 [TOUCHES] はポイント/ポイントの関係には定義されません。 ジオメトリーの 1 つが空の場合、ジオメトリーはタッチしません。

    TOUCHES 空間演算子の例

  • [WITHIN] - 2 つのジオメトリーが交差しており、それらの内部の交差が空でない場合、イベントのジオメトリーはジオフェンス内にあると見なされます。 [WITHIN] 演算子は、[CONTAINS] とは論理的に逆の演算子です。

    WITHIN 空間演算子の例

関係演算子の詳細については、IRelationalOperator Interface API リファレンス ページをご参照ください

関連トピック