ラベル | 説明 | データ タイプ |
入力レイヤー | インシデント候補を含む入力フィーチャ。 | Table View |
出力データセット | インシデントを含む新しい出力データセット。 | Feature Class;Table |
トラッキング フィールド | 一意のトラックを識別するために使用する 1 つまたは複数フィールド。 | Field |
開始条件 | インシデントの特定に使用する条件。式は Arcade で記述され、[+ - * / ] 演算子と複数のフィールドを含めることができます。 レイヤーをマップに追加する場合、[フィールド] および [ヘルパー] フィルターを使って条件式を組み立てることができます。 | Calculator Expression |
終了条件 (オプション) | インシデントの終了に使用する条件。終了条件が指定されていない場合、インシデントは開始条件が true でなくなったときに終了します。 式は Arcade で記述され、演算子と複数のフィールドを含めることができます。 レイヤーをマップに追加する場合、[フィールド] および [ヘルパー] フィルターを使って条件式を組み立てることができます。 | Calculator Expression |
出力モード (オプション) | 返されるフィーチャを指定します。
| String |
時間境界の分割 (オプション) |
入力データを解析用に分割する期間。 時間境界により、指定期間内の値を解析できます。 たとえば、時間境界を 1 日として、時間境界基準を 1980 年 1 月 1 日に設定した場合、トラッキングは 1 日の開始時ごとに分割されます。 | Time Unit |
時間境界の基準 (オプション) |
入力データを解析用に分割する際に使用される基準時間。 時間境界は、データの全期間に対して作成されます。基準時間は最初から作成する必要はありません。 基準時間を指定しないと、1970 年 1 月 1 日が使用されます。 | Date |
サマリー
特定の条件を満たすフィーチャを検出するレイヤーを作成します。
図
使用法
次のテーブルに、[インシデントの検出 (Detect Incidents)] ツールの用語の概要を示します。
用語 説明 トラック
時間対応かつ時間のタイプが瞬間を示す一連のフィーチャ。フィーチャはトラック ID フィールドに応じて順番が決定され、時間順に並びます。たとえば、都市に 10 分ごとにその場所を記録する除雪トラックを配備できます。車両 ID は、個別のトラックを示します。
インシデント
対象条件を満たすフィーチャ。
インスタント
開始時間は指定されているが終了時間は指定されていない、ある特定の時点を指します。[インシデントの検出 (Detect Incidents)] への入力には、時間タイプが瞬間を示す必要があります。
間隔
開始時間と終了時間が指定されている期間のことを指します。
対象フィーチャ
解析されるフィーチャを説明します。解析では、すべてのフィーチャが解析されます。
インシデントとは、特定の条件を満たすフィーチャのことです。
[インシデントの検出 (Detect Incidents)] は新しい出力を作成します。入力は変更されません。
[インシデントの検出 (Detect Incidents)] は、ポイント、ライン、またはポリゴン フィーチャで実行できます。入力レイヤーは、特定時点を表すフィーチャによって、時間が有効化されている必要があります。
時間エントリがある入力フィーチャのみが使用されます。時間エントリのないフィーチャは除外されます。
トラックは、トラック フィールドの一意の組み合わせで表されます。たとえば、flightID フィールドと Destination フィールドがトラック識別子として使用される場合、フィーチャ [[ID007, Solden]] と [[ID007, Tokyo]] は 2 つの個別トラックになります。Destination フィールドの値が異なるからです。
条件式は、Arcade 条件式を使用して作成されます。開始条件は必須ですが、終了条件は任意です。開始条件のみを適用すると、開始条件が true として評価されるとインシデントが開始し、開始条件が false として評価されると終了します。たとえば、トラックの値が [0, 10, 15, 20, 40, 10, 12, -2, -12] で開始条件が $feature["values"] > 15 の場合、インシデントとなるフィーチャは [True] で、結果は [0: False, 10: False, 15: False, 20: True, 40: True, 10: False, 12: False, -2: False, -12: False] となります。この場合、15 より大きい値のみがインシデントになります。終了条件として $feature["values"] < 0 を適用すると、その結果は [0: False, 10: False, 15: False, 20: True, 40: True, 10: True, 12: True, -2: False, -12: False] になります。この例では、開始条件が満たされるとインシデントが開始します。その後、後続のフィーチャは終了条件が true になるまでインシデントになります。次の表で、これらの例を説明を示します。
位置 1 2 3 4 5 6 7 8 9 値
0
10
15
20
40
10
12
-2
-12
開始: $feature["values"] > 15 および終了なし
False
False
False
True
True
False
False
False
False
開始: $feature["values"] > 15 および終了: $feature["values"] < 0
False
False
False
True
True
True
True
False
False
時間間隔を適用すると、指定間隔でトラックがセグメント化されます。たとえば、時間間隔の境界を 1 日に設定し、1990 年 1 月 1 日午前 9 時から開始した場合、各トラックは毎日午前 9 時に切詰められます。この分割を使用すると、解析のためのトラックを短縮できるため、計算時間を高速化できます。時間間隔の境界の繰り返しによる分割が解析で有効な場合は、ビッグ データ処理にこの方法を使用することをお勧めします。
条件は、Arcade 条件式を使用して作成され、トラック対応にできます。詳細については、「GeoAnalytics Desktop ツールの Arcade 条件式」をご参照ください。
トラックには複数インシデントを設定できます。
出力フィーチャは、入力のフィールドと以下の追加のフィールドを返します。
- IncidentID - インシデントであるすべてのフィーチャに割り当てられる一意の ID。
- IncidentStatus - インシデントのステータスを示す文字列フィールド。値は、フィーチャがインシデントでない場合は null、フィーチャが開始条件を満たす最初のインシデントの場合は Started、フィーチャが引き続きインシデントの場合は OnGoing、フィーチャがインシデントでなくなると Ended になります。1 つのトラックにインシデントの複数セグメントを設定できます。たとえば、[0, 10, 15, 20, 40, 10, 12, -2, -12] という値を持ち、開始条件が $feature["values"] > 15 のトラックであれば、IncidentStatus の値は [0: null, 10: null, 15: null, 20: Started, 40: OnGoing, 10: Ended, 12: null, -2: null, -12: null] になります。
- IncidentDuration - インシデントが発生した時間をミリ秒単位で表します。これは、対象フィーチャとインシデントを開始したフィーチャ間の差として計算されます。
- Instant_Datetime - フィーチャが発生した時間。
フィーチャはトラックごとに時系列で並べられます。最初のフィーチャから、true になるまで開始条件が評価されます。フィーチャが開始条件を満たすと、それ以降のフィーチャは、開始条件が false になるまで (終了条件が指定されていない場合)、または終了条件が true になるまで (終了条件が指定されている場合) 評価されます。その条件を満たすと、インシデントが終了し、処理がやり直しになります。個々のトラックに複数のインシデント セグメントがある場合があります。たとえば、[10, 20, 30, 40, 50, 10, 20, 30, 40, 50, 10, 20] という値を持ち、開始条件が $feature["values"] > 20 のトラックであれば、インシデント [10: null, 20: null, 30: Started, 40: OnGoing, 50: OnGoing, 10: Ended, 20: null, 30: Started, 40: OnGoing, 50: OnGoing, 10: Ended, 20: null] には 2 つのセグメントがあります。
インシデントの間隔は、フィーチャからインシデントの開始を引いた時間としてミリ秒で計算されます。期間は、フィーチャのステータスが Started、OnGoing、またはEnded の場合にのみ計算されます。ステータスが Started のフィーチャの間隔は常に 0 です。
次の 1 つまたは複数の操作を実行して、[インシデントの検出 (Detect Incidents)] ツールのパフォーマンスを向上させることができます。
- 対象データのみが解析されるように、範囲環境を設定します。
- インシデント フィーチャのみを出力します。
- [時間境界分割] パラメーターを使用してトラックを分割します。
- 解析が実行されている場所に対してローカルなデータを使用します。
ジオプロセシング ツールは、Spark を活用しています。 解析は、デスクトップ コンピューターで複数のコアを並列に使用して行われます。 解析の実行の詳細については、「GeoAnalytics Desktop ツールの考慮事項」をご参照ください。
GeoAnalytics Desktop ツールを実行する際、解析はデスクトップ コンピューターで行われます。 最適なパフォーマンスを得るために、データがデスクトップで利用できる必要があります。 ホスト フィーチャ レイヤーを使用している場合は、ArcGIS GeoAnalytics Server を使用することをお勧めします。 データがローカルではない場合は、ツールの実行時間は長くなります。 ArcGIS GeoAnalytics Server を使用して解析を実行する方法については、GeoAnalytics Tools をご参照ください。
パラメーター
arcpy.geoanalytics.DetectIncidents(input_layer, output, track_fields, start_condition, {end_condition}, {output_mode}, {time_boundary_split}, {time_boundary_reference})
名前 | 説明 | データ タイプ |
input_layer | インシデント候補を含む入力フィーチャ。 | Table View |
output | インシデントを含む新しい出力データセット。 | Feature Class;Table |
track_fields [track_fields,...] | 一意のトラックを識別するために使用する 1 つまたは複数フィールド。 | Field |
start_condition | インシデントの特定に使用する条件。式は Arcade で記述され、[+ - * / ] 演算子と複数のフィールドを含めることができます。 | Calculator Expression |
end_condition (オプション) | インシデントの終了に使用する条件。終了条件が指定されていない場合、インシデントは開始条件が true でなくなったときに終了します。 | Calculator Expression |
output_mode (オプション) | 返されるフィーチャを指定します。
| String |
time_boundary_split (オプション) |
入力データを解析用に分割する期間。 時間境界により、指定期間内の値を解析できます。 たとえば、時間境界を 1 日として、時間境界基準を 1980 年 1 月 1 日に設定した場合、トラッキングは 1 日の開始時ごとに分割されます。 | Time Unit |
time_boundary_reference (オプション) |
入力データを解析用に分割する際に使用される基準時間。 時間境界は、データの全期間に対して作成されます。基準時間は最初から作成する必要はありません。 基準時間を指定しないと、1970 年 1 月 1 日が使用されます。 | Date |
コードのサンプル
次のスタンドアロン スクリプトで、DetectIncidents 関数を使用する方法を示します。
# Name: DetectIncidents.py
# Description: Detect incidents when wind speed is greater than 100 miles per hour
# Import system modules
import arcpy
arcpy.env.workspace = "C:/data/Weather.gdb"
# Enable time on the input features using an .lyrx file.
# To create the .lyrx file, add your layer to a map, open the layer properties
# and enable time. Then right-click the layer and select Share As Layer File.
inputLyrx = r'C:\data\Hurricanes.lyrx'
# MakeFeatureLayer converts the .lyrx to features
hurricanesLayer = arcpy.management.MakeFeatureLayer(inputLyrx, "Hurricanes Layer")
# ApplySymbologyFromLayer sets the time using the .lyrx file definition
arcpy.management.ApplySymbologyFromLayer(hurricanesLayer, inputLyrx)
# Set local variables
out = "Hurricane_Incidents"
trackIdentifier = "STAGE"
startCondition = "$feature['WINDSPEED'] > 100"
# Run Detect Incidents
arcpy.gapro.DetectIncidents(hurricanesLayer, out, trackIdentifier, startCondition)