WFS サービスの追加

WFS (Web フィーチャ サービス) は、Web 経由でジオグラフィックス フィーチャを提供するためのオープン規格です。 WMS (Web マップ サービス) とは違って、WFS サービスは、ジオメトリと属性を備えた実際のフィーチャを返します。 ArcGIS AllSource で、Open Geospatial Consortium (OGC) WFS サービスに接続するには、WFS サービス コネクションを作成するか、アクティブなポータルから、WFS アイテムを追加します。

WFS サーバー コネクションの追加

WFS サーバー コネクションを追加するには、次の手順を実行します。

  1. [挿入] タブの [プロジェクト] グループで、[接続] ボタンをクリックして、[サーバー][新しい WFS サーバー] 新しい WFS サーバー の順にクリックします。

    [WFS サーバー コネクションの追加] ダイアログ ボックスが表示されます。

  2. 接続先の WFS サーバー サイトの URL を [サーバーの URL] テキスト ボックスに入力します。

    URL は、サイトの構成によって異なります。

    たとえば、次のような URL になります。https://sampleserver6.arcgisonline.com/arcgis/services/SampleWorldCities/MapServer/WFSServer

  3. [バージョン] ドロップダウン メニューから、接続先となる WFS バージョンを選択します。

    デフォルト バージョンでは、サーバーでサポートされている最新のバージョン番号に接続されます。

  4. 接続先の WFS サービスに追加機能があるか、WFS サーバー コネクションの ArcGIS AllSource クライアント固有のプロパティを設定する場合は、[カスタム リクエスト パラメーター] セクションに、カスタム リクエスト パラメーターの名前と値を追加します。

    よく使用される ArcGIS AllSource クライアント固有の予約済みキーワードには、クライアント側ページングを有効化する PAGESIZE、フィーチャを特定の地理領域に制限する BBOX、マップに表示されるフィーチャの数に対する制限を設定する MAXFEATURES (デフォルトでは上限 3000 を使用)、レイヤーの軸の順序を入れ替える SWAPXY などがあります。 これらのキーワードは、WFS サーバー接続にリストされているすべてのレイヤーに適用されます。 個々のレイヤーのプロパティを変更するには、レイヤー プロパティの [WFS] タブで、それらを表示または変更します。 ArcGIS AllSource では、サーバー固有のパラメーターの検証ができない点に注意してください。

    カスタム パラメーターを追加するには、次の手順に従います。

    1. 最初のセル内をクリックします。
    2. [パラメーター] 列のセルで、パラメーター名を指定します。
    3. [値] 列のセルで、パラメーター値を指定します。
    4. さらにパラメーターを追加するには、[行の追加] ボタンをクリックして、手順 a ~ c を繰り返します。

    カスタム パラメーターを削除するには、次の手順に従います。

    1. 削除するパラメーターを含む行を選択します。
    2. [行の削除] をクリックして、行を削除します。
    3. 削除するすべてのパラメーターに対して、ステップ a と b を繰り返します。
  5. 該当する場合は、次のいずれかの手順を実行して、サービスを認証します。
    • サービスが基本認証で保護されている場合、[認証] ドロップダウン メニューで [サーバー認証] をクリックし、ユーザー名とパスワードを入力します。 ユーザー名とパスワードを Windows 資格情報マネージャーまたはコネクション ファイルに保存するには、[ログインの保存] 見出しの下のオプションをオンにします。
    • サービスが OAuth 2.0 ベースの認証で保護されている場合、[認証] ドロップダウン メニューのドロップダウン リストから適切な接続をクリックします。 認証プロバイダーが存在しない場合に、認証プロバイダーに接続を追加する方法については「ArcGIS Pro から認証プロバイダーに接続」をご参照ください。 必要に応じて [サイン イン] をクリックし、プロバイダーとの接続を認証します。
  6. [OK] をクリックします。

    WFS コネクション ファイル (.wfs) が作成されて、プロジェクトのホーム フォルダーに保存されます。 この接続ファイルを参照しているアイテムがプロジェクトに追加され、該当するコネクションが [カタログ] ウィンドウの [プロジェクト] タブにある [サーバー] フォルダーに表示されます。

  7. WFS コネクションを展開して、WFS サービス内のレイヤーを表示し、レイヤーを右クリックして、[新しく追加] ドロップダウン メニューのオプションをクリックするか、[現在のマップに追加] 現在のマップに追加 をクリックして、WFS レイヤーをマップに追加します。

    マップまたは [コンテンツ] ウィンドウに、WFS サービスをドラッグして、マップに追加することもできます。

    レイヤー オプションがある [WFS レイヤーの追加] ダイアログ ボックスが表示され、マップに WFS レイヤーが追加されます。 進行状況ダイアログ ボックスで、[キャンセル] をクリックして、マップへのレイヤーの追加をキャンセルすることができます。 データをマップに追加したときに、データが期待どおりに表示されない場合は、WFS レイヤー プロパティを変更できます。

WFS サービスでは、1 つ以上のレイヤーを追加することができます。 レイヤーのグループを選択するには、Shift を押しながら、追加したいグループ内の最初と最後のサブレイヤーをクリックします。また、Ctrl を押しながら、各レイヤーを個別にクリックして、連続していないレイヤーを選択することもできます。 レイヤーを選択した後、選択したレイヤーを右クリックして、現在のマップに追加するか、新しいマップに追加するかを選択します。 一度に複数のレイヤーを追加する処理は、1 つのレイヤーを追加する処理よりも時間がかかります。

アクティブなポータル接続からの WFS サービスの追加

WFS サービスをポータルに追加することもできます。 ポータル内の WFS アイテムには、次の 3 つのソースがあります。

  • ポータルとフェデレートした ArcGIS Server サイトに公開され、自動的にアイテムとしてポータルに追加された WFS サービス。
  • ポータル内のアイテムとして追加されたサードパーティの WFS サービス。
  • ホスト WFS サービスは、ホスト フィーチャ レイヤーから WFS サービスを公開することによって作成されます。

これらのタイプの各 WFS ポータル アイテムをマップに追加するには、次の手順を実行します。

  1. [カタログ] ウィンドウで、[ポータル] タブをクリックします。
  2. [マイ コンテンツ][マイ グループ]、または [ArcGIS Online] コレクションで、使用する WFS アイテムを参照するか、検索します。

    ポータル アイテムにポインターを合わせて、そのアイテムのタイプを確認します。

  3. アイテムを右クリックして、[新しく追加] ドロップダウン メニューのオプションをクリックするか、[現在のマップに追加] 現在のマップに追加 をクリックして、WFS レイヤーをマップに追加します。

    マップまたは [コンテンツ] ウィンドウに、WFS サービスをドラッグして、マップに追加することもできます。 サービスに複数のレイヤーが含まれている場合、マップに追加するレイヤーを選択するよう求められます。

    レイヤー オプションがある [WFS レイヤーの追加] ダイアログ ボックスが表示され、マップに WFS レイヤーが追加されます。 進行状況ダイアログ ボックスで、[キャンセル] をクリックして、マップへのレイヤーの追加をキャンセルすることができます。 データをマップに追加したときに、データが期待どおりに表示されない場合は、WFS レイヤー プロパティを変更できます。

WFS サービスでは、1 つ以上のレイヤーを追加することができます。 レイヤーのグループを選択するには、Shift を押しながら、追加したいグループ内の最初と最後のサブレイヤーをクリックします。また、Ctrl を押しながら、各レイヤーを個別にクリックして、連続していないレイヤーを選択することもできます。 レイヤーを選択した後、選択したレイヤーを右クリックして、現在のマップに追加するか、新しいマップに追加するかを選択します。 一度に複数のレイヤーを追加する処理は、1 つのレイヤーを追加する処理よりも時間がかかります。

WFS レイヤーの追加ダイアログ ボックスの使用

[WFS レイヤーの追加] ダイアログ ボックスを使用すると、WFS レイヤーで使用できるオプションのレイヤー プロパティの一部を設定できます。 これには、最大フィーチャ数とページ サイズの設定、範囲の指定による対象地域へのフィーチャの制限が含まれます。 これらのプロパティを [WFS レイヤー プロパティ] ダイアログ ボックスでも変更できます。

WFS レイヤーの追加ダイアログ ボックス
  1. [返される最大フィーチャの設定] - マップに追加されるフィーチャの最大数を設定します。 大規模なデータセットをマップに追加すると、パフォーマンスの問題と低下を引き起こす可能性があります。 このオプションを使用して、マップに追加されるフィーチャの数を制限することができます。 [空間範囲の使用] パラメーターとともに使用すると、これにより、指定された範囲内のフィーチャの数が制限されます。
  2. [ページ サイズの設定] - ページングをサポートしている WFS 2.0 サービスでは、サーバーからのロード要求ごとに返されるフィーチャの数を設定できます。 WFS GetFeature リクエストでは、これにより、ページング リクエストの startIndex パラメーターとともに使用される count パラメーター値が設定されます。 ArcGIS AllSource は、サービス設定に基づいて使用する最適なページ サイズを決定しようとしますが、最適な値は、タイムアウト (約 15 秒) になる前にフィーチャを返すサーバーのパフォーマンスによって異なる場合があります。 たとえば、タイムアウトする前に 25,000 個のフィーチャを返すことができるサーバーは、ページ サイズが 25000 に設定されている場合に、マップの読み込み時間が短縮されます。 これにより、クライアントからサーバーに送信されるリクエストの総数が減ります。 ただし一部の実行中のサーバーは、たとえば、タイムアウトする前に 200 個のフィーチャしか返せなくなる場合があります。 この場合、タイムアウトにより読み込みエラーを避けるためにページの値を低くする必要があるため、データを読み込むサーバーに送信されるリクエストが増加します。
  3. [空間範囲の使用] - 対象地域 (空間範囲) を指定することによりフィーチャを制限します。
    • オン - 範囲を指定することでマップに追加されるフィーチャを制限します。 この機能を使用するには、WFS サービスが BBOX パラメーターをサポートしている必要があります。 [選択した範囲] パラメーターに使用する範囲を指定します。
    • オフ - マップに追加されるフィーチャを空間的に制限しません。 これがデフォルトです。
  4. [選択した範囲] - マップに追加されるデータの制限に使用するカスタム範囲を設定します。 座標を手動で入力することも、現在表示されている範囲、すべてのレイヤーのデータの範囲、特定のレイヤーの範囲から範囲の値を借りることもできます。

[WFS レイヤーの追加] ダイアログ ボックスのプロパティは、[レイヤー プロパティ] ダイアログ ボックスの [WFS] タブでも表示または変更できます。

ArcGIS データ モデルでは、テーブルごとに 1 つのジオメトリ タイプしか許可されません。 混合ジオメトリ WFS レイヤーがマップに追加された場合、WFS サービスの最初のフィーチャを照会することによって、レイヤーのジオメトリ タイプが決定されます。 たとえば、データの最初の行がポリゴンの場合、WFS レイヤーはポリゴン レイヤーとしてマップに追加されます。

カスタム リクエスト パラメーターの使用

カスタム リクエスト パラメーター形式を使用すると、WFS サービスでサポートされている追加機能を入力できます。 入力キー値ペアを WFS サーバー実装に固有のカスタム パラメーターにするか、ArcGIS AllSource クライアントで実装されている予約済みのキーワードのいずれかを使用することができます。

キー値ペアの使用

一部の WFS サービスには、そのサービスに対してカスタム クエリを実行するための特定のキー値ペアが含まれている場合があります。 キー値ペアは、WFS URL の疑問符の後に付加されます。 たとえば、WFS URL が https://sampleserver6.arcgisonline.com/arcgis/services/SampleWorldCities/MapServer/WFSServer? とします。 myCustomKey というカスタム パラメーターがある場合は、myCustomKey 値を [パラメーター] セルに入力した後、この値を [値] セルに入力することができます。 ArcGIS AllSource から、WFS サービスに接続するよう求められた場合は、キー値ペアを WFS URL に付加します (例: https://sampleserver6.arcgisonline.com/arcgis/services/SampleWorldCities/MapServer/WFSServer?request=GetCapabilities&service=WFS&myCustomKey=myValue)。

予約済みキーワードの使用

ArcGIS AllSource WFS クライアントには、WFS サーバー コネクションの接続プロパティを指定できる予約済みキーワードがあります。 このパラメーターに設定した値は、WFS サービス内のすべてのレイヤーに適用されます。 予約済みキーワードをサービス接続ごとに適用するのではなく、WFS サービス内の個別のレイヤーに適用する場合は、複数の接続を別々のパラメーター値で作成するか、マップ内の WFS レイヤー プロパティを更新する必要があります。 WFS サーバー コネクション ファイルのプロパティの設定に使用できるカスタム パラメーターの名前と値を次の表に示します。

キーワード説明

BBOX

境界四角形の範囲を指定して、返されるフィーチャの範囲を制限します (例: -122.5,37.7,-122.3,37.8)。 このパラメーターは、すべての WFS レイヤーで返されるフィーチャの数を特定の地理領域に制限する場合に役立ちます。 このパラメーターは、スナップショット モードでのみ使用できます。

MAXFEATURES

WFS サーバー接続内のレイヤーに対して返されるフィーチャの最大数を設定します。 この値を設定すると、サービスに多数のフィーチャが存在する場合のパフォーマンスの問題を回避できます。 デフォルト値は 3000 です。 データが大きい場合、これを大きな数に設定すると、表示されるフィーチャの数が増えます。 サービスでページングがサポートされている場合、さらに効率的にデータを読み込むために PAGESIZE パラメーターを調整できます。

MODE

レイヤーに対して使用するコネクション モードを選択します。 デフォルトでは、コネクション モードはスナップショットです。

  • SNAPSHOT - このモードは、ほとんどの WFS サービスと互換性があります。 このモードを使用している場合、WFS データの一時的コピーがローカルにダウンロードされます。
  • ONDEMAND - このモードは、高度なフィルターをサポートしていない一部の WFS サービスとの互換性が低くなっています。 このモードを使用している場合、データはローカルにコピーされるのではなく、代わりにリアルタイムで WFS サービスに接続します。 このモードでは、マップ上で画面移動やズームを行ったり、データに対するクエリを作成したときに、リクエストが WFS サービスに送信されます。 デフォルトの POST メソッドを使用する高度なフィルターをサーバーがサポートしていない場合は、必要に応じて、HTTPMETHOD を設定し、HTTP GET メソッドを使用してサーバーにリクエストを送信できます。

WFS コネクション モードの詳細

OUTPUTFORMAT

フィーチャをリクエストする際の形式を指定します。 WFS サービスは、複数の出力形式タイプをサポートできますが、デフォルトの形式は GML です。 このオプションは、指定された出力形式をサービスがサポートしている場合にのみ使用してください。 GetCapabilities レスポンスで、サービスがサポートする出力形式を確認できます。

  • GEOJSON - GeoJSON 形式で、フィーチャをリクエストします。
  • GEOJSON + GZIP - GeoJSON GZip 形式で、フィーチャをリクエストします (例: GEOJSON%2BGZIP)。
  • ESRIGEOJSON - Esri GeoJSON 形式で、フィーチャをリクエストします。
  • ESRIGEOJSON + GZIP - Esri GeoJSON GZip 形式で、フィーチャをリクエストします (例: ESRIGEOJSON%2BGZIP)。

SWAPXY および SWAPXYFILTER プロパティは、出力形式が GeoJSON の場合は適用されません。

PAGESIZE

GetFeature リクエストを実行して、データをマップに読み込む際に使用するページ サイズを指定します。 デフォルトでは、サービスがページングをサポートしている場合、ページ サイズ値の 200 が使用されます。 このキーワードを使用して、リクエストごとに返されるフィーチャの数を変更します (WFS count= パラメーターを使用)。

ページ サイズに使用する最適な値はサーバーのパフォーマンスによって異なります。 この値は、サーバーのタイム アウト (約 15 秒) なしでサービスが 1 つの GetFeature リクエストで返すことができるフィーチャの最大数に設定することが理想です。 応答時間が短いサーバーの場合、10,000 ~ 50,000 のページ サイズが最適です。 応答時間が長いまたは応答あたりに返されるフィーチャの数が制限されているサーバーの場合、ページ サイズを 100 にすると、タイムアウト エラーを避けられます。 ページングをサポートしておらず、フィーチャの数が多いサービスの場合、1 回のリクエストですべてのフィーチャが返されるため、レイヤーをマップに読み込む際のパフォーマンスが低下する可能性があります。

このキーワードは、startIndex および count パラメーターをサポートする WFS 2.0 サービスにのみ適用されます。 オンデマンド接続モードを使用しているときは、キーワードは適用されません。

STRINGLENGTH

WFS レイヤー内のテキスト フィールドの長さを指定します。 マップ内でレイヤーが開いている場合は、すべてのテキスト フィールドの長さがデフォルトで、255 文字に切詰められます。

SWAPXY

レイヤーの表示の XY 座標を入れ替えます。

  • TRUE - x,y の順序を入れ替えます。
  • FALSE - x,y の順序を入れ替えません。 これがデフォルトです。

SWAPXYFILTER

サーバーに送信される空間フィルター リクエストの XY 座標を入れ替えます。

  • TRUE - フィルター リクエストの x,y の順序を入れ替えます。
  • FALSE - フィルター リクエストの x,y の順序を入れ替えません。 これがデフォルトです。

HTTPMETHOD

オンデマンド モードでサーバーにリクエストを送信するときに使用する HTTP メソッドを指定します。 デフォルトでは、ArcGIS AllSource は、オンデマンド モードでサーバーに POST リクエストを送信します。 これにより、さらに高度なフィルターをサーバーに送信できます。 ただし、一部の WFS の実装では、POST リクエストはサポートされていません。 この場合、HTTPMETHODGET 設定して、オンデマンドで WFS レイヤーの基本機能にアクセスできます。

  • GET - HTTP GET メソッドを使用してサーバーにリクエストを送信します。
  • POST - HTTP POST メソッドを使用してサーバーにリクエストを送信します。 これがデフォルトです。

注意:

BBOXSTRINGLENGTHOUTPUTFORMATHTTPMETHOD キーワードを除く、すべてのキーワードには、WFS レイヤー プロパティ内に対応するレイヤー設定があります。 WFS レイヤー プロパティにアクセスするには、[コンテンツ] ウィンドウで該当するレイヤーを右クリックして、[プロパティ] を選択します。

WFS サーバー コネクション プロパティの指定に使用できるリスト内のキーワードだけでなく、WFS サービスまたは ArcGIS に対して、特別な意味を持っているために、使用できない他の予約済みキーワードもあります。 これらのキーワードは、NAMESPACETYPENAMEVERSIONSERVICECRSNAMEREQUESTUSERURLPASSWORDMODEANONYMOUSHTTPTIMEOUTCAPABILITIES_PARAMETERSCONNECTIONPATH などです。

WFS → フィーチャクラス ツールの使用

[WFS → フィーチャクラス (WFS To Feature Class)] ジオプロセシング ツールを使用して、WFS サービスからジオデータベースにデータをダウンロードできます。 このツールでは WFS データをダウンロードするスクリプトを作成でき、Complex WFS サービスがサポートされます。

このツールを使用して Complex WFS サービスからデータをダウンロードするには、次の手順に従います。

  1. [WFS → フィーチャクラス (WFS To Feature Class)] ジオプロセシング ツールを開きます。

    このツールを開くには、[ジオプロセシング] ウィンドウで変換ツールボックス内の [WFS から変換] ツールセットに移動するか、検索バーでツール名で検索します。

    [WFS → フィーチャクラス (WFS To Feature Class)] ツールのダイアログ ボックスが表示されます。

    WFS → フィーチャクラス ジオプロセシング ツールのダイアログ ボックス
  2. WFS サービスが Complex サービスである場合、[Complex WFS サービス] チェックボックスをオンにします。
  3. WFS サービスの URL を [WFS サーバー] パラメーターに貼り付けるか入力し、パラメーター テキスト ボックスの外側をクリックします。

    http://gisserver.example.com/geoserver/ows?

    これにより、[抽出するフィーチャ タイプの選択] パラメーター ドロップダウン メニューに、ダウンロード可能なレイヤーのリストが取り込まれます。

  4. ドロップダウン メニューからレイヤーを選択します。
  5. [出力場所] パラメーターを使用して、ダウンロード先の場所を指定します。

    [Complex WFS サービス] チェックボックスがオンになっている場合、出力先はファイル ジオデータベースになるため、出力場所としてフォルダーを指定する必要があります。

    [Complex WFS サービス] チェックボックスがオフになっている場合、出力先はフィーチャクラスになるため、出力場所としてジオデータベースまたはジオデータベース内のフィーチャ データセットを指定する必要があります。

  6. [名前] パラメーターで、出力フィーチャクラスまたはジオデータベースの名前を指定します。
  7. 必要に応じて、[最大フィーチャ数] パラメーターに値を入力して、返されるフィーチャの数を制限します。
  8. [Complex WFS サービス] がオンになっている場合、必要に応じて、[メタデータの公開] パラメーターをオンにすることでサービス メタデータを公開します。これにより、メタデータ テーブルが作成されて出力ジオデータベースに取り込まれます。
  9. フィーチャを対象地域に制限するには、必要に応じて、ツールの実行時に [環境] タブの [処理範囲] パラメーターに範囲値を指定します (または、Python を使用している場合は arcpy.env.extent 環境を設定します)。

このプロセスを Python スクリプトで自動化するには、ツール ドキュメントにサンプル コードが掲載されています。