パーセル ファブリックの編集とバージョニング
このトピックは、ArcEditor および ArcInfo にのみ適用されます。
パーセル ファブリックでは、デフォルト バージョンより 1 つ下のバージョン レベルでの編集がサポートされます。パーセル ファブリックでは、バージョンの子バージョンの編集はサポートされません。ファブリック ジョブを使用して手動モードでパーセルを編集する場合、デフォルト バージョンと子バージョンの両方に複数のパーセル ファブリック ジョブを作成できます。
パーセル ファブリックの編集とバージョンの状態
パーセル ファブリックは、ArcSDE ジオデータベースで編集する前に、バージョン対応登録する必要があります。パーセル ファブリックをバージョン対応登録すると、そのパーセル ファブリックを編集するバージョンを作成できます。バージョンは、ジオデータベースのビューのようなもので、そのビューを編集すると、変更がすぐに反映されます。そのバージョンに接続しているユーザは、表示を更新すれば変更結果を見ることができます。ただし、他のバージョンに接続しているユーザは、デフォルト バージョンに対してそのバージョンがポストされるまで変更結果を確認できません。
データセットがバージョン対応レイヤである場合、デルタ テーブルは 2 つ作成されます。1 つは追加内容を記録する A(ADD)テーブル、もう 1 つは削除内容を記録する D(DELETE)テーブルです。データセットでレコードを更新または削除するたびに、これらのテーブルのどちらかまたは両方に行が追加され、バージョンの新しい状態が作成されます。したがって、バージョン対応のデータセットは、元のテーブル(ベース テーブルと呼ばれます)と、デルタ テーブル内の変更内容で構成されます。
自動モードでパーセルを編集する場合、各編集操作はジョブ XML ストリームに対して行われます。編集セッションを保存すると、XML ストリームがパーセル ファブリックに対して 1 つの編集内容としてポストされ、バージョンの新しい状態が作成されます。
ファブリック ジョブを使用して手動モードでパーセル ファブリックを編集している場合、編集内容はジョブ XML ストリームに保存されます。パーセル ファブリック ジョブをパーセル ファブリックにポストすると([パーセル エディタ] → [ジョブの終了] の順に選択します)、ジョブ XML ストリームに対するすべての編集内容がパーセル ファブリックに 1 つの編集内容としてポストされます。編集セッションを保存すると、バージョンの新しい状態が作成されます。
パーセル ファブリックのバージョンと編集ロック
ファブリックのパーセルの編集時、パーセルは編集ロックされます。パーセルが編集ロックされると、編集ロックが解除されるまで、同じバージョンまたは別のバージョンでそのパーセルを開くことはできません。ただし、ロックされたパーセルの属性テーブルでは、パーセル、ライン、ポイント、制御テーブルのシステム管理されていないフィールドは編集できます。異なるバージョンで同じフィールドを編集した場合、バージョンのリコンサイル時に競合の解決が必要になります。
編集中のバージョンとは異なるバージョンでパーセルが編集されている場合、そのようなパーセルは [パーセル エクスプローラ] ウィンドウに編集ロック アイコン で表示されます。同様に、編集中のパーセルは他のバージョンでは編集ロックされます。パーセルの編集ロックが解除されるのは、パーセルを編集中のバージョンがポストされたときです。
以下のリストは、マルチユーザ環境におけるロックされたパーセルの振舞いを決めるルールをまとめたものです。
- 別のバージョンで編集中のパーセルを開くことはできません。別のバージョンの編集ロックされたパーセルにアクセスできるようになるのは、そのバージョンがポストされたときだけです。バージョンがポストされると、バージョンのすべての更新内容と変更内容がデフォルト バージョンとマージされ、パーセルの編集ロックが解除されます。
- 作業中のバージョンでパーセルが以前に編集されている場合、そのパーセルは [パーセル エクスプローラ] ウィンドウに編集ロック解除アイコン で表示されます。
- ポストされた別のバージョンでパーセルが以前に編集されている場合、そのパーセルは作業中のバージョンでは編集ロック解除アイコン で表示されます。
- パーセルが別のバージョンで編集され、そのバージョンがデフォルト バージョンに対してポストされた場合、デフォルト バージョンとのリコンサイルを実行すると、自分のバージョンで同じパーセルを編集できます。
- [パーセル エクスプローラ] ウィンドウでパーセルがロック中と表示されている場合、[パーセル エクスプローラ] ウィンドウでそのパーセルをクリックして、どのバージョンでどのユーザがパーセルを編集中か確認できます。ユーザ名とバージョン名が ArcMap ウィンドウの右下にあるステータス バーに表示されます。
|
パーセルは使用可能で編集できます。 |
|
パーセルは現在編集中です。 |
|
パーセルは以前に編集されており、現在使用可能です。 |
|
パーセルは現在同じバージョンで編集中か、別のバージョンで編集されています。 |
ファブリック ジョブを使用した手動モードでの編集ロック
ファブリック ジョブを使用して手動モードで作業する場合も、同じパーセル ロック ルールが適用されます。
- ファブリック ジョブは同じバージョンと異なるバージョンで互いに重なることがあります。同じバージョンの重なるジョブでパーセルが編集されている場合、そのパーセルは [パーセル エクスプローラ] ウィンドウに編集ロック アイコン で表示されます。重なるジョブが閉じられると([Parcel Editor] → [ジョブの終了] の順に選択します)、編集ロックは解除され、パーセルは [パーセル エクスプローラ] ウィンドウに編集ロック解除アイコン で表示されます。
- 別のバージョンの重なるジョブでパーセルが編集されている場合、重なるジョブで編集中のパーセルは、バージョンがポストされるまでロックされたままです。パーセルは [パーセル エクスプローラ] ウィンドウに編集ロック アイコン で表示されます。バージョンがポストされると、バージョンのすべてのジョブがコミット済みとマークされ、パーセルの編集ロックが解除されます。そのようなパーセルを編集するには、自分のバージョンをデフォルト バージョンとリコンサイルする必要があります。
- [パーセル エクスプローラ] ウィンドウでパーセルがロック中と表示されている場合、[パーセル エクスプローラ] ウィンドウでそのパーセルをクリックして、どのバージョンでどのユーザがパーセルを編集中か確認できます。ユーザ名とバージョン名が ArcMap ウィンドウの右下にあるステータス バーに表示されます。
- パーセルをすぐに編集しない場合でも、ファブリック ジョブでパーセルに編集ロックを手動で追加できます。編集ロックは、[ジョブの新規作成] ダイアログ ボックスでパーセルを編集ジョブ パーセルとして追加するときに、追加できます。編集ロックは開いているジョブに追加することもできます。[パーセル エクスプローラ] ウィンドウでパーセルを右クリックし、[選択パーセルのロック] をクリックします。このようなパーセルはバージョンをまたがってロックされます。ただし、同じバージョンでは、ジョブを閉じるとパーセルは常にロック解除されます。
- [パーセル エクスプローラ] ウィンドウを最新の情報に更新すると、パーセル ロック シンボルが更新され、編集ロック アイコン がジョブで編集ロックされたパーセルの横に表示されます。
バージョンのリコンサイルとパーセル ファブリック
バージョンの編集が完了したら、そのバージョンに加えた変更内容をデフォルト バージョンにマージすることができます。これはリコンサイルとポストの処理を通じて実行されます。リコンサイルでは、デフォルト バージョンとの競合が検出されます。競合は、ユーザがバージョンを作成した際にデフォルト バージョンが変更され、その変更内容がユーザの編集内容と競合する場合に発生します。たとえば、パーセル ファブリックで、重なるエリアに最小二乗アジャストを実行すると、座標の競合が生じます。パーセル ファブリックの競合の解決は常に子バージョンを優先して実行されます。
パーセル ファブリック ジョブ テーブルはバージョン対応テーブルではなく、そのため、パーセル ファブリック バージョンのリコンサイルの影響を受けません。
パーセル ファブリックを持つバージョンをデフォルト バージョンに対して頻繁にリコンサイルすることをお勧めします。子バージョンをデフォルト バージョンとリコンサイルすると、他の子バージョンからデフォルト バージョンにポストされた更新が子バージョンに反映されます。
パーセル データの編集と更新は、一般に、ロング トランザクションという形態をとります。パーセル ファブリックでは、パーセルの編集は長い期間にわたって行われることがあります。バージョンをリコンサイルすると、デフォルト バージョンの最新データによってバージョンが更新されます。これはバージョン対応のパーセル ファブリックを継続的に編集する場合に大事なことです。
以下に、バージョン対応のパーセル ファブリックをデフォルト バージョンとリコンサイルするときに行われる更新の例を示します。
- パーセル ポイントの座標の更新(デフォルト バージョンに対して実行された、または、別のバージョンからポストされた最小二乗アジャスト)
- デフォルト バージョンに作成された、または別のバージョンからポストされた新しいパーセル
- デフォルト バージョンに作成された、または別のバージョンからポストされた更新または新規作成されたコントロール ポイント
競合解決
パーセル ファブリックを持つバージョンをデフォルト バージョンに対してリコンサイルすると、次のような場合に競合が検出されます。
- デフォルト バージョンと子バージョンの間でポイント座標が変更されている場合
- デフォルト バージョンと子バージョンの間でシステム管理されていないフィールドの属性値が変更されている場合
ポイント座標の競合は次の場合に発生します。
- デフォルト バージョンと子バージョンに対して最小二乗アジャストが実行された場合
- リコンサイル対象の子バージョンと、デフォルト バージョンにポストされた別の子バージョンとに対して最小二乗アジャストが実行された場合
パーセル ファブリックでは、座標の競合は常に、最新のアジャストされた座標を優先して解決されます。そのため、アジャストされた子バージョンをリコンサイルするときは、以下があてはまります。
- デフォルト バージョンのアジャストされた座標と子バージョンのアジャストされた座標では、子バージョンが勝ちます。
- 競合するコントロール ポイント座標は、子バージョンを優先して解決されます。
バージョンのポストとパーセル ファブリック
パーセル ファブリックを持つバージョンをポストすると、パーセルのすべての編集ロックが解除されます。バージョンにジョブが作成されている場合、ジョブ ステータスは「コミット済み」に変更されます。コミット済みのジョブはジョブ ブックから削除できます。コミット済みのジョブは再び開くことはできませんが、ジョブで使用されたパーセルなどのジョブ プロパティは引き続き表示されます。
コミット済みのジョブに画面移動してズームするには、以下の空の BLOB フィールドをジョブ テーブルに追加する必要があります。
- CommittedObjs
- LocalControl
これらのフィールドがジョブ テーブルに存在すると、コミット済みのジョブのパーセルにズームして画面移動できるようになります。
権限、バージョン、パーセル ファブリック
バージョン対応のデータベース環境でパーセル ファブリックを作成するときは、パーセル ファブリックに付与する権限と、パーセル編集が行われるデータベース バージョンに付与する権限を慎重に検討する必要があります。これは、バージョンのリコンサイルや削除といった、バージョンに対して実行された処理がパーセル ファブリックに対する処理を引き起こすことがあるためです。バージョンに付与される権限は、パーセル ファブリックに付与される権限とは独立しているため、バージョンのリコンサイル、ポスト、削除を実行する権限を持つユーザが、そのバージョンに含まれるパーセル ファブリックを編集する権限を持たないこともありえます。そのような権限の不一致が起こった場合は、バージョン操作が失敗するか(バージョンのリコンサイルとポスト)、パーセル ファブリック データがなんらかの形で損なわれます(バージョンの削除)。
パーセル ファブリックを含むマルチバージョン システムは、次の文が常に成り立つように設定する必要があります。バージョン内のパーセル ファブリックに影響をおよぼすようなバージョン操作を実行するユーザは、そのパーセル ファブリックおよび関連付けられたフィーチャクラスに対する更新権限を必ず持っている。
英語では、バージョンを対象とする場合は、ユーザのアクセスを記述するときに permission という用語が使用されます。データベース内のテーブルとデータセットを対象とする場合は、privilege という用語が使用されます。日本語ではどちらも「権限」でとくに区別しません。
バージョンの権限
バージョンは 3 種類の権限設定のうち 1 つを使用して作成できます。これらは、個々のデータセットの権限設定に加えて使用されます。たとえば、バージョンとデータセット自体の両方の更新権限を持つ場合は、バージョン内のデータセットのフィーチャだけを編集できます。
以下に示すのは、3 種類の権限設定です。
- プライベート: バージョン内のデータセットを表示し編集できるのはバージョンの所有者だけです。バージョンに対する操作(削除やリコンサイル)を実行できるのはバージョンの所有者だけです。
- プロテクト: 任意のユーザがバージョン内のデータセットを表示できますが、編集できるのはバージョンの所有者だけです。バージョンに対する操作を実行できるのはバージョンの所有者だけです。
- パブリック: すべてのユーザがバージョン内のデータセットを表示し編集できます。すべてのユーザがバージョンに対する操作を実行できます。
権限とパーセル ファブリック
各パーセル ファブリックはフィーチャ データセット内に作成する必要があります。ファブリックの所有者は自動的に更新権限を持ちます。その他のユーザには、パーセル ファブリックを含むフィーチャ データセットに対する権限を変更することで、パーセル ファブリックの権限を付与できます。この方法では、パーセル ファブリックは、フィーチャ データセットに含まれる他のフィーチャクラスとまったく同じ振舞いをします。
フィーチャ データセット内に作成されていないフィーチャクラスの場合、そのフィーチャクラスに対する権限を特定のユーザに直接付与できます。
特定のデータセットに対して付与できる権限は次のとおりです。
- なし(デフォルト): ユーザはデータセットの表示も編集もできません。
- 選択: ユーザはデータセットの読み取りとクエリができます。
- 選択、更新、挿入、削除: ユーザはデータセットに対する完全な読み書き権限を持ちます。
パーセル ファブリックの編集のタイプ
パーセル ファブリックの編集には 2 つの形態があります。
- パーセル ファブリック クラスそれ自体(たとえば、パーセル、ライン、コントロール ポイント)をパーセル エディタ経由で編集できます。
- パーセル ファブリックにその他のフィーチャクラスを関連付けることができます。最小二乗アジャストの結果をこれらのフィーチャクラスに反映することで、そのジオメトリを編集できます。
最初のケースでは、編集を実行するユーザは、編集するパーセル ファブリックを含むフィーチャ データセットに対する更新権限を持っている必要があります。2 つ目のケースでは、ユーザはパーセル ファブリックと関連付けられたフィーチャクラスの両方に対する更新権限を持っている必要があります。
リコンサイル、ポスト、削除の対象であるバージョン内のパーセル ファブリック、またはパーセル ファブリックに関連付けられたフィーチャクラスが編集されていない場合、パーセル ファブリックまたは関連付けられたフィーチャクラスに対する更新権限は不要です。
以下の表に、パーセル ファブリックと関連付けられたフィーチャクラスが親バージョンまたは該当する子バージョンで編集された場合に、バージョン操作を実行するユーザが持っている必要のある権限をまとめました。