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

この演習に使用されるデータは、ダウンロードした training dataqgis-server-tutorial-data サブディレクトリにあります。 便宜上、またパーミッションの問題を回避するために、これらのファイルは /home/qgis/projects ディレクトリに保存されていると想定します。したがって、次の手順をあなたのパスに適合させてください。

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

注釈

このモジュールは、オーディエンスがパラメーターとパラメーターの値を簡単に区別できるように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.30 QGISサーバーの国レイヤーWMSサービスを消費するQGISデスクトップ

注釈

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

11.2.1. ログ出力

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

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

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

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

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

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

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

図 11.31 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.32 単純な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: フィルタ、不透明度、スタイルのパラメータを使用する

別のレイヤー、いくつかの 基本パラメーター, FILTER and OPACITIES を追加するが、標準の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.33 FILTERパラメーターとOPACITIESパラメーターを使用したGetMap要求への応答

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

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

redlining 機能と Basics セクションで詳しく説明されている 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.34 REDLINING機能とSELECTIONパラメーターによるリクエストへの応答

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

11.2.6. GetPrintリクエスト

QGISサーバーの非常に優れた機能の1つは、QGISデスクトップの印刷レイアウトを利用することです。 GetPrint セクションでそれについて学ぶことができます。

QGISデスクトップで world.qgs プロジェクトを開くと、「人口分布」という名前の印刷レイアウトが見つかります。この驚くべき機能を例示する単純化された GetPrint リクエストは次のとおりです。

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.35 上記の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.36 world.qgsプロジェクトを使用するQGIS Webクライアント

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

11.2.7. In Conclusion

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

11.2.8. What's Next?

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