10.2. Lesson: Web Feature Services¶
Web Feature Service (WFS)はQGISで直接読み込める形式のGISデータをユーザーに提供します。編集できない地図のみを提供するWMSとは異なり、WFSでは地物それ自体へアクセスできます。
このレッスンの目標: WFSを使用してWMSとの違いを理解します。
10.2.1. Follow Along: WFSレイヤーを読み込む¶
新しい地図を開始します。これはデモを目的としており保存されません。
新規 ボタンをクリックします。
In the dialog that appears, enter the Name as
nsidc.org
and the URL ashttps://nsidc.org/cgi-bin/atlas_south?version=1.1.0
.OK をクリックすると新しい接続が サーバーコネクション に表示されます。
接続 をクリックします。利用可能なレイヤーのリストが表示されます:
Uncheck the Only request features overlapping the view extent option below the layers list, since your current map canvas may not cover our area of interest: Antarctica.
Find the layer antarctica_country_border. You can use the Filter box at the top.
レイヤーをクリックして選択します:
Find and select also the layer south_poles_wfs. You might need to hold Ctrl.
追加 をクリックします。
It may take a while to load the layers. When they are loaded, they will appear in the map, showing the outlines of Antarctica and a few points over.
How is this different from having a WMS layer?
Select any of the layers and you'll notice that feature selection and attribute table tools are enabled. These are vector layers.
Select the south_poles_wfs layer and open its attribute table. You should see this:
ポイントは属性を持つのでシンボル体系を変更し、ラベルを付けることができます。例を示します:
WMSレイヤーとの差¶
Web Feature Serviceはレンダリングされた地図ではなくレイヤー自体を返します。データへの直接アクセスができるので、シンボル体系を変更しデータの分析を行うことができます。しかし、非常に多くのデータの送信にはコストがかかります。レイヤーが複雑な形を持つ場合や沢山の属性、多くの地物を持つ場合に特に顕著になります。多くのレイヤーをロードしている場合でも同様です。このため、WFSレイヤーは一般的には読み込みに非常に長い時間がかかります。
10.2.2. Follow Along: WFSレイヤーからクエリする¶
WFSレイヤーをロードした後に問い合わせをすることは可能ですが、ロードする前に問い合わせをする方が多くの場合に効率的です。そのようにして必要な地物だけを要求すればはるかに少ない帯域幅の使用で済むことになります。
たとえば、現在使用しているWFSサーバーに countries (excluding Antarctica) というレイヤーがあります。既に読み込まれている south_poles_wfs レイヤーに対する南アフリカ共和国の位置を知りたいとしましょう(そしておそらく antarctica_country_border レイヤーに対する位置も)。
これを行うには2つの方法があります。 countries ... レイヤーの全体をロードしてから、いつものようにクエリを作成することができますが、世界中の国のデータを送信してから南アフリカのデータだけを使用するのは少し帯域幅の無駄と思われます。あなたの接続によっては、このデータセットの読み込みに数分かかることがあります。
サーバーからレイヤーを読み込む前にフィルタとしてクエリを作成することもできます。
Enable the WFS / OGC API Features tab in the Data Source Manager dialog
Connect to the server we used before and you should see the list of available layers.
Find and double-click the countries (excluding Antarctica) layer. The layer name is
country_borders_excluding_antarctica
. You can also select the layer and press Build query button at the bottom of the dialog:In the dialog that appears, type the following
SELECT * FROM country_borders_excluding_antarctica WHERE "Countryeng" = 'South Africa'
query in the SQL Statement box.Press OK.
The expression used will appear as the Sql value of the target layer:
Click Add with the layer selected as above. Only the country with the
Countryeng
value ofSouth Africa
will load from that layer:Did you notice the icon next to the
country_borders_excluding_antarctica
layer? It indicates that the loaded layer is filtered and does not display in the project all of its features.実際にやる必要はありませんが、もし両方の方法を試してみたらフィルタする前にすべての国をロードする方法に比べてはるかに早いことがわかります!
WFSの有用性に関するノート¶
ニーズが非常に具体的である場合、必要とするWFSサーバーが見つかることは稀です。WFSサービスが比較的まれである理由は地物全体を表現するには大量のデータを送信する必要があるからです。それゆえに画像だけを送信するWMSではなくWFSをホストすることは費用対効果があまりよくありません。
したがって、あなたが出合うであろうWFSの最も一般的なタイプはおそらくインターネット上ではなく、ローカルネットワーク上か自分のコンピュータ上にあるでしょう。
10.2.3. In Conclusion¶
レイヤーの属性とジオメトリに直接アクセスする必要がある場合にはWFSレイヤーはWMSレイヤーより好ましいですが、ダウンロードされるデータの量を考慮すると(速度の問題そして容易に利用可能な公開WFSサーバーの不足へとつながります)、必ずしもWMSの代わりにWFSが使用できるとは限りません。
10.2.4. What's Next?¶
次は、QGISサーバーを使用してOGCサービスを提供する方法を説明します。