チュートリアル: WFS-T サービスの公開
このチュートリアルでは、ArcMap を使用してトランザクション対応の WFS サービス(WFS-T)を ArcGIS Server に公開する方法を説明します。WFS は、インターネット上で地理フィーチャを提供するための仕様であり、OGC(Open Geospatial Consortium)によって公開されています。トランザクション対応の WFS サービス(WFS-T)では、WFS クライアントが WFS サービスを通じてソース データベース内のデータに編集(挿入、削除、更新)を適用することができます。
WFS ケーパビリティを有効にしてマップ サービスまたはジオデータ サービスを公開すると、ArcGIS for Desktop の ArcGIS Data Interoperability エクステンション for Desktop など、OGC 準拠の WFS クライアントからデータにアクセスできます。これらの WFS クライアントには、データに対する最新の変更も表示されます。WFS サービスを扱うのが初めてで、このチュートリアルに取り組む前に WFS について詳しく知りたい場合は、「WFS サービス」をご参照ください。
WFS サービスは、シェープファイルやジオデータベースなど、Esri ソースのシンプル フィーチャをサポートします。ただし、サービスでトランザクションを有効にする場合は(WFS-T)、編集するデータがすべて ArcSDE ジオデータベースに格納されていなければなりません。このチュートリアルでは、特にバージョン対応のデータを処理するときに使用する必要のあるワークフローを示します。
チュートリアルを始める前に
現在 ArcGIS Server をインストールしただけの状態であれば、サーバに接続してサービスを公開する前に、いくつかの準備作業が必要です。
- ArcGIS Server サイトを構成する方法については、このヘルプ システムの「インストール後の作業」セクションをご参照ください。
- GIS リソースで参照されているデータをサーバで利用できるようにする方法については、「データを ArcGIS Server でアクセス可能にする」をご参照ください。
ジオデータ サービスかマップ サービスかの選択
WFS サービスでは、ジオデータ サービスまたはマップ サービスのどちらかを公開の対象として選択することができます。作成するサービスのタイプを選択するときに、これらの違いを認識している必要があります。次のセクションでは、各自の要件に最適なサービスを判断するのに役立つよう、マップ サービスとジオデータ サービスで利用可能な機能をまとめます。
マップ サービス
WFS マップ サービスは、インターネットまたは OGC 準拠の WFS クライアントを通じて利用できるマップ ドキュメントを表します。WFS ファンクショナリティを持つマップ サービスは、サービスを通じて公開されるデータを細かく制御することができます。マップ サービスをセットアップする主な理由は次のとおりです。
- ジオデータ サービスとは異なり、複数のジオデータベース(ファイルおよび ArcSDE)からのデータを含め、1 つのマップ サービスにさまざまなソースからのデータを追加できます。
- マップ サービスを通じて提供されるフィーチャクラスを選択することができます。
- マップ ドキュメントでフィーチャクラスの名前を変更し、データ ソースでの実際の名前がサービスで公開されないようにすることができます。
WFS マップ サービスには制限もいくつかあります。マップ ドキュメントから WFS サービスを公開する際には、次の点に注意してください。
- マップ ドキュメントは、WFS サービスで提供されるレイヤの仕様にすぎません。サービスの目的はデータ内のフィーチャを提供することなので、レイヤ レベルで定義されるシンボル表示、クエリ定義、フィールド エイリアスは、WFS サービスに渡されません。OGC 仕様を通じてマップのビジュアル プロパティを提供するには、WMS サービスを使用します。
- マップ内の複数のレイヤから同じフィーチャクラスを参照することはできません。
- マップ内の複数のレイヤに同じ名前を付けることはできません。
- WFS はフィーチャを操作するだけなので、マップ内のラスタ レイヤはサービスから除外されます。
- 非空間テーブルは公開されません。
- WFS サービスで編集用のトランザクション(WFS-T)をサポートするには、マップ内のすべてのレイヤのソース データが同じワークスペース(たとえば同じ ArcSDE ジオデータベース)に格納されている必要があります。
ジオデータ サービス
WFS ジオデータ サービスでは、インターネットまたは OGC 準拠の WFS クライアントを通じて ArcSDE ジオデータベースまたはファイル ジオデータベースにアクセスできます。ジオデータ サービスから WFS サービスを作成する際には、ジオデータベース内のすべてのフィーチャクラスがサービスとして公開されることに注意してください。
ジオデータ サービスは、ジオデータベースにリモートからアクセスしなければならない状況で役立ちます。たとえば、ロサンゼルスとニューヨークのオフィスでデータを管理するための ArcSDE ジオデータベースをセットアップしたいとしましょう。ArcSDE ジオデータベースを作成した後、各オフィスはジオデータ サービスを使用して、インターネット上にジオデータベースを公開することができます。
WFS-T サービスのためのデータの準備
読み取り/書き込み権限が割り当てられた WFS サービスを作成する前に、データをセットアップするための初期要件がいくつかあります。
- データを ArcSDE ジオデータベースに読み込む必要があります。
- バージョン対応のデータを処理したい場合は、バージョン対応登録する必要があります。
- バージョンは、WFS ユーザが編集するための専用バージョンでなければなりません。バージョンが存在していない場合は、作成しなければなりません。
- データを編集するためには、特定の WFS ユーザに SDE 接続ファイルを編集するための権限が与えられていなければなりません。
バージョン対応データを使用して WFS-T サービスのデータを準備するには、次の手順に従ってください。
- ArcCatalog または ArcGIS for Desktop のカタログ ウィンドウで、公開するデータを ArcSDE ジオデータベースに読み込みます。データ読み込みの詳細については、「カタログ ツリーでのデータの読み込み」をご参照ください。
- データセットを右クリックし、ショートカット メニューから [バージョン対応レイヤとして登録] を選択して、データを登録します。詳細については、「データのバージョン対応登録」をご参照ください。
- データをバージョン対応登録した後は、WFS ユーザが編集するための専用バージョンを指定しなければなりません。このようなバージョンがない場合は、ArcSDE 接続を右クリックして、[管理] → [ジオデータベースの管理] の順にクリックします。
- 接続ウィンドウで、[バージョン] タブをクリックします。
- 子バージョンを作成するジオデータベースのバージョンを右クリックし、[新規作成] をクリックします。
- 新しいバージョンの [名前] を入力します。作成者以外のユーザがデータを編集する場合は、[アクセス権] が [パブリック] に設定されていなければなりません。
マップ サービスを作成する場合は、以下のマップ サービスに関するセクションに進みます。ジオデータ サービスを作成する場合は、以下のジオデータ サービスに関するセクションに進みます。
マップ サービスを作成する場合
適切なデータが作成されたときに、マップ サービスにそれを公開させるためには、マップ ドキュメントを更新して、新しく作成された WFS バージョンを参照させる必要があります。
- ArcMap でマップ ドキュメントを開きます。
- ArcMap のコンテンツ ウィンドウで、[ソース別にリスト] をクリックします。
- ジオデータベース接続を右クリックして、[接続バージョンの変更] を選択します。
- [接続バージョンの変更] ダイアログ ボックスで、WFS ユーザ専用のバージョンを選択して [OK] をクリックします。
- マップ ドキュメントへの変更を保存します。
ジオデータ サービスを作成する場合
適切なデータが作成されたときに、ジオデータ サービスにそれを公開させるためには、ジオデータベースの接続プロパティを更新して、新しく作成された WFS バージョンを参照させる必要があります。
- ArcCatalog または ArcGIS for Desktop のカタログ ウィンドウで、ジオデータベース接続を右クリックして [管理] → [ジオデータベースの管理] の順に選択します。
- [管理] ダイアログ ボックスで、[バージョン] をクリックします。
- WFS ユーザ専用のバージョンを選択して、[OK] をクリックします。
ArcGIS Server への WFS-T サービスの公開
WFS-T サービスを公開するには、以下の手順に従います。
- 公開するサービス タイプに基づいて、以下の表に示す指示に従います。
オプション
説明
WFS-T マップ サービスを公開する場合
ArcMap でマップ ドキュメントを開き、[ファイル] → [共有] → [サービス] の順に選択します。[次へ] をクリックします。
WFS-T ジオデータ サービスを公開する場合
ArcCatalog またはカタログ ウィンドウで ArcSDE ジオデータベースまたはファイル ジオデータベースを参照し、右クリックして [ジオデータ サービスとして共有] を選択します。
- [サービスとして共有] ウィンドウで、[サービスを公開] を選択します。[次へ] をクリックします。
- [サービスを公開] ダイアログ ボックスで、[ArcGIS Server に接続] をクリックして、サーバへの新しい接続を作成します。
- [ArcGIS Server サーバの追加] ウィンドウで、[GIS サービスを公開する] を選択します。[次へ] をクリックします。
- [サーバの URL] に、接続する ArcGIS Server サイトの URL を入力します。たとえば、「http://myserver:6080/arcgis」と入力します。
- [サーバ タイプ] ドロップダウン リストから、[ArcGIS Server] を選択します。
- 公開プロセス中に、サービス定義ファイルが作成されローカルのディスクに一時的に保存されます。公開プロセスが完了すると、サービス定義がサーバにアップロードされ、ローカル ファイルは削除されます。このチュートリアルでは、デフォルトのステージング フォルダを使用して操作を続けます。
- サーバ管理者がサイトのセキュリティを有効にしている場合は、[ユーザ名] と [パスワード] に値を入力します。[完了] をクリックします。
- 必要に応じて、[サービスを公開] ウィンドウでサービスの新しい名前を入力します。120 文字を超える名前や、英数字とアンダースコア(_)以外の文字が含まれた名前を使用することはできません。[次へ] をクリックします。
- デフォルトでは、ArcGIS Server のルート フォルダ(root)にサービスが公開されます。サービスはルート フォルダ以下のサブディレクトリに整理することができます。サービスを公開するフォルダを選択するか、サービスを格納する新しいフォルダを作成します。[続行] をクリックします。
- [サービス エディタ] が表示されます。[サービス エディタ] を使用して、WFS-T サービスでユーザが実行できる操作を選択し、サーバがサービスを公開する方法を調整します。[ケーパビリティ] タブをクリックします。
- デフォルトでは、マッピングと KML が有効になっています。[WFS] を選択します。
- [サービス エディタ] の左側のペインで、[WFS] をクリックします。このパネルを使用して、WFS サービスのプロパティを構成する方法を選択します。WFS サービスのプロパティを設定することで、クライアントがサービス公開者の意図を理解しやすくなります。
- [URL] フィールドには、クライアントが WFS サービスへのアクセスに使用する URL が表示されます。URL の形式は、「http://<サーバ名>:6080/arcgis/services/<フォルダ名(必要に応じて)>/<サービス名>/MapServer/WFSServer」になります。注意:
WFS サービスの URL をコピーして保存します。この URL は、このチュートリアルの別の手順で必要になります。
- システムが生成したケーパビリティ ファイルを使用して WFS サービスを公開する場合は、デフォルトの [以下にサービス プロパティを入力] オプションを使用します。[Name]、[Tile]、および [OnlineResource] フィールドは自動的に設定され、変更する必要はありません。必要に応じて、リストにあるフィールドを使用してその他のプロパティを設定します。詳細については、「利用可能な WFS サービス プロパティ」をご参照ください。
- WFS サービスを構成して外部のケーパビリティ ファイルを使用する場合は、[外部のケーパビリティ ファイルを使用] を選択します。このオプションを使用する場合は、WFS ケーパビリティ ファイルをあらかじめ作成しておく必要があります。詳細については、「WFS サービスでの外部ケーパビリティ ファイルの使用」をご参照ください。
- [URL] フィールドには、クライアントが WFS サービスへのアクセスに使用する URL が表示されます。URL の形式は、「http://<サーバ名>:6080/arcgis/services/<フォルダ名(必要に応じて)>/<サービス名>/MapServer/WFSServer」になります。
- [WFS] パネルの下部にある [トランザクションの有効化] チェックボックスをオンにします。これにより、WFS ユーザはソース データベースのデータを編集して、変更を適用できるようになります。
- [分析] をクリックします。マップ ドキュメントまたはジオデータベースをサーバに公開できるかどうかが検証されます。ヒント:
WFS-T サービスを設定する際、表示領域を広くするには、[サービス エディタ] の最上部にある折りたたみ ボタンをクリックします。
- [準備] ウィンドウでエラー を修正します。エラーの修正は公開の前に行う必要があります。さらに必要であれば、警告メッセージと情報メッセージに従って問題を修正し、WFS-T サービスのパフォーマンスと外観を改善します。これらの問題の解決の詳細については、「GIS リソースの解析」をご参照ください。注意:
サーバが確実にデータを認識して使用できるように、フォルダとジオデータベースを ArcGIS Server サイトに登録することができます。以下の手順を続ける場合、未登録のフォルダまたはジオデータベースから GIS リソースが参照するデータはすべて、公開時にサーバにコピーされます。これは、サーバがサービスで使用されているすべてのデータにアクセスできることを保証するための予防的な処置です。フォルダまたはジオデータベースを ArcGIS Server サイトに登録する手順については、「ArcGIS for Desktop を使用したデータの ArcGIS Server への登録」をご参照ください。
- 必要に応じて、[サービス エディタ] で [プレビュー] をクリックします。Web 上で WFS-T サービスがどのように表示されるかを確認することができます。詳細については、「マップのプレビュー」をご参照ください。
- マップ ドキュメントまたはジオデータベース内のエラーを修正したら、[公開] をクリックします。
WFS サービスの使用
公開した WFS サービスは、Web ブラウザをはじめとして、WFS 1.1 および GML の Simple Features プロファイルをサポートする任意のクライアントで利用することができます。WFS サービスの最も単純なクライアントの 1 つは Web ブラウザです。HTTP 経由で情報をリクエストすることができ、レスポンスや例外はブラウザを通じて返されます。
Web ブラウザから WFS サービスにアクセスするには、以下の手順に従います。
- Web ブラウザを開きます。
- 以下のセクションに示すように、GetCapabilities、DescribeFeatureType、および GetFeature リクエストを実行します。
GetCapabilities
このリクエストは、サービスを通じて利用できるすべてのフィーチャ タイプとファンクショナリティを GML 形式で返します。GetCapabilities 操作を使用するには、WFS サービスの URL をコピーしてアドレス バーに貼り付け、URL の末尾に「?request=getcapabilities」を追加します。
URL の例: http://myserver:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=GetCapabilities
次の図は、GetCapabilities 操作から返されるファンクショナリティの例を示しています。
GetCapabilities は、利用可能なすべてのフィーチャクラスとテーブルのリストも返します。
DescribeFeatureType
このリクエストは、WFS サービスの 1 つ以上のフィーチャに関するフィールド情報を説明します。たとえば、フィールド名、フィールド タイプ、フィールドに許容される最小値と最大値、フィーチャクラスまたはフィーチャ テーブルのフィールドに設定されたその他の制約などがあります。
DescribeFeatureType 操作を使用するには、WFS URL をコピーしてアドレス バーに貼り付け、URL の末尾に「?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&VERSION=1.1.0」を追加します。フィーチャ サービスで利用できるフィーチャ タイプおよびテーブルごとに、すべてのフィールド情報が返されます。
URL の例: http://myserver:6080/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」になります。
WFS サービスで利用できる他のフィルタの詳細については、「Web ブラウザでの WFS サービスとの通信」をご参照ください。
次の例では、DescribeFeatureType リクエストを使用して、cities という名前のフィーチャ タイプに関するフィールド情報を特定しています。
URL の例: http://myserver:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=cities&VERSION=1.1.0
GetFeature
このリクエストは、WFS サービスを通じて利用可能な特定のフィーチャ タイプに関する情報を返します。
GetFeature 操作を Web ブラウザで使用するには、WFS URL をコピーしてアドレス バーに貼り付け、URL の末尾に「?request=getFeature&typename=<フィーチャ タイプ>」を追加します。これにより、フィーチャ タイプ内の各フィーチャまたは行に関するすべての属性およびジオメトリ情報が返されます。
URL の例: http://myserver:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities
フィルタの追加
リクエストにフィルタを追加して、返される結果を絞り込むこともできます。たとえば、指定した座標範囲内にあるすべての都市をリクエストすることができます。次の例では、指定した座標範囲内に 2 個の都市が位置しています。WFS サービスで利用できる他のフィルタの詳細については、「Web ブラウザでの WFS サービスとの通信」をご参照ください。
URL の例: http://myserver:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities&BBOX=46.90,-76.21,42.12,-72.88
Data Interoperability エクステンションを使用した WFS サービスへの接続
Data Interoperability エクステンションを使用すると、ArcGIS 以外のデータ形式でデータを読み書きすることができます。ArcCatalog または ArcGIS for Desktop のカタログ ウィンドウで Interoperability Connection ツールを使用して、WFS サービスなどの Esri 以外のデータ形式に直接接続することができます。接続が確立されると、カタログ ツリーの [Interoperability Connection] エントリの下にデータ ソースが表示されます。他のデータセットと同様に、接続はコンテンツ ウィンドウに追加するか、ジオプロセシング ツールで使用することができます。Data Interoperability エクステンションを使用して WFS サービスに接続する方法の詳細については、「ArcGIS for 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 サービス」をご参照ください。