ArcGIS には属性データの品質を維持するのに役立つツールが用意されています。ジオデータベースの属性ドメイン、サブタイプ、デフォルト値、リレーションシップ クラス、整合チェック機能は、フィーチャ属性にとって現実的な値をデータベースで維持するのに役立ちます。
属性ドメインの使用
属性ドメインは、フィールド タイプで許容可能な値を説明するルールであり、テーブル、フィーチャクラス、またはサブタイプの特定の属性に許可される値を制約するために使用されます。各フィーチャクラスまたはテーブルは、さまざまな属性に適用する一連の属性ドメインを持つことができます。属性ドメインは、ジオデータベースのさまざまなフィーチャクラスやテーブルで共有することができます。フィーチャクラスがサブタイプを持つ場合、各サブタイプは特定の属性に関連付けられた別のドメインを持つことができます。たとえば、給水主管フィーチャクラスと給水管フィーチャクラスでは、地面タイプ フィールドに対して同じドメインを使用することができます。
コード値ドメインを持つフィールドを編集する際には、すべてのドメイン値からなるドロップダウン リストが表示されます。たとえば、水道網データベースに、導水管を格納するフィーチャクラスがあるとします。コード値ドメインは、導水管の直径の種類が 10、24、30 インチしかないことを定義します。
範囲ドメインは、数値属性の有効な値の範囲を指定します。たとえば、給水管のサブタイプとして、導水管、配水管、補助管の 3 つがあるとします。これらのサブタイプは、それぞれ異なる有効な水圧範囲を持つことができます。配水管の水圧が 50 ~ 75psi であるとします。配水管オブジェクトが有効であるためには、その水圧範囲が 50 ~ 75psi でなければなりません。この値の範囲は、範囲ドメインで指定します。
コード値ドメインのフィールドを編集するときは、ドメイン値のリストから選択することしかできないので、フィールドに有効な値を確実に指定できます。範囲ドメインのフィールドを編集するときは、値を入力したあと属性が有効か確認して、入力した値が範囲内か確認する必要があります。
フィーチャの分割およびマージ後の属性ドメイン
データの編集時に、1 つのフィーチャを 2 つのフィーチャに分割したり、複数のフィーチャを 1 つのフィーチャにマージすることがよくあります。たとえば、区画整理の結果、土地のデータベースに格納されている 1 つのパーセルが 2 つのパーセルに分割されることがあります。同様の区画整理によって、隣接する 2 つのパーセルが 1 つのパーセルにマージされることもあります。
フィーチャが分割されたときの属性値は、スプリット ポリシーによって制御されます。2 つのフィーチャがマージされたときの属性値は、マージ ポリシーによって制御されます。各属性ドメインには、スプリット ポリシーとマージ ポリシーの両方を定義できます。フィーチャが分割またはマージされる際、ArcGIS はこれらのポリシーを調べて、最終的なフィーチャの属性値を決定します。
サブタイプの編集
サブタイプは、ジオデータベースのフィーチャクラスまたはテーブル内での分類です。これにより、データの一意な特性や振舞いに基づいて、フィーチャを論理的にグループ化することができます。この特性や振舞いは、テーブルの 1 つのフィールドの値によって表されます。たとえば、水文学のテーブルの場合は、河口、支流、水道 (澪)、運河、河川などの水路の種類に基づいて、サブタイプを定義することができます。これらのサブタイプごとに、異なるトポロジ ルール、接続性ルール、デフォルト値、リレーションシップ ルールを適用することができます。
サブタイプはコード値として実装され、サブタイプ内のフィーチャは各整数値で表されます。たとえば、水道網データベースに、配水管網の継手のフィーチャクラスがあるとします。この場合は、継手のタイプごとに異なるフィーチャクラスを作成するのではなく、口金、継手、栓、ティーなどのサブタイプを持つフィーチャクラスを 1 つ作成することができます。そして、これらのサブタイプごとに、独自のデフォルト値とドメインを定義することができます。
デフォルト属性値
フィーチャ テンプレートを使用すると、テンプレートを使用して作成した新しいフィーチャにデフォルト属性値を割り当てることができます。フィーチャ テンプレートを作成すると、ジオデータベースで指定されたデフォルト値が使用されます。フィーチャクラスがジオデータベースのデフォルト値を持つ場合、フィーチャ テンプレートのデフォルト値として自動的に設定されます。たとえば、導水管の作業をしていて、作成する導水管の大半が 24 インチである場合は、DIAMETER フィールドのデフォルト値を 24 インチに設定できます。このようにすると、作成する新しいフィーチャの DIAMETER 属性は 24 インチになります。しかし、フィーチャ テンプレートのフィールド値がジオデータベースのデフォルト値とは異なり、ジオデータベースのデフォルト値より優先されることもあります。
既存のフィーチャの編集時にも、ジオデータベースのデフォルト値を使用して、デフォルト属性値を割り当てることができます。たとえば、ライン フィーチャを分割すると、分割フィーチャにジオデータベースのデフォルト値が設定されます。
リレーションシップ クラス
ジオデータベースのフィーチャクラスやテーブルの間にリレーションシップ クラスが存在する場合は、ArcMap の編集ツールで、このリレーションシップを利用することができます。ArcMap の編集ツールを使用する際には、特定のオブジェクトに関連するオブジェクトをすべて検索し、それらを編集することができます。たとえば、あるパーセルを選択して、その所有者を検索すると、所有者の属性を編集することができ、所有者を格納するテーブルを ArcMap セッションに追加する必要もありません。
また、ArcMap の編集ツールを使用して、オブジェクト間に新しいリレーションシップを確立したり、オブジェクト間の既存のリレーションシップを解消したりできます。たとえば、パーセルの所有者が変更された場合には、パーセルと元の所有者とのリレーションシップを削除して、新しい所有者との間に新しいリレーションシップを確立することができます。
リレーションシップは、フィーチャリンク アノテーションでも使用されます。フィーチャとリンクされたアノテーションの間には、コンポジット リレーションシップが確立されます。このため、フィーチャを編集すると、リンクされたアノテーションに影響を与えます。関連元フィーチャを移動または回転すると、リンクされているアノテーションも一緒に移動または回転します。ジオデータベースから関連元フィーチャを削除すると、リンクされているアノテーション フィーチャも削除されます。アノテーション テキストの基になっているフィーチャの属性を変更した場合も、アノテーションは更新されます。新しいフィーチャを作成すると、新しいアノテーションが自動的に作成されます。
フィーチャの整合チェック
属性を編集した後は、編集結果の整合チェックを実行します。[エディタ] メニューの [フィーチャの整合チェック] コマンドは、有効なサブタイプとドメインに加えて、他の整合性ルール(ジオメトリック ネットワーク、リレーションシップなど)をオンにします。無効なフィーチャがある場合は、必要に応じて修正することができます。
ジオデータベースではトポロジの他に、属性整合性ルール、ネットワーク接続性ルール、リレーションシップ ルールという 3 種類の整合性ルールをサポートしています。ここで重要となるのは、これらの整合性ルールに違反することが可能であり、場合によっては、ジオデータベースに不整合なオブジェクトが格納されることです。
たとえば、属性ルールによって上水道網の配水管の有効な水圧の範囲を 50 ~ 75psi と規定した場合、この範囲外の値をジオデータベースにも格納することは可能です。ただし、指定範囲外の水圧値を持つ配水管は、ジオデータベース内で不整合なオブジェクトと見なされます。ArcMap には、不整合なフィーチャを識別し、これらを修正するための編集ツールが多数あります。
エッジ-エッジ接続性ルール、エッジ-ジャンクション接続性ルール、およびコード値属性ルールは例外です。これらのルールと関連付けられたフィーチャを編集する際には、ArcMap が主導的に処理を行います。
フィーチャの整合性の確認において重要となるのは、整合チェックのプロセスによって、有効なフィーチャに無効なフラグが付くこと(誤った否定)がないようにすることです。ただし、無効なフィーチャが有効として報告されること(誤った肯定)は許容されます。ジオデータベースが整合性を強制しない場合は、すべてのフィーチャが有効になります。特定のフィーチャの整合性を確認する場合は、次の 5 つの手順で実行されます。
- サブタイプの整合性を確認します。
- 属性ルールの整合性を確認します。
- ネットワーク接続性ルールの整合性を確認します(ネットワーク フィーチャの場合)。
- リレーションシップ ルールの整合性を確認します。
- ユーザ定義による整合チェックを実行します(オプションのクラス エクステンションを使用)。
この方法では、最もコストのかからない整合チェックが最初に実行されます。整合チェックのプロセスは、フィーチャが不整合であることがわかった時点で停止します。したがって、たとえば、チェック 1 でフィーチャの整合テストが不合格になると、チェック 2、3、4、5 は実行されません。
接続性ルールとリレーションシップ ルールのチェックでは、関連するルールがすべて有効でなければなりません。ネットワーク接続性ルールでは、ルールを 1 つ指定したら、その他のルールもすべて指定する必要があります。このため、関連する接続性ルールを持たないある種の接続性が存在する場合、そのネットワーク フィーチャは不整合と見なされます。