WFS サービスを利用した Web 編集
このトピックの内容
WFS ケーパビリティを有効にしてマップ サービスまたはジオデータ サービスを公開すると、OGC 準拠の WFS クライアントがデータにアクセスできるようになります。これらの WFS クライアントには、データに対する最新の変更も表示されます。
ビューアーなどの WFS クライアントからリクエストが送信されると、その時点でデータ ソースに含まれているデータが返されます。たとえば、フィーチャクラスが含まれたマップ ドキュメントがあるとします。このフィーチャクラスはファイル ジオデータベースに格納されています。このマップ ドキュメントをマップ サービスとして公開し、WFS ケーパビリティを有効にします。WFS ビューアーを使用するクライアントは、マップ サービスによって提供される WFS URL を使用して、フィーチャクラス内のデータにアクセスできます。
別のユーザーがソースのファイル ジオデータベースにアクセスし、フィーチャクラス内のフィーチャを追加、更新、削除するとしましょう。次回、WFS ビューアーを使用するクライアントが更新を行うと、最新の編集内容が適用されたデータが表示されます。
データ ソースが enterprise、workgroup、または desktop geodatabase ジオデータベースである場合、ジオデータ サービスとマップ サービスは特定のバージョンからデータを公開します。そのバージョンでデータが編集された場合、それらの変更内容は WFS クライアントと非 WFS クライアントの両方に反映されます。ただし、他のバージョンで編集が行われた場合は、公開されたバージョンにリコンサイルされるまで変更内容はクライアントに表示されません。
これにより、サービスを通じて提供されるデータをより細かく制御することができます。たとえば、WFS という名前のバージョンから、WFS ケーパビリティが有効な状態で何らかのデータを公開するとしましょう。そして、WFS ビューアーを使用するクライアントがサービスを通じてデータへのアクセスを開始します。一方で、オフィスにいる編集ユーザーが ArcGIS を使ってデフォルト バージョンを更新します。編集ユーザーによって行われた変更がチェックされ、必要に応じて調整されます。評価が完了すると、WFS バージョンがデフォルト バージョンでリコンサイルされます。この時点で、WFS クライアントには編集ユーザーによる最新の更新内容が表示されます。
トランザクション対応の WFS サービス
トランザクション対応の WFS サービス (WFS-T とも呼ばれます) では、WFS エディターから WFS サービスを通じてソース データベース内のデータに変更を適用することができます。WFS-T を通じて変更を適用するには、データが enterprise、workgroup、または desktop geodatabase ジオデータベースに格納されている必要があります。トランザクションは、バージョン対応登録されたデータ、バージョン非対応のデータ、または両者の組み合わせが含まれるサービスで有効にすることができます。バージョン対応登録されたデータの使用を選択する場合、デフォルト以外のバージョンからサービスを公開することも推奨されます。
トランザクション対応の WFS サービスを作成する方法については、「チュートリアル: WFS-T サービスの公開」をご参照ください。
トランザクションが有効になっている場合、WFS クライアントはトランザクション対応の WFS メソッドを使ってジオデータベースに変更を適用することができます。変更を適用する方法は次のようになります。
- トランザクションが有効な状態で公開されている WFS サービスに WFS クライアントが接続します。
- 編集対象のフィーチャと行がサーバー上でロックされます (これには WFS の GetFeatureWithLock メソッドを使用できます)。
- WFS クライアントの WFS エディターを使用して編集が行われます。
- 編集内容がサーバー上で適用されます (これには WFS の Transaction メソッドを使用できます)。
編集がポストされると、ロックが解除され、他の WFS エディターがフィーチャを編集できるようになります。ロックはタイム アウト時にも解除できます。デフォルトでは、ロックは 5 分後にタイム アウトになりますが、GetFeatureWithLock メソッドを使用すると、タイム アウトを分単位で調整することができます。管理者は、コンフィグレーションを手動で編集して DefaultLockExpiration エレメント (分単位) を設定することにより、デフォルトのタイム アウトを設定することができます。
クライアントが GetFeatureWithLock メソッドを使ってロックをリクエストすると、フィーチャがロックされたフィーチャ コレクションとロック ID が返されます。リクエストされたフィーチャのいずれかをロックできない場合はリクエストが失敗するので、クライアントは GetFeatureWithLock メソッドを再び呼び出す必要があります。他のクライアントは、ロックが解除されるまで、これらのフィーチャのロックを取得できなくなります。
挿入専用トランザクションでは、フィーチャをロックする必要はありません。既存のフィーチャは変更 (更新または削除) されないため、GetFeatureWithLock メソッドを呼び出す必要はありません。更新または削除を伴うトランザクション リクエストではロック ID が必要です。
WFS-T を通じて変更がポストされると、(バージョン対応登録されたデータで) 公開されたバージョンに、または (バージョン非対応のデータで) ビジネス テーブルに変更が適用されます。次のセクションでは、バージョン対応登録された、またはバージョン非対応のデータのいずれかを操作する際に知っておく必要のあるワークフローの重要な相違点について説明します。
WFS-T サービスとバージョン対応登録されたデータ
バージョニングを利用して、ジオデータベースを WFS エディターと非 WFS エディターの両方に公開し、徹底した競合検出により 2 つのグループによって行われた編集内容を効果的にマージすることができます。編集内容をマージするには、公開された WFS-T バージョンをその親とリコンサイルし、ポストします。未解決のロックがある場合、リコンサイルとポストを実行することはできません。これは、WFS-T クライアントによってロックされたフィーチャと、リコンサイルとポストのプロセスによって変更されたフィーチャ間での競合を回避するための措置です。さらに、リコンサイルとポストは公開されたバージョンをロックし、処理の間に GetFeatureWithLock メソッドと Transaction メソッドを呼び出せないようにします。バージョン対応登録されたデータの操作については、「バージョニングのクイック ツアー」をご参照ください。
フィーチャのロックは、ロック テーブルに基づいてサーバー側で管理されます。ロック テーブルは、トランザクションが有効化されたときに作成され、通常のテーブルとしてジオデータベースに格納されます。ロック テーブルには、VERSION_<バージョン ID>_ROW_LOCKS という命名規則に従って名前が付けられます。管理者はリコンサイルとポストがブロックされないようにするために、リコンサイルとポストを行う前にロック テーブル内の行を直接削除して、未解決のロックを削除することができます。
公開された WFS-T バージョンの編集に ArcGIS を使用しないでください。ArcGIS エディターはフィーチャ ロックを認識しないため、ロックされたフィーチャが編集されてしまうことがあります。このような場合、ArcGIS によって行われた編集が競合を引き起こし、WFS-T クライアントが変更をアップロードできなくなる可能性があります。公開されたバージョンの子バージョンを作成して編集した場合にも、公開されたバージョンに変更をリコンサイル/ポストするときに同様の問題が発生する可能性があります。
複数の WFS-T サービスがすべて同じロック テーブルを参照するために、同じ公開されたバージョンを参照することがあります。公開されたバージョンとそのロック テーブルは 1 対 1 の関係にあります。
トランザクションを無効にしたり、WFS サービスを削除しても、ロック テーブルは自動的に削除されません。そのバージョンを参照する WFS-T サービスがなくなったときに、このテーブルを手動で削除することができます。
WFS-T サービスとバージョン非対応のデータ
WFS-T サービス内でバージョン非対応のデータを公開する場合は、編集内容が直接ジオデータベースのビジネス テーブルに適用されるため、編集内容が一度コミットされると元に戻すことはできません。バージョン非対応データの操作については、「バージョン非対応データ操作のクイック ツアー」をご参照ください。
バージョン非対応のデータに基づく WFS-T サービスでは、フィーチャのロックも、サービスのトランザクションを有効にした際に作成されたロック テーブル内のサーバーで管理されます。サービスを通じて WFS-T クライアントで編集を行うだけの場合は、バージョン対応登録されたデータに基づくサービスの場合と同じ動作になります。ただし、サービスに公開されたデータを非 WFS-T クライアント (ArcMap など) で編集する場合は、次の点に注意が必要です。
- ArcMap エディターはフィーチャ ロックを認識しないため、WFS-T サービスを通じてロックされたフィーチャは結果的に編集可能です。
- ArcMap エディターがフィーチャを編集すると、WFS-T クライアント側ではそれらのフィーチャはロックされているように見えます。結果として、ArcMap エディターが編集内容を保存するまで、WFS-T クライアントはそれらのフィーチャをロック、更新、または削除できません。
トランザクションを無効にしたり、WFS サービスを削除しても、ロック テーブルは自動的に削除されません。そのバージョンを参照する WFS-T サービスがなくなると、テーブルを手動で削除することができます。
その他の注意事項
- フィーチャクラスに関する編集情報の記録を有効にするときは、UTC で編集を記録するように設定されていることを確認してください。WFS-T サービスは、編集情報の記録のタイム ゾーンとして、データベース時間に対応していません。
- WFS-T を使用するためには、ArcGIS Server が enterprise、workgroup、または desktop geodatabase ジオデータベースに接続するために使用する DBMS ユーザーに DBMS でテーブルを作成するための権限が与えられている必要があります。
- ArcGIS for Desktop にはトランザクション対応の WFS 編集のメカニズムがないため、WFS を使ってフィーチャを編集するためには、サードパーティ クライアントを使用しなければなりません。
- Z 対応のフィーチャクラスについては、WFS-T を使って編集することはできません。