GeoAnalytics Tools ボックスには複数のツールがあり、これを使用して条件式を適用することができます。条件式を適用するオプションのあるツールは次のとおりです。
条件式を使用する GeoAnalytics Tools の用途や、適用できる条件式の制限事項はそれぞれに異なります。
トラックの再構築とバッファーの作成
バッファー条件式は、[トラックの再構築] ツールおよび [バッファーの作成] ツールで使用されます。
バッファーサイズは、多くの場合は定数値またはフィールド値を使用して入力されます。ただし、GeoAnalytics Tools には、値を入力する以外にもバッファー サイズを指定する方法があります。場合によっては、バッファー サイズを設定するために数学的計算を実行したいことがあります。すべてのレコードに適用される、単純なものから高度なものまでの、さまざまな計算を実行することができます。この計算は、解析される各フィーチャに適用されます。ArcGIS GeoAnalytics Server 上で解析が実行される際に、計算が実行されます。
バッファー条件式では、簡単な演算と、すべての組み込み関数を使用できます。
バッファー条件式の例については、以下のセクションをご参照ください。
フィーチャの結合
[フィーチャの結合] ツールでは、条件式を使用して結合条件を指定します。
場合によっては、結合に含めるフィーチャを選択するため、条件を指定したいことがあります。単純な結合条件のほか (field a > field c など)、高度な条件を指定することもできます。条件は各フィーチャに対してテストされ、解析するフィーチャを決定します。ArcGIS GeoAnalytics Server 上で解析が実行される際に、計算が実行されます。
結合条件式では、簡単な演算と高度な組み込み関数を使用し、条件を作成します。結合条件では、as_distance 関数は使用できません。結合条件の結果は、常に true か false のどちらかになります。
条件式の例については、以下のセクションをご参照ください。
簡単な演算
簡単な関数の例
[トラックの再構築] と [バッファーの作成] ツールは、数字を数学的に処理します。
[フィーチャの結合] ツールは、結合条件の作成時に数学演算を行います。
演算子 | 説明 | 例 | 結果 |
---|---|---|---|
| a 足す b | ["fieldname"] + 2.5 fieldname には、1.5 の値が含まれています | 4.0 |
| a 引く b | ["fieldname"]- 2.2 fieldname には、3.3 の値が含まれています | 1.1 |
| a 掛ける b | ["fieldname"] * 2.2 fieldname には、2.0 の値が含まれています | 4.4 |
| a 割る b | ["fieldname"] / 1.25 fieldname には、4.0 の値が含まれています | 3.2 |
| a. の絶対値 (正の値) を返します。 | abs(["fieldname"]) fieldname には、-1.5 の値が含まれています | 1.5 |
| a の自然対数 (底を e とする) を返します。 | log(["fieldname"]) fieldname には、1 の値が含まれています | 0 |
| a の角度の正弦を返します。入力の角度の単位はラジアンです。 | sin(["fieldname"]) fieldname には、1.5707 の値が含まれています | 1 |
| a の角度の余弦を返します。入力の角度の単位はラジアンです。 | cos(["fieldname"]) fieldname には、0 の値が含まれています | 1 |
| a の角度の正接を返します。入力の角度の単位はラジアンです。 | tan(["fieldname"]) fieldname には、0 の値が含まれています | 0 |
| a の平方根を返します。 | sqrt(["fieldname"]) fieldname には、9 の値が含まれています | 3 |
| a と b のうちの小さい方の数値を返します。 | min("fieldname", -3) fieldname には、1.5 の値および -3 の値が含まれています | -3 |
| a と b のうちの大きい方の数値を返します。 | max("fieldname1", "fieldname2") fieldname1 には、1.5 の値、fieldname2 には -3 の値が含まれています | 1.5 |
バッファー条件式の乗算の例
["Distance"] * 2
結合条件式の乗算の例
["Distance"] * 2 > 5
GeoAnalytics Tools の組み込み関数
As distance 関数の例
as distance 関数は数値を距離にキャストし、これを数式に使用できます。
[トラックの再構築] と [バッファーの作成] ツールは、as distance 関数を使用できます。数値が as distance 関数なしで使用される場合、単位はメートルとなります。
[フィーチャの結合] ツールでは as distance 関数は使用できません。
関数 | 説明 | 例 | 結果 |
---|---|---|---|
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"]) * 3 + 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 よりも小さい | 10 > 2 | False |
| a が b 以上である a が b 以下である | abs(-10) >= 10 | True |
| a が b と等しくない | abs(-3) != -3 | True |
| a が b と等しい | abs(-5) == 5 | True |
| 条件 1 または条件 2 が満たされる | (abs(-5) == 5) OR (10 > 2) | True |
| 条件 1 および条件 2 が満たされる | (abs(-5) == 5) AND (10 < 2) | False |
高度な関数と条件を使用するバッファー条件式の例
iff(field1 > field2, iff(field2 = 0, field3, field4), 0)
結合条件式の乗算の例
iff(field1 > field2, iff(field2 = 0, field3, field4), 0) > ["Distance"] * 2