GeoAnalytics ツール ボックスには複数のツールがあり、これを使用して条件式を適用することができます。
- [バッファーの作成 (Create Buffers)] および [トラックの再構築 (Reconstruct Tracks)] におけるバッファー条件式
 - [フィーチャの結合 (Join Features)] における結合条件
 - [インシデントの検出 (Detect Incidents)] におけるインシデント条件
 - [フィールド演算 (Calculate Field)] におけるフィールド値の計算
 
条件式を使用する GeoAnalytics ツール の用途や、適用できる条件式の制限事項はそれぞれに異なります。ArcGIS GeoAnalytics Server で使用されているすべての条件式が Arcade をサポートしています。
[フィーチャの結合 (Join Features)] における条件式
[フィーチャの結合] ツールでは、条件式を使用して結合条件を指定します。
場合によっては、結合に含めるフィーチャを選択するため、条件を指定したいことがあります。単純な結合条件のほか (「field a > field c」 など)、高度な条件を指定することもできます。条件は各フィーチャに対してテストされ、解析するフィーチャを決定します。ArcGIS GeoAnalytics Server 上で解析が実行される際に、計算が実行されます。
備考:
[フィーチャの結合 (Join Features)] には、ターゲット レイヤーと結合レイヤーの 2 つの入力が必要です。このため、[フィーチャの結合 (Join Features)] の Arcade 条件式では、使用されているデータセットの概要を記述する必要があります。たとえば、field1 という名前のターゲット レイヤー内のフィールドが、field2 という名前の結合レイヤーのフィールドよりも大きいかどうかを計算する操作は、$target["field1"] > $join["field2"] で表されます。これは、形式 $feature["fieldname"] を使用する他の GeoAnalytics ツール の条件式とは異なります。結合条件の結果は、常に true か false のどちらかになります。条件式の例については、以下のセクションをご参照ください。
数学演算子および数学関数の例
条件式は、数値を数学的に処理することができます。次の表は、使用可能な演算の例を示しています。
| 演算子 | 説明 | 例 | 結果 | 
|---|---|---|---|
a + b  | a 足す b。  | fieldname には、1.5 の値が含まれています $target["fieldname"] + 2.5  | 4.0  | 
a - b  | a 引く b。  | fieldname には、3.3 の値が含まれています $target["fieldname"]- 2.2  | 1.1  | 
a * b  | a 掛ける b。  | fieldname には、2.0 の値が含まれています $join["fieldname"] * 2.2  | 4.4  | 
a / b  | a 割る b。  | fieldname には、4.0 の値が含まれています $join["fieldname"] / 1.25  | 3.2  | 
abs( a )  | a. の絶対値 (正の値) を返します。  | fieldname には、-1.5 の値が含まれています abs($target["fieldname"])  | 1.5  | 
log( a )  | a の自然対数 (底を e とする) を返します。  | fieldname には、1 の値が含まれています log($join["fieldname"])  | 0  | 
sin( a )  | a の角度の正弦を返します。入力の角度の単位はラジアンです。  | fieldname には、1.5707 の値が含まれています sin($target["fieldname"])  | 1  | 
cos( a )  | a の角度の余弦を返します。入力の角度の単位はラジアンです。  | fieldname には、0 の値が含まれています cos($join["fieldname"])  | 1  | 
tan( a )  | a の角度の正接を返します。入力の角度の単位はラジアンです。  | fieldname には、0 の値が含まれています tan($target["fieldname"])  | 0  | 
sqrt( a )  | a の平方根を返します。  | fieldname には、9 の値が含まれています sqrt($join["fieldname"])  | 3  | 
min( a, b )  | a と b のうちの小さい方の数値を返します。  | fieldname には、1.5 の値および -3 の値が含まれています min($join["fieldname"], -3)  | -3  | 
max( a, b )  | a と b のうちの大きい方の数値を返します。  | fieldname1 には、1.5 の値、fieldname2 には -3 の値が含まれています max($target["fieldname1"], $join["fieldname2"])  | 1.5  | 
constrain(<value>,<low>,<high>)  | 入力値が制限範囲内にある場合、入力値を返します。入力値が下限値よりも小さい場合、下限値を返します。入力値が上限値よりも大きい場合、上限値を返します。  | constrain($target["distance"], 0, 10) constrain($join['Store dist'], 6, distance)  | distance が 0 よりも小さい場合は 0 を返し、distance が 10 よりも大きい場合は 10 を返し、それ以外の場合は distance を返します。 Store dist が 6 よりも小さい場合は 6 を返し、distance が Store dist よりも大きい場合は distance を返し、それ以外の場合は Store dist を返します。  | 
ターゲット データセットのフィールドを使用した結合条件式の乗算の例。
$target["Distance"] * 2 > $join["DistField"]テキスト関数の例
[フィーチャの結合 (Join Features)] の条件式は、テキストを処理できます。次の表は、使用可能な演算の例を示しています。
| 演算子 | 説明 | 例 | 結果 | 
|---|---|---|---|
concatenate( <values>, <separator>)  | 値を 1 つに連結して、文字列を返します。 
  | fieldname には、GeoAnalytics の値が含まれています Concatenate ([$target["fieldname"], "is", "great!"], ' ')  | GeoAnalytics is great!  | 
find(<searchText>, <text>, <startPos>)  | 文字列内の文字列を検索します。ワイルドカードはサポートされていません。 
  | fieldname1 には 14NorthStreet の値、fieldname2 には North の値が含まれています find($target["fieldname2"], $join["fieldname1"])  | 2  | 
lower(<value>)  | 文字列を小文字にします。 
  | fieldname には、GEOANALYTICS の値が含まれています lower($join["fieldname"])  | geoanalytics  | 
find および lower を使用するテキストの例。
find(("north"), lower("146NorthStreet")) == False日付関数の例
結合条件式は、日付を処理できます。次の表は、使用可能な演算の例を示しています。
Arcade では、月は 0 (1 月) ~ 11 (12 月)、日は 1 ~ 31、時は 0 (午前 12 時 00 分) ~ 23 (午後 11 時 00 分)、分と秒は 0 ~ 59、ミリ秒は 0 ~ 999 の範囲の値を取ります。Arcade の date では、GeoAnalytics Server の場所の時刻値が返されます。
| 演算子 | 説明 | 例 | 結果 | 
|---|---|---|---|
date( <value>, <month>, <day>, <hour>, <minute>)  | 値または値のセットを構文解析して日付文字列に変換します。 
  | fieldname には、 1476987783555 の値が含まれています 例 1: Date($target["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>)  | ある日付から別の日付を減算して、その差を指定の単位で返します。 
  | 例 1: DateDiff(Date(2017,1,14,0), Date()) 例 2: DateDiff(Date(2017,1,14,0), Date(), "Years")  | 結果は、このコマンドをいつ実行するかによって変わります。 例 1: -20532129137 例 2: -0.6546783768647119  | 
Year(<dateValue>)  | 所定の年を返します。 
  | 例 1: fieldname は、Date の値を持つ 09 Oct 2017 04:30:43 pm タイプのフィールドです Year($join["fieldname"]) 例 2: fieldname は、2012-09-27 の値を持つ ISO 8601 文字列として書式設定された文字列フィールドです 例 2: fieldname は、Year(Date($target["fieldname"])) の値を持つ ISO 8601 文字列として書式設定された文字列フィールドです  | 例 1: 2017 例 2: 2012  | 
条件付き演算子
条件付きステートメントでは、以下の演算子を使用できます。
| 演算子 | 説明 | 例 | 結果 | 
|---|---|---|---|
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  | 
論理演算子の例
条件付き演算子に加えて、高度な論理演算子を使用してフィーチャを結合することもできます。
| 関数 | 説明 | 例 | 結果 | 
|---|---|---|---|
constrain(<value>,<low>,<high>)  | 入力値が制限範囲内にある場合、入力値を返します。入力値が下限値よりも小さい場合、下限値を返します。入力値が上限値よりも大きい場合、上限値を返します。  | constrain( $target["distance"], 0, 10) constrain($join['Store dist'], 6, distance)  | distance が 0 よりも小さい場合は 0 を返し、distance が 10 よりも大きい場合は 10 を返し、それ以外の場合は distance を返します。 Store dist が 6 よりも小さい場合は 6 を返し、distance が Store dist よりも大きい場合は distance を返し、それ以外の場合は Store dist を返します。  | 
iff(<condition>,<true value>,<false value>)  | 条件が true と評価されると 1 つの値を返し、条件が false と評価されると別の値を返します。 <true value> および <false value> は、次の値にすることができます。 
  | iff($target["field1"] > $join["field2"], $join["field1"], 0) iff($target["field1"] > $join["field2"], iff($target["field2"] = 0, $join["field3"], $target["field4"]), 0)  | field1 が field1 よりも大きい場合は field2 を返し、そうでない場合は 0 を返します。 iff が field1 よりも大きい場合は 2 番目の field2 関数の結果を返し、そうでない場合は 0 を返します。  | 
when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>)  | 1 つの条件式が true と評価されるまで、一連の条件式を順次評価します。 
  | when(($target["field1"] + 10) > 1, 1,($join["field2"] + 10) > 2 , 2, $target["field3"])  | field1 + 10 が 1 よりも大きい場合、1 を返します。そうでない場合、field2 + 10 が 2 よりも大きいかどうかをチェックします。大きい場合は 2 を返します。そうでない場合は field3 を返します。  | 
decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> )  | decode 関数は条件式を評価し、その値を以降のパラメーターと比較します。条件式が一致した場合、次のパラメーター値を返します。何も一致しない場合、最後のパラメーターがデフォルトの戻り値になるオプションがあります。 
  | decode($target["field1"] + 3 , $join["field1"], 1, $target["field2"], 2, 0)  | 条件付き val の field1 + 3 と case1 の field1 の間の等式を比較します。true の場合は 1 を返します。false の場合は、field1 + 3 と field2 の間の等式を比較します。true の場合は 2 を返し、そうでない場合は 0 を返します。  |