Skip To Content

GeoAnalytics ツール でのバッファー条件式の使用

GeoAnalytics ツール ボックス内の次のツールを使用して、条件式を適用することができます。

条件式を使用する GeoAnalytics ツール の目的や、適用できる条件式の制限事項はそれぞれに異なります。ArcGIS 10.6 では、GeoAnalytics で使用されているすべての条件式が Arcade をサポートしています。

Arcade 関数の詳細

トラックの再構築とバッファーの作成

バッファー条件式は、[トラックの再構築 (Reconstruct Tracks)] ツールおよび [バッファーの作成 (Create Buffers}] ツールで使用されます。

バッファーサイズは、通常、定数値またはフィールド値を使用して入力されます。ただし、GeoAnalytics ツール には、値を入力する以外にもバッファー サイズを指定する方法があります。場合によっては、バッファー サイズを設定するために数学的計算を実行したいことがあります。この計算は、解析済みの各フィーチャに適用されます。ArcGIS 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>)

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

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

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

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

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

バッファー条件式の乗算の例

$feature["Distance"] * 2

距離関数の例

as distance 関数は数値を距離にキャストし、これを数式に使用できます。[トラックの再構築][バッファーの作成] ツールは、as distance 関数を使用できます。数値が as distance 関数なしで使用される場合、単位はメートルとなります。

関数説明結果

as_meters( <value> )

入力値がメートル単位であることを仮定して計算を適用します。

as_meters( $feature["fieldname"] )

as_meters(150)

結果は 150 メートルでバッファー処理されます。

as_kilometers( <value> )

入力値がキロメートル単位であることを仮定して計算を適用します。

as_kilometers( $feature["fieldname"] )

as_kilometers(150)

結果は 150 キロメートルでバッファー処理されます。

as_feet( <value> )

入力値がフィート単位であることを仮定して計算を適用します。

as_feet( $feature["fieldname"] )

as_feet(150)

結果は 150 フィートでバッファー処理されます。

as_yards( <value> )

入力値がヤード単位であることを仮定して計算を適用します。

as_yards( $feature["fieldname"] )

as_yards(150)

結果は 150 ヤードでバッファー処理されます。

as_nautical_miles( <value> )

入力値が海里単位であることを仮定して計算を適用します。

as_nautical_miles( $feature["fieldname"] )

as_nautical_miles(150)

結果は 150 海里でバッファー処理されます。

as_miles( <value> )

入力値がマイル単位であることを仮定して計算を適用します。

as_miles( $feature["fieldname"] )

as_miles(150)

結果は 150 マイルでバッファー処理されます。

フィーチャごとに、キロメートル単位であることを仮定してフィールド Distance を掛け、バッファー条件式には 10 メートルを足します。

as_kilometers($feature["Distance"]) * 3 + as_meters(10)

条件付き演算子

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

演算子説明結果

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

高度な関数と条件を使用するバッファー条件式の例

iff(field1 > field2, iff(field2 = 0, field3, field4), 0)

結合条件式の乗算の例

iff(field1 > field2, iff(field2 = 0, field3, field4), 0) > $join["Distance"] * 2

論理演算子の例

条件付き演算子に加えて、高度な論理演算子を使用してバッファーを作成することもできます (下記の表を参照)。

Arcade で使用できる論理関数の詳細

関数説明結果

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

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

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

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

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

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

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

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

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

1 つの条件式が 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 を返します。

トラック対応の例

ArcGIS 10.6.1 では、[トラックの再構築 (Reconstruct Tracks)] は、Arcade のトラック対応方程式を使用できます (下記の表を参照)。

関数説明結果

$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 では、インデックス k マイナス一定値マイナス 1 (k-2) と計算された値の配列が返されます。これがインデックス 6 (value = 70) で評価される場合、k-2k-1、および k の値 [50, 60, 70] と返されます。

例 3 は、インデックス k-1k の値の平均値を返します。これをインデックス 4 (value = 50) で評価すると、value 50 (インデックス 3) と value 60 (インデックス 4) の平均値 65 となります。これをインデックス 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>")

フィーチャ時間に、数値 <value> および指定された単位 <units> を使用して作成された時間を足した値を返します。

  • 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: 前のポイントの X 値となります ($track.geometry.window(-1,0)[0]["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 で評価されると (値は 20)、1 が返されます。

$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 で評価されると (値は 20)、1 が返されます。