トラッキングの再構築 (Reconstruct Tracks) (GeoAnalytics Desktop)

サマリー

時間対応入力データからラインまたはポリゴン トラッキングを作成します。

トラッキングの再構築ツールの図

使用法

  • [トラッキングの再構築 (Reconstruct Tracks)] は、ポイント フィーチャまたはポリゴン フィーチャで実行されます。 入力レイヤーは、特定時点を表すフィーチャによって、時間が有効化されている必要があります。

  • トラッキングを識別するために、1 つ以上のフィールドを選択できます。 トラッキングは、1 つ以上のトラッキング フィールドの一意の組み合わせで表されます。 たとえば、flightID フィールドと Destination フィールドがトラッキング識別子として使用される場合、ID007, SoldenID007, Tokyo の各フィーチャは 2 つの個別トラッキングになります。Destination フィールドの値が異なるからです。

  • バッファーが適用されたフィーチャはポリゴン トラッキングになります。 バッファーが適用されない入力ポイント フィーチャは、ポリライン トラッキングになります。

  • 入力フィーチャは、時間が有効化されており、特定時点を表すフィーチャで構成されます。 結果は、時間の間隔を表すライン フィーチャまたはエリア フィーチャになります。 間隔の始点と終点は、トラック内の最初のフィーチャと最後のフィーチャの時間によって決定されます。

    2 つの明確なトラックを持つ入力フィーチャ (緑と赤)。時間タイプが「インスタント」 (左) と生成されるトラック (右)、または時間タイプが「間隔」。
    時間タイプが「インスタント」 (左) と生成されるトラック (右)、または時間タイプが「間隔」である 2 つの明確なトラックを持つ入力フィーチャ (緑と赤) が表示されます。

  • 線形の結果の場合、複数のポイントを含むトラッキングのみが返されます。 バッファーを適用すると、すべてのフィーチャが返されます。

  • また、任意で入力フィーチャにバッファーを適用することもできます。 バッファーを適用すると、生成されるトラックはポリゴン フィーチャになります。

    バッファーを適用し、トラックに再構築した入力ポイント
    バッファーが適用された入力ポイントは、トラッキングに再構築されます。

  • 入力フィーチャをバッファー処理すると、入力フィーチャごとにバッファー処理されます。 次に、凸包が生成され、ポリゴン トラッキングが作成されます。

    入力ポイント (緑)、視覚化用の中間バッファー (青のハッチング)、生成されるポリゴン トラック (青)
    入力ポイント (緑)、視覚化用の中間バッファー (青のハッチング)、生成されるポリゴン トラック (青) の例を示します。

  • バッファー式で使用されるフィールドは数値でなければならず、入力の空間参照の単位を使用して適用されます。 詳細については、「GeoAnalytics Desktop ツールボックスにおける Arcade 式」をご参照ください。 トラッキング対応方程式を使用できます。

  • デフォルトでは、トラッキング内のポイント数またはポリゴン数のみが計算されます。 [サマリー フィールド] パラメーターの値を指定して、追加の統計情報を計算できます。

  • デフォルトでは、トラッキングは測地線による方法で作成されます。 この方法は、解析の以下の 2 つのコンポーネントに適用されます。

    • 国際日付変更線をまたぐトラッキング - 測地線による方法を使用する場合、国際日付変更線をまたぐ入力レイヤーには、国際日付変更線を正しく横断するトラッキングが含まれます。 これがデフォルトです。 入力レイヤーまたは処理空間参照は、国際日付変更線周辺の折り返しをサポートする空間参照に設定される必要があります (たとえば、正積円筒図法などのグローバル投影)。
    • バッファー - 入力フィーチャは任意でバッファーすることもできます。 測地線バッファーまたは平面バッファーの適用について詳しくは、「バッファーの作成」をご参照ください。

  • トラッキングは次の方法で分割できます。

    • [時間分割] - 入力間の時間に基づきます。 時間分割を適用すると、入力データが指定時間よりも大きい場合に、トラッキングが分割されます。 たとえば、同じトラッキング識別子を持つフィーチャが 5 つあり、その時間が [01:00, 02:00, 03:30, 06:00, 06:30]、時間分割が 2 時間に設定されている場合、2 時間以上の間隔のあるフィーチャは分割されます。 この例では、結果は [01:00, 02:00, 03:30] と [06:00, 06:30] となります。03:30 と 6:00 は 2 時間以上開いているからです。
    • [時間境界分割] - 定義された時間間隔に基づきます。 時間境界分割を適用すると、定義済み間隔でトラックが行われます。 たとえば、時間の境界を 1 日に設定し、1990 年 1 月 1 日午前 9 時から開始した場合、各トラッキングは毎日午前 9 時に切詰められます。 この分割を使用すると、解析のためのトラッキングを短縮できるため、計算時間を高速化できます。 時間の境界の繰り返しによる分割が解析で有効な場合は、ビッグ データ処理にこの方法を使用することをお勧めします。
    • [距離分割] - 入力間の距離に基づきます。 距離分割を適用すると、入力データが指定距離よりも大きい場合に、トラッキングが分割されます。 たとえば、距離分割を 5 キロメートルに設定した場合、5 キロメートル以上の連続したフィーチャは異なるトラッキングに分けられます。
    • [分割式] - Arcade 式に基づいています。 分割式を適用すると、値、ジオメトリ、または時間値に基づいてトラッキングが分割されます。 たとえば、フィールド値がトラッキング内の前の値の 2 倍よりも大きい場合にトラッキングを分割できます。 これを行うには、WindSpeed というサンプル フィールドを使用して var speed = TrackFieldWindow("WindSpeed", -1, 1); 2* speed[0] < speed[1] という式を使用します。 前の値 (speed[0]) が現在の値の 2 倍よりも小さくなると、トラッキングが分割されます。

  • 0、1、2、3、または 4 つの分割オプションを同時に適用できます。 次に示されたすべての例で、間隔分割が使用されています。 6 時間の時間分割、1 日の時間境界、16 キロメートルの距離分割を適用することを前提とした場合の結果は、次のようになります。

    時間と距離の変化による分割の 5 つの入力ポイント (緑色) 例
    時間と距離の変化による分割の 5 つの入力ポイント (黄色) 例を示します。

    分割オプション説明

    時間と位置を含む 6 つの入力ポイント

    同じ識別子の付いた入力ポイント。 ポイント間の距離は点線の上にマークされ、各ポイント測定の時間はポイントの下にマークされます。 タイムラインに 4 つの分割があります。 赤色の分割は、午前 12 時から始まる 1 日の時間境界の分割を表します。 青色の分割は、2 つのポイント間の距離が 16 キロメートルを超える距離分割を表します。 紫色の分割は、2 つの連続したポイント間の時間距離が 6 時間を超える時間分割を表します。

    時間分割なし、距離分割なしの例

    時間分割なし、距離分割なしの例。

    6 時間の時間分割を伴う例

    6 時間の時間分割を伴う例。 2 時間以上離れているフィーチャは、別々のトラッキングに分割されます。

    1 日の時間境界を伴う例

    午前 12 時から始まる、1 日の時間境界を伴う例。 指定された時間 (ここでは午前 12 時) から始まる 1 日の間隔に対して、それぞれトラッキングが作成されます。

    16 キロメートルの距離分割を伴う例

    16 キロメートルの距離分割を伴う例。 16 キロメートル以上離れているフィーチャ (午前 5 時のフィーチャと午前 6 時のフィーチャ) は、別々のトラッキングに分割されます。

    6 時間の時間分割と、午前 12 時から始まる 1 日の時間境界の分割を伴う例

    6 時間の時間分割と、午前 12 時から始まる 1 日の時間境界を伴う例。6 時間以上離れているフィーチャ、または午前 12 時の時間分割と交差するフィーチャは、別々のトラックに分割されます。

    6 時間の時間分割と 16 キロメートルの距離分割を伴う例

    6 時間の時間分割と 16 キロメートルの距離分割を伴う例。 6 時間以上離れているフィーチャ (午前 6 時のフィーチャと午後 7 時のフィーチャ) または 16 km 以上離れているフィーチャは、別々のトラッキングに分割されます。

    16 キロメートルの距離分割と、午前 12 時から始まる 1 日の時間境界を伴う例

    16 キロメートルの距離分割と、午前 12 時から始まる 1 日の時間境界を伴う例。16 キロメートル以上離れているフィーチャ、または午前 12 時の時間分割と交差するフィーチャは、別々のトラッキングに分割されます。

    16 キロメートルの距離分割、6 時間の時間分割、および午前 12 時から始まる 1 日の時間境界を伴う例。

    16 キロメートルの距離分割、6 時間の時間分割、および午前 12 時から始まる 1 日の時間境界を伴う例。16 キロメートル以上または 6 時間以上離れているフィーチャ、または午前 12 時の時間分割と交差するフィーチャは、別々のトラッキングに分割されます。

  • 時間分割、距離分割、または分割式を使用してトラッキングを分割する場合は、分割間のセグメントの作成方法を設定できます。 次のオプションがあります。

    • [間隔] - 分割された 2 つのフィーチャ間に間隔を作成します。
    • [後に終了] - 分割の後に終了するセグメントを作成します。
    • [前に開始] - 分割の前に終了して開始するセグメントを作成します。

    分割タイプの例を次の図に示します。

    3 種類の時間分割

    同じ入力ポイント (黄色) に対する時間分割の 3 つの例を示しています。

    時間分割オプション説明

    時間と位置を含む 5 つの入力ポイント

    同じ識別子が設定された 5 つの入力ポイント。 各ポイントの時間は点線の下にマークされます。 すべての例で、午前 2 時と午前 5 時の間に 1 つの分割が存在します。 各トラッキングは、トラッキング上の 3 番目のポイントと 4 番目のポイントの間で 2 つのセグメントに分割されます。 最初のトラッキングが緑色、2 番目のトラッキングが紫色です。 トラッキングの分割方法は、分割タイプ パラメーターによって決まります。

    [間隔] 間隔による分割

    分割された 2 つのポイントの間に間隔がある例。 これがデフォルトです。

    [後に終了] 分割後に終了する分割

    分割後に 4 番目のポイントでトラッキングが終了する例。 2 番目のトラッキングは 4 番目のポイントから開始します。

    [前に開始] 分割前に開始する分割

    分割前に 3 番目のポイントでトラッキングが分割する例。 2 番目のトラッキングは 3 番目のポイントから開始します。

  • 以下の例は、航空路線のフライト便を使用し、分割パラメーターとフィールド識別子パラメーターを使用してトラッキングを定義することが有効な理由を示したものです。

    • 航空機フィーチャには aircraft IDflight IDpilot namestart timeflight_maneuver フィールドがあります。 flight_maneuver フィールドは、航空機が地上にあるか、上昇中、降下中、または一定の高度であるかを表します。
      • それぞれの航空機が移動した位置を確認するには、aircraft ID フィールドを使用します。
      • 個別のルートを比較するには、識別子として aircraft ID および flight ID フィールドを使用します。
      • 1 年間の各航空機のフライト便を調査するには、aircraft ID フィールドと 1 年の時間境界を使用します。
      • 各パイロットのフライトを表示するには、pilot nameaircraft ID、および start time フィールドを使用します。
      • 1,000 キロメートル以上離れている測定値を同じトラッキングに含めない場合、aircraft ID フィールドを識別子として使用し、1,000 キロメートルを超える距離で分割して新しいトラッキングを決定します。
      • aircraft ID フィールドを識別子として使用し、flight_maneuver フィールドの値が変わったときに式を使用して分割します。 たとえば、var flight_manuever = TrackFieldWindow("maneuver", -1, 1); flight_maneuver[0] != flight_maneuver[1] を指定すると、トラッキング内の現在の値と前の値が一致しているかどうかの確認が行われます。 一致していない場合は、トラッキングが分割されます。

  • 出力トラックは、トラック識別子として使用されるフィールド、トラック内のフィーチャ数 (count)、各トラックの開始時間と終了時間 (start_dateend_date)、トラックの間隔 (ミリ秒、duration)、およびその他のオプション統計 (statisticstype_fieldname) の形式をとる) を返します。

  • 以下を 1 つ以上行うことで、[トラッキングの再構築 (Reconstruct Tracks)] ツールのパフォーマンスを向上させることができます。

    • 対象データのみが解析されるように、範囲環境を設定します。
    • 測地線の代わりに平面方法を使用します。
    • バッファーは適用しないでください。
    • [時間分割][時間境界分割][距離分割]、または [分割式] パラメーターを使用して、トラッキングを分割します。 [時間境界分割] パラメーターを使用すると、パフォーマンスが最も上がります。
    • 解析が実行されているロケーションに対してローカルなデータを使用します。

  • ジオプロセシング ツールは、Spark を活用しています。 解析は、複数のコアを並列に使用して、デスクトップ コンピューター上で実行されます。 解析の実行方法の詳細については、「GeoAnalytics Desktop ツールに関する考慮事項」をご参照ください。

  • GeoAnalytics Desktop ツールを実行する場合、解析はデスクトップ コンピューター上で実行されます。 最適なパフォーマンスを実現するには、データがデスクトップ上で使用可能である必要があります。 ホスト フィーチャ レイヤーを使用している場合は、ArcGIS GeoAnalytics Server を使用することをお勧めします。 データがローカルに存在していない場合、ツールの実行時間が長くなります。 ArcGIS GeoAnalytics Server を使用して解析を実行する方法については、GeoAnalytics Tools をご参照ください。

  • 次のツールを使用して、類似の解析を実行することもできます。

パラメーター

ラベル説明データ タイプ
入力レイヤー

トラッキングに再構築するポイントまたはポリゴン。 入力は、特定時点を表す時間対応レイヤーにする必要があります。

Feature Layer
出力フィーチャクラス

作成されたトラッキングを持つ新しいフィーチャクラス。

Feature Class
トラッキング フィールド

一意のトラッキングを識別するために使用される 1 つ以上のフィールド。

Field
方法

トラッキングの再構築に使用する基準を指定します。 バッファーを使用する場合は、[方法] パラメーターによってバッファーのタイプが決まります。

  • 測地線空間参照が画面移動可能である場合、適切であればトラッキングは日付変更線と交差します。 空間参照が画面移動可能ではない場合、トラッキングは座標系の範囲に制限され、折り返すことはできません。
  • 平面平面バッファーが作成されます。
String
バッファー タイプ

バッファー距離の定義方法を指定します。

  • フィールド1 つのフィールドを使用して、バッファー距離を定義します。
  • フィールドと数学演算子を使用した方程式を使用して、バッファー距離を定義します。
String
バッファー フィールド
(オプション)

入力フィーチャのバッファーに使用するフィールド。 地理座標系を使用していない限り、フィールドの値は入力の空間参照の単位で適用されます。地理座標系を使用している場合の単位は m です。

Field
バッファー式
(オプション)

入力フィーチャのバッファーに使用される式。 フィールドは数値である必要があり、式には [ + - * / ] 演算子と複数のフィールドを含めることができます。 地理座標系を使用していない限り、計算される値は入力の空間参照の単位で適用されます。地理座標系を使用している場合の単位は m です。

as_kilometers($feature.distance) * 2 + as_meters(15) などの Arcade 式を使用します。

レイヤーをマップに追加する場合、[フィールド] および [ヘルパー] フィルターを使って式を組み立てることができます。

Calculator Expression
時間で分割
(オプション)

時間次元で時間分割期間よりも離れているフィーチャは複数のトラッキングに分割されます。

Time Unit
距離で分割
(オプション)

距離次元で距離分割値よりも離れているフィーチャは複数のトラッキングに分割されます。

Linear Unit
時間境界の分割
(オプション)

入力データを解析用に分割する期間。 時間境界により、指定期間内の値を解析できます。 たとえば、時間境界を 1 日として、時間境界基準を 1980 年 1 月 1 日に設定した場合、トラッキングは 1 日の開始時ごとに分割されます。

Time Unit
時間境界の基準
(オプション)

入力データを解析用に分割する際に使用される基準時間。 時間境界は、データの全期間に対して作成されます。基準時間は最初から作成する必要はありません。 基準時間を指定しないと、1970 年 1 月 1 日が使用されます。

Date
サマリー フィールド
(オプション)

指定されたフィールドに関して計算される統計情報。

  • [個数] - NULL 値でない値の数。 数値フィールドまたは文字列に使用できます。 [null, 0, 2] の個数は 2 です。
  • [合計] - フィールド内の数値の合計。 [null, null, 3] の合計は 3 です。
  • [平均] - 数値の平均。 [0, 2, null] の平均は 1 です。
  • [最小] - 数値フィールドの最小値。 [0, 2, null] の最小は 0 です。
  • [最大] - 数値フィールドの最大値。 [0, 2, null] の最大値は 2 です。
  • [標準偏差] - 数値フィールドの標準偏差。 [1] の標準偏差は null です。 [null, 1,1,1] の標準偏差は null です。
  • [分散] - トラッキング内の数値フィールドの分散。 [1] の分散は null です。 [null, 1, 1, 1] の分散は null です。
  • [範囲] - 数値フィールドの範囲。 これは、最大値から最小値を減算して計算されます。 [0, null, 1] の範囲は 1 です。 [null, 4] の範囲は 0 です。
  • [任意] - 文字列型のフィールドのサンプル文字列。
  • [最初] - トラッキング内の指定フィールドの最初の値。
  • [最後] - トラッキング内の指定フィールドの最後の値。

Value Table
分割式
(オプション)

値、ジオメトリ、または時間値に基づいてトラッキングを分割する式。 式の検証の結果、真と判定された場合は、分割が行われます。

Calculator Expression
分割タイプ
(オプション)

トラッキングを分割する場合に 2 つのフィーチャ間にトラッキング セグメントを作成する方法を指定します。 分割タイプは、分割式、距離分割、および時間分割に適用されます。

  • ギャップ2 つのフィーチャ間にセグメントが作成されません。 これがデフォルトです。
  • 後に終了分割の後に終了する 2 つのフィーチャ間にセグメントが作成されます。
  • 前に開始分割の前に終了する 2 つのフィーチャ間にセグメントが作成されます。
String

arcpy.geoanalytics.ReconstructTracks(input_layer, out_feature_class, track_fields, method, buffer_type, {buffer_field}, {buffer_expression}, {time_split}, {distance_split}, {time_boundary_split}, {time_boundary_reference}, {summary_fields}, {split_expression}, {split_type})
名前説明データ タイプ
input_layer

トラッキングに再構築するポイントまたはポリゴン。 入力は、特定時点を表す時間対応レイヤーにする必要があります。

Feature Layer
out_feature_class

作成されたトラッキングを持つ新しいフィーチャクラス。

Feature Class
track_fields
[track_fields,...]

一意のトラッキングを識別するために使用される 1 つ以上のフィールド。

Field
method

トラッキングの再構築に使用する基準を指定します。 バッファーを使用する場合は、method パラメーターによってバッファーのタイプが決まります。

  • GEODESIC空間参照が画面移動可能である場合、適切であればトラッキングは日付変更線と交差します。 空間参照が画面移動可能ではない場合、トラッキングは座標系の範囲に制限され、折り返すことはできません。
  • PLANARトラッキングは日付変更線と交差しません。
String
buffer_type

バッファー距離の定義方法を指定します。

  • FIELD1 つのフィールドを使用して、バッファー距離を定義します。
  • EXPRESSIONフィールドと数学演算子を使用した方程式を使用して、バッファー距離を定義します。
String
buffer_field
(オプション)

入力フィーチャのバッファーに使用するフィールド。 地理座標系を使用していない限り、フィールドの値は入力の空間参照の単位で適用されます。地理座標系を使用している場合の単位は m です。

Field
buffer_expression
(オプション)

入力フィーチャのバッファーに使用される式。 フィールドは数値である必要があり、式には [ + - * / ] 演算子と複数のフィールドを含めることができます。 地理座標系を使用していない限り、計算される値は入力の空間参照の単位で適用されます。地理座標系を使用している場合の単位は m です。

as_kilometers($feature.distance) * 2 + as_meters(15) などの Arcade 式を使用します。

Calculator Expression
time_split
(オプション)

時間次元で時間分割期間よりも離れているフィーチャは複数のトラッキングに分割されます。

Time Unit
distance_split
(オプション)

距離次元で距離分割値よりも離れているフィーチャは複数のトラッキングに分割されます。

Linear Unit
time_boundary_split
(オプション)

入力データを解析用に分割する期間。 時間境界により、指定期間内の値を解析できます。 たとえば、時間境界を 1 日として、時間境界基準を 1980 年 1 月 1 日に設定した場合、トラッキングは 1 日の開始時ごとに分割されます。

Time Unit
time_boundary_reference
(オプション)

入力データを解析用に分割する際に使用される基準時間。 時間境界は、データの全期間に対して作成されます。基準時間は最初から作成する必要はありません。 基準時間を指定しないと、1970 年 1 月 1 日が使用されます。

Date
summary_fields
[summary_fields,...]
(オプション)

指定されたフィールドに関して計算される統計情報。

  • COUNT - NULL 値でない値の数。 数値フィールドまたは文字列に使用できます。 [null, 0, 2] の個数は 2 です。
  • SUM - フィールド内の数値の合計。 [null, null, 3] の合計は 3 です。
  • MEAN - 数値の平均。 [0,2, null] の平均は 1 です。
  • MIN - 数値フィールドの最小値。 [0, 2, null] の最小は 0 です。
  • MAX - 数値フィールドの最大値。 [0, 2, null] の最大値は 2 です。
  • STDDEV - 数値フィールドの標準偏差。 [1] の標準偏差は null です。 [null, 1,1,1] の標準偏差は null です。
  • VAR - トラッキング内の数値フィールドの分散。 [1] の分散は null です。 [null, 1,1,1] の分散は null です。
  • RANGE - 数値フィールドの範囲。 これは、最大値から最小値を減算して計算されます。 [0, null, 1] の範囲は 1 です。 [null, 4] の範囲は 0 です。
  • ANY - 文字列型のフィールドのサンプル文字列。
  • FIRST - トラッキング内の指定フィールドの最初の値。
  • LAST - トラッキング内の指定フィールドの最後の値。

Value Table
split_expression
(オプション)

値、ジオメトリ、または時間値に基づいてトラッキングを分割する式。 式の検証の結果、真と判定された場合は、分割が行われます。

Calculator Expression
split_type
(オプション)

トラッキングを分割する場合に 2 つのフィーチャ間にトラッキング セグメントを作成する方法を指定します。 分割タイプは、分割式、距離分割、および時間分割に適用されます。

  • GAP2 つのフィーチャ間にセグメントが作成されません。 これがデフォルトです。
  • FINISH_LAST分割の後に終了する 2 つのフィーチャ間にセグメントが作成されます。
  • START_NEXT分割の前に終了する 2 つのフィーチャ間にセグメントが作成されます。
String

コードのサンプル

ReconstructTracks の例 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトで、ReconstructTracks 関数を使用する方法を示します。

# Name: ReconstructTracks.py
# Description: Reconstruct hurricane points into hurricane tracks, where each 
#              location is buffered by the wind speed * 100.

# Import system modules
import arcpy

# 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
trackIdentifier = "EVENTID"
out = "c:/mydata/OutputDatasets.gdb/HurricaneTracks"
bufferExpression = "WINDSPEED * 100"
statistics = [["PRESSURE", "MEAN"]]

# Run Reconstruct Tracks
arcpy.gapro.ReconstructTracks(hurricanesLayer, out, trackIdentifier, 
                              "GEODESIC", "EXPRESSION", None, 
                              bufferExpression, None, statistics)