GeoAnalytics ツール ボックス内の次のツールを使用して、条件式を適用することができます。
- バッファー条件式用の [バッファーの作成 (Create Buffers)]
- バッファー条件式用の [トラックの再構築 (Reconstruct Tracks)]
- 結合条件用の [フィーチャの結合 (Join Features)]
- インシデント条件用の [インシデントの検出 (Detect Incidents)]
- フィールド値を計算するための [フィールド演算 (Calculate Field)]
条件式を使用する GeoAnalytics ツール の目的や、適用できる条件式の制限事項はそれぞれに異なります。ArcGIS 10.6 では、GeoAnalytics で使用されているすべての条件式が Arcade をサポートしています。
トラックの再構築とバッファーの作成
バッファー条件式は、[トラックの再構築 (Reconstruct Tracks)] ツールおよび [バッファーの作成 (Create Buffers}] ツールで使用されます。
バッファーサイズは、通常、定数値またはフィールド値を使用して入力されます。ただし、GeoAnalytics ツール には、値を入力する以外にもバッファー サイズを指定する方法があります。場合によっては、バッファー サイズを設定するために数学的計算を実行したいことがあります。この計算は、解析済みの各フィーチャに適用されます。ArcGIS GeoAnalytics Server 上で解析が実行される際に、計算が実行されます。
バッファー条件式の例については、以下のセクションをご参照ください。
数学演算子および数学関数の例
バッファー条件式は、数値を数学的に処理できます。次の表は、使用可能な演算の例を示しています。
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
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 を返し、distance が Store dist よりも大きい場合は distance を返し、それ以外の場合は Store dist を返します。 |
バッファー条件式の乗算の例
$feature["Distance"] * 2
距離関数の例
as distance 関数は数値を距離にキャストし、これを数式に使用できます。[トラックの再構築] と [バッファーの作成] ツールは、as distance 関数を使用できます。数値が as distance 関数なしで使用される場合、単位はメートルとなります。
Function | 説明 | 例 | 結果 |
---|---|---|---|
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
論理演算子の例
条件付き演算子に加えて、高度な論理演算子を使用してバッファーを作成することもできます (下記の表を参照)。
Function | 説明 | 例 | 結果 |
---|---|---|---|
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) | field1 が field1 よりも大きい場合は field2 を返し、そうでない場合は 0 を返します。 iif が field1 よりも大きい場合は 2 番目の field2 関数の結果を返し、そうでない場合は 0 を返します。 |
when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>) | 1 つの条件式が true と評価されるまで、一連の条件式を順次評価します。
| 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> ) | 条件式を評価し、その値を以降のパラメーターと比較します。条件式が一致した場合、次のパラメーター値を返します。何も一致しない場合、最後のパラメーターがデフォルトの戻り値になるオプションがあります。
| decode($feature["field1"] + 3 , $feature["field1"], 1, $feature["field2"], 2, 0) | 条件付き val の field1 + 3 と case1 の field1 の間の等式を比較します。true の場合は 1 を返します。false の場合は、field1 + 3 と field2 の間の等式を比較します。true の場合は 2 を返し、そうでない場合は 0 を返します。 |
トラック対応の例
[トラックの再構築 (Reconstruct Tracks)] は、Arcade のトラック対応方程式を使用できます (下記の表を参照)。
Function | 説明 | 例 | 結果 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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(<フィールド名>, <開始インデックス>, <末尾インデックス>) | 所定のフィールドの指定された時間インデックスの値の配列を返します。ウィンドウ機能により、時間を前後できます。条件式は、トラックの各フィーチャで評価されます。
| MyField は、[10, 20, 30, 40, 50] の値を順番に並べ替えました。式はトラック内の各フィーチャで評価されます。返される結果には、開始フィーチャが含まれ、終了フィーチャは含まれません。 例 1:TrackFieldWindow("MyField,-1,2) 例 2:TrackFieldWindow("MyField,-2,0)[0] 例 3:TrackFieldWindow("MyField,0,3)[2] | 例 1: 各フィーチャで評価されると、表に次の結果が表示されます。
例 2: インデックス 2 で評価されると (値は 30)、10 が返されます。 例 3: インデックス 2 で評価されると (値は 30)、50 が返されます。 | ||||||||||||
TrackGeometryWindow (<開始インデックス>、<終了インデックス>) | 指定された時間のインデックスのジオメトリを表す値の配列を返します。ウィンドウ機能により、時間を前後できます。条件式は、トラックの各フィーチャで評価されます。
| 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: 前のポイントの X 値となります (TrackGeometryWindow(-1,0)[0]["x"]) | 例 1: 各フィーチャで評価されると、表に次の結果が表示されます。
例 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(<値 1>, <値 2>) | 指定された時間のインデックスのジオメトリとすべての属性を表す値の配列を返します。ウィンドウ機能により、時間を前後できます。
| MyField は、[10, 20, 30, 40, 50] の値、および objectID、globalID、instant_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: 各フィーチャで評価されると、表に次の結果が表示されます。
例 2: インデックス 2 (値は 30) で評価: 2 |