リレーションシップ クラスが作成される際に、スプリット ポリシーがデフォルトで自動的に定義されます。 リレーションシップ クラスのスプリット ポリシーは、編集プロセス中に関連元のフィーチャクラス内のフィーチャを分割する際に、関連先テーブル内のレコードをどう処理するかを決定するために使用されます。
作成されるリレーションシップ クラスのタイプ (シンプルかコンポジット) に応じて、定義できるスプリットポリシー オプションが異なります。
- シンプル リレーションシップ クラス
- コンポジット リレーションシップ クラス。
リレーションシップ クラスにスプリット ポリシーを定義する以外に、ライン フィーチャクラスやポリゴン フィーチャクラスにスプリット モデルを定義することもできます。 フィーチャクラスのスプリット ポリシーは、編集プロセス中にフィーチャクラス内のフィーチャを分割する際に、ジオメトリと属性をどのように分割するかを決定するために使用されます。 デフォルトのフィーチャクラス スプリット モデルは [更新/挿入] です。このモデルでは、分割した後に、元のフィーチャの最大の部分が更新され、新しいフィーチャが分割したパートに挿入されます。 ただし、特別なモデリング要件がある場合、スプリット モデルのパターンを [削除/挿入/挿入] に変更できます。このモデルでは、元のフィーチャが削除され、2 つの新規フィーチャが挿入されます。
このフィーチャクラス プロパティの設定と使用の方法については、「スプリット モデル」をご参照ください。
以下のセクションでは、各スプリット ポリシーのオプションの詳細と、リレーションシップ クラスのスプリット ポリシーでフィーチャクラスのスプリット モデルを使用した場合の結果の例を示します。
デフォルト (シンプル)
シンプル リレーションシップ クラスのデフォルトのスプリット ポリシーでは、分割後に、結果として生成される最大のフィーチャのリレーションシップを保持します。 リレーションシップ クラスで、起点フィーチャクラスがデフォルトのフィーチャクラスのスプリット モデル ([更新/挿入]) を使用する場合、シンプルおよびコンポジット リレーションシップ クラスでは、同じ動作を使用して関連レコードの関連付けを行います。 つまり、分割後は、最大のオブジェクトのリレーションシップ クラスが保持されます。
デフォルト (コンポジット)
コンポジット リレーションシップ クラスのデフォルトのスプリット ポリシーは、起点フィーチャクラスに対して設定されているフィーチャクラスのスプリット モデルによって異なります。 フィーチャクラスのスプリット モデルが [更新/挿入] に設定されている場合、分割後は、結果として生成される最大のフィーチャのリレーションシップが保持されます。 フィーチャクラスのスプリット モデルが [削除/挿入/挿入] に設定されている場合、フィーチャが起点フィーチャクラスで分割されると、元のフィーチャと分割されたパート、および互いのリレーションシップが削除されます。
関連オブジェクトの複製
[関連オブジェクトの複製] オプションでは、関連オブジェクトのコピーが生成され、結果として生成される両方のパートにコピーが割り当てられます。 [関連オブジェクトの複製] がリレーションシップ クラスのスプリット ポリシーとして設定されており、編集処理中に起点フィーチャクラスのフィーチャが分割されると、このフィーチャに元々関連付けられていたレコードは、最大のパートに関連付けられたままになります。 元の関連レコードと同じユーザーセット値を複製し、それぞれの新しいパートに対して新しい関連レコードが作成されます。
リレーションシップ クラスのスプリット ポリシーの設定
次の 2 つの方法のいずれかを使用して、リレーションシップ クラスの関連フィーチャのスプリット ポリシーを定義できます。
- [リレーションシップ クラス プロパティ] - [リレーションシップ クラス プロパティ] ダイアログ ボックスの [一般] タブで、[スプリット ポリシー] まで下にスクロールします。 [スプリット ポリシー] の横にあるセルをクリックして、ドロップダウン メニューを有効化します。 リストからスプリット ポリシーを選択すると、[リレーションシップ クラスのスプリット ポリシーを設定 (Set Relationship Class Split Policy)] ジオプロセシング ツールにデータが入力され、このツールがバックグラウンドで実行されます。
- [リレーションシップ クラスのスプリット ポリシーを設定 (Set Relationship Class Split Policy)] ツール - [リレーションシップ クラスのスプリット ポリシーを設定 (Set Relationship Class Split Policy)] ジオプロセシング ツールを使用して、リレーションシップ クラスのスプリット ポリシーを変更します。
要件
[リレーションシップ クラスのスプリット ポリシーを設定 (Set Relationship Class Split Policy)] ジオプロセシング ツールの使用にあたっては、次の点に注意してください。
- 入力リレーションシップ クラスをエンタープライズ ジオデータベースから取得する場合、このツールを実行するにはデータ所有者である必要があります。
- 起点フィーチャクラスが [削除/挿入/挿入] スプリットモデルを使用するリレーションシップ クラスは、ArcGIS Pro 2.6 または ArcGIS Enterprise 10.8.1 より前のバージョンではサポートされていません。
- スプリット ポリシーが [関連オブジェクトの複製] に設定されているリレーションシップ クラスは、ArcGIS Pro 2.6 または ArcGIS Enterprise 10.8.1 より前のバージョンではサポートされていません。
注意:
[リレーションシップ クラスのスプリット ポリシーを設定 (Set Relationship Class Split Policy)] と [フィーチャクラスのスプリット モデルを設定 (Set Feature Class Split Model)] ジオプロセシング ツールは、フィーチャ サービスのワークスペースでは実行されません。 データを公開する前に、これらの動作を定義します。次に、これらのリレーションシップ クラスのスプリット ポリシーの動作に基づく追加要件を示します。
- デフォルト (シンプル)
- 入力リレーションシップ クラスがシンプル リレーションシップ クラス タイプの場合は、[デフォルト (シンプル)] オプションと [関連オブジェクトの複製] オプションを使用できます。
- シンプル リレーションシップの基数は、1 対 1 (1:1)、1 対多 (1:M)、または多対多 (M:N) です。
- デフォルト (コンポジット)
- 入力リレーションシップ クラスがコンポジット リレーションシップ クラス タイプの場合は、[デフォルト (コンポジット)] オプションと [関連オブジェクトの複製] オプションを使用できます。
- コンポジット リレーションシップは常に 1 対多 (1:M) ですが、リレーションシップ ルールにより 1 対 1 (1:1) に制限することも可能です。
- 関連オブジェクトの複製
- リレーションシップ クラスの基数は、1 対 1 (1:1) または 1 対多 (1:M) です。
注意:
このスプリット ポリシーは、基数が多対多のリレーションシップ クラスでは使用できません。 - 関連元クラスはポリラインまたはポリゴン フィーチャクラスである必要があります。
- 起点フィーチャクラスの主キーを GlobalID フィールドに設定する必要があります。
- 起点フィーチャクラスには、カスタム リレーションシップ スプリット ポリシーが設定されたクラス エクステンションを設定できません。
- 関連先クラスはテーブルなどのオブジェクト クラスで、フィーチャクラスを設定できません。
- 関連先クラスは、関連元主キーが GlobalID 以外のフィールドに設定されている、別の 1 対 1 (1:1) または 1 対多 (1:M) リレーションシップ クラスの関連元クラスではありません。
- 関連先クラスは、別の 1 対 1 (1:1) リレーションシップ クラスの関連先クラスではありません。
- リレーションシップ クラスの基数は、1 対 1 (1:1) または 1 対多 (1:M) です。
ヒント:
コピーと貼り付けか、XML エクスポート オプションを使用すると、リレーションシップ クラスに対して設定されたスプリット ポリシーが保持されます。リレーションシップ クラスのプロパティの確認
[リレーションシップ クラス プロパティ] ダイアログ ボックスで、リレーションシップ クラスに対して定義されたスプリット ポリシーを確認するには、次の手順に従います。
- ArcGIS Pro を起動します。
- [カタログ] ウィンドウの [データベース] フォルダーで、ジオデータベース接続をクリックして展開します。
- リレーションシップ クラスを右クリックし、[プロパティ] をクリックします。