Web ブラウザでの WFS サービスとの通信

WFS 準拠のサーバによってサポートされる各オペレーションのオンライン リソースは HTTP URL(Uniform Resource Locator)であるため、WFS サービスは REST(Representational State Transfer)サービスと見なすことができます。URL パラメータとこれらのオペレーションを使用して、サービスのメタデータ、フィーチャ タイプ情報、GML でエンコードされたフィーチャを WFS サービスから取得することができます。これらのオペレーションとパラメータの詳細については、「OGC WFS Specification」をご参照ください。

クライアントのタイプ

WFS サービスは、WFS をサポートするすべてのクライアントで使用できます。多くの場合、WFS サービスの最も単純なクライアントは Web ブラウザです。WFS リクエストは HTTP を通じて送信することができ、レスポンスまたは例外はブラウザを通じて返されます。すべての WFS サービスは、GetCapabilities、DescribeFeatureType、GetFeature の 3 つのオペレーションをサポートします。

WFS サービスを利用するために使用できるサードパーティ クライアントはさまざまです。WFS サービスを使用するには、クライアントが WFS 1.0.0 または 1.1.0 と、GML の Simple Features プロファイルをサポートする必要があります。また、ArcGIS for Desktop は WFS サービスを利用できます。ArcMap での WFS サービスの使用については、「ArcGIS for Desktop を使用して WFS を操作する方法」をご参照ください。

WFS の URL 構造

サービスに接続するには、次の形式で URL を指定する必要があります。

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

たとえば、ポート 6080 で動作している myserver サーバの DemoFolder というフォルダで、マップ サービス WFSDemoService の WFS ケーパビリティを有効にしている場合、URL は次のようになります。

http://myserver:6080/arcgis/services/DemoFolder/WFSDemoService/MapServer/WFSServer?request=GetCapabilities

同様に、ジオデータ サービスで WFS ケーパビリティを有効にした場合、URL は次のようになります。

http://myserver:6080/arcgis/services/DemoFolder/WFSDemoService/GeoDataServer/WFSServer?

フィルタの使用

Filter パラメータを WFS リクエストで使用して、WFS サービス内の特定のフィーチャを取得することができます。Filter パラメータの利点は、これが「WFS 1.1 Implementation Specification」のセクション 9.5 で定義された標準的なキーワードと値の組み合わせのエンコーディングの一部であり、HTTP リクエストの末尾に追加できる点です。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 サービスのみに適用することができます。

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

http://myserver:6080/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://myserver:6080/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 でエンコードします。

Web ブラウザでの WFS サービスの利用

以下の例では、URL パラメータを使用して Web ブラウザで WFS サービスと通信を行っています。

GetCapabilities

このリクエストは、サービスを通じて利用できるすべてのフィーチャ タイプとファンクショナリティを GML 形式で返します。GetCapabilities 操作を使用するには、WFS サービスの URL をコピーしてアドレス バーに貼り付け、URL の末尾に「?request=getcapabilities」を追加します。

URL の例: http://myserver:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=GetCapabilities

次の図は、GetCapabilities 操作から返されるファンクショナリティの例を示しています。

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

DescribeFeatureType 操作によって返されたフィーチャクラス、テーブル、およびフィールド情報

フィルタの追加

URL の最後に、フィーチャ タイプまたはフィーチャ テーブルの名前とともに次のリクエストを追加することにより、フィールド情報を取得する単一のフィーチャクラスまたはフィーチャ テーブルを指定することもできます。

?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=<フィーチャ タイプ>&VERSION=1.1.0

次の例では、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

DescribeFeatureType 操作によって返された Cities フィーチャクラスとそのフィールド情報

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

GetFeature 操作によって返された Cities フィーチャクラスの属性とジオメトリ情報

フィルタの追加

リクエストにフィルタを追加して、返される結果を絞り込むこともできます。たとえば、指定した座標範囲内にあるすべての都市をリクエストすることができます。次の例では、指定した座標範囲内に 2 つの都市が位置しています。

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

GetFeature によって返された指定した座標範囲にある都市

FeatureID パラメータの操作

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

注意注意:

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

たとえば、WFS サービスに Cities というフィーチャ タイプがあるとします。Cities に対して GetFeature リクエストを行うと、レスポンスには各フィーチャの gml:id が含まれます。

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

GetFeature リクエスト

この例では、バンクーバー市のフィーチャ ID は cities.F293__1 です。以下のリクエストは、フィーチャ ID を使用して、バンクーバー市を具体的にリクエストする場合に使用することができます。

http://myserver:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&featureid=cities.F293__1

9/14/2013