演習 3:サブタイプと属性ドメインの作成
データをジオデータベースに保存する利点の 1 つは、データの編集方法に対するルールを定義できることです。このルールを定義するには、給水管の直径の属性ドメインを新規作成し、Laterals フィーチャクラスのサブタイプを作成し、新規ドメイン、既存のドメイン、およびデフォルト値を各サブタイプのフィールドに関連付けます。
属性ドメインとは、フィールド タイプの適正な値を規定するルールです。データベースに格納されている属性ドメインは、複数のフィーチャクラスとテーブルで共有できますが、フィーチャクラスまたはテーブルのすべてのオブジェクトで同じ属性ドメインを共有する必要はありません。
たとえば、水道管ネットワークで給水栓給水管は 40 ~ 100psi の範囲の圧力に対応し、一般給水管は 50 ~ 75psi の範囲の圧力に対応するとします。属性ドメインを使用すると、このような範囲制限を設定できます。このような種類の整合性ルールを実装する場合、給水栓給水管と一般給水管にそれぞれ別々のフィーチャクラスを作成する必要はありませんが、別々のドメインおよびデフォルト値の設定を使用してそれぞれの給水管施設のタイプを区別したい場合にはサブタイプを使用します。サブタイプを使用することで、この設定を行うことができます。
サブタイプと属性ドメインの詳細については、「サブタイプの概要」および「属性ドメインの概要」をご参照ください。
属性ドメインの作成
ArcCatalog を使用して、新規にコード値属性ドメインを作成します。このドメインでは、新規の Laterals フィーチャクラスの適正パイプ径を規定します。
-
Montgomery ジオデータベースを右クリックし、[プロパティ] をクリックします。
[データベース プロパティ] ダイアログ ボックスが表示されます。
- [ドメイン] タブをクリックします。
- [ドメイン名] の下にある最初の空白フィールドをクリックし、新しいドメインの名前として「LatDiameter」と入力します。
- [説明] フィールドに、「給水管の有効な直径」と入力します。
-
[ドメイン プロパティ] で、[フィールド タイプ] 用ドロップダウンをクリックして、[Float] をクリックします。
ドメインを適用できる列に対して、データ タイプが定義されます。
- [コード値:] の [コード] 列で、最初の空フィールドをクリックして、「13」と入力します。
- [説明] フィールドをクリックし、コードの説明として「13"」を入力します。
-
次のコード値をリストに追加します。
コード
説明
10
10"
8
8"
6
6"
4
4"
3
3"
2.25
2 1/4"
2
2"
1.5
1 1/2"
1.25
1 1/4"
1
1
0.75
3/4"
-9
不明
-
[OK] をクリックして [データベース プロパティ] ダイアログ ボックスを閉じます。
このドメインがジオデータベースに追加されました。
次に、ドメインのプロパティを指定しましょう。代表的なプロパティとしては、このドメインに関連付けるフィールドのタイプ、ドメインの種類(範囲またはコード値)、スプリットとマージ ポリシー、ドメインの適正値などがあります。
範囲ドメインでは数値の適正範囲を指定し、コード値ドメインでは適正値の組み合わせを指定します。この例では、新規のコード値ドメインの作成方法について説明します。
すべてのドメインには、スプリット ポリシーとマージ ポリシーも含まれます。フィーチャがスプリットまたはマージされる場合、ArcGIS ではこれらのポリシーを参照して、処理後のフィーチャ(1 つまたは複数)がどういう属性値を持つかが決まります。
コード値ドメインの適正値(コード)を入力し、各コードについてわかりやすい説明を入力します。以降のチュートリアルで見ていくように、ArcMap ではコード値ドメインが関連付けられたフィールド値にコードではなくわかりやすい説明を使用します。
サブタイプの作成、およびデフォルト値とドメインの関連付け
これから、Laterals フィーチャクラスのサブタイプを作成し、デフォルト値を各サブタイプのフィールドに関連付けましょう。サブタイプの作成により、必ずしもすべての給水管フィーチャが同じドメイン、デフォルト値、および接続性ルール(後述)を持つ必要がなくなります。
- Montgomery ジオデータベースで、Water フィーチャ データセットをダブルクリックして開きます。
-
laterals フィーチャクラスを右クリックし、[プロパティ] をクリックします。
[フィーチャクラス プロパティ] ダイアログ ボックスが開きます。
- [サブタイプ] タブをクリックします。
- [サブタイプ フィールド] ドロップダウン矢印をクリックし、[TYPECODE] をクリックします。
- [サブタイプ] で [説明] サブタイプ コード 0 の横にあるフィールドをクリックし、その説明として「不明」と入力します。
- [デフォルト値とドメイン] で、[H_CONFID] フィールドの横にある [デフォルト値] フィールドをクリックし、デフォルト値として「0」を入力します。
- [DEPTH_BURI] および [RECORDED_L] の各フィールドに、デフォルト値として「0」を入力します。
- [WNM_TYPE] および [PWTYPE] の各フィールドに、デフォルト値として「WUNKNOWN」を入力します。
- [DIAMETER] フィールドの横にある [デフォルト値] フィールドをクリックし、デフォルト値として「8」を入力します。
-
[DIAMETER] フィールド用の [ドメイン] ドロップダウン リストをクリックし、[LatDiameter] をクリックして、このドメインを「不明」サブタイプ用のデフォルトの属性ドメインとして設定します。
- [MATERIAL] フィールドをクリックし、デフォルト値として「DI」と入力します。
-
[MATERIAL] フィールド用の [ドメイン] ドロップダウン リストで、[Material] をクリックします。
-
次のサブタイプを追加します。
サブタイプ コード
説明
1
給水栓給水管
2
消火栓給水管
3
一般給水管
- 「不明」サブタイプに対して行ったのと同様に、上記の新しい各サブタイプ用の [DEPTH_BURI]、[RECORDED_L]、[DIAMETER] および [MATERIAL] の各フィールドに、デフォルト値とドメインを設定します。
- 給水栓給水管サブタイプに対しては、[WNM_TYPE] および [PWTYPE] フィールドを WHYDLIN に設定します。
- 消火栓給水管サブタイプに対しては、[WNM_TYPE] および [PWTYPE] フィールドのデフォルト値を WFIRELIN に設定します。
- 一般給水管サブタイプに対しては、[WNM_TYPE] および [PWTYPE] フィールドのデフォルト値を WSERVICE に設定します。
-
[デフォルト サブタイプ] ドロップダウン矢印をクリックし、[一般給水管] をクリックして、このサブタイプをデフォルトのサブタイプとして設定できます。
- [OK] をクリックします。
今度は、このフィーチャクラス用のサブタイプフィールドを指定します。サブタイプ フィールドには、特定のフィーチャが属するサブタイプを識別する値が格納されます。
さらに、サブタイプコードとその説明を追加しましょう。
新規のサブタイプを追加する場合は、そのフィールドにデフォルト値とドメインを割り当てます。
ArcMap 編集環境でサブタイプを持つフィーチャクラスに新しいフィーチャを追加する際、特定のサブタイプを指定しないと、新しいフィーチャに既定のサブタイプが割り当てられます。このフィーチャクラス用のサブタイプをすべて追加し終えたら、入力したサブタイプからデフォルトのサブタイプを設定することができます。
この演習では、ドメインを追加しサブタイプを作成して、ジオデータベースに振舞いを追加しました。
次の演習では、リレーションシップを作成して、ジオデータベースにいくつか振舞いを追加しましょう。「演習 4:オブジェクト間のリレーションシップの作成」をご参照ください。