11.2. Lesson: WMSサーバーを運用する
この演習に使用されるデータは、ダウンロードした training data の qgis-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レイヤーを追加すると、以下のような画像が得られます:
注釈
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つの端末を開くこともできます。
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: フィルタ、不透明度、スタイルのパラメータを使用する
別のレイヤー、いくつかの 基本パラメーター, 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' )
上記の要求は次の画像を出力するはずです:
上の画像からわかるように、QGISサーバーには、 Germany と Italy のみを国レイヤーからレンダリングするように指示しました。
11.2.5. 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ブラウザに貼り付けると、次の画像が出力されます。
上記の画像から、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
当然、あなたの 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を使用する方法を見ていきます。