属性ドメインは、フィールド タイプの有効な値を定義するルールであり、データの整合性を維持する方法を提供します。属性ドメインは、テーブルまたはフィーチャクラスの特定の属性に対する許容値を表します。フィーチャクラスのフィーチャまたはテーブルの非空間オブジェクトがサブタイプにグループ化されている場合は、各サブタイプに別の属性ドメインを割り当てることができます。ドメインは、有効な属性値の宣言です。ドメインが属性フィールドに関連付けられた場合、そのフィールドではそのドメイン内の値だけが有効となります。つまり、そのドメインに含まれていない値をフィールドに設定することはできません。ドメインを使用して、特定のフィールドに設定できる値を制限すれば、データの整合性を維持するのに役立ちます。
属性ドメインは、ジオデータベース内の複数のフィーチャクラス、タイプ、サブタイプにわたって共有することができます。
例えば、配水管のフィーチャクラスと給水管のフィーチャクラスで、地表タイプ フィールドに同じドメインを使用することができます。
ドメインのプロパティ
ドメインを作成または変更する際には、次のプロパティを編集する必要があります。
名前と説明
ドメインを新規作成する際には、そのドメインによって制御されるパラメータを表す名前を指定します。
一重引用符(' と ` )、およびアポストロフィ(')はドメインの名前に使用できません。
ドメインが作成されたら、フィーチャクラスまたはテーブルの [プロパティ] ダイアログ ボックスを開きます。特定のフィールドに関連付けるドメインを選択する際、ドメイン ドロップダウン リストにドメイン名が表示されます。ドメインの説明は、ドメインの目的を説明する短い文章です。
フィールド タイプ
フィールド タイプは、ドメインを関連付けることができる属性フィールドの種類です。
フィールド タイプは、次のいずれかに設定できます。
- Short : Short integer
- Long : Long integer
- Float : 単精度浮動小数点数
- Double : 倍精度浮動小数点数
- Text(コード値ドメインのみ) : 英数字
- Date : 日付と時刻のデータ
フィールド タイプを設定すると、[プロパティ] ダイアログにあるそのタイプのフィールドに対するドロップダウン リストに、ドメインの名前が表示されます。
ドメイン タイプ
ドメインを作成する際には、ドメインの種類を指定する必要があります。
属性ドメインには次の 2 種類があります。
- 範囲ドメイン : 範囲ドメインは、数値属性の有効な値の範囲を指定します。範囲ドメインを作成する際には、有効な値の最大値と最小値を入力します。範囲ドメインは、Short integer、Long integer、Float、Double、Dateの属性タイプに適用することができます。
例えば、水道管のフィーチャクラスの場合は、サブタイプとして送水管、配水管、給水管を指定することができます。配水管の水圧が 50 ~ 75psi であるとします。配水管オブジェクトが有効であるためには、水圧の値が 50 ~ 75psi の範囲内の値でなければなりません。範囲ドメインは、[フィーチャの整合チェック] コマンドを使用して整合チェックされます。デフォルト値と属性ドメインによる編集についての詳細
- コード値ドメイン : コード値ドメインは、テキスト、数値、日付など、あらゆる種類の属性に適用することができます。コード値ドメインは、属性に対して一連の有効な値を指定します。
例えば、水道管は、pavement(舗装道路)、gtavel(砂利)、sand(砂)、none(地上に露出)など、GroundSurfaceType 属性フィールドによって指定されるサーフェス下に埋設されます。コード値ドメインには、データベースに格納されている実際の値(例えば、舗装道路は 1)と、その値の意味のわかりやすい説明が含まれています。コード値ドメインの整合チェックは、フィールド値をドロップダウン リストから選択することによって行われます。
スプリット ポリシーとマージ ポリシー
データの編集時に、シングル フィーチャを 2 つのフィーチャに分割したり、2 つのフィーチャをマージしてシングル フィーチャにすることがよくあります。例えば、区画整理の結果、土地のデータベースに格納されている 1 つの土地区画が 2 つの土地区画に分割されることがあります。同様の区画整理によって、隣接する 2 つの土地区画が 1 つの土地区画にマージされることもあります。
フィーチャのジオメトリ上では、この種の編集処理の結果は容易に予測できますが、それらが属性値におよぼす影響は予測できません。フィーチャを分割するときの属性値の振舞いは、属性のスプリット ポリシーによって制御されます。2 つのフィーチャをマージするときの属性値は、属性のマージ ポリシーによって制御されます。
各属性ドメインには、スプリット ポリシーとマージ ポリシーの両方を定義できます。フィーチャが分割またはマージされた場合、ジオデータベースはこれらのポリシーに基づいて、最終的なフィーチャの特定の属性値を決定します。
スプリット ポリシー
テーブル、フィーチャクラス、またはサブタイプの属性については、出力オブジェクトの属性値を制御する 3 つのスプリット ポリシーのいずれかを指定することができます。
- デフォルト値 : 分割後の 2 つのフィーチャの属性には、該当するフィーチャクラスまたはサブタイプの属性のデフォルト値が適用されます。
- 複製 : 分割後の 2 つのフィーチャの属性には、元の属性値のコピーが適用されます。
- ジオメトリ比 : 分割後の 2 つのフィーチャの属性には、元のフィーチャの値の比率が適用されます。この比率は、元のジオメトリの分割時に使用した比率に基づいています。ジオメトリを均等に分割した場合、それぞれの新規フィーチャの属性には、元のオブジェクトの属性の 2 分の 1 の値が割り当てられます。ジオメトリ比ポリシーは、数値フィールド タイプに対応するドメインにのみ適用されます。
上記の土地区画の例では、土地区画が分割されると、分割後のジオメトリのプロパティとして、Area(面積)属性が自動的に割り当てられます。Owner(所有者)属性の値は、新規オブジェクトにコピーされます(このデータベースの場合、パーセルの分割は所有権に影響しません)。PropertyTax(固定資産税)属性は、土地区画の面積とサイズに基づいて計算されます。新規オブジェクトごとに PropertyTax 属性値を検索するために、スプリット ポリシーは新規フィーチャの面積比率に応じて、元の土地区画の PropertyTax 属性値を分割します。
マージ ポリシー
2 つのフィーチャを 1 つのフィーチャにマージする際には、マージ ポリシーが新規フィーチャの属性値を制御します。フィーチャクラスまたはサブタイプの属性に適用できるマージ ポリシーは、次の 3 種類に分かれます。
- デフォルト値 : マージ後のフィーチャの属性には、該当するフィーチャクラスまたはサブタイプの属性のデフォルト値が適用されます。非数値フィールドおよびコード値ドメインには、このマージ ポリシー以外は適用できません。
- 合計値 : マージ後のフィーチャの属性には、元のフィーチャの属性の合計値が適用されます。
- 加重平均 : マージ後のフィーチャの属性には、元のフィーチャの属性値の加重平均値が適用されます。この平均値は、元のフィーチャのジオメトリに基づいています。
上記の土地区画の例では、2 つの土地区画がマージされると、マージ後のジオメトリのプロパティとして、Area(面積)属性が自動的に割り当てられます。Owner(所有者)属性にはデフォルト値が割り当てられます。マージ後のフィーチャの PropertyTax (固定資産税)属性に元のフィーチャの PropertyTax 属性の合計値が適用されていることから、この属性のマージ ポリシーが合計値に指定されていることがわかります。
エディタでフィーチャをマージしている場合には、マージ ポリシーが評価されないことに注意してください。ただし、開発者が独自にマージ処理を作成している場合には、マージ ポリシーを利用することができます。
コード値
コード値セクションは、コード値ドメインでのみ有効となります。このセクションには、ドメインのコード値と、その値の意味に関する説明が含まれています。
次の図では、フィーチャのカテゴリを表すためのコード値として略語が使用されています。この場合は、土地利用のカテゴリが適切な略語で表されます。
入力するコードは該当するフィールド タイプに一致するものでなければなりません。上記の例では、[LandUse] ドメインが [Text] データタイプに関連付けられているため、整数を入力して [Residential] カテゴリを表すことはできません。