レイヤー アクションは、トラッキング レイヤーに属するフィーチャを対象として動作します。したがって、リアルタイムと固定日時の両方のトラッキング レイヤーにアクションを適用できます。レイヤー アクションはマップ ドキュメントに保存され、[レイヤー プロパティ] ダイアログ ボックスの [アクション] タブで構成できます。ArcMap または ArcGlobe でトラッキング レイヤーをレイヤー ファイルとして保存すると、そのトラッキング レイヤーのアクション設定がレイヤーとともに保存されます。
サービス アクションと異なり、すべてのレイヤー アクションは、ArcMap などのクライアント アプリケーションに存在します。そのため、これらのアクションは、解析を目的としたデータの視覚化に関連していることが普通です。たとえば、一定のトリガー条件を満たすフィーチャをマップ上でハイライト表示できます。
カスタム Visual Basic (VB) レイヤー アクションは、最も高度なレイヤー アクションです。これは高度なカスタマイズが可能なアクションで、リアルタイム トラッキング レイヤーにのみ適用できます。このアクションは、マップ ドキュメントに保存されている VB マクロを参照するので、レイヤー アクションと見なされます。また、トラッキング サービスからイベントをストリーミングするとそのイベントに適用されるので、サービス アクションと同様に機能します。
ここでは、Tracking Analyst で使用可能なすべてのレイヤー アクションについて説明します。
ハイライト/非表示
ハイライト/非表示アクションでは、定義したトリガー条件を満たすフィーチャのシンボルを変更します。ハイライト アクションを使用すると、特別なシンボルを使用してイベントをハイライト表示することで、目的のイベントを視覚的に強調できます。ハイライトに使用するシンボルを選択でき、そのシンボルは、マップを描画したときにイベントの通常のシンボルの背後に配置されます。非表示アクションを使用すると、トリガー条件を満たすイベントは、マップに描画されずに非表示になります。レイヤーでハイライト アクションまたは非表示アクションを定義すると、レイヤーの中でトリガー条件を満たすすべてのフィーチャにそのアクションが直ちに適用されます。
フィルター
レイヤーのフィルター アクションをサービスのフィルター アクションと混同しないようにしてください。レイヤーのフィルター アクションでは、以降のアクション処理の対象とするイベント、または以降のアクション処理から除外するイベントの指定のみが可能です。Tracking Analyst ではアクションを処理する順序を構成できますが、フィルターのアクションでは各アクションの順序を理解しておくことが特に重要です。フィルター アクションの後に他のレイヤー アクションを定義していない場合、そのフィルター アクションには何の効果もありません。フィルター アクションの後に他のアクションを定義している場合は、フィルターを通過するイベント (フィルターで除外されないイベント) のみが以降のアクションに渡されます。
カスタム VB アクション (リアルタイム トラッキング レイヤーのみで有効)
Tracking Analyst に用意されているカスタム VB レイヤー アクションは、ArcGIS for Desktop メディア パッケージに収録されている ArcGIS for Desktop VBA Resources for Developers ソフトウェアをインストールしてライセンスを取得している場合に使用可能です。インストールとライセンスに関する情報は、ArcGIS for Desktop インストール ガイドに記載されています。ArcGIS for Desktop VBA Resources for Developers をインストールした後、そのヘルプ システムを参照し、Visual Basic Editor を使用して ArcGIS for Desktop 用のマクロを作成する手順を確認してください。
カスタム VB レイヤー アクションは、リアルタイム トラッキング レイヤーにのみ適用できるので、他のレイヤー アクションとは異なります。また、トラッキング サービスではなくトラッキング レイヤーで定義することから、サービス アクションとも異なります。VB アクションは、トラッキング レイヤーにリアルタイム イベントを追加するときにそのイベントに適用されますが、アクションを開始する前にレイヤーにすでに存在しているイベントには適用されません。
VB マクロでは多様な操作をプログラムで実現できるので、Visual Basic アクションからは高度な柔軟性が得られます。VB マクロを記述して実行できる処理の数はほとんど無制限といえます。たとえば、新しいイベントを受信したときにそのイベントの属性を表示する、ポップアップ メッセージでアナリストに通知する、受信データを操作するなどの処理が可能です。レイヤーにカスタム VB アクションを定義する前に、Visual Basic Editor を使用して VB マクロを記述しておく必要があります。VB マクロには、受信イベントのすべてのデータ フィールドの値を格納する配列が用意されています。
リアルタイム レイヤーにカスタム VB アクションを適用する方法の詳細
まず、簡単な VB マクロを 2 つ、以下に示します。どちらの場合でも、コードの 1 行目に特有な構造に注意することが重要です。イベントの受信データ値を Variant 型の 1 つの配列で受け取るには、この構造に正確に従います。こうしておくと、この配列を参照し、コードの引数をフィールドの列番号に設定することによって、マクロの本体で個々のデータ フィールド値に簡単にアクセスできるようになります。フィールドの順序は、トラッキング レイヤーの属性テーブルに記述されているフィールドの順序と同じです。
次のマクロを実行すると、受信データ メッセージの 5 番目のフィールドが ArcMap のステータス バーに表示されます。このマクロは、アクションのトリガー条件を満たす受信イベントすべてに対して実行されます。
Public Sub StatusBarMacro(ParamArray varArgs() As Variant)
Application.StatusBar.Message(0) = varArgs(5)
End Sub
次のマクロを実行すると、受信データ メッセージの 3 番目のフィールドがメッセージ ボックスに表示されます。このマクロは、アクションのトリガー条件を満たす受信イベントすべてに対して実行されます。
Public Sub MessageBoxMacro(ParamArray varArgs() As Variant)
MsgBox varArgs(3)
End Sub