制約属性ルールを使用してピーク時の負荷スパイクを防止

最初に、ArcGIS Utility Network のデータ整合性を適用およびレポートするための 2 つの属性ルールを作成します。 次に、Arcade を使用して、計算ルールで作成したログから有用な情報を取得する新しいポップアップ式を構成およびテストします。 次の作業を行う方法を学習します。

  • ピーク負荷でのスパイクを防ぐための制約ルールを作成します。
  • 関連する計算ルールを作成して、低電圧サービス フィーチャを編集したときにピーク負荷値を報告します。
  • 低電圧サービス フィーチャを編集し、各ルールの出力を確認して、属性ルールをテストします。
  • Arcade を使用してポップアップを設定し、計算ルールを使用して作成したログから有用な情報を取得します。

サブタイプの調査

ユーティリティ ネットワークで、[Low Voltage Service] アセット グループのフィーチャに不正な属性編集が見られました。 しかし、[Electric Network Editor] マップを開いたり、ユーティリティ ネットワークを含むジオデータベース内の [UtilityNetwork] フィーチャ データセットのフィーチャクラスを確認したりして、不正を特定すると、[低電圧サービス] フィーチャクラスが利用できないことに気づくかもしれません。

このフィーチャクラスが利用できないのは、ArcGIS Utility Network は、分類モデルの実装にサブタイプ グループ レイヤーと属性ドメインを使用しているのが原因で、これは個別のフィーチャクラスを多数用意する必要性を軽減するためです。 また、マップの [コンテンツ] ウィンドウでは、関連するユーティリティ ネットワーク レイヤーをグループ化するためにコンポジット レイヤーが使用されています。 これらのコンポジット レイヤーは、レイヤーの照会、編集、更新の際にデータ ソースに行われる要求数を減らすことで、個々のレイヤーよりも効率的に機能します。

まず、データをダウンロードし、[UtilityNetwork] フィーチャ データセットのフィーチャクラスのサブタイプを詳しく調べます。

  1. Attribute rules in the ArcGIS Utility Network」プロジェクト パッケージをダウンロードします。
  2. コンピューター上で [Attribute_rules_in_the_ArcGIS_Utility_Network_] プロジェクト パッケージを選択します。 必要に応じてファイルを適切な場所に移動し、ダブルクリックします。

    [Use Attribute Rules] プロジェクトが ArcGIS Pro で開きます。

    注意:

    ArcGIS Pro へのアクセス権限または組織アカウントがない場合は、ソフトウェア アクセスのオプションをご参照ください

    現在、プロジェクトにマップはありません。 そこで、[カタログ] ウィンドウのデータを操作します。

  3. [カタログ] ウィンドウで、[データベース] を展開し、[electricnetworkeditor.gdb] を展開します。
    注意:

    [カタログ] ウィンドウが表示されない場合は、リボンの [表示] タブをクリックします。 [ウィンドウ] グループで、[カタログ ウィンドウ] をクリックします。

  4. [electricnetworkeditor.gdb][UtilityNetwork] フィーチャ データセットを展開します。

    フィーチャ データセットに編成されたフィーチャクラスとリレーションシップ クラスは、ユーティリティ ネットワークを含むジオデータベースのスキーマ (構造) を示します。

  5. [カタログ] ウィンドウで、[ElectricDevice] を右クリックし、[データ設計] にポインターを合わせて [サブタイプ] を選択します。

    サブタイプ オプション

    [ElectricDevice] フィーチャクラスの [サブタイプ] ビューが表示されます。 このフィーチャクラスには、すでにいくつかのサブタイプと関連するドメインが適用されています。

  6. [サブタイプ] ビューで、[*ASSETGROUP] サブタイプを確認します。

    *ASSETGROUP サブタイプ

    [*ASSETGROUP] は、高電圧避雷器、低電圧スイッチ、低電圧遮断器、低電圧サービスなど、さまざまな種類の資産を定義するために使用されるサブタイプです。 さらに、[ASSETTYPE] は、資産のサブ分類のレベルを定義するメカニズムを提供します。 たとえば、[Low Voltage Service] は、単相住宅用と三相商業用に分類されています。

  7. [ASSETGROUP 22] に対応する [Low Voltage Service] 列までスクロールします。

    低電圧サービスの *ASSETGROUP 22 行

    [Low Voltage Service] サブタイプでは、多くのフィールドにドメインが割り当てられており、一部のフィールドにはデフォルト値が設定されています。 これらは、更新を特定の選択肢のリストまたは値の範囲に制限することで、データ整合性 (有効な値) を確実にします。 値を指定しない場合は、デフォルトが使用されます。

  8. [*ASSETGROUP 22] で、[peakload] フィールドまで下にスクロールしてください。

    [peakload] フィールドにはドメインが割り当てられていません。

    ピーク負荷フィールド

    注意:

    ピーク負荷 (またはピーク需要) は、1 日のサイクルで何度も変動することがあり、その値はサービス間で変わることがあります。 その結果、デフォルト値やドメインは、この属性のデータ整合性を維持するための効果的なツールではありません。 解決策は、属性ルール プロファイルの Arcade グローバル「$originalFeature」を使用して制約属性ルールを作成し、[peakload] 属性に割り当てられた大きな変更を検出することです。 Arcade グローバル $originalFeature は、編集前のフィーチャの状態を示し、スクリプト作成者が $feature の現在の値をフィーチャの元の値と比較できる柔軟性を提供します。

    ピーク負荷は毎日変化する可能性がありますが、値の範囲は一般に日々一貫しており、月次または季節ベースでの大きな変化のみを反映する必要があります。 [peakload] フィールドに適用された新しい制約ルールを使用すると、フィールドへの変更が大きすぎる場合は編集できません。 後で、計算属性ルールを作成してテーブルの行にデータを入力し、[peakload] フィールドに加えられた変更をログに記録することで、このエラー検出を強化します。

  9. [サブタイプ] ビューを閉じます。

制約属性ルールの追加

次に、属性ルールを追加します。 属性ルールを使用すると、編集の操作性を強化して、ジオデータベース データセットのデータ整合性を向上させることができます。 属性ルールは、属性を自動的に設定し、編集操作中の無効な編集を制限し、既存のフィーチャに対して品質保証チェックを実行するためのユーザー定義のルールです。

属性ルールは、ドメインやサブタイプなど、ジオデータベースで使用される既存のルールを補完します。 たとえば、ドメインを属性フィールドに割り当てることで、有効な値のピック リストを編集者に提供して、データ収集プロセスをサポートできます。 この動作を強化するために、フィールド演算の実行時に、属性ルールを使用して、ドメインに含まれない属性フィールドの値を制限することもできます。 ルールがデータセットに追加されたら、編集の実行時やその後に、それらのルールを評価できます。

ここで重要なのは、属性ルールは特定の ArcGIS Utility Network 機能ではなく、すべてのジオデータベース フィーチャクラスおよびテーブル全体に配置して、編集操作、データ検証、品質保証、および操作を実行できることです。

  1. [カタログ] ウィンドウで、[ElectricDevice] を右クリックし、[データ設計] にポインターを合わせて [属性ルール] を選択します。

    データ設計オプションと属性ルール オプション

    [属性ルール] ビューが開きます。 このビューには、さまざまなルール タイプを識別する 3 つのタブ、[計算][制約][検証] があります。

  2. [属性ルール] ビューの [計算] ルールで、[Low Voltage Service] フィーチャを表す [ルール名] [ID_Device_22] までスクロールします。

    低電圧サービス ルール

  3. ルールをクリックして選択します。 [ID_Device_22] ウィンドウで [式] セクションと [トリガー] セクションを確認します。

    ID_Device_22 式とトリガー セクション

    新しい [Low Voltage Service] フィーチャの挿入中にこの式が適用されると、[assetid] フィールドに一意の ID 値が入力されます。

    次に、ピーク負荷値が 50 以上変更された場合に編集できないように、新しい制約ルールを追加します。 制約ルールは、フィーチャで許容される属性構成と一般的なリレーションシップを指定します。 これにより、編集操作中の無効なデータ入力を防いで、データ整合性を確保できます。 制約ルールは、[属性ルールの追加] および [属性ルールのインポート] ジオプロセシング ツールを使用して、ファイルとエンタープライズ ジオデータベースの両方のデータセットに対して作成するか、[属性ルール] ビューで作成することができます。

  4. [属性ルール] ビューで、[制約] タブをクリックしてから [ルールの追加] をクリックします。

    ルールの追加オプション

    [新しいルール] ウィンドウが表示されます。 制約ルールはまだ定義されていません。

    次に、ルールのプロパティを更新して、[ElectricDevice] フィーチャクラスの制約ルールを作成します。

  5. [新しいルール] ウィンドウで、次のパラメーターを入力します。
    • [ルール名] に「Prevent load spikes」と入力します。
    • [説明] に「If the peak load attribute is changed by a factor of more than 50, fail the edit.」と入力します。
    • [サブタイプ][Low Voltage Service] を選択します。

    新しいルール パラメーター

    [Low Voltage Service] サブタイプを選択したのは、このサブタイプのサービス メーターを編集したときにのみこの属性ルールを実行するようにしたいからです。

  6. [Prevent load spikes] ウィンドウの [式] で、[式] ボタンをクリックします。

    式ボタン

  7. [式の設定] ウィンドウの [式] テキスト ボックスで、次のコードをコピーして貼り付けます。
    
    var dLoad = $feature.peakload - $originalFeature.peakload;
    if (dLoad > 50)
        return false;
    else
        return true;

    式テキスト ボックスに入力された Arcade 式

  8. [確認] ボタンをクリックして式の整合性をチェックします。

    確認ボタン

    式は有効です。

  9. [OK] をクリックします。
    注意:

    Arcade グローバル $originalFeature は、編集前のフィーチャの状態を提供します。 たとえば、あるフィーチャのピーク負荷の現在の値が 10 で、その値を 20 に更新した場合、$originalFeature.peakload は 10 を返し、$feature.peakLoad は 20 を返します。

    次に、ルールのプロパティの更新を続けます。

  10. [トリガー] セクションで [更新] チェックボックスをオンにします。 [実行] セクションで、[アプリケーション評価から除外] チェックボックスをオンにします。

    トリガー セクションと実行セクションのパラメーター

  11. [Prevent load spikes] ウィンドウの [エラー] セクションで、次のパラメーターを設定します。
    • [エラー番号] に「1001」と入力します。
    • [エラー メッセージ] に「Load spike detected, aborting edit.」と入力します。

    エラー セクションのパラメーター

  12. リボン上の [属性ルール] タブにある [属性ルール] グループで、[保存] をクリックします。

    保存ボタン

    注意:

    ルールが保存されるまで数分かかる場合があります。

  13. [属性ルール] ビューを閉じます。
  14. [クイック アクセス ツールバー][プロジェクトの保存] ボタンをクリックします。

    クイック アクセス ツールバーのプロジェクトの保存ボタン

制約ルールのテスト

先ほど作成した新しい制約ルールをテストするには、低電圧サービスを更新して、ピーク負荷属性を編集する必要があります。

  1. [カタログ] ウィンドウで、[マップ] を展開します。
  2. [Electric Network Editor] マップを右クリックして、[開く] を選択します。

    Electric Network Editor マップを開くオプション

    [Electric Network Editor] マップが開きます。

  3. リボンの [マップ] タブにある [ナビゲーション] グループで、[ブックマーク] をクリックして、[Test Attribute Rule] を選択します。

    Test Attribute Rule ブックマーク

    マップの範囲が更新され、Beebe 小学校の南にある低電圧サービス ポイントが中心になります。

    ターゲット フィーチャの場所が中心に配置されたマップ

  4. リボンの [選択] グループで、[選択] ボタンをクリックします。

    選択ボタン

  5. マップで、低電圧サービス ポイントをクリックします。

    ターゲット フィーチャが選択された状態

    該当するフィーチャが青色でハイライト表示されます。これは、そのフィーチャが選択されていることを意味します。

  6. リボン上の [選択] グループで [属性] をクリックします。

    属性ボタン

    [属性] ウィンドウが表示されます。

    選択したフィーチャの属性ウィンドウ

  7. [属性] ウィンドウの下部で、[自動的に適用] がオンになっていることを確認します。

    自動的に適用オプション

    このパラメーターにより、フィーチャに加えられた編集が自動的に適用されます。

  8. [Peak Load (kW)] 属性までスクロールします。 [<Null>] をクリックし、「10」と入力して、Enter キーを押します。

    Peak Load (kW) 属性

    [Peak Load (kW)] 属性は、このフィーチャに対して更新され、このフィールドに適用される制約ルールは、値が 50kW を超えた場合にのみトリガーされるため、警告は発生しません。

  9. [Peak Load (kW)] に「70」と入力して Enter キーを押します。

    更新された [ピーク負荷 (kW)] の値が 70 になると、編集に失敗し、エラー メッセージが [属性] ウィンドウに表示されます。

    ピーク負荷が更新された場合のエラー

    [Peak Load (kW)] の値が 50 kW 以上に増加したため、編集に失敗し、エラーメッセージが表示されました。 これは、[ElectricDevice] フィーチャに制約ルールを適用した結果です。

    注意:

    制約ルール式では、$originalFeature の初期値が 0 に設定されていました。 10 に更新した場合、10 - 0 = 10 が 50 よりも小さいため、制約が発動しませんでした。 しかし、値を 70 に更新すると、70 - 10 = 60 が閾値の 50 よりも大きいため、属性ルールがトリガーされ、失敗しました。

  10. [Peak Load (kW)] 属性に異なる値を設定して、制約ルールをテストします。
    ヒント:

    エラーを防ぐために、[Prevent load spikes] ルールの編集を試します。 Abs() 関数を Arcade で使用します。

    [Peak Load (kW)] 値を 50 以上下げるとエラーになりません。

    このチュートリアルの目的として、[Peak Load (kW)] に加えられた編集内容は保持しません。

  11. リボンの [編集] タブをクリックします。 [編集の管理] グループにある [破棄] をクリックします。

    破棄ボタン

  12. [編集の破棄] ウィンドウで [はい] をクリックします。

    編集内容が破棄されます。

  13. [Electric Network Editor] マップを閉じます。 プロジェクトを保存します。

Arcade グローバル $originalFeature を使用して制約属性ルールを作成し、[peakload] 属性に加えられた大きな変更を検出しました。


計算レポートを使用したピーク時の負荷スパイクのレポート

これまで、Arcade グローバル $originalFeature を使用して制約属性ルールを作成し、[Peak Load] 属性に加えられた大きな変更を検出しました。 次に、低電圧サービスが更新されたときのピーク負荷値を報告する計算ルールを作成します。 計算属性ルールにより、サービス ポイントの負荷履歴の変化を検出し、その情報を別のテーブルに記録します。

負荷履歴テーブルの作成

はじめに、サービス ポイントの負荷履歴の変化を記録するためのテーブルを [electricnetworkeditor] ジオデータベース内に作成します。

  1. [カタログ] ウィンドウの [データベース] の下で、[electricnetworkeditor.gdb] を右クリックし、[新規] にポインターを合わせて [テーブル] を選択します。

    テーブル オプション

    [テーブルの作成] ウィザードが表示されます。

  2. [テーブルの作成] ウィザードの [定義] ページで、次の情報を入力します。
    • [名前] に「LoadHistory」と入力します。
    • [エイリアス] に「Load History」と入力します。

    テーブルの作成ウィザードの定義ページのパラメーター

  3. [次へ] をクリックします。

    次に、テーブルに 2 つの新しいフィールドを追加します。

  4. [フィールド] ページで、[ここをクリックして、新しいフィールドを追加します] をクリックして、次の情報を入力します。
    • [フィールド名] に「peakLoad」と入力します。
    • [データ タイプ] では [Long] を選択します。

    新規 peakLoad フィールド

  5. [ここをクリックして、新しいフィールドを追加します] をクリックして、2 番目のフィールドと次のパラメーターを追加します。
    • [フィールド名] に「serviceGUID」と入力します。
    • [データ タイプ][GUID] を選択します。

    新規 serviceGUID フィールド

    どのサービスが編集されたかを追跡するために、[peakLoad] フィールドにはサービス ポイントの負荷が格納され、[serviceGUID] には更新されたサービス ポイントの [GUID] が格納されます。

  6. [完了] をクリックして、新しいテーブルを作成します。

    次に、[LoadHistory] テーブルの編集情報の記録を有効にして、誰がテーブルを編集したか、いつ編集されたかをログに記録して、識別します。

  7. [カタログ] ウィンドウで、[LoadHistory] テーブルを右クリックし、[管理] を選択します。
  8. [テーブル プロパティ] ウィンドウで、[編集情報の記録] をオンにします。

    編集情報の記録パラメーター

    編集情報の記録をサポートするフィールドがテーブルに追加されます。

  9. [OK] をクリックして、[テーブル プロパティ] ウィンドウを閉じます。
  10. [カタログ] ウィンドウで、[LoadHistory] を右クリックし、[データ設計] にポインターを合わせて [フィールド] を選択します。

    テーブルの [フィールド] ビューが表示されます。

    LoadHistory テーブルのフィールド ビュー

    編集情報の記録をサポートするために追加されたフィールドには、グローバル ユーザー識別子と、フィーチャを生成および編集したユーザーと編集した日付を識別するためのフィールドが含まれます。

  11. [フィールド] ビューを閉じます。

計算属性ルールの作成

次に、サービス ポイントの負荷履歴の変化を検出し、その情報を別のテーブルに記録する計算属性ルールを作成します。 計算属性ルールを使用すると、フィーチャに属性構成が自動的に取り込まれます。

  1. [カタログ] ウィンドウで、[UtilityNetwork] フィーチャ データセットを展開します。
  2. [ElectricDevice] クラスを右クリックし、[データ設計] にポインターを合わせて [属性ルール] を選択します。

    [属性ルール] ビューが表示されます。

  3. [属性ルール] ビューで、必要に応じて [計算] タブをクリックします。

    計算ルールがすでにいくつかあります。 これらは、ユーティリティ ネットワークの初期構成時に作成され、データ整合性の維持のために使用されます。

  4. [ルールの追加] ドロップダウン矢印をクリックし、[即時計算ルールの追加] を選択します。

    即時計算ルールの追加オプション

    [新しいルール] ウィンドウが表示されます。

    即時計算ルールは、挿入、更新、削除などの編集操作によって自動的に評価され、トリガーされます。 挿入操作と更新操作によってトリガーされるルールを作成します。

  5. [新しいルール] ウィンドウで、次のパラメーターに値を入力します。
    • [ルール名] に「Log Load History」と入力します。
    • [説明] に「Records all changes to the peak load attribute」と入力します。
    • [サブタイプ][Low Voltage Service] を選択します。
    • [フィールド][peakload] を選択します。

    [ルール名] フィールドを更新すると、ウィンドウのタイトルが [Log Load History] に更新されます。

    新しいルール ウィンドウのパラメーター

  6. [式] で、[式] ボタンをクリックします。
  7. [式の設定] ウィンドウで、[式] に次の Arcade 式を入力します。
    
    return {
             "result": $feature.peakload,
             "edit" : [
                 {
                    "className": "LoadHistory",
                    "adds": [{
                          "attributes": {"peakLoad": $feature.peakLoad, "serviceGUID": $feature.globalID }   
                        }]
                  }
               ]
    
    }

    式の設定ウィンドウ内の Arcade 式

    注意:

    このスクリプトでは、次のプロパティを含む特殊な辞書 (JSON 形式) である編集辞書の戻り値型を使用します。

    • "result" - 編集中のフィーチャのピーク負荷として返す値を表します。 この例では、結果を変更していません。 編集したサービス フィーチャの現在の [peakload] 値を返し、[LoadHistory] テーブル内の同じ名前のフィールドを更新するとします。
    • "edit" - 初期編集のために、編集したい配列を表します。 この例では、指定した属性で一連の "adds" 関数を実行して [LoadHistory] テーブルの [className] フィールドを編集するとします。
  8. [確認] ボタンをクリックしてスクリプトを検証します。 式を検証したら、[OK] をクリックします。
  9. [Log Load History] ウィンドウの [トリガー] で、[挿入] チェックボックスと [更新] チェックボックスをオンにします。
  10. [実行] セクションで、[アプリケーション評価から除外] チェックボックをオンにします。

    トリガー セクションと実行セクション

  11. リボン上の [属性ルール] タブにある [属性ルール] グループで、[保存] をクリックします。
    注意:

    ルールが保存されるまで数分かかる場合があります。

  12. [属性ルール] ビューを閉じて、プロジェクトを保存します。

計算ルールのテスト

先ほど作成した即時計算属性ルールをテストするには、[peakload] 属性を編集して低電圧サービスを更新します。 その後、計算ルールを使って [LoadHistory] テーブルに編集が適用されたことを確認します。

  1. [カタログ] ウィンドウの [マップ] の下で、[Electric Network Editor] マップをダブルクリックします。

    [Electric Network Editor] マップが表示されます。

  2. 必要に応じて、[Test Attribute Rule] ブックマークに移動し、以前テストに使用した低電圧サービス フィーチャを選択します。

    マップの低電圧サービス

  3. [マップ] タブの [選択] グループで、[属性] をクリックします。
  4. [属性] ウィンドウで、選択したフィーチャの [グローバル ID] の値が [{306A7664-7DDE-46EB-B415-A75F19658095}] であることを確認します。

    属性ウィンドウのグローバル ID 属性

  5. 必要に応じて、[自動的に適用] チェックボックスをオンにして、自動的に編集をコミットします。
  6. [Peak Load (kW)] に「10」と入力して Enter キーを押します。

    [Peak Load (kW)] を更新すると、新しい属性ルールが [LoadHistory] テーブルにレコードを生成し、低電圧サービス ポイントに加えられた編集が記録されます。

  7. [Peak Load (kW)] に「30」と入力して Enter キーを押します。
  8. [コンテンツ] ウィンドウの [スタンドアロン テーブル] で、[LoadHistory] テーブルを右クリックして [開く] を選択します。

    テーブルに [peakLoad] 属性の更新を示す 2 つの行があります。 これらの行は、作成した計算ルールの結果として生成されました。 また、この表には、編集者に関する詳細と、編集が行われた日時を含むフィールドが格納されています。

    LoadHistory テーブル

  9. 低電圧サービス ポイント フィーチャの [Peak Load (kW)] 属性を数回編集し、編集後に [LoadHistory] テーブルを再読み込みして、テーブルが更新されていることを確認します。

    低電圧サービス ポイントのために設定された現在の計算ルールにより、ポイントが編集されるたびにテーブルに新しい行が追加されます。 新しい計算ルールにより、[Low Voltage Service] アセット グループのピーク負荷に対して発生したすべての編集が記録されます。 $originalFeature グローバルを使用すると、たとえば、[peakLoad] 属性が変更された場合にのみログ値を生成するように、ルールを構成することができます。

  10. テーブルを閉じます。 プロジェクトを保存します。
    注意:

    現実世界のシナリオでは、自動化された方法でこれらのサービスの負荷情報を更新する可能性があります。 作成した制約ルールは、異常値スパイクが発生した場合にエラーを発生させることで、異常値スパイクがシステムに入るのを防止できます。

    計算ルールにより、これらの値のレポート作成が自動化され、顧客の運用パターンや傾向を把握することができます。 [LoadHistory] テーブルを使用して、この情報をエンジニアやオペレーション チームのメンバーと共有し、異常値が問題を示している場合に追加の解析を行うためのリソースを提供します。

    また、[LoadHistory] テーブルを使用して、顧客サービス スタッフや現地調査員に同様の分析を提供することもできます。 このようにして、空間的なフィードバックは、請求電話で顧客をサポートしたり、サービス コール中に現場でデバイスを検査したりする際に使用することができます。

次に、[LoadHistory] テーブルから得られた情報を表示するポップアップを構成して空間的なフィードバックを提供し、請求電話で顧客をサポートするときや、サービス コール中に現地でデバイスを検査するときに、顧客サービス スタッフと現地調査員をサポートします。 これにより、このデータを使用している人のために、サービスの履歴のコンテキストを提供することができます。


負荷履歴を表示するポップアップの構成

低電圧サービスの更新時にピーク負荷値をレポートする計算ルールをすでに作成しました。 計算属性ルールで、サービス ポイントの負荷履歴の変更を検出し、情報をテーブルに記録しました。 次のセクションでは、[LoadHistory] テーブルから取得した情報を表示するポップアップを構成します。

負荷履歴の表示と要約

[Low Voltage Service] アセット グループのポップアップを構成し、3 つの式を作成して、[LoadHistory] テーブルで収集した情報を抽出して表示します。

  1. [コンテンツ] ウィンドウで [Electric Device] を展開します。 [Low Voltage Service] サブレイヤーを右クリックして [ポップアップの構成] を選択します。

    ポップアップの構成オプション

    [ポップアップの構成] ウィンドウが開きます。

  2. [ポップアップの構成] ウィンドウで、[式] をクリックして Arcade 式を作成します。

    式ボタン

  3. [新規] をクリックします。

    新規作成ボタン

    [式の設定] ウィンドウが開きます。

    最初に作成する式は、[LoadHistory] テーブルで選択したサービス フィーチャの最大 [Peak Load (kW)] 値をレポートするために使用します。

  4. [式の設定] ウィンドウで、次のパラメーターに値を入力します。
    • [名前] に「Max」と入力します。
    • [タイトル] に「MaxLoad」と入力します。

    このタイトルは、式の結果を表示するポップアップで使用される仮想フィールドの表示名です。

  5. [式] テキスト ボックスに、次のスクリプトを入力します。
    
    //Create a variable to reference the LoadHistory table
    
    var fshistory = FeatureSetByName ($datastore,"LoadHistory", ["peakload"])
    
    //Create a variable to reference the GlobalID of the selected feature in the map
    
    var GlobalID = $feature.globalID
    
    // We are interested in rows from LoadHistory.serviceGUID that match the Service feature selected.  This filters results to return only ServiceGUIDs that match the $feature.GlobalID
    
    var rows = filter(fshistory,"serviceGUID = @GlobalID")
    //Guard logic to display 0 if no values found in the LoadHistory table
    if (count(rows) == 0)return 0
    
    //Return filtered values from LoadHistory.peakload in the Low Voltage Service pop-up in bold
    
    return "<b>" +  max (rows, "peakload") + "</b>"
    注意:

    ピーク負荷の最大設定値を返すために、この式で max() 関数が使用されます。 ピーク負荷の最小設定値を返すには、max()min() に置き換えます。

    MaxLoad の式の設定パラメーター

  6. [確認] ボタンをクリックしてスクリプトを検証します。 式を検証したら、[OK] をクリックします。

    次に、2 つ目の式を作成し、[LoadHistory] テーブルから選択したサービス フィーチャについて、[Peak Load (kW)] の最小設定値をレポートします。

  7. [ポップアップの構成] ウィンドウで [新規作成] をクリックします。 [式ビルダ―] ウィンドウで、式の名前を「Min」、タイトルを「MinLoad」とします。
  8. [式] テキスト ボックスに、次のスクリプトを入力します。
    
    //Create a variable to reference the LoadHistory table
    
    var fshistory = FeatureSetByName ($datastore,"LoadHistory", ["peakload"])
    
    //Create a variable to reference the GlobalID of the selected feature in the map
    
    var GlobalID = $feature.globalID
    
    // We are interested in rows from LoadHistory.serviceGUID that match the Service feature selected.  This filters results to return only ServiceGUIDs that match the $feature.GlobalID
    
    var rows = filter(fshistory,"serviceGUID = @GlobalID")
    //Guard logic to display 0 if no values found in the LoadHistory table
    if (count(rows) == 0)return 0
    
    //Return filtered values from LoadHistory.peakload in the Low Voltage Service pop-up in bold
    
    return "<b>" +  min (rows, "peakload") + "</b>"
  9. 式を確認し、[OK] をクリックします。

    次に、選択したサービスの編集回数を知らせる式を追加します。

  10. [ポップアップの構成] ウィンドウで [新規作成] をクリックします。 [式の設定] ウィンドウで、次のパラメーターに値を入力します。
    • [名前] に「Count」と入力します。
    • [タイトル] に「#Updates」と入力します。
  11. [式] テキスト ボックスに、次のスクリプトを入力します。
    
    //Create a variable to reference the LoadHistory table
    
    var fshistory = FeatureSetByName ($datastore,"LoadHistory", ["peakload"])
    
    //Create a variable to reference the GlobalID of the selected feature in the map
    
    var GlobalID = $feature.globalID
    
    // We are interested in rows from LoadHistory.serviceGUID that match the Service feature selected.  This filters results to return only ServiceGUIDs that match the $feature.GlobalID
    
    var rows = filter(fshistory,"serviceGUID = @GlobalID")
    
    //Guard logic to display 0 if no values found in the LoadHistory table
    if (count(rows) == 0)return 0
    
    //Return filtered values from LoadHistory.peakload in the Low Voltage Service pop-up
    
    return "<b>" +  count (rows) + "</b>"

    Count の式の設定パラメーター

  12. [確認] ボタンをクリックしてスクリプトを検証します。 [OK] をクリックします。

    最後に、選択したサービス フィーチャの [Peak Load (kW)] の平均値を計算する式を作成します。

  13. 新しい式を作成して、名前を「Avg」、タイトルを「AvgLoad」とします。 [式] テキスト ボックスに、次のスクリプトを入力します。
    
    //Create a variable to reference the LoadHistory table
    
    var fshistory = FeatureSetByName ($datastore,"LoadHistory", ["peakload"])
    
    //Create a variable to reference the GlobalID of the selected feature in the map
    
    var GlobalID = $feature.globalID
    
    // We are interested in rows from LoadHistory.serviceGUID that match the Service feature selected.  This filters results to return only ServiceGUIDs that match the $feature.GlobalID
    
    var rows = filter(fshistory,"serviceGUID = @GlobalID")
    //Guard logic to display 0 if no values found in the LoadHistory table
    if (count(rows) == 0)return 0
    
    //Return filtered values from LoadHistory.peakload in the Low Voltage Service pop-up in bold
    
    return "<b>" +  average (rows, "peakload") + "</b>"
  14. 式を確認し、[OK] をクリックします。

    [ポップアップの構成] ウィンドウにすべての式がリストされます。

    ポップアップ式

    ポップアップ式を構成したら、期待通りの結果が生成されてポップアップ ウィンドウに正しく表示されるかどうかを確認します。

  15. [マップ] タブの [ナビゲーション] グループにある [マップ操作] ツールをクリックします。 マップで、以前に選択した低電圧サービス ポイントをクリックします。

    選択した低電圧サービスのポップアップが表示されます。

  16. ポップアップの下部まで、スクロールします。

    追加したフィールドに [LoadHistory] テーブルから取得された関連する値が表示されます。

    ポップアップ ウィンドウに追加された式

    注意:

    上記で使用したスキルを使用して、ポップアップで返された値から太字の書式を解除するか、表示色を赤に変更して、値が特定の数値を超えた場合にさらに目立つようにすることができます。 このためには、式で if-else ロジックと <font color> タグを使用します。

  17. ポップアップを閉じ、編集内容を破棄します。 プロジェクトを保存します。

このチュートリアルでは、データ整合性を維持し、ピーク負荷値にスパイクが生じた場合にエラーを表示する制約属性ルールを作成しました。 ここでは、格納属性ルールをドメイン、サブタイプ、条件値と一緒に使用して、ジオデータベース フィーチャクラスのデータ整合性を維持する方法の例を示しました。

次に、テーブルを作成し、サービス ポイントのピーク負荷の変化を検出して、新しいテーブルにこの変化とフィーチャの GUID を記録する計算属性ルールを構成しました。 これらの属性ルールにより、Arcade を使用した一連のポップアップ式を作成して、ピーク負荷履歴を含むテーブルから情報を取得し、ArcGIS Pro でポップアップを使用してこの情報を提示しました。

このチュートリアルでは、ジオデータベースでさらに工夫した属性ルールの作成を開始するための構成要素を学習しました。

他のチュートリアルについては、チュートリアル ギャラリーをご覧ください。