制約属性ルールを使用してピーク時の負荷スパイクを防止
最初に、ArcGIS Utility Network のデータ整合性を適用およびレポートするための 2 つの属性ルールを作成します。 次に、Arcade を使用して、計算ルールで作成したログから有用な情報を取得する新しいポップアップ式を構成およびテストします。 次の作業を行う方法を学習します。
- ピーク負荷でのスパイクを防ぐための制約ルールを作成します。
- 関連する計算ルールを作成して、低電圧サービス フィーチャを編集したときにピーク負荷値を報告します。
- 低電圧サービス フィーチャを編集し、各ルールの出力を確認して、属性ルールをテストします。
- Arcade を使用してポップアップを設定し、計算ルールを使用して作成したログから有用な情報を取得します。
はじめる前に、「電力データ モデル」を確認してください。
制約属性ルールの追加
ユーティリティ ネットワークで、[Low Voltage Service] アセット グループのフィーチャに不正な属性編集が見られました。 しかし、[Electric Network Editor] マップを開いたり、ユーティリティ ネットワークを含むジオデータベース内の [UtilityNetwork] フィーチャ データセットのフィーチャクラスを確認したりして、不正を特定すると、低電圧サービス フィーチャクラスが利用できないことに気づくかもしれません。
これは、ArcGIS Utility Network では、「サブタイプ グループ レイヤー」と属性ドメインを使用した 「分類モデル」が実装されているので、個別のフィーチャクラスを多数用意する必要性が軽減されるためです。 また、マップの [コンテンツ] ウィンドウでは、関連するユーティリティ ネットワーク レイヤーをグループ化するためにコンポジット レイヤーが使用されています。 これらのコンポジット レイヤーは、レイヤーの照会、編集、更新の際にデータ ソースに行われる要求数を減らすことで、個々のレイヤーよりも効率的に機能します。
- 「Attribute rules in the ArcGIS Utility Network」プロジェクト パッケージをダウンロードします。
- コンピューター上で [Attribute_rules_in_the_ArcGIS_Utility_Network_] プロジェクト パッケージを選択します。 必要に応じてファイルを適切な場所に移動し、ダブルクリックします。
[Use Attribute Rules] プロジェクトが ArcGIS Pro で開きます。
注意:
ArcGIS Pro へのアクセス権限または組織アカウントがない場合は、ソフトウェア アクセスのオプションをご参照ください。
- [カタログ] ウィンドウで、[データベース] を展開し、[electricnetworkeditor.gdb] を展開します。
注意:
[カタログ] ウィンドウが表示されていない場合は、リボン上の [表示] タブの [ウィンドウ] グループで [カタログ ウィンドウ] をクリックします。
- [electricnetworkeditor.gdb] で [UtilityNetwork] フィーチャ データセットを展開します。
フィーチャ データセットに編成されたフィーチャクラスとリレーションシップ クラスを確認します。 これらは、ユーティリティ ネットワークを含むジオデータベースのスキーマ (構造) を表しています。
- [カタログ] ウィンドウで、[ElectricDevice] を右クリックし、[データ設計] にポインターを合わせて [サブタイプ] を選択します。
[ElectricDevice] フィーチャクラスの [サブタイプ] ビューが表示されます。 このフィーチャクラスには、すでにいくつかのサブタイプと関連するドメインが適用されています。
- [サブタイプ] ビューで、[*ASSETGROUP] サブタイプを確認します。
[*ASSETGROUP] は、高電圧避雷器、低電圧スイッチ、低電圧遮断器、低電圧サービスなど、さまざまな種類の資産を定義するために使用されるサブタイプです。 さらに、[ASSETTYPE] は、資産のサブ分類のレベルを定義するメカニズムを提供します。 たとえば、[Low Voltage Service] は、単相住宅用と三相商業用に分類されています。
- [サブタイプ] ビューでは、[ASSETGROUP 22] に対応する [Low Voltage Service] 列までスクロールします。
[Low Voltage Service] サブタイプでは、多くのフィールドにドメインが割り当てられており、一部のフィールドにはデフォルト値が設定されています。 これらは、更新を特定の選択肢のリストまたは値の範囲に制限することで、データ整合性 (有効な値) を確実にします。 値を指定しない場合は、デフォルトが使用されます。
- [*ASSETGROUP 22] で、[peakload] フィールドまで下にスクロールしてください。
[peakload] フィールドにはドメインが割り当てられていません。
注意:
ピーク負荷 (またはピーク需要) は、1 日のサイクルで何度も変動することがあり、その値はサービス間で変わることがあります。 その結果、デフォルト値やドメインは、この属性のデータ整合性を維持するための効果的なツールではありません。 解決策は、属性ルール プロファイルの Arcade グローバル「$originalFeature」を使用して制約属性ルールを作成し、[peakload] 属性に割り当てられた大きな変更を検出することです。 Arcade グローバル $originalFeature は、編集前のフィーチャの状態を示し、スクリプト作成者が $feature の現在の値をフィーチャの元の値と比較できる柔軟性を提供します。
ピーク負荷は毎日変化する可能性がありますが、値の範囲は一般に日々一貫しており、月次または季節ベースでの大きな変化のみを反映する必要があります。 [peakload] フィールドに適用された新しい制約ルールを使用すると、フィールドへの変更が大きすぎる場合は編集できません。 後のステップで、計算属性ルールを作成してテーブルの行にデータを入力し、[peakload] フィールドに加えられた変更をログに記録することで、このエラー検出を強化します。
- [サブタイプ] ビューを閉じます。
次に、属性ルールを追加します。 属性ルールを使用すると、編集の操作性を強化して、ジオデータベース データセットのデータ整合性を向上させることができます。 属性ルールは、属性を自動的に設定し、編集操作中の無効な編集を制限し、既存のフィーチャに対して品質保証チェックを実行するためのユーザー定義のルールです。
属性ルールは、ドメインやサブタイプなど、ジオデータベースで使用される既存のルールを補完します。 たとえば、ドメインを属性フィールドに割り当てることで、有効な値のピック リストを編集者に提供して、データ収集プロセスをサポートできます。 この動作を強化するために、フィールド演算の実行時に、属性ルールを使用して、ドメインに含まれない属性フィールドの値を制限することもできます。 ルールがデータセットに追加されたら、編集の実行時やその後に、それらのルールを評価できます。
ここで重要なのは、属性ルールは特定の ArcGIS Utility Network 機能ではなく、すべてのジオデータベース フィーチャクラスおよびテーブル全体に配置して、編集操作、データ検証、品質保証、および操作を実行できることです。
- [カタログ] ウィンドウで、[ElectricDevice] を右クリックし、[データ設計] にポインターを合わせて [属性ルール] を選択します。
[属性ルール] ビューが開きます。 このビューには、さまざまなルール タイプを識別する 3 つのタブ、[計算]、[制約]、[検証] があります。
- [属性ルール] ビューの [計算] ルールで、[Low Voltage Service] フィーチャを表す [ルール名] [ID_Device_22] までスクロールします。
- ルールをクリックして選択します。 [ID_Device_22] ウィンドウで [式] セクションと [トリガー] セクションを確認します。
新しい [Low Voltage Service] フィーチャの挿入中にこの式が適用されると、[assetid] フィールドに一意の ID 値が入力されます。
次に、ピーク負荷値が 50 以上変更された場合に編集できないように、新しい制約ルールを追加します。 制約ルールは、フィーチャで許容される属性構成と一般的なリレーションシップを指定します。 これにより、編集操作中の無効なデータ入力を防いで、データ整合性を確保できます。 制約ルールは、[属性ルールの追加] および [属性ルールのインポート] ジオプロセシング ツールを使用して、ファイルとエンタープライズ ジオデータベースの両方のデータセットに対して作成するか、[属性ルール] ビューで作成することができます。
- [属性ルール] ビューで、[制約] タブをクリックしてから [ルールの追加] をクリックします。
[新しいルール] ウィンドウが表示されます。 制約ルールはまだ定義されていません。
次に、ルールのプロパティを更新して、[ElectricDevice] フィーチャクラスの制約ルールを作成します。
- [新しいルール] ウィンドウで、次のパラメーターを入力します。
- [ルール名] に「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] サブタイプを選択したのは、このサブタイプのサービス メーターを編集したときにのみこの属性ルールを実行するようにしたいからです。
- [Prevent load spikes] ウィンドウの [式] で、[式] ボタンをクリックします。
- [式の設定] ウィンドウの [式] テキスト ボックスで、次のコードをコピーして貼り付けます。
var dLoad = $feature.peakload - $originalFeature.peakload; if (dLoad > 50) return false; else return true;
- [確認] ボタンをクリックして、式を検証し、[OK] をクリックします。
注意:
Arcade グローバル $originalFeature は、編集前のフィーチャの状態を提供します。 たとえば、あるフィーチャのピーク負荷の現在の値が 10 で、その値を 20 に更新した場合、$originalFeature.peakload は 10 を返し、$feature.peakLoad は 20 を返します。
次に、ルールのプロパティの更新を続けます。
- [Prevent load spikes] ウィンドウの [エラー] セクションで、次のパラメーターを設定します。
- [エラー番号] に「1001」と入力します。
- [エラー メッセージ] に「Load spike detected, aborting edit.」と入力します。
- [トリガー] セクションで [更新] チェックボックスをオンにします。
- [実行] セクションで、[アプリケーション評価から除外] チェックボックをオンにします。
- リボン上の [属性ルール] タブにある [属性ルール] グループで、[保存] をクリックします。
注意:
ルールが保存されるまで数分かかる場合があります。
- [属性ルール] ビューを閉じます。
- [クイック アクセス ツールバー] で、[保存] をクリックします。
制約ルールのテスト
先ほど作成した新しい制約ルールをテストするには、低電圧サービスを更新して、ピーク負荷属性を編集する必要があります。
- [カタログ] ウィンドウで、[マップ] を展開します。
- [Electric Network Editor] マップを右クリックして、[開く] を選択します。
[Electric Network Editor] マップが開きます。
- [マップ] タブの [ナビゲーション] グループで、[ブックマーク] をクリックして [Test Attribute Rule] を選択します。
マップの範囲が更新され、Beebe 小学校の南にある低電圧サービス ポイントが中心になります。
- リボン上の [選択] グループで、[選択] ツールをクリックします。
- 低電圧サービス ポイントをクリックします。
該当するフィーチャが青色でハイライト表示されます。これは、そのフィーチャが選択されていることを意味します。
- リボン上の [選択] グループで [属性] をクリックします。
[属性] ウィンドウが表示されます。
- [属性] ウィンドウの下部で、[自動的に適用] がオンになっていることを確認します。
このパラメーターにより、フィーチャに加えられた編集が自動的に適用されます。
- [Peak Load (kW)] 属性を検索し、「10」と入力して Enter キーを押します。
[Peak Load (kW)] 属性は、このフィーチャに対して更新され、このフィールドに適用される制約ルールは、値が 50kW を超えた場合にのみトリガーされるため、警告は発生しません。
- [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 よりも大きいため、属性ルールがトリガーされ、失敗しました。
- [Peak Load (kW)] 属性に異なる値を設定して、制約ルールをテストします。
ヒント:
エラーを防ぐために、[Prevent load spikes] ルールの編集を試します。 Abs() 関数を Arcade で使用します。
[Peak Load (kW)] 値を 50 以上下げるとエラーになりません。
このチュートリアルの目的として、[Peak Load (kW)] に加えられた編集内容は保持しません。
- [編集] タブにある [編集の管理] グループで、[破棄] をクリックして、すべての編集内容を破棄します。 [はい] をクリックして確認します。
- [Electric Network Editor] マップを閉じて、プロジェクトを保存します。
Arcade グローバル $originalFeature を使用して制約属性ルールを作成し、[peakload] 属性に加えられた大きな変更を検出しました。
計算レポートを使用したピーク時の負荷スパイクのレポート
これまで、Arcade グローバル $originalFeature を使用して制約属性ルールを作成し、[Peak Load] 属性に加えられた大きな変更を検出しました。 次に、低電圧サービスが更新されたときのピーク負荷値を報告する計算ルールを作成します。 計算属性ルールにより、サービス ポイントの負荷履歴の変化を検出し、その情報を別のテーブルに記録します。
負荷履歴テーブルの作成
はじめに、サービス ポイントの負荷履歴の変化を記録するためのテーブルを [electricnetworkeditor] ジオデータベース内に作成します。
- [カタログ] ウィンドウで、[データベース] を展開します。 [electricnetworkeditor.gdb] を右クリックし、[新規] にポインターを合わせて [テーブル] を選択します。
[テーブルの作成] ウィザードが表示されます。
- [テーブルの作成] ウィザードの [定義] ページで、次の情報を入力します。
- [名前] に「LoadHistory」と入力します。
- [エイリアス] に「Load History」と入力します。
次に、テーブルに 2 つの新しいフィールドを追加します。
- [次へ] をクリックします。
- [フィールド] ページで、[ここをクリックして、新しいフィールドを追加します] をクリックして、次の情報を入力します。
- [フィールド名] に「peakLoad」と入力します。
- [データ タイプ] で [Long Integer] を選択します。
- [ここをクリックして、新しいフィールドを追加します] をクリックして、2 番目のフィールドと次のパラメーターを追加します。
- [フィールド名] に「serviceGUID」と入力します。
- [データ タイプ] で [GUID] を選択します。
どのサービスが編集されたかを追跡するために、[peakLoad] フィールドにはサービス ポイントの負荷が格納され、[serviceGUID] には更新されたサービス ポイントの [GUID] が格納されます。
- [完了] をクリックして、新しいテーブルを作成します。
- [カタログ] ウィンドウで、[LoadHistory] テーブルが正常に作成されたことを確認します。
次に、[LoadHistory] テーブルの編集情報の記録を有効にして、誰がテーブルを編集したか、いつ編集されたかをログに記録して、識別します。
- [カタログ] ウィンドウで、[LoadHistory] テーブルを右クリックし、[管理] を選択します。
- [テーブル プロパティ] ウィンドウで、[編集情報の記録] をオンにします。
編集情報の記録をサポートするフィールドがテーブルに追加されます。
- [OK] をクリックして、[テーブル プロパティ] を閉じます。
- [カタログ] ウィンドウで、[LoadHistory] を右クリックし、[データ設計] にポインターを合わせて [フィールド] を選択します。
テーブルの [フィールド] ビューが表示されます。
編集情報の記録をサポートするために追加されたフィールドには、グローバル ユーザー識別子と、フィーチャを生成および編集したユーザーと編集した日付を識別するためのフィールドが含まれます。
- [フィールド] ビューを閉じます。
計算属性ルールの作成
次に、サービス ポイントの負荷履歴の変化を検出し、その情報を別のテーブルに記録する計算属性ルールを作成します。 計算属性ルールを使用すると、フィーチャに属性構成が自動的に取り込まれます。
- [カタログ] ウィンドウで、[UtilityNetwork] フィーチャ データセットを展開します。
- [ElectricDevice] クラスを右クリックし、[データ設計] にポインターを合わせて [属性ルール] をクリックします。
[属性ルール] ビューが表示されます。
- [属性ルール] ビューで、必要に応じて [計算] タブをクリックします。
計算ルールがすでにいくつかあります。 これらは、ユーティリティ ネットワークの初期構成時に作成され、データ整合性の維持のために使用されます。
- [ルールの追加] ドロップダウン矢印をクリックし、[即時計算ルールの追加] を選択します。
[新しいルール] ウィンドウが表示されます。
即時計算ルールは、挿入、更新、削除などの編集操作によって自動的に評価され、トリガーされます。 挿入操作と更新操作によってトリガーされるルールを作成します。
- [新しいルール] ウィンドウで、次のパラメーターに値を入力します。
- [ルール名] に「Log Load History」と入力します。
- [説明] に「Records all changes to the peak load attribute」と入力します。
- [サブタイプ] で [Low Voltage Service] を選択します。
- [フィールド] で [peakload] を選択します。
[ルール名] フィールドを更新すると、ウィンドウのタイトルが [Log Load History] に更新されます。
- [Log Load History] ウィンドウで、[式] ボタンをクリックして [式の設定] ウィンドウを開きます。
- [式の設定] ウィンドウで、[式] に次の Arcade 式を入力します。
return { "result": $feature.peakload, "edit" : [ { "className": "LoadHistory", "adds": [{ "attributes": {"peakLoad": $feature.peakLoad, "serviceGUID": $feature.globalID } }] } ] }
注意:
このスクリプトでは、次のプロパティを含む特殊な辞書 (JSON 形式) である編集辞書の戻り値型を使用します。
- "result" - 編集中のフィーチャのピーク負荷として返す値を表します。 この例では、結果を変更していません。 編集したサービス フィーチャの現在の [peakload] 値を返し、[LoadHistory] テーブル内の同じ名前のフィールドを更新するとします。
- "edit" - 初期編集のために、編集したい配列を表します。 この例では、指定した属性で一連の "adds" 関数を実行して [LoadHistory] テーブルの [className] フィールドを編集するとします。
- [確認] ボタンをクリックしてスクリプトを検証し、式が正しく実行されるようにします。 [OK] をクリックします。
- [Log Load History] ウィンドウの [トリガー] で、[挿入] チェックボックスと [更新] チェックボックスをオンにします。
- [実行] セクションで、[アプリケーション評価から除外] チェックボックをオンにします。
- リボン上の [属性ルール] タブにある [属性ルール] グループで、[保存] をクリックします。
注意:
ルールが保存されるまで数分かかる場合があります。
- [属性ルール] ビュー ウィンドウを閉じて、プロジェクトを保存します。
計算ルールのテスト
先ほど作成した即時計算属性ルールをテストするには、[peakload] 属性を編集して低電圧サービスを更新する必要があります。 その後、計算ルールを使って [LoadHistory] テーブルに編集が適用されたことを確認します。
- [カタログ] ウィンドウで、[マップ] を展開します。 [Electric Network Editor] マップをダブルクリックします。
[Electric Network Editor] マップが表示されます。
- リボンの [マップ] タブをクリックします。 [ナビゲーション] グループで、[ブックマーク] をクリックして [Test Attribute Rule] を選択します。
マップ範囲が低電圧サービス フィーチャの位置に更新されます。
- [マップ] タブの [選択] グループで、[選択] ツールをクリックした後、[Electric Device 1267] に接続されている低電圧サービス ポイントをクリックします。
- [マップ] タブの [選択] グループで、[属性] をクリックします。
- [属性] ウィンドウで、選択したフィーチャの [グローバル ID] の値が [{306A7664-7DDE-46EB-B415-A75F19658095}] であることを確認します。
- 必要に応じて、[自動的に適用] チェックボックスをオンにして、自動的に編集をコミットします。
- [Peak Load (kW)] に「10」と入力して Enter キーを押します。
[Peak Load (kW)] を更新すると、新しい属性ルールが [LoadHistory] テーブルにレコードを生成し、低電圧サービス ポイントに加えられた編集が記録されます。
- [Peak Load (kW)] に「30」と入力して Enter キーを押します。
- [コンテンツ] ウィンドウの [スタンドアロン テーブル] で、[LoadHistory] テーブルを右クリックして [開く] を選択します。
テーブルに [peakLoad] 属性の更新を示す 2 つの行があります。 これらの行は、作成した計算ルールの結果として生成されました。 また、この表には、編集者に関する詳細と、編集が行われた日時を含むフィールドが格納されています。
- 低電圧サービス ポイント フィーチャの [Peak Load (kW)] 属性を数回編集し、編集後に [LoadHistory] テーブルを再読み込みして、テーブルが更新されていることを確認します。
低電圧サービス ポイントのために設定された現在の計算ルールにより、ポイントが編集されるたびにテーブルに新しい行が追加されます。 新しい計算ルールにより、[Low Voltage Service] アセット グループのピーク負荷に対して発生したすべての編集が記録されます。 $originalFeature グローバルを使用すると、たとえば、[peakLoad] 属性が変更された場合にのみログ値を生成するように、ルールを構成することができます。
- プロジェクトを保存します。
注意:
現実世界のシナリオでは、自動化された方法でこれらのサービスの負荷情報を更新する可能性があります。 作成した制約ルールは、異常値スパイクが発生した場合にエラーを発生させることで、異常値スパイクがシステムに入るのを防止できます。
計算ルールにより、これらの値のレポート作成が自動化され、顧客の運用パターンや傾向を把握することができます。 [LoadHistory] テーブルを使用して、この情報をエンジニアやオペレーション チームのメンバーと共有し、異常値が問題を示している場合に追加の解析を行うためのリソースを提供します。
また、[LoadHistory] テーブルを使用して、顧客サービス スタッフや現地調査員に同様の分析を提供することもできます。 このようにして、空間的なフィードバックは、請求電話で顧客をサポートしたり、サービス コール中に現場でデバイスを検査したりする際に使用することができます。
次に、[LoadHistory] テーブルから得られた情報を表示するポップアップを構成して空間的なフィードバックを提供し、請求電話で顧客をサポートするときや、サービス コール中に現地でデバイスを検査するときに、顧客サービス スタッフと現地調査員をサポートします。 これにより、このデータを使用している人のために、サービスの履歴のコンテキストを提供することができます。
負荷履歴を表示するポップアップの構成
低電圧サービスの更新時にピーク負荷値をレポートする計算ルールをすでに作成しました。 計算属性ルールで、サービス ポイントの負荷履歴の変更を検出し、情報をテーブルに記録しました。 次のセクションでは、[LoadHistory] テーブルから取得した情報を表示するポップアップを構成します。
負荷履歴の表示と要約
最終手順として、[Low Voltage Service] アセット グループのポップアップを構成し、3 つの式を作成して、[LoadHistory] テーブルで収集した情報を抽出して表示します。
- [コンテンツ] ウィンドウで [Electric Device] (必要な場合) を展開し、[Low Voltage Service] サブレイヤーを右クリックして [ポップアップの構成] をクリックします。
[ポップアップの構成] ウィンドウが開きます。
- [ポップアップの構成] ウィンドウで、[式] をクリックして Arcade 式を作成します。
- [新規] をクリックして [式の設定] ウィンドウを開きます。
[式の設定] ウィンドウが開きます。
最初に作成する式は、[LoadHistory] テーブルで選択したサービス フィーチャの最大 [Peak Load (kW)] 値をレポートするために使用します。
- [式の設定] ウィンドウで、次のパラメーターに値を入力します。
- [名前] に「Max」と入力します。
- [タイトル] に「MaxLoad」と入力します。
このタイトルは、式の結果を表示するポップアップで使用される仮想フィールドの表示名です。
- [式] テキスト ボックスに、次のスクリプトを入力します。
//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() に置き換えます。
- [確認] ボタンをクリックしてスクリプトを検証し、式が正しく実行されるようにして [OK] をクリックします。
- 各自で 2 つ目の式を作成し、[LoadHistory] テーブルから選択したサービス フィーチャについて、[Peak Load (kW)] の最小設定値をレポートします。
ヒント:
min() 関数の使用を検討してください。
次に、選択したサービスの編集回数を知らせる式を追加します。
- [新規] をクリックして [式の設定] ウィンドウを開きます。
最初に作成する式は、[LoadHistory] テーブルで選択したサービス フィーチャの最大 [Peak Load (kW)] 値をレポートするために使用します。
- [式の設定] ウィンドウで、次のパラメーターに値を入力します。
- [名前] に「Count」と入力します。
- [タイトル] に「#Updates」と入力します。
- [式] テキスト ボックスに、次のスクリプトを入力します。
//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>"
完了したら、[式の設定] の設定を確認します。
- [確認] ボタンをクリックしてスクリプトを検証し、式が正しく実行されるようにして [OK] をクリックします。
- [ポップアップの構成] ウィンドウで式を確認します。
注意:
[MinLoad] 式を作成していない場合は、リストが異なることがあります。
- 選択したサービス フィーチャの [Peak Load (kW)] の平均値を計算する式を各自で作成します。
コードの最終行で、 return "<b>" + max (rows, "peakload") + "</b>" を使用し、max を average に置き換えます。
- プロジェクトを保存します。
ポップアップ式を構成したら、期待通りの結果が生成されてポップアップ ウィンドウに正しく表示されるかどうかを確認します。
- [マップ] タブの [ナビゲーション] グループで、[ブックマーク] をクリックして [Test Attribute Rule] をクリックします。
マップ範囲は、最初の低電圧サービス ポイントの位置に合わせて更新されます。
- [マップ] タブの [ナビゲーション] グループで、[マップ操作] ツールをクリックして、[Global ID] 値が {306A7664-7DDE-46EB-B415-A75F19658095} の低電圧サービス ポイントをマップ上で選択します。
選択した低電圧サービスの [ポップアップ] ウィンドウが表示されます。
- [ポップアップ] ウィンドウで式フィールドを確認します。
ポップアップを確認し、[LoadHistory] テーブルから取得された値に [MaxLoad]、[MinLoad]、および [#Updates] 式フィールドが関連付けられている点に注目してください。 例には、選択したフィーチャの平均ピーク負荷値を計算する追加の式が含まれています。
注意:
上記で使用したスキルを使用して、ポップアップで返された値から太字の書式を解除するか、表示色を赤に変更して、値が特定の数値を超えた場合にさらに目立つようにすることができます。 このためには、式で if-else ロジックと <font color> タグを使用します。
このチュートリアルでは、データ整合性を維持し、ピーク負荷値にスパイクが生じた場合にエラーを表示する制約属性ルールを作成しました。 ここでは、格納属性ルールをドメイン、サブタイプ、条件値と一緒に使用して、ジオデータベース フィーチャクラスのデータ整合性を維持する方法の例を示しました。
次に、テーブルを作成し、サービス ポイントのピーク負荷の変化を検出して、新しいテーブルにこの変化とフィーチャの GUID を記録する計算属性ルールを構成しました。 さらに、これらの属性ルールにより、Arcade を使用した一連のポップアップ式を作成して、ピーク負荷履歴を含むテーブルから情報を取得し、ArcGIS Pro でポップアップを使用してこの情報を提示しました。
このチュートリアルでは、ジオデータベースでさらに工夫した属性ルールの作成を開始するための構成要素を学習しました。
他のチュートリアルについては、チュートリアル ギャラリーをご覧ください。