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レイヤーを追加すると、以下のような画像が得られます:
注釈
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つの端末を開くこともできます。
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リクエスト
11.2.3. Try Yourself 画像とレイヤーのパラメーターを変更する
上記の要求に基づいて、 countries
レイヤーを別のものに置き換えましょう。
他にどのレイヤーがあるのかを知るためには、QGISの world.qgs
プロジェクトを開き、その内容を見てください。ただし、WMSクライアントはQGISプロジェクトへのアクセス権を持たず、機能文書の内容を参照するだけです。
また、QGISプロジェクトに存在するいくつかのレイヤーがWMSサービスを提供する際にQGISによって無視されるように構成オプションがあります。
したがって、QGISデスクトップを GetCapabilities
のURLに向けるとレイヤーリストを見ることができ、 GetCapabilities
XMLレスポンスで他のレイヤー名を見つけることができます。
あなたが見つけて働くことができるレイヤー名の1つは countries_shapeburst
です。他を見つけるかもしれませんが、そのような小縮尺では見えないかもしれないので、空白の画像をレスポンスとして得ることがあることをご承知おきください。
返された画像タイプを image/png
に変更するなど、上からの他のパラメーターを使って遊ぶこともできます。
11.2.4. Follow Along: Use Filter, Opacities and Styles parameters
すべてのリクエストタイプでサポートされている追加パラメーター 、FILTER 、 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' )
上記の要求は次の画像を出力するはずです:
上の画像からわかるように、QGISサーバーには、 Germany と Italy のみを国レイヤーからレンダリングするように指示しました。
11.2.5. 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ブラウザに貼り付けると、次の画像が出力されます。
上記の画像から、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
当然、あなたの GetMap
、 GetPrint
などのリクエストを書くのは難しいです。
QGIS Webクライアント またはQWCは、QGISサーバーと連携してプロジェクトをWeb上に公開したり、QGISサーバーリクエスト作成を手助けできるWebクライアントプロジェクトです、可能性についてのより良い理解を求めて。
このようにインストールできます:
ユーザ
qgis
がcd/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 にアクセスしてください。
これで、次の図のように地図を表示できるはずです:
QWCの[印刷]ボタンをクリックすると、対話的に GetPrint
要求を作成できます。またQWCの ?
アイコンをクリックすると、利用可能なヘルプにアクセスして、QWCの可能性をよりよく知ることができます。
11.2.7. In Conclusion
QGISサーバーを使ってWMSサービスを提供する方法を学びました。
11.2.8. What's Next?
次に、有名なGRASS GISのフロントエンドとしてQGISを使用する方法を見ていきます。