WFS サービス

ArcGIS Server では、OGC(Open Geospatial Consortium)の WFS(Web Feature Service)仕様に準拠するサービスを公開することができます。WFS は、Web 経由でジオグラフィック フィーチャを提供するためのオープン規格です。

WFS を使って ArGIS Server でデータを公開するためには、適切な ArcGIS Server ライセンスを取得する必要があります。ライセンス要件については、「機能比較表」をご参照ください。

このトピックは次のセクションで構成されています。

WFS サービスを使用する理由

WFS サービスを通じてデータを提供すると、Web サービスを操作できるアプリケーションは、マップまたはジオデータベース内のジオグラフィック フィーチャにアクセスすることができます。マップのイメージを返す OGC WMS(Web Map Service)とは異なり、WFS サービスはジオメトリや属性を持つ実際のフィーチャを返すため、クライアントはあらゆる地理空間解析でこれを使用できます。WFS サービスは、ユーザがデータの空間解析や属性検索を実行するためのフィルタもサポートします。

技術的な注意事項

WFS サービスを作成する方法

WFS サービスを作成する方法には、マップから作成する方法とジオデータベースから作成する方法の 2 種類があります。

マップからの WFS サービスの作成

ArcMap マップ ドキュメント(*.mxd)から WFS サービスを作成することができます。Manager または ArcCatalog を使用して、マップ ドキュメントを ArcGIS Server マップ サービスとして公開します。ジオデータベースをサービスとして公開する際には、[WFS] ケーパビリティをオンにします。これにより、WFS クライアントがサービスにアクセスするために使用できる URL が作成されます。

サービスの公開の詳細については「GIS リソースのサーバへの公開」をご参照ください。

マップ ドキュメントは、WFS サービスで提供されるレイヤの仕様にすぎません。サービスの目的はデータ内のフィーチャを提供することなので、レイヤ レベルで定義されるシンボル表示、クエリ定義、フィールド エイリアスは、WFS サービスに渡されません。OGC 仕様を通じてマップのビジュアル プロパティを提供するには、WMS サービスを使用します。マップ ドキュメントから WFS サービスを公開する際には、次の点に注意してください。

  • WFS サービスに編集用のトランザクション(WFS-T)をサポートさせたい場合は、マップ内のすべてのレイヤのソース データが同じ ArcSDE ジオデータベースに格納されていなければなりません。それ以外の場合は、マップにさまざまなソースのレイヤを追加することができます。
  • マップ内の複数のレイヤは、同じフィーチャクラスを参照したり、同じ名前を持つことはできません。そのようなことを行うと、ワークスペースのアイテムまたは名前が重複していることを示すエラー メッセージが表示されます。
  • レイヤの名前は、WFS から返されるタイプ名になります。
  • WFS サービスを通じてデータを公開する場合、SDE ビューを含むデータをジオデータベースに登録する必要があります。
  • WFS はフィーチャを操作するだけなので、マップ内のラスタ レイヤはサービスから除外されます。
  • WFS サービスは、結合、リレート、XY イベント、ルート、カバレッジ、または Data Interoperability Extension ベースのレイヤのような、仮想クラスをサポートしません。

WFS サービスを公開する以外のさまざまな目的でソース マップ ドキュメントを使用する場合は、WFS サービスのソース ドキュメントとしての役割を果たすマップ ドキュメントのコピーを作成する必要があるでしょう。そうすれば、元のマップ ドキュメントを変更せずに、要件に合わせてコピーを変更することができます。

ジオデータベースからの WFS サービスの作成

ジオデータベースから WFS サービスを作成することもできます。ジオデータベースは、パーソナル、ファイル、または ArcSDE など、どのタイプでもかまいません。Manager または ArcCatalog を使用して、ジオデータベースを ArcGIS Server ジオデータ サービスとして公開します。ジオデータベースをサービスとして公開する際には、[WFS] ケーパビリティをオンにします。これにより、WFS クライアントがサービスにアクセスするために使用できる URL が作成されます。

ジオデータ サービスから WFS サービスを作成すると、接続ユーザがアクセスできるすべてのフィーチャクラスがサービスで提供されるようになります。また、ジオデータベースに登録されたフィーチャクラス、テーブル、および SDE ビューのみが、サービス内で提供されます。

サービスの公開の詳細については「GIS リソースのサーバへの公開」をご参照ください。

WFS サービスをジオデータベースから作成すると、フィーチャの読み取りや検索に加え、フィーチャの編集も可能になります。

WFS サービスの作成に関する注意事項

マップまたはジオデータベース内のフィーチャクラスが EPSG コードで表せない空間参照を使用する場合は、そのフィーチャクラスの空間参照として WGS 84 が使用されます。

不明な空間参照系を使用するマップまたはジオデータベース内のフィーチャクラスは、WFS サービスによって無視されます。

WFS プロパティの設定

WFS サービスを公開した後は、その WFS サービス固有のプロパティを設定することができます。これらのプロパティは、クライアントがサービスに関する情報を取得するために使用できるメタデータを定義します。サービス レベルのプロパティには、デフォルトで設定されるものと設定されないものがあります。次に、Manager または ArcCatalog を使ってサービス レベルのメタデータを定義するプロパティの設定方法を示します。

  1. ArcCatalog または ArcGIS Server Manager を起動します。
  2. [サービス プロパティ] ダイアログ ボックスを開きます。ArcCatalog の場合は、既存のサービスを右クリックし、[サービス プロパティ] をクリックします。ArcGIS Server Manager の場合は、[サービス] タブをクリックし、[サービスの管理] をクリックし、サービスの [編集] アイコンをクリックします。
  3. [ケーパビリティ] タブをクリックします。
  4. ケーパビリティのリストで、[WFS] がまだチェックされていなければ、オンにします。すでにチェックされている場合は、WFS のテキスト部分をクリックします。WFS 固有のプロパティが表示されます。
  5. [以下にサービス プロパティを入力] をクリックします。
  6. テキスト ボックスに、サービスの名前、タイトル、作成者の連絡先など、サービスに追加したいサービス レベルのメタデータを入力します。
  7. メタデータの追加が完了したら、[保存して再起動] をクリックします。入力した情報は、システムによって生成されるケーパビリティ ファイルで提供されます。

これらのプロパティの詳細については、OGC Web Services Common Specification のバージョン 1.0 をご参照ください。

[トランザクションの有効化] チェックボックスは、WFS-T 経由での編集を可能にするために使用されます。詳細については、「編集と WFS サービス」セクションをご参照ください。

メタデータを定義するもう 1 つの方法は、外部のケーパビリティ ファイルを使用することです。外部のケーパビリティ ファイルを使用すると、フィーチャ タイプのデフォルト以外の投影法を追加することができます。デフォルトでは、レイヤまたはフィーチャクラスの座標系と WGS84(EPSG 4326)が含まれます。外部のケーパビリティ ファイルの使用については、「高度なトピック」セクションをご参照ください。

ArcGIS 10.0 で新しく追加された機能として DefaultMaxFeatures プロパティを設定することもできます。これによって サービスから返されるフィーチャの最大数を制御することができます。このプロパティは、コンフィグレーション サービス ファイルまたは外部のケーパビリティ ファイル内に設定することができます。DefaultMaxFeatures プロパティは、WFS 1.1.0 でのみサポートされているので、外部のケーパビリティ ファイルを使用している場合は、このプロパティを 1.1.0 プロパティを参照しているファイル内に設定するだけでかまいません。

コンフィグレーション サービス ファイルでは、DefaultMaxFeatures プロパティは、次のように WFSServer セクションで定義される必要があります:

<Extension>
	 <TypeName>WFSServer</TypeName>
  <Enabled>true</Enabled>
  <Properties>
    ...
    <EnableDefMaxFeatures>true</EnableDefMaxFeatures>
    <DefMaxFeaturesValue>200</DefMaxFeaturesValue>
  </Properties>
  ...
</ows:Constraint>
</Extension>

外部のケーパビリティ ファイルを使用している場合、DefaultMaxFeatures プロパティは、次のように WFSServer 1.1.0 ファイルのメタデータ セクションで定義される必要があります:

<ows:Constraint name="DefaultMaxFeatures">
	 <ows:Value>200</ows:Value>
</ows:Constraint>

特殊文字

次に示した文字は、いずれのサービス プロパティにも含めることはできません。&, <, >, ", '. こうした文字を使用する場合、次に示した表の適切なエスケープ文字列で置換する必要があります。

&

&amp;

<

&lt;

>

>

"

&quot;

'

&apos;

WFS サービスのセキュリティ

WFS サービスは、WFS ユーザに ArcGIS Server マップ サービスまたはジオデータ サービスを提供します。WFS サービスのセキュリティは、その親のマップ サービスまたはジオデータ サービスのセキュリティを制御することにより管理されます。Planners などの特定のロールに対してマップへのアクセスが拒否された場合、Planners は、SOAP、REST、または WFS のどのインタフェースを使用したとしても、マップにアクセスできなくなります。

ArcGIS Server はさまざまな認証方式をサポートしています。OGC インタフェース経由でのアクセスが想定されるサービスについては、HTTP 基本認証、HTTP ダイジェスト認証、または Windows 統合認証のいずれかを使って保護する必要があります。ほとんどの OGC クライアント(非 Esri および Esri クライアント)は、広く使用されているこれらの標準認証方式を理解し、それらに対応します。

WFS サービスへのアクセス

ArcGIS Server で作成した WFS サービスは、WFS をサポートするすべてのクライアントで使用することができます。

クライアントのタイプ

WFS サービスの最も単純なクライアントは Web ブラウザです。WFS リクエストは HTTP を通じて送信することができ、レスポンスまたは例外はブラウザを通じて返されます。すべての WFS サービスは、GetCapabilities、DescribeFeatureType、GetFeature の 3 つのオペレーションをサポートします。URL パラメータとこれらのオペレーションを使用して、サービスのメタデータ、フィーチャ タイプ情報、GML でエンコードされたフィーチャを WFS サービスから取得することができます。これらのオペレーションとパラメータの詳細については、OGC WMS Specification をご参照ください。

WFS サービスを利用するために使用できるサードパーティ クライアントはさまざまです。ArcGIS Server によって作成された WFS サービスを使用するためには、クライアントが WFS 1.1 または 1.0、および GML のシンプル フィーチャ プロファイルをサポートしている必要があります。

ArcGIS Server の標準の Web マッピング アプリケーションは、WFS サービスの追加をサポートしません。ただし、ArcCatalog と ArcMap は WFS サービスに対応することができます。ArcMap 内での WFS サービスの使用については、「ArcGIS Desktop を使用して WFS を操作する方法」をご参照ください。

WFS 1.1 仕様には、WGS84 を含め、多くの地理座標系の座標が緯度、経度の順(Y、X)で返されることが記されています。ArcGIS Server を通じて公開された WFS サービスは、この仕様に従います。ただし、一部の WFS クライアントは、座標が経度、緯度の順(Y、X)で返されることを想定します。この場合は、WFS サービスから返されたフィーチャの座標の順序を入れ替えて、経度、緯度を返すことができます。詳細については、この後の「高度なトピック」 をご参照ください。

URL の構造

サービスに接続するには、URL を知っている必要があります。URL は次のパターンに従います。

http://<サーバ名>/<インスタンス名>/services/<フォルダ名(必要に応じて)>/<サービス名>/<サービス タイプ>/WFSServer?

  • サーバ名は、Web サーバ コンピュータの名前です。
  • インスタンス名は、ArcGIS Server をインストールしたときに指定した ArcGIS Server インスタンスの名前です。
  • サービス タイプは、WFS サービスをマップとジオデータベースのどちらから作成するかに応じて、それぞれ MapServer または GeoDataServer になります。

たとえば、DemoFolder というフォルダに WFSDemoService というマップ サービスが含まれていて、MyServer というサーバの arcgis というデフォルト名のインスタンスで実行されている場合、この WFS サービスの URL は次のようになります。http://MyServer/arcgis/services/DemoFolder/WFSDemoService/MapServer/WFSServer?

同様に、ジオデータ サービスで WFS ケーパビリティを有効にした場合、URL は次のようになります。http://MyServer/arcgis/services/DemoFolder/WFSDemoService/GeoDataServer/WFSServer?

フィルタの使用

WFS サービスを操作する際には、一連のフィルタを使ってフィーチャのグループを選択することができます。ArcGIS Server で作成された WFS サービスは、OGC OpenGIS FE(Filter Encoding)Implementation Specification 1.1 を使用します。次のフィルタを適用することができます。

ジオメトリ

空間

論理演算

比較

レコードの並べ替え(Sort)

Envelope

BBOX

And

EqualTo

SortBy*

Point

Equals

OR

NotEqualTo

MultiPoint

Disjoint

Not

LessThan

LineString

Intersects

GreaterThan

Polygon

Crosses

LessThanOrEqualTo

Touches

GreaterThanOrEqualTo

Within

LIKE

Contains

Between

Overlaps

NullCheck

注意注意:

SortBy フィルタは、ArcSDE ジオデータベースに格納されたデータに基づく WFS サービスのみに適用することができます。

GetFeature でこれらのフィルタを使用するサンプルについては、OGC の「Web Feature Service Implementation Specification」のセクション 9.5 をご参照ください。

FeatureID パラメータの操作

FeatureID パラメータを GetFeature リクエストで使用して、WFS サービス内の特定のフィーチャをリクエストすることができます。FeatureID パラメータは、フィーチャの OBJECTID ではなく、FeatureType と gml:id で構成されています。ArcGIS WFS サービス内のフィーチャの FeatureID の形式は、<フィーチャ タイプ>.<gml:id> です。WFS サービス内のフィーチャの gml:id を特定する 1 つの方法は、対象の FeatureType に GetFeature リクエストを行うことです。

注意注意:

gml:ids は、シェープファイルに基づいた WFS サービス内のフィーチャでは使用できません。

たとえば、次のような場合です。WFS サービスには、Cities という名前の FeatureType があります。Cities に対して GetFeature リクエストを行うと、レスポンスには各フィーチャの gml:id が含まれます。

URL の例:http://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities

GetFeature リクエスト

この例では、バンクーバー市の FeatureID は cities.F293__1 です。以下のリクエストは、FeatureID を使用して、バンクーバー市を具体的にリクエストする場合に使用することができます。http://bobmk/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&featureid=cities.F293__1

Filter パラメータの操作

Filter パラメータを GetFeature リクエストで使用して、WFS サービス内の特定のフィーチャをリクエストすることができます。Filter パラメータの利点は、これが WFS 仕様で定義された標準的なキーワード/値の組み合わせのエンコーディングの一部であり、HTTP Get リクエストの末尾に追加できる点です。Filter パラメータの値は、URL でエンコードされた OGC フィルタ XML 文字列に設定する必要があります。上記の表にリストしたサポートされているフィルタはすべて、暗号化してから Filter パラメータを介してサーバへ送信する必要があります。

たとえば、WFS サービスに blockgroups という名前の FeatureType を作成した場合、以下の GetFeature リクエストを送信することにより、-122.423192682619, 37.7877919206256, -122.421377806544, 37.7893634225143 の範囲内で blockgroups フィーチャをリクエストできます。

http://server/arcgis/services/playground/sanfrancisco_wfs/MapServer/WFSServer?service=WFS&request=GetFeature&version=1.1.0&typename=esri:blockgroups&Filter=<ogc:Filter><ogc:BBOX><ogc:PropertyName>Shape</ogc:PropertyName><gml:Box srsName="urn:x-ogc:def:crs:EPSG:4326"><gml:coordinates>37.7877919206256,-122.423192682619 37.7893634225143,-122.421377806544</gml:coordinates></gml:Box></ogc:BBOX></ogc:Filter>

122.431577, 37.749936 といった特定のポイント フィーチャを含む blockgroups フィーチャをリクエストしたい場合には、以下の GetFeature リクエストを送信できます。

http://server/arcgis/services/playground/sanfrancisco_wfs/MapServer/WFSServer?service=WFS&request=GetFeature&version=1.1.0&typename=esri:blockgroups&Filter=<ogc:Filter><ogc:Contains><ogc:PropertyName>Shape</ogc:PropertyName><gml:Point srsName="urn:x-ogc:def:crs:EPSG:4326"><gml:pos srsName="urn:x-ogc:def:crs:EPSG:4326">37.749936 -122.431577</gml:pos></gml:Point></ogc:Contains></ogc:Filter>

注意注意:

WFS では、関連する名前空間の接頭辞をフィルタ XML 文字列に含める必要があります。さらに、Web ブラウザや Web サーバによって不正に変換されるのを防ぐために、フィルタ XML 文字列をサーバへ送信する前に URL でエンコードします。

編集と WFS サービス

マップ サービスとジオデータ サービスは、ジオデータベースなどの Esri データ ソースからデータを公開するために使用されます。WFS ケーパビリティを有効にしてマップ サービスまたはジオデータ サービスを公開すると、OGC 準拠の WFS クライアントがデータにアクセスできるようになります。これらの WFS クライアントには、データに対する最新の変更も表示されます。

ビューアなどの WFS クライアントからリクエストが送信されると、その時点でデータ ソースに含まれているデータが返されます。たとえば、フィーチャクラスが含まれたマップ ドキュメントがあるとします。このフィーチャクラスはファイル ジオデータベースに格納されています。このマップ ドキュメントをマップ サービスとして公開し、WFS ケーパビリティを有効にします。WFS ビューアを使用するクライアントは、マップ サービスによって提供される WFS URL を使用して、フィーチャクラス内のデータにアクセスできます。

別のユーザがソースのファイル ジオデータベースにアクセスし、フィーチャクラス内のフィーチャを追加、更新、削除するとしましょう。次回、WFS ビューアを使用するクライアントが更新を行うと、最新の編集内容が適用されたデータが表示されます。

データ ソースが ArcSDE ジオデータベースである場合、ジオデータ サービスとマップ サービスは特定のバージョンからデータを公開します。そのバージョンでデータが編集された場合、それらの変更内容は WFS クライアントと非 WFS クライアントの両方に反映されます。ただし、他のバージョンで編集が行われた場合は、公開されたバージョンにリコンサイルされるまで変更内容はクライアントに表示されません。

これにより、サービスを通じて提供されるデータをより細かく制御することができます。たとえば、WFS という名前のバージョンから、WFS ケーパビリティが有効な状態で何らかのデータを公開するとしましょう。そして、WFS ビューアを使用するクライアントがサービスを通じてデータへのアクセスを開始します。一方で、オフィスにいる編集ユーザが ArcGIS を使って DEFAULT バージョンを更新します。編集ユーザによって行われた変更がチェックされ、必要に応じて調整されます。評価が完了すると、WFS バージョンが DEFAULT バージョンでリコンサイルされます。この時点で、WFS クライアントには編集ユーザによる最新の更新内容が表示されます。

トランザクション対応の WFS サービス

トランザクション対応の WFS サービス(WFS-T とも呼ばれます)では、WFS エディタから WFS サービスを通じてソース データベース内のデータに変更を適用することができます。WFS-T を通じて変更を適用するには、データが ArcSDE ジオデータベースに格納されている必要があります。トランザクションは、バージョン対応のデータ、バージョン未対応のデータ、または両者の組み合わせが含まれるサービスで有効にすることができます。バージョン対応のデータの使用を選択する場合、デフォルト以外のバージョンからサービスを公開することも推奨されます。

トランザクション対応の WFS サービスとしてジオデータベースを公開する手順は次のようになります。

  1. WFS サービスを通じて公開するデータを、バージョン対応またはバージョン未対応のいずれにするかを決定します。バージョン対応のデータを公開する場合、トランザクション対応の WFS エディタで使用するための専用バージョンを作成します。バージョン未対応のデータを使用する場合、デフォルト バージョンでサービスを公開することができます。
  2. データを WFS サービスとして公開するために使用するサービスのタイプを選択します。ジオデータベース接続ファイル(ジオデータ サービスとして)またはマップ ドキュメント(マップ サービスとして)の公開が可能です。バージョン対応のデータを含むマップ サービスを使用する場合、マップ ドキュメント内のデータが、WFS エディタで使用するために作成された専用バージョンからのデータのみを参照していることを確認する必要があります。サービスの WFS ケーパビリティが有効になっていることを確認します。
  3. サービスのトランザクションを有効にします。これは、ArcCatalog または Manager で次のように行うことができます。
    • サービスを停止します。
    • [サービス プロパティ] を表示します。
    • [ケーパビリティ] タブをクリックします。
    • WFS の(チェックボックスではなく)名前の部分をクリックします。
    • [トランザクションの有効化] チェックボックスをオンにします。
    • サービスを開始します。

トランザクションが有効になっている場合、WFS クライアントはトランザクション対応の WFS メソッドを使ってジオデータベースに変更を適用することができます。変更を適用する方法は次のようになります。

  • トランザクションが有効な状態で公開されている WFS サービスに WFS クライアントが接続します。
  • 編集対象のフィーチャと行がサーバ上でロックされます(これには WFS の GetFeatureWithLock メソッドを使用できます)。
  • WFS クライアントの WFS エディタを使用して編集が行われます。
  • 編集内容がサーバ上で適用されます(これには WFS の Transaction メソッドを使用できます)。

編集がポストされると、ロックが解除され、他の WFS エディタがフィーチャを編集できるようになります。ロックはタイム アウト時にも解除できます。デフォルトでは、ロックは 5 分後にタイム アウトになりますが、GetFeatureWithLock メソッドを使用すると、タイム アウトを分単位で調整することができます。管理者は、コンフィグレーションを手動で編集して DefaultLockExpiration エレメント(分単位)を設定することにより、デフォルトのタイム アウトを設定することができます。

クライアントが GetFeatureWithLock メソッドを使ってロックをリクエストすると、フィーチャがロックされたフィーチャ コレクションと lockID が返されます。リクエストされたフィーチャのいずれかをロックできない場合はリクエストが失敗するので、クライアントは GetFeatureWithLock メソッドを再び呼び出す必要があります。他のクライアントは、ロックが解除されるまで、これらのフィーチャのロックを取得できなくなります。

挿入専用トランザクションでは、フィーチャをロックする必要はありません。既存のフィーチャは変更(更新または削除)されないため、GetFeatureWithLock メソッドを呼び出す必要はありません。更新または削除を伴うトランザクション リクエストでは、lockID が必要です。

WFS-T を通じて変更がポストされると、(バージョン対応のデータで)公開されたバージョンに、または(バージョン未対応のデータで)ビジネス テーブルに変更が適用されます。次のセクションでは、バージョン対応またはバージョン未対応のデータのいずれかを操作する際に知っておく必要のあるワークフローの重要な相違点について説明します。

WFS-T サービスとバージョン対応のデータ

バージョニングを利用して、ジオデータベースを WFS エディタと非 WFS エディタの両方に公開し、徹底した競合検出により 2 つのグループによって行われた編集内容を効果的にマージすることができます。編集内容をマージするには、公開された WFS-T バージョンをその親とリコンサイルし、ポストします。未解決のロックがある場合、リコンサイルとポストを実行することはできません。これは、WFS-T クライアントによってロックされたフィーチャと、リコンサイルとポストのプロセスによって変更されたフィーチャ間での競合を回避するための措置です。さらに、リコンサイルとポストは公開されたバージョンをロックし、リコンサイル/ポスト プロセスの間、GetFeatureWithLock メソッドと Transaction メソッドを呼び出せないようにします。バージョン対応のデータの操作についての詳細は、バージョニングの概要

WFS-T サービス ワークフローとバージョン対応のデータ

フィーチャのロックは、ロック テーブルに基づいてサーバ側で管理されます。ロック テーブルは、トランザクションが有効化されたときに作成され、通常のテーブルとしてジオデータベースに格納されます。ロック テーブルには、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 クライアントのみを使用する予定の場合、サービスに基づくバージョン対応のデータと振舞いは同じになります。ただし、ArcMap のような非 WFS-T クライアントを利用する場合、サービス内で公開したデータを編集しますが、その際に注意しなければならない点がいくつかあります。

  1. ArcMap エディタはフィーチャ ロックを認識しないため、その結果として WFS-T サービスを通じてロックされたフィーチャが編集されます。
  2. ArcMap エディタがフィーチャを編集すると、WFS-T クライアント側ではそれらのフィーチャはロックされているように見えます。結果として、WFS-T クライアントは、ArcMap エディタが編集内容を保存するまで、それらのフィーチャに対してロック、更新、または削除を実行することができません。

トランザクションを無効にしたり、WFS サービスを削除しても、ロック テーブルは自動的に削除されません。そのバージョンを参照する WFS-T サービスがなくなったときに、このテーブルを手動で削除することができます。

注意

  • WFS-T を使用するためには、ArcGIS Server が ArcSDE ジオデータベースに接続するために使用する DBMS ユーザに DBMS でテーブルを作成するための権限が与えられている必要があります。
  • ArcMap にはトランザクション対応の WFS 編集のメカニズムがないため、WFS を使ってフィーチャを編集するためには、サードパーティ クライアントを使用しなければなりません。
  • WFS-T を通じて編集を行う場合、サービスへのアクセスが必ずしも要求されなければ、プールされたサービスを使用することができます。
  • Z 対応のフィーチャクラスについては、WFS-T を使って編集することはできません。

高度なトピック

ここでは、WFS サービスに関する高度な情報を取り上げます。

外部ケーパビリティ ファイルの使用

外部ケーパビリティ ファイルを使用した WFS サービスの公開は、OGC WFS 仕様と WFS ケーパビリティ ファイル構文に精通しているユーザを対象としています。この方法でサービスを公開すると、WMS サービスを最も柔軟にカスタマイズすることができます。外部ケーパビリティ ファイルでは次の操作を行うことができます。

  • サービス レベルのメタデータ情報を WFS ケーパビリティ ファイルに追加します。
  • フィーチャ レベルのメタデータ情報を WFS ケーパビリティ ファイルに追加する
  • ArcGIS Server に定義されている投影法のリストから空間参照系を追加する

外部ケーパビリティ ファイルを使って WFS サービスを公開すると、サービスがアクセスされるたびにケーパビリティ ファイルを一から作成する手間が省けます。サービスに含まれているタイプ名の数が多い場合は特にそうですが、これにより WFS サービスへの接続が高速になることがあります。ただし、サービスの元のマップ ドキュメントまたはジオデータベースを変更する場合、サービスを引き続き動作させるためには、ケーパビリティ ファイルも更新する必要があります。

外部ケーパビリティ ファイルを作成するのに使用される 2 つの異なるメソッドがあります。XML またはテキストエディタを使用して、ケーパビリティ ファイルを一から作成することができます。また、WFS サービスをデフォルトの設定で公開した後、Web ブラウザから GetCapabilties を呼び出すことにより、ケーパビリティ ファイルを生成することもできます。GetCapabilties から返されたコンテンツをファイルに保存し、必要に応じて変更を加えて、外部ケーパビリティ ファイルとして使用することができます。外部ケーパビリティ ファイルの構造化および内容を入力する方法の詳細については、このトピックの最後に示す「参考文献」リンクをご参照ください。

ArcGIS 9.3 SP1 では、ArcGIS Server は、1.1.0 および 1.0.0 OGC WFS 仕様の両方に準拠します。そのため、ArcGIS 9.3 SP1 の外部ケーパビリティ ファイルの作成および使用の手順は変更されています。次に、既存の WFS サービスから外部ケーパビリティ ファイルを作成し、それらのファイルを使用して WFS サービスを公開するための手順を示します。一部の手順は、ArcGIS 9.3 と ArcGIS 9.3 SP1 で開始する新しいプロセスの両方を対象に説明されています。

ArcGIS 9.3 で外部ケーパビリティ ファイルを使用して WFS サービスを作成し公開する手順

パート 1:既存の WFS サービスから外部ケーパビリティ ファイルを作成する

  1. ArcCatalog または ArcGIS Server Manager を起動します。
  2. [サービス プロパティ] ダイアログ ボックスを開きます。ArcCatalog の場合は、既存のサービスを右クリックし、[サービス プロパティ] をクリックします。ArcGIS Server Manager の場合は [サービス] タブをクリックし、サービスの [編集] アイコンをクリックします。
  3. [ケーパビリティ] タブをクリックします。
  4. ケーパビリティのリストで、[WFS] がまだチェックされていなければ、オンにします。すでにチェックされている場合は、WFS のテキスト部分をクリックします。WFS 固有のプロパティが表示されます。
  5. WFS [URL] をハイライト表示にして、それをコピーして Web ブラウザ内に貼り付けます。
  6. WFS 1.1.0 仕様の外部のケーパビリティ ファイルを作成するには、?request=getCapabilities または request=getCapabilities&version=1.1.0 を Web ブラウザ内の WFS URL に追加して、名前の末尾にバージョン番号が追加された XML ファイルとして結果を保存します。ArcGIS 9.3 では、XML ファイルは GetCapabilities110.xml として保存されなければなりません。

パート 2:ArcGIS 9.3 で外部ケーパビリティ ファイルを使用して WFS サービスを作成する

ケーパビリティ ファイルを作成した後、SOC およびサーバからアクセス可能なフォルダ内にそれを配置することができます。たとえば、ファイルは、ジオデータベースやサービスのマップ ドキュメントと同じフォルダ内に配置することができます。URL も使用することができます。

デフォルトのプロパティを使用している既存のサービスを更新して外部ケーパビリティ ファイルを使用できるようにするか、または外部ケーパビリティ ファイルを参照する新しいサービスを作成することもできます。次の手順は、外部ケーパビリティ ファイルを使用して WFS サービスを公開する方法を示しています。

注意注意:

ArcGIS 9.3 のフォルダに保存できる外部ケーパビリティ ファイルは 1 つのみであることに注意してください。それらのファイルの名前がすべて GetCapabilities110.xml であるために、1 つに限定しないとサーバがどのケーパビリティ ファイルを使用するか区別できないからです。

外部のケーパビリティ ファイルを使用して WMS サービスを公開する手順は次のとおりです。

  1. ArcCatalog または ArcGIS Server Manager を起動します。
  2. 更新したいサービスを停止します。
  3. [サービス プロパティ] ダイアログ ボックスを開きます。ArcCatalog の場合は、既存のサービスを右クリックし、[サービス プロパティ] をクリックします。ArcGIS Server Manager の場合は [サービス] タブをクリックし、サービスの [編集] アイコンをクリックします。
  4. [ケーパビリティ] タブをクリックします。
  5. ケーパビリティのリストで、[WFS] がまだチェックされていなければ、オンにします。すでにチェックされている場合は、WFS のテキスト部分をクリックします。WFS 固有のプロパティが表示されます。
  6. [外部のケーパビリティ ファイルを使用] を選択します。
  7. 次に、外部ケーパビリティ ファイルの場所を指定します。場所は、ケーパビリティ ファイルが含まれる URL またはフォルダ パスを提供することによって指定されます。場所または URL を指定する場合、XML ファイルの名前を含めないようにしてください。URL の例は、http://<サーバ名>/arcgis/wfs、そしてフォルダの場所の例は、C:\arcgis\arcgisserver\wfs. です。
  8. サービスを再起動します。

ArcGIS 9.3 SP1 で外部ケーパビリティ ファイルを使用して WFS サービスを作成し公開する手順

ArcGIS 9.3 SP1 では、ArcGIS Server は、1.1.0 および 1.0.0 OGC WFS 仕様の両方に準拠します。そのため、2 つの外部ケーパビリティ ファイルが必要とされます。そのうちの 1 つは 1.1.0 仕様を参照し、もう 1 つは 1.0.0 仕様を参照します。

パート 1:既存の WFS サービスから外部のケーパビリティ ファイルを作成する

  1. ArcCatalog または ArcGIS Server Manager を起動します。
  2. [サービス プロパティ] ダイアログ ボックスを開きます。ArcCatalog の場合は、既存のサービスを右クリックし、[サービス プロパティ] をクリックします。ArcGIS Server Manager の場合は [サービス] タブをクリックし、サービスの [編集] アイコンをクリックします。
  3. [ケーパビリティ] タブをクリックします。
  4. ケーパビリティのリストで、[WFS] がまだチェックされていなければ、オンにします。すでにチェックされている場合は、WFS のテキスト部分をクリックします。WFS 固有のプロパティが表示されます。
  5. WFS [URL] をハイライト表示にして、それをコピーして Web ブラウザ内に貼り付けます。
  6. WFS 1.1.0 仕様の外部ケーパビリティ ファイルを作成するには、?request=getCapabilities または request=getCapabilities&version=1.1.0 を Web ブラウザ内の WFS URL に追加して、XML ファイルとして結果を保存します。ファイル名には、<接頭辞>110.xml という形式を付ける必要があります。たとえば、サービスの名前が California である場合、California を接頭辞にして、ファイル名を California110.xml とすることができます。
  7. WFS 1.0.0 仕様の外部のケーパビリティ ファイルを作成するには、?request=getCapabilities&version1.0.0 を WFS URL に追加して、XML ファイルとして結果を保存します。ファイル名には、<接頭辞>100.xml という形式を付ける必要があり、接頭辞は 1.1.0 ファイルの接頭辞と一致しなければなりません。ステップ 6 の例に従えば、1.1.0 ファイルの名前が California110.xml である場合、1.0.0 ファイルの名前は California100.xml となります。

パート 2:9.3 SP1 の外部のケーパビリティ ファイルを使用して WFS サービスを作成する

ケーパビリティ ファイルを作成した後、SOC およびサーバからアクセス可能なフォルダ内にそれを配置することができます。たとえば、ファイルは、ジオデータベースやサービスのマップ ドキュメントと同じフォルダ内に配置することができます。URL も使用することができます。ArcGIS 9.3 SP1 では、どちらのファイルも同じ場所に配置されることに注意してください。

デフォルトのプロパティを使用している既存のサービスを更新して外部のケーパビリティ ファイルを使用できるようにするか、または外部のケーパビリティ ファイルを参照する新しいサービスを作成することもできます。次の手順は、外部のケーパビリティ ファイルを使用して WFS サービスを公開する方法を示しています。

外部のケーパビリティ ファイルを使用して WMS サービスを公開する手順は次のとおりです。

  1. ArcCatalog または ArcGIS Server Manager を起動します。
  2. 更新するサービスを停止します。
  3. [サービス プロパティ] ダイアログ ボックスを開きます。ArcCatalog の場合は、既存のサービスを右クリックし、[サービス プロパティ] をクリックします。ArcGIS Server Manager の場合は [サービス] タブをクリックし、サービスの [編集] アイコンをクリックします。
  4. [ケーパビリティ] タブをクリックします。
  5. ケーパビリティのリストで、[WFS] がまだチェックされていなければ、オンにします。すでにチェックされている場合は、WFS のテキスト部分をクリックします。WFS 固有のプロパティが表示されます。
  6. [外部のケーパビリティ ファイルを使用] を選択します。
  7. 次に、外部のケーパビリティ ファイルの場所を指定します。場所は、ケーパビリティ ファイルと接頭辞が含まれる URL またはフォルダ パスを提供することによって指定されます。たとえば、California サービスに California110.xml および California100.xml という名前のケーパビリティ ファイルがある場合、接頭辞は California です。これらのファイルが http://ArcGIS_Server/arcgis/wfs 内に格納される場合、http://ArcGIS_Server/arcgis/wfs/California を指定します。その代わりに、これらのファイルを C:\arcgis\arcgisserver\wfs 内に格納することを選択するならば、C:\arcgis\arcgisserver\wfs\California を指定します。
  8. サービスを再起動します。
注意注意:

ここで WFS クライアントがサービスにアクセスすると、リクエストのバージョンに基づいて適切なケーパビリティ ファイルが参照されます。たとえば、WFS クライアントが DescribeFeatureType&version=1.0.0 を呼び出すと、サーバは 1.0.0 専用の外部のケーパビリティ ファイルから情報を返します。バージョンを指定しない場合、サーバは 1.1.0 専用の外部ケーパビリティ ファイルからの情報を返します。

外部のケーパビリティ ファイルへの空間参照系の追加

サポートされている空間参照系であれば、どれを使用したとしても WFS サービスからマップをリクエストすることが可能ですが、一部の WFS クライアントはリクエストされた空間参照がケーパビリティ ファイルに存在しない場合にエラーを返します。Data Interoperability Extension などのクライアントは、空間参照系の切り替えはケーパビリティ ファイルに指定されたものに限られます。

WFS サービスの外部のケーパビリティ ファイルには、空間参照系をさらに追加することができます。外部のケーパビリティ ファイルについては、先の説明をご参照ください。

軸の順序の制御

地理座標系(WGS 84 など)で返されるフィーチャは、デフォルトで緯度、経度(Y、X)の軸順序を使用します。この順序は WFS 1.1 仕様に準拠しています。たとえば、座標が次のように指定されたポイントが GetFeature から返されるかもしれません。

<gml:Point>
	<gml:pos>48.4922165520043 -122.630685732366</gml:pos> 
</gml:Point>

一部の WFS クライアントは、座標が経度、緯度の軸順(X、Y)で返されることを想定します。これらのクライアントと作業を行う場合、サービスの軸順序を経度、緯度に設定することができます。次に、プロパティの設定方法を示します。

  1. ArcGIS Server を実行しているコンピュータに管理者としてログオンします。
  2. ArcGIS Server を停止します。
  3. サービスの構成ファイルの場所へ移動します。たとえば、ArcGIS Server が c:\arcgis にインストールされている場合は、c:\arcgis\server\user\cfg に移動します。
  4. サービスの構成ファイル(myservice.cfg など)をテキスト エディタで開きます。
  5. 次に示すように、WFS セクションで、<AxisOrderWFS11>longlat</AxisOrderWFS11> をプロパティに追加します。たとえば、次のように入力します。
    <Extension>
    	<TypeName>WFSServer</TypeName>
    	<Enabled>true</Enabled>
    	<Properties>
    		<AxisOrderWFS11>longlat</AxisOrderWFS11>
    		<CustomGetCapabilities>false</CustomGetCapabilities>
    		<EnableTransactions>false</EnableTransactions>
    		<Name>wfs_WFSTest_ras</Name>
    		<OnlineResource>http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</OnlineResource>
    		<AppSchemaURI>http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</AppSchemaURI>
    		<AppSchemaPrefix>wfs_WFSTest_ras</AppSchemaPrefix>
    	</Properties>
    	<Info>
    		<WebEnabled>true</WebEnabled>
    	</Info>
    </Extension>
    
  6. ArcGIS Server を開始します。

サービスからリクエストされた地理座標系を使用するフィーチャは、経度、緯度の軸順序で返されるようになります。

軸順序プロパティは、地理座標系を使用するフィーチャにのみ適用されることに注意してください。投影座標を使用するフィーチャは常に X 軸、Y 軸の順序で返されます。

完全修飾タイプ名の使用

ArcSDE ジオデータベースから定義された WFS サービスに対して生成されるタイプ名は、デフォルトでフィーチャクラスの非修飾名に基づきます。たとえば、bob.buildings という名前のフィーチャクラスのタイプ名は、buildings になります。

タイプ名の生成時に完全修飾名が含まれるようにプロパティを設定することができます。これが必要になるのは、ジオデータベース内に同じ名前のフィーチャクラスが複数存在し、それぞれ所有者が異なる場合です。完全修飾名を使用すると、bob.buildings のタイプ名は bob_buildings になります。

次に、完全修飾名を使用するようにプロパティを設定する方法を示します。

  1. ArcGIS Server を実行しているコンピュータに管理者としてログオンします。
  2. ArcGIS Server を停止します。
  3. サービスの構成ファイルの場所へ移動します。たとえば、ArcGIS Server が c:\arcgis にインストールされている場合は、c:\arcgis\server\user\cfg に移動します。
  4. サービスの構成ファイル(myservice.cfg など)をテキスト エディタで開きます。
  5. 次に示すように、WFS セクションで、<UseQualifiedName>true</UseQualifiedName> をプロパティに追加します。たとえば、次のように入力します。
    <Extension>
    	<TypeName>WFSServer</TypeName>
    	<Enabled>true</Enabled>
    	<Properties>
    		<UseQualifiedName>true</UseQualifiedName>
    		<CustomGetCapabilities>false</CustomGetCapabilities>
    		<EnableTransactions>false</EnableTransactions>
    		<Name>wfs_WFSTest_ras</Name>
    		<OnlineResource>http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</OnlineResource>
    		<AppSchemaURI>http://bobmk/arcgis/services/wfs/WFSTest_ras/MapServer/WFSServer</AppSchemaURI>
    		<AppSchemaPrefix>wfs_WFSTest_ras</AppSchemaPrefix>
    	</Properties>
    	<Info>
    		<WebEnabled>true</WebEnabled>
    	</Info>
    </Extension>
    
  6. ArcGIS Server を開始します。

参考文献

WFS サービスについてさらに詳しく知りたい場合は、以下の参考文献をご参照ください。


7/10/2012