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