11.2. Lesson: WMSサーバーを運用する

The data used for this exercise are available in the qgis-server-tutorial-data subdirectory of the training data you downloaded. For convenience and to avoid possible permissions problems, we will assume that these files are stored in /home/qgis/projects directory. Hence, adapt the following instructions to your path.

デモデータには、QGISサーバーで提供されるように既に準備されている world.qgs という名前のQGISプロジェクトが含まれています。独自のプロジェクトを使用したい場合や、プロジェクトの準備方法を知りたい場合は、 Configure your project セクションを参照してください。

注釈

このモジュールは、オーディエンスがパラメーターとパラメーターの値を簡単に区別できるようにURLを提示します。通常のフォーマットは次のとおりです。

...&field1=value1&field2=value2&field3=value3

このチュートリアルで使用するのは:

&field1=value1
&field2=value2
&field3=value3

それらをMozilla Firefoxに貼り付けると適切に機能しますが、Chromeのような他のWebブラウザでは field:parameter のペアの間に不要なスペースを追加する可能性があります。したがって、この問題が発生した場合は、Firefoxを使用するか、URLを変更して1行の形式にすることができます。

WebブラウザまたはcurlでWMS GetCapabilitiesリクエストを作成しましょう:

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetCapabilities
&map=/home/qgis/projects/world.qgs

前のレッスンのApache設定では、 QGIS_PROJECT_FILE 変数はデフォルトプロジェクトを /home/qgis/projects/world.qgs に設定します。しかし、上記のリクエストでは、 map パラメーターを明示的に使用し、どのプロジェクトでも使用できることを示しました。上記の要求から map パラメーターを削除すると、QGISサーバーは同じ応答を出力します。

WMSクライアントを GetCapabilities のURLに指すことで、クライアントはWebマップサーバーの情報のメタデータを持つXML文書を返します。例えば、レイヤーはどのレイヤーに対応していますか、地理的なカバレッジ、形式、WMSのバージョン等

QGISは WMS/WMTS クライアント でもあるので、上記のGetCapabilitiesのURLを利用して新しいWMSサーバー接続を作成できます。 Lesson: Web Mapping Services または WMS/WMTS サーバーを選択する セクションを参照してください。

QGISプロジェクトに countries WMSレイヤーを追加すると、以下のような画像が得られます:

../../../_images/qgis_getmap_request.png

図 11.33 QGISサーバーの国レイヤーWMSサービスを消費するQGISデスクトップ

注釈

QGISサーバーは world.qgs プロジェクトで定義されたレイヤーを提供します。QGISでプロジェクトを開くと、各国のレイヤーに複数のスタイルがあることがわかります。QGISサーバーはこれも認識しており、要求に応じてスタイルを選択できます。上記の画像では classified_by_population スタイルが選択されています。

11.2.1. ログ出力

サーバーを設定するときは、ログは常に何が起こっているかを示す重要なものです。 *.conf ファイルに以下のログを設定します:

  • QGISサーバーログ /logs/qgisserver.log

  • qgisplatform.demo Apacheアクセスログ qgisplatform.demo.access.log

  • qgisplatform.demo Apacheエラーログ qgisplatform.demo.error.log

ログファイルはテキストファイルなので、テキストエディタを使用してチェックできます。 sudo tail -f/logs/qgisserver.log という端末で tail コマンドを使うこともできます。

これは、そのログファイルに書き込まれたものを端末に出力し続けます。次のように、ログファイルごとに3つの端末を開くこともできます。

../../../_images/terminal_tail_log.jpg

図 11.34 tail コマンドを使ってQGISサーバーのログ出力を視覚化する

QGISデスクトップを使用してQGISサーバーのWMSサービスを使用すると、QGISがアクセスログ内のサーバーに送信するすべての要求、QGISサーバーログのQGISサーバーのエラーなどが表示されます。

注釈

  • 次のセクションのログを見ると、何が起きているのかをよりよく理解することができます。

  • QGISサーバーのログを見ながらApacheを再起動することで、動作の仕方についてのいくつかの追加情報を見つけることができます。

11.2.2. GetMapリクエスト

countries レイヤーを表示するために、他のWMSクライアントと同様、QGISデスクトップでも GetMap リクエストを使用しています。

簡単なリクエストは以下のようになります:

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?MAP=/home/qgis/projects/world.qgs
&SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&BBOX=-432786,4372992,3358959,7513746
&SRS=EPSG:3857
&WIDTH=665
&HEIGHT=551
&LAYERS=countries
&FORMAT=image/jpeg

上記の要求は次の画像を出力するはずです:

図:QGISサーバーへの簡単なGetMapリクエスト

../../../_images/getmap_simple_request.jpg

図 11.35 単純なGetMap要求の後のQgisサーバーの応答

11.2.3. moderate Try Yourself 画像とレイヤーのパラメーターを変更する

上記の要求に基づいて、 countries レイヤーを別のものに置き換えましょう。

他にどのレイヤーがあるのか​​を知るためには、QGISの world.qgs プロジェクトを開き、その内容を見てください。ただし、WMSクライアントはQGISプロジェクトへのアクセス権を持たず、機能文書の内容を参照するだけです。

また、QGISプロジェクトに存在するいくつかのレイヤーがWMSサービスを提供する際にQGISによって無視されるように構成オプションがあります。

したがって、QGISデスクトップを GetCapabilities のURLに向けるとレイヤーリストを見ることができ、 GetCapabilities XMLレスポンスで他のレイヤー名を見つけることができます。

あなたが見つけて働くことができるレイヤー名の1つは countries_shapeburst です。他を見つけるかもしれませんが、そのような小縮尺では見えないかもしれないので、空白の画像をレスポンスとして得ることがあることをご承知おきください。

返された画像タイプを image/png に変更するなど、上からの他のパラメーターを使って遊ぶこともできます。

11.2.4. moderate Follow Along: Use Filter, Opacities and Styles parameters

すべてのリクエストタイプでサポートされている追加パラメーターFILTEROPACITIES のような別のレイヤーを追加するリクエストを行いますが、標準のSTYLESパラメーターも使用します。

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?MAP=/home/qgis/projects/world.qgs
&SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&BBOX=-432786,4372992,3358959,7513746
&SRS=EPSG:3857
&WIDTH=665
&HEIGHT=551
&FORMAT=image/jpeg
&LAYERS=countries,countries_shapeburst
&STYLES=classified_by_name,blue
&OPACITIES=255,30
&FILTER=countries:"name" IN ( 'Germany' , 'Italy' )

上記の要求は次の画像を出力するはずです:

../../../_images/getmap_filter_opacities.jpg

図 11.36 FILTERパラメーターとOPACITIESパラメーターを使用したGetMap要求への応答

上の画像からわかるように、QGISサーバーには、 GermanyItaly のみを国レイヤーからレンダリングするように指示しました。

11.2.5. moderate Follow Along: レッドラインを使う

REDLINING 機能と すべてのリクエストタイプでサポートされている追加パラメーター セクションで詳しく説明されている SELECTION パラメーターを利用する別のGetMapリクエストをしましょう:

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?MAP=/home/qgis/projects/world.qgs
&SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&BBOX=-432786,4372992,3358959,7513746
&SRS=EPSG:3857
&WIDTH=665
&HEIGHT=551
&LAYERS=countries,countries_shapeburst
&FORMAT=image/jpeg
&HIGHLIGHT_GEOM=POLYGON((590000 6900000, 590000 7363000, 2500000 7363000, 2500000 6900000, 590000 6900000))
&HIGHLIGHT_SYMBOL=<StyledLayerDescriptor><UserStyle><Name>Highlight</Name><FeatureTypeStyle><Rule><Name>Symbol</Name><LineSymbolizer><Stroke><SvgParameter name="stroke">%233a093a</SvgParameter><SvgParameter name="stroke-opacity">1</SvgParameter><SvgParameter name="stroke-width">1.6</SvgParameter></Stroke></LineSymbolizer></Rule></FeatureTypeStyle></UserStyle></StyledLayerDescriptor>
&HIGHLIGHT_LABELSTRING=QGIS Tutorial
&HIGHLIGHT_LABELSIZE=30
&HIGHLIGHT_LABELCOLOR=%23000000
&HIGHLIGHT_LABELBUFFERCOLOR=%23FFFFFF
&HIGHLIGHT_LABELBUFFERSIZE=3
&SELECTION=countries:171,65

上記のリクエストをWebブラウザに貼り付けると、次の画像が出力されます。

../../../_images/getmap_redlining_selection.jpg

図 11.37 REDLINING機能とSELECTIONパラメーターによるリクエストへの応答

上記の画像から、171 IDと65 IDを持つ国が SELECTION パラメーターを使用して黄色(ルーマニアとフランス)に強調表示され、 REDLINING 機能を使用して矩形を QGISチュートリアル ラベル。

11.2.6. GetPrintリクエスト

One very nice feature of QGIS Server is that it makes use of the QGIS Desktop print layouts. You can learn about it in the GetPrint section.

If you open the world.qgs project with QGIS Desktop you will find a print layout named Population distribution. A simplified GetPrint request that exemplifies this amazing feature is:

http://qgisplatform.demo/cgi-bin/qgis_mapserv.fcgi
?map=/home/qgis/projects/world.qgs
&SERVICE=WMS
&VERSION=1.3.0&
REQUEST=GetPrint
&FORMAT=pdf
&TRANSPARENT=true
&SRS=EPSG:3857
&DPI=300
&TEMPLATE=Population distribution
&map0:extent=-432786,4372992,3358959,7513746
&LAYERS=countries
../../../_images/getprint.jpg

図 11.38 上記のGetPrintリクエストに起因するpdfを表示します。

当然、あなたの GetMapGetPrint などのリクエストを書くのは難しいです。

QGIS Webクライアント またはQWCは、QGISサーバーと連携してプロジェクトをWeb上に公開したり、QGISサーバーリクエスト作成を手助けできるWebクライアントプロジェクトです、可能性についてのより良い理解を求めて。

このようにインストールできます:

  • ユーザ qgiscd/home/qgis でホームディレクトリに行きます。

  • ここ からQWCプロジェクトをダウンロードし、解凍します。

  • /var/www/html ディレクトリへのシンボリックリンクは、バーチャルホストの設定で設定した DocumentRoot のようにしてください。アーカイブを以下のファイルで解凍した場合 /home/qgis/Downloads/QGIS-Web-Client-master を実行すると、 sudo ln -s /home/qgis/Downloads/QGIS-Web-Client-master/var/www/html/ となります。

  • ウェブブラウザから http://qgisplatform.demo/QGIS-Web-Client-master/site/qgiswebclient.html?map=/home/qgis/projects/world.qgs にアクセスしてください。

これで、次の図のように地図を表示できるはずです:

../../../_images/qwc.jpg

図 11.39 world.qgsプロジェクトを使用するQGIS Webクライアント

QWCの[印刷]ボタンをクリックすると、対話的に GetPrint 要求を作成できます。またQWCの アイコンをクリックすると、利用可能なヘルプにアクセスして、QWCの可能性をよりよく知ることができます。

11.2.7. In Conclusion

QGISサーバーを使ってWMSサービスを提供する方法を学びました。

11.2.8. What's Next?

次に、有名なGRASS GISのフロントエンドとしてQGISを使用する方法を見ていきます。