「Arcade」は、ArcGIS で使用するために記述される式言語であり、数学的計算を実行したり、テキストを操作したり、論理ステートメントを評価したりすることができます。 Arcade 式は、データセットのスキーマに対する更新を必要とせず、新しい変数の計算に役立ちます。 この式には、動的でデータ ドリブンであるという利点もあります。つまり、式で使用されるデータが変化した場合、式の結果が更新されます。
Arcade を使用して、「バー チャート」、「パイ チャート」、「ライン チャート」、「ヒストグラム」、「散布図」を構成することができます。 Arcade をサポートするチャートの変数の式を作成または編集するには、[Arcade 式] ボタン をクリックして式の設定ウィンドウを開きます。
次の例は、Arcade を使用してチャートを構成する場合の可能性がある使用事例です。
テキストの例
Arcade は、テキスト値を処理してチャートを作成し、構成する多くの「関数」を提供します。 一例として、すべて大文字 (CALIFORNIA) の文字列値を書式設定することによって、先頭文字の大文字 (California) を使用して、チャートを読みやすくします。 これは、Arcade で Proper 関数を使用して達成できます。
# Format "CALIFORNIA" as "California"
Proper($feature.STATE_NAME);
複数の文字列フィールドを 1 つのテキスト出力に連結するには、Concatenate 関数を使用します。 次の例は、各フィーチャの都市名および州名を 1 つの文字列に結合します。
# Combine CITY_NAME (eg "LOS_ANGELES") and STATE_NAME (eg "CALIFORNIA") into "LOS_ANGELES, CALIFORNIA"
Concatenate($feature.CITY_NAME, ", ", $feature.STATE_NAME);
反対に、文字列を解析して、テキストに含まれている特定の部分を見つけることが役立つシナリオが存在することがあります。 たとえば、Split 関数を使用して、住所 (123 Main Street, Redlands, CA) 内の都市名を識別します。 次の例は、住所をカンマで分割し、「配列のインデックス付け」を使用して都市名を識別します。
# Split string on "," and return the second element (ie, the city name)
Split($feature.FULL_ADDRESS, ",")[1];
Arcade で「制御構造」を使用して、論理条件に基づいてテキスト値を再分類することもできます。 次の例では、Find 関数を使用して、Tornado カテゴリに関連する竜巻である嵐のイベントをグループ化し、一方、竜巻に関係しないすべてのイベントを、Other カテゴリにグループ化します。
if (Find($feature.EVENT_TYPE, "TORNADO") >= 0) {
return "Tornado";
} else {
return "Other";
}
日付の例
Arcade は、日付に関連するフィールドを処理するための多くの「関数」を提供します。 一例として、データセットが、日付情報を提供する複数のフィールドを含んでいることがありますが、時系列チャートで使用するには、これらのフィールドを結合して Date フィールドを作成する必要があります。 Date 関数は、関連する日付コンポーネントを受け取り、日付値を出力します。
Date($feature.YEAR, $feature.MONTH, $feature.DAY);
2 つの日付に基づいて期間を計算するには、DateDiff 関数を使用します。 たとえば、サービス要求データセットが、要求がいつ開始したかに関する 1 つの日付フィールドと、要求がいつ終了したかに関する別の日付フィールドを含んでいるとします。 次の例は、2 つの日付値間で経過した日数を計算します。
DateDiff($feature.OPEN_DATE, $feature.CLOSE_DATE, "DAYS");
Arcade は、Date フィールドから詳細を解析するための関数も提供します。 たとえば、日付フィールド内の曜日のパターンを理解するために、ISOWeekday 関数を使用して日付の曜日を返します。
ISOWeekday($feature.DATE);
数値の例
Arcade は、チャートを作成するために使用できる数値を処理するための「関数」および「演算子」を提供します。 一例として、AreaGeodetic 関数を使用して、フィーチャの面積によって人口を正規化します。 次の例は、除算演算子とともに AreaGeodetic 関数を使用します。
$feature.POPULATION / AreaGeodetic($feature, 'square-miles')
Arcade は、一般的な数学演算のための関数も提供します。 たとえば、Average 関数を使用して、複数の値の平均を求めます。
Average([$feature.SCORE1, $feature.SCORE2, $feature.SCORE3])
数値データを分類することが役に立つこともあります。 たとえば、自動車の特性に関連するデータセットの場合、1 ガロン当たりのマイル数の数値を、Good、Okay、Poor などのカテゴリに変換します。
if ($feature.MILES_PER_GALLON >= 30) {
return "Good"
} else if ($feature.MILES_PER_GALLON >= 20) {
return "Okay"
} else {
return "Poor"
}