パーセル ファブリックの編集とバージョニング

このトピックは、ArcGIS for Desktop Standard および ArcGIS for Desktop Advanced にのみ該当します。

パーセル ファブリックでは、デフォルト バージョンより 1 つ下のバージョン レベルでの編集がサポートされます。パーセル ファブリックでは、バージョンの子バージョンの編集はサポートされません。

パーセル ファブリックの編集とバージョンの状態

パーセル ファブリックは、ArcSDE ジオデータベースで編集する前に、バージョン対応登録する必要があります。パーセル ファブリックをバージョン対応登録すると、そのパーセル ファブリックを編集するバージョンを作成できます。バージョンは、ジオデータベースのビューのようなもので、そのビューを編集すると、変更がすぐに反映されます。そのバージョンに接続しているユーザは、表示を更新すれば変更結果を見ることができます。ただし、他のバージョンに接続しているユーザは、デフォルト バージョンに対してそのバージョンがポストされるまで変更結果を確認できません。

データセットがバージョン対応レイヤである場合、デルタ テーブルは 2 つ作成されます。1 つは追加内容を記録する A(ADD)テーブル、もう 1 つは削除内容を記録する D(DELETE)テーブルです。データセットでレコードを更新または削除するたびに、これらのテーブルのどちらかまたは両方に行が追加され、バージョンの新しい状態が作成されます。したがってバージョン対応のデータセットは、元のテーブル(ベース テーブルと呼ばれます)と、差分テーブル内の変更内容で構成されます。

バージョニングの詳細

パーセルを編集する場合、各編集操作はジョブ XML ストリームに対して行われます。編集セッションを保存すると、XML ストリームがパーセル ファブリックに対して 1 つの編集内容としてポストされ、バージョンの新しい状態が作成されます。

パーセル ファブリックのバージョンと編集ロック

ファブリックのパーセルの編集時、パーセルは編集ロックされます。パーセルが編集ロックされると、編集ロックが解除されるまで、同じバージョンまたは別のバージョンでそのパーセルを開くことはできません。ただし、ロックされたパーセルの属性テーブルでは、パーセル、ライン、ポイント、制御テーブルのシステム管理されていないフィールドは編集できます。異なるバージョンで同じフィールドを編集した場合、バージョンのリコンサイル時に競合の解決が必要になります。

ロックされたパーセルの属性テーブルで編集可能なフィールド

編集中のバージョンとは異なるバージョンでパーセルが編集されている場合、そのようなパーセルは [パーセル エクスプローラ] ウィンドウに編集ロック アイコン 編集ロック で表示されます。同様に、編集中のパーセルは他のバージョンでは編集ロックされます。パーセルの編集ロックが解除されるのは、パーセルを編集中のバージョンがポストされたときです。

以下のリストは、マルチユーザ環境におけるロックされたパーセルの振舞いを決めるルールをまとめたものです。

編集ロック状態アイコンのまとめ

パーセル

パーセルは使用可能で編集できます。

パーセル編集

パーセルは現在編集中です。

編集ロック解除

パーセルは以前に編集されており、現在使用可能です。

編集ロック

パーセルは現在同じバージョンで編集中か、別のバージョンで編集されています。

編集ロック状態アイコンのまとめ

バージョンのリコンサイルとパーセル ファブリック

バージョンの編集が完了したら、そのバージョンに加えた変更内容をデフォルト バージョンにマージすることができます。これはリコンサイルとポストの処理を通じて実行されます。リコンサイルでは、デフォルト バージョンとの競合が検出されます。競合は、ユーザがバージョンを作成した際にデフォルト バージョンが変更され、その変更内容がユーザの編集内容と競合する場合に発生します。たとえば、パーセル ファブリックで、重なるエリアに最小二乗アジャストを実行すると、座標の競合が生じます。パーセル ファブリックの競合の解決は常に子バージョンを優先して実行されます。

注意注意:

パーセル ファブリック ジョブ テーブルはバージョン対応テーブルではなく、そのため、パーセル ファブリック バージョンのリコンサイルの影響を受けません。

バージョンのリコンサイルの詳細

パーセル ファブリックを持つバージョンをデフォルト バージョンに対して頻繁にリコンサイルすることをお勧めします。子バージョンをデフォルト バージョンとリコンサイルすると、他の子バージョンからデフォルト バージョンにポストされた更新が子バージョンに反映されます。

パーセル データの編集と更新は、一般に、ロング トランザクションという形態をとります。パーセル ファブリックでは、パーセルの編集は長い期間にわたって行われることがあります。バージョンをリコンサイルすると、デフォルト バージョンの最新データによってバージョンが更新されます。これはバージョン対応のパーセル ファブリックを継続的に編集する場合に大事なことです。

以下に、バージョン対応のパーセル ファブリックをデフォルト バージョンとリコンサイルするときに行われる更新の例を示します。

競合解決

パーセル ファブリックを持つバージョンをデフォルト バージョンに対してリコンサイルすると、次のような場合に競合が検出されます。

  • デフォルト バージョンと子バージョンの間でポイント座標が変更されている場合
  • デフォルト バージョンと子バージョンの間でシステム管理されていないフィールドの属性値が変更されている場合

ポイント座標の競合は次の場合に発生します。

  • デフォルト バージョンと子バージョンに対して最小二乗アジャストが実行された場合
  • リコンサイル対象の子バージョンと、デフォルト バージョンにポストされた別の子バージョンとに対して最小二乗アジャストが実行された場合

パーセル ファブリックでは、座標の競合は常に、最新のアジャストされた座標を優先して解決されます。そのため、アジャストされた子バージョンをリコンサイルするときは、以下があてはまります。

  • デフォルト バージョンのアジャストされた座標と子バージョンのアジャストされた座標では、子バージョンが勝ちます。
  • 競合するコントロール ポイント座標は、子バージョンを優先して解決されます。

バージョンのポストとパーセル ファブリック

パーセル ファブリックを持つバージョンをポストすると、パーセルのすべての編集ロックが解除されます。バージョンにジョブが作成されている場合、ジョブ ステータスは「コミット済み」に変更されます。コミット済みのジョブはジョブ ブックから削除できます。コミット済みのジョブは再び開くことはできませんが、ジョブで使用されたパーセルなどのジョブ プロパティは引き続き表示されます。

コミット済みのジョブに画面移動してズームするには、以下の空の BLOB フィールドをジョブ テーブルに追加する必要があります。

これらのフィールドがジョブ テーブルに存在すると、コミット済みのジョブのパーセルにズームして画面移動できるようになります。

注意注意:

デフォルト バージョンのパーセル ファブリック ジョブ ブックにアクティブなジョブがある場合、子バージョンをリコンサイルおよびポストする前に、これらのジョブをコミットする必要があります。デフォルト バージョンのパーセル ファブリックにアクティブなジョブがあると、子バージョンのリコンサイルとポストができません。各ジョブのステータスは、[ジョブ ブック] ダイアログ ボックスの [ステータス] フィールドの下に表示されます。ジョブをコミットするには、[カスタマイズ] ダイアログ ボックスの [コマンド] タブの [パーセル] カテゴリの下にある [ジョブのコミット] コマンドを追加します。ジョブを選択し、[ジョブのコミット] コマンドをクリックすると、ジョブがコミットされ、編集ロックが解除されます。[カスタマイズ] ダイアログ ボックスを開くには、[カスタマイズ] [カスタマイズ モード] の順にクリックします。

権限、バージョン、パーセル ファブリック

バージョン対応のデータベース環境でパーセル ファブリックを作成するときは、パーセル ファブリックに付与する権限と、パーセル編集が行われるデータベース バージョンに付与する権限を慎重に検討する必要があります。これは、バージョンのリコンサイルや削除といった、バージョンに対して実行された処理がパーセル ファブリックに対する処理を引き起こすことがあるためです。バージョンに付与される権限は、パーセル ファブリックに付与される権限とは独立しているため、バージョンのリコンサイル、ポスト、削除を実行する権限を持つユーザが、そのバージョンに含まれるパーセル ファブリックを編集する権限を持たないこともありえます。そのような権限の不一致が起こった場合は、バージョン操作が失敗するか(バージョンのリコンサイルとポスト)、パーセル ファブリック データがなんらかの形で損なわれます(バージョンの削除)。

パーセル ファブリックを含むマルチバージョン システムは、次の文が常に成り立つように設定する必要があります。バージョン内のパーセル ファブリックに影響をおよぼすようなバージョン操作を実行するユーザは、そのパーセル ファブリックおよび関連付けられたフィーチャクラスに対する更新権限を必ず持っている。

注意注意:

英語では、バージョンを対象とする場合は、ユーザのアクセスを記述するときに permission という用語が使用されます。データベース内のテーブルとデータセットを対象とする場合は、privilege という用語が使用されます。日本語ではどちらも「権限」でとくに区別しません。

バージョンの権限

バージョンは 3 種類の権限設定のうち 1 つを使用して作成できます。これらは、個々のデータセットの権限設定に加えて使用されます。たとえば、バージョンとデータセット自体の両方の更新権限を持つ場合は、バージョン内のデータセットのフィーチャだけを編集できます。

以下に示すのは、3 種類の権限設定です。

  • プライベート: バージョン内のデータセットを表示し編集できるのはバージョンの所有者だけです。バージョンに対する操作(削除やリコンサイル)を実行できるのはバージョンの所有者だけです。
  • プロテクト: 任意のユーザがバージョン内のデータセットを表示できますが、編集できるのはバージョンの所有者だけです。バージョンに対する操作を実行できるのはバージョンの所有者だけです。
  • パブリック: すべてのユーザがバージョン内のデータセットを表示し編集できます。すべてのユーザがバージョンに対する操作を実行できます。

権限とパーセル ファブリック

各パーセル ファブリックはフィーチャ データセット内に作成する必要があります。ファブリックの所有者は自動的に更新権限を持ちます。その他のユーザには、パーセル ファブリックを含むフィーチャ データセットに対する権限を変更することで、パーセル ファブリックの権限を付与できます。この方法では、パーセル ファブリックは、フィーチャ データセットに含まれる他のフィーチャクラスとまったく同じ振舞いをします。

フィーチャ データセット内に作成されていないフィーチャクラスの場合、そのフィーチャクラスに対する権限を特定のユーザに直接付与できます。

特定のデータセットに対して付与できる権限は次のとおりです。

  • なし(デフォルト): ユーザはデータセットの表示も編集もできません。
  • 選択:ユーザはデータセットの読み取りとクエリができます。
  • 選択、更新、挿入、削除:ユーザはデータセットに対する完全な読み書き権限を持ちます。

パーセル ファブリックの編集のタイプ

パーセル ファブリックの編集には 2 つの形態があります。

  1. パーセル ファブリック クラスそれ自体(たとえば、パーセル、ライン、コントロール ポイント)をパーセル エディタ経由で編集できます。
  2. パーセル ファブリックにその他のフィーチャクラスを関連付けることができます。最小二乗アジャストの結果をこれらのフィーチャクラスに反映することで、そのジオメトリを編集できます。

最初のケースでは、編集を実行するユーザは、編集するパーセル ファブリックを含むフィーチャ データセットに対する更新権限を持っている必要があります。2 つめのケースでは、ユーザはパーセル ファブリックと関連付けられたフィーチャクラスの両方に対する更新権限を持っている必要があります。

リコンサイル、ポスト、削除の対象であるバージョン内のパーセル ファブリック、またはパーセル ファブリックに関連付けられたフィーチャクラスが編集されていない場合、パーセル ファブリックまたは関連付けられたフィーチャクラスに対する更新権限は不要です。

以下の表に、パーセル ファブリックと関連付けられたフィーチャクラスが親バージョンまたは該当する子バージョンで編集された場合に、バージョン操作を実行するユーザが持っている必要のある権限をまとめました。

パーセル ファブリックの権限の表
パーセル ファブリックの権限

9/14/2013