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

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

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

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

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

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

バージョニングの詳細

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

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

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

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

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

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

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

パーセル

Parcel is available for editing.

パーセル編集

Parcel is currently being edited.

編集ロック解除

Parcel has been previously edited and is available.

編集ロック

Parcel is being currently edited on the same version or has been edited on a different version.

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

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

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

注意注意:

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

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

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

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

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

競合解決

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

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

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

  • デフォルト バージョンと子バージョンに対してパーセル ファブリック アジャストが実行された場合
  • リコンサイル対象の子バージョンと、デフォルト バージョンにポストされた別の子バージョンとに対してパーセル ファブリック アジャストが実行された場合

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

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

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

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

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

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

注意注意:

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

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

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

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

注意注意:

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

バージョンの権限

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5/10/2014