10.2. Lesson: Web Feature Services

Web Feature Service (WFS)はQGISで直接読み込める形式のGISデータをユーザーに提供します。編集できない地図のみを提供するWMSとは異なり、WFSでは地物それ自体へアクセスできます。

このレッスンの目標: WFSを使用してWMSとの違いを理解します。

10.2.1. basic Follow Along: WFSレイヤーを読み込む

  1. 新しい地図を開始します。これはデモを目的としており保存されません。

  2. dataSourceManager データソースマネージャを開く ボタンをクリックします。

  3. wfs WFS / OGC API - 地物 タブを有効にします。

  4. 新規 ボタンをクリックします。

  5. 表示されたダイアログで、 名前nsidc.org を、 URLhttps://nsidc.org/cgi-bin/atlas_south?version=1.1.0 を入力します。

    ../../../_images/new_wfs_connection.png
  6. OK をクリックすると新しい接続が サーバーコネクション に表示されます。

  7. 接続 をクリックします。利用可能なレイヤのリストが表示されます:

    ../../../_images/wfs_connection_layers.png
  8. レイヤリストの下にある ビュー領域に重なる地物のみをリクエストする オプションのチェックを外します。現在のマップキャンバスが、私たちの関心領域: 南極大陸をカバーしていない可能性があるからです。

  9. レイヤ antarctica_country_border を探します。上部にある Filter ボックスを使用できます。

  10. レイヤをクリックして選択します:

  11. レイヤ south_poles_wfs も検索して選択します。このとき Ctrl を押したままにする必要があるかもしれません。

    ../../../_images/south_poles_wfs.png
  12. 追加 をクリックします。

    レイヤを読み込むのにしばらく時間がかかるかもしれません。読み込みが完了すると、地図上に南極大陸の輪郭とその上にいくつかの地点が表示されます。

    ../../../_images/antarctica_border.png

    WMSのレイヤーとどう違うのでしょうか?

  13. いずれかのレイヤを選択すると、地物選択ツールと属性テーブルツールが有効になることが確認できます。これらはベクタレイヤです。

  14. south_poles_wfs レイヤを選択し、その属性テーブルを開いてください。このように表示されるはずです:

    ../../../_images/poles_attribute_table.png

    ポイントは属性を持つのでシンボル体系を変更し、ラベルを付けることができます。例を示します:

    ../../../_images/labelling_example.png

WMSレイヤとの違い

Web Feature Serviceはレンダリングされた地図ではなくレイヤ自体を返します。データへの直接アクセスができるので、シンボル体系を変更しデータを分析することができます。しかし、非常に多くのデータの送信にはコストがかかります。レイヤが複雑な形を持つ場合や沢山の属性、多くの地物を持つ場合に特に顕著になります。多くのレイヤをロードしている場合でも同様です。このため、WFSレイヤは一般的には読み込みに非常に長い時間がかかります。

10.2.2. moderate Follow Along: WFSレイヤをクエリする

WFSレイヤをロードした後にクエリすることは可能ですが、ロードする前にクエリする方が多くの場合に効率的です。そのようにして必要な地物だけを要求すればはるかに少ない帯域幅の使用で済むことになります。

たとえば、現在使用しているWFSサーバーに countries (excluding Antarctica) というレイヤがあります。既に読み込まれている south_poles_wfs レイヤに対する南アフリカ共和国の位置を知りたいとしましょう(そしておそらく antarctica_country_border レイヤに対する位置も)。

これを行うには2つの方法があります。 countries ... レイヤの全体をロードしてから、いつものようにクエリを作成することができますが、世界中の国のデータを送信してから南アフリカのデータだけを使用するのは少し帯域幅の無駄と思われます。あなたの接続によっては、このデータセットの読み込みに数分かかることがあります。

別の方法は、サーバーからレイヤを読み込む前にフィルタとしてクエリを作成することです。

  1. Data Source Manager`ダイアログで :guilabel:`WFS / OGC API - 地物 タブを有効にします

  2. 先ほど使用したサーバーに接続すると、利用可能なレイヤのリストが表示されるはずです。

  3. countries (excluding Antarctica) レイヤを探してダブルクリックします。レイヤ名は country_borders_excluding_antarctica です。レイヤを選択して、ダイアログの一番下にある クエリ作成 ボタンを押すこともできます。

    ../../../_images/select_country_filter.png
  4. 表示されたダイアログで、次のクエリ SELECT * FROM country_borders_excluding_antarctica WHERE "Countryeng" = 'South Africa'SQL文 ボックスに入力します。

    ../../../_images/country_sa_builder.png
  5. OK を押します。

  6. 使用された式はターゲットレイヤの SQL の値として表示されます:

    ../../../_images/country_filter_enabled.png
  7. 上記のようにレイヤを選択した状態で、 追加 をクリックします。そのレイヤから、Countryeng の値が South Africa である国だけが読み込まれます:

    ../../../_images/antarctica_sa.png

    country_borders_excluding_antarctica レイヤの横にある indicatorFilter アイコンに気づきましたか?これは、読み込まれたレイヤはフィルターされており、プロジェクトにすべての地物が表示されていないことを示しています。

  8. 実際にやる必要はありませんが、もし両方の方法を試してみたらフィルタする前にすべての国をロードする方法に比べてはるかに早いことがわかります!

WFSの有用性に関するノート

ニーズが非常に具体的である場合、必要とする地物を持っているWFSサーバーが見つかることは稀です。Web Feature Servicesが比較的まれである理由は、地物全体を表現するには大量のデータを送信する必要があるからです。それゆえに画像だけを送信するWMSではなくWFSをホストすることは費用対効果があまりよくありません。

したがって、あなたが出合うであろうWFSの最も一般的なタイプはおそらくインターネット上ではなく、ローカルネットワーク上か自分のコンピュータ上にあるでしょう。

10.2.3. In Conclusion

レイヤの属性とジオメトリに直接アクセスする必要がある場合にはWFSレイヤはWMSレイヤより好ましいですが、ダウンロードされるデータの量(速度の問題そして容易に利用可能な公開WFSサーバーの不足へとつながります)を考慮すると、必ずしもWMSの代わりにWFSが使用できるとは限りません。

10.2.4. What's Next?

次は、QGISサーバーを使用してOGCサービスを提供する方法を説明します。