Skip to main content

シンボルのカスタム式の設定

Arcade スクリプト言語で、データ内の 1 つ以上のフィールドを使用して式を記述し、フィーチャ シンボルの表示設定を変更または指定できます。

式には、1 行のコードでも複数行のコードでも指定できます。 式は 式の設定 ダイアログ ボックスで作成、またはインポートして変更できます。 フィーチャの属性が変更された場合、シンボル ウィンドウの 詳細 ドロップダウン メニューから 値の更新 を選択して、シンボル値を更新します。

注意:

単一シンボルチャート シンボルは、Arcade 式の使用をサポートしていません。

フィーチャ レイヤーのシンボル フィールドへの式の適用

フィーチャ レイヤーのシンボル フィールドに式を適用するには、次の手順を実行します。

  1. 必要に応じて、コンテンツ ウィンドウでフィーチャ レイヤーを選択します。

  2. フィーチャ レイヤー タブの 描画 グループで、シンボル ウィンドウが開いていない場合は シンボル をクリックして開きます。

  3. プライマリー シンボルを選択します。

  4. フィールド ドロップダウン メニューの横にある 式の設定 ボタン をクリックします。

  5. 式の設定 ダイアログ ボックスで、次の手順を実行します。

    1. 必要に応じて、カスタム式の タイトル テキストを追加します。

    2. フィールド で、フィールドの名前をダブルクリックして、式に追加します。 データのフィールド数が多い場合は、高度な設定 ボタン をクリックしてリストをフィルター処理し、必要なフィールドを検索します。

    3. 関数 で、数学、テキスト、および日付ベースの関数のライブラリーを表示します。 ヘルパー タイプ ボタン をクリックして、関数のリストをフィルター処理し、関数をダブルクリックして式に追加します。

    4. フィールドが選択されている場合は、値の挿入 ドロップダウン メニューをクリックし、特定の値を参照して式に追加できます。

    5. で、Arcade 言語の構文を使用してカスタム式を記述します。

      注意:

      名前が特殊文字を含んでいるか、数字で始まるフィールドをシンボル表示するとき、Arcade は結合フィールドの構文と同じ構文 (たとえば $feature['33field']$feature['acres²']$feature['st_area(SHAPE)']) を使用します。

    6. 確認 をクリックして式の整合性をチェックします。

      式が無効である場合、整合性エラー メッセージにガイダンスが表示されます。 インポート をクリックしてインポートしたり、エクスポート をクリックして ArcGIS Pro の外部に式をエクスポートしたりすることもできます。

  • Arcade グローバル変数 $view.scale は、ビュー (マップ、シーン、またはレイアウト) の現在の縮尺への参照を作成します。 シンボル式の一部として変数を $view.scale に設定すると、シンボルをビューの現在の縮尺に応じて変化させることができます。 導入事例を以下に示します。

    var mapscale = $view.scale;
    var weight = $feature.STROKEWGHT;
    var size;
    var normal = 1000000;
    
    size = normal/mapscale*weight
    return size
    

    この式では、mapscale 変数が作成され、縮尺値が格納されます。 この式は、縮尺に STROKEWGHT フィールドの値から取得したストローク weight を乗算し、この積をカスタム値 normal で除算します。 この結果、ビューの拡大/縮小に合わせてシンボルのストローク ウェイトが変化します。 これは、シンボル クラスのスケーリングの代替方法として便利です。

  • $view.timeProperties グローバル変数を使用すると、マップでタイム スライダーが有効な場合にタイム スライダー設定にアクセスできるようになります。 変数を使用した式は、タイム スライダーが有効になっていない場合に対応する必要があります。 HasKey ステートメントで始まる次の出力は、$view にタイム スライダーが存在することを確認します。 true が返された場合は、else ステートメントが読み取られます。

    if (HasKey($view, 'timeProperties') == false || $view.timeProperties.currentEnd == null)
       return -1
    else
       return (
         DateDiff($view.timeProperties.currentEnd, $view.timeProperties.currentStart, 'days')
         -
         DateDiff($view.timeProperties.currentEnd, $feature.Date_time, 'days')
       )
    
  • $feature グローバル変数は、シンボルで使用されるフィーチャ レイヤーのフィールドを参照します。

    ヒント:

    フィールド名にドット表記でアクセスできない文字が含まれる場合、括弧内に名前を配置します (例: $feature.["joinKey.fieldName"])。

ビジュアライゼーション プロファイルの例

以下のプロファイル例は、利用可能な変数を使用して特定のタイプのシンボルを作成する方法を示しています。

シンボル クラスの作成

ほとんどの場合、等級シンボルまたは等級色シンボルを使用するよう、レイヤーを手動で設定することができます。 ただし、頻繁に変更される別のソースからの情報 (例: 商品の全国平均価格) を参照する場合、毎回シンボル設定を更新またはリセットする必要があります。 これを回避するには、式を設定して計算を実行し、その結果を既存の分類方法で使用します。

var stationID = $feature.stationID; //ID number for gas station
var stationPrice = $feature.stationPrice; //Price at gas station
var avgPrice = '4.164' //National average price of gas

var priceDiffUL = Round(avgPrice - stationPrice, 2); //Calculate the difference

return priceDiffUL;

この例では、2 つのフィールド (stationIDstationPrice) から結果の値を決定しています。

個別値の分類

特に値が明確に定義され、シンボルが複数のプロジェクトにわたって使用されている場合に、個別値シンボルを構築するカスタム式を記述できます。 個別値シンボルに対して記述される多くの式では、変数をクラスに割り当て、if-else または when 論理関数を適用してシンボル クラス ラベルを定義しています。 以下の例で返される個別値は、配列例のメンバーかどうかによって異なります。

var example_array = [1, 2, 3, 4];
if (IndexOf(example_array, $feature.VALUE) > -1) {
return “Value is 1, 2, 3 or 4”;
} else {
return “Other value”;
}

別の例では、竜巻の強さを表す改良藤田スケールに基づいて値がグループ化されています。 この例は、上記の縮尺ベースのシンボル例に似ていますが、この式は $view.scale 変数を使用していません。

var WindSpeed = $feature.WINDSPEED
when (
WindSpeed > 261, “F5”,
WindSpeed > 207, “F4”,
WindSpeed > 158, “F3”,
WindSpeed > 113, “F2”,
WindSpeed > 73, “F1”,
“F0”
)

縮尺ベースのシンボル

最初の例で、変数 vs には現在の縮尺値が格納されます。 wind 変数には、シンボルの正確なサイズの決定に使用されるフィーチャの風速値が格納されます。 この値は windSize として格納され、マップの縮尺に応じてサイズが変更されます。

var vs = $view.scale
var wind = $feature.WINDSPEED

var windSize = When(
 wind > 136, 24, //Category 5
 wind > 112, 23, //Category 4
 wind > 95, 22, //Category 3
 wind > 82, 21, //Category 2
 wind > 63, 20, //Category 1
 wind > 33, 18, //Tropical Storm
 16) //Tropical Depression

when(
 vs >=37000000, windSize,
 vs >=18500000, 1 + windSize,
 vs >=9300000, 2 + windSize,
 vs >=4700000, 4 + windSize,
 vs >=2000000, 6 + windSize, 8 + windSize)

2 つ目の例では、現在の縮尺が 1:30000 より大きい場合にのみ、EXAMPLE フィールドからフィーチャがシンボル表示されます。

Var scale = $view.scale
var feature = $feature.EXAMPLE
if(scale > 30000 && feature == 10){
return 'Feature equals 10'
}
return 'Feature is not equal to 10'

カスタム式は、特にシンボルがテンプレートに基づいていない場合に、シンボルのスケーリングを計測し、動的に調整する柔軟性の高い方法です。 詳細については、「縮尺ベースのシンボル サイズ設定」をご参照ください。