データ収集中の品質の確保
作成する最初の 2 つの属性ルールでは、データの収集時にデータ整合性を適用します。 どのテスト フィールドも NULL 値のままにならないようにするための制約ルールを作成します。さらに、検査テスト結果を自動生成する即時計算ルールも作成します。 こうすることで、モバイル作業者が手動でテスト結果を計算しなくても済むようにします。 これら 2 つの属性ルールによって時間が節約され、エラーが防止されます。
属性ルール用の街灯データの準備
まずは街灯データとその属性を確認します。 すべての属性ルールで必須となっている、[Global ID] がフィーチャクラスで有効になっていることを確認します。また、一部の属性ルールで必須となっている、[編集情報の記録] が有効になっていることも確認します。
- WhiteRockCity プロジェクト パッケージをダウンロードします。
WhiteRockCity.ppkx という名前のファイルが、コンピューターにダウンロードされます。
注意:
.ppkx ファイルは、ArcGIS Pro プロジェクト パッケージです。これには、ArcGIS Pro で開くことができるマップ、データ、その他のファイルが含まれます。 .ppkx ファイルの管理の詳細については、このガイドをご参照ください。
- コンピューター上で、ダウンロードしたファイルを選択し、[WhiteRockCity.ppkx] をダブルクリックして ArcGIS Pro で開きます。 サイン インを求められたら、ArcGIS アカウントを使用して、サイン インします。
注意:
ArcGIS Pro へのアクセス権限または組織アカウントがない場合は、ソフトウェア アクセスのオプションをご参照ください。
[White Rock City] のマップがアクティブになった状態でプロジェクトが開きます。 これから作業を行う街灯データがこのマップには含まれています。
注意:
街灯データは White Rock Open Data Portal から取得したものです。
- [コンテンツ] ウィンドウで [Street Lights] レイヤーを右クリックし、[属性テーブル] をクリックします。
属性テーブルが表示されます。
- テーブルを水平方向にスクロールし、[Hammer Test]、[Pole Condition]、[Wiring Condition]、[Panel Condition]、[Inspection Test Results] の各フィールドを確認します。
これらのフィールドを使用して属性ルールの作成と適用を行います。 各テストの値の範囲は 0 ~ 5 です。0 の場合は街灯がテストに不合格であり、5 の場合は状態が非常に良いことを表しています。 [Inspection Test Results] フィールドには 4 つのテスト結果の平均値が記録されます。
- 属性テーブルを閉じます。
属性ルールを作成する前に、フィーチャクラスが正しく構成されていることを確認します。 属性ルールを作成する前に、フィーチャクラスで [Global ID] を有効化する必要があります。
- [カタログ] ウィンドウで [データベース] と [whiterockcity.gdb] を展開します。
- [Street_Lights] フィーチャクラスを右クリックして [管理] をクリックします。
[フィーチャクラス プロパティ] ウィンドウの [管理] タブを開きます。 [Global ID] チェックボックスは最初からオンになっています。
Global ID はすべてのタイプの属性ルールで必須です。 ただし、検証属性ルールとバッチ演算属性ルールではさらに [編集情報の記録] を有効にする必要があります。 このチュートリアルで後から検証ルールを作成する必要があるため、この機能も有効にしておきます。
- [編集情報の記録] チェックボックスをオンにします。
- [OK] をクリックします。
これで、[Street_Lights] フィーチャクラスで属性ルールを受け入れられるようになりました。
制約ルールの作成
次に、新たに作成するすべてのフィーチャで [Hammer test]、[Panel condition]、[Wiring condition]、[Pole condition] の各フィールドに値が入力されるようにします。 街灯の全体的な状態を判断するためにこれらの値が使用されるため、どのフィールドも NULL 値のままにならないようにすることが重要です。 制約属性ルールを作成してデータ編集時にそれを適用します。
属性条件が満たされていることを確認するために制約属性ルールが使用されます。 条件が満たされていない場合はエラー メッセージが返されます。 編集プロセス中、新規フィーチャを追加する際、既存フィーチャを更新または削除する際にルールが即座に評価されます。
- [コンテンツ] ウィンドウで [Street Lights] レイヤーを右クリックし、[データ設計] にカーソルを合わせて [属性ルール] をクリックします。
[属性ルール] ビューが表示されます。 [計算]、[制約]、[検証] の 3 つのルール タイプがビューの上部に一覧表示されます。
- [制約] タブをクリックしてから [ルールの追加] をクリックします。
テーブルと [新しいルール] ウィンドウが表示されます。
- [新しいルール] ウィンドウの [ルール名] に「Null 値のチェック」と入力します。
- [説明] に「Hammer Test, Pole Condition, Wiring Condition, または Panel Condition フィールドが null の場合、フィーチャを返します。」と入力します。
次に、ルールを定義する式を作成します。
- [式] ボタンをクリックします。
[式の設定] ウィンドウが開きます。 [言語] は [Arcade] に設定されています。 [IsEmpty()] 関数と [if] ステートメントを使用して、対象フィールドの値が null かどうかをチェックする Arcade 式を作成します。
- 以下をコピーして [式] ボックスに貼り付けします。
// Check if the values in the Hammer Test, Pole Condition, Wiring Condition, or Panel Condition fields are null (empty). if (IsEmpty($feature.HammerTest) || isEmpty($feature.PoleCond) || isEmpty($feature.WiringCond) || isEmpty($feature.PanelCond)) // If any of the fields above are null, return false. return false // Otherwise, return true. return true
この式の意味は次のとおりです: Hammer Test 、Pole Condition、Wiring Condition、Panel Condition のいずれかのフィールドが null の場合は false が返される。 これ以外の場合 (すべてのフィールドに値が適切に入力されている) は true が返されます。
注意:
Arcade 関数の詳細については、Arcade 関数リファレンス ページをご参照ください。
- [OK] をクリックします。
式は [NULL 値のチェック] ウィンドウに表示されます。 次に、ルールが評価されるタイミングを決定するトリガーを選択します。 続いて、ルールの違反が発生した場合に表示されるエラーの番号とメッセージを定義します。
- [トリガー] で [挿入] と [更新] のチェックボックスをオンにします。
- [エラー番号] に「101」と入力します。
- [エラー メッセージ] に「空のフィールド: Hammer Test、Pole Condition、Wiring Condition、Panel Condition フィールドにテスト結果を入力してください。」と入力します。
新しいフィーチャが作成されるか、既存のフィーチャが更新されるとルールが自動的に評価されます。
- リボン上の [属性ルール] タブにある [属性ルール] グループで、[保存] をクリックします。
1 つ目の属性ルールが作成され、[Street Lights] レイヤーで次回フィーチャが作成または編集された時から適用されるようになります。
即時計算ルールの作成
次に、[Inspection Test Results] フィールドを計算する即時計算ルールを作成します。 計算属性ルールを使用すると、属性値が自動的に取り込まれます。 新しいルールでは、[Inspection Test Results] フィールドに取り込む、4 つの検査フィールドの平均値を計算します。
- [属性ルール] ビューの上部にある [計算] タブをクリックします。
2 種類の計算ルールがあります。 即時計算ルールでは、編集プロセス中にすぐに評価が実行されます。 バッチ計算ルールでは、指定した日時に評価が実行されます。 このプロジェクトでは、新たに作成された街灯の品質を記録するため、新しいフィーチャが作成されるたびに評価する即時計算ルールを作成します。
- [ルールの追加] ボタンの矢印をクリックして [即時の計算ルールの追加] をクリックします。
- [新しいルール] ウィンドウの [ルール名] に「最終検査テストの結果を計算」と入力します。
- [説明] に「Hammer Test, Pole Condition, Wiring Condition, and Panel Condition の値の平均を計算し、検査テスト結果の全体を決定します。」と入力します。
次に、計算結果を入力するフィールドを指定します。
- [フィールド] で [Inspection_Results] を選択します。
次に、ルールを定義する Arcade 式を作成します。 [Mean()] 関数を使用してすべてのテスト結果の平均値を計算します。
- [式] ボタンをクリックします。
- [式の設定] ウィンドウの [式] ボックスで、次のデータをコピーして貼り付けます。
// Return the mean of four test values Mean($feature.HammerTest,$feature.WiringCond,$feature.PanelCond,$feature.PoleCond)
- [OK] をクリックします。
- [トリガー] で [挿入] と [更新] のチェックボックスをオンにします。
- リボン上の [属性ルール] タブにある [属性ルール] グループで、[保存] をクリックします。
ここまでの段階で、2 つの属性ルールを作成しました。 4 つのテスト フィールドが null にならないようにする制約ルールを作成しました。また、[Inspection Test] フィールドに値を自動入力する即時計算ルールも作成しました。 次のパートでは、2 つの新しい属性ルールで編集エクスペリエンスをテストします。
属性ルールをテストするフィーチャの作成
制約属性ルールと即時計算属性ルールを作成したら、編集エクスペリエンスをテストします。 ルールを使用したデータ収集を他の人にお願いする前に、ルールが想定通りに動作することを確認する必要があります。 街灯フィーチャを作成して編集エクスペリエンスをテストします。
- [属性ルール] ビューの上で、[White Rock City Map] タブをクリックしてマップ ビューに戻ります。
- リボンの [編集] タブをクリックします。 [フィーチャ] グループの [作成] をクリックします。
作成する街灯フィーチャはモバイル作業者が過去に収集した情報をベースにします。 次のプロパティがあります。
- Bulb type—LED Rope
- Location—Intersection of Columbia Ave and Centre St.
- Hammer Test—3
- Pole Condition—2
- Wiring Condition—5
- Panel Condition—5
- [フィーチャ作成] ウィンドウで [LED Rope] テンプレートをクリックします。
- マップ上で拡大して、Columbia Ave と Centre St の交差点付近をクリックします。
注意:
該当する場所を見つけられない場合は、別の交差点を選択してください。
新しいフィーチャはマップに表示されません。 制約属性ルールに違反しているため、フィーチャが作成されなかったことを知らせるエラー メッセージが代わりに [フィーチャ作成] ウィンドウに表示されます。 このメッセージはルールの作成時に入力したものです。
テスト結果を test フィールドに入力する必要があるとメッセージには記載されています。 ルールに従うことでフィーチャを作成できます。
- [LED Rope] テンプレートで矢印ボタンをクリックします。
- [Hammer Test] に「3」と入力します。 [Pole Condition] に「2」と入力します。 [Wiring Condition] に「5」と入力します。 [Panel Condition] に「5」と入力します。
- マップを再度クリックしてフィーチャを配置します。
新しい街灯フィーチャが正常に作成されました。 [フィーチャ作成] ウィンドウにはエラー メッセージの代わりに完了メッセージが表示されます。
マップでは、ポイント フィーチャが選択されているため、想定される紫ではなく青で表示されます。 選択を解除しないでください。
- リボン上の [編集] タブにある [編集の管理] グループで、[保存] をクリックします。
- [編集の保存] ウィンドウで、[はい] をクリックします。
制約属性ルールによって、有効なテスト値がない新しい街灯フィーチャの作成が正常に防止されました。
- [フィーチャ作成] ウィンドウを閉じます。
次に、計算ルールをテストします。 適切に動作する場合は、4 つのテスト値の平均値が [Inspection Test Results] フィールドに自動入力されます。
- リボンの [編集] タブの [選択] グループで、[属性] をクリックします。
[属性] ウィンドウが表示されます。
注意:
Columbia Ave と Centre St の街灯フィーチャが選択されていることを確認してください。
- [属性] ウィンドウで [Inspection Test Results] フィールドを見つけます。
フィールドは [3.75] に設定されています。 これは、[Hammer Test]、[Pole Condition]、[Wiring Condition]、[Panel Condition] の各フィールドの平均値です。
即時計算属性ルールによって、[Inspection Test Results] フィールドに値が正常に入力されました。
- リボンの [編集] タブの [選択] グループで、[選択解除] をクリックします。
制約ルールによって、重要なフィールドに適切に入力されるまで作成プロセスが停止されることで、新しいデータの品質が向上しました。 即時計算ルールによって、本来であれば手動で計算される [Inspection Test Results] フィールドに値が自動入力されるようになったことで、パフォーマンスと精度が向上しました。 ここまでデータ入力を取り上げたので、次は既存データの品質の評価に注目してみましょう。
検査テストに失敗したフィーチャを見つける
検査テストに合格しなかった街灯フィーチャを特定する検証ルールを作成します。 検証属性ルールは、既存のフィーチャで属性条件が満たされていることを確認するために使用されます。 検証ルールは自動的に実行されるのではなく、[エラー インスペクター] ビューでユーザーが評価します。 ルールに違反している場合は、確認のためにエラー フィーチャが作成されます。
検証ルールの作成
検査に合格しなかった街灯を特定する検証属性ルールを作成します。 プロジェクト要件では、[Inspection Test Results] の値が 2 未満の場合に検査テストに合格しなかったと見なされます。 街灯の再テスト、修理、交換に必要なリソースを同市で割り当てられるように、検査テストに合格しなかった街灯を把握することが重要です。
- マップの上にある [属性ルール: Street Lights] タブをクリックして [属性ルール] ビューを開きます。
- [検証]、[ルールの追加] の順にクリックします。
- [新しいルール] ウィンドウの [ルール名] に「検査に不合格の light pole フィーチャのチェック」と入力します。
- [説明] に「検査テスト値が 2 未満のフィーチャを返します」と入力します。
- [式] ボタンをクリックします。 [式の設定] ウィンドウの [式] ボックスで、次のデータをコピーして貼り付けます。
if ($feature.Inspection_Results < 2) return false return true
- [OK] をクリックします。
- [エラー番号] に「102」と入力します。
- [エラー メッセージ] に「検査テストの不合格: このフィーチャは検査をパスしませんでした。」と入力します。
- [重要度] で [3] を選択します。
[重要度] プロパティは、エラーを修正する重要度を表しています。 1 に近づくほど重要度が高いと見なされ、5 に近づくほど重要度が低いと見なされます。
- リボン上の [属性ルール] タブにある [属性ルール] グループで、[保存] をクリックします。
- [属性ルール] ビューを閉じます。
- [クイック アクセス ツールバー] で、[保存] をクリックします。
検証ルールの評価
次に、検証ルールをテストします。 制約ルールと即時計算ルールはデータ編集時に評価しました。 ただし、検証ルールは既存のフィーチャに対してオンデマンドで実行されるため、[エラー インスペクター] ビューを使用して、検査に合格しなかった街灯フィーチャを評価します。
- リボンの [編集] タブをクリックします。 [編集の管理] グループで [エラー インスペクター] をクリックします。
[エラー インスペクター] ビューが表示されます。 作業を始める前にエラー レイヤーを作成する必要がある場合にメッセージ (エラー レイヤーを含んでいるマップを選択してください。) が表示されます。 エラー検査プロセスでは、検証属性ルールとバッチ演算属性ルールが評価され、エラー レイヤーで見つかったエラーが保存されます。 [Street Lights] レイヤーのエラー レイヤーを追加します。
- [コンテンツ] ウィンドウで [Street Lights] を右クリックして [エラー レイヤーの追加] をクリックします。
注意:
[エラー レイヤーの追加] オプションが利用できない場合は ArcGIS Pro を閉じてから再度開きます。
[エラー レイヤー] という名前の新しいグループ レイヤーが [コンテンツ] ウィンドウに表示されます。 空のテーブルが [エラー インスペクター] ビューに表示されます。 作成したばかりの [エラー レイヤー] グループ レイヤーに [ソース] が設定されています。
エラーがあるかどうか検証属性ルールを評価する前に、正しいルールとすべてのフィーチャが評価されるようにします。
- [コンテンツ] ウィンドウで [Street Lights] を右クリックして [レイヤーにズーム] をクリックします。
- [エラー インスペクター] ビューのツールバーで、[ルールの評価] の横にある矢印をクリックします。
- [ルール タイプ] で [検証] チェックボックスがオンになっていることを確認します。
このプロジェクトにはバッチ演算属性ルールがないため、[バッチ演算] チェックボックスはオンでもオフでもかまいません。
- [ルールの評価] をクリックします。
2 つのエラー フィーチャがテーブルに表示されます。
スコアが 2 未満で検査に失敗している街灯がエラー フィーチャです。 マップ上では赤い四角形として表示されています。
次に、2 つのエラーに対処します。
エラーの検査と対処
検証ルールによって明らかになった 2 つのエラーを確認して解決します。 1 つのエラーには新しいテスト結果を提供し、もう 1 つのエラーを例外としてマークすることで、後のフォローアップ確認で利用できるようにします。
- [エラー インスペクター] ビューで、1 つ目のエラー フィーチャの行ヘッダーをクリックして選択します。
- 必要に応じて、[属性] ウィンドウを再度開きます。
[属性] ウィンドウでは、[エラー レイヤー: ポイント エラー] レイヤーで 1 つのフィーチャが選択されています。 先ほど入力したエラーの番号とメッセージが [属性] テーブルに表示されています。
後からオフィスの他の人がエラーを確認するため、エラーの原因と修正方法に関する情報を提供することが重要です。
- [エラー インスペクター] ビューのツールバーで [フィーチャ] をクリックします。
[属性] ウィンドウでは、[Street Lights] レイヤーのフィーチャ [161] の新しい選択が表示されます。 これがエラーの原因となっているフィーチャです。
- [属性] ウィンドウで [161] をクリックします。 [属性] テーブルをスクロールして [Inspection Test Results] フィールドを見つけます。
[Inspection Test Results] の値は [1.75] で、合格点である 2 に達していません。 これらのテスト結果から、街灯 161 が検査に合格しなかったことがわかります。 街灯の状態が悪かった理由に関する情報は [Comments] フィールドにありません。
この問題を解決するために、モバイル作業者を派遣して街灯を再検査しました。 配線とパネルのテストに関して、モバイル作業者はより精度の高い新しいテスト結果を持ち帰ってきました。
- [属性] ウィンドウの [Wiring Condition] に「3」と入力します。 [Panel Condition] に「3」と入力します。
このチュートリアルで先ほど作成した即時計算属性ルールはフィーチャの更新時に適用されるため、[Inspection Test Results] フィールドが [2.75] に更新されます。
- [属性] ウィンドウで [適用] をクリックします。
選択を 2 つ目のエラー フィーチャと関連する街灯フィーチャに切り替えます。
- [エラー インスペクター] ビューで 2 行目を選択します。 ビューのツールバーで [フィーチャ] をクリックします。
- [属性] ウィンドウで [774] をクリックします。
[Inspection Test Results] の値は [1.5] であり、検査に合格するには不十分です。
この街灯をチェックできるモバイル作業者がいないため、この街灯の詳細が手に入るまでエラーを例外としてマークしておきます。
- [エラー インスペクター] ビューで、2 行目の行ヘッダーを右クリックして [例外としてマーク] をクリックします。
- ビューのツールバーで [ルールの評価] をクリックします。
検証ルールで不合格と見なされなくなったため、1 つ目のエラー フィーチャは表示されなくなります。 2 つ目のエラー フィーチャは表示されたままです。 例外としてマークされていることを示す、緑色のシンボルが [例外] 列にあります。
このエラー フィーチャは例外としてマークされているため、複数の評価セッションで表示されます。 そのため、街灯の再評価や修理が終わるまでこのフィーチャを追跡できます。
- [エラー インスペクター] ビューと [属性] ウィンドウを閉じます。
- リボンの [編集] タブの [選択] グループで、[選択解除] をクリックします。
- [編集の管理] グループにある [保存] をクリックします。 [編集の保存] ウィンドウで、[はい] をクリックします。
- [クイック アクセス ツールバー] で、[保存] をクリックします。
検証ルールを作成および適用して、検査に合格しなかった 2 つの街灯フィーチャを特定しました。 1 つのフィーチャのテスト結果を修正し、もう 1 つのフィーチャを例外としてマークしました。 検証ルールを使用することで、データの品質を評価してデータの問題を修正できました。
このチュートリアルでは、3 つの属性ルールを作成およびテストして、ホワイト ロック市の街灯データの品質を向上させました。 新たに作成されるすべてのフィーチャで 4 つのテスト フィールドにテスト結果の値が適切に入力されるようにする制約ルールを作成しました。 [Inspection Test Results] フィールドに 4 つのテスト結果の平均値を自動入力する即時計算ルールを作成しました。 最後に、検査に合格しなかった街灯を特定する検証ルールを作成しました。 あなたの努力のおかげで [Street Lights] レイヤーの品質が向上しました。その結果、ホワイト ロック市に設置されている街灯の品質も向上することでしょう。
他のチュートリアルについては、チュートリアル ギャラリーをご覧ください。