フィールド演算の式

[フィールド演算 (Calculate Field)] ツールは、Arcade 式を使用してフィールド値を求めます。すべてのレコードに適用される、単純なものから高度なものまでの、さまざまな計算を実行することができます。この計算は、各フィーチャに適用されます。以下の各セクションでは、フィールド演算の式を使用する例を示しています。ArcGIS GeoAnalytics Server で解析が行われると演算が実行され、必ず新しいレイヤーが作成されます。

ArcGIS Enterprise 10.6 以降では、式は Arcade を使用して書式設定されます。Arcade を使用して、フィールド名が $feature["field name"] または $feature.fieldname として書式設定されます。フィールド名にスペースが含まれる場合には、最初のオプション $feature["field name"] が必要となります。下記のすべての例は、このオプションを使用しています。

Arcade 式の詳細

Arcade 式は、GeoAnalytics Server において、次のツールによって使用されます。

数学演算および数学関数の例

式は、数値を数学的に処理することができます。次の表は、使用可能な演算の例を示しています。

Arcade で使用できる数学演算および数学関数の詳細

演算子説明

a + b

a プラス b の合計を返します。

fieldname には、1.5 の値が含まれています。

$feature["fieldname"] + 2.5

4.0

a - b

a マイナス b の差を返します。

fieldname には、3.3 の値が含まれています。

$feature["fieldname"]- 2.2

1.1

a * b

a 掛ける b の積を返します。

fieldname には、2.0 の値が含まれています。

$feature["fieldname"] * 2.2

4.4

a / b

a 割る b の商を返します。

fieldname には、4.0 の値が含まれています。

$feature["fieldname"] / 1.25

3.2

abs( a )

a. の絶対値 (正の値) を返します。

fieldname には、-1.5 の値が含まれています。

abs($feature["fieldname"])

1.5

log( a )

a の自然対数 (底を e とする) を返します。

fieldname には、1 の値が含まれています。

log($feature["fieldname"])

0

sin( a )

a の正弦が返されます。

入力の角度の単位はラジアンです。

fieldname には、1.5707 の値が含まれています。

sin($feature["fieldname"])

1

cos( a )

a の余弦が返されます。

入力の角度の単位はラジアンです。

fieldname には、0 の値が含まれています。

cos($feature["fieldname"])

1

tan( a )

a の正接が返されます。

入力の角度の単位はラジアンです。

fieldname には、0 の値が含まれています。

tan($feature["fieldname"])

0

sqrt( a )

a の平方根を返します。

fieldname には、9 の値が含まれています。

sqrt($feature["fieldname"])

3

min( a, b )

a と b のうちの小さい方の数値を返します。

fieldname には、1.5 の値と -3 の値が含まれています。

min($feature["fieldname"], -3)

-3

max( a, b )

a と b のうちの大きい方の数値を返します。

fieldname1 には 1.5 の値が含まれており、fieldname2 には -3 の値が含まれています。

max($feature["fieldname1"], $feature["fieldname2"])

1.5

constrain(<value>,<low>,<high>)

入力値が制限範囲内にある場合、入力値を返します。 値が下限値よりも小さい場合、下限値を返します。 値が上限値よりも大きい場合、上限値を返します。

例 1: constrain( $feature["distance"], 0, 10)

distance が 0 よりも小さい場合は 0 を返し、distance が 10 よりも大きい場合は 10 を返し、それ以外の場合は distance を返します。

例 2: constrain($feature['Store dist'], 6, distance)

Store dist が 6 よりも小さい場合は 6 を返し、Store distdistance よりも大きい場合は distance を返し、それ以外の場合は Store dist を返します。

テキスト関数の例

[フィールド演算 (Calculate Field)] の式は、テキストを処理できます。次の表は、使用可能な演算の例を示しています。Arcade で使用できるテキスト関数の詳細

演算子説明結果

concatenate(<values>, <separator>)

値を 1 つに連結して、文字列を返します。

  • values - 連結する文字列値の配列です。
  • separator (オプション) - values パラメーターが配列の場合、連結に使用する区切り文字です。または、最初のパラメーターに単一値が指定された場合は、連結対象の文字列です。 指定されない場合、この値は空になります。

fieldname には、GeoAnalytics の値が含まれています。

Concatenate ([$features["fieldname"], "is", "great!"], ' ')

GeoAnalytics is great!

find(<searchText>, <text>, <startPos>)

文字列内の文字列を検索します。 ワイルドカードはサポートされていません。

  • searchText - 検索対象のサブ文字列です。
  • text - 検索対象のテキストです。
  • startPos (オプション) - 検索元となる文字列内の場所のゼロベースのインデックスです。

fieldname1 には 14NorthStreet の値が含まれており、fieldname2 には North の値が含まれています。

find($feature["fieldname2"], $feature["fieldname1"])

2

lower(<value>)

文字列を小文字にします。

  • value - 小文字にする文字列です。

fieldname には、GEOANALYTICS の値が含まれています。

lower($feature["fieldname"])

geoanalytics

find および lower を使用するテキストの例。

find(("north"), lower("146NorthStreet"))

日付関数の例

[フィールド演算 (Calculate Field)] の式は、日付を処理できます。次の表は、使用可能な演算の例を示しています。Arcade では、月の値は 0 (1 月) ~ 11 (12 月)、日は 1 ~ 31、時は 0 (午前 12:00) ~ 23 (午後 11:00)、分と秒は 0 ~ 59、ミリ秒は 0 ~ 999 となります。Arcade の date では、GeoAnalytics Server の位置の時刻値が返されます。

Arcade で使用できる日付関数の詳細

演算子説明結果

date(<value>, <month>, <day>, <hour>, <minute>)

値または値のセットを構文解析して日付文字列に変換します。

  • value (オプション) - 1970 年 1 月 1 日 (UTC) からのミリ秒単位の数値または年を表す数値のいずれか。 年が指定された場合は、月と日も後続のパラメーターで指定される必要があります。 この値は、日付文字列または日付に変換される ISO 8601 文字列にすることもできます。
  • month (オプション) - 月 (0-11) では、0 は 1 月、11 は 12 月を示します。
  • day (オプション) - 日付 (1-31) です。
  • hour (オプション) - 1 日の時刻 (0-23) です。
  • minute (オプション) - 分 (0-59) です。
  • second (オプション) - 秒 (0-59) です。
  • millisecond (オプション) - ミリ秒 (0-999) です。

fieldname には、 1476987783555 の値が含まれています。

例 1: Date($features["fieldname"])

例 2: Date(2017,0,14,0)

例 3: Date()

例 1: 20 Oct 2016 11:23:03 am

例 2: 14 Jan 2017 12:00:00 am

例 3: 現在の時間を返す

DateDiff(<date1>, <date2>, <units>)

ある日付から別の日付を減算して、その差を指定の単位で返します。

  • date1 - 2 つ目の日付を減算する日付値です。
  • date2 - 1 つ目の所定の日付から減算する日付値です。
  • units (オプション) - 指定された 2 つの日付の差を返すときに使用される単位です。 サポートされている単位のタイプは、millisecondssecondsminuteshoursdaysmonthsyears です。 デフォルト値は milliseconds です。

例 1: DateDiff(Date(2017,1,14,0), Date())

例 2: DateDiff(Date(2017,1,14,0), Date(), "Years")

結果は、このコマンドをいつ実行するかによって変わります。

例 1: -20532129137

例 2: -0.6546783768647119

Year(<dateValue>)

所定の年を返します。

  • value - 年を特定する日付の値。

例 1: fieldname は、09 Oct 2017 04:30:43 pm の値を含む日付タイプのフィールドです

Year($feature["fieldname"])

例 2: fieldname は、2012-09-27 の値を含む ISO 8601 文字列として書式設定された文字列フィールドです

例 1: 2017

例 2: 2012

論理関数の例

シンプルな数式に加えて、さらに高度な関数を使用してバッファー式を適用することができます。

関数説明結果

iif(<condition>,<true value>,<false value>)

条件が true と評価されると 1 つの値を返し、同条件が false と評価されると別の値を返します。

<true value> および <false value> は、次の値にすることができます。

  • 数値フィールド。 フィールド名にスペースがある場合は、角括弧を使用します。
  • 数値。
  • 関数。

iif($feature["field1"] > $feature["field2"], $feature["field1"], 0)

iif($feature["field1"] > $feature["field2"], iif($feature["field2"] = 0, $feature["field3"], $feature["field4"]), 0)

field1field2 よりも大きい場合は field1 を返し、そうでない場合は 0 を返します。

field1field2 よりも大きい場合は 2 番目の iif 関数の結果を返し、そうでない場合は 0 を返します。

when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>)

式が true と評価されるまで、一連の式を順次評価します。

  • expression - 式。
  • result - 式の結果。 数値またはフィールドにすることができます。
  • default - どの式も一致しない場合のオプションの値。

when(($feature["field1"] + 10) > 1, 1,($feature["field2"] + 10) > 2 , 2, $feature["field3"])

field1 + 10 が 1 よりも大きい場合、1 を返します。 そうでない場合、field2 + 10 が 2 よりも大きいかどうかをチェックします。 大きい場合は 2 を返します。 そうでない場合は field3 を返します。

decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> )

式を評価し、その値を以降のパラメーターと比較します。 式が一致した場合、次のパラメーター値を返します。 何も一致しない場合、最後のパラメーターがデフォルトの戻り値になるオプションがあります。

  • conditional val - 条件値。 フィールドにすることも式にすることもできます。
  • case - conditional val と比較される値。
  • result - 対応するケースが conditional val と一致する場合の結果。
  • defaultValue - 他の値が true でない場合のオプションの値。

decode($feature["field1"] + 3 , $feature["field1"], 1, $feature["field2"], 2, 0)

条件付き val の field1 + 3 と case1 の field1 の間の等式を比較します。 true の場合は 1 を返します。 false の場合は、field1 + 3field2 の間の等式を比較します。 true の場合は 2 を返し、そうでない場合は 0 を返します。

条件付き演算子

条件付きステートメントでは、以下の演算子を使用できます。

演算子説明結果

a > b

a < b

a が b よりも大きい

a が b よりも小さい

10 > 2

False

a >= b

a <= b

a が b 以上である

a が b 以下である

abs(-10) >= 10

True

a != b

a が b と等しくない

abs(-3) != -3

True

a == b

a が b と等しい

abs(-5) == 5

True

<condition1> || <condition2>

条件 1 または条件 2 が満たされる。

(abs(-5) == 5) || (10 < 2)

True

<condition1> && <condition2>

条件 1 および条件 2 が満たされる。

(abs(-5) == 5) && (10 < 2)

False

トラック対応の例

さらに、[インシデントの検出 (Detect Incidents)][フィールド演算 (Calculate Field)] など、一部の GeoAnalytics Tools は Arcade でトラック対応方程式を使用できます。[フィールド演算 (Calculate Field)] では、入力レイヤーが時間対応で、式がトラック対応であり、トラックの識別に 1 つ以上のフィールドが使用されている場合に、トラック方程式が使用できます。

ArcGIS Enterprise 10.6 では、次のトラック式を使用します。

関数説明結果

$track.field["fieldname"].history(<value1>)

所定のフィールドの指定された時間インデックスの値の配列を返します。

  • 正の数は、所定のインデックスから現在のフィーチャまでの配列を返します。
  • 負の数は、現在の時間ステップと前の <value1> - 1 の時間ステップの値を返します。

MyField は、[10, 20, 30, 40, 50, 60, 70, 80] の値を順番に並べ替えました。 10 はインデックス 0 にあり、80 はインデックス 7 にあります。 式は各インデックスで評価されます。例には、その例で使用されるインデックスが示されています。 n は、シーケンス内のフィールドの数を表し、k は、評価されているインデックスを表します。

例 1: $track.field["MyField"].history(3))

例 2: $track.field["MyField"].history(-3)

例 3: mean($track.field["MyField"].history(-2))

例 4: $track.field["MyField"].history(-3)[0]

例 1 はインデックス k で評価されると、インデックス 3 から k までの値の配列を返します。 インデックス 6 (70) で評価する場合は、インデックス [3, 4, 5, 6] の値の配列が返され、配列が [40, 50, 60, 70] になります。

例 2 は、所定の値から 1 を引いた値をインデックス k から引いた値の配列を返します (k-2)。 これがインデックス 6 (value = 70) で評価される場合、k-2k-1、および k の値は [50, 60, 70] と返されます。

例 3 は、インデックス k-1k の値の平均値を返します。 これをインデックス 4 (value = 50) で評価すると、value 40 (インデックス 3) と value 50 (インデックス 4) の平均値 45 が求められます。 これをインデックス 7 で評価すると、結果は 70 と 80 の平均値 75 になります。

例 4 は、例 2 で作成された配列の最初のアイテム (インデックス 0) 50 を返します。

$track.field["fieldname"].history(<value1>, <value2>)

インデックス 1 (<value1>) からインデックス 2 (<value2>) までの値の配列を返します。

MyField は、[10, 20, 30, 40, 50, 60, 70, 80] と値が順番に並んでいます。10 はインデックス 0、80 はインデックス 7 です。 この例では、式はインデックス 7 (80) で評価されます。

例 1: $track.field["MyField"].history(-3, -2))

例 2: $track.field["MyField"].history(-5, -2))

例 1: [60]

例 2: [40, 50, 60]

$track.time.start

トラッキングの開始時間をエポックからの経過秒数をミリ秒で計算します。

2017 年 1 月 2 日に開始するトラッキングを使用します。

$track.time.start

1483315200000

$track.time.duration

トラッキングの開始から現在の時間ステップまでの期間をミリ秒単位で計算します。

2017 年 1 月 2 日に開始するトラッキングを使用し、現在時間は 2017 年 1 月 4 日です。

$track.time.duration

172800000

$track.time.current

トラッキング内の現在の時間を計算します。

2017 年 1 月 3 日の午前 9 時に発生したフィーチャを使用します。

$track.time.current

1483434000000

$track.index

計算されているフィーチャの時間インデックスを返します。

トラッキング内の最初のフィーチャに対してこの値を計算する。

$track.index

0

$track.T(<value>, "<units>")

<units> が与えられ、数値 <value> を使用して作成された時間をフィーチャの時間に加えた値を返します。

  • value - フィーチャの時間に追加される数値。
  • units - 数値 <値> の単位。 サポートされている単位タイプは、ミリ秒、秒、分、時間、日、月、年です。 デフォルト値はミリ秒です。

2017 年 1 月 2 日の午後 2 時のフィーチャを使用します。

例 1: $track.T(1, "hours")

例 2: $track.T(-2, "days")

例 1: 1 月 2 日の午後 3 時を返します: 1483369200000

例 2: 12 月 31 日の午後 2 時を返します: 1483192800000

$track.field["fieldname"].window(<value1>, <value2>)

所定のフィールドの指定された時間インデックスの値の配列を返します。 ウィンドウ関数を使用すると、時間を前後に移動できます。 式はトラッキングの各フィーチャで評価されます。

  • 現在のフィーチャはインデックス 0 にあります。
  • 正の値は、将来発生する (現在の値の後にある) フィーチャを表します。 たとえば、位置 1 は配列内の次の値です。
  • 負の数字は、過去に発生した (前のフィーチャの前にある) フィーチャを表します。 たとえば、-1 は配列内の前の値です。

ウィンドウ関数は ArcGIS Enterprise 10.6.1 以降で使用できます。

MyField は、[10, 20, 30, 40, 50] の値を順番に並べ替えました。 式はトラッキングの各フィーチャで評価されます。 開始フィーチャを含め終了フィーチャを除外した結果が返されます。

例 1: $track.field["MyField"].window(-1,2)

例 2: $track.field["MyField"].window(-2,0)[0]

例 3: $track.field["MyField"].window(0,3)[2]

例 1: 各フィーチャで評価されると、表には次の結果が表示されます。

評価されたフィーチャ結果

10

[10,20]

20

[10, 20, 30]

30

[20,30,40]

40

[30,40,50]

50

[40, 50]

例 2: インデックス 2 で評価されると (値は 30)、10 が返されます。

例 3: インデックス 2 で評価されると (値は 30)、50 が返されます。

$track.geometry.window(<value1>, <value2>)

指定された時間のインデックスのジオメトリを表す値の配列を返します。 ウィンドウ関数を使用すると、時間を前後に移動できます。 式はトラッキングの各フィーチャで評価されます。

  • 現在のフィーチャはインデックス 0 にあります。
  • 正の値は、将来発生する (現在の値の後にある) フィーチャを表します。 たとえば、位置 1 は配列内の次の値です。
  • 負の数字は、過去に発生した (前のフィーチャの前にある) フィーチャを表します。 たとえば、-1 は配列内の前の値です。

ウィンドウ関数は ArcGIS Enterprise 10.6.1 以降で使用できます。

MyField は、[10, 20, 30, 40, 50] の値を順番に並べ替えました。 フィーチャのジオメトリは、[{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] です。式はトラッキング内の各フィーチャで評価されます。 開始フィーチャを含め終了フィーチャを除外した結果が返されます。

例 1: $track.geometry.window(-1,2)

例 2: ポリライン データセットの $track.geometry.window(0,1)[0]

例 3: ポリゴン データセットの $track.geometry.window(0,1)[0]

例 4: 前のポイント $track.geometry.window(-1,0)[0]["x"] の X 値となります。

例 1: 各フィーチャで評価されると、表には次の結果が表示されます。

評価されたフィーチャ結果

10

[{x: 1, y: 1},{x: 2, y: 2}]

20

[{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null}]

30

[{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}]

40

[{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]

50

[{x: 4, y: 4}, {x: 5, y: 5}]

例 2: ポリラインは次の形式で返されます: [{"paths":[[[-180,-22.88],[-177.6,-23.6]],[[180,-18.099999999999994],[179.7,-18.4],[179.4,-18.7],[178.9,-18.9],[178.5,-19.3],[178.2,-19.7],[178.4,-20],[178.8,-20.2],[178.9,-21.8],[179,-22.2],[179.4,-22.7],[180,-22.88]],[[-178,-17],[-178.8,-17.3],[-179.2,-17.5],[-179.6,-17.8],[-179.9,-18],[-180,-18.099999999999994]]]}]

例 3: ポリゴンは次の形式で返されます: [{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}]

例 4: インデックス 2 (値は 30) で評価: 2

$track.window(<value1>, <value2>)

指定された時間のインデックスのジオメトリとすべての属性を表す値の配列を返します。 ウィンドウ関数を使用すると、時間を前後に移動できます。

  • 現在のフィーチャはインデックス 0 にあります。
  • 正の値は、将来発生する (現在の値の後にある) フィーチャを表します。 たとえば、位置 1 は配列内の次の値です。
  • 負の数字は、過去に発生した (前のフィーチャの前にある) フィーチャを表します。 たとえば、-1 は配列内の前の値です。

ウィンドウ関数は ArcGIS Enterprise 10.6.1 以降で使用できます。

MyField は、[10, 20, 30, 40, 50] の値、および objectIDglobalIDinstant_datetime フィールドの値を順番に並べ替えました。 フィーチャのジオメトリは [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] です。 式はトラッキングの各フィーチャで評価されます。 開始フィーチャを含め終了フィーチャを除外した結果が返されます。

例 1: $track.window(-1,0)[0]

例 2: geometry($track.window(-1,0)[0]["x"]

例 1: 各フィーチャで評価されると、表には次の結果が表示されます。

評価されたフィーチャ結果

10

20

[{"geometry": {x: 1, y: 1}},{"attributes": {"MyField" : 10, "trackName":"ExampleTrack1"}}]

30

[{"geometry": {x: 2, y: 2}},{"attributes": {"MyField" : 20, "trackName":"ExampleTrack1"}}]

40

[{"geometry": {x: null, y: null}},{"attributes": {"MyField" : 30, "trackName":"ExampleTrack1"}}]

50

[{"geometry": {x: 4, y: 4}},{"attributes": {"MyField" : 40, "trackName":"ExampleTrack1"}}]

例 2: インデックス 2 (値は 30) で評価: 2

ArcGIS Enterprise 10.6.1 以降では、次のトラック式を使用します。

関数説明結果

TrackStartTime()

トラッキングの開始時間をエポックからの経過秒数をミリ秒で計算します。

2017 年 1 月 2 日に開始するトラッキングを使用します。

TrackStartTime()

1483315200000

TrackDuration()

トラッキングの開始から現在の時間ステップまでの期間をミリ秒単位で計算します。

2017 年 1 月 2 日に開始するトラッキングを使用し、現在時間は 2017 年 1 月 4 日です。

TrackDuration()

172800000

TrackCurrentTime()

トラッキング内の現在の時間を計算します。

2017 年 1 月 3 日の午前 9 時に発生したフィーチャを使用します。

TrackCurrentTime()

1483434000000

TrackIndex

計算されているフィーチャの時間インデックスを返します。

トラッキング内の最初のフィーチャに対してこの値を計算する。

TrackIndex

0

TrackFieldWindow(<fieldName>, <startIndex>, <endIndex>)

所定のフィールドの指定された時間インデックスの値の配列を返します。 ウィンドウ関数を使用すると、時間を前後に移動できます。 式はトラッキングの各フィーチャで評価されます。

  • 現在のフィーチャはインデックス 0 にあります。
  • 正の値は、将来発生する (現在の値の後にある) フィーチャを表します。 たとえば、位置 1 は配列内の次の値です。
  • 負の数字は、過去に発生した (前のフィーチャの前にある) フィーチャを表します。 たとえば、-1 は配列内の前の値です。

MyField は、[10, 20, 30, 40, 50] の値を順番に並べ替えました。 式はトラッキングの各フィーチャで評価されます。 開始フィーチャを含め終了フィーチャを除外した結果が返されます。

例 1: TrackFieldWindow("MyField,-1,2)

例 2: TrackFieldWindow("MyField,-2,0)[0]

例 3: TrackFieldWindow("MyField,0,3)[2]

例 1: 各フィーチャで評価されると、表には次の結果が表示されます。

評価されたフィーチャ結果

10

[10,20]

20

[10, 20, 30]

30

[20,30,40]

40

[30,40,50]

50

[40, 50]

例 2: インデックス 2 で評価されると (値は 30)、10 が返されます。

例 3: インデックス 2 で評価されると (値は 30)、50 が返されます。

TrackGeometryWindow(<startIndex>, <endIndex>)

指定された時間のインデックスのジオメトリを表す値の配列を返します。 ウィンドウ関数を使用すると、時間を前後に移動できます。 式はトラッキングの各フィーチャで評価されます。

  • 現在のフィーチャはインデックス 0 にあります。
  • 正の値は、将来発生する (現在の値の後にある) フィーチャを表します。 たとえば、位置 1 は配列内の次の値です。
  • 負の数字は、過去に発生した (前のフィーチャの前にある) フィーチャを表します。 たとえば、-1 は配列内の前の値です。

MyField は、[10, 20, 30, 40, 50] の値を順番に並べ替えました。 フィーチャのジオメトリは、[{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] です。式はトラッキング内の各フィーチャで評価されます。 開始フィーチャを含め終了フィーチャを除外した結果が返されます。

例 1: TrackGeometryWindow(-1,2)

例 2: ポリライン データセットの TrackGeometryWindow(0,1)[0]

例 3: ポリゴン データセットの TrackGeometryWindow(0,1)[0]

例 4: 前のポイント TrackGeometryWindow(-1,0)[0]["x"] の X 値となります。

例 1: 各フィーチャで評価されると、表には次の結果が表示されます。

評価されたフィーチャ結果

10

[{x: 1, y: 1},{x: 2, y: 2}]

20

[{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null}]

30

[{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}]

40

[{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}]

50

[{x: 4, y: 4}, {x: 5, y: 5}]

例 2: ポリラインは次の形式で返されます: [{"paths":[[[-180,-22.88],[-177.6,-23.6]],[[180,-18.099999999999994],[179.7,-18.4],[179.4,-18.7],[178.9,-18.9],[178.5,-19.3],[178.2,-19.7],[178.4,-20],[178.8,-20.2],[178.9,-21.8],[179,-22.2],[179.4,-22.7],[180,-22.88]],[[-178,-17],[-178.8,-17.3],[-179.2,-17.5],[-179.6,-17.8],[-179.9,-18],[-180,-18.099999999999994]]]}]

例 3: ポリゴンは次の形式で返されます: [{"rings":[[[-7882559.1197999995,6376090.883500002],[-7893142.474300001,6042715.216800004],[-8544018.775999999,6045361.0554000065],[-8544018.775999999,6376090.883500002],[-7882559.1197999995,6376090.883500002]]]}]

例 4: インデックス 2 (値は 30) で評価: 2

TrackWindow(<value1>, <value2>)

指定された時間のインデックスのジオメトリとすべての属性を表す値の配列を返します。 ウィンドウ関数を使用すると、時間を前後に移動できます。

  • 現在のフィーチャはインデックス 0 にあります。
  • 正の値は、将来発生する (現在の値の後にある) フィーチャを表します。 たとえば、位置 1 は配列内の次の値です。
  • 負の数字は、過去に発生した (前のフィーチャの前にある) フィーチャを表します。 たとえば、-1 は配列内の前の値です。

MyField は、[10, 20, 30, 40, 50] の値、および objectIDglobalIDinstant_datetime フィールドの値を順番に並べ替えました。 フィーチャのジオメトリは [{x: 1, y: 1},{x: 2, y: 2} ,{x: null, y: null},{x: 4, y: 4}, {x: 5, y: 5}] です。 式はトラッキングの各フィーチャで評価されます。 開始フィーチャを含め終了フィーチャを除外した結果が返されます。

例 1: TrackWindow(-1,0)[0]

例 2: geometry(TrackWindow(-1,0)[0]["x"]

例 1: 各フィーチャで評価されると、表には次の結果が表示されます。

評価されたフィーチャ結果

10

20

[{"geometry": {x: 1, y: 1}},{"attributes": {"MyField" : 10, "trackName":"ExampleTrack1"}}]

30

[{"geometry": {x: 2, y: 2}},{"attributes": {"MyField" : 20, "trackName":"ExampleTrack1"}}]

40

[{"geometry": {x: null, y: null}},{"attributes": {"MyField" : 30, "trackName":"ExampleTrack1"}}]

50

[{"geometry": {x: 4, y: 4}},{"attributes": {"MyField" : 40, "trackName":"ExampleTrack1"}}]

例 2: インデックス 2 (値は 30) で評価: 2

ArcGIS Enterprise 10.9 以降でトラックの距離、速度、加速度を計算するには、次のトラック式を使用します。

距離の計算はメートル法、速度はメートル/秒、加速度はメートル/秒二乗ですべて計算されます。 距離は測地距離を使用して計測されます。

関数説明

TrackCurrentDistance()

最初の観測から現在の観測までの移動距離の合計。

TrackDistanceAt(value)

最初の観測から現在の観測までの移動距離の合計に特定の値を加算。

TrackDistanceWindow(value1, value2)

最初の観測 (0) についてのウィンドウ内の最初の値 (含まれる) から最後の値 (含まれない) までの距離。

TrackCurrentSpeed()

前の観測から現在の観測までの速度。

TrackSpeedAt(value1)

現在の観測を基準とした観測時の速度。 たとえば、値 2 では、現在から 2 観測後の観測時の速度です。

TrackSpeedWindow(value1, value2)

最初の観測 (0) についてのウィンドウ内の最初の値 (含まれる) から最後の値 (含まれない) までの速度値。

TrackCurrentAcceleration()

前の観測から現在の観測までの加速度。

TrackAccelerationAt(value1)

現在の観測を基準とした観測時の加速度。

TrackAccelerationWindow(value1, value2)

最初の観測 (0) についてのウィンドウ内の最初の値 (含まれる) から最後の値 (含まれない) までの加速度値。

距離、速度、加速度の計算例は、次の図の例を使用します。

6 ポイントの軌跡例

関数結果例

TrackCurrentDistance()

ポイント ID結果 (メートル)

P1

0

P2

60

P3

80 + 60 = 140

P4

30 + 80 + 60 = 170

P5

35 + 30 + 80 + 60 = 205

P6

25 + 35 + 30 + 80 + 60 = 230

TrackDistanceAt(2)

ポイント ID結果 (メートル)

P1

0 + 80 + 60 = 140

P2

30 + 80 + 60 = 170

P3

35 + 30 + 80 + 60 = 205

P4

25 + 35 + 30 + 80 + 60 = 230

P5

NULL

P6

NULL

TrackDistanceWindow(-1, 2)

ポイント ID結果 (メートル)

P1

[0,60]

P2

[0, 60, 140]

P3

[60, 140, 170]

P4

[140, 170, 205]

P5

[170, 205, 230]

P6

[205, 230]

TrackCurrentSpeed()

ポイント ID結果 (メートル/秒)

P1

0

P2

60/60

1

P3

80/60

1.33

P4

30/60

.5

P5

35/60

0.5833

P6

25/60

0.4167

TrackSpeedAt(2)

ポイント ID結果 (メートル/秒)

P1

80/60

1.33

P2

30/60

.5

P3

35/60

0.5833

P4

25/60

0.4167

P5

NULL

P6

NULL

TrackSpeedWindow(-1, 2)

ポイント ID結果 (メートル/秒)

P1

[0, 1]

P2

[0, 1, 1.3]

P3

[1, 1.3, 0.5]

P4

[1.3, 0.5, 0.583]

P5

[0.5, 0.583, -0.4167]

P6

[0.583, -0.4167]

TrackCurrentAcceleration()

ポイント ID結果 (メートル/秒二乗)

P1

0

P2

0.0167

P3

0.0056

P4

-0.0014

P5

0.0014

P6

-0.0028

TrackAccelerationAt(2)

ポイント ID結果 (メートル/秒二乗)

P1

0.0056

P2

-0.0014

P3

0.0014

P4

-0.0028

P5

NULL

P6

NULL

TrackAccelerationWindow(-1, 2)

ポイント ID結果 (メートル/秒二乗)

P1

[0, 0.0167]

P2

[0, 0.0167, 0.0056]

P3

[0.0167, 0.0056, -0.0014]

P4

[0.0056, -0.0014, 0.0014]

P5

[-0.0014, 0.0014, -0.0028]

P6

[0.0014, -0.0028]

関連トピック