チュートリアル:WFS-T サービスの公開
このチュートリアルでは、ArcGIS Server Manager を使用して、トランザクション(WFS-T)を有効にすることにより、読み取り/書き込み権限を持つ WFS サービスを公開する方法を示します。トランザクション対応の WFS サービス(WFS-T)では、WFS クライアントが WFS サービスを通じてソース データベース内のデータに編集(挿入、削除、更新)を適用することができます。WFS-T を通じて変更を適用するには、データが ArcSDE ジオデータベースに格納されている必要があります。このチュートリアルでは、特にバージョン対応のデータを処理するときに使用する必要のあるワークフローを示します。
WFS ケーパビリティを有効にしてマップ サービスまたはジオデータ サービスを公開すると、ArcCatalog や ArcMap の Data Interoperability Extension など、OGC 準拠の WFS クライアントからデータにアクセスできます。これらの WFS クライアントには、データに対する最新の変更も表示されます。WFS サービスを扱うのが初めてで、このチュートリアルに取り組む前に WFS について詳しく知りたい場合は、「WFS サービス」をご参照ください。
ArcGIS Server をインストールしたばかりの場合は、Manager にログインしたりサービスを公開したりする前に、準備作業を行う必要があります。準備作業については、ヘルプ システムの「インストール後の作業」セクションをご参照ください。
サービスの公開に必要な設定
マップ サービスまたはジオデータ サービスを作成するためには、マップ ドキュメント(*.mxd)、ジオデータベース(ファイルまたはパーソナル)、または SDE 接続ファイルを、GIS サーバ内のすべての SOC(Server Object Container)コンピュータから参照可能な共有ディレクトリに配置する必要があります。また、ポストインストールで作成した SOC アカウントに対し、マップ ドキュメントとマップ ドキュメントが参照するすべてのデータ(マップ サービス)、または公開するジオデータベース内のすべてのデータ(ジオデータ サービス)の読み取り権限を割り当てる必要もあります。
WFS サービスは、シェープファイルやジオデータベースなど、Esri ソースのシンプル フィーチャをサポートします。ただし、サービスでトランザクションを有効にする場合は(WFS-T)、編集するデータがすべて ArcSDE ジオデータベースに格納されていなければなりません。
ジオデータ サービスかマップ サービスかの選択
WFS サービスでは、ジオデータ サービスまたはマップ サービスのどちらかを公開の対象として選択することができます。作成するサービスのタイプを選択するときに、これらの違いを認識している必要があります。次のセクションでは、各自の要件に最適なサービスを判断するのに役立つよう、ジオデータ サービスとマップ サービスで利用可能な機能をまとめます。
ジオデータ サービス
WFS ジオデータ サービスでは、インターネットまたは OGC 準拠の WFS クライアントを通じてジオデータベースにアクセスできます。ジオデータ サービスは、ArcSDE ジオデータベース、パーソナル ジオデータベース、ファイル ジオデータベースをはじめとするあらゆる種類のジオデータベースを対象に作成することができます。ジオデータ サービスから WFS サービスを作成する際には、ジオデータベース内のすべてのフィーチャクラスがサービスに公開されることに注意してください。
ジオデータ サービスは、ジオデータベースにリモートからアクセスしなければならない状況で役立ちます。たとえば、東京と大阪のオフィスでデータを管理するための ArcSDE ジオデータベースをセットアップしたいとしましょう。ArcSDE ジオデータベースを作成した後、各オフィスはジオデータ サービスを使用して、インターネット上にジオデータベースを公開することができます。
マップ サービス
WFS マップ サービスは、インターネットまたは OGC 準拠の WFS クライアントを通じて利用できるマップ ドキュメント(*.mxd)を表します。WFS ファンクショナリティを持つマップ サービスは、サービスを通じて公開されるデータを細かく制御することができます。マップ サービスをセットアップする主な理由は次のとおりです。
- ジオデータ サービスとは異なり、複数のジオデータベース(パーソナル、ファイル、ArcSDE)からのデータを含め、1 つのマップ サービスにさまざまなソースからのデータを追加することができます。
- マップ サービスを通じて提供されるフィーチャクラスを選択することができます。
- マップ ドキュメントでフィーチャクラスの名前を変更し、データ ソースでの実際の名前がサービスで公開されないようにすることができます。
WFS マップ サービスには制限もいくつかあります。マップ ドキュメントから WFS サービスを公開する際には、次の点に注意してください。
- マップ ドキュメントは、WFS サービスで提供されるレイヤの仕様にすぎません。サービスの目的はデータ内のフィーチャを提供することなので、レイヤ レベルで定義されるシンボル表示、クエリ定義、フィールド エイリアスは、WFS サービスに渡されません。OGC 仕様を通じてマップのビジュアル プロパティを提供するには、WMS サービスを使用します。
- マップ内の複数のレイヤから同じフィーチャクラスを参照することはできません。
- マップ内の複数のレイヤに同じ名前を付けることはできません。
- WFS はフィーチャを操作するだけなので、マップ内のラスタ レイヤはサービスから除外されます。
- 非空間テーブルは公開されません。
- WFS サービスで編集用のトランザクション(WFS-T)をサポートするには、マップ内のすべてのレイヤのソース データが同じワークスペース(たとえば同じ ArcSDE ジオデータベース)に格納されている必要があります。
WFS-T サービスのためのデータの準備
読み取り/書き込み権限が割り当てられた WFS サービスを作成する前に、データをセットアップするための初期要件がいくつかあります。
- データを ArcSDE ジオデータベースに読み込む必要があります。
- バージョン対応のデータを処理したい場合は、バージョン対応登録する必要があります。
- バージョンは、WFS ユーザが編集するための専用バージョンでなければなりません。バージョンが存在していない場合は、作成しなければなりません。
- データを編集するためには、特定の WFS ユーザに SDE 接続ファイルを編集するための権限が与えられていなければなりません。
バージョン対応データを使用して WFS-T サービスのデータを準備するには、次の手順に従ってください。
- 公開するデータを ArcSDE ジオデータベースに読み込みます。データ読み込みの詳細については、「カタログ ツリーでのデータの読み込み」をご参照ください。
- データセットを右クリックし、ショートカット メニューから [バージョン対応レイヤとして登録] を選択して、データを登録します。詳細については、「データのバージョン対応登録」をご参照ください。
-
データをバージョン対応登録した後は、WFS ユーザが編集するための専用バージョンを指定しなければなりません。そのようなバージョンが存在しない場合は、次の手順に従って、WFS ユーザが編集するための新しいバージョンを作成します。接続ファイルを右クリックして [バージョン] を選択します。
-
[バージョン マネージャ] ダイアログ ボックスで、子バージョンを作成したいバージョンを右クリックし、[新規作成] をクリックします。これにより、WFS 編集ユーザが使用できる新しいバージョンが作成されます。
-
新しいバージョンの [名前] を入力します。作成者以外のユーザがデータを編集する場合は、[アクセス権] が [パブリック] に設定されていなければなりません。
ジオデータ サービスを作成する場合は、ステップ 6 に進みます。マップ サービスを作成する場合は、ステップ 9 に進みます。
-
適切なデータが作成されたときに、ジオデータ サービスにそれを公開させるためには、ジオデータベースの接続プロパティを更新して、新しく作成された WFS バージョンを参照させる必要があります。
そのためには、ジオデータベース接続ファイルを右クリックして、[接続プロパティ] を選択します。
-
[接続の詳細] セクションで [変更] ボタンをクリックします。
-
WFS ユーザ専用のバージョンを選択して、[OK] をクリックします。
- 適切なデータが作成されたときに、マップ サービスにそれを公開させるためには、マップ ドキュメントを更新して、新しく作成された WFS バージョンを参照させる必要があります。この操作を行うには、コンテンツ ウィンドウで [ソース] タブをクリックします。
-
ジオデータベースを右クリックして、[バージョンの変更] を選択します。[バージョン マネージャ] ダイアログ ボックスが表示されます。
-
[バージョン マネージャ] ダイアログ ボックスで、WFS ユーザ専用のバージョンを選択して [OK] をクリックします。
- マップ ドキュメントへの変更を保存します。
WFS サービスの公開
次の手順に従って、ジオデータ サービスまたはマップ サービスを作成します。
- [サービス] タブで [GIS リソースの公開] をクリックします。
- [リソース] ドロップダウン リストを使用して、公開するマップ ドキュメント(*.mxd)またはジオデータベース(パーソナル、ファイル、あるいは SDE 接続ファイル(*.sde))を選択します。
- [名前] ボックスにサービスの名前を入力します。120 文字を超える名前を使用することはできません。英数字およびアンダースコア(_)のみ使用することができます。
-
サービスを公開するためのフォルダは、次の 3 つから選択できます。
- ドロップダウン メニューを使用して、既存のフォルダを選択します。
- 新しいフォルダを作成します。
- デフォルト フォルダを使用して、ルート フォルダに公開します。
サービスを公開する場所を選択してから、[次へ] をクリックして次に進みます。
- [WFS] を選択してサービスのケーパビリティを有効にしてから、[次へ] をクリックします。
- 作成するサービスに関する情報を確認した後、[完了] をクリックしてサービスを公開します。
WFS ケーパビリティが有効になっていない既存のサービスがある場合は、次の手順に従ってケーパビリティを有効にします。
- サービスの [状態] が [開始] に設定されて一覧に表示される場合もあります。サービスの設定を変更するには、サービスを停止する必要があります。ステータスが [開始] と表示されている場合は、サービスの横にあるチェックボックスをオンにしてから [停止] ボタンをクリックします。
- サービスの [編集] オプションをクリックします。これにより、ケーパビリティを含め、サービスのプロパティを編集できるようになります。
- [ケーパビリティ] フォルダをクリックします。
- [WFS] チェックボックスをオンにします。
- [OK] をクリックしてケーパビリティを有効にします。
WFS サービスでのトランザクションの有効化
WFS サービスが公開された後、WFS ユーザがソース データベース内のデータを編集し、変更を適用できるようにするには、トランザクション(WFS-T)と呼ばれるオプションを有効にする必要があります。
次の手順に従って、WFS サービスでトランザクションを有効にします。
- ArcGIS Server Manager の [サービス] タブで、[サービスの管理] をクリックします。
- [場所] ドロップダウン矢印をクリックし、公開されているサービスが格納されているサービス フォルダを選択します。
- サービスの [状態] が [開始] に設定されて一覧に表示される場合もあります。サービスの設定を変更するには、サービスを停止する必要があります。ステータスが [開始] と表示されている場合は、サービスの横にあるチェックボックスをオンにしてから [停止] ボタンをクリックします。
- [編集] アイコンをクリックして、プロパティ ダイアログ ボックスを開きます。
- プロパティ ダイアログ ボックスで [ケーパビリティ] タブを選択します。
- [ケーパビリティを選択し構成する] ウィンドウで [WFS] オプション(チェックボックスではなく名前)をクリックし、[ケーパビリティ] パネルを設定します。これにより、WFS サービスのプロパティが表示されます。
- [トランザクションの有効化] チェックボックスをオンにします。
WFS サービスの URL を取得する方法
- ArcGIS Server Manager の [サービス] タブで、[サービスの管理] をクリックします。
- [場所] ドロップダウン矢印をクリックし、公開されているサービスが格納されているサービス フォルダを選択します。
- サービスの [状態] が [開始] に設定されて一覧に表示されるはずです。ステータスが [停止] と表示されている場合は、サービスの横にあるチェックボックスをオンにしてから [開始] ボタンをクリックします。
- WFS サービスの URL を取得するには、[編集] アイコンをクリックして、プロパティ ダイアログ ボックスを開きます。
- [ケーパビリティ] タブをクリックします。
- [ケーパビリティを選択し構成する] パネルで、[WFS] のチェックボックス以外の部分をクリックしてハイライト表示にします。これにより、WFS サービスのプロパティが表示されます。
- WFS サービスの URL は、[Web アクセス] パネルに表示されています。これは、公開した WFS サービスにユーザが接続するために使用する URL です。
公開した WFS サービスは、Web ブラウザをはじめとして、WFS 1.1 および GML の Simple Features プロファイルをサポートする任意のクライアントで利用することができます。また、WFS サービスの操作に ArcCatalog と ArcMap の Data Interoperability Extension を使用することもできます。次のセクションでは、Web ブラウザと ArcCatalog の Data Interoperability Extension を使って WFS サービスにアクセスする方法を示します。
Web ブラウザを使用した WFS サービスへの接続
WFS サービスの最も単純なクライアントの 1 つは Web ブラウザです。HTTP 経由で情報をリクエストすることができ、レスポンスや例外はブラウザを通じて返されます。
サービスに接続するには、WFS の URL を知っている必要があります。この URL は、ArcGIS Server Manager または ArcCatalog の [ケーパビリティ] タブにあるサービス プロパティで見つけることができます。URL がわかり次第、OGC 規格の操作を使用して、HTTP 経由でサービスに関する情報をリクエストすることができます。情報をリクエストするために使用できる操作の例を以下に示します。
GetCapabilities
このリクエストは、サービスを通じて利用できるすべてのフィーチャ タイプとファンクショナリティを GML 形式で返します。Web ブラウザで GetCapabilities 操作を使用するには、WFS URL をコピーしてアドレス バーに貼り付け、最後に「?request=getCapabilities」を追加します。
URL の例: http://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getcapabilities
次の図は、GetCapabilities 操作から返されるファンクショナリティの例を示しています。
GetCapabilities は、利用可能なすべてのフィーチャクラスとテーブルのリストも返します。
DescribeFeatureType
このリクエストは、WFS サービスの 1 つ以上のフィーチャに関するフィールド情報を説明します。たとえば、フィールド名、フィールド タイプ、フィールドに許容される最小値と最大値、フィーチャクラスまたはフィーチャ テーブルのフィールドに設定されたその他の制約などがあります。
DescribeFeatureType 操作を Web ブラウザで使用するには、WFS URL をコピーしてアドレス バーに貼り付け、URL の最後に「?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&VERSION=1.1.0」を追加します。これにより、フィーチャ サービスで利用可能な各フィーチャ タイプとフィーチャ テーブルに関するフィールド情報がすべて返されます。
URL の例:http://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&VERSION=1.1.0
フィルタの追加
URL の最後に、フィーチャ タイプまたはフィーチャ テーブルの名前とともに次のリクエストを追加することにより、フィールド情報を取得する単一のフィーチャクラスまたはフィーチャ テーブルを指定することもできます。?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=<フィーチャ タイプ>&VERSION=1.1.0
次の例では、DescribeFeatureType リクエストを使用して、cities という名前のフィーチャ タイプに関するフィールド情報を特定しています。
URL の例: http://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=cities&VERSION=1.1.0
GetFeature
このリクエストは、WFS サービスを通じて利用可能な特定のフィーチャ タイプに関する情報を返します。さらに、フィルタを使って返される情報を絞り込むこともできます。WFS サービスで利用可能なさまざまなフィルタの詳細については、「WFS サービス」をご参照ください。
GetFeature 操作を Web ブラウザで使用するには、WFS URL をコピーしてアドレス バーに貼り付け、URL の最後に「?request=getFeature&typename=<フィーチャ タイプ>」を追加します。これにより、フィーチャ タイプ内の各フィーチャまたは行に関するすべての属性およびジオメトリ情報が返されます。
URL の例: http://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities
リクエストにフィルタを追加して、返される結果を絞り込むこともできます。たとえば、指定した座標範囲内にあるすべての都市をリクエストすることができます。次の例では、指定した座標範囲内に 2 個の都市が位置しています。
URL の例: http://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities&BBOX=46.90,-76.21,42.12,-72.88
Data Interoperability Extension を使用した WFS サービスへの接続
Data Interoperability Extension を使用すると、ArcGIS 以外の形式でデータを読み書きすることができます。ArcCatalog にある Interoperability Connection ツールを使用して、WFS サービスを含め、Esri 以外のデータ形式に直接接続することができます。接続が確立されると、カタログ ツリーの [Interoperability Connection] エントリの下にデータ ソースが表示されます。他のデータセットと同様に、接続は ArcMap に追加するか、ジオプロセシング ツールで使用することができます。ArcMap の WFS サービスで Data Interoperability Extension を使用する方法の詳細については、「ArcGIS Desktop を使用して WFS を操作する方法」をご参照ください。
WFS-T サービス経由でのバージョン対応データ編集の管理
WFS-T サービス経由で行われる編集を管理するための効率的なワークフローを作成することが重要です。推奨される方法に従って、WFS-T ユーザが編集するための WFS バージョンを別に作成している場合、セットアップしたシステムは次の図のようになるはずです。
この例では、WFS-T ユーザと ArcMap ユーザがバージョンを使用するため、それぞれのグループが独自のジオデータベース ビューで作業を行えるようになっています。ArcMap ユーザは、ArcMap を通じて DEFAULT バージョンを直接編集します。WFS-T ユーザは、インターネット経由で WFS サービスにアクセスします。これにより、WFS-T ユーザは DEFAULT の子として作成された WFS バージョンを編集することができます。バージョンの詳細については、ArcGIS Desktop ヘルプ システムの「バージョニングの概要」をご参照ください。
2 つのバージョンを同期した状態に保つために、WFS バージョンを DEFAULT バージョンの編集内容で更新し、DEFAULT バージョンを WFS バージョンの編集内容で更新するプロセスを定期的に実行することができます。バージョン対応システムの編集ワークフローでは、これはリコンサイルおよびポストと呼ばれる 2 段階のプロセスとなります。このプロセスは自動化することも、編集ユーザ(権限に応じて)またはデータベース管理者が管理することもできます。リコンサイルとポストのプロセスの詳細については、「バージョン編集プロセスの概要」をご参照ください。
リコンサイルを実行すると、DEFAULT バージョンの更新内容が WFS バージョンの現在の編集セッションに抽出されます。両方のバージョンで同じフィーチャが編集されていた場合は、競合が発生することがあります。競合は自動的に解決するか、[コンフリクト解決] ダイアログ ボックスを通じてそれぞれごとに手動で解決することができます。
競合を処理した後は、ポストを実行することができます。このプロセスにより、WFS バージョンからの変更が DEFAULT バージョンにマージされます。
次の図は、リコンサイルとポストのプロセス全体を示しています。この場合、WFS バージョンはリコンサイル時に DEFAULT バージョンから更新内容を抽出します。変更内容を取り込んだ後、WFS バージョンは更新内容を DEFAULT バージョンにポストします。この時点で、DEFAULT バージョンと WFS バージョンの内容は同じになります。
リコンサイルとポストのプロセスが完了すると、両方のバージョンがフィーチャの最新の状態で更新され、WFS ユーザが編集を再開することができます。
リコンサイルとポストの実行時に使用されなくなったロックが残っていると、プロセスを続行できなくなることに注意してください。これは、WFS-T クライアントによってロックされたフィーチャと、リコンサイルとポストのプロセスを通じて変更されたフィーチャ間での競合を避けるための保護的措置です。また、リコンサイルとポストを実行すると WFS-T バージョンがロックされるため、リコンサイルとポストの実行中は WFS-T ユーザがロックやトランザクション呼び出しを行うことはできなくなります。
この保護的措置に対応するために、すべての WFS-T ユーザに事前に通知した上で、リコンサイルとポストを実行することをお勧めします。これにより、編集ユーザが変更データをデータベースにポストできるようになります。また、リコンサイルとポストの前に、管理者がロック テーブルからロックを手動で削除する必要があるかもしれません。
WFS-T のロック方式の詳細については、「WFS サービス」をご参照ください。