データのアペンドの式
式は、 [データのアペンド (Append Data)] ツールで、追加レイヤー フィールド値を使用した入力レイヤー フィールドの計算に使用されます。 追加レイヤーからフィールドを追加しない場合、式を使用して各フィーチャの設定方法を指定します。 [データのアペンド (Append Data)] の式は、フィールドと同じタイプの値になります。 条件式の例については、以下のセクションをご参照ください。
[データのアペンド (Append Data)] ツールは 10.6.1 で導入され、Arcade 式を使用してフィールド値を追加できます。 Arcade を使用して、フィールド名が $feature["field name"] または $feature.fieldname として書式設定されます。 フィールド名にスペースが含まれる場合には、最初のオプション $feature["field name"] が必要となります。 下記のすべての例は、このオプションを使用しています。
Arcade 式の詳細
以下のツールは、GeoAnalytics Server で Arcade 式を使用します。
レガシー:
ArcGIS GeoAnalytics Server エクステンションは ArcGIS Enterprise で非推奨になっています。 GeoAnalytics Server の 最終リリース は、ArcGIS Enterprise 11.3 に付属しています。 これらのツールは、ArcGIS Enterprise 11.3 以前のバージョンで使用できます。
数学演算および数学関数の例
式は、数値を数学的に処理することができます。 次の表は、使用可能な演算の例を示しています。
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 )
|
- の絶対値 (正の値) を返します。
|
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>)
|
入力値が制限範囲内にある場合、入力値を返します。 値が下限値よりも小さい場合、下限値を返します。 値が上限値よりも大きい場合、上限値を返します。
|
例 1: constrain( $feature["distance"], 0, 10)
distance が 0 よりも小さい場合は 0 を返し、 distance が 10 よりも大きい場合は 10 を返し、それ以外の場合は distance を返します。
例 2: constrain($feature['Store dist'], 6, distance)
Store dist が 6 よりも小さい場合は 6 を返し、 Store dist が distance よりも大きい場合は distance を返し、それ以外の場合は Store dist を返します。
|
テキスト関数の例
[データのアペンド (Append Data)] の式は、テキストを処理することができます。 次の表は、使用可能な演算の例を示しています。
Arcade のテキスト関数の詳細
|
演算子
|
説明
|
例
|
結果
|
|
concatenate(<values>, <separator>)
|
値を 1 つに連結して、文字列を返します。
|
fieldname には、 GeoAnalytics の値が含まれています。
Concatenate ([$features["fieldname"], "is", "great!"], ' ')
|
GeoAnalytics is great!
|
|
find(<searchText>, <text>, <startPos>)
|
文字列内の文字列を検索します。 ワイルドカードはサポートされていません。
|
fieldname1 には 14NorthStreet の値が含まれており、 fieldname2 には North の値が含まれています。
find($feature["fieldname2"], $feature["fieldname1"])
|
2
|
|
lower(<value>)
|
文字列を小文字にします。
|
fieldname には、 GEOANALYTICS の値が含まれています。
lower($feature["fieldname"])
|
geoanalytics
|
find および lower を使用するテキストの例。
find(("north"), lower("146NorthStreet"))
日付関数の例
[データのアペンド (Append Data)] の式は、日付を処理することができます。 次の表は、使用可能な演算の例を示しています。 Arcade では、月の値は 0 (1 月) ~ 11 (12 月)、日の値は 1 ~ 31、時の値は 0 (午前 12:00) ~ 23 (午後 11:00)、分と秒の値は 0 ~ 59、ミリ秒の値は 0 ~ 999 となります。Arcade の日付は、GeoAnalytics Server の場所に基づく時間値を返します。
Arcade の日付関数の詳細
|
演算子
|
説明
|
例
|
結果
|
|
date(<value>, <month>, <day>, <hour>, <minute>)
|
値または値のセットを構文解析して日付文字列に変換します。
value (オプション) - 1970 年 1 月 1 日 (UTC) からのミリ秒単位の数値または年を表す数値のいずれか。 年が指定された場合は、月と日も後続のパラメーターで指定される必要があります。 この値は、日付文字列または日付に変換される ISO 8601 文字列にすることもできます。
month (オプション) - 月 (0-11) では、0 は 1 月、11 は 12 月を示します。
day (オプション) - 日付 (1-31) です。
hour (オプション) - 1 日の時刻 (0-23) です。
minute (オプション) - 分 (0-59) です。
second (オプション) - 秒 (0-59) です。
millisecond (オプション) - ミリ秒 (0-999) です。
|
fieldname には、 1476987783555 の値が含まれています。
例 1: Date($features["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>)
|
ある日付から別の日付を減算して、その差を指定の単位で返します。
date1 - 2 つ目の日付を減算する日付値です。
date2 - 1 つ目の所定の日付から減算する日付値です。
units (オプション) - 指定された 2 つの日付の差を返すときに使用される単位です。 サポートされている単位のタイプは、 milliseconds 、 seconds 、 minutes 、 hours 、 days 、 months 、 years です。 デフォルト値は milliseconds です。
|
例 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 は、 09 Oct 2017 04:30:43 pm の値を含む日付タイプのフィールドです
Year($feature["fieldname"])
例 2: fieldname は、 2012-09-27 の値を含む ISO 8601 文字列として書式設定された文字列フィールドです
|
例 1: 2017
例 2: 2012
|
論理関数の例
シンプルな数式に加えて、以下の表に示すさらに高度な関数を使用してバッファー式を適用することができます。
|
関数
|
説明
|
例
|
結果
|
|
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 が field2 よりも大きい場合は field1 を返し、そうでない場合は 0 を返します。
field1 が field2 よりも大きい場合は 2 番目の iif 関数の結果を返し、そうでない場合は 0 を返します。
|
|
when(<expression1> , <result1> , <expression2> , <result2> , ... , <expressionN> , <resultN>, <default>)
|
式が 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> )
|
式を評価し、その値を以降のパラメーターと比較します。 式が一致した場合、次のパラメーター値を返します。 何も一致しない場合、最後のパラメーターがデフォルトの戻り値になるオプションがあります。
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 + 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> || <condition2>
|
条件 1 または条件 2 が満たされる。
|
(abs(-5) == 5) || (10 < 2)
|
True
|
|
<condition1> && <condition2>
|
条件 1 および条件 2 が満たされる。
|
(abs(-5) == 5) && (10 < 2)
|
False
|