GeoAnalytics Desktop ツールボックスにおける ArcGIS Arcade 式
一部の GeoAnalytics Desktop ツールは、解析で ArcGIS Arcade 式を使用します。 以下では、式のツールと関数の概要を示します。
Arcade を使用して、フィールド名が $feature["field name"] または $feature.fieldname として書式設定されます。 フィールド名にスペースが含まれる場合には、最初のオプション $feature["field name"] が必要となります。 下記のすべての例は、このオプションを使用しています。 [フィーチャの結合 (Join Features)] を除くすべて GeoAnalytics Desktop ツールは、 $feature["field name"] という形式を使用します。 [フィーチャの結合 (Join Features)] では、 $target["field name"] および $join["field name"] を使用して、使用するデータセットを指定します。
使用法、プロファイル変数、戻り値のタイプ、およびその他の詳細については、 GeoAnalyticsArcade プロファイル をご参照ください。
Arcade 式は、GeoAnalytics Desktop ツールボックスにおいて、次のツールによって使用されます。
[トラッキングの再構築 (Reconstruct Tracks)] および [バッファーの作成 (Create Buffers)] - バッファー式を使用して数値計算を実行し、バッファー サイズを設定します。 すべてのレコードに適用できる、単純なものから高度なものまでの、さまざまな計算を実行することができます。 この計算は、各フィーチャに適用されます。
[トラッキングの再構築] - 分割式を使用して、トラッキングを分割する条件を指定します。 ポイントが条件を満たしている場合、トラッキングが分割されて別のトラッキングに集計されます。 単純な条件のほか、トラッキング ベースの条件も適用できます。 たとえば、現在のポイントの速度が秒速 2 メートル未満の場合にトラッキングを分割できます (
TrackCurrentSpeed() < 2)。[フィーチャの結合 (Join Features)] - 結合式を使用して、結合に含めるべきフィーチャを選択する条件を指定します。 単純な結合条件のほか (
field a > field cなど)、高度な条件を指定することもできます。 条件は各フィーチャに対してテストされ、解析するフィーチャを決定します。[フィールド演算 (Calculate Field)] - すべてのレコードに適用される、単純な計算と高度な計算を実行します。 この計算は、各フィーチャに適用されます。
[インシデントの検出 (Detect Incidents)] - インシデントの開始条件と終了条件を決定します。 開始式と終了式を使用してインシデントを検出します。 インシデントの検出条件の結果は、常に
trueかfalseのどちらかになります。 条件を使用して、インシデントにフィーチャを含める必要があるかどうか確認します。 条件は各フィーチャに対してテストされ、インシデントとするフィーチャを決定します。
数学演算および数学関数の例
式は、数値を数学的に処理することができます。 以下の表は、使用可能な演算のサンプルを示しています。
|
演算子 |
説明 |
例 |
|---|---|---|
|
|
a プラス b の合計を返します。 |
4.0 |
|
|
a マイナス b の差を返します。 |
1.1 |
|
|
a 掛ける b の積を返します。 |
4.4 |
|
|
a 割る b の商を返します。 |
3.2 |
|
|
|
1.5 |
|
|
a の自然対数 (底を e とする) を返します。 |
0 |
|
|
a の正弦が返されます。 入力の角度の単位はラジアンです。 |
1 |
|
|
a の余弦が返されます。 入力の角度の単位はラジアンです。 |
1 |
|
|
a の正接が返されます。 入力の角度の単位はラジアンです。 |
0 |
|
|
a の平方根を返します。 |
3 |
|
|
a と b のうちの小さい方の数値を返します。 |
-3 |
|
|
a と b のうちの大きい方の数値を返します。 |
1.5 |
|
|
入力値が制限範囲内にある場合、入力値を返します。 値が下限値よりも小さい場合、下限値を返します。 値が上限値よりも大きい場合、上限値を返します。 |
例 1:
例 2:
|
テキスト関数の例
Arcade 式は、テキストを処理できます。 以下の表は、使用可能な演算のサンプルを示しています。
|
演算子 |
説明 |
例 |
結果 |
|---|---|---|---|
|
|
値を 1 つに連結して、文字列を返します。
|
|
GeoAnalytics is great! |
|
|
文字列内の文字列を検索します。 ワイルドカードはサポートされていません。
|
|
2 |
|
|
文字列を小文字にします。
|
|
geoanalytics |
find および lower を使用するテキストの例。
find(("north"), lower("146NorthStreet"))
日付関数の例
Arcade 式は、日付を処理できます。 以下の表は、使用可能な演算のサンプルを示しています。 Arcade では、月の値は 0 (1 月) ~ 11 (12 月)、日は 1 ~ 31、時は 0 (午前 12:00) ~ 23 (午後 11:00)、分と秒は 0 ~ 59、ミリ秒は 0 ~ 999 となります。
|
演算子 |
説明 |
例 |
結果 |
|---|---|---|---|
|
|
値または値のセットを構文解析して日付文字列に変換します。
|
例 1: 例 2: 例 3: |
例 1: 20 Oct 2016 11:23:03 am 例 2: 14 Jan 2017 12:00:00 am 例 3: 現在の時間を返す |
|
|
ある日付から別の日付を減算して、その差を指定の単位で返します。
|
例 1: 例 2: |
結果は、このコマンドをいつ実行するかによって変わります。 例 1: -20532129137 例 2: -0.6546783768647119 |
|
|
所定の年を返します。
|
例 1:
例 2: |
例 1: 2017 例 2: 2012 |
論理関数の例
シンプルな数式に加えて、次の表に示す高度な関数を使用してバッファー式を適用できます。
|
関数 |
説明 |
例 |
結果 |
|---|---|---|---|
|
|
条件が
|
|
|
|
|
式が
|
|
|
|
|
式を評価し、その値を以降のパラメーターと比較します。 式が一致した場合、次のパラメーター値を返します。 何も一致しない場合、最後のパラメーターがデフォルトの戻り値になるオプションがあります。
|
|
条件付き val の |
条件付き演算子
条件付きステートメントでは、次の表に示す演算子を使用できます。
|
演算子 |
説明 |
例 |
結果 |
|---|---|---|---|
|
|
a が b よりも大きい a が b よりも小さい |
|
False |
|
|
a が b 以上である a が b 以下である |
|
True |
|
|
a が b と等しくない |
|
True |
|
|
a が b と等しい |
|
True |
|
|
条件 1 または条件 2 が満たされる。 |
|
True |
|
|
条件 1 および条件 2 が満たされる。 |
|
False |
トラッキング対応の例
[インシデントの検出 (Detect Incidents)] 、 [フィールド演算 (Calculate Field)] 、 [トラッキングの再構築 (Reconstruct Tracks)] は、Arcade でトラッキング対応方程式を使用できます。 [フィールド演算 (Calculate Field)] では、入力レイヤーが時間対応で、 [式はトラッキング対応です] がオン、かつトラッキングを識別する 1 つ以上のフィールドが特定されている場合に、トラッキング方程式が使用できます。 トラック対応機能を次の表に示します。
|
関数 |
説明 |
例 |
結果 |
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
TrackStartTime() |
トラッキングの開始時間を紀元からのミリ秒単位で計算します。 |
2017 年 1 月 2 日に開始するトラッキングを使用します。
|
|
||||||||||||
|
TrackDuration() |
トラッキングの開始から現在の時間ステップまでの期間をミリ秒単位で計算します。 |
2017 年 1 月 2 日に開始するトラッキングを使用し、現在時間は 2017 年 1 月 4 日です。
|
|
||||||||||||
|
TrackCurrentTime() |
トラッキングの現在の時刻を計算します。 |
2017 年 1 月 3 日の午前 9 時に発生したフィーチャを使用します。
|
|
||||||||||||
|
TrackIndex |
計算されているフィーチャの時間インデックスを返します。 |
トラッキング内の最初のフィーチャに対してこの値を計算する。
|
|
||||||||||||
|
TrackFieldWindow(<fieldName>, <startIndex>, <endIndex>) |
所定のフィールドの指定された時間インデックスの値の配列を返します。 ウィンドウ関数を使用すると、時間を前後に移動できます。 式はトラッキングの各フィーチャで評価されます。
|
例 1: 例 2: 例 3: |
例 1: 各フィーチャで評価されると、表には次の結果が表示されます。
例 2: インデックス 2 で評価されると (値は 30)、 例 3: インデックス 2 で評価されると (値は 30)、 |
||||||||||||
|
TrackGeometryWindow(<startIndex>, <endIndex>) |
指定された時間のインデックスのジオメトリを表す値の配列を返します。 ウィンドウ関数を使用すると、時間を前後に移動できます。 式はトラッキングの各フィーチャで評価されます。
|
例 1: 例 2: ポリライン データセットの 例 3: ポリゴン データセットの 例 4: 前のポイント |
例 1: 各フィーチャで評価されると、表には次の結果が表示されます。
例 2: ポリラインは次の形式で返されます: 例 3: ポリゴンは次の形式で返されます: 例 4: インデックス 2 (値は 30) で評価: |
||||||||||||
|
TrackWindow(<value1>, <value2>) |
指定された時間のインデックスのジオメトリとすべての属性を表す値の配列を返します。 ウィンドウ関数を使用すると、時間を前後に移動できます。
|
例 1: 例 2: |
例 1: 各フィーチャで評価されると、表には次の結果が表示されます。
例 2: インデックス 2 (値は 30) で評価: |
次の表のトラッキングを使用して、トラッキングの距離、速度、加速度を計算します。 これは、 [モーションの統計量を計算 (Calculate Motion Statistics)] ツールで使用される計算と似ています。
距離の計算はメートル法、速度はメートル/秒、加速度はメートル/秒二乗ですべて計算されます。 距離は測地距離を使用して計測されます。
|
関数 |
説明 |
|---|---|
|
|
最初の観測から現在の観測までの移動距離の合計。 |
|
|
最初の観測から現在の観測までの移動距離の合計に特定の値を加算。 |
|
|
最初の観測 (0) についてのウィンドウ内の最初の値 (含まれる) から最後の値 (含まれない) までの距離。 |
|
|
前の観測から現在の観測までの速度。 |
|
|
現在の観測を基準とした観測時の速度。 たとえば、値 2 では、現在から 2 観測後の観測時の速度です。 |
|
|
最初の観測 (0) についてのウィンドウ内の最初の値 (含まれる) から最後の値 (含まれない) までの速度値。 |
|
|
前の観測から現在の観測までの加速度。 |
|
|
現在の観測を基準とした観測時の加速度。 |
|
|
最初の観測 (0) についてのウィンドウ内の最初の値 (含まれる) から最後の値 (含まれない) までの加速度値。 |
距離、速度、加速度の計算例は、次の図の例を使用します。

|
関数 |
結果例 |
||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|
||||||||||||||
|
|
|