計算ルールを使用すると、フィーチャに属性構成が自動的に取り込まれます。 次に示すように、ルールを評価するタイミングに応じて、即時計算ルールまたはバッチ計算ルールとして作成することができます。
- 即時計算ルール - 編集操作中にすぐにルールの評価が実行されます。 ルールの作成時にトリガー イベントのタイプを指定すると、挿入、更新、または削除操作に基づいてルールの評価を実行できます。
- バッチ計算ルール - ユーザーが指定した日時にルールの評価が実行されます。
計算ルールに関連付けられた属性フィールドは、ユーザーによる編集を可能にするか、読み取り専用にすることができます。 計算ルールを作成すると、そのルールが適用される入力フィールドの下で [編集可能] チェックボックスを使用できます。このチェックボックスの操作は次のとおりです。
- オン - フィールドのユーザー定義属性の編集が許可されます。 このフィールドのユーザー入力は、ルール定義に基づく属性ルールの評価によって上書きされる可能性があります。
- オフ - ユーザー定義属性の編集が許可されず、ルールが作成される属性フィールドはシステムが管理するフィールドとして定義されます。 ルール内に定義されたイベントのトリガー中に、計算ルールが適用されます。
注意:
ユーザー定義フィールドをシステムが管理するフィールドとして設定すると、そのフィールドは変更できなくなります。
即時計算ルール
編集操作中に特定のトリガー イベントに基づいて評価される計算ルールを即時計算ルールと呼びます。 このタイプの計算ルールは、編集が加えられた時点で自動的に計算を実行する必要があるワークフローに使用されます。
即時計算ルールを作成するには、[属性ルール] ビューで、[計算ルール] ドロップダウン ボタン をクリックしてから [即時の計算] をクリックします。 このルール タイプは、[属性ルールの追加 (Add Attribute Rule)] ツールでバッチ オプションを false に設定して作成するか、[属性ルールのインポート (Import Attribute Rules)] ツールを使用して作成することもできます。
即時計算ルールは、編集操作中に特定のトリガー イベントに基づいて評価されます。 トリガー イベント (挿入、更新、または削除) は、ルールのプロパティとして指定します。
詳細:
削除中のレコードから直接データを変更する場合は、即時計算ルールが遵守されない可能性があります。 ただし、Arcade スクリプトによっては、削除トリガーでの他のフィーチャの編集など、別の高度な属性ルール機能が遵守されることもあります。 詳細については、「属性ルールの辞書キーワード」をご参照ください。
バッチ計算ルール
ユーザーが指定した日時に評価される計算ルールをバッチ計算ルールと呼びます。 このタイプの計算ルールは、既存のフィーチャに対して計算を実行する場合またはルールの評価を実行するタイミングを制御する必要がある場合に使用されます。 たとえば、計算を編集操作中に実行するには時間がかかりすぎる場合がこれに当たります。
注意:
バッチ計算ルールおよび整合チェック属性ルールは、ポイント、ライン、およびポリゴン フィーチャクラスまたはテーブルに対してのみサポートされます。 エンタープライズ ジオデータベースの場合、これらのルール タイプは、ブランチ バージョン対応データセットでのみサポートされています。バッチ計算ルールを作成するには、[属性ルール] ビューで、[計算ルール] ドロップダウン ボタン をクリックしてから [バッチ演算] をクリックします。 このルール タイプは、[属性ルールの追加 (Add Attribute Rule)] ツールでバッチ オプションを true に設定して作成するか、[属性ルールのインポート (Import Attribute Rules)] ツールを使用して作成することもできます。
データセットのバッチ計算ルールを評価するには、[ルールの評価 (Evaluate Rules)] ツールまたは [エラー インスペクター] を使用します。
注意:
バッチ計算ルールと検証ルールを評価するための入力ワークスペースは、属性ルールを含むデータセットが格納されているジオデータベースのタイプによって異なります。- ファイル ジオデータベースまたはモバイル ジオデータベース - ジオデータベースが評価対象の入力ワークスペースになります。
- エンタープライズ ジオデータベース - [検証] 機能を備えたフィーチャ サービスを評価対象の入力ワークスペースとして使用します。 同じデータセットが複数のサービスに公開されている場合は、エラー レイヤーと検証ステータス属性がデフォルト バージョンで共有されることに注意してください。
エンタープライズ ジオデータベース内のデータセットのバッチ計算ルールの構成と評価に関連する一般的なステップを次に示します。
- データセットのブランチ バージョン対応登録
- データベース接続をブランチ バージョニング タイプに構成します。
- データセットに属性ルールを追加します。
- [検証] 機能を有効にした状態で、データセットを Web フィーチャ レイヤーとして共有します。
- Web フィーチャ レイヤーに編集を加えます。
- [エラー インスペクター] を使用してルールを評価し、フィーチャを確認します。
- エラー フィーチャを検証し、編集を加えてエラーを修正します。
- ルールをもう一度評価します。
詳細については、「属性ルールを含むデータセットの共有」、「属性ルールの評価」、および「属性ルールのエラーの管理」をご参照ください。
評価の順序
ルールを評価する際には、ルールが評価される順序を制御します。 計算ルールでは、データセットに対してルールが評価される順序によって、ルールの評価の結果が異なる可能性があるので、順序が非常に重要となります。
評価順序は、計算対象の他のフィールドと格納対象のフィーチャとの依存関係が存在する場合には必要不可欠です。 次の図は、ルールの評価順序によって、2 つの計算ルールの結果がどのように異なるかを示しています。
評価順序は、[属性ルール] ビューを使用して表示できる属性ルールのプロパティです。また、arcpy.Describe 関数を使用すると、属性ルール プロパティを印刷できます。 評価順序は最初に、ルールがデータセットに対して作成された順序に設定され、値 1 から始まる整数値として格納されます。 新しいルールが作成されると、順序が 1 つ増えます。 即時計算ルールとバッチ計算ルールでは、それぞれ独自の評価順序が維持されます。
[属性ルール] ビューには、[即時] セクションと [バッチ] セクションに示された評価順序に基づいて計算ルールが一覧表示されます。 評価順序を変更するには、[属性ルール] ビュー内の [順序] 列を編集するか、[属性ルールの順序変更 (Reorder Attribute Rule)] ツールを使用します。
データセットに複数の属性ルールが設定されている場合は、ルール タイプに固有の順序に従って実行されます。 詳細については、「属性ルールの評価」をご参照ください。
例
以下の例は、計算属性ルールをジオデータベースでどのように使用できるかを示したものです。
- テキスト フィールド値の配列を特定のフィールドに連結します。
- パイプの LifeCycleStatus 属性が Abandoned に更新されると、PressureZone 属性が None に更新されます。
- 電柱の長さが 65 フィート以上のとき、材料の値は鉄として計算されます。
- 新しい電柱を構築する場合は、順序 assetid_seq に基づいてテキスト値を生成します。
ヒント:
計算ルールを作成する場合は、計算対象のフィールドと同じデータ タイプがスクリプト式の結果で使用されるようにします。属性ルール タイプを作成するための要件とグローバル変数については、「Arcade プロファイル」をご参照ください。 属性ルールのスクリプト式を作成する際には、「Arcade 基本操作ガイド」および「Arcade 関数インデックス」を追加リソースとして使用できます。