値を入力したり、フィールドを使用することは、GeoAnalytics Tools を使用してバッファーのサイズを指定できる唯一の方法ではありません。場合によっては、バッファー サイズを設定するために数学的計算を実行したいことがあります。すべてのレコードに適用される、単純なものから高度なものまでの、さまざまな計算を実行することができます。この計算は、各フィーチャに適用されます。以下の各セクションでは、バッファー条件式を使用する例を示しています。ArcGIS GeoAnalytics Server 上で解析が実行される際に、計算が実行されます。
ArcGIS Enterprise 10.6 以降では、Arcade 条件式を使用して、条件式が書式設定されます。Arcade 条件式および GeoAnalytics Server と 10.6 以降での Arcade 条件式の詳細。
バッファー条件式は、[トラックの再構築 (Reconstruct Tracks)] ツールおよび [バッファーの作成 (Create Buffers}] ツールで使用されます。
簡単な演算
簡単な関数の例
バッファー条件式は、数値を数学的に処理することができます。
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
a + b | a 足す b | fieldname には、1.5 の値が含まれています ["fieldname"] + 2.5 | 4.0 |
a - b | a 引く b | fieldname には、3.3 の値が含まれています ["fieldname"]- 2.2 | 1.1 |
a * b | a 掛ける b | fieldname には、2.0 の値が含まれています ["fieldname"] * 2.2 | 4.4 |
a / b | a 割る b | fieldname には、4.0 の値が含まれています ["fieldname"] / 1.25 | 3.2 |
abs( a ) | a. の絶対値 (正の値) を返します。 | fieldname には、-1.5 の値が含まれています abs(["fieldname"]) | 1.5 |
log ( a ) | a の自然対数 (底を e とする) を返します。 | fieldname には、1 の値が含まれています log(["fieldname"]) | 0 |
sin ( a ) | a の角度の正弦を返します。入力の角度の単位はラジアンです。 | fieldname には、1.5707 の値が含まれています sin(["fieldname"]) | 1 |
cos( a ) | a の角度の余弦を返します。入力の角度の単位はラジアンです。 | fieldname には、0 の値が含まれています cos(["fieldname"]) | 1 |
tan( a ) | a の角度の正接を返します。入力の角度の単位はラジアンです。 | fieldname には、0 の値が含まれています tan(["fieldname"]) | 0 |
sqrt( a ) | a の平方根を返します。 | fieldname には、9 の値が含まれています sqrt(["fieldname"]) | 3 |
min( a, b ) | a と b のうちの小さい方の数値を返します。 | fieldname には、1.5 の値および -3 の値が含まれています min(["fieldname"], -3) | -3 |
max( a, b ) | a と b のうちの大きい方の数値を返します。 | fieldname1 には、1.5 の値、fieldname2 には -3 の値が含まれています max(["fieldname1"], ["fieldname2"]) | 1.5 |
乗算
["Distance"] * 2
GeoAnalytics Tools の組み込み関数
距離関数の例
バッファー条件式は、数値を距離にキャストすることができます。
関数 | 説明 | 例 | 結果 |
---|---|---|---|
as_meters( <value> ) | 入力値がメートル単位であることを仮定して計算を適用します。 | as_meters( ["fieldname"] ) as_meters(150) | 結果は 150 メートルでバッファー処理されます。 |
as_kilometers( <value> ) | 入力値がキロメートル単位であることを仮定して計算を適用します。 | as_kilometers( ["fieldname"] ) as_kilometers(150) | 結果は 150 キロメートルでバッファー処理されます。 |
as_feet( <value> ) | 入力値がフィート単位であることを仮定して計算を適用します。 | as_feet( ["fieldname"] ) as_feet(150) | 結果は 150 フィートでバッファー処理されます。 |
as_yards( <value> ) | 入力値がヤード単位であることを仮定して計算を適用します。 | as_yards( ["fieldname"] ) as_yards(150) | 結果は 150 ヤードでバッファー処理されます。 |
as_nautical_miles( <value> ) | 入力値が海里単位であることを仮定して計算を適用します。 | as_nautical_miles( ["fieldname"] ) as_nautical_miles(150) | 結果は 150 海里でバッファー処理されます。 |
as_miles( <value> ) | 入力値がマイル単位であることを仮定して計算を適用します。 | as_miles( ["fieldname"] ) as_miles(150) | 結果は 150 マイルでバッファー処理されます。 |
フィーチャごとに、キロメートル単位であることを仮定してフィールド Distance を掛け、10 メートルを足します。
as_kilometers(["Distance"]) + as_meters(10)
GeoAnalytics Tools のバッファー条件式の高度な組み込み関数
シンプルな数式に加えて、さらに高度な関数を使用してバッファー条件式を適用することができます。
関数 | 説明 | 例 | 結果 |
---|---|---|---|
constrain(<value>,<low>,<high>) | 入力値が制限範囲内にある場合、入力値を返します。値が下限値よりも小さい場合、下限値を返します。値が上限値よりも大きい場合、上限値を返します。 | constrain( ["distance"], 0, 10) constrain(['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(["field1"] > ["field2"], ["field1"], 0) iff(["field1"] > ["field2"], iff(["field2"] = 0, ["field3"], ["field4"]), 0) | field1 が field1 よりも大きい場合は field2 を返し、そうでない場合は 0 を返します。 iff が field1 よりも大きい場合は 2 番目の field2 関数の結果を返し、そうでない場合は 0 を返します。 |
when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>) | 1 つの条件式が true と評価されるまで、一連の条件式を順次評価します。
| when((["field1"] + 10) > 1, 1,(["field2"] + 10) > 2 , 2, ["field3"]) | - field1 + 10 が 1 よりも大きい場合、1 を返します。そうでない場合、field2 + 10 が 2 よりも大きいかどうかをチェックします。大きい場合は 2 を返します。そうでない場合は field3 を返します。 |
decode(<conditional val> , <case1> , <result1>, <case2>, <result2>, ... <caseN>, <resultN>, <defaultValue> ) | decode 関数は条件式を評価し、その値を以降のパラメーターと比較します。条件式が一致した場合、次のパラメーター値を返します。何も一致しない場合、最後のパラメーターがデフォルトの戻り値になるオプションがあります。
| decode(["field1"] + 3 , ["field1"], 1, ["field2"], 2, 0) | 条件付き val の field1 + 3 と case1 の field1 の間の等式を比較します。true の場合は 1 を返します。false の場合は、field1 + 3 と field2 の間の等式を比較します。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> OR <condition2> | 条件 1 または条件 2 が満たされる。 | (abs(-5) == 5) OR (10 < 2) | True |
<condition1> AND <condition2> | 条件 1 および条件 2 が満たされる。 | (abs(-5) == 5) AND (10 < 2) | False |