Standard または Advancedのライセンスで利用可能。
名前付きバージョンが親バージョンとリコンサイルされたときに、競合が検出されることがあります。 リコンサイル処理中に競合が検出された場合は、最初に編集バージョンを優先して解決されます。それらの競合は競合ビューで確認できます。
競合は次のような場合に発生します。
- 現在の編集バージョンとターゲット バージョンの両方で同じフィーチャが更新された場合
- あるバージョンで更新されたフィーチャが、別のバージョンで削除された場合
- トポロジ的に関連するフィーチャまたはリレーションシップ クラスが現在の編集バージョンとターゲット バージョンの両方で変更された場合
競合ビューには、すべての競合クラスと競合しているフィーチャまたは行が表示されます。このビューでは次のことを実行できます。
- 競合しているフィールドまたは行の特定
- 競合の表示
- 競合を確認済みまたは未確認としてマーク
- フィーチャまたは属性を置換するために使用するバージョンの状態を指定することによる競合の解決
リコンサイルを終了し、競合を確認した後は、ターゲット バージョンに変更内容をポストして、マージ処理を完了できます。
競合ビューを開く
競合ビューを開くには、次の手順を実行します。
- [コンテンツ] ウィンドウで [データ ソース別にリスト] ボタン をクリックします。
- 名前付きバージョンに接続していることを確認します。 バージョンを変更するには、エンタープライズ ジオデータベース データ ソース を右クリックし、[バージョンの管理] をクリックします。
- [バージョニング] タブの [リコンサイル] ボタン をクリックして、リコンサイル処理を完了します。 リコンサイル中に競合が検出された場合は、競合を確認するかどうか尋ねるメッセージが表示されます。 [はい] をクリックすると、競合ビューが開きます。
競合ビューは、アプリの任意の位置にドッキングしたり、フローティング ウィンドウとして配置したりできます。 これにより、マップ ビューを操作しながら、コンテキストを提供し、詳細にデータを確認できます。
競合ビューの使用
競合ビューには、競合しているすべてのクラスとそれらのフィーチャまたは行が表示されます。 競合は、データソース、クラス、競合カテゴリ、および ObjectID を使って整理されます。 プロジェクトに含まれるすべてのマップのワークスペースが競合ビューにリスト表示されます。 競合クラスは、ジオデータベース全体の競合におけるクラスを表します。
競合ビューは、競合を処理するための 3 つの主要なセクションで構成されます。 競合リストには、競合クラスおよび競合しているフィーチャがすべて含まれます。 情報グリッドには、競合リストから選択された競合フィーチャのすべてのバージョンの状態における属性と値が表示されます。 [競合を表示] ビューアーは、マップ内でジオメトリの編集の異なるバージョンの状態を表示して比較するために使用します。
競合ビューの要素を確認するには、以下の画像と表をご参照ください。
要素 | 説明 |
---|---|
1 | 競合リスト - 競合リスト セクションには、競合クラスおよび競合しているフィーチャがすべて含まれます。 |
2 | 情報グリッド - 情報グリッド セクションには、競合しているフィーチャのすべてのバージョンの状態における属性と値が表示されます。 |
3 | [競合を表示] ビューアー - [競合を表示] ボタンをクリックすると、競合ビューの下部に競合表示ビューアー セクションが開きます。 このセクションでは、競合をマップ上に表示されるとおりに表示できます。また、ビューアー内でのフィーチャのナビゲートや個別属性表示も可能です。 |
4 | [確認済みの競合のフィルター処理] - 競合リストの上部にあるこのチェックボックスをオンにすると、リストをフィルター処理して、確認されていない競合のみを表示できます。 |
5 | 赤色のインジケーター - 行の左に表示される赤色のインジケーターは競合を表しています。 たとえば、フィーチャのジオメトリが各バージョンで編集された場合、Shape フィールドの横に赤色のインジケーターが表示されます。
|
6 | [すべて表示] - すべてのフィールドを表示できます。 |
7 | [競合の表示] - 競合しているフィールドのみを表示できます。 |
8 | [サービス レイヤーの著作権情報を表示] - このボタンをクリックすると、ベースマップのプロバイダーとメーカーの一覧を示すダイアログ ボックスが開きます。 |
9 | [競合を表示] ナビゲーション ツール - 次に示すツールを使用すると、表示されたバージョンをナビゲートおよび制御したり、競合表示ウィンドウ内を移動したりできます。
|
競合リスト
競合ビューの左上にある競合リストには、すべての競合クラスおよび競合フィーチャが表示されます。
各フィーチャの競合を表示するには、オブジェクトのドロップダウン矢印 をクリックします。 これらは、以下のカテゴリに分けられます。
- [更新-削除] - フィーチャは現在のバージョンでは更新済みで、ターゲット バージョンでは削除済みです。
- [削除-更新] - フィーチャは現在のバージョンでは削除済みで、ターゲット バージョンでは更新済みです。
- [更新-更新] - フィーチャは現在のバージョンとターゲット バージョンの両方で更新済みです。
競合リストで個々のフィーチャの ObjectID を選択すると、競合ビューの右側の情報グリッドに、フィーチャの現在のバージョン、リコンサイル前バージョン、ターゲット バージョン、共通の上位バージョンのフィールドと属性が表示されます。
ヒント:
確認されていない競合は太字で表示されます。 確認されると、競合が太字で表示されなくなります。
情報グリッド
情報グリッドでは、選択したフィーチャの各種のバージョンの状態における属性値を表示できます。 競合しているフィーチャのバージョンまたは編集セッションにおける属性と値を表示すると、属性値がバージョン間でどのように異なっているかを確認することができ、保存する値を決定するのに役立ちます。 すべてのフィールドが情報グリッドに表示され、属性が競合している場合は、その行の左に赤色のインジケーターが表示されます。
次に示す列には、フィーチャの各種のバージョンの状態における属性値が表示されます。
- [現在] - 名前付きバージョンのフィーチャおよび属性の現在の状態を表します。 ここにはユーザーが行ったすべての変更が含まれます。
- [リコンサイル前] - フィーチャがリコンサイル前のバージョンでどのように表示されるかを表します。
- [ターゲット] - ターゲット バージョンのフィーチャとその属性を表します。
- [共通の上位バージョン] - バージョンが最初に作成された時点、または最後にリコンサイル操作が行われた時点のフィーチャおよび属性を表します。
いずれかのバージョンでフィーチャが削除されている場合は、そのバージョンの属性値に <Deleted> が表示されます。 フィーチャが名前付きバージョンに挿入され、競合が発生すると、[ターゲット] 列および [共通の上位バージョン] 列に Did not exist が表示されます。
ヒント:
競合ビュー内の情報グリッドにはすべてのフィールドが表示されますが、フィールド レベルの競合フィルターが適用されたフィールドは競合とは認識されず、赤色のインジケーターは表示されません。
競合を表示
[競合を表示] ボタンをクリックすると、競合ビューの下部に競合表示ビューアー セクションが開きます。 競合表示ビューアーでは、競合をマップ上に表示されるとおりに表示できます。また、ビューアー内でのフィーチャのナビゲートや個別属性表示も可能です。 表示される競合は、競合リストで選択されている個々のフィーチャの ObjectID に基づきます。
[競合を表示] ビューアーの下部には競合表示ナビゲーション ツールがあります。 これらのツールに含まれる 2 つのドロップダウン メニューを使用すると、比較対象のバージョンを変更できます。バージョンのオプションには、[現在]、[リコンサイル前]、[ターゲット]、[共通の上位バージョン] があります。
[競合を表示] の内容は、アクティブなマップに競合クラスがあるかどうかに応じて異なります。
- アクティブなマップに競合クラスがある場合は、すべてのマップ レイヤー、マップ シンボル、ベースマップが表示されます。
- アクティブなマップに競合クラスがない場合は、競合しているレイヤー、デフォルト シンボルが表示されます。ベースマップは表示されません。
競合を確認済みまたは未確認としてマーク
競合しているフィールドまたは行の特定を行った後、フィーチャに確認済みのマークを付けることができます。 確認済みのマークが付いたフィーチャは太字で表示されなくなるため、リストで簡単に見分けることができます。
フィーチャの競合を未確認状態に戻す場合は、[競合] リストの ObjectID を右クリックして、[未確認としてマーク] をクリックします。 これにより、フィーチャが再び太字で表示されます。
ビューの上部にある [確認済みの競合のフィルター処理] チェックボックスをオンにすると、ビューをフィルター処理して、まだ確認されていない競合のみを表示できます。
競合の解決
競合を解決する際に、維持するフィーチャと属性の状態を決定します。 優先してリコンサイルするバージョンとしてターゲット バージョンと自分の編集バージョンのどちらを選択したかにかかわらず、現在のバージョンの状態 (リコンサイルする前のバージョンでの表示)、ターゲット バージョンの状態 (別の編集ユーザーが行った変更を反映した表示)、共通の上位バージョンの状態 (ターゲット バージョンでのフィーチャまたは属性の状態) の中から、維持する状態を指定することができます。
競合ビューで、バージョン、データセット、フィーチャ、または属性を右クリックして、以下のいずれかの置換オプションを選択します。
- リコンサイル前バージョンで置換
- ターゲット バージョンで置換
- 共通の上位バージョンで置換
置換オプションを使用して競合を解決できるさまざまなレベルを以下に示します。
- 属性の置換:
この競合解決は、フィールド レベルで適用されます。 属性に競合がある場合は、現在のバージョンの属性値のみを、現在のバージョン、リコンサイル前バージョン、ターゲット バージョン、または共通の上位バージョンの状態の属性値で置換できます。 これを行うには、競合のある属性を右クリックし、メニューからこのオプションをクリックします。
- フィーチャの置換:
この競合解決は、行レベルで適用されます。 フィーチャ全体を、現在のバージョン、リコンサイル前バージョン、ターゲット バージョン、または共通の上位バージョンのフィーチャの状態で置換できます。 つまり、競合しているすべてのフィールドが置換されます。
- クラス レベルの置換:
フィーチャクラス全体の現在の状態を、現在のバージョン、リコンサイル前バージョン、ターゲット バージョン、または共通の上位バージョンのいずれかの状態で置換し、競合を解決できます。 この方法では、競合しているすべてのフィーチャと属性が一度に置換されるため、競合するフィーチャをすばやく更新して置換することができます。 [競合] リストに複数のフィーチャが存在する場合は、これらのすべてが選択したバージョンで置換されます。
クラス レベルの置換オプションを選択するには、[競合] リストでフィーチャクラスの名前を右クリックし、使用するバージョンをクリックします。
- 完全な置換:
これはルートレベルの置換です。 この置換オプションを使用すると、リスト内の競合しているすべてのフィーチャとフィーチャクラスが指定された状態に置換されます。 複数のフィーチャクラスとオブジェクトに競合がある場合は、これらのすべてが選択したバージョンで置換されます。
[競合] リストの上部にあるバージョンおよび接続情報を右クリックし、バージョンをクリックすると、すべての競合はそのバージョンに置換されます。
- ジオメトリのマージ:
これはフィールド レベルで行われ、Shape 属性のみに関連します。 ジオメトリをマージするオプションは、Shape フィールドに関連する競合があるとき、Shape ショートカット メニューでのみ使用できます。 2 人の編集ユーザーがどちらも同じフィーチャのジオメトリを編集したが、編集したエリアが異なる場合、ジオメトリをマージして両方の編集を適用することによって競合を解決することができます。 ジオメトリをマージすると、最終的なフィーチャには両方の編集ユーザーが行った編集が反映されます。
一方の編集ユーザーによる編集と、他方の編集ユーザーの編集の範囲が同じである場合、編集されたエリアが重なります。 ジオメトリをマージする方法もありますが、マージを試みると失敗し、次のエラー メッセージが表示されます:
ジオメトリのマージ中にエラーが発生しました。 2 つのジオメトリをマージできません。 編集領域が重複しています。
フィールド レベルの競合フィルタリング
トラディショナル バージョニングで作業しているとき、リコンサイル中に競合が検出されると、フィールドまたはフィールド セットに適用されていた編集を残すことが望ましい場合があります。 リコンサイル中にフィールドで検出された競合を除外したい状況の例を以下に示します。
- 複数の異なるバージョンにおいて、あるフィールドに対する一括更新が実行される場合
- バージョン内で実行された編集に基づき、情報がフィールドに書き込まれる場合
親バージョンと子バージョンで同じ属性が更新されたときに競合が識別されないようにするため、[フィールド競合フィルターの追加 (Add Field Conflict Filter)] ツールを使用して、フィールド セットに競合フィルターを定義できます。 フィールド競合フィルターでは、フィーチャクラス内のフィールドまたはフィールド セットを、競合検出からフィルタリングされるものとしてタグ付けできます。 競合フィルターが定義されたフィールドのみが編集された場合は、リコンサイルの操作中、競合は返されません。 これは、属性で競合を定義した場合のみに適用されます。
注意:
競合ビューにはすべてのフィールドが表示されますが、競合フィルターが適用されたフィールドは競合とは認識されず、赤色のインジケーターは表示されません。
リコンサイルが変化した後に、競合フィルターを持つフィールドに設定される値は、ターゲット バージョンと編集バージョンのどちらを優先してリコンサイルしたかによって異なります。 ターゲット バージョンを優先してリコンサイルした場合、競合フィルターを持つフィールドにはターゲット バージョンからの値が含まれます。 編集バージョンを優先してリコンサイルした場合、競合フィルターを持つフィールドには編集バージョンからの値が含まれます。
[フィールド競合フィルターの削除 (Remove Field Conflict Filter)] ツールでは、これらのフィールドから競合フィルターを削除できます。
ListFieldConflictFilters Python 関数を使用して、フィーチャクラスまたはテーブルに競合フィルターがいつ定義されたかを確認できます。
注意:
フィーチャクラスまたはテーブルにフィールド競合フィルターが定義されると、10.2.1 より前のリリースの ArcGIS クライアントはフィーチャクラスまたはテーブルを開くことができなくなります。 以前のリリースの ArcGIS でデータにアクセスする必要がある場合は、フィールドにフィールド競合フィルターを定義し、バージョンのリコンサイルが終了した後でそのフィルターを削除することができます。
属性ルールを使用した競合の解決
属性ルールを使用すると、編集の操作性を強化して、ジオデータベース データセットのデータ整合性を向上させることができます。 即時計算または制限ルールを使用したトラディショナル バージョン対応フィーチャクラスのリコンサイルでは、これらの属性ルールが評価されます。 制限ルールに違反した場合、制限ルール エラーが報告され、リコンサイルは失敗します。 行ごとに競合をリコンサイルすると、制限ルール エラーを回避できます。
リレーションシップ クラスによる競合の解決
リレーションシップ クラスを使用すれば、関連するオブジェクト間の参照整合性を維持するために役立ちます。 バージョン対応データ ソースがリレーションシップ クラスに参加している場合、リコンサイル処理ではこのデータの参照整合性が評価されます。 参照整合性の違反がある場合、参加しているフィーチャが競合としてレポートされ、競合ビューで確認できるようになります。
関連元のリレーションシップ クラスからフィーチャを削除すると、関連先のリレーションシップ クラスからフィーチャを削除するためのメッセージがトリガーされることがあります。 このため、リレーションシップ クラスに属しているフィーチャクラスの競合を置換するという一見単純な操作がもたらす影響に注意しなければなりません。
次に、リレーションシップ クラス間で競合が発生する例を示します。
- 親バージョンで、関連先フィーチャを追加し、それを関連元クラスのフィーチャに関連付けます。
- 子バージョンで、新しい関連先フィーチャに関連付けるために使用された、同じ関連元フィーチャを削除します。
- 編集内容をリコンサイルすると、関連元クラスで削除 - 更新の競合が検出されました。
次のような例もあります。
- 電力フィーチャ データセットで、変圧器へのリレーションシップを持つ電柱を削除した結果、関連する変圧器も削除されます。
- 同時に別の編集セッションが開始され、電柱の削除に伴って削除されたばかりの変圧器の属性を、別の編集ユーザーが変更します。
- 編集内容をリコンサイルすると、関連元クラスと関連先クラスで更新 - 削除の競合が検出されました。
この例では、2 人目の編集ユーザーがすべての競合を編集セッションの状態で置換することにした場合、1 人目の編集ユーザーの編集セッションで削除された電柱と変圧器が再作成されます。