プロセッサ
プロセッサは GeoEvent サービスのコンポーネントであり、入力から出力に送信される GeoEvent に対して識別や情報付加などの特定の処理を実行します。
GeoEvent Processor には、次のプロセッサが含まれています。
- フィールド演算
- フィールド演算(正規表現)
- フィールド エンリッチャ(フィーチャ サービス)
- フィールド エンリッチャ(ファイル)
- フィールド マッパー
- フィールド リデューサ
- GeoTagger
- インシデント ディテクタ
- トラック ギャップ ディテクタ
- ノー オペレーション
フィールド演算
フィールド演算プロセッサは、算出された値を既存のフィールドまたはプロセッサが新規に作成したフィールドに書き込みます。このプロセッサでは、現在のイベントのフィールドから取得された値とプロセッサの設定に含まれている定数値が計算に使用されます。フィールド演算プロセッサでは、数式の値を求めたり、文字列値を再結合してイベント データを導出したりするだけでなく、定数値を書き込んでイベント データの情報付加や調整を実行することもできます。
フィールド演算プロセッサで行われる計算は、算術または字句表現(数値ではなく文字列に基づく)になります。算出された値が既存のフィールドに書き込まれると、処理対象のイベント内で現在のフィールドの値がその値に置換されます。このプロセッサは、既存のフィールドのデータ型に合わせて、算出された値のデータ型を変換しようとします。データ型の変換に失敗すると、NULL 値が書き込まれます。
算出された値を新規のフィールドに書き込むと、イベントのスキーマが変更されるため、GeoEvent Processor は GeoEvent 定義を新規に作成する必要があります。これはシステムで管理されます。このプロセッサを使用して新規のフィールドを作成する場合は、必ずフィールド名とデータ型を指定しなければなりません。GeoEvent 定義の名前とオプションのタグを指定し、新規のフィールドに適用できます。
設定するプロセッサの名前を指定する必要があります。この名前は大文字と小文字の区別があり、GeoEvent サービス内のプロセッサを一意に識別します。設定するプロセッサのタイプを指定するには、[プロセッサ] ドロップダウン矢印を使用します。フィールド演算プロセッサのプロパティは、上記の図に示されたとおりです。
フィールド演算プロセッサは、一般的な算術式、字句表現、および論理式に対応しています。式に含まれるオペランドは、GeoEvent 定義から取得されたリテラル フィールド名または GeoEvent 定義内のフィールドに適用されているタグになります。たとえば、「Odom1 + Odom2」という式を使用すると、「Odom1」というフィールドの値と「Odom2」というフィールドの値が加算され、単純な和が求められます。「Odom1」フィールドに「MILEAGEA」というタグが設定されており、「Odom2」フィールドに「MILEAGEB」というタグが設定されている場合は、「MILEAGEA + MILEAGEB」という式を使用できます。
フィールド演算プロセッサでサポートされている演算子と関数を次に示します。
操作 | 演算子 | 例 |
加算 |
+ |
Odom1 + Odom2 この式では、「Odom1」フィールドの数値と「Odom2」フィールドの数値が加算され、単純な和が求められます。文字列の連結にも対応しています(「"Hello" + "World"」など)。 |
減算 |
- |
VALUEA - VALUEB この式では、「VALUEA」というタグが設定されたフィールドの数値から「VALUEB」というタグが設定されたフィールドの数値が減算され、単純な差が求められます。 加算とは異なり、文字列の連結に対応していないので、2 つの文字列の差を求めることはできません。 |
乗算 |
* |
Altitude * 0.3048 この式では、「Altitude」というフィールドの数値と定数「0.3048」が乗算され、単純な積が求められます(この場合は、フィート単位の値がメートル単位でそれに相当する値に変換される)。 |
除算 |
/ |
Distance / 1.609344 この式では、「Distance」というフィールドの数値が定数「1.609344」で除算され、単純な商が求められます(この場合は、キロメートル単位の値がマイル単位に相当する値に変換される)。 |
剰余 |
% |
VALUEA % VALUEB この式では、「VALUEA」というタグが設定されたフィールドの数値が、「VALUEB」というタグが設定されたフィールドの数値で除算され、その剰余が倍精度値で返されます。 |
論理積 |
&& |
Flag1 && Flag2 この式では、「Flag1」というフィールドのブール値と「Flag2」というフィールドのブール値に対して論理積演算が実行され、ブール結果が求められます。入力フィールドのデータ型をブール型にする必要があります。式に含まれる文字列リテラル(例: "TRUE")と定数値(例: 1)は、計算の一環としてそれに相当するブール値に変換されません。 |
論理和 |
|| |
Flag1 || Flag2 この式では、「Flag1」というフィールドのブール値と「Flag2」というフィールドのブール値に対して論理和演算が実行され、ブール結果が求められます。 |
論理否定 |
! |
!(Flag1) この式では、「Flag1」というフィールドのブール値に対して論理否定演算が実行され、ブール結果が求められます。ネストされた式に対応しています(例: !(Flag1 && Flag2))。 |
より大きい |
> |
Altitude > 12500 この式では、「Altitude」というフィールドの値が指定された定数より大きいかどうかを求める論理演算が実行されます(結果はブール値になる)。 |
以上 |
>= |
Altitude >= 12500 この式では、「Altitude」というフィールドの値が指定された定数以上かどうかを求める論理演算が実行されます(結果はブール値になる)。 |
より小さい |
< |
Altitude < 1500 この式では、「Altitude」というフィールドの値が指定された定数より小さいかどうかを求める論理演算が実行されます(結果はブール値になる)。 |
以下 |
<= |
Altitude <= 1500 この式では、「Altitude」というフィールドの値が指定された定数以下かどうかを求める論理演算が実行されます(結果はブール値になる)。 |
等価 |
== |
VALUEA == VALUEB この式では、「VALUEA」というタグが設定されたフィールドの値と「VALUEB」というタグが設定されたフィールドの値が等しいかどうかを求める論理演算が実行されます(結果はブール値になる)。初期の製品リリース(10.2.0)では、等価演算子は数値型でしかサポートされていません。 |
不等価 |
!= |
VALUEA != VALUEB この式では、「VALUEA」というタグが設定されたフィールドの値と「VALUEB」というタグが設定されたフィールドの値が等しくないかどうかを求める論理演算が実行されます(結果はブール値になる)。初期の製品リリース(10.2.0)では、不等価演算子は数値型でしかサポートされていません。 |
フィールド演算プロセッサの等価演算子と不等価演算子は、浮動小数点値に直接適用することができません。2 つの小数値が等しいかどうかを正確に比較するには、まずこれらの値の位取りを行い、これらの値を長整数に丸めてから、長整数値を比較します。
- 「MyFloat1 == MyFloat2」と指定しても比較を実行できません。
- 代わりに、「round(MyFloat1*1000) == round(MyFloat2*1000)」と指定して比較を実行します。
フィールド演算プロセッサには、java.lang.Math にある関数を正確に反映した関数が用意されています。関数の技術仕様と完全なリストは、Java 開発者向け資料をご参照ください。使用頻度の高い関数を次にまとめてあります。
定数 | |
関数 | 説明 |
E() |
オイラー数(e)を指定された倍精度値乗して求められた値が返されます。 |
PI() |
pi(直径に対する円周の割合)の倍精度表現が返されます。 |
共通の関数 |
|
関数 | 説明 |
abs(値) |
引数の絶対値が返されます。 |
ceil(倍精度値) |
指定された倍精度値以上の最小の整数値(次に大きい整数値)が返されます。 |
floor(倍精度値) |
指定された倍精度値以下の最大の整数値(次に小さい整数値)が返されます。 |
hypot(倍精度値 x, 倍精度値 y) |
中間オーバーフローと中間アンダーフローなしで sqrt((x*x) + (y*y)) が返されます。 |
max(値 a, 値 b) |
指定された 2 つの引数値のうちの大きい方の値が返されます。 |
min(値 a, 値 b) |
指定された 2 つの引数値のうちの小さい方の値が返されます。 |
random() |
0.0 以上で 1.0 より小さい倍精度値が返されます。 |
round(値) |
引数値に最も近い長整数値が返されます(倍精度値が渡される)。 |
フィールド演算プロセッサは、可能な限り数値型の変換に対応しています。たとえば、関数に異なる型の数値を指定すると(例: max(3.14159,25))、比較を実行できるように、これらの値が比較可能な型(int、float、または double)に変換されます。また、このプロセッサでは、イベントの属性フィールドに値が書き込まれた時点で算出された値の型が変換されます(たとえば、イベントのフィールドのデータ型が double の場合は、6 + 7 が 13.0 と書き込まれる)。
指数 |
|
関数 |
説明 |
sqrt(倍精度値) |
指定された倍精度値の平方根が返されます。 |
cbrt(値) |
指定された倍精度値の立方根が返されます。 |
exp(倍精度値) |
オイラー数(e)を指定された倍精度値乗して求められた値が返されます。 |
pow(倍精度値, 倍精度値) |
最初の引数を 2 番目の引数乗して求められた値が返されます。 |
対数 |
|
関数 |
説明 |
log(倍精度値) |
倍精度値の自然対数(底を e とする)が返されます。 |
log10(倍精度値) |
倍精度値の 10 を底とする対数が返されます。 |
文字列関数 |
|
関数 |
説明 |
int length(ソース) |
文字列の長さを返します。 |
boolean isEmpty(ソース) |
ソースの長さが 0 の場合、true を返します。 |
boolean isNull(ソース) |
ソースの値が NULL の場合、true を返します。 |
boolean equals(ソース, オブジェクト anObject) |
ソース文字列と指定されたオブジェクトを比較します。指定されたオブジェクトが文字列を表しており、ソース文字列と等しい場合、true を返します。そうでない場合は、false を返します。 |
boolean equalsIgnore(ソース, 文字列 anotherString) |
ソース文字列と anotherString を、大文字小文字を無視して比較します。2 つの文字列の長さが等しく、それらの文字列に含まれる対応する各文字が同じ(大文字小文字は無視)である場合、それらの文字列は同じであると見なされます。引数が NULL でなく、2 つの文字列が同じである場合、true を返します。そうでない場合、false を返します。 |
int compareTo(ソース, 文字列 str) |
2 つの文字列を、辞書順で比較します。引数 str がソース文字列と等しい場合、値 0 を返します。ソース文字列が引数 str よりも辞書順で小さい場合、0 よりも小さい値を返します。ソース文字列が引数 str よりも辞書順で大きい場合、0 よりも大きい値を返します。 |
int compareToIgnore(ソース, 文字列 str) |
大文字小文字の違いを無視して、2 つの文字列を辞書順で比較します。指定した文字列がソース文字列よりも大きい場合は負の整数を返し、ソース文字列と等しい場合は 0 を返し、ソース文字列よりも小さい場合は正の整数を返します。大文字小文字は無視されます。 |
boolean startsWith(ソース, 文字列 prefix) |
ソース文字列が、指定された prefix で始まるかどうかを判定します。引数 prefix で表された文字の並びが、ソース文字列で表された文字の並びの接頭辞に等しい場合、true を返します。そうでない場合は、false を返します。 |
boolean endsWith(ソース, 文字列 suffix) |
ソース文字列が、指定された suffix で終わるかどうかを判定します。引数 suffix で表された文字列の並びが、ソース オブジェクトで表された文字の並びの接尾辞に等しい場合、true を返します。そうでない場合は、false を返します。 |
int indexOf(ソース, 文字列 str) |
指定されたサブ文字列 str が最初に現れるソース文字列内のインデックスを返します。引数 str がソース オブジェクト内でサブ文字列として現れる場合、最初に現れるサブ文字列の先頭の文字のインデックスが返されます。一致するサブ文字列が現れない場合、-1 が返されます。 |
int indexOf(ソース, 文字列 str, 整数 fromIndex) |
指定されたインデックスから開始して、指定されたサブ文字列 str が最初に現れるソース文字列内のインデックスを返します。指定されたインデックスから開始して、指定されたサブ文字列 str が最初に現れるソース文字列内のインデックスを返します。 |
int lastIndexOf(ソース, 文字列 str) |
指定されたサブ文字列 str が現れるソース文字列内の最も右側のインデックスを返します。引数 str がソース オブジェクト内でサブ文字列として 1 回以上現れる場合、最後に現れるサブ文字列の先頭の文字のインデックスが返されます。一致するサブ文字列が現れない場合、-1 が返されます。 |
int lastIndexOf(ソース, 文字列 str, 整数 fromIndex) |
指定されたインデックスから逆方向に検索して、指定されたサブ文字列 str が現れるソース文字列内の最後のインデックスを返します。指定されたサブ文字列 str が現れるソース文字列内の最後のインデックスを返します。 |
String substring(整数 beginIndex) |
ソース文字列のサブ文字列を新しい文字列として返します。ソース文字列の指定されたインデックスから末尾の文字までのサブ文字列が返されます。 |
String substring(ソース, 整数 beginIndex, 整数 endIndex) |
ソース文字列のサブ文字列を新しい文字列として返します。ソース文字列の指定されたインデックス beginIndex からインデックス endIndex -1 までの文字のサブ文字列が返されます。 |
String concat(ソース 文字列 str) |
指定された文字列 str を、ソース文字列の末尾に連結します。 |
boolean matches(ソース, 文字列 regex) |
ソース文字列が、指定された正規表現と一致するかどうかを返します。ソース文字列が指定された正規表現と一致する場合にのみ、true を返します。 |
boolean contains (文字シーケンス s) |
指定された文字の並び s がソース文字列に含まれている場合にのみ、true を返します。ソース文字列に s が含まれている場合に true を返します。そうでない場合は、false を返します。 |
String replaceFirst(ソース, 文字列 regex, 文字列 replacement) |
指定された正規表現 regex と一致するソース文字列の最初のサブ文字列を、指定された replacement に置き換えます。それによって作成された文字列を返します。 |
String replaceAll(ソース, 文字列 regex, 文字列 replacement) |
指定された正規表現と一致するソース文字列の各サブ文字列を、指定された replacement に置き換えます。それによって作成された文字列を返します。 |
String replace(ソース, 文字シーケンス target, 文字シーケンス replacement) |
リテラル target の並びと一致するソース文字列の各サブ文字列を、指定されたリテラル replacement の並びに置き換えます。置換は、文字列の先頭から始まって、末尾に向かって進みます。それによって作成された文字列を返します。 |
String toLowerCase(ソース) |
デフォルト ロケールの規則を使用して、ソース文字列内のすべての文字を小文字に変換します。小文字に変換された文字列を返します。 |
String toUpperCase(ソース) |
デフォルト ロケールの規則を使用して、ソース文字列内のすべての文字を大文字に変換します。大文字に変換された文字列を返します。 |
String trim(ソース) |
先頭と末尾の空白スペースを削除して、ソース文字列のコピーを返します。 |
String valueOf(オブジェクト obj) |
オブジェクト型引数の文字列表現を返します。 |
三角関数 |
|
関数 |
説明 |
acos(倍精度値) |
値の逆余弦が返されます(返される角度は 0.0 と pi の間にある)。 |
asin(倍精度値) |
値の逆正弦が返されます(返される角度は -pi/2 と pi/2 の間にある)。 |
atan(倍精度値) |
値の逆正接が返されます(返される角度は -pi/2 と pi/2 の間にある)。 |
atax2(倍精度値 y, 倍精度値 x) |
直交座標(x, y)から極座標(r, シータ)への変換によって取得された角度シータが返されます。 |
cos(倍精度値) |
角度の余弦が返されます。 |
cosh(倍精度値) |
倍精度値の双曲線余弦が返されます。 |
sin(倍精度値) |
角度の正弦が返されます。 |
sinh(倍精度値) |
倍精度値の双曲線正弦が返されます。 |
tan(倍精度値) |
角度の正接が返されます。 |
tanh(倍精度値) |
倍精度値の双曲線正接が返されます。 |
toDegrees(倍精度値) |
ラジアン単位で計測された角度が度単位の近似角度に変換されます。 |
toRadians(倍精度値) |
度単位で計測された角度がラジアン単位の近似角度に変換されます。 |
フィールド演算(正規表現)
フィールド演算(正規表現)プロセッサでは、正規表現を使用してターゲット フィールド内のパターンを検索できます。正規表現のパターン マッチングは、イベントで受信した属性データから導関数値を算出して構築するための強力なツールになります。フィールド演算(正規表現)プロセッサは、標準のフィールド演算プロセッサでサポートされている一般的な算術式、字句表現、論理式をサポートしていません。
算出された値を新規のフィールドに書き込むと、イベントのスキーマが変更されるため、GeoEvent Processor は GeoEvent 定義を新規に作成する必要があります。これはシステムで管理されます。このプロセッサを使用して新規のフィールドを作成する場合は、必ずフィールド名とデータ型を指定しなければなりません。GeoEvent 定義の名前とオプションのタグを指定し、新規のフィールドに適用できます。
設定するプロセッサの名前を指定する必要があります。この名前は大文字と小文字の区別があり、GeoEvent サービス内のプロセッサを一意に識別します。設定するプロセッサのタイプを指定するには、[プロセッサ] ドロップダウン矢印を使用します。フィールド演算(正規表現)プロセッサのプロパティは、上記の図に示されたとおりです。
フィールド演算(正規表現)プロセッサは通常、ターゲット フィールド内のサブ文字列の識別と抽出に使用されます。抽出されたサブ文字列は、ターゲット フィールドにもう一度書き込まれるか(フィールドの元の値が置換される)、新規のフィールドに書き込まれます。
このプロセッサは幅広い正規表現に対応しています。このプロセッサに正規表現を設定すると、「FlightID」の数値部分を抽出し、「FlightNumber」という新規フィールドにその値を書き込むことができます。「GeoEvent Processor チュートリアル」ページから入手可能な「GeoEvent Processor の概要」チュートリアルに、この処理の内容が詳しく記載されています。
フィールド演算(正規表現)プロセッサは、指定された正規表現パターン内での後方参照に対応していません。
フィールド エンリッチャ(フィーチャ サービス)
フィールド エンリッチャ(フィーチャ サービス)プロセッサはイベント データの情報付加に対応しており、属性情報をフィーチャ レイヤまたは公開済みフィーチャ サービスの非空間テーブルから処理対象のイベントにコピーすることができます。この操作は結合操作に相当します。
設定するプロセッサの名前を指定する必要があります。この名前は大文字と小文字の区別があり、GeoEvent サービス内のプロセッサを一意に識別します。設定するプロセッサのタイプを指定するには、[プロセッサ] ドロップダウン矢印を使用します。フィールド エンリッチャ(フィーチャ サービス)プロセッサのプロパティは、上記の図に示されたとおりです。
フィールド エンリッチャ(フィーチャ サービス)プロセッサには、イベントの情報付加のためのフィーチャ サービスを検索して使用するのに必要な情報を設定する必要があります。この情報として、ArcGIS Server 接続、サービス フォルダ、フィーチャ サービスの名前、フィーチャ サービス内のターゲット レイヤなどがあります。
このプロセッサには、フィーチャ サービスのフィールド名のうち、情報付加対象のイベントと共通するフィールド名と、結合の実行基準となるイベントのスキーマにあるフィールド名を設定する必要があります。フィーチャ サービスのフィールド名は、上記の図に示された [フィーチャ レイヤの結合フィールド] テキスト ボックスに入力します。[GeoEvent 結合フィールド] テキスト ボックスでは、イベントの GeoEvent 定義に適用されているタグ(上記の図に示された TRACK_ID など)またはイベントのスキーマにある特定のフィールドの名前が入力できます。
[情報付加フィールド] プロパティの [フィールド選択] ボタンをクリックして、フィーチャ レイヤのテーブルからコピーするフィールドの名前を指定します。必要に応じて、新規に作成するフィールドごとに GeoEvent Processor が適用するタグをカンマ区切りリストとして指定します。
イベントに情報を付加すると、処理対象のイベントにフィーチャ サービスの 1 つ以上のフィールドからデータがコピーされ、これらのフィールドが新しいデータとして追加されます。これにより、イベントのスキーマが変更されるため、GeoEvent Processor は GeoEvent 定義を新規に作成する必要があります。これはシステムで管理されます。フィールド名がすでに指定されており、フィールドのデータ型がフィーチャ サービスから引き継がれるため、プロセッサ設定の一環としてデータ型は指定されません。結果として作成される GeoEvent 定義に対して GeoEvent Processor が使用する名前を指定します。
「GeoEvent Processor チュートリアル」ページから入手可能な「GeoEvent Processor の概要」チュートリアルに、フィールド エンリッチャ(フィーチャ サービス)プロセッサを使用してイベント データとフィーチャ サービスのデータを結合する方法が詳しく記載されています。
フィールド エンリッチャ(ファイル)
フィールド エンリッチャ(ファイル)プロセッサはイベント データの情報付加に対応しており、属性情報をシステム ファイルから処理対象のイベントにコピーすることができます。フィールド エンリッチャ(フィーチャ サービス)プロセッサによく似ていますが、情報付加元がフィーチャ サービスではなくシステム ファイルである点が異なります。
設定するプロセッサの名前を指定する必要があります。この名前は大文字と小文字の区別があり、GeoEvent サービス内のプロセッサを一意に識別します。設定するプロセッサのタイプを指定するには、[プロセッサ] ドロップダウン矢印を使用します。フィールド エンリッチャ(ファイル)プロセッサのプロパティは、上記の図に示されたとおりです。
情報付加元として使用するファイルを含むシステム フォルダを特定する必要があります。プロセッサを正しく設定できるように、事前にシステム フォルダをデータ ストアとして GeoEvent Processor に登録しておく必要があります。ファイル名は登録可能な項目ではありません。ファイル名を指定すると、GeoEvent Processor が登録済みのデータ ストアからその名前のファイルを検索します。
このプロセッサには、システム ファイルのフィールド名のうち、情報付加対象のイベントと共通するフィールド名と、結合の実行基準となるイベントのスキーマにあるフィールド名を設定する必要があります。システム ファイルのデータ テーブルにあるフィールド名を上記の図に示された [ファイル結合フィールド] テキスト ボックスに入力します。[GeoEvent 結合フィールド] テキスト ボックスでは、イベントの GeoEvent 定義に適用されているタグ(上記の図に示された TRACK_ID など)またはイベントのスキーマにある特定のフィールドの名前が入力できます。
フィーチャ レイヤのテーブルからコピーするフィールドの名前をカンマ区切りリストとして [情報付加フィールド] プロパティに指定します。必要に応じて、新規に作成するフィールドごとに GeoEvent Processor が適用するタグをカンマ区切りリストとして指定します。
イベントに情報を付加すると、処理対象のイベントにシステム ファイルの 1 つ以上のフィールドからデータがコピーされ、これらのフィールドが新しいデータとして追加されます。これにより、イベントのスキーマが変更されるため、GeoEvent Processor は GeoEvent 定義を新規に作成する必要があります。これはシステムで管理されます。フィールド名がすでに指定されており、フィールドのデータ型がシステム ファイル内で指定されているため、プロセッサ設定の一環としてデータ型は指定されません。結果として作成される GeoEvent 定義に対して GeoEvent Processor が使用する名前を指定します。
「GeoEvent Processor チュートリアル」ページから入手可能な「GeoEvent Processor の概要」チュートリアルに、フィールド エンリッチャ(ファイル)プロセッサを使用してイベント データとシステム ファイルのデータを結合する方法が詳しく記載されています。
テキスト ファイルを情報付加元として使用する場合は、下記の形式に従う必要があります。具体的には、ファイルの 1 行目にフィールド名をカンマ区切り値として指定し、2 行目に各フィールドのデータ型を指定する必要があります。ファイルのデータ値の入力は、3 行目から始めます。
フィールド マッパー
フィールド マッパー プロセッサはデータの調整に対応しています。GeoEvent Processor 内の GeoEvent ごとに、そのイベントのデータに関する属性フィールドとデータ型(date、string、integer など)を識別するスキーマが関連付けられています。このスキーマを「GeoEvent 定義」と呼びます。特定の入力データ ストリームに関する GeoEvent 定義には、GeoEvent Processor で更新される公開済みフィーチャ サービスのスキーマと一致しない名前のフィールドが含まれている場合があります。このような場合は、フィールド マッパー プロセッサを使用して入力スキーマからフィールドをマッピングし、出力スキーマに合わせてデータを調整する必要があります。
設定するプロセッサの名前を指定する必要があります。この名前は大文字と小文字の区別があり、GeoEvent サービス内のプロセッサを一意に識別します。設定するプロセッサのタイプを指定するには、[プロセッサ] ドロップダウン矢印を使用します。フィールド マッパー プロセッサのプロパティは、上記の図に示されたとおりです。
ソース GeoEvent 定義とターゲット GeoEvent 定義を設定するには、それぞれのプロパティを選択します。プロパティ ダイアログ ボックスに GeoEvent 定義のターゲット フィールドが一覧表示されます。ソース フィールドの中から、ターゲットにマッピングするフィールドを選択することができます。ターゲット フィールドのデータ型を一覧表示すると、ソース GeoEvent 定義からターゲット GeoEvent 定義へのマッピングに最適なデータを確認できます。
上記の図には、ターゲット GeoEvent 定義の実際のフィールド名の代わりに <Field Name> が表示されています。フィールド名とデータ型の実際のリストは、ターゲット GeoEvent 定義として選択されている GeoEvent 定義によって異なります。
フィールド マッパー プロセッサを使用すると、入力から出力に送信される属性フィールドの数を少なくすることができます。この処理を行う理由は、ソース GeoEvent 定義の中から選択されたフィールドだけがターゲット GeoEvent 定義のフィールドにマッピングされるからです。この処理は、あまり関係性のない多数の属性値が入力データ ストリームに含まれている場合に役立ちます。また、フィールド マッパー プロセッサを使用すると、入力 GeoEvent 定義のイベント データが出力 GeoEvent 定義のデータ型と一致していない場合にデータ型を変換することもできます。たとえば、整数データを倍精度表現に変換したり、数値データを文字列表現に変換したりすることができます。このように、必要な出力 GeoEvent 定義に合わせて入力データが調整されます。
さらに、フィールド マッパー プロセッサは、データ ストリームの簡素化が必要な場合にも使用できます。リアルタイム データ ストリームでは、属性データが 1 つの離散型データではなく、データ型の異なる複数の属性値で構成される 1 つのグループとして表現されることがあります。このような階層データ構造の場合は、公開済みフィーチャ サービスのスキーマと一致した出力 GeoEvent 定義のフィールドごとに個別のグループ エレメントをマッピングしない限り、公開済みフィーチャ サービスを更新することができません。
フィールド リデューサ
GeoEvent Processor 内の GeoEvent ごとに、そのイベントのデータに関する属性フィールドとデータ型(date、string、integer など)を識別するスキーマが関連付けられています。このスキーマを「GeoEvent 定義」と呼びます。フィールド リデューサ プロセッサはデータ スキーマの調整に対応しており、イベントから不要な属性を削除し、追加処理や出力のために送信されるイベントを簡素化することができます。
設定するプロセッサの名前を指定する必要があります。この名前は大文字と小文字の区別があり、GeoEvent サービス内のプロセッサを一意に識別します。設定するプロセッサのタイプを指定するには、[プロセッサ] ドロップダウン矢印を使用します。フィールド リデューサ プロセッサのプロパティは、上記の図に示されたとおりです。
プロセッサで受信されるイベントの GeoEvent 定義には、そのイベントのフィールド名とデータ型が示されます。したがって、受信イベントから削除するフィールドだけをカンマ区切りリストで指定する必要があります。上記の図に示されているように、削除するフィールドのリストを [削除するフィールド] プロパティに入力します。
属性フィールドを削除してイベント データを変更すると、イベントのスキーマが変更されるため、GeoEvent Processor は簡素化されたイベント用の GeoEvent 定義を新規に作成して管理する必要があります。プロパティ ダイアログ ボックスで、結果として作成される GeoEvent 定義に対して GeoEvent Processor が使用する名前を指定します。
GeoTagger
GeoTagger プロセッサはイベントの情報付加に対応しており、イベントとの間に空間リレーションシップのある GeoFence に関する情報を付加できます。たとえば、イベントの場所が既知の対象地域内にあることが判明している場合は、関連する GeoFence のカテゴリと名前を新しい属性値としてイベントに付加することができます。これにより、特定の時点での対象地域との空間リレーションシップに関する情報がイベントに付加されます。
GeoTagger プロセッサを設定する前に、GeoFence をフィーチャ サービスから GeoEvent Processor にインポートしておく必要があります。GeoEvent Processor での GeoFence の操作方法の詳細は、「GeoFence の管理」をご参照ください。
設定するプロセッサの名前を指定する必要があります。この名前は大文字と小文字の区別があり、GeoEvent サービス内のプロセッサを一意に識別します。設定するプロセッサのタイプを指定するには、[プロセッサ] ドロップダウン矢印を使用します。GeoTagger プロセッサのプロパティは、上記の図に示されたとおりです。
イベントとの間に空間リレーションシップのある GeoFence を識別するようにプロセッサを設定する必要があります。上記の図に示されたプロパティ ダイアログ ボックスの [GeoFence] フィールドに単純な正規表現を入力して、一連の GeoFence を指定します。GeoEvent Processor 内の 1 つ以上のカテゴリに含まれる 1 つ以上の GeoFence を指定できます。たとえば、複数の GeoFence が [States] カテゴリにインポートされているとします。受信イベントの空間リレーションシップを検索する場合に [States] カテゴリ内の名前付き地域をすべて考慮するように、GeoTagger プロセッサに「States/.*」という式を設定することができます。「.*/.*」と入力すると、名前付きカテゴリに含まれる既知の GeoFence をすべて考慮するようにプロセッサが指示されます。
[空間演算子] プロパティには、イベントの場所と特定の GeoFence との空間リレーションシップを指定します。GeoEvent Processor で使用可能な空間リレーションシップの詳細は、「フィルタ」をご参照ください。イベントと GeoFence との空間リレーションシップを求めるには、そのイベントにジオメトリ タイプのフィールドを割り当てる必要があります。[GeoEvent ジオメトリ フィールド] プロパティでは、タグ(上記の図に示された GEOMETRY など)または GeoEvent 定義内の特定のフィールドの名前が入力できます。
イベントの空間リレーションシップを確認したら、イベントの情報付加のために GeoFence の名前をそのイベントのデータに付加することができます。プロセッサで作成されるフィールドの名前を [GeoTag フィールド名] テキスト ボックスに指定します。データをカンマ区切りリストとしてイベントに付加することがデフォルトの操作になります。この操作は、[GeoTag 形式] プロパティで指定します。情報付加データとして GeoFence の名前だけを含めるか、GeoFence の名前とカテゴリの両方を含めることができます。[GeoTag に GeoFence のカテゴリを含める] プロパティには、情報付加のレベルを指定します。
GeoTagger プロセッサで情報付加が実行されると、イベントのスキーマが変更されるため、GeoEvent Processor は情報が付加されたイベント用の GeoEvent 定義を新規に作成して管理する必要があります。このプロセッサには、結果として作成される GeoEvent 定義に対して GeoEvent Processor が使用する名前を指定できるフィールドがあります。
「GeoEvent Processor チュートリアル」ページから入手可能な「GeoEvent Processor の概要」チュートリアルに、GeoTagger プロセッサの使用方法が詳しく記載されています。
インシデント ディテクタ
インシデント ディテクタ プロセッサは、指定された属性と空間条件に基づいてインシデントを検索して報告します。プロセッサのプロパティには、開始条件と終了条件を指定できます。これにより、インシデントの範囲が一定の期間における一連のイベントに広がります。たとえば、車両の位置と現在の速度を報告するイベントベースのデータ ストリームを使用すると、車両が一定の速度を超えた場合や危険な地域に入った場合にインシデントを生成できます。このインシデントは、車両が安全速度に戻った時点で閉じられるか、危険な地域を出た時点で閉じられます。
設定するプロセッサの名前を指定する必要があります。この名前は大文字と小文字の区別があり、GeoEvent サービス内のプロセッサを一意に識別します。設定するプロセッサのタイプを指定するには、[プロセッサ] ドロップダウン矢印を使用します。インシデント ディテクタ プロセッサのプロパティは、上記の図に示されたとおりです。
インシデント ディテクタ プロセッサで生成されるインシデントには、生成されたインシデントの識別基準になる名前を指定する必要があります。たとえば、インシデント ディテクタ プロセッサで生成されるインシデントが車両の速度に関する警告の場合は、「SpeedingVehicle」という名前を指定することができます。上記の図に示された [インシデント名] プロパティに名前を入力します。インシデント ディテクタ プロセッサで生成されるすべてのインシデントに開始条件と終了条件を設定する必要があります([式の設定] を使用して、これらの条件を設定する)。
開始条件は必ず指定しなければなりません。終了条件を指定しないと、開始条件の論理否定が使用されます。
インシデント ディテクタ プロセッサを使用すると、生成されたインシデントに指定の重大度を適用できます。指定可能なレベルは「通知」、「警告」、および「緊急」です。特定のプロセッサで生成されるインシデントには 1 つの重大度しか割り当てられません。プロセッサでインシデントに割り当てられる重大度を変更するには、そのプロセッサを編集して、GeoEvent サービスを再公開する必要があります。
インシデント ディテクタ プロセッサで生成されるインシデントのタイプは、プロセッサのプロパティの 1 つにもなっています。インシデントのタイプには、「時点」と「累積」の 2 つがあります。
- 「時点」インシデントには終了条件がありません。このインシデントは瞬間的な状態と見なされ、生成された直後に閉じられるため、インシデント期間が存在しません。
- 「累積」インシデントには開始条件と終了条件があります。インシデントの生成から失効(つまり終了)までの時間がインシデント期間になります。「累積」インシデントは監視対象であり、追加のイベント データを受信すると、GeoEvent Processor で更新されます。
各インシデント ディテクタ プロセッサには、固有の Geometry Type があり、そのプロセッサで生成されるインシデントに関連付けられています。ほとんどのインシデントとインシデント更新は特定の時点でのポイント位置に関連付けられているため、通常はポイント ジオメトリが選択されます。ただし、生成されるインシデントのジオメトリ タイプとして「マルチポイント」と「ポリライン」もサポートされています。
一定の時間が経過した後にインシデントを自動的に閉じることがユース ケースになっている場合があります。インシデント ディテクタ プロセッサに [有効期限] を設定すると、インシデントの終了条件を満たしていない場合でも、一定の時間が経過したら GeoEvent Processor でそのインシデントを自動的に閉じることができます。有効期限は秒単位で表される数値です。値として 0 を入力すると、プロセッサで生成されるインシデントの自動失効が無効になります。
「GeoEvent Processor チュートリアル」ページから入手可能な「GeoEvent Processor の概要」チュートリアルに、インシデント ディテクタ プロセッサを設定する方法が詳しく記載されています。
トラック ギャップ ディテクタ
トラック ギャップ ディテクタ プロセッサは、イベントがないことを検出するために使用されます。トラック ギャップ ディテクタは、インシデント ディテクタ プロセッサと同様に、イベント ストリームでギャップが検出された場合にレポートする新しいイベントを生成します。このプロセッサは、期待されるイベントが受信されない期間中に連続的に通知を生成するように構成するか、ギャップが検出されたときに 1 つの通知を生成し、その後プロセッサがイベントの受信を再開したときに 2 つ目のイベントを生成してユーザに知らせるように構成できます。
設定するプロセッサの名前を指定する必要があります。この名前は大文字と小文字の区別があり、GeoEvent サービス内のプロセッサを一意に識別します。設定するプロセッサのタイプを指定するには、[プロセッサ] ドロップダウン矢印を使用します。トラック ギャップ ディテクタ プロセッサのプロパティは、上記の図に示されたとおりです。
[ギャップ通知モード] プロパティで、前述の通知動作を指定します。プロセッサがギャップを検出したときに 1 つのイベントを生成し、イベントの受信を再開したときに 2 つ目のイベントを生成するように指定するには、[変化時] を選択します。プロセッサが新しいイベントを受信しない期間中に各ポーリング間隔でイベントを生成するように指定するには、[連続] を選択します。
[ギャップ期間(秒)] プロパティでは、入力データ ストリームでギャップが発生したと判定されるまでのプロセッサの待機時間(秒単位)を指定します。プロセッサは、上の図に示した値を使用して、プロセッサが最後にイベントを受信してから 300 秒以上経過した場合にのみ、ギャップが存在すると判定します。
[ギャップ検出間隔(秒)] プロパティでは、プロセッサのポーリング間隔を指定します。プロセッサは、この場合も上の図に示した値を使用して、プロセッサが最後にイベントを受信してから 300 秒以上のギャップが発生したかどうかを 120 秒ごとにチェックします。このポーリング間隔は、[ギャップ通知モード] を [連続] に設定した場合に、通知イベントを生成する頻度も制御します。[ギャップ通知モード] を [変化時] に設定した場合、イベントが送信されるのは、プロセッサがポーリングによってイベント ストリームの停止を検出したとき(プロセッサがそれまでイベントを受信し続けていた場合)、および、逆にプロセッサがギャップを検出した後にポーリングによってイベントの受信再開を検出したときのみです。
[ジオメトリ フィールド名] プロパティでは、ジオメトリを含むことが期待されるイベント フィールドの名前を指定します。最後に受信されたジオメトリは、プロセッサが生成した通知イベントに追加されます。たとえば、イベント ストリームが車両の位置をレポートしており、30 秒ごとにポーリングして、車両のレポートを最後に受信してから 120 秒以上のギャップが発生したかどうか判定するようにプロセッサを構成している場合、最後にレポートされた車両の位置をそのギャップ通知に含めるようにプロセッサを構成できます。
ノー オペレーション
ノー オペレーション プロセッサは、受信した GeoEvent に対して何の処理も実行せず、何の影響も与えません。ノー オペレーション プロセッサが配置されていても、まるでそのプロセッサが存在していないかのようにイベントが通過していきます。
設定するプロセッサの名前を指定する必要があります。この名前は大文字と小文字の区別があり、GeoEvent サービス内のプロセッサを一意に識別します。設定するプロセッサのタイプを指定するには、[プロセッサ] ドロップダウン矢印を使用します。ノー オペレーション プロセッサのプロパティは、上記の図に示されたとおりです。このタイプのプロセッサには、これ以外に設定するプロパティがありません。
ノー オペレーション プロセッサを使用すると、「スタブ」または「処理なし」コンポーネントをプレースフォルダとして GeoEvent サービスに含めることができます。後からノー オペレーション プロセッサを別のプロセッサに取り替えると、GeoEvent サービスのその他の部分の設計とテストに焦点を当てることができます。
ノー オペレーション プロセッサは、それ以外のシナリオでも役立ちます。シナリオの例を次に挙げます。
- 予期したとおりに動作していない公開済み GeoEvent サービスのトラブルシューティングを実施する。何の動作もしないようにノー オペレーション プロセッサを設定すると、サービスのワークフローを強制的に再作成することなく、効果的に GeoEvent サービスから削除されます。
- 1 つまたは複数のコンポーネントの開発が完了する前に、GeoEvent サービスのイベント処理とフィルタリングのワークフローを設計する。従属コンポーネントの開発が完了したら、ノー オペレーション プロセッサを別のプロセッサとして再設定できます。
- GeoEvent サービスの特定のコンポーネントで実行中の処理を一時的に止める方法を実証する。既存のプロセッサをノー オペレーション プロセッサとして設定して GeoEvent サービスを再公開すると、GeoEvent Processor で現在実行中のイベント処理を明確にすることができます。